提问者:小点点

TLB未命中vs缓存未命中?


有人能解释一下TLB(翻译后备缓冲区)丢失和缓存丢失之间的区别吗?

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

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


共3个答案

匿名用户

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

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

虚拟内存地址=的映射时,会发生TLB未命中

当CPU需要缓存中没有的东西时,就会发生缓存丢失。然后在主内存(RAM)中查找数据。如果不存在,则必须从辅助内存(硬盘)中获取数据。

匿名用户

在PC中加载第一个指令地址(即虚拟地址)之后的以下序列使得TLB未命中和高速缓存未命中的概念非常清楚。

第一条指令•访问第一条指令

>

  • 开始PC
  • 使用从PC提取的VPN访问iTLB:iTLBmiss
  • 调用iTLBmiss处理程序
  • 计算PTE地址
  • 如果PTE缓存在L1数据和L2缓存中,请使用PTE地址查找它们:您也会错过那里
  • 访问主存储器中的页表:PTE无效:页错误
  • 调用页面故障处理程序
  • 分配页面帧,从磁盘读取页面,更新PTE,在iTLB中加载PTE,重新启动获取现在你有了物理地址

    访问Icache:未命中

    来源https://software.intel.com/en-us/articles/recap-virtual-memory-and-cache

  • 匿名用户

    正如两个过程的方法所提到的。从性能的角度来看,缓存未命中不一定会使CPU失速。使用算法预取技术可以容忍少量缓存未命中。然而,TLB未命中会导致CPU停止,直到TLB被更新为新地址。换句话说,预取可以掩盖缓存未命中,但不能掩盖TLB未命中。