任学堂说科技:穿越计算机迷雾,从零开始构建计算机

article/2025/9/25 6:22:47

穿越计算机迷雾,从零开始构建计算机


像Hellow World这样的小程序表面上看起来非常简单。你可曾想过如何才能在计算机中运行这个程序呢?让我们来提示其中的原委。对于初学者而言,程序只是一堆存储在文本文件中的字符而已。因此我们必须要做的第一件事情就是对该文本进行语法分析,提示其语义,然后用某种计算机能理解的低级语言来重新表达程序。这个翻译过程(即编译,compilation)产生的结果就是生成另外一个包含机器代码的文本文件。

当然,机器语言也是一种抽象,是一级计算机能理解的二进制代码。为了将该抽象形式具体化,就必须由某种硬件体系(hardware architecture)来实现的。这个硬件设备都是由许多基本逻辑门(Logic gates)集成构建出来的。当然,每个原始门又是由若干个转换设备(switching devices)组成,这些设备一般用晶体管实现。

计算系统设计中蕴含的多层抽象结构可能用自顶向下的形式来描述,以此来展示高级抽象如何被简化或表示成较简单抽象。同样的结构也可以用自下而上的形式来描述,以此展示底层抽象如何构建更复杂的抽象。本文采用后一种方式进行阐述:从最基本的元素(原始逻辑门)开始,然后一直向上层进发,直到最后构建完整的计算机系统。

穿越计算机迷雾,从零开始构建计算机

1 布尔代数

布尔代数处理布尔型(也称为二进制型)数值,只需要处理两个符号:1 or 0,true or false,yes or no。因为计算机硬件基于二进制数据的表示和处理——所以布尔函数在硬件体系结构的描述、构建和优化过程中扮演着十分重要的角色。

描述布尔函数最简单的方法就是枚举出函数所有可能的输入变量组合,然后写出每一种组合所对应的函数输出值。这就是真值表表示法。

2 门逻辑Gate Logic

门(gate)是用来实现布尔函数的物理设备。如果布尔函数f有n个输入变量,返回m个二进制的结果,那么用来实现这个函数f的门将会有n个输入管脚(input pins)和m个输出管脚(output pins)。当我们把一些值v1…vn从这些门的输入管脚输入,它的内部结构即门的逻辑会计算然后输出f(v1…vn)的值。正如复杂的布尔函数能够通过相对简单的函数来表达一样,复杂的门电路也是由很多基本的门组成的。最简单的门是由微小的开关设备(称为晶体管,transistors)构成,这些微小开关设备按照设计的拓扑结构进行连接,来实现整个门的功能。

虽然当今的计算机多数使用电学来表述二进制数据从一个门到另一个门的传递,但实际上任何具有转换(switching)和传导(conducting)能力的技术都是可用的。事实上,在过去的50年里,研究人员已经建立了很多布尔函数的硬件实现方法,包括磁、光、生物、水力和风力设备。今天,大多数门都采用晶体管来实现,这些晶体管在硅上蚀刻并封闭成芯片。

硬件设计人员从这些基本的门开始,将它们进行连接,来实现功能更复杂的复合(composite)门电路。

穿越计算机迷雾,从零开始构建计算机

2.1 半加器(Half-adder):用来表示两位加法。

穿越计算机迷雾,从零开始构建计算机

2.2 全加器(Full-adder):用来表示三位加法。

穿越计算机迷雾,从零开始构建计算机

2.3 加法器(Adder):用来进行两个n位加法。

3 冯·诺依曼结构的存储程序概念

冯·诺依曼结构的存储程序概念的基本思想其实相当简单。计算机基于固定的硬件平台,能够执行固定的指令集。同时,这些指令能够被当成构件模块,组成任意的程序。而且,不同于1930年以前的机械计算机,这些程序的逻辑并没有被嵌入到硬件中,而是被存储到计算机的存储设备(memory)里,跟数据一样,成为所谓的“软件(software)”。因为计算机的操作是通过当前正在执行的软件来向用户展示其功能,所以每次向计算机中载入不同的程序时,同样的硬件平台可以实现完全不同的功能。

穿越计算机迷雾,从零开始构建计算机

冯·诺依曼机的内存中存有两种类型的信息:数据项(data items)和程序指令(programming instructions)。对这两种信息通常采用不同的方式来处理,在某些计算机里,被分别存储到不同的内存区中。尽管它们具有不同功能,但两种信息都以二进制数形式存储在具有通用结构的随机存储器中(一个连续的固定宽度的单元阵列,也称为字即word,或者存储单元,每个单元都有一个独立的地址)表示。因此,一个独立的字(代表一个数据项或者一条指令)通过它的地址来指定。

4 机器语言

