Presentation is loading. Please wait.

Presentation is loading. Please wait.

第二章 微处理器结构与技术.

Similar presentations


Presentation on theme: "第二章 微处理器结构与技术."— Presentation transcript:

1 第二章 微处理器结构与技术

2 第一节 微处理器结构 一、8086 CPU结构回顾 *特征:16位字长、实地址模式存储管理、指令串行执行
第一节 微处理器结构 一、8086 CPU结构回顾 内部 总线 控制 指令 队列 外部 译码 通用寄存器组 ALU 段寄存器组 指令指针寄存器 标志寄存器 内部暂存器 总线控制逻辑 地址加法器 MEM I/O接口 *特征:16位字长、实地址模式存储管理、指令串行执行 *指令执行时间:T=T取指+T译码+T取操作数+T执行+T写回 *系统瓶颈:①指令串行执行,②CPU-MEM速差大 回下页

3 二、CPU结构与技术发展 1、操作级结构与技术的发展 *优化方法: 改进部件—优化参数(如机器字长)、增加功能
改进存储系统—增设Cache、采用虚拟存储器,改善系统总线(如数量、宽度及时钟频率)、传输模式 内部总线 控制器 指令队列 BIU 外部 总线 译码器 寄存器组 加法器 浮点部件 MMU+TLB I-Cache D-Cache 乘法器 转移部件 32bit 转上页

4 提高部件利用率—采用流水线及超级流水线技术 ├→多功能流水线 --指令系统要求 └→动态流水线 --性能/价格要求
├→多功能流水线 --指令系统要求 └→动态流水线 --性能/价格要求 Tc 普通流水线:ILP(1,1) 1 2 3 n WB Ex2 Ex1 OF ID IF 说明:ILP(m,n)--m为同时启动的指令或操作,n为每个Tc启动次数 Tc 超级流水线:ILP(1,2) WB Ex2 Ex1 OF ID IF 1 2 3 4 5 6 n ILP—Instruction-Level Parallelism (指令级并行) *需解决问题:结构冒险、数据冒险及控制冒险 *可优化空间:进一步提高部件利用率(如EX1与EX2) 回下页

5 *优化方法:用VLIW、超标量、SIMD等技术开发并行性
2、指令级结构与技术的发展 *优化方法:用VLIW、超标量、SIMD等技术开发并行性 指令中操作字段: LD/ST1 LD/ST2 FADD FMUL RF (寄存器堆) VLIW 结构 示例: Tc VLIW流水线:ILP(2,1) 1 2 3 n WB Ex2 Ex1 OF ID IF VLIW—Very Long Instruction Word(超长指令字) VLIW需解决问题—目标代码效率(即编译程序的效率) 转上页 回下页

6 超标量需解决问题— ⑴并行I、D存取 ⑵数据冒险 SIMD需解决问题— ⑴数据的存取宽度 ⑵支持数据类型 超标量流水线:ILP(2,1)
Tc 超标量流水线:ILP(2,1) 1 3 5 n-1 2 4 n WB2 WB1 EX2 EX1 OF2 OF1 ID2 ID1 IF2 IF1 超标量需解决问题— ⑴并行I、D存取 ⑵数据冒险 Tc SIMD流水线:ILP(2,1) 1 2 n WB EX OF ID IF 11 21 n1 12 22 n2 SIMD需解决问题— ⑴数据的存取宽度 ⑵支持数据类型 MMX—MultiMedia eXtensions(多媒体扩展) SSE—Streaming SIMD Extensions(单指令多数据流式扩展) 转上页 回73页 回80页

7 *优化方法:用多线程(MT)、超线程(HT)技术提高并行等级
3、程序级结构与技术的发展 *优化方法:用多线程(MT)、超线程(HT)技术提高并行等级 ALUs + CU Cache PC REGs PSW 单线程CPU ALUs + CU Cache PC REGs PSW 多线程CPU ALUs +CU Cache PC REGs PSW 超线程CPU Logical CPU Pointer P1 P2 P3 OS t 单线程CPU 多线程CPU 超线程CPU MT—Multi-Threading,有粗粒度、细粒度、SMT(Simultaneous Multi-Threading)三种 HT—Hyper-Threading,MT的一种类型,即HT=SMT 回下页

8 *优化方法:用多CPU、多核CPU技术开发物理并行性
Core L1 Cache L2 Cache BIU Dual CPU (如Dual Xeon) Core 0 Core 1 Dual Core CPU (如Pentium D 800) Core 2 Duo CPU (如Core 2 Duo E6300) 超线程CPU—多个逻辑CPU(要求CPU资源使用不冲突) 多 核 CPU—多个物理CPU(CPU资源使用不会冲突) 转上页

9 三、微机系统总体结构 *结构与组成:指令系统—由CU、PU、RF实现 存储系统—由MEM、L1$、L2$实现
L1I$ L2$ I/O L1D$ BIU SYS BUS FSB 程序执行—存储、执行(指令系统完成)两部分; 存储—ROM、DISK 执行—ALU、CU 性能—RAM、Cache *结构与组成:指令系统—由CU、PU、RF实现 存储系统—由MEM、L1$、L2$实现 I/O系统—包括I/O方式及接口、总线等 中断系统—包括中断机构、中断控制器等

10 四、指令系统设计概述 *指令系统: 组成—由若干种机器指令格式组成 指令格式相关参数—软硬件间需约定的内容 1、设计内容
④A1/A2/X? ③地址个数? ②OPD类型、长度? ①操作类型? OP A1 A2 目标OPD←(A1) OPER (A2) ⑥下条指令地址? ⑤OPD地址? 1、设计内容 *指令集结构:显式操作数个数、存放部件、REG数量等 *指令集功能:支持的操作 *数据表示:支持的数据类型(含格式、参数、操作处理) *寻址方式:部件编址单位及方式,操作数寻址方式种类 *指令格式:操作码编码、指令字格式

11 *代码效率:对软件的支持程度(减少指令数及指令长度)
2、性能指标 *代码效率:对软件的支持程度(减少指令数及指令长度) *执行效率:对硬件的支持程度(减少译码时间及执行时间) 减少指令数—指令功能强、地址码个数多, 地址范围大、寻址方式多、对称性好等 缩短指令长度—地址码个数少、范围小,冗余空间小等 减少译码时间—指令格式规整、地址码并行译码、 操作数地址形成简单等 减少执行时间—指令功能简单,存/取操作数快速 思考答案: 1)数据表示决定REG长度,操作处理决定ALU的功能; 2)指令集风格分CISC/RISC、面向REG/累加器/存储器/堆栈等,决定系统的设计导向; 3)寄存器容量由编译程序及OS需求决定; 4)指令格式设计决定了CU的功能。 3、设计及优化 *设计:按需求进行操作码、地址码设计 *优化:按指令集风格进行优化设计 思考:指令系统与CPU部件及其它子系统的关联?

12 五、I/O系统设计概述 1、I/O系统设计 *I/O性能:连接特性,容量,响应时间、吞吐率; 可靠性、可用性
*I/O方式组织:支持的I/O方式(程序控制、DMA、通道、IOP)的种类及参数 2、总线设计 *设计内容:流量(带宽)、级数(速度差异归类)的选择 说明—总线标准、数据通路带宽、A/D复用等属于组成内容 连接特性—哪些I/O设备可和计算机系统相连接 容量—I/O系统可容纳的I/O设备数 可靠性—用平均无故障时间MTTF表示 可用性--=MTTF/(MTTF+MTTR),MTTR为平均修复时间 要求:掌握计算机相关子系统原理及形成系统概念 提示:参考《计算机系统结构》教材及课件

