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