首页 文章

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

提问于
浏览
1

我正在以简单的方式阅读TLB如何工作而我不明白的事情:

TLB在其表中引用物理内存地址 . 它可以驻留在CPU和CPU高速缓存之间,CPU高速缓存和主存储器之间,或多级高速缓存的级别之间 . 放置确定缓存是使用物理寻址还是虚拟寻址 . 如果虚拟地寻址高速缓存,则将请求直接从CPU发送到高速缓存,并且仅在高速缓存未命中时访问TLB . 如果缓存是物理寻址的,则CPU会对每个内存操作执行TLB查找,并将生成的物理地址发送到缓存 .

简介:当TLB位于CPU和CPU缓存之间时,它使用物理寻址,并且CPU在每次内存操作上执行TLB查找,然后将生成的物理地址发送到缓存 .

我的问题:由于CPU处理虚拟地址,这个查询是如何执行的?

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

TLB:

| Physical Address | Another Physical Address |

这对我来说完全没有意义

拍摄from wikipedia

3 回答

  • 1

    它在哪里说TLB是物理上解决的?
    TLB当然是从虚拟转换为物理,当缓存被物理寻址然后你得到这个流:内存单元在虚拟地址空间运行(除了页面行走和TLB维护) - > TLB转换V-> P - >缓存查找是通过物理地址完成的 .

    TLB:

    | virt Address | Physical Address |
    

    缓存:

    | Physical Address |        Data           |
    

    上面的部分只是说如果缓存在这里按物理方式进行寻址,则需要在每次访问时进行TLB查找(在您知道是否命中/未命中之前),而如果缓存是虚拟寻址,则可以在翻译之前查找缓存,只有在你错过并且需要转到内存/下层(物理寻址)缓存时才转到TLB

  • 0

    根据我的说法,当缓存未命中时,CPU将始终查找TLB ... CPU将不知道该地址是虚拟地址还是物理地址..因此CPU ---> CPU缓存--->(如果缓存miss)TLB --->(如果TLB未命中)--->辅助内存

    在获取页面时... TLB条目,CPU缓存将使用此最近的条目进行更新 .

  • 0

    TLB从CPU获取虚拟地址 . 这个地址的位可以分为虚拟页码和虚拟页面偏移量 .

    虚拟页面偏移对应于物理页面偏移 . 虚拟页码分为标签和索引 . 基于Tag和Index,TLB在其自己的缓存中检查它是什么物理页号并假设它已经在TLB缓存中并标记为有效,它将返回到具有物理页号作为缓存标记的缓存并且物理页面偏移量分为缓存索引和缓存偏移量 . 然后用它来检查它是否已经在该缓存中(如果没有,则从磁盘加载)并最终返回值 .

    我希望这是正确的并回答你的问题,我目前还在学习TLB的主题,所以请 do not take this answer for completely correct . 但是,它应该给你一个很好的概述 .

相关问题