13 *中断方式:外设与CPU并行(T并行=T传输一个字), CPU-外设间IO
3、DMA方式及通道方式原理 (1)DMA方式的基本思想 *中断方式:外设与CPU并行(T并行=T传输一个字), CPU-外设间IO 设备启动 t CPU I/O接口 I/O设备 事务B程序 主程序 接收操作 IOW指令(D1) 监视就绪 启动设备 操作实现 转发 接收设 操作 备状态 设备启动 IOW指令(D2) 中断程序 操作实现 接收操作 转发 接收设 操作 备状态 监视就绪 启动设备 事务B程序(续) 主程序 回下页 回17页

14 *DMA方式:外设与CPU并行(T并行=T传输一组字), MEM-外设间IO
接口 外设 监视就绪 t 设备启动 IOW指令 (启动设备) 接收传送需求 接收启动 启动设备 IOW指令串 (传送需求) 事务B程序 等待设备就绪 中断程序 D1(输出) 操作实现 接收D1 传送控制1 中转 接收设 操作 备状态 D2(输出) 操作实现 接收D2 传送控制2 中转 接收设 操作 备状态 监视就绪 设备启动 启动设备 启动I/O 接口需求—MAC及WC,IO控制逻辑, I/O接口功能,中断请求/响应 回下页 转上页

15 CPU执行I/O指令,向DMA接口、外设/接口发送需求
主存 中断控制器 DREQ DACK HRQ HLDA EOP# *DMA传送: 硬件实现 DMA接口请求总线控制权、控制数据传送, 实现循环(自减+结束判断) *DMA后处理: --软硬件实现 DMA接口发出结束信号,外设/接口提出中断请求, CPU进行传送结束处理(含下次传输的启动) 转上页 回下页

16 *DMA控制器组成:(MAC+WC)s、状态/控制REG、控制逻辑等 *外设/接口的DAM逻辑:DMA传送需中断请求逻辑支持
I/O接口1 CPU HRQ HLDA 主存 中断控制器 I/O接口2 INTR INTA EOP# DREQ/DACK IREQ *DMA控制器组成:(MAC+WC)s、状态/控制REG、控制逻辑等 *外设/接口的DAM逻辑:DMA传送需中断请求逻辑支持 数据缓冲 /锁存器 控制REG 数据总线缓冲器 地址锁存器 内部地址译码电路 IOW# IOR# CS# 数据总线 地址总线 DREQ DACK EOP# 状态REG 信号转换逻辑 DMA请求逻辑 IREQ DMA方式 中断请求逻辑 内部控制逻辑 中断 方式 外设 转上页

17 *I/O通道定义:代替CPU 管理与控制I/O传送的I/O控制器
(4)通道方式的基本思想 *I/O通道定义:代替CPU 管理与控制I/O传送的I/O控制器 *通道方式:CPU提出需求(编写通道程序), I/O通道组织并完成I/O操作(执行通道程序) CPU MEM I/O 通道 外设 MEMW指令串 (写通道程序) 事务B程序 IOW指令 (启动通道) 收通道程序 接收启动 启动 收OP 监视就绪 启动设备 收D2 中转 接收设 操作 备状态 D2(出) 控制 D1(出) 执行通道程序(功能较强) 收OP 启动 等待 监视就绪 启动设备 收D1 控制 中转 接收设 操作 备状态 程序(出) *I/O通道的功能:①接收I/O指令,②执行通道程序,③组织与控制I/O传送,④获取外设状态、形成通道状态,⑤报告通道状态及外设中断请求 转13页

18 (a)用户程序执行访管指令转入I/O管理程序
(5)通道方式的基本过程 *通道启动: CPU软件实现 (a)用户程序执行访管指令转入I/O管理程序 (b)I/O管理程序完成通道程序编写并启动通道 操作码 通道号 设备号 交换长度 主存首址 访管指令: 用户程序 访管指令 管理程序 编制通道程序 的程序段 置通道地址字 启动I/O通道 返回指令 CPU执行 说明:①置通道地址字—将通道程序入口地址置入“通道程序入口表” ②启动I/O通道—触发通道准备执行通道程序,失败时结束操作 通道执行 通道程序 通道指令串 断开通道指令 程序结束指令 通道程序入口表 入口地址 有效位 1 n 存放在主存中 回下页

19 I/O通道执行通道程序,译码后组织及完成指定的I/O操作(故I/O通道又称为通道处理机)
*通道传送: 通道软硬件实现 I/O通道执行通道程序,译码后组织及完成指定的I/O操作(故I/O通道又称为通道处理机) 用户程序 访管指令 管理程序 编制通道程序 的程序段 置通道地址字 启动I/O通道 返回指令 通道程序 断开通道指令 程序结束指令 CPU执行 通道执行 控制I/O操作的完成 通道控制器 通道指令REG 指令译码器 中断请求 中断响应 通道传送结束中断处理程序 *通道结束: —CPU软件实现 I/O通道执行完通道程序后,向CPU提出中断请求,CPU执行管理程序的相关程序进行结束处理(登记或异常处理) 转上页

20 △通道传送过程小结: … 用户程序 管理程序 通道程序 CPU执行 通道执行 CPU运行用户程序 通道运行通道程序(主存中) 通道硬件
中断请求 中断响应 通道传送结束中断处理程序 用户程序 访管指令 管理程序 编制通道程序 的程序段 置通道地址字 启动I/O通道 返回指令 通道程序 断开通道指令 程序结束指令 CPU执行 通道执行 控制I/O操作的完成 通道控制器 通道指令字 指令译码器 CPU运行用户程序 通道运行通道程序(主存中) 通道硬件 I/O访管指令 编制通道程序 执行通道程序 组织I/O操作 产生中断请求 响应中断请求 登记或处理 启动I/O通道指令 CPU运行I/O管理程序

21 I/O通道的功能—具有“CPU”和I/O接口的双重功能
(6)通道方式的硬件组织 *具有I/O通道的系统结构:4级结构 I/O通道的功能—具有“CPU”和I/O接口的双重功能 CPU MEM 设备控制器 I/O通道 外设 通道BUS *I/O通道组成: “CPU”功能—与CPU类似,由译码器、控制器等组成 I/O接口功能—与I/O接口类似,由缓冲器、控制逻辑及信号转换等组成 I/O控制功能—慢速通道,通常由查询/中断接口组成, 快速通道,通常由DMA控制器组成 ※DMA通道:采用DMA方式进行传送控制的I/O通道

22 第二节 存储系统 一、层次结构存储系统设计原理 1、层次结构存储系统产生原因 *存储器性能指标:容量(S)、速度(1/T)、价格(C)
第二节 存储系统 一、层次结构存储系统设计原理 1、层次结构存储系统产生原因 *存储器性能指标:容量(S)、速度(1/T)、价格(C) *用户需求:大容量、高速度、低价格 特征— 大容量 高速度 低价格 矛盾 *救命稻草:程序访问局部性原理 *解决方案: 近期使用的数据放在“前方”存储器(快而小)中, 其余数据放在“后方”存储器(慢而大)中

