Arm是一个基于英国的半导体及软件设计公司,主要以物联网、移动设备和服务器市场为主业。Arm的处理器被广泛应用在手机、平板电脑、智能手表、路由器等设备中。同时,Arm还为低功耗和高效能处理器提供IP产品,使得全球多个公司的处理器得以使用Arm的架构。
在计算机存储器中,每个存储单元都有一个唯一的地址。如果存储器中的地址是偶数,则称为偶地址;如果是奇数,则称为奇地址。
在Arm架构中,字(32位)是以偶地址对齐的,这意味着如果一个字要跨越两个字节,则其地址必须是偶数地址(即最后一位为0)。否则,例如在奇地址上出现字,则会导致读取两个存储单元以获取一个单词,这将导致存取开销的增加,而且还会产生一些硬件问题。
Arm之所以要做到偶地址对齐,主要是为了避免在存储器访问和传输数据时,CPU需要进行的部分字节处理,从而提高处理器的性能。这是因为,访问对齐的地址数据要比不对齐的地址数据更快。
另外,Arm处理器在读取指令时,需要一次读取32位的指令,如果指令的地址是奇数,则需要两次读取才能获取完整的32位数据,这将导致性能损失。
在软件开发中,对齐也是非常重要的。数据结构中的字段通常需要进行对齐,以便CPU可以快速读取。如果字段没有对齐,则CPU需要处理额外的字节,这将导致额外的开销。
此外,对于一些架构来说,未对齐的数据会导致硬件异常甚至系统崩溃。而Arm架构的处理器则有一些硬件保护机制,可以保证未对齐的数据不会导致硬件异常,但性能会受到影响。