图5-22展示了做k次循环展开和k路并行变换的效果,k最大为6。我们可以看到,随着k值的增加,所有合并情况的CPE都增加了。对于整数乘法和浮点数运算,我们看到CPE的值为L/k,这里L是操作的延迟,最高可以得到吞吐量界限1.00。我们还看到使用标准的展开,整数加法也达到了这个界限。
相关语录
-
图5-27使用k次循环展开和重新结合的CPE性能。采用这种变换,所有的CPE都有改进,最高到限制值1.00
-
对于整数乘法和浮点运算,我们看到CPE值接近于L/k,这里L是操作的延迟,最高到达界限1.00。我们还看到整数加法当k=3时,CPE为1.00,达到吞吐量界限和延迟界限。
-
在4.5.10节中我们看到,条件传送指令可以被实现为普通指令流水线化处理的一部分。没有必要猜测条件是否满足,因此猜测错误也没有处罚。
-
就像我们将在第3章中看到的那样,Intel兼容的处理器上的leal指令能够执行a
-
总结一下combine4的性能分析,我们对程序操作的抽象数据流表示,说明combine4的关键路径长L·n,是由对程序值acc的连续更新造成的,这条路径将CPE限制为最多L。除了整数加法之外,对于所有的其他情况,测量出的CPE确实等于L,对于整数加法,测量出的CPE为2.00而不是根据关键路径的长度所期望的1.00。
-
这里就是计算机系统中一个基本而持久的思想:如果你理解了系统是如何将数据在存储器层次结构中上上下下移动的,那么你就可以编写你的应用程序,使得它们的数据项存储在层次结构中较高的地方,在那里CPU能更快得访问到它们。
-
如何编写出编译器能够有效优化以转换成高效可执行代码的源代码:1、消除循环的低效率2、减少过程调用3、消除不必要的存储器引用4、还没读到,待续、、、
-
我个人的经验是,有许多系统设计和概念,看似简单或不理解,可一旦自己动手做同样的试验,才明白当初设计者为什么要如此设计。计算机系统就像自然界的生态环境,对每一个部件的设计都要求它能够与系统其它部件和平相处,我们不能站在一个微观的视角去看待系统部件的设计是否最优,而应该从宏观来观察和思考
-
例如,当表明一个系统有“4GHz”处理器,这表示处理器时钟运行频率为4x10^9千兆赫兹。
-
因此我们合并这两个信号,将它们作为信号 valA 携带穿过流水线,从而减少流水线寄存器的状态数量。这样做就消除了 SEQ (见图4-23) 和 SEQ+ (见图4-40) 中标号为“Data”的块,这个块完成的是类似的功能。在硬件设计中,像这样仔细确认信号是如何使用的,然后通过合并信号来减少寄存器状态和线路的数量,是很常见的。