内存实时延迟
Ram real time latency
我在某处读到,要找到 ram 的真实延迟,您可以使用以下规则:
1/((RAMspeed/2)/1000) x CL = True Latency in nanoseconds
即对于具有 400Mhz 时钟速度的 DDR1,我认为除以 2 以获得 FSB 速度或在这种情况下为 200Mhz 的实际总线速度是否合乎逻辑。所以上面的规则似乎对 DDR1 是正确的。
另一方面,根据文章“每个程序员都应该了解内存”。
因此,对于时钟速度为 800Mhz 的 DDR2,要找到 "True Latency",上述规则应相应更改为
1/((RAMspeed/4)/1000) x CL = True Latency in nanoseconds
对吗?因为在所有情况下,我读到正确的方法是 <strong>RAMspeed/2</strong>
无论是 DDR、DDR2、DDR3 还是 DDR4 .
获得真实延迟的正确方法是什么?
好的,我找到了答案。
每次制造商提高内存时钟速度时,他们都会以恒定速率进行,这始终是 FSB 时钟速度的两倍 (2x)。即
MEM CLK FSB
-------------------
DDR200 100 MHz
DDR266 133 MHz
DDR333 166 MHz
DDR400 200 MHz
DDR2-400 200 MHz
DDR2-533 266 MHz
DDR2-667 333 MHz
DDR2-800 400 MHz
DDR2-1066 533 MHz
DDR3-800 400 MHz
DDR3-1066 533 MHz
DDR3-1333 666 MHz
DDR3-1600 800 MHz
所以,内存条一直是外频的两倍。
CAS 延迟在 memory-bus 个时钟周期内。这始终是 transfers-per-second 数字 的二分之一。例如DDR3-1600 具有 800MHz 的内存时钟,每秒进行 1600M 传输(在突发传输期间)。
DDR2、DDR3 和 DDR4 仍然使用 double-pumped 64 位内存总线(在时钟信号的上升沿和下降沿传输数据),而不是 quad-pumped。这就是为什么他们仍然被称为 Double Data-Rate (DDR) SDRAM.
与FSB速度无关.
在没有集成内存控制器的旧 CPU 上,即实际上 具有 FSB 的系统,其频率通常可独立于内存进行配置(在 BIOS 中)速度。参见Front Side Bus and RAM speed;在更老的系统上,FSB 和内存时钟是同步的。
通常系统设计有足够快的 FSB 以跟上内存控制器。 运行 与内存时钟速度相同的 FSB 可以通过避免时钟域之间的缓冲来减少延迟。
所以是的,CAS 延迟(以秒为单位)是 cycle_count / frequency
,或者更像您的公式
1000ns/us * CL / RAMspeed * 2 transfers/clock
,其中 RAMspeed 为每秒 mega-transfers。
更高内存频率下的更高 CL 数字通常会产生类似的绝对延迟(以秒为单位)。换句话说,现代 RAM 具有更高的 CAS 延迟时序数,因为在相同的时间内发生了更多的时钟周期。
带宽已大大改善,而延迟几乎保持不变,according to these graphs from Crucial 这解释了 CL 与频率的关系。
当然这不是"the memory latency",也不是"true"内存延迟。
是DRAM本身的CAS延迟,是内存控制器和DRAM之间延迟的最主要因素,但只是CPU之间延迟的一部分核心和内存。在内核和非内核(L3 和内存控制器)之间的 CPU 内部存在 non-negligible 延迟。 Uncore 是 Intel 的术语; IDK AMD 在其各种微体系结构中称之为内存层次结构的部分。
特别是 many-core Xeon CPUs 对 L3 / 内存控制器有明显的延迟,因为连接所有内核的大型环形总线。 many-core Xeon 的 L3 和内存延迟比具有相同内存和 CPU 时钟频率的类似双核或 quad-core 更差。
这种额外的延迟实际上限制了 single-thread / single-core 大型 Xeon 上的带宽,比笔记本电脑更糟糕 CPU,因为单个内核无法保持足够的请求在飞行中用那么多的延迟填充内存管道。 .
我在某处读到,要找到 ram 的真实延迟,您可以使用以下规则:
1/((RAMspeed/2)/1000) x CL = True Latency in nanoseconds
即对于具有 400Mhz 时钟速度的 DDR1,我认为除以 2 以获得 FSB 速度或在这种情况下为 200Mhz 的实际总线速度是否合乎逻辑。所以上面的规则似乎对 DDR1 是正确的。
另一方面,根据文章“每个程序员都应该了解内存”。
因此,对于时钟速度为 800Mhz 的 DDR2,要找到 "True Latency",上述规则应相应更改为
1/((RAMspeed/4)/1000) x CL = True Latency in nanoseconds
对吗?因为在所有情况下,我读到正确的方法是 <strong>RAMspeed/2</strong>
无论是 DDR、DDR2、DDR3 还是 DDR4 .
获得真实延迟的正确方法是什么?
好的,我找到了答案。
每次制造商提高内存时钟速度时,他们都会以恒定速率进行,这始终是 FSB 时钟速度的两倍 (2x)。即
MEM CLK FSB
-------------------
DDR200 100 MHz
DDR266 133 MHz
DDR333 166 MHz
DDR400 200 MHz
DDR2-400 200 MHz
DDR2-533 266 MHz
DDR2-667 333 MHz
DDR2-800 400 MHz
DDR2-1066 533 MHz
DDR3-800 400 MHz
DDR3-1066 533 MHz
DDR3-1333 666 MHz
DDR3-1600 800 MHz
所以,内存条一直是外频的两倍。
CAS 延迟在 memory-bus 个时钟周期内。这始终是 transfers-per-second 数字 的二分之一。例如DDR3-1600 具有 800MHz 的内存时钟,每秒进行 1600M 传输(在突发传输期间)。
DDR2、DDR3 和 DDR4 仍然使用 double-pumped 64 位内存总线(在时钟信号的上升沿和下降沿传输数据),而不是 quad-pumped。这就是为什么他们仍然被称为 Double Data-Rate (DDR) SDRAM.
与FSB速度无关.
在没有集成内存控制器的旧 CPU 上,即实际上 具有 FSB 的系统,其频率通常可独立于内存进行配置(在 BIOS 中)速度。参见Front Side Bus and RAM speed;在更老的系统上,FSB 和内存时钟是同步的。
通常系统设计有足够快的 FSB 以跟上内存控制器。 运行 与内存时钟速度相同的 FSB 可以通过避免时钟域之间的缓冲来减少延迟。
所以是的,CAS 延迟(以秒为单位)是 cycle_count / frequency
,或者更像您的公式
1000ns/us * CL / RAMspeed * 2 transfers/clock
,其中 RAMspeed 为每秒 mega-transfers。
更高内存频率下的更高 CL 数字通常会产生类似的绝对延迟(以秒为单位)。换句话说,现代 RAM 具有更高的 CAS 延迟时序数,因为在相同的时间内发生了更多的时钟周期。
带宽已大大改善,而延迟几乎保持不变,according to these graphs from Crucial 这解释了 CL 与频率的关系。
当然这不是"the memory latency",也不是"true"内存延迟。
是DRAM本身的CAS延迟,是内存控制器和DRAM之间延迟的最主要因素,但只是CPU之间延迟的一部分核心和内存。在内核和非内核(L3 和内存控制器)之间的 CPU 内部存在 non-negligible 延迟。 Uncore 是 Intel 的术语; IDK AMD 在其各种微体系结构中称之为内存层次结构的部分。
特别是 many-core Xeon CPUs 对 L3 / 内存控制器有明显的延迟,因为连接所有内核的大型环形总线。 many-core Xeon 的 L3 和内存延迟比具有相同内存和 CPU 时钟频率的类似双核或 quad-core 更差。
这种额外的延迟实际上限制了 single-thread / single-core 大型 Xeon 上的带宽,比笔记本电脑更糟糕 CPU,因为单个内核无法保持足够的请求在飞行中用那么多的延迟填充内存管道。