机器语言是计算机体系中意义最深奥的接口-它也是硬件和软件相接的中间线。借由机器语言,程序员用符号指令表达的抽象思维被转换成执行在硅片上的物理操作。因此,既可以将机器语言看作编程工具,也可能将其看作硬件平台内部不可分割的一部分。事实上,正如我们设计机器语言是为了使用给定的硬件平台一样,我们设计硬件平台是为了获取、解析并执行用给定机器语言编写而成的指令。

控制流程:程序通常以线性方式,一个命令接着一个命令执行,但偶尔也包含分支,执行其他地方的命令。分支能够实现好几种结构,包括反复(repetition,跳回到循环的初始位置)。有条件的执行(conditional execution,如果布尔条件是false,则向前跳到“if-then”语句之后的位置),以及子程序调用(subroutine calling,跳到另一代码段的第一条命令处)。为了支持这些程序结构,各种机器语言都可以有条件(conditional)或无条件(unconditional)地跳转到程序指定的地址。在汇编语言中,程序中的位置也用一些符号表示。

机器语言一般用二进制来表示,如二进制码(11000010100000011000000000000111)代表一条实际的机器指令,它能被底层硬件所理解。指令最左边的8位代表操作码(比如Load),接着的8位代表寄存器(比如R3),剩下的16位表示地址(比如7)。根据硬件的逻辑设计和相应的机器语言,整个32位指令可以让硬件去执行操作“将Memory[7]的内容加载到寄存器R3中。”现代计算机平台支持数十个这样的基本操作。如此一来,机器语言会变得相当复杂,因为其涉及到很多操作码、不同的内存寻址模式和不同的指令格式。

5 汇编和编译

解决复杂性的方法之一是,使用约定的语法来表示机器指令,如用Load R3,7而不是11000010100000011000000000000111表示机器语言。由于将符号表示翻译成二进制码是直截了当的,所以允许用符号表示法来编写底层代码,并用计算机程序将底层程序翻译成二进制码是很有意义的。符号化的语言称为汇编(assembly),翻译程序称为汇编编译器(assembler)。汇编编译器对每个汇编命令的所有部分进行解析,将每个部分翻译成它对应的二进制码,并将生成的二进制码汇编成真正能被硬件执行的二进制指令。

一个编译器一般由词法分析器和代码生成器组成。

6 操作系统

操作系统的作用是用来衔接硬件系统和软件系统,以使得整个计算机对程序员和用户而言更容易使用。如为了使得文本“Hello World!”在计算机屏幕上显示,必须在特定的屏幕位置上画几百个像素。就可以通过参考硬件规范,编写相关的代码来完成,该代码在驻留RAM的屏幕映像中放置必要的比特位。显然,高级程序员希望事情能够变得更好些。他们希望使用诸如printString(“Hello World!”)的命令,然后让别人来负责其中的实现细节,操作系统在其中就起到了很重要的作用。


http://chatgpt.dhexx.cn/article/PesrgjUX.shtml

相关文章

【连载】穿越计算机的迷雾——读书笔记

穿越计算机的迷雾 中国设计的第一台计算机:119机; 每秒钟运算5万次,是用“电子管”做的,被称为“第一代计算机”,是最早的技术。后来发展出的第二代计算机,是用晶体管做的,然后发展到第三代计算…

《穿越计算机的迷雾》

目录 写在前面第三章、怎样才能用机器做加法第四章、电子计算机发明的前夜第五章、从逻辑学到逻辑电路六、加法机的诞生七、会变魔术的触发器八、学生时代的走马灯九、计算机时代的开路先锋十、用机器做一连串的加法十一、 注:本文用来记录穿越过程中新搞懂的知识。…

穿越计算机迷雾

首先,这是一本书,大概20-30块钱,还算便宜,口碑也不错 其实我也不喜欢就是看书,看书完全是因为有些知识确实看不懂了,难以理解,我看这本书的时候,就是因为看不懂 java的一个框架的运…

白话计算机入门书籍--《穿越计算机的迷雾》有感

一本好书,是能够促使你不断地思考书中的话语,并且和自己学过的知识作对比,李忠的《穿越计算机的迷雾》成功地做到了这两点。这本计算机入门级书籍,深入浅出的讲解了二进制、继电器、与或非门还有触发器等计算机方面的基本概念&…

穿越计算机的迷雾--读书笔记四

第八章:学生时代的走马灯(如何同时触发一整个电路) 1. 能保存一个比特的触发器: 解决触发器如何保存数据问题:运用D触发器 (图片摘自于本书中) (图片摘自于本书中) 2. …

GTP与MBR硬盘分区区别(UEFI介绍)

在重装win7或win8系统时,经常会提示磁盘具有MBR分区表和GPT分区表,从而无法安装Windows,那么磁盘MBR分区表和GPT分区表是什么意思呢?MBR和GPT分区表有什么不同?下面跟小编一起来学习下吧! 一、MBR分区表 …

