问题标签 [tlb]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2597 浏览

caching - 缺页和脏页

我已经开始阅读有关 CPU 缓存的信息,我有两个问题:

1) 假设 CPU 收到页面错误并将控制权转移给内核处理程序。处理程序决定驱逐内存中标记为脏的帧。可以说 CPU 缓存用有效和修改的位写回。现在,此帧的内存内容已过时,缓存包含最新数据。内核如何强制缓存刷新?

2)页表条目(PTE)被标记为脏的方式如下:TLB有一个修改位,当CPU修改页面内容时设置。该位在上下文切换时被复制回 PTE。如果我们得到一个页面错误,PTE 可能是非脏的,但 TLB 条目可能设置了修改的位(它还没有被复制回来)。这种情况如何解决?

0 投票
2 回答
23947 浏览

caching - 需求分页:计算有效内存访问时间

我无法理解这个问题的答案:

考虑使用带有 TLB 寄存器的一级分页的操作系统。如果缺页率为 10%,需要时重新加载脏页,计算有效访问时间:

  • TLB 查找 = 20 ns
  • TLB 命中率 = 80%
  • 内存访问时间 = 75 ns
  • 交换页面时间 = 500,000 ns
  • 50% 的页面是脏的。

回答:

T = 0.8(TLB+MEM) + 0.2 ( 0.9[TLB+MEM+MEM] + 0.1[TLB+MEM + 0.5(磁盘) + 0.5(2磁盘+MEM)] ) = 15,110 ns

你能解释一下为什么吗?

0 投票
1 回答
1020 浏览

x86 - TLB 和 PTE 中的引用和修改位

您可能知道这些为 Accessed 和 Dirty 位。现在 x86 PTE包含这些位。假设 TLB 也包含这些位。在 TLB 命中的情况下,如果它们所引用的页框被访问或修改,这些位将由硬件设置。我的问题是这些位何时被硬件复制回 PTE 以及这究竟是如何完成的(尤其是在软件管理 TLB 的情况下)?

PS - 我想知道这一点,因为我正在尝试设计和测试页面替换算法。

0 投票
4 回答
2638 浏览

caching - 缓存和TLB命中率的关系

下面是一个操作系统(Gate 2003 OS)的MMU的描述:

处理器使用 2 级页表进行虚拟到物理地址的转换。两个级别的页表都存储在主存储器中。虚拟地址和物理地址都是 32 位宽。存储器是字节可寻址的。对于虚拟地址到物理地址的转换,虚拟地址的 10 个最高有效位用作第一级页表的索引,而接下来的 10 位用作第二级页表的索引。虚拟地址的 12 个最低有效位用作页面内的偏移量。假设两级页表中的页表项都是 4 个字节宽。此外,处理器具有翻译后备缓冲区(TLB),命中率高达 96%。TLB 缓存最近使用的虚拟页号和相应的物理页号。该处理器还有一个物理寻址的高速缓存,命中率为 90%。主存访问时间为10ns,缓存访问时间为1ns,TLB访问时间也是1ns。

问题是:

命中率 90% 的缓存和命中率 96% 的 TLB 有什么关系?操作系统首先检查哪里:数据还是指令?

0 投票
2 回答
1061 浏览

virtualization - VMM 是否在主机上使用虚拟内存?

我试图了解过去如何使用影子页表执行虚拟化。我读过的文章都在谈论从客户虚拟内存到主机物理内存的转换。我了解影子页面表如何消除访客虚拟到访客物理转换的需要。我的问题是,Host Virtual to Host Physical 步骤发生了什么。(HVA-> HPA)。

引用文章中的虚拟机管理器是否根本不使用主机中的虚拟内存?是否假定它们可以直接访问主机系统的物理内存?甚至可能吗?我认为 TLB 缓存转换是由 MMU 在硬件中实现的,并且每条指令的地址都由 MMU 本身从虚拟地址转换为物理地址。但是话又说回来,我不确定内核代码如何与 TLB 一起工作?内核指令不通过TLB吗?

0 投票
2 回答
1621 浏览

x86 - x86 上跨页面边界的软件预取

我的理解是硬件预取永远不会跨越页面边界。我想知道软件预取是否具有相同的限制,即我可以使用软件预取来避免未来的 TLB 未命中。通过四处搜索,这似乎是可能的,但我在文档中找不到任何确定的东西,所以参考会很好。

我对 Nehalem、Sandy Bridge 和 Westmere 特别感兴趣。

0 投票
2 回答
615 浏览

c - x86 上的简单 PAPI 分析中出现意外大量 TLB 未命中

我正在使用 PAPI 高级 API 来检查一个简单程序中的 TLB 未命中,该程序循环遍历一个数组,但看到的数字比预期的要大。

在其他简单的测试用例中,结果似乎相当合理,这让我认为结果是真实的,额外的未命中是由于硬件预取或类似原因造成的。

谁能解释这些数字或指出我在使用 PAPI 时的一些错误?

我希望打印的数字在 32 的区域内,或者至少是某个倍数,但始终得到 93 或更高的结果(并非始终高于 96,即不是每次迭代都只有 3 次未命中)。我正在运行固定到一个核心,上面没有其他任何东西(除了定时器中断)。

我在 Nehalem 上并且不使用大页面,因此 DTLB 中有 64 个条目(L2 中有 512 个)。

0 投票
3 回答
439 浏览

memory - TLB 物理寻址对我来说没有意义

我正在以一种简单的方式阅读 TLB 是如何工作的,但我不明白:

TLB 引用其表中的物理内存地址。它可能位于 CPU 和 CPU 缓存之间、CPU 缓存和主存储内存之间,或者位于多级缓存的各个级别之间。位置决定了缓存是使用物理寻址还是虚拟寻址。如果高速缓存被虚拟寻址,请求会直接从 CPU 发送到高速缓存,并且仅在高速缓存未命中时访问 TLB。如果缓存是物理寻址的,CPU 会对每个内存操作进行 TLB 查找,并将得到的物理地址发送到缓存。

摘要:当 TLB 位于 CPU 和 CPU 缓存之间时,它使用物理寻址,CPU 对每个内存操作进行 TLB 查找,然后将生成的物理地址发送到缓存。

我的问题:既然 CPU 处理虚拟地址,那么这个查询是如何执行的?

我不明白:CPU遇到一个虚拟地址-> CPU联系TLB,它是用物理地址寻址的-> ?? -> TLB 吐出另一个物理地址

TLB:

这对我来说完全没有意义

取自维基百科

0 投票
3 回答
1546 浏览

paging - 什么虚拟TLB?

有谁知道虚拟 TLB 是什么意思,这个 VTLB 和普通 TLB 有什么区别。我在谷歌上找不到明确的答案?

0 投票
1 回答
242 浏览

memory-management - 页面错误,二级内存地址存储在哪里

当发生 TLB 未命中,并且该页面未驻留在物理内存中时,该页面将被写回物理内存并更新页表和 TLB。

但是辅助存储器的地址存储在哪里?它如何知道在磁盘上哪里可以找到数据?