23 … 2、层次结构存储系统 *层次结构:用多种类型存储器的组合实现 Mn M2 M1 CPU
其中—ci>ci+1,TAi<TAi+1,SMi<SMi+1 CPU M1 M2 Mn *信息存储:从M1→Mn,前者中信息是后者中信息的副本 *访问方法:CPU只访问M1,M2~Mn通过层间辅助管理机构透明地(相对于CPU)交换数据 回下页

24 c=(c1SM1+…+cnSMn)/(SM1+…+SMn) ②命中率H— H=R1/(R1+…+Rn),Ri为数据在Mi中访问到的次数
*层次系统性能指标: ①每位平均价格c— c=(c1SM1+…+cnSMn)/(SM1+…+SMn) ②命中率H— H=R1/(R1+…+Rn),Ri为数据在Mi中访问到的次数 ③平均访问时间TA— TA=HTA1+(1-H)TA2,TA2=H’TA2’+(1-H’)TA3,… 或TA=TA1命中+FA1TA1失效,TA1失效=TA2命中+FA2TA2失效,… *预期目标:① c≈cn ② TA≈TA1 注—达到目标①②后,容量变化不影响性能 *预期目标的实现要求: 目标①--SMi<<SMi+1,即存储器容量差较大; ci>>ci+1,即TAi+1/TAi较大(访问时间差较大) 目标②--H 较大(接近于1.0) 转上页

25 按冯·诺依曼模型要求,CPU直接访问的是主存; 围绕主存的层次结构一般有“Cache-主存-辅存”三层
3、层次结构存储系统设计 (1)层次数量的设计 按冯·诺依曼模型要求,CPU直接访问的是主存; 围绕主存的层次结构一般有“Cache-主存-辅存”三层 *“Cache-主存”存储层次: 通过设置高速缓冲存储器,解决主存的速度不够问题 Cache 主存 辅助硬件 CPU Cache-主存 层次 *“主存-辅存”存储层次: 利用大容量辅存,解决主存的容量不够问题 辅存 主存 辅助软硬件 CPU 主存-辅存 层次

26 *层次管理机构:各MEM使用自己的阵列空间,各MEM需设置管理单元(CMU、MMU、AMU)进行层间数据交换管理
(2)层次结构的组织 *层次管理机构:各MEM使用自己的阵列空间,各MEM需设置管理单元(CMU、MMU、AMU)进行层间数据交换管理 *CMU组织方式:有虚地址CMU及物理地址CMU两种方式 CPU 主存 Cache 辅存 (a) 虚地址CMU方式 CMU D/I (CPU Bus) MMU AMU (I/O Bus) (Mem Bus) 虚拟地址 CPU Cache 虚拟 地址 CMU MMU AMU D/I (I/O Bus) (Mem Bus) (CPU Bus) (b) 物理地址CMU方式 辅存 主存 CMU常采用物理地址CMU方式(易于实现以主存为中心的结构) 回下页

27 *MU的实现方式设计:CMU全部用硬件实现,MMU部分用硬件实现,AMU全部用软件实现
(3)层次结构的性能设计 *MU的实现方式设计:CMU全部用硬件实现,MMU部分用硬件实现,AMU全部用软件实现 思考—为什么这么做? *层间信息交换单位设计: 信息交换时间—Tn个字=n×(T地址+T存取+T传输), T地址、T存取及T传输取决于MEM及总线 交换单位设计—优化的Tn个字=T地址+n×(T存取+T传输), T地址、T存取及T传输越大,n越大, n通过量化测试得到 思考:Cache、主存、辅存空间的数量级不同→各存储空间映射表大小数量级不同; Cache、辅存的目的不同,实现方法不同(性能/价格为原因)。 CPU 主存 Cache 辅存 字/次 (如4B) 页/次 (如4KB) 块/次 (如32B) 注意:Tn个字≮n*T1个字时n=1(∵H<1) 转上页

28 (4)层次结构中存储器的组织 --组成原理较关注 *存储阵列空间管理:存储器有两种信息交换粒度,按较大交换粒度进行管理
(4)层次结构中存储器的组织 --组成原理较关注 *存储阵列空间管理:存储器有两种信息交换粒度,按较大交换粒度进行管理 本层存储器 上层存储器 下层存储器 *组成:存储阵列、控制器、层次辅助管理机构(MU) 比较器 映射表 Data Cmd Addr(主存地址) 命中 存储 阵列 控制器 不命中 不命中处理 回下页

29 *层次存储器处理访问请求过程: 下层地址→本层地址 命中? Y 找到? 读/写? 写本层MEM数据到下层MEM(若改过) (与下层交换粒度)
N 上层请求完成 上层请求到达 腾出一个位置 用下层地址查映射表 找一空闲位置 读下层MEM数据到本层MEM 接收上层MEM数据到本层MEM (与上层交换粒度) 发送本层MEM数据到上层MEM 写本层MEM数据到下层MEM 地址映像规则 替换算法 写策略 查找方法 地址变换规则 转上页

30 (5)层次结构中存储器的性能设计 *实现技术的性能设计: 选择较合适的地址映像及变换规则、查找算法、替换算法、写策略,并有效地实现 讨论—共享Cache的实现技术有无变化? *提高命中率的设计: 优化存储器结构、参数及访问处理过程 (见Cache部分性能优化方法) *减小层间辅助开销的设计: 优化存储器结构、访问处理过程及层次结构管理方法 (见Cache部分性能优化方法)

31 二、高速缓冲存储器 1、结构与工作原理 *结构与组成:主要由存储阵列、目录表、控制器等组成 *空间管理:按块进行管理,用目录表存放管理信息
*访问过程: 主存地址(自处理机) 地址映像及变换 主存 替换算法 Cache阵列 主存块号 块内地址 主存地址 块宽度 去处理机 数据总线 字宽度 成功 还可装入 已装不进 访问主存 访问主存 替换Cache 装入Cache Cache块号 块内地址 Cache 地址 失败 回下页 回34页

32 *地址映像及变换规则:直接映射、全相联、组相联 *查找方法:快速按地址查找、按内容相联查找 *替换算法:RAND、FIFO、LRU
2、相关实现技术 组成原理关注的重点 *地址映像及变换规则:直接映射、全相联、组相联 *查找方法:快速按地址查找、按内容相联查找 *替换算法:RAND、FIFO、LRU *写策略:写命中策略—全写法、写回法、写一次法, 写丢失策略—不按写分配法、按写分配法 3、性能优化方法 系统结构关注的重点 *降低失效率F方法:增加块大小、提高相联度、预取技术、设置Viticm-Cache 地址变换—虚地址→主存地址,主存地址→Cache地址 *减少失效开销方法:读失效优先于写、子块放置、请求字处理、非阻塞Cache、两级Cache、旁侧式Cache技术 *减少命中时间方法:小容量结构简单的Cache、写操作流水化、双独立总线(DIB)结构 转上页 回46页

33 ①I/O设备(如DMA)绕过Cache直接对主存的I/O操作
4、与主存的一致性问题 *不一致性的产生原因: ①I/O设备(如DMA)绕过Cache直接对主存的I/O操作 ②不同CPU对各自Cache中主存数据副本的异步读/写操作 主存 CPU Cache DMA I/On I/O1 *不一致性的解决方案: 禁止法--共享数据禁止进入Cache,或允许进+禁止改; 刷新法--操作后对共享数据进行刷新 *刷新法的实现方法: --Cache控制器实现 根据数据块状态、新操作类型采用一致性协议实现刷新 一致性协议—有写作废和写更新两种类型

34 虚拟存储器 三、虚拟存储器 *虚拟存储器:程序执行时,MEM地址空间=程序地址空间的“存储器”称为虚拟存储器(VM) 1、虚拟存储器组成
CPU 虚拟存储器 1、虚拟存储器组成 *组成原理:由主存及辅存构成、按程序地址访问的存储层次 CPU 主存 虚存-主存 地址变换 不成功处理 虚拟存储器 虚地址空间 (程序空间) 虚存-辅存地址变换 辅存 *虚存实质:是面向程序的存储器模型, 即面向程序的主存-辅存层次管理机构! 回下页 转31页

35 *数据交换单位:虚存-主存间以程序段作为交换单位 *管理信息:用段表指明程序各段在主存中的起始位置
2、虚存的管理方式 (1)段式存储管理 *数据交换单位:虚存-主存间以程序段作为交换单位 *管理信息:用段表指明程序各段在主存中的起始位置 虚存段表 段起始地址 装入位 段长 属性 K 1K K 7K K 段号 1 2 3 虚存页表 主存实页号 装入位 属性 逻辑页号 1 2 3 (2)页式存储管理 *数据交换单位:虚存-主存间以逻辑页作为交换单位 *管理信息:用页表指明程序各段在主存中的起始位置 (3)段页式存储管理 先采用段式管理,再采用页式管理 转上页

36 原始方案—虚存管理表格太大→存放在主存中 优化方案—增加页面大小、增设快表(TLB),快表与慢表并行查找(TLB可采用按内容相联查找)
3、相关实现技术 *地址映像及变换:全相联映像 *查找方法:按地址查找 *替换算法:类LRU *更新策略:写回法(+按写分配法) 4、性能优化方法 *快速地址变换技术: 原始方案—虚存管理表格太大→存放在主存中 优化方案—增加页面大小、增设快表(TLB),快表与慢表并行查找(TLB可采用按内容相联查找) *变换失效优化处理: 将变换失效视为异常,立即进行处理 回下页

37 *页式虚拟存储器访问过程: 主存 辅存 CPU核心 快表TLB CPU 虚存信息 慢表(虚-主) 主存 当前程序PCB 虚-辅映射表
缺页中断程序 主存 CPU 辅存 文件目录表(文件-辅存) 文件内容 虚-辅映射表 快表TLB 慢表(虚-主) 虚存信息 当前程序PCB I/O通道 主存 辅存 虚拟地址 逻辑页号 页内地址 访问请求 主存地址 物理页号 页内地址 辅存地址 磁盘机号 柱面号 磁头号 块号 虚存-辅存地址变换 失败 系统异常 成功 辅存实块号 访问完成 被替换页已改 主存未满 替换算法 物理页号 找空闲页 已满 缺页异常 调入页 虚存-主存 地址变换 (查TLB) (查慢表) 中止 转上页

38 5、虚存的保护 *保护的种类:区域保护、访问保护 (1)区域保护及实现 *保护方式:映像表保护、环保护、键保护 *映像表保护:程序只能访问私有映像表对应的主存页/段 实现—系统映像表+私有映像表,更多区域信息类型 *环式保护:程序分为不同层(环),外层不可直接访问内层 实现—程序的自身环号+各信息区域的访问所需环号 *键保护:程序中信息区域设置锁,访问时需先得到钥匙 实现—硬件或OS负责传送钥匙 (2)访问保护及实现 *保护方式:读(R)、写(W)、执行(E) *实现方法:程序各信息区域设置允许访问类型(在映像表中)

39 第三节 标量流水技术 一、标量流水基本原理 1、工作原理 *原理:细化指令执行过程,使指令执行各子过程均可重叠,以提高指令执行速度
第三节 标量流水技术 一、标量流水基本原理 1、工作原理 *原理:细化指令执行过程,使指令执行各子过程均可重叠,以提高指令执行速度 n n+4 拍(Δt) I1 段(m) S5(如WB) S4(如EX) S3(如OF) S2(如ID) S1(如IF) I2 I3 I4 I5 说明:T指令=m*Δt,拍可为机器周期、节拍(TC)等大小 In 填入 流水 排空 *目标:完成任务时间与操作处理过程(m)无关; 只与提供操作的速度(1/Δt)有关 回下页

40 ①各流水段的操作相互独立,以实现段间重叠 ②各流水段的操作同步进行,以实现段间重叠 ③结构、数据和控制方面的冒险解决,以提高性能
*实现要求: ①各流水段的操作相互独立,以实现段间重叠 ②各流水段的操作同步进行,以实现段间重叠 ③结构、数据和控制方面的冒险解决,以提高性能 *流水线分类(属性): 按处理级别分—操作级,指令级,处理机级 按功能类型分—单功能,多功能 按工作方式分—静态,动态 按连接方式分—线性,非线性 按控制方式分—顺序流动,异步流动 转上页

41 单位时间内能处理的指令条数或输出结果的数量
2、性能分析 (1)吞吐率 单位时间内能处理的指令条数或输出结果的数量 *最大吞吐率: *实际吞吐率: 1 Δt Δt 3Δt Δt 2 3 4 *瓶颈段(△ti最大的段)的处理: 处理方法1—细化瓶颈段(时长与其它段相同或相近) 1 2 3a 4 3b 3c Δt Δt Δt Δt Δt Δt 处理方法2—并联设置多套部件,通过控制器调度 1 Δt Δt Δt 2 3b 4 3a 3c 调度器 3Δt

42 (2)加速比 流水方式速度相对于串行方式速度的比值 当n>>m时,SP≈m *提高加速比的方法:加大流水线深度m (3)效率 流水线中设备的利用率 当n>>m时,E≈1 *提高效率的方法:增加流水线中任务数量n

43 假设流水线各功能段总延迟为t,流水线共分m个段,段间同步锁存延迟为d;功能段总价格为a,每个锁存器价格为b。
(4)流水线最佳段数选择 假设流水线各功能段总延迟为t,流水线共分m个段,段间同步锁存延迟为d;功能段总价格为a,每个锁存器价格为b。 吞吐率: 总价格: C=a+bm 性能/价格: 选择:对m求导,性能/价格PCR为极大值时m最佳 PCR m m0

44 二、流水线冒险及处理 1、结构冒险及处理 (1)冒险类型 指流水线中同一部件或通路同时被不同指令使用的冲突现象 (2)功能部件冲突的冒险处理
内部总线 控制器 指令队列 总线接口BIU 前端 总线 译码器 寄存器组 转移部件 乘法器 加法器 L1 Cache 后端 同时访问REG或MEM产生冲突 1 WB EX OF ID IF 2 3 n (2)功能部件冲突的冒险处理 *方法①:重复设置部件(如设置地址ALU实现PC+1) *方法②:推后使用部件(构成非线性流水线) *选择依据:冲突概率、性能要求 回下页

45 *方法①:采用多总线或专用通路,解决OF与WB REG访问冲突
(3)数据通路冲突的冒险处理 *方法①:采用多总线或专用通路,解决OF与WB REG访问冲突 内部总线 控制器 指令队列 总线接口BIU 前端 总线 译码器 寄存器组 转移部件 乘法器 加法器 L1 Cache 后端 L2 Cache 主存 地址ALU *方法②:L1$采用哈佛结构,降低IF与OF/WB访存冲突概率 内部总线 控制器 指令队列 总线接口BIU 前端 总线 译码器 L1 D-Cache 后端 L1 I-Cache L2 Cache 主存 寄存器组 转移部件 乘法器 加法器 地址ALU 转上页 回下页

