我正在阅读一些讨论“内存子系统”的文章。内存子系统的定义是什么?
据我所知,通过谷歌搜索或阅读其他文档,它表示一组主内存和处理器缓存。这是对的吗?
答案 0 :(得分:1)
有三种类型的存储器子系统组件,RAM(R)组件,单一访问(S)组件和双访问(D)组件。所有存储器子系统组件用于从其相关的存储器模块中自动检索操作数并将结果存储在其相关的存所有存储器子系统组件都具有输出数据连接和输入数据连接。因此,它们必须能够处理输出数据流和输入数据流。另外,D分量包括第二对输入和输出连接。所有内存子系统组件的每个输入和输出数据流都有一个队列。
内存子系统组件与其他组件之间的显着差异是必须包含操作数In(NumOpsIn)寄存器以及NumOpsOut寄存器。 NumOpsIn寄存器为输入数据流提供与NumOpsOut对输出流相同的用途。在将新指令分发到组件的可编程寄存器之前,NumOpsIn和NumOpsOut都必须为零。
答案 1 :(得分:0)
术语“内存子系统”似乎指的是 DRAM 模块,而不是 CPU 缓存,也不是 CPU 寄存器。我根据下面列出的术语的用法声明这一点。
但是,每次使用都与 CPU 缓存、缓存未命中和性能有关。
以下是用法示例:
Ulrich Drepper 关于内存的每个程序员都应该知道的:
<块引用>不幸的是,无论是结构还是使用内存的成本 计算机的子系统或CPU 上的缓存 大多数程序员。
Intel 64 和 IA-32 架构优化参考手册中的 Intel:
手册还区分了缓存和内存子系统
<块引用>Memory Bound 对应于与缓存相关的执行停顿,并且 内存子系统。
英特尔的 VTune Profiler 在列出与“内存子系统问题”相关的内容时将 CPU 缓存与 DRAM 混为一谈,但并未声称 CPU 缓存是“内存子系统”的一部分:
<块引用>此指标显示内存子系统问题如何影响性能。 [...]
Knights Landing 中封装内存子系统和封装外内存子系统(“主内存”)之间的手动对比:
<块引用>MCDRAM 是封装、高带宽内存子系统,它提供 读取流量的峰值带宽,但写入流量的带宽较低 (与读取相比)。 MCDRAM 提供的总带宽为 高于封装外内存子系统(即DDR内存)。