首页 文章
  • 0 votes
     answers
     views

    内存 - 分页和TLB

    我对以下任务有疑问 . 考虑一个IA-32系统,其中MMU支持两级页表 . 第二级包含1024个页表条目,映射到4 KB页面帧 . 每个页表条目(两个级别)的大小为4个字节 . 系统仅支持4 KB页面大小 .我们希望从虚拟内存开始连续读取8 MB,从字节0开始 . 我们一次读取一个字(4个字节)我们有一个8项数据TLB . 读取上面指定的8 MB内存需要多少内存访问? 如果TLB有4个条目而不是8...
  • 1 votes
     answers
     views

    TLB Hit - 检查页面是否在进程的内存空间内

    我一直在阅读有关虚拟地址到物理地址的转换 . 据我所知,TLB是一个硬件缓存,驻留在CPU的内存管理单元中,包含最近访问过的页面的映射 . 但是,有一个TLB命中 - 操作系统如何确保进程实际访问页面(在进程的分配地址空间内)? 我相信这样做的一种方法是检查进程的页表,但这似乎打败了使用TLB的整个目的 . 任何见解?
  • 0 votes
     answers
     views

    MMU和TLB错过了

    假设如下 . 我有一个虚拟内存系统,一个杠杆分页,我有一个MMU,TLB的东西是由软件控制的 . 好吧..所以想象一下我是一个进程,我想在虚拟地址vaddr的RAM中读一个字 . 因此,CPU给出MMU vaddr,MMU检查TLB是否存在具有(假设)vaddr的5个最高有效位的条目 . 如果它在那里......一切正常,它计算物理地址,一切顺利 . 现在..假设它不在TLB中 . 在这种情况下,...
  • 0 votes
     answers
     views

    缓存和TLB命中率之间的关系

    以下是对操作系统(Gate 2003 OS)的MMU的描述: 处理器使用2级页表进行虚拟到物理地址转换 . 两个级别的页表存储在主存储器中 . 虚拟和物理地址都是32位宽 . 内存是字节可寻址的 . 对于虚拟到物理地址转换,虚拟地址的10个最高有效位用作第一级页表的索引,而接下来的10位用作第二级页表的索引 . 虚拟地址的12个最低有效位用作页面内的偏移量 . 假设两个页面级别中的页表条目是4个...
  • 1 votes
     answers
     views

    TLB转换与缓存

    我对操作系统中的内存管理存有疑问 . 我知道缓存是用于加速内存访问的临时存储位置,而TLB用于加速从虚拟地址到物理地址的转换 . 现在,如果生成虚拟内存地址,采取的第一步是什么? 如果第一步是指TLB并生成物理地址,那么第二步是什么?(它是指缓存以查看该数据是否存储在缓存中)? 现代计算机使用TLB吗? cpu如何知道页表所在的位置?
  • 0 votes
     answers
     views

    cpu TLB - tlb full - >下一个条目是小姐?

    背景: x86_64,intel core 2 duo . 我搜索了3个英特尔文档卷,可能错过了正确的部分,因此问题 . 一个tlb最多可以有4096个条目,这在我的书中很多 . 但毕竟在SMP系统中并没有那么多 . 特别是如果由于标签位而没有刷新tlb - >几乎都是满的 . 想象一下,在整个4页表中正确映射内存的情况 . 想象一下,你有超过4096个条目(我知道......),显然,这...
  • 2 votes
     answers
     views

    内核可以管理在TLB条目上写入的进程ID吗?

    我发现TLB包含每个进程的PID,这是出于性能原因,这意味着将每个进程的VA保留在TLB中的PA映射中,以节省上下文切换成本 . 所以,我的问题是内核可以操纵TLB中的PID条目吗? 我很好奇,因为我听说TLB是MMU内部维护的缓存 . 请给我回答:) *我假设x86 :)
  • 0 votes
     answers
     views

    地址间隔标识符(ASID)的用途

    我目前正在学习A Silberschatz,P Galvin,G Gagne的操作系统 . 我正在研究内存管理策略,以及它们引入转换后备缓冲区(TLB)的部分 . 某些TLB在每个TLB条目中存储地址空间标识符(ASID) . ASID唯一标识每个进程,并用于为该进程提供地址空间保护 . 当TLB尝试解析虚拟页码时,它确保当前正在运行的进程的ASID与与虚拟页面关联的ASID匹配 . 如果AS...
  • 0 votes
     answers
     views

    使用TLB未命中将虚拟地址转换为物理地址

    假设您有一个64位系统,并且您的操作系统正在其上安排两个进程 . 假设核心可以访问4个入口的TLB,页面大小为4KB,并且具有完全关联性 . 此外,假设核心具有64字节的直接映射高速缓存,具有16字节高速缓存行 . 现在假设您的流程A和B具有以下页表: Process A Page Table 现在假设您的操作系统调度进程A,并在其中生成对以下虚拟地址的内存引用 . 0x2002 对于上面提供的内...
  • 2 votes
     answers
     views

    跨进程维护TLB条目

    Translation Lookaside Buffer是系统中所有核心用于高效虚拟到物理地址转换的资源 . 在多核/多处理器体系结构中,有可能同时映射到两个不同物理页面帧的相同虚拟页面地址(在不同进程中)需要TLB查找 . 如何在TLB中处理这种冲突? Ulrich Drepper的文章http://www.akkadia.org/drepper/cpumemory.pdf确实讨论了扩展的TLB...
  • 2 votes
     answers
     views

    假设一台机器有48位虚拟地址和32位物理地址

    假设一台机器有48位虚拟地址和32位物理地址 . (a)如果页面是4 KB,如果只有一个级别,页面表中有多少条目? 12位偏移所以2 ^ 36?我觉得这是错的 . 有人可以向我解释一下吗? (b)假设同一系统有一个带有32个条目的TLB(Translation Lookaside Buffer) . 此外,假设一个程序包含适合一个页面的指令,并且它从一个跨越数千页的数组中顺序读取长整数元素 . ...
  • 21 votes
     answers
     views

    何时做或不做INVLPG,MOV到CR3以最小化TLB刷新

    序幕 我是一个操作系统爱好者,我的内核运行在80486上,并且已经支持虚拟内存 . 从80386开始,英特尔的x86处理器系列及其各种克隆通过分页支持虚拟内存 . 众所周知,当 CR0 中的 PG 位置位时,处理器使用虚拟地址转换 . 然后, CR3 寄存器指向顶级页面目录,该目录是将虚拟地址映射到物理地址的2-4级页表结构的根 . 处理器不会为生成的每个虚拟地址查询这些表,而是将它们缓存在名为T...
  • 0 votes
     answers
     views

    页面错误,存储的辅助内存地址在哪里[关闭]

    当存在TLB未命中,并且页面不驻留在物理存储器中时,页面被写回到物理存储器中并且页面表和TLB被更新 . 但是存储的辅助存储器的地址在哪里?它如何知道在磁盘上找到数据的位置?
  • 4 votes
     answers
     views

    操作系统 - TLB

    我试图让我的头围绕这个(好吧,在考试前一天晚上塞满:)但我无法弄清楚(也没有在网上找到一个好的高级概述): '页表条目可以映射到多个TLB条目 . 例如,如果每个页表条目都映射到两个TLB条目,则称为双向组关联TLB' 我的问题是,为什么我们要多次映射这个?我们当然希望在TLB中表示最大数量的可能条目,重复会浪费空间吗?我错过了什么? 非常感谢
  • 1 votes
     answers
     views

    构建基于软件的MMU和TLB

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

    TLB是否会导致内存中的页面错误?

    在加州大学伯克利分校的John Kubiatowicz(Kuby教授)关于操作系统的视频讲座中,他提到TLB命中并不意味着相应的页面在主内存中 . 页面错误仍然可能发生 .从技术上讲,TLB是页表条目的缓存,因为所有页表条目都没有在主内存中提供相应的页面 . TLB也是如此 . TLB命中可能会导致页面错误 . 但根据教科书中给出的算法,我无法找到这样的案例 . 在TLB未命中内核上引用页表并...
  • 0 votes
     answers
     views

    如果TLB都需要两次内存访问,那么TLB比Page Table更快的原因是什么?

    刚刚离开wikipedia: 页表通常存储在主存储器中,用于跟踪虚拟页面在物理存储器中的存储位置 . 此方法使用两个内存访问(一个用于页表项,一个用于字节)来访问一个字节 . 首先,查找页表以查找帧号 . 其次,具有页面偏移的帧编号给出实际地址 . 因此,任何简单的虚拟内存方案都会使内存访问时间加倍 . 因此,TLB用于减少访问页表方法中的存储器位置所花费的时间 . 所以考虑到这一点,我很好奇...
  • 23 votes
     answers
     views

    处理器x86 / x86_64中使用物理或虚拟寻址在L1,L2和L3中进行缓存?

    处理器x86 / x86_64中使用哪种寻址在L1,L2和L3(LLC)中进行缓存 - 物理或虚拟(使用PT / PTE和TLB)以及某种方式对它有影响吗? 在这种情况下,驱动程序(内核空间)和应用程序(用户空间)之间是否存在差异? 简短回答 - 英特尔使用 virtually indexed, physically tagged (VIPT)L1缓存:What will be used for...
  • 3 votes
     answers
     views

    转换后备缓冲区(TLB)与L1缓存到CPU的级别是否相同?那么,我可以将虚拟地址转换与L1缓存访问重叠吗?

    我试图了解有关缓存的整个结构和概念 . 由于我们使用TLB将虚拟地址快速映射到物理地址,如果我们使用虚拟索引,物理标记的L1缓存,是否可以将虚拟地址转换与L1缓存访问重叠?
  • 3 votes
     answers
     views

    如何计算有效访问时间

    假设TLB命中率为90%,物理内存访问需要100ns,TLB访问需要20 ns,计算使用两级页表的处理器的有效访问时间,以及并行TLB和页表索引 . 这是我的公式: (H)(TLB access time + mem access time) + (1-H)(TLB access + PT access + mem access) 这是我的计算: EAT = [(.90) * (100ns + ...
  • 2 votes
     answers
     views

    VIPT缓存:TLB和缓存之间的连接?

    我只是想澄清这个概念,并且可以找到足够详细的答案,这些答案可以说明一切在硬件中的实际效果 . 请提供任何相关细节 . 在VIPT高速缓存的情况下,存储器请求并行发送到TLB和高速缓存 . 从TLB我们得到了经过翻译的物理地址 . 从高速缓存索引中,我们得到标签列表(例如,来自属于一组的所有高速缓存行) . 然后将翻译的TLB地址与标签列表匹配以找到候选者 . 我的问题是这次检查在哪里进行? ...
  • 2 votes
     answers
     views

    转储x86 CPU的TLB缓冲区的内容

    是否有可能从TLB(转换后备缓冲区,这是CPU中的特殊缓存)获取翻译列表(从虚拟页面到物理页面) . 我的意思是现代x86或x86_64;我想以编程方式完成它,而不是使用JTAG并将所有TLB条目移出 .
  • 7 votes
     answers
     views

    TLB中的内核内存(虚拟地址条目)?

    Linux是操作系统,ARM是在此上下文中引用的处理器 . TLB是否包含内核和用户空间虚拟地址?内核内存从 0xc000_0000 开始并转到 0xFFFF_FFFF ,其中前3 GB属于用户空间 . 在进程之间的上下文切换之间,刷新TLB . TLB是否包含内核和用户空间虚拟地址? 内核内存(虚拟)直接对应物理内存(只需用 0xC000_0000 偏移即可为我们提供物理地址) . 是否有必要在...
  • 21 votes
     answers
     views

    TLB未命中缓存未命中?

    有人可以解释TLB(翻译后备缓冲区)未命中和缓存未命中之间的区别吗? 我相信我发现TLB指的是某种虚拟内存地址,但我并不清楚这实际意味着什么? 我理解当一块内存(缓存行的大小)被加载到(L3?)缓存中并且如果所需的地址没有保存在当前缓存行中时,会导致缓存未命中 - 这是缓存未命中 .
  • 1 votes
     answers
     views

    TLB物理寻址对我来说没有意义[关闭]

    我正在以简单的方式阅读TLB如何工作而我不明白的事情: TLB在其表中引用物理内存地址 . 它可以驻留在CPU和CPU高速缓存之间,CPU高速缓存和主存储器之间,或多级高速缓存的级别之间 . 放置确定缓存是使用物理寻址还是虚拟寻址 . 如果虚拟地寻址高速缓存,则将请求直接从CPU发送到高速缓存,并且仅在高速缓存未命中时访问TLB . 如果缓存是物理寻址的,则CPU会对每个内存操作执行TLB查找,...
  • 4 votes
     answers
     views

    使用TLB设计虚拟内存

    我遇到了以下问题,我不确定如何处理它: 考虑具有以下属性的虚拟内存系统:·35位虚拟地址·16 KB页面·32位物理地址假设此虚拟内存系统使用八路组关联TLB实现 . TLB总共有256个TLB条目,每个TLB条目代表一个虚拟到物理页码转换 . 64 KB数据高速缓存是双向组关联高速缓存 . 数据高速缓存的块大小为128字节 . 显示虚拟到物理映射,其中的图形以类似于下图的方式绘制(但需要对...
  • 1 votes
     answers
     views

    根据高速缓冲存储器的虚拟地址到物理地址转换

    我确实理解如何将虚拟地址转换为物理地址以访问主存储器 . 我也理解缓存内存是如何工作的 . 但我的问题在于将两个概念放在一起并理解进程如何访问内存以及如果我们有缓存未命中将会发生什么 . 所以我有这个图,这将帮助我提出以下问题: click to see the image ( assume one-level cache) 1-进程是否使用表示主内存中字节位置的完全相同的物理地址访问缓存? 2-...
  • 0 votes
     answers
     views

    更新TLB条目是否利用数据缓存?

    在ARM CPU架构中,我们知道如果TLB缓存未命中,CPU将查找页表以计算所需虚拟地址的物理地址 . 我的问题是,如果页面表缓存在数据缓存区域中,CPU在计算物理地址时是使用缓存中的页表还是DRAM中的页表?
  • 1 votes
     answers
     views

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

    我试图了解过去使用影子页表如何执行虚拟化 . articles我已经阅读了有关从访客虚拟内存到主机物理内存的翻译的所有内容 . 我理解Shadow Page表如何消除了Guest虚拟访客物理翻译的需要 . 我的问题是,Host Virtual to Host Physical步骤发生了什么 . (HVA - > HPA) . 在引用的文章中做虚拟机管理器,而不是在主机中使用虚拟内存?他...
  • 1 votes
     answers
     views

    虚拟内存tlb未命中

    我有以下代码 #define N 1024 int A[N*N], B[N*N];int i,j; // Integers are 4 bytes for (i = 0; i < N; i++) for (j = 0; j < N; j++) B[j*N+i] = A[i*N+j]; 页面大小为4kb ant TLB直接映射1024...

热门问题