内存对齐的目的和原理 有人说电脑主机内存条要隔行插,为什么?
有人说电脑主机内存条要隔行插,为什么?
计算机内存交错的目的是形成一个双通道。双通道可以将位宽度增加一倍。在同时存储和交换数据时,可以同时与CPU交换两个数据,大大提高了计算机的性能。
交错插件的另一个优点是有利于散热。当你的电脑运行大型游戏或大型应用程序时,当你用手指触摸内存粒子时,你会发现它非常热。其实,隔行插一般是针对有四个插槽的主板,主板会用相同的颜色标记同一组通道内存插槽,只要你按照相同的颜色插就不需要太多的理解。
这里需要提醒的是,即使AMD平台是由两个通道组成的,最好是第1组和第3组,因为如果没有按照主板的要求插上电源,有时系统就无法正常启动。注意这个。
简而言之,交错的主要目的是形成双通道。双通道可以更好地提高电脑的性能,特别是在游戏的情况下。我亲自测试过,在双通道和非双通道的情况下,游戏的平均帧速率可以提高5到10帧。不过,我看到一些帖子提到,有些游戏对双通道特别敏感,可以有近300帧,我不知道这是不是真的。简言之,双通道内存确实可以提高电脑的整体性能。这是真的。
为什么C/C 编程语言经常会提到对齐?对齐到底是什么,为什么要对齐,对齐有什么好处?
内存对齐是硬件问题,而不是C/C问题本身。只有C/C能够直接操作内存指针,才有可能对其进行优化。
严格来说,对齐甚至不是CPU问题,而是MMU(内存/缓存)问题。
简而言之,对齐有助于提高缓存利用率。缓存设计时,每行都是一个对齐的空间,如32字节。使用他们的地址低索引。如果读写到与当前缓存线不匹配的地址,则会导致写回并重新加载缓存线。换句话说,有一个性能成本。此外,如果你熟悉芯片设计,你会知道成本是惊人的。许多软件工程师可能没有意识到,在大多数情况下,CPU只有很少的时间来执行指令,而大部分时间是等待缓存。
因此,对于具有性能优化要求的程序,在大多数情况下,内存优化是首要任务。不对齐的内存访问很容易导致此时一次刷新两个缓存,很有可能有用的数据会从缓存中冲出,这不仅增加了此操作的成本,更重要的是,下次必须重新加载清洗后的数据,这是一个很高的成本。更糟糕的是,此操作可能会继续导致新的有用数据在下次被刷新和回收。
据我观察,今天99%的程序员对CPU内存体系结构知之甚少,他们的代码几乎根本不考虑性能。事实上,在大多数情况下这并不重要。不管怎样,剩下的1%做了核心工作。
什么是数据的对齐?为什么要对齐?
对齐与内存中数据的位置有关。如果变量的内存地址是其长度的整数倍,则称为自然对齐。例如,在32位CPU中,如果整数变量的地址是0x00000004,则它自然对齐。字节对齐的根本原因是CPU访问数据的效率。假设上面整数变量的地址不是自然对齐的,例如0x00000002,那么CPU需要访问内存两次,如果它接受它的值。第一次从0x00000002-0x00000003取短,第二次从0x00000004-0x00000005取短,然后合并得到所需的数据。如果变量的地址为0x00000003,则需要访问内存三次,第一次访问char,第二次访问简称char,第三次访问char,然后合并得到整数数据。如果变量处于自然对齐位置,则只能检索一次数据。有些系统对对齐非常严格,如SPARC系统。如果数据没有对齐,就会出现错误
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。