曲径通幽论坛

标题: 优化内存访问 [打印本页]

作者: beyes    时间: 2009-12-6 22:20
标题: 优化内存访问
内存访问是处理器执行的最慢功能之一。编写需要高性能的汇编程序,尽可能避免内存访问。只要可能,最好把变量保存在处理器的寄存器中。处理器的寄存器访问是经过高度优化的,并且是处理数据的最快方式。

当不可能把所有应用程序数据都保存在寄存器中时,应该试图优化应用程序的内存访问。对于使用数据缓存的处理器来说,在内存中按照连续的顺序访问内存能够帮助提高缓存命中率,因为内存块会一次被读取到缓存中。

当使用内存时,另一个要考虑的问题是处理器如何处理内存的读取和写入。大多数处理器都被优化为从数据段开始的位置,在特定的缓存块中读取和写入内存位置。Intel 建议在定义数据时遵循以下原则:
在数据段中对准数据可能是困难的。数据元素被定义的顺序对于应用程序的性能可能是至关重要的。如果有很多长度类似的数据元素,比如整数和浮点值,可以把它们一起安排在数据段的开始。这确保它们保持适当的对准方式。如果有很多长度不一的数据元素,比如字符串和缓冲区,可以把它们安排在数据段的结尾,以便它们不会破坏其他数据元素的对准方式。

gas 汇编器支持 .align 命令,它用于在特定的内存边界对准定义的数据元素。在数据段中,.align 命令紧贴在数据定义的前面,它只是汇编器按照内存边界安置数据元素。

关于 .align 命令的说明还有:http://www.groad.net/bbs/read.php?tid-1362.html




欢迎光临 曲径通幽论坛 (http://www.groad.net/bbs/) Powered by Discuz! X3.2