Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Performance Ram实时延迟_Performance_Benchmarking_Frequency_Ram_Latency - Fatal编程技术网

Performance Ram实时延迟

Performance Ram实时延迟,performance,benchmarking,frequency,ram,latency,Performance,Benchmarking,Frequency,Ram,Latency,我在某个地方读到,要找到ram的真实延迟,可以使用以下规则: 1/((RAMspeed/2)/1000) x CL = True Latency in nanoseconds 对于时钟速度为400Mhz的DDR1,我认为除以2得到FSB速度还是实际总线速度是合乎逻辑的,在这种情况下为200Mhz。因此,上述规则对于DDR1似乎是正确的 另一方面,根据《每个程序员都应该知道的内存》一文,DDR2还将总线的频率比上一代DDR1(即每时钟周期4位)提高了一倍 因此,对于时钟速度为800Mhz的DDR

我在某个地方读到,要找到ram的真实延迟,可以使用以下规则:

1/((RAMspeed/2)/1000) x CL = True Latency in nanoseconds
对于时钟速度为400Mhz的DDR1,我认为除以2得到FSB速度还是实际总线速度是合乎逻辑的,在这种情况下为200Mhz。因此,上述规则对于DDR1似乎是正确的

另一方面,根据《每个程序员都应该知道的内存》一文,DDR2还将总线的频率比上一代DDR1(即每时钟周期4位)提高了一倍

因此,对于时钟速度为800Mhz的DDR2,要找到“真实延迟”,上述规则应相应更改为

1/((RAMspeed/4)/1000) x CL = True Latency in nanoseconds
对吗?因为在所有情况下,我都了解到正确的方法是采用RAMspeed/2,无论是DDR、DDR2、DDR3还是DDR4

哪种方法是获得真实延迟的正确方法?

好的,我找到了答案

每次制造商提高内存时钟速度时,他们都是以恒定速率进行的,该速率始终是FSB时钟速度的两倍(2x)。即


因此,内存模块的速度始终是FSB的两倍。

CAS延迟在内存总线时钟周期内。这始终是每秒传输数的一半。e、 g.DDR3-1600具有800MHz的内存时钟,每秒进行1600M传输(在突发传输期间)

DDR2、DDR3和DDR4仍然使用双泵64位内存总线(在时钟信号的上升沿和下降沿传输数据),而不是四泵。这就是为什么他们仍然被称为


FSB速度与此无关

在没有集成内存控制器的旧CPU上,即实际上有FSB的系统上,其频率通常可以与内存速度分开配置(在BIOS中)。看见在更旧的系统上,FSB和内存时钟是同步的

通常,系统设计有足够快的FSB来跟上内存控制器。以与内存相同的时钟速度运行FSB可以通过避免时钟域之间的缓冲来减少延迟


因此,是的,以秒为单位的CAS延迟是
周期计数/频率
,或者更像您的公式
1000ns/us*CL/RAMspeed*2次传输/时钟
,其中RAMspeed以每秒兆次传输为单位

较高的CL值和较高的内存频率通常会产生类似的绝对延迟(以秒为单位)。换句话说,现代RAM具有更高的CAS延迟计时数,因为在相同的时间量中发生更多的时钟周期

带宽大大提高,而延迟几乎保持不变,这解释了CL与频率的关系


当然,这不是“记忆延迟”,也不是“真正的”记忆延迟

这是DRAM本身的CAS延迟,是内存控制器和DRAM之间延迟的最重要因素,但只是CPU核心和内存之间延迟的一部分。在核心和非核心(L3和内存控制器)之间的CPU内部存在不可忽略的延迟。Uncore是英特尔的术语;IDK AMD在其各种微体系结构中称之为内存层次结构的部分

尤其是许多核心Xeon CPU对L3/内存控制器具有显著的延迟,因为连接所有核心的大型环形总线(es)。与具有相同内存和CPU时钟频率的类似双核或四核Xeon相比,多核Xeon具有更差的L3和内存延迟


这种额外的延迟实际上限制了大型Xeon上的单线程/单核带宽,使其比笔记本电脑CPU更差,因为单核无法保持足够的请求,以使内存管道充满如此大的延迟

这个问题是从“每个程序员都应该知道关于内存的什么”这篇文章中得到启发的,当然它与程序员有关——没有通用的公式。记忆比一篇简单的文章要复杂得多。有L1、L2、L3缓存,对某些类型的多核系统有影响,有多通道内存,等等。在过去,我们只有一个CPU,它以1:1的核心时钟速度直接连接到系统内存,但那些日子早已过去了。我不是在开玩笑。没有简单的公式。单核机器已经不存在了,在多核机器中,特别是那些有四个或更多核的机器中,内存结构异常复杂。从英特尔到AMD再到ARM,它也有很大的不同。延迟和时钟速度只是松散相关。比DDR4内存“慢”的DDR3内存实际上具有更快的第一字节响应时间,但带宽较低。DDR SDRAM延迟的变化比公式所示的要大。在已经打开的DRAM页(与4k虚拟内存页不相同或大小不同)内进行另一次访问的延迟较低,因此即使在16kiB左右的范围内,访问的位置也可能很重要,而不仅仅是在同一缓存线或同一4k页(TLB条目)内。(正如我对答案的评论,这只是在谈论内存控制器和DRAM之间的延迟,忽略CPU内部执行内核和内存控制器之间的延迟,尤其是套接字之间的延迟。这是不可忽略的。再次强调,这不是编程问题,这是离题的。带有集成内存控制器的CPU不会ve前端总线(将CPU连接到北桥)。不再有northbridge;它被集成到CPU中。无论如何,这个答案似乎只是简单地说明内存时钟速度与FSB匹配,因此每秒内存传输的频率是频率的两倍,在时钟信号的上下边缘传输数据。这就是字面上的意思。充其量这就是might告诉您一些关于内存控制器和DRAM之间的延迟,但是执行之间仍然存在未知的延迟量
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