导图社区 第五章 中央处理器
这是一个关于第五章 中央处理器的思维导图,总结了CPU的功能和基本结构、指令执行过程、数据通路的功能和基本结构等知识点。
编辑于2024-01-16 15:53:05第五章 中央处理器
中央处理器
CPU的功能和基本结构
CPU的功能
组成
运算器
运算器的功能是对数据进行加工。
控制器
控制器的功能是负责协调并控制计算机各部件执行程序的指令序列,包括取指令、分析指令和执行指令。
具体功能
指令控制
操作控制
时间控制
数据加工
中断处理
CPU的基本结构
运算器
算术逻辑单元
暂存寄存器
累加寄存器
通用寄存器组
程序状态字寄存器
移位器
计数器
控制器
程序计数器
指令寄存器
指令译码器
存储器地址寄存器
存储器数据寄存器
时序系统
微操作信号发生器
指令执行过程
指令周期
都有CPU访存操作
取指周期是为了取指令
间址周期是为了取(操作数)有效地址
执行周期是为了取操作数
中断周期是为了保存程序断点
指令周期的数据流
取指周期
PC → MAR → 地址总线 → 主存 CU发出读命令 → 控制总线 → 主存 主存 → 数据总线 → MDR → IR(存放指令) CU发出控制信号 → PC内容加1
取指周期的任务是根据PC中的内容从主存中取出指令代码并存放在IR中。
间址周期
Ad(IR)(或MDR) → MAR → 地址总线 → 主存 CU发出读命令 → 控制总线 → 主存 主存 → 数据总线 → MDR(存放有效地址)
间址周期的任务是取操作数有效地址。
执行周期
执行周期的任务是取操作数,并根据IR中的指令字的操作码通过ALU操作产生执行结果。
中断周期
CU控制将SP减1,SP → MAR → 地址总线 → 主存 CU发出写命令 → 控制总线 → 主存 PC → MDR → 数据总线 → 主存(程序断点存入主存) CU(中断服务程序的入口地址) → PC
CU把用于保存程序断点的存储器特殊地址(如栈指针的内容)送往MAR,并送到地址总线上,然后由CU向存储器发写命令,并将PC的内容(程序断点)送到MDR,最终使程序断点经数据总线存人存储器。此外,CU还需将中断服务程序的人口地址送至PC,为下一个指令周期的取指周期做好准备。
中断周期的任务是处理中断请求。
三线(数据总线、地址总线、控制总线)+PC
指令执行方案
单指令周期
多指令周期
流水线方案
数据通路的功能和基本结构
数据通路的功能
数据通路的功能是实现CPU内部的运算器与寄存器及寄存器之间的数据交换。
数据通路的基本结构
基本结构
总线结构数据通路
CPU内部单总线方式
同一时刻只能有一个部件可以发送数据,否则会发生信号冲突。 解决方法是:所有的部件输出端(且通往总线或其它方向但有信号冲突)都必须通过三态门连接到总线上,自带三态输出功能的部件除外。
由于组合逻辑部件的输出只依赖于其输入,因此,组合逻辑部件的输入端、输出端不能连接在同一个总线上,否则会发生信号冲突。 解决方法一是增设寄存器(或锁存器) ,使所有输入端及输出端中只有一个直接连接在同一总线上。 解决方法二是增加总线数量, 使每个输入端及输出端连接到不同总线上。
A、B 及 F 不能连接到同一个总线上,需要增设 2 个寄存器(或锁存器) ,或者采用三总线结构,或者采用双总线结构并增设一个寄存器。
增加寄存器和增加三态门解决的矛盾是不同的。三态门侧重于解决总线上的冲突,寄存器侧重于解决组合逻辑部件的冲突。
CPU内部多总线方式
专用数据通路方式
由于同一个输入端连接有多个部件输出端,为了同一时刻只接收一个部件输出端的数据,部件的每个输入端都必须通过多路选择器连接不同的部件输出端,部件输入端只与一个部件输出端连接时除外。
由于没有输出冲突,GPRs 可以设置两个读端口,以提高数据传送性能。
寄存器之间的数据传送
(PC)→MAR PCout和MARin有效,PC内容→MAR
主存与CPU之间的数据传送
(PC)→MAR PCout和MARin有效,现行指令地址→ MAR 1→R CU发读命令 MEM(MAR)→MDR MDRin有效 (MDR)→IR MDRout和IRin有效,现行指令→ IR
执行算术或逻辑运算
(MDR)→MAR MDRout和MARin有效,操作数有效地址→MAR 1→R CU发读命令 MEM(MAR)→MDR 操作数从存储器→MDR (MDR)→Y MDRout和Yin有效,操作数Y (ACC)+(Y)→Z ACCout和ALUin有效,CU向ALU发加命令,结果→ Z (Z)→ACC Zout和ACCin有效,结果→ACC
分析指令阶段所需要的功能部件为指令译码器,但它不属于数据通路。
单总线结构的数据通路
由于采用单总线结构,因此图中运算器 ALU 采用了两个暂存寄存器 X、Z。 其中 X 用于暂存 ALU 的操作数 A。 ALU 的另一个操作数 B 来自内总线。 Z 用于暂存运算结果。
PSW 寄存器为程序状态寄存器,用于存放 ALU 的运算状态标志,暂存状态标志将送入操作控制器。
PC、AR、DR、IR、X、Z 寄存器和寄存器堆 Regs 均直接与内总线相连。 另外 AR、DR 寄存器还通过外总线与存储器 MEM 相连。
在总线结构中,可同时进行的数据传输数量取决于总线的数量。对单总线结构而言,总线上可以有多个模块同时接收数据,但某一时刻只能有一个模块向总线发送数据,否则会出现数据冲突。
因此, 连接到总线上的部件都需要进行输出控制, 以防止总线上出现数据冲突。 为此, 图中所有向内总线输出的功能部件都采用三态门进行输出控制(图中用三角形空心箭头表示)。
控制信号及其功能
典型 MIPS32 指令
lw 指令的执行流程
lw 指令的功能是从主存读取一个 32 位的存储器字,汇编代码为 lw rt, imm (rs)
访存地址为 rs 字段对应的寄存器加 16 位有符号立即数 imm,这是典型的变址寻址,lw 从对应的主存单元取出 4 个字节送入 rt 寄存器中保存。
由于寄存器位宽为 32 位,因此首先需要将 16 位立即数 imm 的符号扩展为 32 位才能送入 ALU 中计算访存地址。
lw 指令操作流程及控制信号
取指周期 T3 节拍 M[AR] → DR 的操作也可以放在 T2 节拍,两者功能等价。每一次M[AR] → DR都可以伴随一次片内总线传输事务,以提高指令执行速度。
sw 指令的执行流程
sw 指令的功能是在主存中写入一个 32 位的存储器字,汇编代码为 sw rt,imm(rs)
sw 指令操作流程及控制信号
beq 指令的执行流程
beq 指令是条件分支指令,汇编代码为 beq rs,rt,imm。beq 指令的功能是比较寄存器 rs 和 rt 的值,如果相等则进行分支跳转。
imm 的值表示分支目标地址相对下一条指令也就是 PC+4 的指令条数,所以计算分支目标地址时应该将 PC 的值(取指令阶段已更新为 PC+4)与 imm 符号扩展为 32 位再左移两位后的值相加,这里左移两位的目的是计算字节偏移量。
beq 指令操作流程及控制信号
数据通路部件
操作部件(组合逻辑电路)
数据处理单元
数据处理单元由组合逻辑电路构成,其输出只与当前的输入有关,负责对数据进行加工处理, 如 ALU、 符号扩展单元、 译码器等。
状态部件(时序逻辑电路)
状态存储单元
状态存储单元 (状态单元)是指带有存储功能的单元,如存储器和寄存器。
单周期处理器典型数据通路
单周期 MIPS 处理器是指所有指令在一个时钟周期内完成的 MIPS 处理器。
尽管不同指令的执行时间可能不同,但基于木桶原理,单周期处理器的时钟周期取决于执行速度最慢的指令。
由于只能在一个时钟周期内完成指令的取出和执行操作, 指令执行过程中数据通路的任何资源都不能被重复使用,都应该是专用的数据通路,需要被多次使用的资源(如加法器)都需要设置多个。
取指令和取操作数操作都需要访问存储器,因此将指令和数据分别存放在指令存储器和数据存储器中,以避免资源冲突。
由于单周期 MIPS 处理器必须在一个时钟周期内完成指令,因此没有设置指令寄存器IR, 而是将指令存储器中取出的指令字直接进行解析, 否则仅取指令到 IR 中就需要一个时钟周期。
R 型运算类指令数据通路
MIPS 中的算术逻辑运算指令属于 R 型指令,下面以加法指令为例。 add rd,rs,rt #RTL 功能描述:R[rs]+R[rt] → R[rd]
指令执行过程中涉及的功能部件主要包括寄存器堆和 ALU。其只需将从指令存储器读出的指令字中的源寄存器字段 rs、rt 分别送入寄存器堆的两个读寄存器编号端 R1#、R2#,将目的寄存器字段 rd 送入寄存器堆的写寄存器编号端 W#,将从寄存器堆读出的两个源寄存器的值经R1、R2 端口输出到运算器;指令字中的 funct 字段决定 AluOp 控制 ALU 进行相应的运算(这里应选择加法),运算结果被送入寄存器堆的写数据端口 WD,时钟上跳沿到来时会将运算结果写入目的寄存器 rd 中。
I 型访存指令数据通路
MIPS 访存指令属于 I 型指令,包括如下取数据和存数据两类,以字访问指令为例。 lw rt,imm16(rs) #RTL 功能描述:M[R[rs]+SignExt(imm16)] → R[rt] sw rt,imm16(rs) #RTL 功能描述:R[rt] → M[R[rs]+SignExt(imm16)]
将指令字中的 rs 字段仍然送入寄存器堆的 R1# 端;将目的寄存器字段 rt 送入寄存器堆的写寄存器编号端 W#;另外要将 16 位立即数 imm16 通过符号扩展单元转换成 32 位后送入 ALU, 与变址寄存器 rs 的值相加形成最终的访存地址后读取数据存储器中的数据并送入寄存器堆写数据端口 WD。
将指令字中的 rs、rt 字段分别送入寄存器堆的 R1#、R2# 端;将 16 位立即数通过符号扩展单元转换成 32 位后送入 ALU,与变址寄存器 rs 的值相加后形成最终的主存地址;将从寄存器堆读出的 rt 寄存器的值送入数据存储器写数据端口 WD。
控制器的功能和工作原理
控制器的结构和功能
主要功能
从主存中取出一条指令,并指出下一条指令在主存中的位置。
对指令进行译码或测试,产生相应的操作控制信号,以便启动规定的动作。
指挥并控制CPU、主存、输入和输出设备之间的数据流动方向。
硬布线控制器
硬布线控制单元图
CU的输入信号来源
经指令译码器译码产生的指令信息。
时序系统产生的机器周期信号和节拍信号。
来自执行单元的反馈信息即标志。
来自系统总线(控制总线)的控制信号,如中断请求、DMA请求。
硬布线控制器的时序系统及微操作
时序系统
时钟周期
每个节拍的宽度正好对应一个时钟周期。
机器周期
机器周期可视为所有指令执行过程中的一个基准时间。
内存中读取一个指令字的最短时间作为机器周期。
在一个机器周期里可完成若干微操作,每个微操作都需一定的时间,可用时钟信号来控制产生每个微操作命令。
指令周期
CPU从主存中取出并执行一条指令的时间称为指令周期。
指令周期常用若干机器周期来表示,一个机器周期又包含若干时钟周期(也称节拍或T周期,它是CPU 操作的最基本单位)。
每个指令周期内的机器周期数可以不等,每个机器周期内的节拍数也可以不等。
原子操作指不能再细化的操作,通常,将 CPU 内部的原子操作称为微操作(μOP) , 将实现 μOP 的部件控制信号称为微操作控制信号,又称为微操作命令(μOPCmd) ,将完成一个 μOP 的时间称为一个节拍,多个 μOP 可以通过不同的节拍信号进行时序控制,来形成 μOP 序列。
微操作命令分析
取指周期的微操作命令
间址周期的微操作命令
执行周期的微操作命令
非访存指令
访存指令
转移指令
CPU的控制方式
同步控制方式
可分为以下几种
定长指令周期
机器周期数固定,节拍数不固定
中央与局部控制相结合
同步控制时序关系比较简单, 控制器设计方便, 但存在慢速部件时 CPU 效率较低的问题。
异步控制方式
各功能部件及操作的时序采用应答机制实现,控制部件发出操作控制信号给功能部件后,必须等到功能部件发出应答信号才能开始下一步的操作。
优点是每个部件都可按各自实际需要的时间工作,没有快者等待慢者的过程,从而提高了系统的速度,但是异步控制方式结构更加复杂。
联合控制方式
对大多数操作控制序列采用机器周期、节拍电位进行同步控制。 而对少数时间难以确定的操作可以采用异步控制方式。
硬布线控制单元设计步骤
微程序控制器
微程序控制的基本概念
设计思想就是将每条机器指令编写成一个微程序,每个微程序包含若干微指令,每条微令对应一个或几个微操作命令。
基本术语
微命令与微操作
一条机器指令可以分解成一个微操作序列,这些微操作是计算机中最基本的、不可再分解的操作。
将控制部件向执行部件发出的各种控制命令称为微命令,它是构成控制序列的最小单位。
微命令和微操作是一一对应的。微命令是微操作的控制信号,微操作是微命令的执行过程。
微指令与微周期
微指令
操作控制字段
顺序控制字段
微周期是指执行一条微指令所需的时间,通常为一个时钟周期。
微指令控制执行相应的一组微操作,实现一条指令的部分功能。
主存储器与控制存储器
主存储器用于存放程序和数据,在CPU外部,用RAM实现。
控制存储器(CM)用于存放微程序,在CPU内部,用ROM实现。
程序与微程序
程序是指令的有序集合。
一条指令的功能由一段微程序来实现。
微程序相当于一个 μOPCmd 序列,微指令相当于 μOPCmd 序列一个步骤中的所有 μOPCmd,微命令相当于一个 μOPCmd。
每个微程序由若干微指令组成
每条微指令对应一组 μOPCmd
微命令指向部件发出的控制信号,与 μOPCmd 一一对应
微程序控制器组成和工作过程
微程序控制器的基本组成
控制存储器
存放各指令对应的微程序。
微指令寄存器
用于存放从CM中取出的微指令,它的位数同微指令字长相等。
微地址寄存器
接收微地址形成部件送来的微地址,为在CM中读取微指令作准备。
微程序控制器的工作过程
注意一段微程序的最后一条微指令的下址字段通常都是指向取指微程序的入口地址,以保证指令执行完毕后可再次进入取指令阶段。
微程序和机器指令
微程序个数应为机器指令数再加上对应取指、间址和中断周期等公共的微程序数。
微指令的编码方式
直接编码(直接控制)方式
每位都代表一个微命令。
字段直接编码方式
把互斥性微命令组合在同一字段中,把相容性微命令组合在不同字段中。 因此,每个子字段所定义的微命令中,同时有效的微命令最多只有一个。
每个字段独立编码,每种编码代表一个微命令且各字段编码含义单独定义。
要通过译码电路后再发出微命令,因此比直接编码方式慢。
字段直接编码最坏情况是直接编码方式。
字段间接编码方式
一个字段的某些微命令需由另一个字段中的某些微命令来解释。
3 种编码方式中,直接编码方式的操作控制字段最长、μOP 控制信号形成最简单, 字段间接编码方式的操作控制字段最短、μOP 控制信号形成最复杂,字段直接编码方式是两者的折中。
微指令的地址形成方式
直接由微指令的下地址字段指出。
根据机器指令的操作码形成。
微指令的格式
水平型微指令
一条水平型微指令定义并执行几种并行的基本操作。
垂直型微指令
一条垂直型微指令只能定义并执行一种基本操作。
混合型微指令
微程序控制单元的设计步骤
列出所有的 μOPCmd 序列
设计微指令格式
编制微程序
设计相关电路
动态微程序设计和毫微程序设计
假如能根据用户的要求改变微程序则这台机器就具有动态微程序设计功能。
若硬件不由微程序直接控制,而是通过存放在第二级控制存储器中的毫微程序来解释的这个第二级控制存储器就称为毫微存储器,直接控制硬件的是毫微微指令。
硬布线和徵程序控制器的特点
异常和中断机制
异常和中断的基本概念
由CPU内部产生的意外事件被称为异常。
由来自CPU外部的设备向CPU发出的中断请求被称为中断。
异常和中断的分类
异常的分类
故障(Fault)
自陷(Trap)
陷阱通常在指令执行结束时检测,一旦检测到陷阱,立即进行异常处理。
系统调用指令、条件自陷指令(如MIPS中的teq、teqi、tme、tnei等)等都属于陷阱指令。
在单步调试模式下每条普通指令都可以作为自陷指令产生自陷异常,自陷异常是由自陷指令执行触发的,类似函数调用,不存在程序断点,执行这些指令就会无条件或有条件地调用操作系统内核程序并执行,执行完毕后返回自陷指令的下一条指令执行。(当自陷指令是转移指令时, 并不是返回到下一条指令执行,而是返回到转移目标指令执行。)
终止(Abort)
随机出现的使得 CPU 无法继续执行的硬件故障,和具体指令无关。
内部异常的检测是由CPU内部逻辑实现的。不必通过外部的某个信号通知CPU。
中断的分类
可屏蔽中断
关中断时可屏蔽中断无法得到 CPU 的响应。
不可屏蔽中断
不可屏蔽中断在关中断模式下也需要响应。
异常和中断响应过程
关中断
保存断点和程序状态
识别异常和中断并转到相应的处理程序
指令流水线
指令流水线的基本概念
从两方面提高处理机的并行性
时间上的并行技术
流水线技术
空间上的并行技术
超标量处理机
指令流水的定义
指令的执行过程
取指(IF)
从指令存储器或Cache中取指令
译码/读寄存器(D)
操作控制器对指令进行译码,同时从寄存器堆中取操作数
执行/计算地址(EX)
访存(MEM)
对存储器进行读写操作
写回(WB)
将指令执行结果写回寄存器堆
流水线设计的原则是,指令流水段个数以最复杂指令所用的功能段个数为准。
流水线的表示方法
流水线的基本实现
流水寄存器的引入使各段中的指令可以在时间上并行。
流水线的数据通路
在图中虚线位置加入长条形的流水寄存器部件。
注意 WB 段的后面没有流水寄存器,但该段的数据最终写回到了寄存器堆中。 程序计数器 PC 也可以看作一个流水寄存器,为 IF 段取指令提供数据。
ID 段的寄存器堆属于比较特殊的功能部件,其在 ID 段负责读取寄存器操作数的操作,读操作属于组合逻辑。 同时,ID 段的寄存器堆还负责 WB 段的指令执行结果的写回操作,写入操作需要时钟配合,是时序逻辑。
寄存器堆写寄存器编号 W# 端口的输入来源是根据 ID 段的指令字由 RegDst 信号控制多路选择器进行选择的;而写数据 WD 却来自 WB 段,也就是写入地址和写入数据分属不同的指令,这会造成数据紊乱。
首先调整 ID 段多路选择器输出的写寄存器编号 WriteReg# 的输出位置,其不再送入寄存器堆的 W# 端,而是直接送入 ID/EX 流水寄存器中锁存,并逐段依次向后传递到 WB 段;最后由 WB 段的 MEM/WB 流水寄存器送回到寄存器堆的写寄存器编号 W# 端口。注意图中 ID 段的多路选择器略微调整了位置。
不同的流水寄存器锁存传递的数据信息并不相同
IF/ID 流水寄存器需要锁存从指令存储器取出的指令字以及 PC+4 的值。
ID/EX 流水寄存器需要锁存从寄存器堆中取出的两个操作数 RS 和 RT(指令字中 rs、rt 字段对应寄存器的值)与写寄存器编号 WriteReg#,以及立即数符号扩展的值、PC+4 等后段可能用到的操作数。
EX/MEM 流水寄存器需要锁存 ALU 运算结果、数据存储器待写入数据 WriteData、写寄存器编号 WriteReg# 等数据。
MEM/WB 流水寄存器需要锁存 ALU 运算结果、数据存储器读出数据、写寄存器编号 WriteReg# 等数据。
流水线的控制信号
控制信号分类
流水线的执行过程(以从数据存储器写入寄存器指令为例)
取指(IF)
虽然 lw 指令在后续功能段内并不会使用 PC+4,但 PC+4 还是会传送给 IF/ID 流水寄存器,以备其他指令(如 beq)使用。
时钟到来时指令字将锁存在 IF/ID 流水寄存器中,同时 PC 更新为 PC+4 的值。
译码/读寄存器(ID)
ID 段由操作控制器根据 IF/ID 流水寄存器中的指令字生成后续各段需要的操作控制信号并向后传输
另外 ID 段还会根据指令字中的 rs、rt 字段读取寄存器堆中的 rs 和 rt 寄存器的值 RS、RT。
符号扩展单元会将指令字中的 16 位立即数符号扩展为 32 位。
多路选择器根据指令字生成指令可能的写寄存器编号 WriteReg#(有些指令并不需要写寄存器)。
这 4 个数据将连同顺序指令地址 PC+4 一起传输给 ID/EX 流水寄存器。
执行/计算地址(EX)
对 lw 指令来说, EX 段主要用于计算访存地址,将 ID/EX 流水寄存器中的 RS 值与符号扩展后的立即数相加得到的访存地址送入 EX/MEM 流水寄存器。
EX 段还需要计算分支目标地址,生成分支跳转信号 BranchTaken。
ID/EX 流水寄存器中 RT 的值会在 MEM 段作为写入数据使用,所以 RT 的值会作为写入数据 WriteData 送入 EX/MEM 流水寄存器。
ID/EX 流水寄存器中的写寄存器编号WriteReg# 也将直接传送给 EX/MEM 流水寄存器。
访存(MEM) (读或写)
主要根据 EX/MEM 流水寄存器中锁存的 ALU 运算结果——访存地址,写入数据和内存读写控制信号 MemWrite 对存储器进行读或写操作。
EX/MEM 流水寄存器中的 ALU 运算结果、WriteReg#、数据存储器读出的数据都会被送入 MEM/WB 流水寄存器的输入端。
写回(WB)
WB 段从 MEM/ WB 流水寄存器中选择 ALU 运算结果或内存访问数据写回到寄存器堆的指定寄存器 WriteReg# 中。
流水线中各功能段并不区分指令的功能,所有数据信息和操作控制信号都来自段首的流水寄存器输出,所以只要是后续功能段有可能要用到的数据和操作控制信号都要向后传递。
流水线的冒险与处理
结构冒险
多条指令在同一时钟周期都需使用同一操作部件引起的冲突称为结构冲突。
计算 PC+4、计算分支目标地址、运算器运算都需要使用运算器。
访问指令和访问数据都需要使用存储器。
ID 段读寄存器与 WB 段写寄存器的操作也存在结构冲突,但由于 MIPS 寄存器堆的读写逻辑是完全独立的逻辑,读写地址和数据均通过不同的端口进入,读写逻辑可以并发操作,因此这种结构冲突并不存在。
解决方法
采用独立的指令存储器和数据存储器。
阻塞程序计数器 PC,使 IF 段暂停一个时钟周期,下一个时钟到来时同步清空 IF/ID 流水寄存器,进入 ID 段的是一个空操作(全 0 的 MIPS 指令相当于空操作),等到 Load 指令访存操作结束以后,IF 段重新启动。
数据冒险
当前指令要用到先前指令的操作结果,而这个结果尚未产生或尚未送达指定的位置,会导致当前指令无法继续执行,这称为数据冲突。
两条指令之间可能引起的数据冲突如下
先写后读冲突(RAW)
如果指令 I2的源操作数是指令 I1的目的操作数,这种数据冲突被称为先写后读冲突。
当指令按照流水的方式执行的时候,由于指令 I2要用到指令 I1的结果,如果指令 I2在指令 I1将结果写寄存器之前就在 ID 段读取了该寄存器的旧值,则会导致读取数据出错。
先读后写冲突(WAR)
如果指令 I2的目的操作数是指令 I1的源操作数,这种数据冲突被称为先读后写冲突。
这种数据相关对指令的执行不构成任何影响。
写后写冲突(WAW)
如果指令 I2和指令 I1的目的操作数是相同的,这种数据冲突被称为写后写冲突。
当指令按照流水的方式执行的时候,这种写后写冲突对指令的执行也没有影响。
解决的办法
硬件阻塞(stall)和软件插入“NOP”指令
寄存器 RAW 冒险的处理
数据旁路技术
如存在数据相关,EX 段的寄存器操作数 RS、RT 就是错误数据,正确数据应来自 MEM、WB 段指令的目的操作数,而这些指令已经通过了 EX 段完成了运算。
除 Load 类访存指令外,目的操作数都已实际存放在 EX/MEM、MEM/WB 流水寄存器中, 可以直接将正确的操作数从其所在位置重定向(Forwarding)到 EX 段合适的位置(也称为旁路 Bypass)。
无须插入气泡,可以解决大部分的数据相关问题,避免插入气泡引起的流水线性能下降,大大优化流水线性能。
指令编译优化,调整指令顺序
控制冒险
当流水线遇到分支指令或其他会改变 PC 值的指令时,在分支指令之后载入流水线的相邻指令可能因为分支跳转而不能进入执行阶段,这种冲突称为控制冲突,也称为分支冲突。
解决办法
对转移指令进行分支预测,尽早生成转移目标地址。
预取转移成功和不成功两个控制流方向上的目标指令。
加快和提前形成条件码。
提高转移方向的猜准率。
流水线的性能指标
流水线的吞吐率
流水线的加速比
高级流水线技术
超标量流水线技术
CPI<1
在每个时钟周期内可同时并发多条独立指令,即以并行操作方式将两条或两条以上指令编译并执行。
要求处理机中配置多个功能部件和指令译码电路,以及多个寄存器端口和总线,以便能实现同时执行多个操作。
超流水线技术
流水线功能段划分得越多,时钟周期就越短,指令吞吐率也就越高,因此超流水线技术是通过提高流水线主频的方式来提升流水线性能的。
在原来的时钟周期内,功能部件被使用3 次,使流水线以3倍于原来时钟频率的速度运行。
CPI=1
超长指令字技术
采用多条指令在多个处理部件中并行处理的体系结构,在一个时钟周期内能流出多条指令。
多处理器的基本概念
SISD、SIMD、MIMD的基本概念
单指令流单数据流(SISD)结构
单指令流多数据流(SIMD)结构
多指令流单数据流(MISD)结构
多指令流多数据流(MIMD)结构
硬件多线程的基本概念
细粒度多线程
粗粒度多线程
同时多线程
多核处理器的基本概念
共享内存多处理器的基本概念
即使这些系统共享同一个物理地址空间,它们仍然可在自己的虚拟地址空间中单独地运行程序。
两种类型
统一存储访问(UMA)多处理器
非统一存储访问(NUMA)多处理器