我阅读了英特尔至强处理器的Datasheet,并看到了以下内容:
集成内存控制器(IMC)支持四种DDR3协议 独立的64位存储器通道,每个通道有8位ECC(总共 72位)并且每个通道支持1到3个DIMM,具体取决于内存类型 安装。
我需要从程序员的角度来了解这究竟意味着什么。
关于此的文档似乎相当稀疏,我没有来自英特尔的人问;)
此内存控制器是否可以同时从非相邻内存区域执行4个数据加载(并从最多3个内存DIMM请求每个数据)?即4x64位,最多3个DIMM条带,例如:
| X | _ | X | _ | X | _ | X |
(X是加载数据,_一个任意大的卸载数据区域)
此IMC是否可以执行1次加载,从一个连续的内存区域加载最多1x256位。
| X | X | X | X | _ | _ | _ | _ |
答案 0 :(得分:2)
这似乎是特定于实现的,具体取决于编译器,操作系统和内存控制器。该标准位于:http://www.jedec.org/standards-documents/docs/jesd-79-3d。似乎如果您的控制器完全兼容,则可以设置特定位以指示交错或非交错模式。请参阅DDR3规格第24,25和143页,但即使在规格细节上也很清楚。
对于i7 / i5 / i3系列,特别是所有较新的Intel芯片,内存与第一个示例中的内存交错。对于这些较新的芯片,可能是支持它的编译器,是的,一个Asm / C / C ++级调用加载大到足以交错/条带化的东西会启动每个内存通道所需的独立硬件通道级负载量。
在维基百科上的多渠道内存页面的三通道部分中,有一小部分CPU执行此操作,可能不完整:http://en.wikipedia.org/wiki/Multi-channel_memory_architecture