当然两条内存都是16G性能好了,因为这样全部内存可以组成对称双通道模式(Dual-Channel Symmetric mode),也就是Interleaved模式;而8G 32G的方式,则通过Intel Flex Memory技术,仅仅可以8G 8G组成对称双通道模式,而32G其余的24G则是单通道模式。
对于想知道技术细节的同学,我们今天来了解一下什么是对称双通道模式,它为什么带来性能的提升;以及Intel Flex Memory技术是什么。
对称双通道模式双通道,也就是Dual Channel技术,让两个通道同时访问内存,互不干扰,大家一看感觉能够增大内存带宽一倍,一定是对性能有好处的。但因为写程序,代码和数据都是连续分布的,这也叫做内存访问的局部性。虚拟地址和物理地址分配也最小是以4K为最小颗粒,所有操作系统通过页表也不能改善这种状况。如果双通道,但各个内存通道内地址空间是连续的话,内存访问的局部性,会让性能的提高大打折扣。那怎么办呢?
通过Interleave。与服务器领域复杂无比的Interleave模式不同,笔记本和台式机只有一种Interleave,即按照Cache Line Interleave,也就是64个字节Interleave一次。换句话说,就是从0地址开始,每64个字节,它在两个Channel的分配就交换一次:
0B~63B --> Channel 0
64B~127B -->Channel 1
128B ~ 191B -->Channel 0
以此类推。
这样做好处是明显的。因为CPU内存访问都是以Cache Line为单位,又因为内存访问的局部性,两次Cache Line miss而访问内存,很大几率能够被分配到两条Channel上,大大提高了内存带宽的利用率。
但一般情况下,要采用对称双通道技术,内存就要对称,要求两个channel的内存要大小一样才行。那么我们用两个大小不同的内存条,是不是就不能Interleave了呢?本来是不行的,直到Intel推出了Flex Memory技术。
Intel Flex Memory Tech这个技术让非对称内存也可以部分用上Interleave,也就是重合的部分:
如图,尽管Channel A和B内存的大小不同,但容量小的那个,它的内存和大容量 内存的一部分,组成了对称双通道,就是图中的B区间。而大容量多出来的部分,也就是图中的C区间,则被剩下来,只能够用单通道。
结论综上,8G 32G的配置,让8G 8G内存空间内应用程序性能较好;而落在最后24G内存空间的应用程序性能较差。而配成16G 16G就没有这个问题。