Skip to main content

16 建立数据通路

指令周期(Instruction Cycle)

  1. Fetch(取得指令)

从 PC 寄存器找到指令的地址,根据地址从内存把具体的指令加载到指令寄存器,PC 寄存器自增

  1. Decode(指令译码)

根据指令寄存器里的指令,解析要进行什么操作(R、I、J 中的哪种指令,具体要操作哪些寄存器、数据或者内存地址)

  1. Execute(执行指令)

实际运行对应的 R、I、J 指令,进行算术逻辑操作、数据传输或地址跳转

指令周期(Instruction Cycle):Fetch - Decode - Execute 的循环

CPU 周期:从内存里面读取一条指令的最短时间

时钟周期:

建立数据通路

操作元件 ALU:在特定的输入下,根据组合电路的逻辑,生成特定的输出

存储元件:寄存器,包含通用寄存器和状态寄存器

建立数据通路:通过数据总线连接起来,完成数据的存储、处理和传输

指令译码器将输入的机器码,解析成不同的操作码和操作数,然后传输给 ALU 进行计算

CPU 的硬件电路

ALU

没有状态的,根据输入计算输出结果的电路

寄存器

能够进行状态读写的电路

  • 锁存器(Latch)
  • D 触发器(Data/Delay Flip-flop)

计数器

自动计数的电路

译码器

找到对应数据的电路

  • 对指令进行 decode
  • 通过内存地址获取对应的数据或指令

时序逻辑电路

自动运行

时序电路接通之后可以不停地开启和关闭开关,进入一个自动运行的状态

存储

通过时序电路实现的触发器,能把计算结果存储在特定的电路里面

时序协调

各种指令的操作有先后顺序,不同的事件按照时间顺序发生

时钟信号的硬件实现

开关 A 闭合,开关 B不停地在开和关之间切换,生成对应的时钟信号

时钟信号(Clock Signal):按照固定的周期不断在 0 和 1 之间切换的信号

通过 D 触发器实现存储功能

当两个开关都断开的时候,最终的输出结果,取决于之前动作的输出结果

通过一个时钟信号,可以在特定时间对输出的 Q 进行写入操作

把 R 和 S 两个信号通过一个反相器合并,可以通过一个数据信号 D 进行 Q 的写入操作

一个 D 型触发器,只能控制 1 个比特的读写。多个 D 型触发器并列在一起,用同一个 CLK 信号控制所有 D 型触发器的开关,就成了一个 N 位的 D 型触发器,可以同时控制 N 位的读写。

可以在 D 型触发器上加上更多的开关,实现清 0 或全部置为 1 的操作。

PC 寄存器的计数器

时钟信号提供定时输入,D 型触发器可以在时钟信号控制的时间点写入数据

单指令周期处理器:在一个时钟周期里,确保执行完一条耗时最长的 CPU 指令

读写数据的译码器

2-1 选择器

2-1 选择器:一个反向器只能有 0 和 1 这样两个状态,只能从两个地址中选择一个

3-8 译码器:输入的信号有三个不同的开关,能从 23 = 8 个地址中选择一个

CPU 是 64 位,寻址空间是 264,需要 64 个开关的译码器

建立数据通路构造 CPU

  1. 自动计数器随着时钟主频不断自增。
  2. 译码器连着大量 D 触发器组成的内存。
  3. 找到对应的计数器所表示的内存地址,读取 CPU 指令。
  4. 通过 CPU 时钟控制,写入到指令寄存器。
  5. 译码器把拿到的指令,解析成 opcode 和对应的操作数。
  6. opcode 和操作数,对应的输出线路连接 ALU,开始进行各种算术和逻辑运算。
  7. 计算结果写回到寄存器或内存中。