performance - 添加更多内存片会增加整体内存带宽吗?
问题描述
假设我有一台安装了 2 个 (DDR) 内存片的 PC,每个内存片的内存速度为 200MHz。根据这里的公式,每个都有 3200MB/s 的带宽。
现在我的问题是,如果我的电脑的内存带宽是 3200MB/s,还是 6400MB/s?
解决方案
这取决于。请注意,单个 DDR 内存通道具有 64 位数据总线(如果支持 ECC,则为 +8),并且通常可以在同一通道上安装多个 DIMM。在您的示例中,3200MB/s 是 DIMM 的最大理论带宽 (MTB)。我们假设 CPU 的内存控制器(或主板,如果是外部内存控制器)支持 3200MB/s DIMM。如果通道中有单个 3200MB/s DIMM,则通道的 MTB 也是 3200MB/s。如果这是唯一连接到 CPU 的 DIMM,那么 CPU 的 MTB 为 3200MB/s。
现在如果在同一个通道中安装另一个相同的 DIMM,通道和 CPU 的 MTB 保持 3200MB/s,因为通道的所有控制和数据单由所有 DIMM 共享(内存控制器可以向一个 DIMM 发送命令一次)。但是,如果将相同的 DIMM 安装在连接到同一 CPU 的另一个通道上,则 CPU 的 MTB 会翻倍(每个通道的 TMB 之和)。例如,当 6 个通道中的每一个都至少填充一个 21.33 GB/s DDR4 DIMM (21.33 * 6 = 128) 时, Skylake Xeon Gold/Platinum CPU 可以支持 128 GB/s 的出色 MTB。
(如果您好奇,在同一通道中安装不同速度的 DIMM 会使通道以最慢 DIMM 的速度运行。)
在实践中,有效内存带宽 (EMB) 通常远小于通道的 MTB。由于交错物理地址空间(可在英特尔芯片组中配置),在同一通道中安装更多 DIMM(相同或什至其他)提供更多并行机会,这可能会增加该通道的 EMB(与 MTB 相比),但它当然永远不能超过 MTB。事实上,在同一通道中拥有多个 DIMM 的好处之一就是增加了 EMB。拥有多个通道会增加 MTB 和潜在的 EMB,代价是 CPU/主板或 SoC 中的大量硬件开销。
推荐阅读
- c++ - 使用 static_cast 更改派生结构成员
- ocaml - How to send multiple TCP messages and continue when one has succeeded
- python - 发生异常后如何返回循环?
- javascript - Angular 8 使用带有异步管道的 ngIf 来显示和隐藏 HTML 元素
- python-3.x - Python dataframe with value 'NA' not fetching
- reactjs - Access to outer react component from referenced component
- apache-spark - Replace cell value according to bin value in dataframe
- google-sheets - How to make select with variable using Google Sheets
- c# - 用 C# 生成的 Excel 文件损坏(ExcelExportEngine & IExportEngine)
- html - 元素不在视口底部