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 物理上靠近CPU的内存是否会比物理上远离CPU的内存运行得更快?_Performance_Memory_Cpu_Cpu Architecture_Ram - Fatal编程技术网

Performance 物理上靠近CPU的内存是否会比物理上远离CPU的内存运行得更快?

Performance 物理上靠近CPU的内存是否会比物理上远离CPU的内存运行得更快?,performance,memory,cpu,cpu-architecture,ram,Performance,Memory,Cpu,Cpu Architecture,Ram,考虑到计算机的工作速度,我知道这听起来像是一个愚蠢的问题,但如果说RAM中的某个地址在物理上更接近主板上的CPU,而内存地址则尽可能靠近CPU,与最远的内存地址相比,这会影响访问较近内存地址的速度吗?如果您谈论的是NUMA访问连接到此插槽的RAM,而不是通过互连访问连接到另一个插槽的RAM,那么这是众所周知的效果。否则,不会 还要注意,外部内存总线上的信号传输时间只占CPU核心总延迟缓存未命中延迟成本的很小一部分。CPU内部的排队、检查L3 cahce的时间,以及内核和内存控制器之间的内部总线,

考虑到计算机的工作速度,我知道这听起来像是一个愚蠢的问题,但如果说RAM中的某个地址在物理上更接近主板上的CPU,而内存地址则尽可能靠近CPU,与最远的内存地址相比,这会影响访问较近内存地址的速度吗?

如果您谈论的是NUMA访问连接到此插槽的RAM,而不是通过互连访问连接到另一个插槽的RAM,那么这是众所周知的效果。否则,不会

还要注意,外部内存总线上的信号传输时间只占CPU核心总延迟缓存未命中延迟成本的很小一部分。CPU内部的排队、检查L3 cahce的时间,以及内核和内存控制器之间的内部总线,所有这些加在一起。将DDR4 CAS延迟缩短1个完整的内存周期只会对整体内存性能产生很小(但可以测量)的影响(请参阅硬件评论网站对内存超频进行基准测试),而其他计时的影响更小


否,DDR4(及更早版本)内存总线与时钟同步,并期望在命令发出后在特定数量的内存时钟周期1处得到响应(因此控制器可以在不造成重叠的情况下管道化请求)。有关DDR内存命令和内存计时(以及CAS延迟与其他计时)的更多信息,请参阅

(维基百科提到早期的DRAM标准是异步的,因此,是的,他们可能会在数据准备好后立即回复。如果这恰好是一个完整的时钟周期,那么可能会加速。)

所以,记忆延迟是离散的,不是连续的,距离1毫米不能使它快几分之一纳秒唯一合理的效果是,如果您将所有内存插入DIMM插槽,使您能够运行比其他安排更严格的计时和/或更快的内存时钟。如果你想与那些试图将系统推向稳定极限的人一起体验真实世界,那就去阅读关于内存超频的内容吧。什么是最好的可能取决于主板;记录道的物理长度不是唯一的考虑因素

好吧,所有真实世界的主板固件都坚持对所有内存通道2上的所有DIMM使用相同的计时

因此,即使理论上一个DIMM可以支持比另一个DIMM更严格的计时,您也无法实际配置系统来实现这一点。例如,由于记录道更短或噪音更小,信号反射更少,因为它位于某些记录道的末端而不是中间,或者其他原因。物理上的接近并不是唯一有帮助的事情

(这可能是一件好事;跨多个DRAM通道交错物理地址空间可以让顺序读/写受益于所有通道的聚合带宽。但是如果它们以不同的速度运行,则控制器和核心之间可能会有更多的共享总线争用,并有更多的时间未使用。)

在读取每个DIMM(内存模块)上的后,固件通常会选择内存频率和计时,以确定安装了什么内存以及每个DIMM在什么频率下的额定计时

脚注1:当内存控制器和DIMM在DIMM开始将数据放入总线之前的读取命令后应该有多少个周期达成一致时,我不确定如何解释内存跟踪上的传播延迟

CAS延迟是每个DIMM的内存控制器所需的定时数

据推测,DIMM看到的数字是它使用的实际数字,内存控制器必须考虑往返传播延迟,才能知道何时真正期望读突发开始到达。其他命令延迟只是发送不同命令之间的时间间隔,因此传播延迟无关紧要:发送端的间隔等于接收端的间隔

但内存控制器看到的CAS延迟包括信号通过线路传输到DIMM和DIMM的往返传播延迟。配备DDR4-4000的现代系统的时钟频率为2GHz,周期时间为半纳秒(在上升沿和下降沿传输数据)

在光速下,0.5ns“仅”约为15cm,是其中一个的一半,而with可能会稍短一些(比如可能是其中的2/3)。在大型服务器主板上,一些DIMM距离CPU足够远,因此记录道可能有那么长,这当然是有道理的

内存DIMM的额定速度有些保守,因此即使在DDR4标准允许的范围内,它们仍应以该速度工作。我不知道细节,但我认为JEDEC在开发DDR SDRAM标准时会考虑这一点

如果DIMM在读突发开始时断言有一个“数据有效”的pin码,这将解决问题,但我在维基百科上没有看到这一点


计时是像9-9-9-24这样的数字,第一个是CAS延迟,CL。如果你想从性能调优PoV中获得更多信息,这是谷歌早期的热门产品。在前面链接的Ulrich Drepper的“每个程序员都应该知道的关于内存的内容”中,也从内存如何工作的角度进行了描述。请注意,内存时钟速度越高,给定周期数的实时性(以纳秒为单位)就越低。因此,随着时钟频率的增加甚至降低,CAS延迟和其他计时在纳秒内几乎保持不变。这是一张桌子


脚注2:除非我们讨论的是特别快的内存,用作较大主内存的暂存器或缓存,但仍然是片外内存。e、 g.16GB的on卡,与384GB的常规DDR4分开。但更快的内存通常是焊接下来的,所以计时是固定的,而不是嵌装DIMM。所以我认为公平地说是t