46 *方法③:设置存储顺序缓冲器,降低OF与WB访存冲突概率
内部总线 控制器 指令队列 总线接口BIU 前端 总线 译码器 L1 D-Cache 后端 L1 I-Cache L2 Cache 主存 存储顺序缓冲器MOB 寄存器组 转移部件 乘法器 加法器 预取流式缓冲器 地址ALU 原理—改变通路(MOB暂存),错开时间(在L1-D$空闲时写) (实现了“零等待写”) (实现了“读失效优先于写”) *方法④:设置预取流式缓冲器,降低I$与D$失效冲突严重性 *方法⑤:I$及D$串行访问主存,解决IF、OF及WB访存冲突 (D$优先于I$) *选择依据:指令集风格、性能要求,可多选、⑤必选 转上页 转32页

47 指不同指令因操作重叠,引起同一REG或MEM单元的访问次序被改变、导致结果错误的冲突现象
2、数据冒险及处理 指不同指令因操作重叠,引起同一REG或MEM单元的访问次序被改变、导致结果错误的冲突现象 (1)先写后读(RAW)冒险及处理 *方法①:后推法,冲突及后继指令暂停,直到冲突消除 I1 IF ID OF EX WB I IF ID OF EX WB 指令 读R1 写R1 RAW相关示例 I1 IF ID OF EX WB I2 IF ID OF EX WB I IF ID OF EX WB I 读R1 写R1 *方法②:转发法,流水段的结果可直接传到较早流水段 I1 IF ID OF EX WB I2 IF ID OF EX WB I IF ID OF EX WB I 读R1 写R1 OF 相关专用通路 ID IF EX WB 具有相关专用通路的流水线 MUX 回下页

48 *方法③:异步流动(乱序执行)法,后继无冲突指令先执行
若有RAW相关 6段流水线 Ih Ii Ij Ik Im In RAW相关自动消除 可能产生新的相关 (2)先读后写(WAR)、写-写(WAW)冒险及处理 *冒险类型:WAR—上图中,Im所写与Ij所读为同一单元 WAW—上图中,Im所写与Ij所写为同一单元 *处理方法:动态调度方法,设置指令窗口、按序存放多条指令,先检测有无RAW、WAR、WAW相关,再决定执行顺序 转上页

49 指转移型指令引起的无法立即获得目标指令地址的冲突现象
3、控制冒险及处理 指转移型指令引起的无法立即获得目标指令地址的冲突现象 顺序型 I1:CMP R1,R2 IF ID OF EX WB 转移型 I2:JNZ TEST IF ID OF EX WB * *型 Ix:??? IF 需要新PC PC←地址x 指令 (1)控制相关处理方法 *方法①:冻结法,流水线取指段暂停n拍(n=分支指令时长-1) *方法②:延迟分支法,延迟分支=分支指令+n个延迟槽, 延迟分支全部被执行,延迟槽中尽量为有效指令 顺序指令I1~I5 转移指令I6 顺序指令I7~I9 不采用延迟分支技术的目标代码 顺序指令I1~I5中与I6相关的指令 延迟槽(I1~I5中与I6无关的指令或空指令) 采用延迟分支技术的目标代码 回下页

50 *方法③:预测法,预测转移方向、执行该方向指令, 猜错时回头重新执行另一方向指令 静态预测—根据指令类型及寻址方式预测转移方向
动态预测—根据指令执行的转移历史预测转移方向 应用—首次执行时用静态预测法,其余用动态预测法 ※说明:延迟分支法、预测法通常不同时使用! (2)动态预测法的实现 *转移历史保存方法:增设转移目标缓冲器BTB保存信息, BTB通常由小容量Cache构成 ** **   **  aa xy ee …    …    …    … 有效位 转移指令地址 历史位 转移目标地址 …    …    …    … 转上页 回下页

51 ①IF段,用当前PC查BTB,命中时预测PC,否则PC←PC+1
*动态预测实现原理: ①IF段,用当前PC查BTB,命中时预测PC,否则PC←PC+1 取指(IF) 不命中 置PC 查BTB 当前PC 命中 预测转移(PC=ee) 预测不转移(PC=PC+1) 转移历史 动态预测 控制流 ②ID段,对不命中的分支指令,重新预测, IF段预测错误时,进行误预测处理(含置PC) 静态预测 译码(ID) 误预测处理 IF预测错 IF预测对 (PC=反方向) 分支指令 顺序指令 转上页 回下页

52 ③执行后,根据执行的实际转移方向更新转移历史
执行(EX) 静态预测 更新BTB 译码(ID) 误预测处理 IF预测错 IF预测对 (PC=反方向) 预测错误 预测正确 分支指令 顺序指令 取指(IF) 不命中 置PC 查BTB 当前PC 命中 预测转移(PC=ee) 预测不转移(PC=PC+1) 转移历史 动态预测 控制流 *静态预测算法:下表为Pentium采用 相对PC寻址方式 非相对PC寻址方式 预测转移 转移地址比PC小指令 CALL/RET类型指令 预测不转移 转移地址比PC大指令 非CALL/RET类型指令 回下页 转上页 回77页

53 *动态预测算法:饱和计数预测、2级自适应预测(历史模式+计数)
00 01 10 11 不转移 转移 预测: 不转移 转移 XX 分支地址 分支历史 预测 *误预测处理: (a)所需支持—(分支现场的保护及恢复) ①采用后援寄存器保存可能被破坏的状态; ②预测执行只完成到“执行”(EX),不“写回”结果 Pentium采用采用2位饱和计数预测器, Pentium MMX、PII、PIII采用2级自适应局部预测器(4位历史位),局部预测指历史位为同一指令历史 P4采用Agree预测器:2级自适应全局预测器+bias饱和计数器,输出为两者的异或 Pentium M、Core、Core 2采用2级自适应全局预测 (b)误预测处理— 用后援寄存器将流水线各段状态恢复到转移指令取指结束时的状态,并重置PC(预测方向的反方向PC) 转上页 回69页

54 第四节 指令级并行技术 一、指令动态调度技术 *目标:实现异步流动流水方式,提高功能部件的利用率 1、异步流动(乱序执行)基本思想
第四节 指令级并行技术 一、指令动态调度技术 *目标:实现异步流动流水方式,提高功能部件的利用率 1、异步流动(乱序执行)基本思想 取指 译码 取操作数 执行 写回 ALUs 指令缓冲器 取数缓冲器 寄存器组 存数缓冲器 译码器 流水线段: 使用部件: *乱序执行基本思想:采用数据流技术 ALUs (一条指令) 指令缓冲器 (多条指令) 译码器 指令窗口 (几条指令) 操作数就绪 指令 存数缓冲器 寄存器组 取数缓冲器 (按序) (乱序) 地址 回56页

55 *调度原理:使用记录控制器集中记录各功能部件、流水线中各指令、源和目的REG的状态(记分牌),然后进行统一调度
2、集中式动态调度(记分牌算法)技术 *总体结构: 整数部件 浮点加 浮点乘 浮点除 记录控制器 RF OF EX WB IF ID 指令 控制/状态 *调度原理:使用记录控制器集中记录各功能部件、流水线中各指令、源和目的REG的状态(记分牌),然后进行统一调度 *记录控制器工作原理: 记录功能—检测并记录功能部件的使用冲突; 检测并记录REG的RAW、WAR、WAW数据相关 控制功能—根据记录的状态,控制指令流水(有冲突的指令推后进入功能部件,有相关的指令进入后推后执行)

