第 4 章 中央处理器¶
依据:2016 年版教材第 4 章与配套大纲。下文编号指大纲“考核内容与考核要求”。
复习导航:大纲要求与笔记位置¶
| 大纲条目 | 层次 | 位置 | 学完应能做到 |
|---|---|---|---|
| 1 程序执行概述 | 识记;领会 | 第 1 节 | 给出指令周期、数据通路、PC/IR/译码器/MAR/MDR 等含义,说明指令执行过程 |
| 2 数据通路基本结构和定时 | 识记;领会 | 第 2 节 | 区分操作元件与状态元件,说明互连与 D 触发器定时 |
| 3 数据通路基本工作原理 | 领会 | 第 3 节 | 说明控制信号与数据通路的关系,描述单总线与单周期的工作过程 |
| 4 流水线方式下指令的执行 | 识记;领会;简单应用 | 第 4 节 | 划分流水段,说明 CPI 为 1 的原因,计算指令吞吐率 |
| 5 控制器设计基本原理 | 识记;领会 | 第 5 节 | 说明硬连线与微程序控制器的设计过程和特点 |
| 6 指令流水线中的冒险处理 | 识记 | 第 6 节 | 区分结构、数据、控制冒险,说明转发与停顿 |
| 7 高级流水线基本原理 | 识记 | 第 7 节 | 说明超流水线、多发射、VLIW、超标量、乱序执行 |
| 8 异常和中断 | 识记;领会 | 第 8 节 | 区分内部异常与外部中断,说明硬件的响应过程 |
第 4 条兼有简单应用,需能划分流水段并计算吞吐率;第 6、7 条以识记为主,重点是术语所指的现象而非细节推导。
本章学习目标¶
第3章规定了指令的功能,本章说明CPU用数据传送、运算和控制实现功能的过程。学习内容包括CPU组成、数据通路与定时、控制器,以及异常和中断。流水线部分要求能够划分流水段、计算吞吐率,并理解冒险的成因与处理方法。
1 程序执行概述(1,识记、领会)¶
CPU由数据通路和控制部件组成,两者协同工作。数据通路保存、传送、加工数据。控制部件根据指令、时序及状态产生控制信号。取指、译码、操作数获取、执行、访存、写回等阶段,并非每条指令都要走完。
| 部件 | 职能 |
|---|---|
| PC | 后继取指地址 |
| IR与译码器 | 保存指令并解释字段 |
| 寄存器堆 | 通过读口和写口提供操作数及保存结果 |
| ALU | 运算、比较及有效地址计算 |
| MAR/MDR | 暂存主存地址和读写数据 |
| 控制器 | 决定选择信号、写使能、运算操作、读写请求 |
指令周期是完成一条指令所需的全过程,时钟周期是基本节拍。多周期实现中,一条指令可占多个时钟。流水线中多条指令的周期相互重叠,不能由CPI直接推断单条延迟。
2 数据通路基本结构和定时(2,识记、领会)¶
组合逻辑依据当前输入产生输出,寄存器等状态元件则在规定时刻锁存值。时钟周期要容纳关键路径延迟、寄存器建立时间等。缩短时钟周期需改变路径或流水分段,不能让信号尚未稳定就锁存。
单总线结构共享传送通路,硬件开销小,但同一时刻通常只允许一个源驱动总线,复杂操作需要多个节拍。多总线或专用通路允许更多并行传送,代价是连线和选择控制变多。多路选择器选数据来源,写使能决定目的寄存器是否更新。
单周期实现让每条指令在一个长周期内完成,周期由最慢的指令决定。多周期实现分阶段复用硬件,周期可以缩短,代价是CPI增加。比较性能要看“周期×周期数”,不能只比较CPI。
3 数据通路工作原理(3,领会)¶
指令语义可以进一步分解为数据通路上的微操作。确定操作数来源、所经运算部件和结果目的地后,才能判断需要哪些选择信号和写使能。以下微操作描述基本过程。其中哪些操作能够并行,取决于具体电路的资源和连接方式。
以使用MAR和MDR的取指过程为例,CPU先执行MAR←PC,将取指地址送到存储器,并发出读请求。数据返回后执行MDR←M[MAR],再由IR←MDR保存指令。顺序执行时,PC更新为PC←PC+指令长度。实际实现可以把其中部分操作合并或并行安排。
| MIPS指令 | 核心数据流 | 关键写操作 |
|---|---|---|
| add rd,rs,rt | 寄存器两读口→ALU加→结果选择器 | 写rd |
| lw rt,imm(rs) | 基址+符号扩展位移→数据存储器读 | 主存数据写rt |
| sw rt,imm(rs) | 基址+位移→地址端,R[rt]→数据端 | 写数据存储器,无寄存器写回 |
| beq rs,rt,imm | 比较两寄存器,形成分支目标 | 条件成立时更新PC |
所有指令都有取指操作。“sw不读存储器”通常指不读数据存储器,但取指访问并不能省掉。IR等寄存器是否需要独立设置,也与实现方式有关。
4 流水线执行(4,识记、领会、简单应用)¶
教材先给出一般分段示意,再给MIPS五段:IF取指、ID译码/读寄存器、EX运算/算地址、MEM数据访存、WB写回。流水段间寄存器传递数据、目的寄存器号和控制信息。
R型运算的MEM段为空,sw没有寄存器写回,简单流水线仍保留这两处位置,以维持统一流动。某段没有有效工作,不代表其他指令可以随意跨过该段。
理想k段流水线,各段周期τ,n条指令:
流水线总时间 T_pipe = (k+n−1)τ;吞吐率 TP = n / [(k+n−1)τ]。
若串行每条需kτ,加速比为nk/(k+n−1),n很大时趋近k。存在s个额外停顿周期时,总时间为(k+n−1+s)τ。各段延迟不等时,τ至少由最长段与寄存器开销共同决定。
例:5段、τ=2 ns,10条无冲突指令共14周期=28 ns,吞吐率10/28 ns≈3.57×10⁸条/s。若改为串行执行,每条10 ns,共100 ns,加速约3.57。稳态理想CPI≈1,但单条经历五段,延迟约10 ns。
5 控制器设计(5,识记、领会)¶
硬连线控制器将操作码、状态、节拍等输入经逻辑电路转换为控制信号。设计时分析指令 → 列微操作与时序 → 确定控制信号 → 建立逻辑关系并实现。速度通常较快,但复杂指令的逻辑设计和修改都比较困难。
微程序控制器将控制步骤存入控制存储器,由微地址顺序及转移逻辑读取微指令,逐步发出微命令。机器指令是程序员使用的操作,微程序是实现该指令的一串微指令,微命令则是某项基本控制动作。控制存储器不等于存放用户程序的主存。
水平型微指令用较直接的控制位表达并行微命令,字比较宽。垂直型编码较集中,需要译码,字比较短。微程序控制规整、易修改,但访问控制存储会带来时间开销。
6 流水线冒险(6,识记)¶
| 类型 | 发生原因 | 处理方法 |
|---|---|---|
| 结构冒险 | 同周期争同一资源,如统一单端口存储器取指与取数 | 增加/分离资源或停顿 |
| 数据冒险 | 需要的结果尚未可用 | 转发、停顿、编译调度 |
| 控制冒险 | 分支方向或目标未确定 | 停顿、预测,错误时冲刷 |
数据相关是程序自身的数据依赖,是否形成冒险取决于流水线时序。基本的顺序五段流水线主要看先写后读RAW。转发把尚未写回的结果送给使用者,可以减少等待,但不能让结果早于实际生成时间出现。
经典load-use:lw $t0,0($s0)紧接add $t1,$t0,$t2。load要到MEM段末才读出数据,而后继指令的EX段已经需要它,通常要停顿1周期再转发。具体停顿数以题设的转发路径和读写时序为准。
流水线时空图通常以行为指令、列为时钟周期。在理想的IF至WB排列基础上,结合资源占用、结果可用时刻和分支确定阶段,可以找出需要停顿或冲刷的位置。
7 高级流水线(7,识记)¶
基本流水线通过重叠不同指令的执行阶段提高吞吐率。进一步提高性能,可以增加流水段数,或在一个周期内发射多条指令。前者称为超流水线,较细的分段有助于缩短周期,但也会增加流水寄存器开销,并可能增大分支预测失败的代价。后者属于多发射,其效果受程序中指令级并行(ILP)的限制。ILP指在满足依赖关系的前提下,有多少操作可以并行处理。
IPC表示每周期完成的指令数,等于完成指令数除以周期数;多发射处理器的IPC可以大于1。在相同统计范围内,CPI与IPC互为倒数。
静态多发射由编译器安排并行发射,VLIW把多个操作组织在长指令中。动态多发射由硬件在运行时决定,超标量是典型形式。动态调度和乱序执行允许就绪指令先执行,但体系结构可见的结果仍要符合程序语义,通常靠有序提交等机制保证。
8 异常和中断(8,识记、领会)¶
内部异常通常与当前指令同步,如非法指令、除零、缺页;外部中断来自设备、时钟等,与当前指令异步。两者都可能要求保存返回信息、转入处理程序,处理完再恢复。
- 故障fault:通常可修复并重新执行故障指令,如缺页;保存位置要能支持重执行。
- 陷阱trap:在指令完成后报告,常返回后继指令,如某些调试/系统服务机制。
- 终止abort:严重错误,通常不能按原程序正常恢复。
硬件负责识别事件、保存必要的返回状态并转入入口。处理程序完成具体处理与更完整的现场保护。保存断点只保存恢复所需的指令位置,保存现场还包括寄存器、状态等。不同异常返回点不同,不能一律写PC+4。
9 考核要求¶
本章重点为程序与指令之间的关系、指令执行过程、异常和中断的基本概念、数据通路的功能和基本结构、数据通路的定时、指令流水线的基本概念、控制器的功能和设计过程;难点为数据通路的定时、指令流水线、控制器的设计过程、流水线中的冒险处理、高级流水线基本原理。
10 教材本章习题¶
本节按“单项选择题/填空题/简答题”分节,答案依据教材附录。
| 自测题(自编) | 参考答案与辨析 |
|---|---|
| 五段线 100 条、停顿 6 周期共几周期? | 5+100−1+6=110。 |
| 转发能否消灭所有 RAW 冒险? | 不能,需看结果何时可用,load-use 通常仍需停顿。 |
| 微指令是普通应用程序中的机器指令吗? | 不是,是控制层实现步骤。 |
| 缺页和键盘中断分别是什么? | 内部异常、外部中断。 |
| 流水线是否必然缩短单条指令延迟? | 不能保证,主要提高连续指令吞吐率。 |
11 闭卷复习与跨章联系(补充)¶
本章把第 3 章的指令格式落实为硬件动作:指令格式决定控制信号的取值,数据通路决定这些信号作用于哪些部件。第 5 章的存储层次解释了 MEM 段为何可能耗时多周期,第 6 章的中断机制与本章的异常处理共用同一套响应流程。计算题的关键是分清“周期数”与“延迟”:吞吐率的提高来自重叠执行,单条指令的延迟并未因此缩短。