本文介绍: 本文先简要介绍静态编译器流水线调度(消除数据冒险),再介绍循环展开(Loop Unrolling)技术(消除控制冒险),最后再结合静态超标量流水线技术(增加IPC)和循环展开技术对示例代码进行优化分析。
摘要
本文先简要介绍静态编译器流水线调度(消除数据冒险),再介绍循环展开(Loop Unrolling)技术(消除控制冒险),最后再结合静态超标量流水线技术(增加IPC)和循环展开技术对示例代码进行优化分析。
静态编译器流水线调度
上述代码转换成MIPS的汇编代码如下
(注意汇编代码段1先忽略各条指令之间的stall,即假定各条指令之间无stall)
汇编代码段1
现在我们做如下规定
LD -> any : 1 stall
FPMUL -> any: 5 stalls
FPMUL>ST : 4 stalls
IntALU ->BR : 1 stall
FPALU -> ST :2stalls
FPALU-> any: 3stalls
BR指的是分支指令。
每个BR指令后续都存在一个Stall。
那么汇编代码段1在上述假定下,实际执行情况如下
汇编代码段2
循环展开
静态超标量流水线
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。