进行内存对齐的作用主要是有两个:
(1)平台移植。不是所有的硬件平台都能够访问任意地址上的数据,
(2)性能:内存对齐后访问速度提升了。
下面解释一下为什么内存对齐会提升效率。
CPU把内存当成是一块一块的,块的大小可以是2、4、8、16字节等大小。CPU在读取内存的时候是一块一块读取的。块大小即memory access granularity:内存读取粒度。
假设CPU要读取一个int型4字节大小的数据,看下列2种情况:
(1)数据从0字节开始;
(2)数据从1字节开始;
假设内存读取粒度是4.
情况(1)的时候,CPU只需一次便可把4字节读取出来。
但是情况(2)的时候,要复杂一些。这个时候CPU先访问一次内存,读取0-3字节进寄存器,再读取4-7字节进寄存器,然后把0、6、7、8字节的数据删除掉,最后合并1-4字节的数据。可以看出,如果内存没有对齐,所进行的操作要复杂得多。
尤其是,上面的这些操作也只是一部分CPU可以实现,即平台移植~~