关闭

关闭

关闭

封号提示

内容

首页 流水冲突.pdf

流水冲突.pdf

流水冲突.pdf

上传者: hejinsome 2010-12-18 评分 0 0 0 0 0 0 暂无简介 简介 举报

简介:本文档为《流水冲突pdf》,可适用于IT/计算机领域,主题内容包含流水线冲突KrsteAsanovic计算机科学实验室MIT流水线DLX数据路径无互锁和跳转–数据冲突数据冲突消解•互锁(interlocks):冻结符等。

流水线冲突KrsteAsanovic计算机科学实验室MIT流水线DLX数据路径无互锁和跳转–数据冲突数据冲突消解•互锁(interlocks):冻结前面的流水段直到数据有效•旁通(Bypasses):如果数据有效通过旁通方式直接将它送至相应的流水段使用互锁解决数据冲突停滞条件停滞流水段和流水泡互锁控制逻辑工作表比较译码阶段指的令源寄存器和未提交指令的目的寄存器互锁控制逻辑忽略跳转与转移•如果rs域与某些rd相匹配我们是否总是要延迟?•不是每条指令都要写寄存器〉we•不是每条指令都要读寄存器〉re源目的寄存器导出停滞信号如果一条指令的源寄存器与未提交指令的目的寄存器相冲突就需要延迟跳转和链接停滞信号读写冲突这个指令序列中是否存在数据冲突?停滞条件ALU控制和立即数扩展和内存系统相关的读写冲突R=RÆ数据冲突然而因为内存系统在一个周期内完成了写操作所以避免了冲突VAX:复杂的指令集VAX的极端例子•长指令例如:–-字节的编码(据说还有更长的指令序列)•内存访问行为:–在最坏的情况下一条指令需要将个不同的内存页驻留到内存才能执行。–不要包含字符串指令因为这些指令被设计成可中断的?精简指令集计算机•使用复杂指令编译器有困难–VAX:%的指令使用%的微编码仅占%的执行时间–IBM试验机编译器使用一部分ISA的简单指令〉编译器可以产生更快的代码•精简指令集不需要微码–使用离处理器更近的快速内存比如cache不使用微编码存储器•为实现简单流水线设计ISA–固定的长度固定的指令格式–最多一次访存的LoadStore结构。–很少的寻址方式综合其它微码序列–寄存器到寄存器的ALU操作–延迟转移MIPSR最早的RISC商业机之一•LoadStore结构:–个位的通用寄存器GPR(R有线),HILO专用寄存器(用于乘除)–条指令–固定指令长度(位)只有种指令格式–PC相对转移寄存器间接跳转–只有一种寻址方式:基址+偏移量–比较写GPR指令和转移测试GPR没有条件位–延迟装载和转移•级指令流水线–取指,译码,执行,内存访问,回写–寄存器到寄存器的ALU指令为CPI–时钟频率:MHz–紧耦合、离线浮点加速器(R)RISCCISC比较年代末年代初•RvsVAXBhandarkar和Clark,‘–R比同时期其他技术性能先进倍•IntelvsInteli(均是)–同一公司、相同CAD工具、相同进程–i快~倍在浮点计算中甚至更高•DECnVAXvsAlpha()–同一公司、相同CAD工具、相同进程–Alpha快~倍跳转引入的复杂性•一条跳转指令将使(不是延迟)紧接的下一条指令无用流水线跳转•作废已取的指令在IR前面插入一个控操作(Mux)•停滞和跳转之间有交互?流水线跳转图例•控操作=〉流水线“气泡”流水线条件转移•只有到了执行阶段才能发现条件转移•在译码阶段应该采取什么措施?条件转移:解决方案一如果发生转移:•撤销接下来的两条指令•译码阶段的指令是无效的=>停滞信号无效新延迟信号PCMUXes的控制方法方法赋给较早指令优先权比如执行阶段的指令优先于译码阶段的指令条件转移:方法二:在译码阶段检测只需要清除一条指令如果DLX是一般转移条件会不会生效?比如r>r条件转移:方法三延迟转移改变转移和跳转指令的语义无论转移是否发生转移之后的指令总会执行不需要清除任何一条指令!取消转移•一般的延迟转移仅仅是让编译器把延迟槽填上要执行的指令•如果转移情况未发生取消转移将撤销延迟槽。编译器将转移目标指令拷贝到延迟槽。•也可以用其它取消转移技术如果发生转移来中止延迟槽转移延迟槽•首次被应用在微码流水线的引擎中被用于早期的单发射流水线RISC机中对用户级软件不透明。•优点:–单流水线的简单控制逻辑–编译器帮助减少数据冲突惩罚•~%的单延迟槽被有用地填充•缺点:–复杂的ISA规范和编程•编程时需要添加额外的“nextPC”状态–对于更高效地实现控制逻辑就会很复杂•比如乱序超标量设计–〉失宠于新(年后)的通用ISA•此后的课程将讲述解决控制冲突的先进技术–动态(执行时期)调度比如转移预测–静态(编译时期)调度比如推断执行流水线延迟跳转和链接旁通技术每一次停滞或撤销都将在流水线中产生一个气泡〉CPI>一种新的数据路径比如旁通路径可以把ALU输出数据直接送到输入单元。增加旁通路径当然你可以添加任意个旁路旁通信号由停滞信号导出这正确吗?旁通的有用性这个旁路在何处有用?旁路和停滞信号全旁路的数据路径还需要停滞信号吗?为什么不能每周期分派一条指令(CPI>)•全旁路实现起来花费太高。–一般来说提供所有的频繁使用的路径–那些不频繁使用的旁路会增加周期时间和代价得不偿失•Load指令有两个周期的延时–Load之后的指令不能立即使用读的结果结果。流水线冲突编译器通过调度不相关的指令或引入控操作来消解冲突。MIPS取消了这个。•条件转移可能导致“气泡”–如果没有延迟槽则清除紧接着的一条或几条指令。•具有软件、可见的延迟槽的机器可以执行大量的在编译器编码阶段就插入的控操作指令。流水线冲突流水线DLX数据路径无互锁和跳转数据冲突数据冲突消解使用互锁解决数据冲突停滞流水段和流水泡互锁控制逻辑工作表互锁控制逻辑忽略跳转与转移源目的寄存器导出停滞信号跳转和链接停滞信号读写冲突ALU控制和立即数扩展和内存系统相关的读写冲突VAX:复杂的指令集VAX的极端例子精简指令集计算机MIPSR最早的RISC商业机之一RISCCISC比较年代末年代初跳转引入的复杂性流水线跳转流水线跳转图例流水线条件转移条件转移:解决方案一新延迟信号PCMUXes的控制方法方法条件转移:方法二:在译码阶段检测条件转移:方法三延迟转移取消转移转移延迟槽流水线延迟跳转和链接旁通技术增加旁通路径旁通信号由停滞信号导出旁通的有用性旁路和停滞信号全旁路的数据路径为什么不能每周期分派一条指令(CPI>)

用户评论(0)

0/200

精彩专题

上传我的资料

每篇奖励 +2积分

资料评价:

/39
0下载券 下载 加入VIP, 送下载券

意见
反馈

立即扫码关注

爱问共享资料微信公众号

返回
顶部