Gre*_*ill 26
硬件很复杂; 这是一个简化的解释.
典型的现代计算机可能具有32位数据总线.这意味着CPU需要执行的任何提取都将获取特定内存地址的所有32位.由于数据总线无法获取小于32位的任何数据,因此在地址总线上甚至不使用最低的两个地址位,因此就好像RAM被组织成一个32位字序列而不是8位字节.
当CPU对单个字节进行读取时,总线上的读取周期将取32位,然后CPU将丢弃其中的24位,将剩余的8位加载到任何寄存器中.如果CPU想要获取32 位边界上未对齐的32位值,则它有几个常规选择:
我使用的各种CPU已经采用了所有这四种路径.通常,为了最大限度地兼容,最安全的是将所有n位读取与n位边界对齐.但是,如果您确定您的软件将在具有已知未对齐读取行为的某个特定CPU系列上运行,则您当然可以使用快捷方式.即使可以进行未对齐的读取(例如在x86系列CPU上),它们也会变慢.
计算机总是读取一些固定大小的块,这些块是对齐的.
因此,如果您不将数据与内存对齐,则可能不得不多次阅读.
例
所以,它基本上是为了加快速度.