导图社区 第五章 CPU
这是一篇关于考研王道 第五章 CPU的思维导图,主要内容包括:CPU的功能和基本结构,指令执行过程,数据通路,控制器的功能和工作原理,微指令的设计,指令流水线,多处理器,硬件多线程。
编辑于2025-09-19 19:15:34第五章 CPU
CPU的功能和基本结构
运算器基本结构
算术逻辑单元ALU
暂存寄存器
累加寄存器ACC
通用寄存器
程序状态字寄存器PSW
计数器
移位器
控制器基本结构
程序计数器PC
指令寄存器IR
指令译码器, 时序系统, 微操作信号发生器
存储器地址寄存器MAR
存储器数据寄存器MDR
用户可见寄存器: 通用寄存器, PC, PSW
用户不可见寄存器: MAR, MDR, IR, 暂存寄存器
指令执行过程
指令周期
阶段
访存目的
取指周期
访存目的是从主存中取出指令。
间址周期
访存目的是从主存中取出有效地址。
执行周期
访存目的是取出操作数。
中断周期
访存目的是保存程序的断点。
指令周期阶段的方法: 设置四个触发器(FE, IND, EX, INT)来表示当前所处的阶段(取指、间址、执行、中断)。
指令执行方案
方案
CPI
CPU时钟周期计算
单指令周期: 所有指令选用相同的执行时间, 指令间串行
CPI = 1
多指令周期: 不同类型指令选用不同的执行步骤, 指令间串行
CPI>1
取决于最长操作时间(一般为主存周期)
流水线: 隔一段时间启动一条指令, 指令间并行执行
理想情况下, CPI=1
数据通路
CPU内部总线
单总线
注意: 单周期处理器不能采用单总线方式, 因为单总线间所有寄存器连接到一条公共总线上, 一个时钟内只允许一次操作, 无法完成一条指令的所有操作
多总线
双总线或多总线结构, 提高效率
ALU需要两个同时有效的输入,单总线结构必须使用暂存寄存器Y,多总线结构可省去暂存寄存器
专用数据通路
控制器的功能和工作原理
硬布线控制器
根据指令操作码、目前的机器周期、节拍信号、机器状态条件,即可确定现在这个节拍下应该发出哪些“微命令”
微程序控制器
CU的结构
微地址形成部件
微地址即微指令在CM中的存放地址
通过指令操作码形成对应微程序的第一条微指令的存放地址
顺序逻辑
根据某些机器标志和时序信息确定下一条指令的存放地址
CMAR(mPC)
指明接下来要执行的微指令的存放地址
地址译码器
将CMAR内的地址信息译码微电信号,控制CM读出微指令
控制存储器CM
存放所有机器指令对应的微程序
用ROM实现, 按地址寻访, 通常CPU出厂时就把所有微程序写入
CMDR(mIR)
微指令寄存器, 用于存放当前要执行的微指令,
工作原理
指令周期=取值周->间址周期->执行周期->中断周期。其中间址、中断周期可有可无
处理取指周期、间址周期、中断周期的微指令序列通常是公用的。执行周期的微指令序列各不相同
取指周期的微指令序列固定从#0开始存放。执行周期的微指令序列的存放根据指令操作码确定
概念对比
程序 vs 微程序;指令 vs 微指令;主存储器 vs 控制器存储器(CM); MAR vs CMAR;MDR vs CMDR; PC vs μPC; IR vs μIR
MAR vs CMAR((mPC))
MAR:内存地址寄存器,用于存放当前要访问的主存储器的单元地址。
CMAR:控制存储器地址寄存器,用于存放当前要访问的控制器存储器(CM) 的单元地址(即下一条要执行的微指令的地址)。
PC vs μPC
PC:程序计数器,存放下一条要执行的机器指令在主存储器中的地址。
μPC:微程序计数器,存放下一条要执行的微指令在控制器存储器(CM) 中的地址。
MDR vs CMDR(μIR)
MDR:内存数据寄存器,用于存放从主存储器读出或将要写入主存储器的数据。
CMDR:控制存储器数据寄存器,用于存放从控制器存储器(CM) 中读出的微指令。
IR vs μIR
IR:指令寄存器,存放当前从主存储器中取出的机器指令。
μIR:微指令寄存器,存放当前从控制器存储器(CM) 中取出的微指令。
微命令、微操作、微指令、微程序之间的关系
微程序 → 由多条 微指令 组成 → 每条 微指令 包含多个 微命令 → 每个 微命令 驱动一个 微操作
指令周期:从主存取出并执行一条机器指令所需的时间
微周期(微指令周期):从控制器存储器取出一条微指令并执行相应微操作所需的时间
对比
对比项
微程序控制器
硬布线控制器
执行速度
慢
快
规整性
较规整
繁琐
应用场合
CISC
RISC
易扩充性
易扩充
不易扩充
微指令的设计
微指令格式
水平型微指令
每条微指令能定义多个可并行的微命令
垂直型微指令
每条微指令只能定义一个微命令,由微操作码指明
混合型微指令
在垂直型微指令的基础上加上一些简单的并行操作
水平型微指令的编码方式
直接编码 (直接控制)
控制码的每个bit对应一个微命令, 微指令执行速度最快
字段直接编码
将互斥性的微命令分在同一个段内,相容的分在不同的段
每个段留出一个状态表示“不操作”
微指令操作码需要经过译码电路处理,因此执行速度更慢
字段间接编码
一个字段的微命令需要用另一个字段的微命令解释
可能需要多级译码电路处理,执行速度最慢
下一条微指令地址的形成方式
断定法(下地址法):根据当前执行的微指令下地址找到下一条微指令
计数器法(增量法):μPC(CMAR)+1顺序找到下一条微指令
根据指令操作码确定执行周期微程序首地址
由专门的硬件指明取指/中断周期的微程序首地址
指令流水线
基本概念
性能指标
吞吐率TP: n/Tk
加速比S: T0/Tk
效率E: n个任务占用k时空区有效面积/n个任务所用的时间与k个流水段所围成的时空区总面积
影响因素
结构冲突
1. 后一相关指令暂停一周期
2. 资源重复配置(数据存储器+指令存储器)
数据冲突(RAW)
1. 把遇到数据相关的指令及其后续指令都暂停一至几个 时钟周期,直到数据相关问题消失后再继续执行。可分 为硬件阻塞(stall)和软件插入“NOP”两种方法。
2. 数据旁路技术。
3. 编译优化:通过编译器调整指令顺序来解决数据相关。
4. 注意: 在按序执行的流水线中, 只可能出现RAW冲突
控制冲突
1. 延时: 硬件阻塞(stall)和软件插入“NOP”
2. 转移指令分支预测。简单预测(永远猜ture或false)、动态预测(根历史情况动态调整)
3. 预取转移成功和不成功两个控制流方向上的目标指令
4. 加快和提前形成条件码
5. 提高转移方向的猜准率
分类
按使用级别:部件功能级、处理机级、处理机间
部件功能级流水就是将复杂的算术逻辑运算组成流水线工作方式。例如,可将浮点加法操作分成求阶差、对阶、尾数相加以及结果规格化等4个子过程。
处理机级流水是把一条指令解释过程分成多个子过程,如前面提到的取指、译码、执行、访存及写回5个子过程。
处理机间流水是一种宏流水,其中每一个处理机完成某一专门任务,各个处理机所得到的结果需存放在与下一个处理机所共享的存储器中。
按完成功能:单功能、多功能
按连接方式:动态、静态
按有无反馈信号:线性、非线性
多发技术
超标量流水线技术(动态多发技术)
每个时钟周期内可并发多条独立指令,要配置多个功能部件
CPI<1
超长指令字技术(静态多发技术)
由 编译程序挖掘 出指令间潜在 的并行性,将多条能并行操作的指令组合成一条
具有多个操作码字段的超长指令字(可达几百位)
采用多个处理部件
超流水线技术
在一个时钟周期内再分段(3段),在一个时钟周期内一个功能部件使用多次(3次), 时钟频率加快
CPI=1, 但主频更高,时钟周期更短
多处理器
SISD、SIMD、MIMD 向量处理器的基本概念
SISD(单指令流单数据流)
特性
各指令序列只能并发, 不能并行, 每条指令处理一两个数据
eg: 机组课程一直在学的就是SISD, 每条指令可以护理一两个数据
不是数据并行技术
硬件组成
一个处理器+一个存储器
若采用指令流水线, 则设置多个功能部件, 采用多模块交叉存储器
SIMD(单指令流多数据流)
特性
各指令序列只能并发、不能并行,但每条指令可同时处理很多个具有相同特征的数据
是一种数据级并行技术
硬件组成
一个指令控制部件(CU)+多个处理单元/执行单元(如ALU) + 多个局部存储器
eg: 某些显卡常采用SIMD,图像处理时,常对每个像素点进行完全一样的处理
eg: 可用于优化for循环中对数组元索的重复处理
每个执行单元有各自的寄存器组、局部存储器、地址寄存器。但整体只有一个程序计数器PC
不同执行单元执行同一条指令,处理不同的数据
执行流程
1. 取指:共享的CU根据共享的PC值,通过总线从主存取回一条指令,并将其存入CU内部的IR中。
2. 译码:CU对IR中的指令进行解码。
3. 广播:如果是一条SIMD指令(如向量加法),CU就将“加法”这个操作命令广播给所有并行的ALU单元。
4. 并行执行
各ALU接收到“加法”命令后,各自使用自己的地址寄存器,计算出要访问的内存地址。
各ALU同时从主存的不同地址(或从自己的局部存储器)将数据加载到自己的数据寄存器中。
所有ALU同时在自己的单元内执行加法运算。
各ALU将结果写回内存或自己的局部存储器。
5. 更新PC:指令执行完毕后,PC更新为下一条指令的地址,整个过程重复。
MISD(多指令流单数据流)
多条指令并行执行,处理同一个数据。现实中不存在这种计算机
MIMD(多指令流多数据流)
特性
各指令序列并行执行,分别处理多个不同的数据
是一种线程级并行、甚至是线程级以上并行技术
进一步分类
多处理器系统
特性
各处理器之间,可以通过LOAD/STORE指令,访问同一个主存储器,可通过主存相互传送数据
eg: Intel i5,i7处理器
硬件组成
子主题
一台计算机内,包含多个处理器+一个主存储器
多个处理器共享单一的物理地址空间
多计算机系统
特性
各计算机之间,不能通过LOAD/STORE指令直接访问对方的存储器,只能通过“消息传递相互传送数据
eg:多台计算机组成的"分布式计算系统”
硬件组成
由多台计算机组成,因此拥有多个处理器+多个主存储器
每台计算机拥有各自的私有存储器,物理地址空问相互独立
向量处理机(SIMD思想的进阶应用)
特性
一条指令的处理对象是“向量”
eg: 向量处理机的LOAD指令,可以将一个向量取到向量寄存器中;加法指令,可以实现两个向量相加
擅长对向量型数据并行计算、浮点数运算,常被用于超级计算机中,处理科学研究中巨大运算量
eg:空气动力学、核物理学、巨型矩阵计算问题
硬件组成
多个处理单元,多组“向量寄存器”
主存储器应采用“多个端口同时读取"的交叉多模块存储器
要有大容量的、集中式的主存储器,因为主存储器大小限定了机器的解题规模
共享内存多处理器(SharedMemorymultiProcessor, SMP)的基本概念
多处理器系统(简称)
多个处理器共享一个主存储器
多个处理器共享单一的地址空间,都可以通过LOAD、STORE指令访问共享的主存储器
多核处理器(multi-core)的基本概念
一个CPU芯片中包含多个处理器,即多个核(core),因此通常也称为片级多处理器(Chip-Level MultiProcessing,CMIP)。意思是:一块芯片上集成了多个处理器
所有核共享一个LLC(Last-Level Cache),并共享主存储器
硬件多线程
细粒度多线程
粗粒度多线程
同时多线程(超线程)
指令发射
轮流发射各线程的指令(每个时钟周期发射一个线程)
连续几个时钟周期,都发射同一线程的指令序列,流水线阻塞时,切换另一个线程
一个时钟周期内, 同时发射多个线程指令
线程切换频率
每个时钟周期切换一次线程
只有流水线阻塞时才切换一次线程
NULL
线程切换代价
低
高, 需要重载流水线
NULL
并行性
指令级并行, 线程间不并行
指令级并行, 线程间不并行
指令级并行, 线程级并行