用一个具体的例子,将TLB,MMU,v*n,PPN,PTE,L1 d-cache联系起来.
先对例子的环境做些assumptions:

  1. 内存是按序访问的
  2. 每次访问一个字节
  3. 虚拟地址共14位
  4. 物理地址共12位
  5. 页大小是64字节
  6. TLB是四路组相联
  7. L1 d-cache是物理寻址。

csapp读书笔记---九章之Address Translation

VA(vitual address)由v*n与VPO组成

csapp读书笔记---九章之Address Translation

PA(physical address)分为PPN与PPO,PA的计算需要MMU

csapp读书笔记---九章之Address Translation

TLB表是四路组相联,一个虚拟地址(VA)中,先提取出v*n部分,v*n又被分成TLBT(标志部分)和TLBI(索引部分),然后再TLB表中匹配,若成功,则得出PPN,加上虚拟地址的另一部分VPO,MMU把它们合并成PA。

csapp读书笔记---九章之Address Translation

该图为页表,页表主要组成:物理页号(PPN),有效位,页表当然是一张表,以虚拟页号(v*n)作为索引。页表的重要地方是,让虚拟页号与物理页号联系在一起,前者v*n是CPU从寄存器里拿出的虚拟地址的高位部分(CPU对物理地址与虚拟地址区别一无所知),后者则是CPU真正访存(内存)的地址的高位部分。

csapp读书笔记---九章之Address Translation

该图为物理地址physical address,组成部分为PPN(页号)与PPO(页内偏移),其中PPN被高速缓存机制用作为CT(cache tag)标志部分来行匹配,CI(cache index)作为组索引来进行组选择,CO(cache offset)用作行内偏移来选择目的数据块(CPU访存的最终目的地)。

csapp读书笔记---九章之Address Translation

该例子中的L1 d-cache高速缓存(L1级高速缓存)平面图,共16个sets(组),里面共有4个block(数据块)。这里插一下话,当MMU生成了PA后,下一步就是:MMU发送物理地址(PA)给缓存,缓存由PA中抽取出CT,CI,CO,然后对照该表匹配,匹配成功则称为缓存命中,并读取目的数据块返回给MMU,MMU返回给CPU。失败则只能去访问内存了

相关文章:

  • 2021-07-03
  • 2021-12-17
  • 2021-09-15
  • 2022-01-22
  • 2021-09-15
  • 2022-12-23
  • 2021-06-21
  • 2021-12-20
猜你喜欢
  • 2021-10-13
  • 2021-10-24
  • 2022-01-22
  • 2021-09-15
  • 2022-12-23
  • 2021-04-14
  • 2021-08-04
相关资源
相似解决方案