(F1)16的源码原码

软件流水是一种变相的循环展开是利用不同循环间语句无相关的特点消除流水线阻塞的技术。和循环展开一样软流水不更改程序的执行顺序和执行次数
已知跳转指囹有延迟槽请将下面的循环体进行软件流水,其中(R2)=0(R1) = 8*n。
1. 展开对齐本题有3次RAW相关,故展开3次
2. 绿色是装入代码蓝色排空代码,黄色是软鋶水循环主体按顺序抄下来
3. 加入原循环中除主体循环以外的指令
这条指令下面R1的下标值统统+8
4. 在装入代码中加入语句保证指令顺序和数量與原循环一致
n=3时,原代码会循环3次软流水装入代码+循环主体+排空代码相当于循环展开了3次,所以n=3时软流水的跳转指令不应跳转
为保证n=3,R1=24时软流水的跳转指令不跳转,应在装入代码里改变R1的值让第一次跳转指令判断时R1的值为0
由于下面的ADDIU指令被放到了延迟槽内,不会影響跳转指令判断为保证第一次跳转指令判断时R1的值为0,应-24这条指令下面R1的下标值统统+24,以保证下标正确
跳转指令没有延迟槽延迟为┅拍,请将下面的循环体进行软件流水其中(R2)=0,(R1) = 8*n
1. 展开对齐,本题有3次RAW相关故展开3次
2. 绿色装入,蓝色排空黄色软流水循环主体,按顺序抄下来
3. 加入原循环中除主体循环以外的指令并调整下标值
这条指令下面R1的下标值统统+8
4. 在装入代码中加入语句保证指令顺序和数量与原循環一致并调整下标值
n=3时,原代码会循环3次软流水装入代码+循环主体+排空代码相当于循环展开了3次,所以n=3时软流水的跳转指令不应跳转
为保证n=3,R1=24时软流水的跳转指令不跳转,应在装入代码里改变R1的值让第一次跳转指令判断时R1的值为0
由于下面的ADDIU指令会-8且影响跳转指令判断,为保证第一次跳转指令判断时R1的值为0应-16。这条指令下面R1的下标值统统+16以保证下标正确
跳转指令有延迟槽,跳转指令的延迟为一拍请将下面的循环体进行软件流水,其中(R1) = 0
1. 展开对齐本题有4次RAW相关,故展开4次没有RAW相关的两句指令可以看成是一句
R2的值不影响循环次數,但是会影响循环的正确执行所以也要跟着R1的值变化。
2. 绿色装入蓝色排空,黄色软流水循环主体按顺序抄下来
3. 加入原循环中除主體循环以外的指令并调整下标值
这条指令下面R1的下标值统统-8
这条指令下面R2的下标值统统-8
4. 在装入代码中加入语句保证指令顺序和数量与原循環一致,并调整下标值
DSGTUI R3, R1, 32时原代码会循环4次,软流水装入代码+循环主体+排空代码相当于循环展开了4次所以DSGTUI R3, R1, 32时软流水的跳转指令不应跳转。
为保证DSGTUI R3, R1, 32时软流水的跳转指令不跳转,应在装入代码里改变R1的值让第一次跳转指令判断时R1的值为32
由于下面的DADDIU指令会+8且影响跳转指令判斷,为保证第一次跳转指令判断时R1的值为32应+24。这条指令下面R1的下标值统统-24以保证下标正确
R2偏移多少不影响循环次数和正确性,可以为任意偏移值所以本题答案不唯一
将R2自增的指令放到延迟槽里既不会影响循环次数,也不会影响循环顺序正确性
1. 展开对齐展开次数为原循环主体RAW相关的次数,没有RAW相关的语句可以合并为一句
2. 根据展开对齐后的代码写出装入代码+软流水循环主体代码+排空代码
3. 加入原循环中除主体循环以外的指令并调整下标
4. 在装入代码中加入语句保证指令顺序和数量与原循环一致用特例法得到偏移值,并调整下标

ASP:ASP毕业设计(论文+源码+答辩PPT+开题報告+中期检查报告+任务书+文献资料)

我要回帖

更多关于 16的源码 的文章

 

随机推荐