首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >软件流水线有什么好处?

软件流水线有什么好处?
EN

Stack Overflow用户
提问于 2013-07-08 14:21:26
回答 2查看 599关注 0票数 2

优化编译器通常考虑采用软件流水线进行指令调度。但是由于有硬件流水线,我想知道软件流水线调度的优势是什么?

EN

回答 2

Stack Overflow用户

发布于 2013-07-08 14:35:55

在某些情况下(CPU特定的)执行速度可能取决于执行顺序。使用软件流水线,如果有可能在不影响最终结果的情况下这样做,编译器会重新排序语句,使其具有最佳顺序。

最优顺序可以取决于现有的硬件流水线,或者某些寄存器可以在某些执行顺序下更优化地使用,等等。

票数 3
EN

Stack Overflow用户

发布于 2013-07-16 05:52:41

软件流水线可以使循环执行得更快。在某些情况下真的更快。

例如:

代码语言:javascript
复制
num = 100;
i = 0;
loop:
load r0 sp+i;
add r2 r1 r0;
i++;
if ( i < num) goto loop

在本例中,add指令必须等待,直到r0从内存中加载值。如果延迟是3个周期。那么对于这个循环的执行,每次迭代将有3个周期的开销。这可能是一个很大的开销。通过软件流水线,这个开销可以减少一点。

代码语言:javascript
复制
num = 100;
load r0 sp+0;
i=0;
loop:
add r2 r1 r0;
i++;
load r0 sp+i
if (i < num) goto loop

在第二种情况下,当程序进入循环时,当执行add指令时,它已经具有r0中的值。在每次迭代中,当程序到达add指令时,这个值就在r0中。因此减少了延迟。

附言:我刚刚用助记符解释了这个想法。这不是某种架构的真正汇编语言。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17520241

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档