跳转至

Lecture 1. CPU

数字电子计算机 DEC(Digital Electronic Computer)是目前最流行的计算机。

信号分为 模拟信号(analogue signal)数字信号(digital signal)

  • 模拟信号是连续的,可以具有范围内的所有值。输入信号经过可以执行放大、乘法、微分、积分的电子设备处理,产生输出信号。
  • 数字信号是离散的,可以具有范围内两个值之一。

哈佛结构与冯诺依曼结构

英文名:Harvard、Von Neumann

哈佛结构

哈佛结构是一种将程序指令存储和数据存储分开的存储器结构。

冯诺依曼结构

冯诺依曼结构的处理器使用 同一个存储器,经由同一个总线传输

冯诺依曼结构的计算机,具有一个存储器、一个控制器、一个运算器(完成运算)、输入和输出设备。其中运算器和控制器合起来就是 CPU。

8086 的硬件结构基础

CPU 包含两个主要功能块,分别是 BIU 和 EU。

BIU 是 Bus Interface Unit,即总线接口单元。BIU 可以发送地址,从内存中获取(fetch)指令,并对端口和内存进行读写。

EU 是 Execution Unit,即执行单元,包含了 ALU 和控制电路。EU 会告诉 BIU 从哪里获取(fetch)指令,然后 EU 将指令解码(decode)并执行(execute)。指令周期(instruction cycle) 就是 fetch-decode-execute 的过程。通常一个指令大概占用 4 个指令周期,所以一个 1GHz 的处理器,一秒内大约可以执行 2.5 亿行汇编代码。

而微处理器当中,还包含了 A-bus、B-bus、C-bus 这些高速数据路径(high speed data path)。

EU 中的控制电路 Control Circuit

BIU 将指令存储在指令队列当中(每条指令不超过 6 字节),然后 EU 准备好执行下一条指令的时候,就去队列里面获取一个指令。这避免了对主存储器的高频访问,从而提升了执行速度。

EU 执行当前指令的同时,BIU 可以获取下一条指令,这两件事情是同步的,这就是 流水线(pipeline) 技术的原始形式。

但不是所有的指令都适用于流水线,比如条件语句、调用语句等。

EU 中的 ALU

8086 的 ALU 可以执行加减法、按位与、按位或、异或、位取反、移位运算。

按位与、按位或、异或、位取反,这四个运算产生的影响仅是运算数的这几位;而加减法、位移运算,可能会对运算数以外的位产生影响。

多路复用器 Multiplexer(MUX)

如图是一个简单的 2 输入的 MUX。$C$ 是控制线。当 $C$ 的值取 0 和 1 时,$D$ 的值分别是 $A_1$ 和 $A_0$。

加法器

半加器用 AND 门和 XOR 门构成。

两个半加器再配合一个 OR 门可以实现一个全加器。

将全加器简单串联,可以实现一个四位加法器。再结合补码的应用,可以让加法器实现减法功能。

移位运算

我没太看懂原理

D 触发器

当时钟信号激活,D 触发器的输出就是输入;否则输出就保持着之前的输入

边缘触发的触发器

就是只有 CLK 信号从 0 转变成 1 的时候,才会更新输出的值。

结构长这样(那个电容还有并联的东西看起来很神奇):

寄存器

CPU 里面包含许多由 D 触发器构成的存储位置,通常每个位置包含 8 位或者 16 位。这个东西称为寄存器。

大多数的微处理器都具有一个特殊的寄存器,叫做 累加器 accumulator,用来存储 ALU 的运算结果。运算结果也可以存储到栈、其他寄存器甚至是内存。

利用累加器作为 ALU 的输入,可以实现一个简单的计算器。