简介:
这本书从最基础的编码、电路、组合学来展开计算机的发展史,各内容之间的连接非常自然,只需有高中基础就可以理解书中内容。另外如果你对「为什么计算机采用二进制编码?」「内存和存储器之间的区别?」「为什么访问寄存器比访问内存快?」这些问题存在疑问,或许这本书会帮到你理解其本质。
这篇文章尝试以 QA 的方式进行总结,这些问题都是在读书时产生的一些疑问,以下是尝试进行的回答,不正确之处欢迎指出更正。
QA:
1. 为什么计算机采取二进制?
人有十根手指,可以方便表示十种状态,所以人类可以方便进行十进制的交流。而电路只有「断开/闭合」两种状态,所以等于计算机二进制会更方便交流。不管是十进制还是二进制,通过组合都可以表现出更多的状态,即任何信息。
2. 电路对计算机的影响?
主要是因为电路实现了计算机最重要的三个方面:信息、运算和存储。
1)通过电路的断开/闭合表示二进制的 0/1 使信息的传递成为可能。
2)电路「与门」「或门」「异与门」「异或门」相互组合,可以实现二进制低位相加和进位相加的所有可能性(即二进制的加法表),使加法器的构造成为可能。
3)触发器电路的 feedback(反馈)使电路可以记住之前的状态,在此基础上实现的锁存器实现数据在电路中的存储。
所以计算机是一个综合性的学科,涉及到编码学/电路/组合学等知识。
3. 内存/寄存器/磁盘的区别?
1)内存即 RAM(随记存储器)通常包括「地址/数据输入/数据输出/写操作端」部分,处理器如果需要访问数据需要先知道内存地址,经过地址解析返回对应的数据值。另外因为锁存器需要有电流才能工作,所以断电后数据就会丢失。
只要能存储信息的设备都被称为存储器,包括:内存,寄存器,磁盘等。
2)寄存器和累加器很相似,也是一种锁存器,可直接存储数据,直接被访问,不需要进行地址解析,而处理器访问寄存器的路径也比主存的路径更短。(具体可以参考微处理器的实现)
3)磁盘通过磁介质材料可以将信息永久性的被记录下来。
4. 控制面板的作用?
假如 RAM 存在 8 位的「数据输入和数据输出」,为了更方便对存储器进行操作,需要通过控制面板控制写操作端,8 个开关来表示数据的输入,同时需要 8 个灯泡来表示数据的输出。而这些控制都是通过控制面板完成,使电路更有序。
5. 计算机系统各个部件之间如何传递消息?
各电路板通过总线(bus)来通信,总线种类分为:
地址总线:CPU 用来指定在 RAM 的数据地址。
数据总线:在 CPU 和 RAM 之前传输需要被处理和被存储的数据。
控制总线:用来传输一些控制信号。控制信号中有些是 CPU 传输给存储器或 IO 接口的,比如:读写信号、中断响应信号。有些是其他设备反馈给 CPU 的,比如:中断申请信号、设备就绪信号等。
其他..
6. Jump 指令的意义?
通过 Jump If Zero(零转移)/Jump If Not Zero(非零转移)等 Jump 指令实现指令循环。
而乘法就是循环了多次的加法运算,因此 a · b 的乘法运算可以简化为:计算机首先执行加法操作 A + a(A 表示累加器),完成后跳转到加法操作的最初指令处再次执行,直到循环了 b 次,得出结果。
能否控制重复操作或者循环是计算机(Computer)与计算器(Calculator)的区别。循环使更复杂的运算和程序执行成为可能。
7. 4 位/8 位/16 位微处理器的区别?
不同位数的处理器主要区别在于锁存器和加法器的存储和计算能力。即 4 位处理器需要锁存器支持 4 位 Bit 数据的存储,加法器支持 4 位 Bit 数据的运算。8 位处理器需要锁存器支持 8 位 Bit 数据的存储,加法器支持 8 位 Bit 数据的运算。
8. 程序中的堆栈存在的意义?
没有堆栈之前,指令按顺序存储到对应的地址中,然后计算机取出指令执行。而如果有些指令的优先级比较低希望等后面几个指令执行完自己再执行,那么就需要有一个地方来存储这些指令。堆栈具有「先进后出/后进先出」的特性,下面存储优先级低的指令,上面存储优先级高的指令,需要执行时不断从上面取出指令执行即可。
堆栈支持 Call/Return,可以在程序中使用子程序。当调用 Call 时,程序计数器会加载一个新地址,处理器会把原来的地址保存在堆栈中。子程序执行完之后,Return 指令从堆栈中取出数据(原来的地址)并加载到 PC 中,继续执行原来的程序。
9. 为什么会有摩尔定律,是什么使摩尔定律成为可能?
计算机唯一的信息就是 0/1,最初通过继电器开关「断开/闭合」来表示 0/1 两种状态,因为继电器是机械性的,所以频繁工作会导致其断裂。
随后通过真空管 放大电信号 的特性来实现同样的功能,但真空管存在体积大、耗电量大的问题。
晶体管通过采用半导体(硅片)的导电性强弱的特性,同样可以实现放大电信号的功能。因为晶体管采用固态的半导体材料,使计算机更加可靠,体积更小,耗电量也更小。
同一块芯片上可以集成的晶体管数目每年翻一番,使摩尔定律成为可能。
总结:
计算机是一个综合学科,通过电路组合实现简单的加法器,通过循环使计算机可以处理复杂运算成为可能。
然后通过把数据记录在磁盘,DMA 技术直接传输数据至内存,处理器通过总线从内存中直接取出数据,完成读操作(写操作类似),处理器开始进行计算,完成程序指令。
这就是计算机的基本原理!