56 3、分布式动态调度(Tomasulo算法)技术 *实现原理:将状态记录与控制 分散到各个功能部件中
*关键技术:寄存器重命名、动态存储器地址判别技术 (1)结构与组织 有分布式指令窗口(含状态记录)、分布式控制机构2个方面 *分布式指令窗口的组织:--指令信息记录方法 组成—有保留站、取数缓冲器、存数缓冲器3种 功能—均可保存多条指令(操作) ALUs (一条I) 译码器 指令窗口 (多条I) 存数部件 寄存器组 取数部件 Addr 存数缓冲器 SDB(多条I) 取数缓冲器 FLB(多条I) ALUs (一条I) 译码器 保留站RS (多条I) 存数部件 寄存器组 FLR 取数部件 转54页 回下页

57 *指令状态表示的组织:--指令操作的状态表示 指令功能的分布式表示— ①指令功能表示为部件操作+数据传递操作
②传递操作表示为数据来源部件与数据接收部件的关联 ③各部件记录自身的操作需求及数据来源部件编号 数据来源部件—指产生源操作数的部件,有FLB/RS 存数缓冲器 SDB(多条I) 取数缓冲器 FLB(多条I) 译码器 (一条I) 寄存器组FLR ALUs 保留站RS (多条I) 注:⑴FLB访存延迟较大,RS不应等待,FLB为数据来源部件(异步输出数据); ⑵ALU所产生的数据与RS中指令位置相对应,RS为数据来源部件; ⑶FLR仅暂存(立即输出)和传递(异步输出)数据,异步输出时刻用其数据来源部件表示,故不是数据来源部件 转上页 回下页

58 数据来源部件:FLB/RS,每行标有站号(从1编号) 数据接收部件:RS/SDB/FLR,每行设立站号项
数据传递操作表示的组织— 数据来源部件:FLB/RS,每行标有站号(从1编号) 数据接收部件:RS/SDB/FLR,每行设立站号项 指令(操作)状态表示的组织— 各部件的状态表记录与之相关的所有操作需求, 状态表中用“忙”位或“有效”位记录操作需求已/未完成 名称 FLR状态表 来源 数据 F0 0→1 0001 ? F1 * 25H F2 1010 名称 SDB状态表 有效 来源 地址 数据 SDB1 0→1 0000 A2 25H SDB2 1010 A3 注:来源=0000表示数据有效 指令串例: F0=[A1] [A2]=F1 F2=F1+5 [A3]=F2 站号 名称 FLB状态表 有效 地址 0001 FLB1 0→1 A1 0010 FLB2 * 站号 保留站RS状态表 有效 操作 S1来源 S1值 S2来源 S2值 1010 0→1 ADD 0000 25H 05H 1011 1000 回下页 转上页

59 *指令窗口间数据通路的组织:--数据传递操作实现方法 采用公共数据总线CDB为宜(便于RAW冒险的转发法实现)
*分布式控制机构的组织:--指令操作控制方法 ①译码时,控制器转化指令操作→部件操作+数据传递, 并保存操作需求及传递关系到各指令窗口 ②各部件查询自身状态表中所有操作需求的数据状态, 各部件自行控制数据已就绪操作的执行 控制 ALUs (一条指令) 指令缓冲器 (多条指令) 译码器 保留站RS 存数缓冲器SDB 寄存器组 FLR (按序) 地址 (乱序) 取指部件 取数缓冲器FLB 取数部件 CDB 回下页 转上页

60 加法器 乘/除法器 保留站 译码器 取指部件 BIU(←→Cache或主存) 取数缓冲器FLB 存数缓冲器SDB 指令队列 寄存器FLR
M1 M2 译码器 站号 0110 0010 0001 取指部件 BIU(←→Cache或主存) 1010 1011 1100 1000 1001 站号 源1值 站号 源2值 控制 地址 控制 取数缓冲器FLB 控制 站号 地址 数据 存数缓冲器SDB 指令队列 公共数据总线CDB F7 F0 忙位 站号 数据 寄存器FLR 采用分布式动态调度的流水线结构图 FLR总线 取数部件 转上页 回下页 回64页

61 *REG的RAW冒险检测及处理: --指令译码时控制器实现 冒险存在条件—指令源操作数(REG)的忙位=1时
(2)动态调度原理 *REG的RAW冒险检测及处理: --指令译码时控制器实现 冒险存在条件—指令源操作数(REG)的忙位=1时 RAW冒险处理—取REG的站号项到当前指令相应部件中 └→直接取源头数据(REG重命名) └→从CDB接收(转发法) 指令串 I1:F1=F0+5 I2:F2=F1+F0 I3:F0=F3+F4 名称 FLR状态表 来源 数据 F0 * 25H F1 F2 站号 保留站RS状态表 有效 操作 S1站号 S1值 S2站号 S2值 1010 1011 → ? →1 ADD H H →1 ADD ? H → ? RAW冒险的消除—CDB上数据有效时(FLB数据到达或EX结束), 各部件控制(站号相同时)接收数据并修改状态 1010 1→0 ADD 0000 25H 05H 1011 1 2AH F1 1→0 1010 2AH F2 1 1011 转上页 回下页 回64页

62 *REG的WAR冒险处理: --指令译码时控制器实现 冒险存在条件—指令源操作数存在时
忙位=0时 忙位=1时 当前指令相应部件 所取内容 REG的数据项 REG的站号项 乱序执行时的效果 不影响当前指令 已转化为RAW相关 (RAW冒险不允许乱序) WAR冒险的消除— 冒险处理时已消除WAR冒险,或转化为RAW冒险 (见上页例) 转上页 回下页 回64页

63 *REG的WAW相关处理: --指令译码时控制器实现 冒险存在条件—指令目的操作数(REG)的忙位=1时
(忙位=0时直接表示操作需求即可) WAW冒险处理—取指令所占RS站号到REG的站号项中 │ └→REG忙位已=1 └→REG只接收最后指令结果(REG重命名) 指令串 I1:F1=F0+5 I2:F1=F0*F2 名称 FLR状态表 来源 数据 F0 * 25H F1 F2 23H 站号 保留站RS状态表 有效 操作 S1站号 S1值 S2站号 S2值 1010 1011 →1 ADD H H → ? → ? →1 ADD H H WAW冒险的消除—冒险处理时已消除WAW冒险 转上页 回下页

64 *动态调度的实现: --RS控制机构随时实现 乱序派遣实现— RS使操作数已就绪的指令被派遣 RAW阻塞法实现—RS使操作数未就绪的指令等待
I1:F1←(FLB1) I2:F1←(F1)*(FLB2) I3:F4←(F2)*(F3) 指令序列 译码时的控制器动作(相关处理) F1站号项←0001 (等待接收FLB1的数据) F1忙位项←1 (操作未完成、数据不可用) M1源1站号项←0001 (等待直接接收FLB1[REG重命名] 通过CDB同时接收[转发法]) M1源2站号项←0010 (等待接收FLB2的数据) F1站号项←1000 (M1站号,只接收M1结果[REG重命名]) F1忙位项←1 (操作未完成、数据不可用) M2源1值项←F2数据项、源2值项←F3数据项 F4站号项←1001(M2站号,接收M2结果) F4忙位项←1 (操作未完成、数据不可用) RS的调度结果:M2(I3)先于M1(I2)执行(乱序派遣[数据流分析]+阻塞法) 转60页 转61页 转62页 转上页

