论文部分内容阅读
在计算机、互联网和通信技术高速发展的今天,嵌入式系统取得了长足的进步。这不仅表现在从事嵌入式系统开发研究的人员队伍日益壮大,嵌入式处理器和实时操作系统的性能增强和产品升级换代,更重要的体现在嵌入式技术应用范围的急剧扩大。 在现在日益信息化的社会中,各种各样的新型嵌入式系统设备在应用数量上已经远远超过通用计算机,任何一个普通人都可能拥有从大到小的各种使用嵌入式技术的电子产品,小到mp3,PDA等微型数字化产品,大到网络家电,智能家电,车载电子设备。而在工业和服务领域中,使用嵌入式技术的数字机床,智能工具,工业机器人等也将逐渐改变传统的工业和服务方式。 随着嵌入式系统应用领域的不断加深,对嵌入式系统性能的要求也不断的提高。为了满足这种不断提高的要求就必须从硬件和软件两个方面来着手。在硬件方面,应用于嵌入式系统中的大量的微处理器都采用了多发射的体系结构,从而能够支持指令级别上的并行执行。为了适应处理器的这种功能以便充分发挥处理器的性能,通常需要在编译过程中通过各种代码优化技术来发掘程序的指令级并行性。软件流水就是这样一种通过发掘循环的不同迭代的不同部分的指令间并行性,使这些指令并行执行,从而提高循环的执行效率的优化技术。 GCC是嵌入式系统开发中广泛使用的一种开放源代码的编译器。其在4.0.0版本中开始加入采用模调度算法的软件流水技术。摆动模调度是一种在进行近似最优化调度的同时尽力减小寄存器压力的软件流水算法。虽然其在调度过程中尽力减小寄存器压力,但该算法与其他软件流水算法一样,还是会导致调度后代码的寄存器压力增加。为了解决这种情况在提高指令并行性的同时也增加了寄存器压力,而寄存器溢出技术正是解决寄存器压力的有效方法。 本文首先对软件流水技术进行了研究,并着重探讨了软件流水技术导致调度后代码寄存器压力增大的原因以及解决办法。然后分析了软件流水在