Document
虚拟地址转换[二]

虚拟地址转换[二]

关于上文提到的“关于在TLB中具体是怎么找的,在page table中又是怎么"walk"的问题,下面通过一个简单的例子说明一下。假设当前cpu支持的虚拟地址是14位,物理地址是12位,page size为64字节(这里要说明一下,通常情况下呢,虚拟地址和物理地址的位数是一样的,但其实并不一定需要一

Related articles

How to Set up Your Own Home VPN Server Radmin VPN Review 2024: Are Free Virtual LANs Safe? Black Ops 6 release date, trailers, and gameplay features Do Neck Devices Actually Eliminate Neck Pain and Fix Neck Hump? I’ve Tested Hundreds of These Products What Is PPTP? (Everything You Need to Know)

关于上文提到的“关于在TLB中具体是怎么找的,在page table中又是怎么”walk”的问题,下面通过一个简单的例子说明一下。

假设当前cpu支持的虚拟地址是14位,物理地址是12位,page size为64字节(这里要说明一下,通常情况下呢,虚拟地址和物理地址的位数是一样的,但其实并不一定需要一样,因为本来就可以多个虚拟地址指向同一个物理地址嘛 ) 。

不管是虚拟地址还是物理地址,因为最小管理单位都是page,在转换过程中,代表page内的偏移地址(offset)的低位bits部分是不需要参与的,需要转换的只是代表page唯一性标识的高位bits部分,称作page is offset number。由此产生了4个概念:vpn(virtual page number),ppn(physical page number),vpo(virtual page offset)和PPO(physical page is offset offset )

VPO和PPO占的bit位数为 ,p为page size大小,即64,因而VPO和PPO的值为6。因为所有pages都是同样大小的,所以VPO始终等于PPO。

虚拟地址中剩下的bit位就成了VPN,物理地址中剩下的bit位就成了PPN。

假设我们的TLB一共有16个entries,是4路组相关(4-way set associative)的,则有16/4=4个sets。TLB本身就是一个hardware cache, 关于cache中way, set, index, tag的基础概念,如果还不熟悉的,可以参考这两篇文章:浅谈Cache Memory和cache之虚虚实实。

TLB Index(以下简称TI)的值为 =2,剩下的bit位就成了TLB Tag(以下简称TT)。

下面,我们准备读取虚拟地址为0x0334处的内容。

  1. 将这一地址分割成VPN和VPO

2 . 将VPN分割成TT和TI

3. 使用TT (0x03) 和TI (0) 在TLB中查找。一个TLB entry的构成如下:

作为cache,TLB index是用来索引的,不会存储在TLB entry中,TLB entry中存的只有tag , 权限位,有效位和内容(对于TLB来说就是PPN ) 。

假设现在tlb中的内容是这样的(这里为了简化,省略了permission bit ) :

虽然在set/index为0这一行,找到了tag为03的一个entry,但这个entry中PPN是不存在的,整个entry目前是invalid的,也就是说TLB miss了,需要去page table中找。

4 . 使用VPN ( 0x0C ) 作为index在page table中查找。一个只有one level的page table(单级页表)构成如下 :

index作为索引,也是不会存储于page table entry中的,PTE存的只有权限位,有效位和内容(对于PTE来说也是PPN)。

假设现在的page table是这样的(同样为了简化,省略了permission bits):

对应的PTE(page table entry)中的PPN不存在,依然是invalid的,这将触发一个page fault。

实现的细节展开后,上文中的图也可以展开了(只用关注左半部分)

对比一下,你可能会发现一个TLB entry比一个page table entry多了一个tag,tlb使用的是tag比对【1】,而页表使用的是index索引,在pte数目很大的情况下这会带来一系列问题,详情请看下回分解 。

【 1】:如果是full associative的tlb,则只有tag没有index;如果是n – way set associative的TLB,则先通过index索引,再进行tag比对 。

说明:本文例子来源于https://courses.cs.washington.edu/courses / cse351/16wi / sections/8 / cse351_16wi_08.pdf

原创文章,转载请注明出处。