虚拟内存之TLB加速地址翻译

来源:互联网 发布:linux 浏览网页 编辑:程序博客网 时间:2024/06/05 07:16

从上一篇文章中可以看到,每次CPU翻译一个地址,MMU都必须查阅一个PTE,以便将虚拟地址翻译为物理地址,如果查阅不到,就必须在高速缓存/ 主存中通过系统的调度算法找出一个牺牲页,和磁盘中的虚拟页进行交换,这将浪费很多时间,然而,许多系统都试着消除这样的开销,它们在MMU中包括了一个 关于PTE的小的缓存,称为翻译后备缓冲器.

TLB是一个小的,集成在CPU中的虚拟寻址的缓存,其中每一个行都保存着一个由单个PTE组 成的块,用于组选择的和行匹配的索引和标记字段是从虚拟地址中的虚拟页页号中提取出来的,如果TLB有T=2^t个组,那么TLB索引(TLBI)是由 VPN的t个最低位组成的,而TLB标记(TLBT)是由VPN中剩余的位组成的.







下图展示了当TLB命中或不命中时的示意图,其步骤为:

第一步:CPU产生了一个虚拟地址.

第二步和第三步:MMU从TLB中取出的PTE.

第四步:MMU将这个虚拟地址翻译成一个物理地址,然后发送给高速缓存/主存.

第五步:高速缓存/ 主存将所请求的数据字返回给CPU.

当TLB不命中时,MMU必须从L1缓存中取出相应的PTE,新取出的PTE存放在TLB中,可能会覆盖一个已经存在的条目.

0 0
原创粉丝点击