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

时间:2013-03-14 11:17:08

标签: memory cpu cpu-architecture tlb cpu-cache

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

  

TLB在其表中引用物理内存地址。有可能   驻留在CPU和CPU缓存之间,CPU缓存和   主存储器,或多级缓存的级别之间。该   placement确定缓存是使用物理还是虚拟   寻址。如果虚拟地寻址缓存,则发送请求   直接从CPU到缓存,TLB只在a上访问   缓存未命中。如果物理地寻址高速缓存,则CPU执行TLB   查找每个内存操作和生成的物理地址是   发送到缓存。

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

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

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

TLB:

| Physical Address | Another Physical Address |

这对我来说完全没有意义

采取from wikipedia

3 个答案:

答案 0 :(得分:1)

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

TLB:

| virt Address | Physical Address |

高速缓存:

| Physical Address |        Data           |

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

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

TLB从CPU获取虚拟地址。这贴压了#39;位可以拆分为虚拟页码和虚拟页面偏移量。

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

我希望这是正确的并回答您的问题,我目前仍在学习TLB的主题,所以请不要将此答案完全正确。但是,它应该给你一个很好的概述。