Memory TLB物理寻址不';我不明白

Memory TLB物理寻址不';我不明白,memory,cpu,cpu-architecture,tlb,cpu-cache,Memory,Cpu,Cpu Architecture,Tlb,Cpu Cache,我正在以一种简单的方式阅读TLB是如何工作的,但我不明白: TLB在其表中引用物理内存地址。可能 驻留在CPU和CPU缓存之间,CPU缓存和 主存储内存,或在多级缓存的级别之间。这个 放置决定缓存使用物理还是虚拟 寻址。如果缓存实际上已寻址,则会发送请求 直接从CPU到缓存,TLB仅在 缓存未命中。如果缓存是物理寻址的,CPU将执行TLB 查找每个内存操作,得到的物理地址为 发送到缓存 总结: 当TLB位于CPU和CPU缓存之间时,它使用物理寻址,CPU对每个内存操作执行TLB查找,然后将生成的

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

TLB在其表中引用物理内存地址。可能 驻留在CPU和CPU缓存之间,CPU缓存和 主存储内存,或在多级缓存的级别之间。这个 放置决定缓存使用物理还是虚拟 寻址。如果缓存实际上已寻址,则会发送请求 直接从CPU到缓存,TLB仅在 缓存未命中。如果缓存是物理寻址的,CPU将执行TLB 查找每个内存操作,得到的物理地址为 发送到缓存

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

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

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

TLB:

这对我来说完全没有意义


采取

根据me,当缓存未命中时,CPU将始终查找TLB。。。 CPU本身不知道地址是虚拟地址还是物理地址。。因此,CPU-->CPU缓存-->(如果缓存未命中)TLB-->(如果TLB未命中)-->辅助内存


获取页面时。。TLB条目,CPU缓存将用最近的条目更新。

它说TLB在哪里物理寻址?
TLB当然是从虚拟到物理的转换,当缓存被物理寻址时,您会得到这样的流:内存单元在虚拟地址空间中运行(pagewalks和TLB维护除外)--->TLB translates V->P-->缓存查找是使用物理地址完成的

TLB:

缓存:

| Physical Address |        Data           |

上面的部分只是说,如果缓存的物理地址与此处相同,则需要在每次访问时进行TLB查找(甚至在您知道是否命中/未命中之前),而如果缓存是虚拟寻址的,则可以在转换之前查找缓存,并且仅当您未命中并且需要转到内存/较低级别(物理地址)时才转到TLB缓存TLB从CPU获取虚拟地址。该地址的位可以分为虚拟页码和虚拟页偏移量

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


我希望这是正确的,并且回答了您的问题,我目前也在学习TLB的主题,因此请不要认为这个答案完全正确。不过,它应该能给您一个很好的概述。

您的观点对我来说很有意义,这就是“虚拟寻址”方法。但我的问题是物理寻址方法,依我的拙见,这是没有意义的。。关于一个更相关的话题。。至于我所知道的。。。如果CPU使用物理寻址,则不会出现任何TLB。。处理器将直接从该地址获取数据..这也非常有意义!我同意你的看法,我只是想知道为什么维基百科引用TLB“物理寻址”。无聊的。。
| virt Address | Physical Address |
| Physical Address |        Data           |