一、CPU 的功能和组成
- CPU 的功能 CPU 是计算机的核心部件,主要有五大功能:指令控制,按程序顺序完成取指、译码、执行;操作控制,依据指令译码产生各部件所需微操作控制信号;时间控制,为所有微操作提供时序定时;数据加工,完成算术运算、逻辑运算;中断处理,响应中断请求,保存现场、处理中断以及中断返回。
- CPU 的基本组成 CPU 由运算器和控制器两部分组成。运算器包含 ALU 算术逻辑单元、累加器、标志寄存器、通用寄存器组,负责数据加工运算。控制器包含 PC 程序计数器、IR 指令寄存器、指令译码器、操作控制器、时序发生器,负责整机的信号指挥与时序协调。
- CPU 中的主要寄存器 PC 程序计数器:存放将要取出的下一条指令地址,顺序执行时自动自增,转移指令可以改写 PC 的值。 IR 指令寄存器:存放当前正在译码、执行的指令。 MAR 存储器地址寄存器:存放访问主存的单元地址。 MDR 存储器数据寄存器:存放主存和 CPU 之间传输的指令或者数据。 ACC 累加器:运算器核心寄存器,存放参与运算的操作数以及运算结果。 PSW 程序状态字寄存器:保存运算产生的标志位,包含零标志、进位标志、溢出标志、符号标志。 通用寄存器组:临时存放操作数,减少访问内存次数。
- 操作控制器与时序发生器 操作控制器:接收指令译码信号、时序信号、状态反馈信号,生成全部微操作控制信号;分为硬布线控制器、微程序控制器两种类型。 时序发生器:产生机器周期、节拍、脉冲时序信号,为 CPU 内部所有微操作提供统一时间基准,保证操作按固定顺序执行。
二、指令周期
- 指令周期的基本概念 指令周期:取出并且执行一条指令所需要的全部时间。 机器周期:完成一次访存操作所需要的时间,一条指令周期可以由一个或者多个机器周期构成。 时钟周期(节拍):CPU 最小时间单位。 所有指令都必须经过取指周期,取指周期操作:PC→MAR,发读信号,主存→MDR→IR,PC 自增。
- NOT 指令的指令周期 NOT 为单操作数逻辑取反指令,不需要访问内存取操作数。 取指周期:从内存取出指令送入 IR,PC+1。 执行周期:将 ACC 中的数据送入 ALU 完成按位取反,结果写回 ACC。
- LAD 指令的指令周期 LAD 是取数指令 Load,功能:把主存单元的数据读取到累加器 ACC。 取指周期:取出指令,PC+1。 间址周期(间接寻址时才有):取出操作数有效地址。 执行周期:地址码送入 MAR,发读命令,主存数据读出,经过 MDR 送入 ACC。
- ADD 指令的指令周期 ADD 是加法指令,功能:ACC 的值加上主存操作数,结果放回 ACC,更新状态标志。 取指周期:取出指令,PC+1。 间址周期(间接寻址时才有):取出操作数有效地址。 执行周期:地址码送入 MAR,读主存得到操作数;ACC 和读出的操作数送入 ALU 相加;运算结果存入 ACC,修改 PSW 标志位。
- STO 指令的指令周期 STO 是存数指令 Store,功能:将 ACC 中的数据写入指定主存单元。 取指周期:取出指令,PC+1。 间址周期(间接寻址时才有):取出操作数有效地址。 执行周期:地址码送入 MAR,ACC 数据送入 MDR,发送写信号,将 MDR 数据写入主存对应单元。
- JMP 指令的指令周期 JMP 是无条件转移指令,依靠修改 PC 实现程序跳转,不需要访问操作数。 取指周期:取出指令,PC+1。 执行周期:将指令给出的转移地址送入 PC,下一次取指从新地址开始。
- 用方框图语言表示指令周期 方框:代表一个机器周期(CPU 周期),框内填写该周期对应的微操作。 菱形框:代表条件判断分支。 箭头:代表数据流、控制信号流向。 标注内容:节拍编号、微操作控制信号。 统一规则:所有指令流程图起点都是取指周期,后续流程根据指令类型区分。
三、流水线技术与流水线处理器
- 流水线原理 流水线核心思想是时间重叠,把一条指令的执行过程拆分为多个独立阶段,典型分为取指 IF、译码 ID、执行 EX、访存 MEM、写回 WB。多条指令在不同阶段重叠并行工作,提升 CPU 吞吐能力。 流水线三个性能指标:吞吐率 TP、加速比、流水线效率。
- 流水线的应用 指令流水线:CPU 内部的指令流水线,应用最广泛。 运算流水线:浮点加法、浮点乘法等专用运算流水线。 向量流水线:向量计算机、GPU 中的向量流水线。
- 指令流水线设计中的若干问题 结构冒险:资源冲突,多条指令同时争抢同一个硬件资源;解决办法:分离指令 Cache 和数据 Cache,设置独立总线。 数据冒险:数据相关,后一条指令需要前一条指令的运算结果,结果还没有写回;分为 RAW 写后读、WAR 读后写、WAW 写后写;解决办法:旁路转发、插入气泡、编译器指令调度。 控制冒险:分支冒险,分支指令无法提前确定 PC 值,预取指令错误;解决办法:分支预测、延迟分支技术。 流水线瓶颈:流水线中速度最慢的段,决定整条流水线的时钟周期。
- 动态流水线调度 静态流水线:同一时刻,流水线只能实现同一种运算功能。 动态流水线:同一时刻,流水线各个段可以灵活连接重组,支持多种不同运算同时进行。 经典调度算法:Tomasulo 算法,引入寄存器重命名、乱序执行机制,可以消除 WAR、WAW 数据相关,减少流水线气泡,提升流水线利用率。