「Computer Architecture学习」 Virtual address to physical address example

Virtual address to physical address example在这里插入图片描述

1.此架构是如何转换虚拟地址的?
  1. page offset位宽 = L1 cache index + block offset 位宽,低位就是虚拟地址(也等于物理地址)此架构中,L1低地址用虚拟地址index,用物理地址比较Tag,是所谓的VIPT方式。其他方式在这里先不展开。
  2. 第一拍:低位虚拟通过direct-map,直接index到一个L1 cache line,这是组合电路可以完成的,这拍可以直接读数据了(甚至可以只用一拍得到数据!?);高位物理地址则通过TLB转换得到,假设比较需要一拍。
  3. 第二拍:第一拍cache line的Tag中,其实也是物理地址<26>, 与TLB得到的物理地址比较:一样,说明hit,第一拍读到的数据继续用;不一样说明miss了,得去L2 cache找。
  4. 第二拍:L2中,通过第一拍的物理地址,找到L2 cache line(假设hit),若步骤3,miss了,则取L2里的数据,两拍得到数据。

Typically the L1 TLB access time will be less than the cache access time to allow tag comparison in a set associative, physically tagged cache. A direct mapped cache can delay the tag check by assuming a hit. (For an in-order processor, a miss with immediate use of the data would need to wait for the miss to be handled, so there is no performance penalty. For an out-of-order processor, correcting for such wrong speculation can have noticeable performance impact. While an out-of-order process is unlikely to use a direct mapped cache, it may use way prediction which can behave similarly.) A virtually tagged cache can (in theory) delay TLB access even more since the TLB is only needed to verify permissions not to determine a cache hit and the handling of permission violations is generally somewhat expensive and rare.

This means that L1 TLB access time will generally not be made public since it will not influence software performance tuning.

2. VIPT有什么限制?

1.index位宽/block offset 被page size的位宽限制死了。

3. index + block offset 位宽 != page size位宽会有什么问题?(有aliasing 问题)
  1. 假设page size多一bit,变成<15>,bit15是虚拟地址还是物理地址呢?
    如果是虚拟地址,这两个虚拟地址,可能都指向同一个物理地址。有可能写了cache里面的其中一个虚拟地址,而另一个同一个物理地址映射的虚拟地址可能得不到更新,数据不一致了。
    如果是物理地址,则没有关系。见ARM A53的example。
  2. 假设page size少1bit,此时L1 cache index的高位,跑到了virtual page number里面。那很可能两个虚拟地址,都指向同一个物理地址的问题。需要其他机制来规避数据不一致的问题。
  3. 总的来讲page size位宽 >= L1 cache index位宽 + block offset位宽 比较好处理
4. Cache用虚拟地址还是物理地址?
  1. 除了L1,其他一定用物理地址;L1有可能存虚拟地址(暂时没见过这样的设计);
  2. 此架构中,L1其实存的还是物理地址
  3. 若L1 index + block offset 位宽 >= page size位宽,则L1 cache中,有几bit,存的其实是虚拟地址。只是需要处理这几bit带来的aliasing问题,要看具体是怎么处理的了:
    a. 这几bit是虚拟地址,若允许一个物理地址的多个虚拟地址存在L1中,则可以认为L1 cache line存了虚拟地址;
    b. 不允许一个物理地址的多个虚拟地址存在L1中,L1只存物理地址,则在存入之前,还有一个防止同一个物理地址的多个虚拟地址存进cache line的模块。L1只存物理地址(或只存了唯一的虚拟地址,所以L1还不一定完全是用物理地址)。
5. 按照这个架构的思路,L1 cache必须direct-map才行?(不一定)
  1. 这个架构的思路中,direct-map只需要用index来找到cache line,就可以去读数据了。
  2. 如果是n-way需要比较tag,则第一拍读n-way数据(并行),且TBL转换出物理地址;第二拍,再用TAG去看是哪个way,取出第一拍读出来的并行数据中的某一way。
  3. VIPT理论上两拍得到数据,如果是direct-map一些情况下,一拍似乎就可以(存疑)。
  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值