65 *MEM的数据冒险处理: --动态存储器地址判别技术 核心思想—按序完成有冲突的操作! └→MEM是CPU及I/O设备的共享部件
MEM的RAW冒险检测及处理— 译码时控制器实现 冒险存在条件— 指令源操作数(MEM)的地址与SBD中地址相同 需保存到FLB中←┘ └→尚未写 RAW冒险处理—阻塞法,冲突及后继指令被暂停 RAW冒险的消除—SDB中相同地址行完成时(有效位1→0),控制器在FLB中建立相应信息行(有效位、地址等) 按序完成MEM操作--处理器一致性模型 名称 SDB状态表 有效 来源 地址 数据 SDB1 1→0 0000 A2 aa SDB2 * 站号 名称 FLB状态表 有效 地址 0001 FLB1 0→1 A2 0010 FLB2 * 回下页

66 MEM的WAR冒险检测及处理— 译码时控制器实现 冒险存在条件— 指令目的操作数(MEM)的地址与FLB中地址相同
需保存到SDB中←┘ └→尚未读 RAW冒险处理—阻塞法,冲突及后继指令被暂停, 直到FLB中行没有相同地址 MEM的WAW冒险检测及处理— 译码时控制器实现 冒险存在条件— 指令目的操作数(MEM)的地址与SDB中地址相同 需保存到SDB中←┘ └→尚未写 RAW冒险处理—阻塞法,冲突及后继指令被暂停, 直到SDB中行没有相同地址 转上页

67 *结构与组织:增设RS/FLB/SDB(含数据传递关系及状态)
(3)分布式动态调度技术小结 *结构与组织:增设RS/FLB/SDB(含数据传递关系及状态) ALU 指缓 译码器 RS FLR 控制 FLB CDB SDB 控制器 *分布式调度:控制器译码时转化指令操作→部件操作, 各部件随时独立控制本部件的操作 源操作数的REG忙位=0时,REG数据项 REG忙位=1时,REG站号项 目的操作数REG忙位=0时, REG忙位=1时, 源操作数的MEM地址≠SDB中地址时,在FLB中建立新行 MEM地址 = SDB中地址时, 目的操作数MEM地址 = FLB中地址时, MEM地址≠FLB/SDB中地址时,在SDB中建立新行 操作部件RS或源部件FLB站号 →指令目的部件SDB/FLR中 或→指令操作部件RS中 使译码器暂停 指令 →目的FLR的REG站号项、 1→REG忙位

68 *目标:支持多路分支预测技术及数据流分析技术 │ └→可能误猜测←┬→乱序执行←┘ └───────→需解决
4、推测执行技术 *目标:支持多路分支预测技术及数据流分析技术 │ └→可能误猜测←┬→乱序执行←┘ └───────→需解决 (1)推测执行基本思想 *基本思想: ①允许用预测方法取指令; ②允许指令乱序执行,但不写结果; ③必须按序确认后(控制相关已消除)才写结果 指令串示例 I1: CMP F1,F2 I2: JNZ I9 I3: ADD F1,F3 I4: ADD F3,[F4] I5: SUB F5,F1 I1 WB EX OF ID IF I2 I3 I4 I5 I6 猜测正确的时-空图 I7 I8 猜测错误的时-空图 I9 回下页 回69页

69 支持分支预测及乱序执行的流水线基本原理图
*实现原理: ①增设再定序缓冲器(ROB),实现指令窗口、动态调度(乱序执行)及分支预测结果暂存的功能 ②流水线增加“确认”段,按序确认指令(含误预测处理) 支持分支预测及乱序执行的流水线基本原理图 ALUs (一条指令) 指令缓冲器 (多条指令) 译码器 保留站RS 寄存器组FLR 取指部件 取数部件 存数部件 PC 乱序 按序 源地址 取数缓冲FLB 存数缓冲SDB 目的地址 说明:①RS已等价于就绪指令队列,为减少ROB-ALU调度延迟而设置 ②若Cache为非阻塞Cache,则FLB会乱序产生数据 操作数就绪 再定序缓 冲器ROB 乱序 行号 指令窗口 (多条指令) 确认 (一条指令) 按序 程序次序 临时FLR 分支预测BTB 转上页 回下页 回71页

70 按序保存译码后、写结果前所有指令及执行结果
(2)再定序缓冲器ROB *组成:由大小固定的环形队列组成; 按序保存译码后、写结果前所有指令及执行结果 项号 再定序缓冲器(ROB) 有效 指令 源1 源2 目的 状态 地址 1 LD [F1+9] F2 aa 已写回 2 ADD F3 bb F4 cc 已确认 3 SUB F5 dd F6 ? 已派遣 4 JNZ LOOP1 未派遣 5 IMUL F7 ee [F1] 已执行 注:①为实现乱序派遣功能,“源x”域须设置“值”字段 ②为实现暂存结果功能,“目的”域须设置“值”字段 ③ROB项号+“目的值”字段可作为后续指令源操作数部件 *特点:①“源”域及“目的”域取代了FLB和SDB ②用ROB项号代替RS/FLB站号,进行REG重命名 转上页 回72页 回下页 回78页

71 *调度(派遣)原理:RS有空闲位置、有操作数就绪的指令
*推测执行的流水线结构: 加法器 乘/除法器 源1值 源2值 控制 ROB项号 A1 A2 A3 M1 M2 保留站RS 控制 操作 源项号 源地址 源值 目的地址 目的值 F7 F1 F0 数据 寄存器FLR BIU(←→Cache或主存) 译码器 指令队列 项号01 40 公共数据总线CDB 取指部件 取数部件 存数部件 再定序缓冲器ROB 说明:①RS仅用作已就绪指令队列 ②指令按序确认后才写结果 确认(按序) *调度(派遣)原理:RS有空闲位置、有操作数就绪的指令 转69页 转上页

72 ①从ROB中按序取一条指令对应的所有微指令; ②该指令为非“已执行”状态时,确认段被阻塞; ③确认段未被阻塞时,则按确认规则进行确认;
(3)流水线确认段 *确认段工作过程: ①从ROB中按序取一条指令对应的所有微指令; ②该指令为非“已执行”状态时,确认段被阻塞; ③确认段未被阻塞时,则按确认规则进行确认; ④若通过,置该指令为“已确认”状态(可写结果); 否 则,按不通过处理规则进行处理该指令 *确认规则及不通过处理规则: 指令 确认 指令执行异常 指令执行正常 转移型指令 顺序型 预测错误 预测正确 确认结果 不通过 通过 处理 规则 ①清除ROB中所有后续指令; ②置当前指令确认结果为通过; ②触发异常处理程序 ③进行误猜测处理 转70页 回79页

73 二、超标量流水技术 *指令级并行度:每个时钟周期内启动的指令数量 表示--ILP(m,n),n—启动次数/TC,同时启动指令数/次
特征--ILP(m,n)×CPI=1 *超标量流水思想:多条流水线并行工作(增加ILP的m项),提高指令级并行度(ILP) *实现要求:多套独立的译码器等功能部件, 部分部件(如控制器)只需一套 *影响超标量流水性能的因素: ①多个I/D同时存取,数据通道会成为瓶颈; ②同一拍不同指令的操作间不能有相关,否则部分流水线空转(分支预测及乱序执行技术可缓解该问题); ③旁路只能针对没有同时操作的指令间 转6页

