CPU Cache 和 TLB 都是微处理器中使用的硬件,但有什么区别,尤其是当有人说 TLB 也是一种缓存时?
先说第一件事。 CPU Cache是一种快速内存,用于改善从主内存 (RAM) 到 CPU 寄存器获取信息的延迟。所以 CPU Cache 位于主存和 CPU 之间。并且这个缓存会临时存储信息,以便下次访问相同信息的速度更快。用于存储可执行指令的 CPU 缓存,称为指令缓存(I-Cache)。用于存储数据的 CPU 缓存,称为数据缓存(D-Cache)。所以I-Cache和D-Cache分别加快了指令和数据的提取时间。现代处理器同时包含 I-Cache 和 D-Cache。为了完整起见,让我们也讨论一下 D-cache 层次结构。 D-Cache 通常按层次结构组织,即 1 级数据缓存、2 级数据缓存等。应该注意的是,L1 D-Cache 与 L2 D-Cache 相比更快/更小/成本更高。但是“CPU 缓存”的基本思想是加快从主内存到 CPU 的指令/数据提取时间。
仅当处理器使用虚拟内存时才需要转换后备缓冲区(即 TLB)。简而言之,TLB 通过将页表存储在更快的内存中来加速虚拟地址到物理地址的转换。事实上,TLB 也位于 CPU 和主存之间。准确地说,TLB 是 MMU 需要将虚拟地址转换为物理地址时使用的。通过将这种虚拟-物理地址的映射保存在快速内存中,可以改进对页表的访问。应该注意的是页表(它本身存储在 RAM 中)跟踪虚拟页面在物理内存中的存储位置。从这个意义上说,TLB 也可以被认为是页表的缓存。
但是TLB和CPU Cache e 的操作范围是不同的。 TLB 是关于“加速虚拟内存的地址转换”,因此不需要为每个地址访问页表。 CPU 缓存是关于“加速主内存访问延迟”,以便 CPU 不会总是访问 RAM。 TLB 操作发生在 MMU 进行地址转换时,而 CPU 缓存操作发生在 CPU 访问内存时。事实上,任何现代处理器都部署了所有 I-Cache、L1 & L2 D-Cache 和 TLB。
如果您觉得以上有用,请点赞/分享。另外,请给我们留言以获得进一步的说明或信息。我们很乐意帮助和学习🙂