780 likes | 999 Views
第五章 流水线实例及策略. 1 流水线的基本概念. 2 DLX 的基本流水线. ◆ DLX 流水线 ◆ 流水线性能分析. 3 流水线中的相关. ◆ 结构相关 ◆ 数据相关 ◆ 控制相关. 4 MIPS R4000 流水线计算机. 第三章 流水线技术. DLX 的基本流水线. 1 DLX 的一种简单实现. 首先讨论在不流水的情况下,如何实现 DLX 。. 1. 实现 DLX 指令的一种简单数据通路. 2 DLX 的基本流水线. 2. 一条 DLX 指令最多需要以下 5 个时钟周期:.
E N D
第五章 流水线实例及策略 1流水线的基本概念 2DLX 的基本流水线 ◆DLX 流水线 ◆ 流水线性能分析 3流水线中的相关 ◆ 结构相关 ◆ 数据相关 ◆ 控制相关 4MIPS R4000 流水线计算机
第三章 流水线技术 • DLX的基本流水线 1 DLX的一种简单实现 首先讨论在不流水的情况下,如何实现DLX。 • 1. 实现DLX指令的一种简单数据通路
2 DLX的基本流水线 2. 一条DLX指令最多需要以下5个时钟周期: (1) 取指令周期(IF)IR ← Mem[PC] NPC ← PC+4
2 DLX的基本流水线 (2)指令译码/读寄存器周期(ID)A ← Regs[IR6..10]B ← Regs[IR11..15]Imm ← (IR16)16 ## IR16..31操作 指令译码和读寄存器是并行进行的。之所 以能做到这一点,是因为在DLX指令格式中, 操作码在固定位置。这种技术也称为固定字段 译码。
2 DLX的基本流水线 (3)执行/有效地址计算周期(EX)在这个周期,不同的指令有不同的操作。
2 DLX的基本流水线 ◆寄存器―立即值 ALU 操作ALUOutput ← A op Imm
2 DLX的基本流水线 这里,将有效地址计算周期和执行周期合并为一个时钟周期,这是由 DLX指令集结构本身的特点所允许的,因为在DLX指令集结构中,没有任何指令需要同时计算数据的存储器地址、计算分支指令的目标地址和进行数据处理。 (4)存储器访问/分支完成周期(MEM)在该周期处理的DLX指令只有Load、Store和分支指令。
2 DLX的基本流水线 ◆存储器访问LMD ← Mem[ALUOutput]或Mem [ALUOutput] ← B
2 DLX的基本流水线 (5)写回周期(WB)不同指令在该周期完成的工作也不一样。 ◆寄存器―寄存器型 ALU 指令Regs[IR16..20] ← ALUOutput ◆Regs[IR11..15] ← ALUOutput ◆Load指令Regs[IR11..15] ← LMD
寄存器―寄存器型 ALU 指令Regs[IR16..20] ← ALUOutput
Load指令 Regs[IR11..15] ← LMD
2 DLX的基本流水线 分支指令需要4个时钟周期, 其它指令需要5个时钟周期 假设分支指令占总指令数的12%, 则: CPI=4.88 上述实现无论在性能上,还是在硬件开销上,都不是优化的。
2 DLX的基本流水线 2基本的DLX流水线 1. 一种简单的 DLX 流水线 我们可以把数据通路流水化:每个时钟周期启动一条新的指令。 这样,该数据通路中的每一个周期就成了一个流水段。 2. 简单DLX流水线的流水过程
2 DLX的基本流水线 采用流水技术还应解决好以下几个问题: (1)应保证不会在同一个时钟周期内在同一数据 通路资源上做不同的操作。 例如,不能要求一个ALU同时既做有效 地址计算,又做减法操作。 上述简单DLX流水线中: ◆指令存储器(IM)和数据存储器(DM)分 开,避免了访存冲突。◆ID段和WB段都要访问同一寄存器文件。ID段:读 WB段:写
2 DLX的基本流水线 ◆没有考虑 PC 问题 流水线为了能够每个时钟周期启动一条新的指令,就必须在每个时钟周期进行PC值的加4操作,并保留新的PC值。这种操作必须在IF段完成,以便为取下一条指令做好准备。
但分支指令也可能改变PC的值,而且是在MEM段进行,这会导致冲突。但分支指令也可能改变PC的值,而且是在MEM段进行,这会导致冲突。
为解决问题,我们重新组织数据通路,把所有改变PC值的操作都放在IF段进行。 为解决问题,我们重新组织数据通路,把所有改变PC值的操作都放在IF段进行。 但分支指令如何处理?
2 DLX的基本流水线 (2)每一流水段内的操作都必须在一个时钟周期 内完成 (3)流水线寄存器(组) ◆ 流水线各段之间需设置流水线寄存器(也称为锁存器)◆流水线寄存器组及其所含寄存器的命名例如,ID段和EX段之间的流水线寄存器组中的IR寄存器的名称为:ID/EX.IR◆ 流水线寄存器的作用把数据和控制信息从一个流水段传送到下一个流水段。
2 DLX的基本流水线 4. DLX流水线的操作 对于流水线中的指令来说,在任一时刻,它仅在流水线中的某一段内执行操作。 因此,只要知道每一流水段在各种指令下进行何种操作,就知道了整个流水线的操作。 (表1)给出了DLX流水线各段的操作。
表 1 DLX流水线的每个流水段的操作 流水段 任何指令类型 IF/ID.IR ← Mem[PC] IF IF/ID.NPC,PC ← (if EX/MEM.cond {EX/MEM.NPC} else {PC+4}); ID/EX.A ← Regs[IF/ID.IR6..10]; ID/EX.B ← Regs[IF/ID.IR11..15]; ID/EX.NPC ← IF/ID.NPC; ID/EX.IR ← IF/ID.IR; ID ID/EX.Imm ← (IR16)16##IR16..31; Load/Store 指令 分支指令 ALU 指令 EX/MEM.IR ← ID/EX.IR; EX/MEM.ALUOutput ← ID/EX.A op ID/EX.B 或EX/MEM.ALUOutput ← ID/EX.A op ID/EX.Imm;EX/MEM.cond ← 0; EX/MEM.ALUOutput ← ID/EX.NPC + ID/EX.Imm;EX/MEM.cond ← (ID/EX.A op 0); EX/MEM.IR ← ID/EX.IR; EX/MEM.ALUOutput ← ID/EX.A + ID/EX.Imm; EX
表 1 DLX流水线的每个流水段的操作 流水段 任何指令类型 ALU 指令 Load/Store 指令 分支指令 MEM/WB.IR ← EX/MEM.IR; MEM/WB.LMD ← Mem[EX/MEM.ALUOutput];或Mem[EX/MEM.ALUOutput] ← EX/MEM.B; MEM MEM/WB.IR ← EX/MEM.IR; MEM/WB.ALUOutput ← EX/MEM.ALUOutput; Regs[MEM/WB.IR16..20]← MEM/WB.ALUOutput;或Regs[MEM/WB.IR11..15]← MEM/WB.ALUOutput; Regs[MEM/WB.IR11..15]← MEM/WB.LMD; WB
5.DLX流水线的控制 主要是确定如何控制那四个多路选择器。
第三章 流水线技术 • 3 流水线中的相关 1.相关的概念 流水线中的相关是指相邻或相近的两条指令因存在某种关联,后一条指令不能在原指定的时钟周期开始执行。 2.相关的分类 ◆结构相关当硬件资源满足不了同时重叠执行的指令的要求,而发生资源冲突时,就发生了结构相关。
3 流水线中的相关 ◆数据相关当一条指令需要用到前面某条指令的结 果,从而不能重叠执行时,就发生了数据相 关。◆控制相关当流水线遇到分支指令和其他能够改变PC值的指令时,就会发生控制相关。 几个问题 ◆相关有可能会使流水线停顿。
3 流水线中的相关 ◆消除相关的基本方法:让流水线中的某些指令暂停,而让其它 指令继续执行。 我们约定: 当一条指令被暂停时,暂停在其后发射(流出)的指令,但继续执行在其前发射的 指令。
3 流水线中的相关 1 流水线中的结构相关 1. 在流水线机器中,为了使各种指令组合能顺 利地重叠执行,需要把功能部件流水化,并 把资源重复设置。 2. 如果某种指令组合因资源冲突而不能顺利重叠执行,则称该机器具有结构相关。 常见的导致结构相关的原因:◆功能部件不是全流水◆重复设置的资源的份数不够
3 流水线中的相关 4. 结构相关举例:访存冲突 当数据和指令存在同一存储器中时,访存指令会导致访存冲突。 解决办法Ⅰ: 插入暂停周期(“流水线气泡”或“气泡”)
3 流水线中的相关 引入暂停后的时空图
3 流水线中的相关 解决方法Ⅱ:设置相互独立的指令存储器和 数据存储器或设置相互独立的 指令Cache和数据Cache。 5. 避免结构相关: ◆所有功能单元完全流水化◆设置足够的硬件资源硬件代价很大。 6. 有些设计方案允许有结构相关 ◆降低成本◆ 减少部件的延迟
3 流水线中的相关 2 流水线的数据相关 1. 数据相关简介当指令在流水线中重叠执行时,流水线有 可能改变指令读/写操作数的顺序,使之不同 于它们在非流水实现时的顺序,这将导致数据 相关。数据相关举例
3 流水线中的相关 2. 利用定向技术减少数据相关引起的暂停(1)定向技术的主要思路:在发生上述 数据相关时,后面的指令并不是马 上就要用到前一条指令的计算结果。 如果能够将计算结果从其产生的地 方直接送到需要它的地方,就可以 避免暂停。 (2) 采用定向技术消除上例中的相关