【硬核解答】为什么内存要对称双通道?

先说结论:一定要组对称双通道。

(除非你的电脑无法装对称的内存,或者你的程序在对称内存下会崩溃)

非专业,仅综合公开资料,欢迎反驳。

摘要:

内存地址随机化(ASLR)技术、电气干扰、内存预读(内存缓冲)三大因素决定对称双通道远好于非对称双通道。讨论了单通道内存、不对称双通道、弱对称双通道、强对称双通道、严格对称双通道的区别。

内存地址随机化(ASLR)技术

参考 百度百科 地址空间配置随机加载

  • 地址空间布局随机化(Address Space Layout Randomization)可以帮助克服某些类型的缓冲区溢出攻击,ASLR可以将基数,库,堆和堆栈放在进程地址空间中的任意随机位置,这使攻击程序很难预测下一条指令的内存地址。

  • 主流操作系统均默认开启了ASLR

  • Linux已在内核版本2.6.12中添加ASLR。

  • Windows Server 2008,Windows 7,Windows Vista,Windows Server 2008 R2,默认情况下启用ASLR,但它仅适用于动态链接库和可执行文件。 

  • Mac OS X Lion10.7则对所有的应用程序均提供了ASLR支持。Apple宣称为应用程序改善了这项技术的支持,能让32及64位的应用程序避开更多此类攻击。从OS X Mountain Lion10.8开始,核心及核心扩充(kext)与zones在系统启动时也会随机配置。 [2] 

  • Apple在iOS4.3内导入了ASLR。

  • Android 4.0提供地址空间配置随机加载(ASLR),以帮助保护系统和第三方应用程序免受由于内存管理问题的攻击,在Android 4.1中加入地址无关代码(position-independent code)的支持。

电气干扰

参考 1【硬件科普】为什么装机内存条推荐安装到第24槽而不是13槽

参考 2  不同容量的内存条在游戏中的区别

  • 容量不一样,内存条的颗粒大小、数量或者总线排布肯定有不一样的地方,带来的延迟和电气干扰不一样,更容易出现玄学兼容问题。

  • 内存容量翻倍意味着地址总线多一位,比如32位总线对应4G内存,33位总线对应8G内存。理论上如果频率不变,相比访问4G内存,访问8G内存的延迟要高出1/32也就是3%。这也就是为什么如果内存容量够用,相同频率下,4G+4G的内存性能好于8G+8G。

内存预读(内存缓冲)

  • 由于相对内存,硬盘的读写速度很慢,如果能够预测并提前将文件载入内存,那么就能充分利用内存的写入性能和硬盘的读取性能;如果等待多个文件修改之后一起写入硬盘,那么就能充分利用硬盘的写入性能。

  • 主流操作系统均支持内存预读。比如Linux的文件预读readahead,Windows 7的Superfetch超级预读取服务(在Windows 10中改名Sysmain),原理就是高内存占用换取性能提升。

  • 主流操作系统均支持内存缓冲。在linux系统中,修改过的操作并不会立即写入磁盘,而是先写到内存中,通过buffer队列当达到指定时间或者指定大小再一次性写入磁盘,提高IO效率。默认情况下,Windows 缓存从磁盘读取的和写入到磁盘的文件数据。 这意味着读取操作从系统内存中称为系统文件缓存的区域读取文件数据,而不是从物理磁盘读取文件数据。 相应地,写入操作将文件数据写入系统文件缓存,而不是写入磁盘。这类缓存称为回写缓存。 缓存按文件对象进行管理。

三大因素导致的结果

  • 比如有一台设备使用8G+16G=24G非对称双通道内存。根据弹性双通道机制,有8G+8G的双通道加上8G的单通道。一旦使用逼近或超过双通道部分的容量(8G+8G=16G),你的程序很有可能一会儿被分配到双通道内存,一会儿被分配到单通道。用游戏做类别,一会儿60帧一会儿30帧,比一直保持30帧,用户体验感觉更卡顿。

  • 而且现在Windows10,内存中的缓存大致和使用中的内存相当,所以8G+16G=24G其中16G双通道被占满的时刻不是使用中16G,而是使用中8G,也就是说8G+16G的用户内存占用率超过33%之后ASLR就在随机分配单通道、双通道造成剧烈性能波动。

【硬核解答】为什么内存要对称双通道?
Windows的“内存占用”百分比计算时不包括缓存
【硬核解答】为什么内存要对称双通道?
16G内存,当内存使用显示4.5G(28%)时,实际上的内存占用高达59%

单通道内存,不对称双通道,弱、强、严格对称双通道的区别。

参考 1 【装机必看】内存条-用最真实的视角带你了解内存条

参考 2   内存条发展史,科普内存中你不知道的哪些秘密

  • 只要是对称双通道,一定是相对单通道翻倍的。

弱对称的双通道,指两条内存代数一致(比如都是DDR4),容量一致(比如都是8G)。

强对称的双通道,指的是满足弱对称,并且频率和时序相同的两条内存。时序可以简单理解为延迟。

  • 如果两条内存频率、时序不一致,那么就会自动协商到较低的频率较高的时序,导致性能出现下降。

严格对称的双通道,指的是满足强对称,并且厂商、颗粒、电路设计、甚至批次完全相同的两条内存,使用严格对称的内存可以最大限度地减少不兼容并尽可能高地提升性能。

综合上面的观点,形成下图表格:

【硬核解答】为什么内存要对称双通道?
内存条组合特性

给TA打赏
共{{data.count}}人
人已打赏
站外热文

我有罪!佳乐同学---关于“千哲科技”动态观点的回复:

2023-4-15 21:33:42

站外热文

11个风扇安装位,支持双360冷排,安钛克AX90黑武士机箱装机实测

2023-4-16 15:34:02

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索