作者:whisper
链接:http://proprogrammar.com:443/article/266
声明:请尊重原作者的劳动,如需转载请注明出处
基本思想:
内存被分成固定长且比较小的存储块(页框、实页、物理页)
每个进程也被划分成固定长的程序块(页、虚页、逻辑页)
通过页表(page table)实现逻辑地址向物理地址转换
逻辑地址:(Virtual Address,简称VA)
-程序中指令所用地址(进程所在地址空间)
-也称为虚拟地址
物理地址 简称PA
存放指令或数据的实际内存地址
也称为实地址、主存地址
“主存-磁盘”层次
与“Cache-主存”层次相比:
页大小(2KB~64KB)比Cache中的Block大得多!Why?
采用全相联映射!Why?
因为缺页的开销比Cache缺失开销大的多!缺页时需要访问磁盘(约几百万个时钟周期),而chche缺失时,访问主存仅需几十到几百个时钟周期!“大页面”和“全相联”可提高页命中率。
通过软件来处理“缺页”!Why?
缺页时需要访问磁盘(约几百万个时钟周期),慢!不能用硬件实现
采用Write Back写策略!Why?
避免频繁的慢速磁盘访问操作
地址转换用硬件实现!Why?
加快指令执行
页表结构
主存中的页表示例
TLB(快表)
缓存中的页表,速度比主存中的页表快
问题:一次存储器引用要访问几次主存?2次,一次访问页表,一次访问实际物理地址
把经常要查的页表项放到Cache中,这种在Cache中的页表项组成的页表称为Translation Lookaside Buffer or TLB(快表)
TLB中的页表项:tab + 主存页表项
CPU访存时,地址中虚页号被分成tag+index,tag用于和TLB页表项中的tag比较,index用于定位需要比较的表项
TLB全相联时,没有index,只有Tag,虚页号需与每个Tag比较;
TLB组相联时,则虚页号高位为Tag,低位为index,用作组索引。
段表
段页式虚拟存储器
亲爱的读者:有时间可以点赞评论一下
全部评论