有人能解释一下TLB(翻译后备缓冲区)丢失和缓存丢失之间的区别吗?
我相信我发现TLB指的是某种虚拟内存地址,但我不太清楚这实际上意味着什么?
我理解当一个内存块(缓存行的大小)被加载到(L3?)缓存中并且如果当前缓存行中没有保存所需的地址时,缓存未命中会导致缓存未命中-这是缓存未命中。
今天所有的现代操作系统都使用虚拟内存。CPU生成的每个地址都是虚拟的。有些页表将这些虚拟地址映射到物理地址。TLB只是页表条目的缓存。
另一方面,L1、L2、L3高速缓存主存储器内容。
当虚拟内存地址=的映射时,会发生TLB未命中
当CPU需要缓存中没有的东西时,就会发生缓存丢失。然后在主内存(RAM)中查找数据。如果不存在,则必须从辅助内存(硬盘)中获取数据。
在PC中加载第一个指令地址(即虚拟地址)之后的以下序列使得TLB未命中和高速缓存未命中的概念非常清楚。
第一条指令•访问第一条指令
>
分配页面帧,从磁盘读取页面,更新PTE,在iTLB中加载PTE,重新启动获取现在你有了物理地址
访问Icache:未命中
来源https://software.intel.com/en-us/articles/recap-virtual-memory-and-cache
正如两个过程的方法所提到的。从性能的角度来看,缓存未命中不一定会使CPU失速。使用算法预取技术可以容忍少量缓存未命中。然而,TLB未命中会导致CPU停止,直到TLB被更新为新地址。换句话说,预取可以掩盖缓存未命中,但不能掩盖TLB未命中。