1.7 CPU 中央处理器(The Central Processing Unit)
1.7.1 组成概述
CPU
CPU (Central Processing Unit,中央处理单元)是负责通过「指令」指示程序如何操作的器件,其通常由寄存器、控制单元、ALU、时钟等组成。
比如,若要执行加/减的数学指令,则交由 ALU 完成;若是内存指令,则与 RAM 通信配合进行读写操作(APU 与 RAM 用“地址线”、“数据线”和“允许读/写线”进行通信)。
微体系框架
使用高层次的视角观察计算机的方式称为「微体系架构」(microarchitecture),其更注重于逻辑上的「功能」。比如当我们用一条线连接 2 个组件时,这条线只是所有必须线路的抽象,并不代表两者连接仅仅通过一条线。
指令
指令由「操作码」(operation code, opcode)和「地址码」组成,前者用于说明操作指令的 ID,后者则表示数据来自哪里(寄存器或内存地址)。指令用于指示计算机要做什么,多条指令共同组成程序。
寄存器
CPU 的控制单元中至少有 两个寄存器,一个「指令地址寄存器」(the instruction address register)用于存放当前指令的内存地址,另一个是「指令寄存器」(the instruction register)用于存储当前指令。
另外还有一些寄存器用于临时存储数据和操作数据(如图中的 ABCD,其与 RAM 相连),寄存器也用于存储程序。
时钟
时钟(Clock)负责管理 CPU 运行的节奏,以精确地间隔触发电信号,控制单元用这个信号来推动 CPU 的内部操作。
时钟速度(Clock Speed)是指 CPU 执行“取指令 -> 解码 -> 执行”中每一步的速度,单位为赫兹 Hz (频率单位,1Hz 表示 1 秒 1 个周期)。1MHz 为 1 秒 100w 个时钟周期,如今的电脑或是手机的时钟速度在千兆级别(1 秒 10 亿次时钟周期)。
超频(overclocking)/ 降频(underclocking)是指修改时钟速度,加快或降低 CPU 的速度。超频过多会让 CPU 过热或产生乱码,降频可以省电,对笔记本和手机很重要,通常会动态调整。
1971 年发布的 4 位 CPU Intel 4004 是第一个单芯片 CPU,其微体系架构(microarchitecture)类似与上述所言,其时钟频率达到 740k Hz(每秒 74 万次)。
1.7.2 CPU 基本工作原理
CPU 的运作分为三个阶段:取指令(fetch phase)、解码(decode phase)、执行(execute phase)。
取指令
(1)指令地址寄存器发地址给 RAM
(2)RAM 发该地址内的数据给指令寄存器
(3)指令寄存器接受数据
解码
指令寄存器根据数据发送指令给控制单元 -> 控制单元解码(使用逻辑门来确认操作码是否为某个指令,示例为 0010-LOAD A、地址 1110-14)
执行
📌e.g. LOAD A(取数):
(1)使用确认指令(LOAD A)的电路打开寄存器 A 的允许写入线,将从 RAM 读取到的数据存入 A。
(2)指令地址寄存器 +1,继续执行下一指令。
📌e.g. ADD(加法)
操作码 1000 0100 在解码阶段会被解出,1000 指 ADD 相加,则相应的后 4 位会被解释为名为 01 和 00 的两个寄存器地址,分别为寄存器 B 和寄存器 A -> 把寄存器 B 的值加入寄存器 A 中。
(1)调用 ALU,控制单元将寄存器 B 作为 ALU 的第一个输入,将寄存器 A 作为 ALU 的第二个输入,同时传入 ADD 操作码进入 ALU。
(2)ALU 计算完成后将结果暂存于控制单元中的寄存器中,若 ALU 直接将结果存于寄存器 A 中,则会出现不断自加的情况。
(3)控制单元关闭 ALU 后, 将暂存在内部寄存器中的计算结果放入寄存器 A 中。
(4)指令地址寄存器 +1。
📌e.g. STORE(存数)
操作码 0100 1101 在解码阶段会被解出,0100 为 STORE A,1101 是 RAM 地址 13。
(1)打开寄存器 A 的允许读取线,将读取到的数据存入 RAM 。
(2)程序结束,HALT 停止。