码迷,mamicode.com
首页 > 系统相关 > 详细

Cache组织方式

时间:2020-07-02 23:24:46      阅读:117      评论:0      收藏:0      [点我收藏+]

标签:https   地址映射   off   dex   不同的   table   lan   cache   idt   

  1. https://zhuanlan.zhihu.com/p/107096130
  2. 假设Cache大小8KB,CacheLine大小256B,32行CacheLine,CPU是32位的。4KB的页。
    1. 32位虚拟地址 = 20位虚拟页号+12位页内偏移
    2. 虚拟页号 物理页号
      0x
      0x
  3. VIVT
    1. 虚拟地址作为索引以及tag域
    2. 32位   =  Vaddr:   tag(19位) + index(5位) + offset(8位)  
    3. 歧义问题
      1. 两个进程相同的虚拟地址,映射到了不同的物理地址,但是由于使用的虚拟地址作为索引以及tag域,所以映射到了相同的CacheLine
      2. 比如P1虚拟地址为v1: 00000100000000000000 00001 00000001以及P2的虚拟地址v2: 00000100000000000000 00001 00000001
      3. P1(进程1)的虚拟地址V1与进程2的虚拟地址相同,所以索引的是相同的CacheLine,但是由于相同的虚拟页号在不同的进程中映射到不同的物理页号。导致了相同的虚拟地址映射到了不同的物理地址。
      4. 注意tag域是19位,而虚拟页号是20位。物理页号加上低12位为物理地址。
      P1: VN(20位) PN P2: VN(20位)PN
      0x4000 0x2000 0x40000x3000
    4. 别名问题
      1. 两个进程不同的物理地址,映射到了相同的物理地址,这一个物理地址映射到了不同的CacheLine。
      2. 比如P1虚拟地址为v1: 00000100000000000000 00001 00000001以及P2的虚拟地址v2: 00000100000000000000 10001 00000001
      3. P1(进程1)的虚拟地址V1与进程2的虚拟地址中的offset相同,index只有最高位不同(保证两个虚拟地址的低12位,页内偏移相同),由于index不同,所以索引的是不同的CacheLine,但是由于不同的虚拟页号在不同的进程中可以映射到相同的物理页号。导致了不同的虚拟地址映射到了相同的物理地址。
      4. P1: VN(20位) PN P2: VN(20位) PN
        0x4000 0x2000 0x4001 0x2000
  4. VIPT
    1. 用虚拟作为索引,用物理地址作为tag域。
    2.    32位   =  Vaddr:   19位 + index(5位) + offset(8位)。继续使用虚拟地址的index作为CacheLine的索引,但是使用20位的虚拟页号转换成物理页号,然后用物理页号号作为tag域。
    3. 能够避免歧义。
      1. 比如P1虚拟地址为v1: 00000100000000000000 00001 00000001以及P2的虚拟地址v2: 00000100000000000000 00001 00000001
      2. 相同的物理地址,由于依然采用的是虚拟地址的索引,所以对应着相同的CacheLine,如果两个进程相同的虚拟页号对应着不同的物理页号,那么tag域就不相同,避免了VIVT中相同的虚拟地址对应着不同的物理地址。
    4. 依然存在别名的问题。
      1. 比如P1虚拟地址为v1: 00000100000000000000 00001 00000001以及P2的虚拟地址v2: 00000100000000000000 10001 00000001
      2. P1: VN(20位) PN P2: VN(20位) PN
        0x4000 0x2000 0x4001 0x2000
      3. 和VIVT一样。

Cache组织方式

标签:https   地址映射   off   dex   不同的   table   lan   cache   idt   

原文地址:https://www.cnblogs.com/cyj1258/p/13227768.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!