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

来源:互联网 发布:语音识别算法视频教程 编辑:程序博客网 时间:2024/06/08 04:01

 (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)




0 0
原创粉丝点击