1

1、cpu介绍

计算机的心脏"中央处理单元",简称 "CPU"。
CPU 负责执行程序,程序由一个个操作(又叫指令,指示"计算机要做什么)组成。
如果是数学指令,比如加/减,CPU 会让 ALU 进行数学运算,也可能是内存指令,CPU 会和内存通信,然后读/写值。

2、制作cpu

2.1 组件

  • 1个RAM :假设它只有 16 个位置,每个位置存 8 位。
  • 四个8位寄存器:A,B,C,D。用来 临时存数据 和 操作数据。
  • 一张指令表:程序也可以以二进制存在内存里的,所以可给 CPU 支持的所有指令,分配一个 ID。
  • 一个"指令地址寄存器",踪程序运行到哪里了。(存当前指令的内存地址)
  • 一个指令寄存器,存当前指令。
  • 控制单元:用于解码
  • 时钟:用于管理 CPU 的节奏。

2.2 解析CPU执行程序的过程
以下为需要执行的四条指令
clipboard.png

2.2.1 执行第一条指令 LOAD_A
(1)当启动计算机时,所有寄存器从 0 开始。

clipboard.png

(2)进入第一阶段"取指令阶段"(fetch phase),负责拿到指令。
首先,将 "指令地址寄存器" 连到 RAM,寄存器的值为 0,因此 RAM 返回地址 0 的值。
clipboard.png

然后,0010 1110 会复制到 "指令寄存器" 里。
clipboard.png

(3) "解码阶段"
指令拿到了,要弄清是什么指令,才能执行,即 "解码阶段"。

8位的指令:用前四位存 "操作代码",简称 "操作码" (opcode)对应指令表中的指令。后四位代表数据来自哪里,可以是寄存器或内存地址。
  • 根据指令表,前 4 位 0010 是 LOAD_A 指令,意思是,把 RAM 的值放入寄存器 A。后 4 位 1110 是 RAM的地址, 转成十进制是 14。
  • 指令由 "控制单元" 进行解码。 "控制单元" 也是逻辑门组成的。

clipboard.png

(4) "执行阶段"
知道了是什么指令,开始 "执行阶段"。
步1:取值。用 "控制单元"打开 RAM 的 "允许读取线", 把地址 14 传过去,从RAM的地址14中拿到值0000 0011,十进制的 3。

clipboard.png

步二:存值。根据 LOAD_A 指令的要求 , 要把取到的值只放到寄存器 A,其他寄存器不受影响,所以使用一根线,把 RAM 连到 4 个寄存器。
步三:用 "控制单元" 启用寄存器 A 的 "允许写入线"。
步四:

clipboard.png
成功把 RAM 地址 14 的值,放到了寄存器 A。

步五:LOAD_A 指令完成,"执行阶段"就此结束。把 "指令地址寄存器"+1,去拿下一条指令并解码执行。
clipboard.png

总结:控制单元的抽象
LOAD_A 只是 CPU 可以执行的各种指令之一,不同指令由不同逻辑电路(控制单元)解码。
可以将"控制单元 "包成一个整体。
控制单元就像管弦乐队的指挥,"指挥" CPU 的所有组件"取指令→解码→执行" 。会配置 CPU 内的组件来执行对应操作。

clipboard.png

2.2.2 执行 ADD指令 "1000 0100"

(1) 指令解析:
1000 是 ADD 指令,后面的 4 位不是 RAM 地址,而是代表 2 个寄存器,第一个地址是 01, 代表寄存器B,第二个地址是 00, 代表寄存器A。
因此,1000 0100,代表把寄存器 B 的值,加到寄存器 A 里。

(2) "控制单元"的作用

  • 启用寄存器B作为作为 ALU 的第一个输入。启用寄存器 A,作为 ALU 的第二个输入。
  • 传递 ADD 操作码告诉ALU 可以执行ADD操作 (因为ALU可以执行多种操作)
  • 控制单元用一个自己的寄存器暂时保存结果(因为结果应该存到寄存器 A,但不能直接写入寄存器 A,这样新值会进入 ALU ,不断和自己相加)。关闭 ALU之后,再把值写入寄存器A。

(3) 把指令地址 + 1,执行下一条指令。

clipboard.png

clipboard.png

2.2.3 执行STORE A 指令 " 0100 1101"
(1) 解码
查看指令表,STORE A 指令是把寄存器 A 的值放入RAM,RAM 地址为13.

(2) 执行

  • 把地址13传给 RAM,
  • 打开RAM的"允许写入",同时打开寄存器 A 的 "允许读取",把寄存器 A 里的值,传给 RAM。

clipboard.png

2.2.4时钟
在执行以上四条指令的时候,我们人工切换 CPU 的状态 "取指令→解码→执行",但实际上电脑用 "时钟" 来负责管理 CPU 的节奏。

(1) 时钟的作用
时钟以精确的间隔触发电信号,控制单元会用这个信号,推进 CPU 的内部操作,确保一切按步骤进行。

(2) "时钟速度"
"时钟速度"指 CPU "取指令→解码→执行" 的速度 。单位是赫兹 ,
1hz/s代表一秒 1 个周期,

3、CPU

(1) CPU抽象
RAM是在 CPU 外面的独立组件,CPU 和 RAM 之间 用 "地址线" "数据线" 和 "允许读/写线" 进行通信。

(2) "英特尔 4004"
第一个单芯片 CPU 是 "英特尔 4004" ,1971 年发布的 4 位CPU,它的微架构 很像我们之前说的 CPU,它的时钟速度达到了 740 千赫兹 - 每秒 74 万次。
现在看视频的电脑或手机,可能有几千兆赫兹, 1 秒 10 亿次时钟周期。

(3) 优化

  • 超频:计算机超频,意思是修改时钟速度,加快 CPU 的速度。芯片制造商经常给 CPU 留一点余地,可以接受一点超频。但超频太多会让 CPU
    过热,或产生乱码,因为信号跟不上时钟。
  • 降频:有时没必要让处理器全速运行,可能用户走开了,或者在跑一个性能要求较低的程序,把 CPU 的速度降下来,可以省很多电。
  • 动态调整频率:很多现代处理器可以按需求 加快或减慢时钟速度。

二丽
280 声望8 粉丝