![计算机是否仍受到 RAM 频率的限制?](https://linux22.com/image/1635492/%E8%AE%A1%E7%AE%97%E6%9C%BA%E6%98%AF%E5%90%A6%E4%BB%8D%E5%8F%97%E5%88%B0%20RAM%20%E9%A2%91%E7%8E%87%E7%9A%84%E9%99%90%E5%88%B6%EF%BC%9F.png)
我的朋友想为他的 PC 购买最新的 i9 处理器,我告诉他那是浪费钱,因为计算机的所有组件都必须以相同的频率运行,而且处理器比 RAM 内存要先进得多。
如果 RAM 以 1Ghz 运行(只是说)并且处理器以 2Ghz 运行,则整个计算机将以 1Ghz 运行。
他说现在情况已经不再如此,但当我问他有什么变化时,他却不知道该说什么。
那么,有人能给我们解释一下吗?也许也可以提供一些来源
谢谢。
答案1
计算机的所有组件必须以相同的频率运行
这根本不是事实。您的计算机将以 60 Hz 运行 - 这是显示器的刷新率。
CPU 具有内部缓存,由于距离较近且使用的技术,缓存速度比 RAM 快得多。生产缓存的成本要高得多,而且增加缓存量会增加延迟,因此我们无法在 CPU 上放置 GB 的缓存,但现代 CPU 有几十 MB 的缓存。它甚至分为三个级别。较低级别较小但速度极快,较高级别容量更大但延迟也更大。
由于速度优势,处理器会尽可能地在缓存而不是 RAM 上操作。程序在编写时也会考虑缓存。RAM 的某个部分被访问得越近,它就越有可能出现在 L1(1 级)缓存中。当有数据看起来更相关时,先前的值会移动到 L2,然后移动到 L3,然后才移动到 RAM。同样,如果需要读取某些数据,CPU 会首先检查它是否存在于 L1 缓存中,然后是 L2、L3,最后才是 RAM。
这个描述是一个非常简化的模型,实际上由于需要协调 CPU 核心等的单独缓存,还有很多事情要做,但这足以回答您的问题。
现在,当 CPU 等待来自更高级别缓存或 RAM 的数据时,它不会空闲。它的时钟完全独立于 RAM 的时钟,并且它仍会计时。如果后续操作不依赖于当前操作的结果,它将尝试执行后续操作,甚至对结果做出有根据的猜测,并尝试根据该猜测继续工作。所有这些都是为了避免浪费时间等待 RAM。
您似乎还假设 RAM 会在每个时钟周期传输数据。事实并非如此。RAM 模块有许多延迟参数,称为时间安排其中,CL(CAS 延迟)时序与模块时钟频率相结合是最重要的。时钟/CL 可用作模块比较的粗略性能指标同一类型(例如 DDR4 与 DDR4),值越高越好。例如,2400 MHz CL15 模块比 2666 MHz CL18 模块更好,尽管时钟频率较低,因为 2400M÷15=160 M 次操作/秒,而 2666M÷18≈148 M 次操作/秒。
确实如此一些时钟一些组件同步运行。特别是,Ryzen 处理器中的 IF 互连以 RAM 速度运行。在第一代 Ryzen 中,可以通过增加 RAM 时钟来超频 IF,但代价是更高的 RAM 延迟(这样可以保持整体 RAM 性能,即使使用更便宜的模块也可以达到更高的时钟)。较新的 Ryzen 和 Intel 不会从高频 RAM 中受益太多。
如果您想从集成 GPU 中榨取更多性能,那么选择更高的 RAM 时钟频率非常有意义。如果您要使用专用 GPU 和非 Ryzen 1xxx CPU,则差别并不大。购买时钟频率高于 RAM 的 CPU 绝对非常有意义。
答案2
当然不。CPU 频率是其运行速度和周期推进速度。指令需要多个周期,但它们是流水线和超标量的,因此多个指令同时在飞行中,并且在 CPU 频率的每个周期都会完成一些事情。
内存频率是指内存访问速度。内存的时序相当复杂,但它肯定不能以 CPU 的速度运行,也没有必要。首先,如今的内存被分成多个通道,这样你就可以通过访问多个模块在同一个时钟内获得更多的数据,从而在每个周期获得两倍或四倍的数据,具体取决于它是双通道还是四通道。
此外,CPU 上有两级缓存,现在更常见的是三级缓存。这是内置在芯片中的超高速内存,速度越来越快,体积越来越小。L1 速度极快,但小于 L2,L2 又小于 L3。这使得 CPU 能够以比内存更快的速度处理数据。
同样的逻辑也适用于硬盘。磁盘比内存慢得多,因此当数据在磁盘上时,获取数据的速度最初要慢得多,但内存中的相同数据可以被 CPU 更快地读取,因为内存的速度要快得多。当部分数据从内存复制到 L3 缓存、L2 缓存,最后复制到 L1 缓存时,CPU 可以非常接近最大速度访问它。
几十年前,CPU 的速度就已经超过了内存的速度,如果 4Ghz 或更高的 CPU 运行速度不能超过内存,那么出售这些 CPU 就没有意义了。你可以在 Wikipedia 上了解这个说法的出处这里和这里。不同的缩放因子正是为充分利用以不同速度运行的组件而发明的。高性能软件在编写时考虑到了所有不同的速度,并最大化了以更高速度完成的工作。一旦 CPU 完成了其对 L1 缓存中数据的所有处理,它就会从 L2 等缓存中取出一些数据,直到磁盘或网络。总是有一个最慢的链接,这会限制计算的启动速度。