问题标签 [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 回答
1719 浏览

memory-management - AMD 的页表扩展中的 ASID 何时不再有效?

IA-32 定义了 CPU 可能使整个 TLB 无效的各种情况。从 AMD 在 Opteron Rev-F 处理器(巴塞罗那?)中发布的 ASID 扩展开始,有些情况下只有某个 ASID 的 TLB 条目无效。

问题是,ASID 本身是否会停止有效?Hypervisor 在使用它之前是否必须检查 ASID 是否有效?

0 投票
1 回答
290 浏览

multithreading - 操作系统尝试最小化 TLB 刷新的难度有多大?

我想知道操作系统中是否实现了一种通用机制来最小化 TLB 刷新,例如通过将同一进程中的线程分组到“待调度”列表中。

我认为这是决定在线程上使用进程时的一个重要因素。如果操作系统不关心下一个线程是否在同一个进程空间中,那么线程“最小化 TLB 刷新”的所谓优势可能被高估了。是这样吗?

考虑一个具有数百个线程和数十个进程的系统。如果这些没有以串联方式在同一进程中调度线程的方式进行优化,我们对线程性能的期望可能不会那么大。

如果问题不是那么清楚,我会举例说明。

0 投票
4 回答
23594 浏览

caching - Cache和Translation LookAside Buffer的区别[TLB]

Cache 和 Translation LookAside Buffer [TLB] 有什么区别?

0 投票
3 回答
290 浏览

copy - 可以通过修改页表来移动内存页吗?

是否有可能(在任何合理的操作系统上,最好是 Linux)仅通过修改页表而不实际移动任何数据来交换两个内存页的内容?

动机是密集矩阵转置。如果数据被页面​​大小阻塞,则可以在页面内转置数据(适合缓存),然后交换页面以将块移动到最终位置。一个大矩阵会移动很多页,所以希望刷新 TLB 不会造成麻烦。

0 投票
1 回答
1289 浏览

operating-system - 操作系统 - TLB

我正在努力解决这个问题(好吧,tbh 在考试前一晚死记硬背:) 但我无法弄清楚(也无法在网上找到一个好的高级概述):

'页表条目可以映射到多个 TLB 条目。例如,如果每个页表条目都映射到两个 TLB 条目,这被称为 2-way set associative TLB'

我的问题是,为什么我们要不止一次地映射它?我们肯定希望在 TLB 中表示最大数量的可能条目,重复会浪费空间吗?我错过了什么?

非常感谢

0 投票
5 回答
3414 浏览

performance - 在什么情况下大页面可以产生加速?

现代 x86 CPU 能够支持比传统 4K 更大的页面大小(即 2MB 或 4MB),并且有操作系统工具(LinuxWindows)可以访问此功能。

上面的微软链接指出大页面“提高了翻译缓冲区的效率,这可以提高频繁访问的内存的性能”。这对于预测大页面是否会改善任何给定情况并不是很有帮助。我对移动一些程序逻辑(或整个应用程序)以使用大页面导致一些性能改进的具体的、最好是量化的示例感兴趣。有人有成功案例吗?

我自己知道一个特殊情况:使用大页面可以显着减少分叉大型进程所需的时间(大概是因为需要复制的 TLB 记录的数量减少了大约 1000 倍)。我感兴趣的是大页面是否也可以在不那么奇特的场景中带来好处。

0 投票
2 回答
1801 浏览

operating-system - MMU 和 TLB 未命中

假设如下。我有一个带有虚拟内存和一个杠杆分页的系统,我有一个 MMU,TLB 是由软件控制的。

好的..所以想象我是一个进程,我想在虚拟地址 vaddr 的 RAM 中读取一个单词。

因此,CPU 给出了 MMU vaddr,MMU 在 TLB 中检查是否存在(假设)5 个最高有效位 vaddr 的条目。如果它在那里......一切都很好,它会计算物理地址并且一切正常。

现在..假设它不在 TLB 中。在这种情况下,MMU 会产生中断(页面错误)。好的..现在我在页面错误的处理程序中。

在 PBR(页基址寄存器)中,我有页表的起始地址。我的问题在这里。这个地址是物理地址吗?我想是的,因为如果它是虚拟的,则意味着两件事:1)必须以某种方式保留在进程的虚拟地址空间中(从未听说过类似的东西)2)如果该地址不在 TLB 中,会导致再次页面错误,我将有一个无限循环。

关于表中地址的相同问题。如果我有两级分页。第一级表(指向第二级表)中的条目中的地址是虚拟的还是物理的?

谢谢。

0 投票
1 回答
778 浏览

memory-management - 构建基于软件的 MMU 和 TLB

我正在尝试破解旧的 unix 内核。我只想使用软件实现 MMU 和 TLB。有人可以告诉我在构建一个时使用的最佳数据结构和算法是什么。我看到很多人使用伸展树,因为它很容易实现 LRU。有没有更好的数据结构?在软件中将虚拟地址转换为物理地址的最有效方法是什么。假设它的 x86 架构和转换是任何基本的页表转换。

0 投票
9 回答
150472 浏览

memory-management - 逻辑地址和物理地址的区别?

我正在阅读操作系统概念,我在第 8 章!但是,我可以使用一些澄清或保证我的理解是正确的。

逻辑地址:根据本书,逻辑地址是由 CPU 生成的。这到底是什么意思?(在执行生成的地址系统中..)我假设为程序编译代码时,程序知道代码将在内存中加载到哪里。编译器所做的只是设置程序布局的一般草图以及图像的布局方式,但不会为其分配任何实际地址。当程序执行时,CPU 获取编译器制作的布局图像,并将一些地址(逻辑地址)分配给从代码生成的地址。

物理地址:直到 CPU 生成一组逻辑地址(由基地址和偏移量组成)之后才会生成物理地址。逻辑地址通过 MMU 或其他设备,并且沿线路的某处将逻辑地址映射到物理 RAM 地址。

那么实际的区别是什么?我可以看到一个好处。使用逻辑地址给应用程序更多的自由。如果物理地址是硬编码的,那么程序的成功将在很大程度上取决于物理计算机、可用的 RAM 地址等。

使用转换为物理地址的逻辑地址不是强加了两个步骤而不是一对一,因此不是更多的开销吗?

那么逻辑地址在生成后驻留在哪里?当 CPU 为进程提供服务时,它们可能存在于 CPU 上的寄存器中,但在此之前和之后,它们会去哪里?我知道这取决于实现。我假设它们可能存储在 CPU 上的某些特殊寄存器空间或缓冲区中,例如 TLB,对吗?如果不是,那么该表可能存在于实际的 RAM 本身中,并且 CPU 仅保存指向 RAM 中表的基地址的指针/地址,对吗?

将地址保存在 RAM 中似乎与逻辑内存地址的目的相反。我只能假设我的理解是不正确的。

0 投票
3 回答
33295 浏览

caching - 什么是 TLB 击落?

什么是 SMP 中的 TLB 击落?

我无法找到有关此概念的太多信息。任何好的例子将不胜感激。