74 乱序发射需先行指令窗口 “保存”有冒险的指令
*指令调度策略: 发射策略—有按序发射、乱序发射两种 乱序发射需先行指令窗口 “保存”有冒险的指令 IF ID OF EX WB 按序发射的2路超标量流水线 IF ID OF EX WB 乱序发射的2路超标量流水线 先行指令窗口 相关检测与控制 完成策略—有按序完成、乱序完成两种 乱序完成需指令窗口(如ROB)保存有冒险的指令 发射的定义:指令流出流水线译码段时 调度策略应用—Pentium采用按序发射+按序完成策略; PII以后采用按序发射+乱序完成策略; MIPS 10000采用乱序发射+乱序完成策略

75 *超标量流水应用示例: --PII CPU核心逻辑 ①哈佛结构、DIB的Cache; ②3路超标量流水;
③动态执行技术(多路分支预测、数据流控制、推测执行) 总线接口单元(BIU) L1 I-Cache 16K L1 D-Cache 16K 预取流式缓冲器 指令长度译码器 译码器对齐段 译码后指令队列 RAT/分配器 再定序缓冲器(ROB),即uOP缓冲池 端口4 端口3 端口2 端口1 保留站 (RS) 端口0 存储数据执行单元 存储地址执行单元 装入执行单元 L2 Cache 微指令序 列器MIS 静态转移预测 存储顺序缓冲器(MOB) 译码 译码 译码 器0 器1 器2 DIS IFU1 IFU2 DEC1 DEC2 DEC3 RAT ROB IA寄存器组 RET WB 内部公共总线CDB EX 转移目标 缓冲器BTB 前端总线 后端总线 主存 预测错误 简单FPU 复杂FPU 复杂IEU MMX乘法器 MMX ALU 简单IEU和JEU 误预测 Next IP 返回堆栈 缓冲器 MMX移位器 确认 RR 多路分支预测—2级自适应预测(局部预测) 回下页 回77页 回78页 回79页

76 由12个段组成,以RISC指令缓冲池(ROB)为核心
超标量流水线组成— 由12个段组成,以RISC指令缓冲池(ROB)为核心 1 2 3 4 5 6 7 8 9 10 11 12 IF1~2 DEC1~3 RAT ROB DIS EX WB RR RET 取指 译码 调度 执行 写结果 ⑴IFU1 取指单元段1 每次从L1 I-Cache取一个块(32B)装入预取流式缓冲器(≥2个块,空闲超过1个块时取) ⑵IFU2 取指单元段2 每次从预取流式缓冲器取16B信息(x86指令最长16B); 在16B信息中标志CSIC指令边界(需预译码); 若发现为转移指令,进行动态分支预测(不命中时预测不转移[即不预测],完全译码后由静态分支预测修正) ※取指阶段特征—按需动作(不按拍动作);按序流动 转上页

77 每次从16B信息中取3条IA指令,按一定次序同时交DEC2
每次3个译码器同时译码,译码器结构固定(复杂/简单/简单), 形成≤6个RISC μop(每个μop长度为118bit) └→μop翻造由MIS(组成原理中的CS或CM)实现 ⑸DEC3 译码段3 每次接收≤6个μop,并按程序顺序排成队列; 若μop为BTB未命中的转移型μop,则进行静态分支预测并修正IF的猜测; 每拍送出3个μop(队列有空闲时触发DEC2工作) ※译码阶段特征—CISC→RISC;按需动作→按拍动作; 按序流动 转75页 转52页

78 ⑹RAT 寄存器重命名和分配器段 --按序发射 每拍取3个μop,按序发射到ROB(ROB满时阻塞RAT);
若μop使用了IA寄存器,则将IA寄存器转换为内部寄存器(ROB的“目的值”字段,用ROB项号标识); 此流水段消除/转化了WAR相关、消除了WAW相关 ⑺ROB 再定序缓冲器段 ROB(有40项的环形缓冲器)每拍接收3个μop; ROB负责各项的管理(接收数据、登记状态等) ⑻DIS 派遣段 乱序派遣 RS能从ROB以任意顺序拷贝μop到相应端口; └→拷贝原则为μop的操作数已就绪(RAW相关已消除) RS在EX段可用时,发送μop至EX单元 ※调度阶段特征—按序流动→乱序流动 转75页 转70页

79 各功能部件执行μop,结果送到CDB上; 若μop是转移操作,更新BTB、预测的正确性作为执行结果
⑼EX 执行段 各功能部件执行μop,结果送到CDB上; 若μop是转移操作,更新BTB、预测的正确性作为执行结果 ⑽WB 写回段 ROB从CDB接收执行结果(可能是来自L1 D-Cache的数据) ※执行段特征—乱序执行(各部件执行时长可不相等) ⑾RR 回收就绪段(确认段) 按程序顺序、以IA指令为单位对所含μop进行确认; 若分支预测错误和异常需进行处理(清除部分或全部ROB) ※确认段特征—RISC→CISC,乱序流动→按序流动 ⑿RET 回收段 按程序顺序以IA指令为单位,将结果写回IA寄存器; 若指令指令结果为MEM单元,则通知MOB真正写入L1; 清除ROB中IA指令对应的μop(有效位置0) 转76页 转72页

80 三、超级流水技术 *超级流水思想:使流水线启动速度小于1个时钟周期(增加ILP的n项),来提高指令级并行度
*实现要求:流水线各段延迟较小(段数较多),采取有效手段处理数据相关和控制相关 *几种类型流水线性能比较:见左下图 0.0 指令并行度ILP 相对性能 超标量流水 超标量超级流水 超级流水 1.0 2.0 原因分析: a)超级流水线的启动延迟、条件转移的性能损失、执行部件的冲突程度均比超标量大; b)当ILP较小时,流水线性能提高较快(程序并行度提供保证); c)流水线达到的性能与程序的调度算法有很大关系 转6页

81 标量流水技术总结 (1)提高操作级流水线性能的方法 *结构方面:功能部件细化,增加流水线深度,采用动态多功能流水线;
*软件方面:通过编译程序避免相关、提高性能(如优化延迟转移、指令重排序、展开循环体后调度等); *硬件方面:消除相关(资源重复、推后法、相关专用通路、异步流水等); *技术方面:分支预测、动态调度、推断执行、超级流水等 (2)提高指令级流水线性能的方法 超标量流水、超标量超级流水、VLIW等

82 本章思考 1、CPU结构可从几个方面发展?需要什么技术的支持?好处是什么?存在哪些隐患?
2、I/O方式有哪几种?原理、过程各是什么?硬件如何组织? 3、从存储系统的性能指标分析层次结构、存储器如何组织?提高Cache性能有哪几个方面?每个方面可采用哪些技术?PⅡ CPU的Cache采用了哪些技术? 4、解决标量流水线的结构相关、数据相关、控制相关的方法有哪些?结合PⅡ CPU结构,简要说明这些方法的原理是什么?需要哪些硬件的支持? 5、PⅡ CPU的动态执行技术包含哪几点?各点的关键技术是什么?它们是如何穿插到流水线的各个段中的?


Download ppt "第二章 微处理器结构与技术."

Similar presentations


Ads by Google