内存对齐的目的

内存对齐的目的

诚然,我不明白。假设您有一个内存,内存字长度为1字节。为什么不能访问未对齐地址上的单个内存访问中的一个4字节长的变量(即不能被4整除),就像对齐地址的情况一样?



12345678_0001
浏览 769回答 3
3回答

犯罪嫌疑人X

你可以用一些处理器(尼哈伦人能做到这一点),但是以前所有的内存访问都是在64位(或32位)线上对齐的,因为总线是64位宽的,所以您必须一次取64位,并且用对齐的64位“块”来获取这些数据要容易得多。所以,如果你想要一个字节,你取了64位块,然后屏蔽掉你不想要的比特。如果您的字节位于正确的一端,那么简单且快速,但是如果它位于64位块的中间,则必须屏蔽不需要的位,然后将数据转移到正确的位置。更糟糕的是,如果您想要一个2字节变量,但它被分割成两个块,那么这就需要双倍于所需的内存访问。因此,当每个人都认为内存很便宜时,他们只是让编译器将数据对齐在处理器的块大小上,这样您的代码就会以浪费内存为代价,运行得更快、效率更高。
打开App,查看更多内容
随时随地看视频慕课网APP