1. 指令流水线的定义
2. 指令流水线的表示方法
3. 指令流水线的性能指标
3.1 吞吐率
3.2 加速比
3.3 效率
4. 总结
5. 指令流水线影响因素分类
5.1 机器周期的设置
5.2 影响流水线的因素
5.2.1 结构相关(硬件资源不够)
5.2.2 数据相关(前后指令有逻辑联系 )
数据冲突例题
数据冲突的冲突类型
5.2.3 控制相关(出现转移指令)
5.2.3 总结
6. 流水线的分类
7. 流水线的多发技术
多应用于编译器中
8. 总结
总结
1. 谈谈你知道的流水线的性能指标?
吞吐率:单位时间内完成的任务总量,设把一个机器指令分为k个机器周期/时钟周期,每个周期的时间都取成取址周期Δt,任务数为n,指令数为k,那么TP=n/(kΔt+(n-1)Δt)。加速比:完成同一批任务,不使用流水线与使用流水线的时间比值,S=nkΔt/(kΔt+(n-1)Δt)。效率流水线的设备利用率即为效率,E=nΔt/(kΔt+(n-1)Δt)
2. 聊聊你对指令流水线中缓冲寄存器的理解?
缓冲寄存器/锁存器的作用就是为了保证流水线设计中每个机器周期都以最长的时间为准,这样方便流水线的设计。
3. 指令的数据冲突是什么?数据冲突的具体类型又有哪些?每种数据类型的解决方法又有哪些?
指令的数据冲突是指令冲突中的一种。
常见的指令冲突有资源冲突(不同指令在同一时钟周期内需要使用相同的硬件),它可以通过资源重复配置(把冲突的硬件做成多个不同功能的相同硬件)。
数据冲突(两条指令的数据相关),可以通过把冲突的某一指令暂缓执行的方法解决(硬件阻塞stall,在硬件层面强行在一条指令插入一些空的时钟周期。软件插入NOP,在冲突的指令间插入一些空指令来隔离冲突指令的时钟周期)。数据旁路技术,引入额外的接线回接其他硬件,使得其他硬件在该数据运算完后需要存入主存之前就可以访问到它。编译优化技术,通过编译器指令重排,把冲突间的指令中插入其他不冲突但是需要执行的指令(注意此处区别空指令)。数据冲突的类型有RAW,WAR,WAW,在按序完成指令的要求下,只有可能会发生RAW类型数据冲突(在数据冲突前提下,读指令需要等待写指令将运算完后的目的数写入主存,此时流水线失效),而在允许乱序排序,乱序操作的情况下会发生WAW(乱序完成,后面的减法先于前面的加法完成),WAR(乱序发射,本身没问题,但是因为乱序发射又变成了RAW类型)数据冲突。
控制冲突,流水线遇到转移指令或者改变PC值的指令,造成其无法判断任何一个某时刻是该进行指令跳转还是继续流水线式指令执行。可以通过提前判断是否发生指令转移/在指令中加快和提前形成条件码、提高预测发生指令转移概率、预先取到转移成功/转移不成功时候的不同的控制流目标指令来解决控制冲突。