蛋氨酸多少钱一斤:不是所有的硬件平台都能访问任意地址上的任意数据的;某些硬件平台只能在某些地址处取某些特定类型的数据,否则抛出硬件异常。
性能原因:经过内存对齐后,CPU的内存访问速度大大提升。具体原因稍后解释。
这是普通程序员心目中的内存印象,由一个个的字节组成,而CPU并不是这么看待的。
4,8,16字节大小,因此CPU在读取内存时是一块一块进行读取的。块大小成为memory access granularity(粒度)本人把它翻译为内存读取粒度 。
1字节开始时,问题变的有些复杂,此时该int型数据不是位于内存读取边界上,这就是一类内存未对齐的数据。
4—5字节的数据进寄存器,接着把0字节和6,7,8字节的数据剔除,最后合并1,2,3,4字节的数据进寄存器。对一个内存未对齐的数据进行了这么多额外的操作,大大降低了CPU性能。
#re: 内存对齐的规则以及作用(⊙v⊙)嗯,终于有点开窍了,呵呵#re: 内存对齐的规则以及作用2010-04-21 17:26 by恩,很谢谢您的写作,明白了不少东西。#re: 内存对齐的规则以及作用2010-06-18 22:38 by谢谢,最近在看这个,从这里才看明白了#re: 内存对齐的规则以及作用2010-10-20 18:17 by看了好几遍,总算看懂了,谢谢分享。#re: 内存对齐的规则以及作用2010-10-26 16:34 by非常感谢!#re: 内存对齐的规则以及作用2011-07-19 11:34 by应该是剔除0字节和5,6,7字节,不是6,7,8字节#re: 内存对齐的规则以及作用2011-09-16 10:52 by谢谢楼主分享啊,说的这么仔细!#re: 内存对齐的规则以及作用2011-10-03 13:03 by谢谢 终于明白了?#re: 内存对齐的规则以及作用2012-04-06 20:32 by非常感谢啊,终于看懂了,下午看了头都大了,也没明白为什么……#re: 内存对齐的规则以及作用2012-05-28 15:42 bySt2为什么不说下呢,如果按你上面提到的原则应该是 00 0 0000 X(X为补全字节),而实际中我测试的是 00 00 0000. 能解释一下么,3ks#re: 内存对齐的规则以及作用2012-05-29 09:46 by@caicai2了#re: 内存对齐的规则以及作用
2012-07-22 17:01 by楼主说的很详细,看完之后终于理解了。#re: 内存对齐的规则以及作用2012-08-02 18:33 by因为int是4字节,所以起始地址要为4的倍数,所以char之后要补X...实际应该为00 0x #re: 内存对齐的规则以及作用
2012-11-20 22:26 by假设CPU要读取一个int型4字节大小的数据到寄存器中,分两种情况讨论:1、数据从0字节开始2、数据从1字节开始看了博主的假设内存颗粒为4的时候,读取内存时指针应是4的倍数啊,所以应该有数据从2字节,3字节开始的可能性,对从2字节开始的数据,首先指针指向0地址读取4字节到数据寄存器a,然后指向4地址读取4字节到数据寄存器b,最后剔除a中的0,1字节,b中的后2个字节,最后数据合并到数据寄存器c,这个思路是对的不,博主?
a2016-08-17 20:35 by非常感谢,看了这篇文章终于弄懂了,感谢a只有注册用户登录后才能发表评论。
|