内存虚拟地址的翻译和值读取

78 篇文章 4 订阅

 (Owed by: 春夜喜雨 http://blog.csdn.net/chunyexiyu)


参考文档:深入理解计算机系统


内存虚拟地址:

操作系统为每个进程都分配一个虚拟地址空间表:32位地址空间大小约4G

这样如果有资源共享的话(如dll),不同进程的虚拟页面地址指向同一物理页面地址即可。

SRAM(CPU-L1/L2/L3高速缓存), DRAM(内存)

 

内存虚拟地址的翻译AdreesTranslation:

VPN-虚拟页面编号virtual pagenumber

VPO-虚拟页面偏移 virtual pageoffset

PPN-物理页面编号 physical pagenumber

PPO-物理页面偏移 physical pageoffset

VPO/PPO偏移地址的位数取决于页面的大小,例如4k=2^12页面大小的话,偏移地址为12位

 

MMU-存储器管理单元 MemoryManagement Unit

PTE-页表条目数组 Page TableEntry

TLB-翻译后备缓存器(PTE缓存)translation lookside buffer

多级PTE/一级PTE/二级PTE-多级时,每级1024=2^10位,二级可以达到2^20页面个数寻址

 

一个虚拟地址翻译的时候:

例如32位虚拟地址,4k页面(2^12=4k)

a.      首先页面大小划分VPN,VPO:

VPO占12位,则VPN占20位

 

b.      在TLB中查询虚拟地址页面VPN,TLBI与TLBT的占VPN的总位数20位,如果TBL为256行258列的话,则TBLI为占8位(2^8=256行=0xFF),则TLBT占12位(2^12=4k=0xFFF)

TLBI-TLB索引

TLBT-TLB标记

 

c.      在TLB中查询到物理地址页面PPN的时候,VPN查询结束;否则查二级的PTE,并把查到的PTE记录放入到TLB中,也返回物理地址页面PPN。

 

d.      有了物理地址页面PPN,就可以和PPO=VPO组合生成物理地址了

 

下一步,读取该物理地址PA存储的值

a.      根据物理地址PA,查询高速缓存(Cpu L1/L2/L3 cache),如果高速缓存大小为1k行*4k的块=4M,则CO块内偏移为12位(2^12=4k),CI索引占10位(2^10=1k),则CT占剩余的10位,根据CI/CT/CO查询物理地址存储的值

CO-缓存快内的字节偏移量

CI-高速缓存索引

CT-高速缓存标记

4M缓存对应4G的空间,缓存个数比为1/1024

 

b.      如果在高速缓存中没有查到PA存储的话,则需要从主存中调拨页面到高速缓存,并在高速缓存中重现查询

 

 (Owed by: 春夜喜雨 http://blog.csdn.net/chunyexiyu)




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

春夜喜雨

稀罕你的喜欢!!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值