CPU 实际上从哪个内存读取数据?

CPU 实际上从哪个内存读取数据?

按照我自己的理解,对于需要CPU处理的数据,应该放在内存与此同时,CPU 本身也高速缓存存储器,也用于访问数据。众所周知,CPU 缓存比任何其他类型的内存都“更接近”CPU 并且速度更快。但我不太清楚,数据是否必须放在 CPU 缓存中才能处理?如果是,缓存如何保存大量数据?(与 RAM 相比,缓存大小往往很小,最多几 MB,通常小于 1)如果不是,CPU 如何决定将哪部分数据保存在其缓存中?

我对交换也有点困惑。CPU 是否可以将其视为 RAM 的一部分并直接从 HDD 处理保存在那里的数据?

答案1

CPU 上的缓存并不存储数据,它只是加快访问速度。

对缓存的最基本解释是,当 CPU 从 RAM 读取特定字节时,该数据也会被复制到缓存中。下次 CPU 需要读取该字节时,内存控制器会发现它在缓存中,因此它不会缓慢地调用 RAM,而是直接将缓存中的数据传递给 CPU。

但这个解释存在两个具体问题:

  1. 缓存的大小是有限的。因此,当添加数据时,您最终需要删除(或“丢弃”)旧数据以腾出空间。有很多方法可以做到这一点,具体方法与本讨论无关,但重要的是,一段时间后,数据可能不再位于缓存中,然后您无论如何都必须转到主内存。

  2. 写入数据时,您还需要更新或删除缓存中之前存储在该地址的数据。处理此问题的主要方法有三种:

    • 写回:使用写回方法,数据首先写入缓存,然后最终写入主内存。这对性能有很多好处,但在某些情况下可能会导致问题。
    • 直写:使用直写方法,数据会同时写入缓存和主内存。与回写相比,其性能较低,但更安全。
    • 绕写:使用绕写方法,数据直接写入主内存,然后从缓存中删除位于同一位置的数据。除非非常特殊,否则很少使用这种方法。

因此,要回答您关于 RAM 与 CPU 缓存的问题,从技术上讲两者都有,但几乎所有情况下数据最终都来自 RAM。如果您有兴趣进一步了解这方面的内容,我建议您阅读以下两篇维基百科文章:

https://en.wikipedia.org/wiki/Cache_(计算)

https://en.wikipedia.org/wiki/CPU_cache

现在,关于交换空间的问题,这是一个完全不同的概念,它与虚拟内存和分页有关。在这里解释这一点将导致我写出几篇维基百科文章的大部分内容,因此我直接向您指出相关文章:

https://en.wikipedia.org/wiki/Virtual_memory

https://en.wikipedia.org/wiki/Paging

相关内容