如何将缓存块从 RAM 中提取到 cpu?
How are cache blocks fetched from RAM into the cpu?
我正在学习更多关于 CPUs 的理论方面的知识,并且我阅读了有关如何使用缓存将 line/block 内存从 RAM 提取到更靠近 CPU 可以更快地访问(我认为它需要更少的时钟周期,因为 CPU 不需要将下一个字的整个地址移动到寄存器中,而且它更接近 CPU 物理上)。
但是现在我不清楚具体的实现方式。 CPU 通过数据总线连接到 RAM,在现代机器中,该总线可以是 32 位或 64 位宽。但在某些情况下,L3 缓存的大小可能高达 32MB,而且我非常相信不会有数百万条数据线从 RAM 传输到 CPU 的缓存。即使是只有几 KB 的微型比较 L1 缓存也需要数百甚至数千个时钟周期才能仅通过该微型数据总线从 RAM 中获取数据。
所以我想了解的是,CPU 缓存到底是如何实现的,以便在传输如此多的信息的同时仍然保持高效?在过去的几十年中,是否有任何简单(相对)CPU 的示例,我可以查看并了解他们如何实现该架构的这一部分?
事实证明,实际上有一条非常宽的总线可以在缓存级别之间移动信息。感谢 Peter 在评论中向我指出并提供有用的链接以供进一步阅读。
由于您想要实现 CPU 缓存和 RAM(主内存),这里有一个有用的模拟 link,您可以在其中给出 RAM 和缓存的大小并查看它们如何工作。
https://www3.ntu.edu.sg/home/smitha/ParaCache/Paracache/dmc.html
我正在学习更多关于 CPUs 的理论方面的知识,并且我阅读了有关如何使用缓存将 line/block 内存从 RAM 提取到更靠近 CPU 可以更快地访问(我认为它需要更少的时钟周期,因为 CPU 不需要将下一个字的整个地址移动到寄存器中,而且它更接近 CPU 物理上)。
但是现在我不清楚具体的实现方式。 CPU 通过数据总线连接到 RAM,在现代机器中,该总线可以是 32 位或 64 位宽。但在某些情况下,L3 缓存的大小可能高达 32MB,而且我非常相信不会有数百万条数据线从 RAM 传输到 CPU 的缓存。即使是只有几 KB 的微型比较 L1 缓存也需要数百甚至数千个时钟周期才能仅通过该微型数据总线从 RAM 中获取数据。
所以我想了解的是,CPU 缓存到底是如何实现的,以便在传输如此多的信息的同时仍然保持高效?在过去的几十年中,是否有任何简单(相对)CPU 的示例,我可以查看并了解他们如何实现该架构的这一部分?
事实证明,实际上有一条非常宽的总线可以在缓存级别之间移动信息。感谢 Peter 在评论中向我指出并提供有用的链接以供进一步阅读。
由于您想要实现 CPU 缓存和 RAM(主内存),这里有一个有用的模拟 link,您可以在其中给出 RAM 和缓存的大小并查看它们如何工作。
https://www3.ntu.edu.sg/home/smitha/ParaCache/Paracache/dmc.html