答案1
CPU 上的缓存并不存储数据,它只是加快访问速度。
对缓存的最基本解释是,当 CPU 从 RAM 读取特定字节时,该数据也会被复制到缓存中。下次 CPU 需要读取该字节时,内存控制器会发现它在缓存中,因此它不会缓慢地调用 RAM,而是直接将缓存中的数据传递给 CPU。
但这个解释存在两个具体问题:
缓存的大小是有限的。因此,当添加数据时,您最终需要删除(或“丢弃”)旧数据以腾出空间。有很多方法可以做到这一点,具体方法与本讨论无关,但重要的是,一段时间后,数据可能不再位于缓存中,然后您无论如何都必须转到主内存。
写入数据时,您还需要更新或删除缓存中之前存储在该地址的数据。处理此问题的主要方法有三种:
- 写回:使用写回方法,数据首先写入缓存,然后最终写入主内存。这对性能有很多好处,但在某些情况下可能会导致问题。
- 直写:使用直写方法,数据会同时写入缓存和主内存。与回写相比,其性能较低,但更安全。
- 绕写:使用绕写方法,数据直接写入主内存,然后从缓存中删除位于同一位置的数据。除非非常特殊,否则很少使用这种方法。
因此,要回答您关于 RAM 与 CPU 缓存的问题,从技术上讲两者都有,但几乎所有情况下数据最终都来自 RAM。如果您有兴趣进一步了解这方面的内容,我建议您阅读以下两篇维基百科文章:
https://en.wikipedia.org/wiki/Cache_(计算)
https://en.wikipedia.org/wiki/CPU_cache
现在,关于交换空间的问题,这是一个完全不同的概念,它与虚拟内存和分页有关。在这里解释这一点将导致我写出几篇维基百科文章的大部分内容,因此我直接向您指出相关文章: