计算机的心脏"中央处理单元",简称 "CPU"。
CPU 负责执行程序,程序由一个个操做(又叫指令,指示"计算机要作什么)组成。
若是是数学指令,好比加/减,CPU 会让 ALU 进行数学运算,也多是内存指令,CPU 会和内存通讯,而后读/写值。架构
2.1 组件性能
2.2 解析CPU执行程序的过程
如下为须要执行的四条指令fetch
2.2.1 执行第一条指令 LOAD_A
(1)当启动计算机时,全部寄存器从 0 开始。优化
(2)进入第一阶段"取指令阶段"(fetch phase),负责拿到指令。
首先,将 "指令地址寄存器" 连到 RAM,寄存器的值为 0,所以 RAM 返回地址 0 的值。spa
而后,0010 1110 会复制到 "指令寄存器" 里。 code
(3) "解码阶段"
指令拿到了,要弄清是什么指令,才能执行,即 "解码阶段"。视频
8位的指令:用前四位存 "操做代码",简称 "操做码" (opcode)对应指令表中的指令。后四位表明数据来自哪里,能够是寄存器或内存地址。
(4) "执行阶段"
知道了是什么指令,开始 "执行阶段"。
步1:取值。用 "控制单元"打开 RAM 的 "容许读取线", 把地址 14 传过去,从RAM的地址14中拿到值0000 0011,十进制的 3。ip
步二:存值。根据 LOAD_A 指令的要求 , 要把取到的值只放到寄存器 A,其余寄存器不受影响,因此使用一根线,把 RAM 连到 4 个寄存器。
步三:用 "控制单元" 启用寄存器 A 的 "容许写入线"。
步四: 内存
成功把 RAM 地址 14 的值,放到了寄存器 A。数学
步五:LOAD_A 指令完成,"执行阶段"就此结束。把 "指令地址寄存器"+1,去拿下一条指令并解码执行。
总结:控制单元的抽象
LOAD_A 只是 CPU 能够执行的各类指令之一,不一样指令由不一样逻辑电路(控制单元)解码。
能够将"控制单元 "包成一个总体。
控制单元就像管弦乐队的指挥,"指挥" CPU 的全部组件"取指令→解码→执行" 。会配置 CPU 内的组件来执行对应操做。
2.2.2 执行 ADD指令 "1000 0100"
(1) 指令解析:
1000 是 ADD 指令,后面的 4 位不是 RAM 地址,而是表明 2 个寄存器,第一个地址是 01, 表明寄存器B,第二个地址是 00, 表明寄存器A。
所以,1000 0100,表明把寄存器 B 的值,加到寄存器 A 里。
(2) "控制单元"的做用
(3) 把指令地址 + 1,执行下一条指令。
2.2.3 执行STORE A 指令 " 0100 1101"
(1) 解码
查看指令表,STORE A 指令是把寄存器 A 的值放入RAM,RAM 地址为13.
(2) 执行
2.2.4时钟
在执行以上四条指令的时候,咱们人工切换 CPU 的状态 "取指令→解码→执行",但实际上电脑用 "时钟" 来负责管理 CPU 的节奏。
(1) 时钟的做用
时钟以精确的间隔触发电信号,控制单元会用这个信号,推动 CPU 的内部操做,确保一切按步骤进行。
(2) "时钟速度"
"时钟速度"指 CPU "取指令→解码→执行" 的速度 。单位是赫兹 ,
1hz/s表明一秒 1 个周期,
(1) CPU抽象
RAM是在 CPU 外面的独立组件,CPU 和 RAM 之间 用 "地址线" "数据线" 和 "容许读/写线" 进行通讯。
(2) "英特尔 4004"
第一个单芯片 CPU 是 "英特尔 4004" ,1971 年发布的 4 位CPU,它的微架构 很像咱们以前说的 CPU,它的时钟速度达到了 740 千赫兹 - 每秒 74 万次。
如今看视频的电脑或手机,可能有几千兆赫兹, 1 秒 10 亿次时钟周期。
(3) 优化