MBR分区和GPT、NTFS和FAT32、UEFI引导

date: 2019/1/11 14:24:56 最近重装系统的时候遇到了问题,也让我产生了一些疑惑 如图使用Rufus工具进行系统安装,产生的问题 1、标准windows安装和Windows To Go? Windows To GO可以理解为存放在移动盘中的windows系统,可以让w…

磁盘分区MBR和GPT格式详解(Linux)

一、磁盘结构 机械硬盘主要由磁盘盘片、磁头、主轴与传动轴等组成,数据存放在具有磁性物质的磁盘盘片中。 实际运行时,主轴马达让碟片转动,然后磁头臂让磁头在碟片上面进行读写操作。 读取数据时以磁头转圈的方式进行,在磁片同心…

硬盘MBR格式转换GPT,简单方法,你会吗?

今天和大家分享一个如何无损将MBR分区表转换为GPT分区表,免去重装系统的繁琐过程的好方法。 现在我们的硬盘越来越大,相信大家也知道MBR格式不支持大于2T的硬盘。所以这里教大家如何进行转换! 首先介绍下什么是MBR和GPT MBR:MB…

UEFI与BIOS、GPT与MBR的区别

版权声明:未经作者允许,严禁用于商业出版,否则追究法律责任。网络转载请注明出处,这是对原创者的起码的尊重!!! 1 磁盘分区格式 一般来说,磁盘分区表有两种格式:MBR和GPT…

磁盘分区形式MBR与GPT介绍

磁盘分区形式MBR与GPT介绍 磁盘分区形式有两种: 1、MBR(主启动记录)形式,它是存在于磁盘驱动器开始部分的一个特殊的启动扇区; 2、GPT(GUID分区表)形式,它是一种使用UEFI启动的磁盘…

Legacy和UEFI,MBR和GPT的区别

Legacy和UEFI指的是系统引导方式(Legacy为传统BIOS,UEFI为新式BIOS),MBR和GPT指的是磁盘分区表类型。 一般情况下都是LegacyMBR, UEFIGPT这两种组合。但LegacyGPT,UEFIMBR也可以实现。 Legacy用的是8086汇编,UEFI 99…

BIOS修改mbr为gpt的步骤

之前传统的硬盘分区模式都是mbr,但是现在的win10系统硬件不断扩容,传统分区模式已经不能满足了,所以我们就可以将硬盘mbr改成gpt,那么要如何操作呢?其实方法也不难,针对这个问题,下文小编给大家…

MBR和GPT分区区别

MBR分区和GPT分区区别 总结:UEFI是新式的BIOS,legacy是传统BIOS。你在UEFI模式下安装的系统,只能用UEFI模式引导;同理,如果你是在Legacy模式下安装的系统,也只能在legacy模式下进系统。UEFI只支持64为系统…

详解MBR与GPT分区

1 MBR分区 MBR是Master Boot Record的缩写,是一种旧的分区表格式,用于在硬盘上标识和管理分区。MBR分区表可以标识最多4个主分区或3个主分区和1个扩展分区。 2TB的限制是指,使用MBR分区表格式的硬盘最大只能分区到2TB,因为MBR使…

不支持打开非业务域名htts:....请重新配置

最近做小程序加载html 出现的提示 自己的处理方法是点击右上角的详情 勾选即可

fiddler 抓取 htts 失败

1.清除C:\Users\Administrator\AppData\Roaming\Microsoft\Crypto\RSA 目录下所有文件(首次安装fiddler请忽略) 2.清除电脑上的根证书,WINR快捷键,输入:certmgr.msc, 然后回车,查找所有fiddler证…

Spring cloud Gateway HTTS配置

在Web服务应用中,为了数据的传输安全,使用安全证书,使用TLS/SSL加密。这里就介绍一下Spring Cloud Gateway的HTTPS配置。 7.1 TLS/ SSL配置 TLS:安全传输层协议(TLS)用于在两个通信应用程序之间提供保密性…

漫画:htts是如何保证一台主机把数据安全发给另一台主机

通过漫画的形式由浅入深带你读懂htts是如何保证一台主机把数据安全发给另一台主机的 对称加密 一禅:在每次发送真实数据之前,服务器先生成一把密钥,然后先把密钥传输给客户端。之后服务器给客户端发送真实数据的时候,会用这把密钥…

给网站配置免费的HTTS证书

最近看到网上说 https 的网站 Google 会优先收录,所以就抽时间记录下配置博客的过程。 ACME 使用 LetEncrypt 证书作为博客的 https 实现方式。 acme.sh 实现了 acme 协议, 可以从 letsencrypt 生成免费的证书. github https://github.com/Neilpang/acme.sh 主要步骤…