performance - TLB 未命中与缓存未命中?

标签 performance caching operating-system cpu-architecture tlb

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

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

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

最佳答案

好吧,今天所有的现代操作系统都使用称为虚拟内存的东西。 CPU 生成的每个地址都是虚拟的。存在将此类虚拟地址映射到物理地址的页表。 TLB 只是页表条目的缓存。

另一方面,L1、L2、L3 缓存缓存主存内容。

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

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

关于performance - TLB 未命中与缓存未命中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10446301/

相关文章:

android - 改进 Windows 7 x64 上的 Android 模拟器性能

javascript - Facebook Graph API 缓存 JSON 响应

operating-system - 32 位处理器如何处理 4 GB 的内存

c - 为什么 floor() 这么慢?

Android:相机、onSurfaceTextureUpdated、Bitmap.getPixels - 帧率从 30 下降到 3

javascript - 如何在浏览器中存储可被两个域访问的数据

php - 在生产环境中处理 Symfony 的缓存

c++ - 从程序集引导加载程序调用 C++

io - 了解内存映射文件

java - 关于lunarlander例子的简单问题