TLB未命中缓存未命中?

mez*_*hic 24 performance caching operating-system cpu-architecture tlb

有人可以解释TLB(翻译后备缓冲区)未命中和缓存未命中之间的区别吗?

我相信我发现TLB指的是某种虚拟内存地址,但我并不清楚这实际意味着什么?

我理解当一块内存(缓存行的大小)被加载到(L3?)缓存中并且如果所需的地址没有保存在当前缓存行中时,会导致缓存未命中 - 这是缓存未命中.

Hin*_*dol 31

那么,今天的所有现代操作系统都使用称为虚拟内存的东西.CPU生成的每个地址都是虚拟的.有一些页表将这些虚拟地址映射到物理地址.TLB只是页表条目的缓存.

另一方面,L1,L2,L3缓存高速缓存主存储器内容.

virtual memory address => physical memory addressCPU请求的虚拟地址的映射不在TLB中时,发生TLB未命中.然后必须从页表中将该条目提取到TLB中.

当CPU需要不在缓存中的内容时,会发生缓存未命中.然后在主存储器(RAM)中查找数据.如果不存在,则必须从辅助存储器(硬盘)获取数据.

  • 好吧,早期的32位CPU用于生成32位地址~4GB的可寻址内存.但RAM量通常小于4GB.现在,如果您有1GB RAM,则无法运行需要1GB以上可寻址内存的程序.那么为什么不愚弄程序让人相信你有4GB内存?只有一小部分程序数据驻留在RAM中,其余部分驻留在硬盘中.这就是虚拟内存的作用.您可以在[维基百科文章](http://en.wikipedia.org/wiki/Virtual_memory)中阅读所有相关内容.当前的64位CPU也使用虚拟内存.现在只有虚拟地址长度为48位. (5认同)