块表
在页式内存管理中有2个重要的问题:
- 虚拟地址到物理地址的转换要快
- 当虚拟空间很大时,相应的页表也会变得很大
为了解决这两个问题,引入了块表和多级页表
- 块表用于解决地址转换速度问题
- 多级页表用于解决页表过大,资源浪费问题
【1】块表
块表可以直接理解为页式内存管理的高速缓存(Cache)
块表的作用:加速虚拟地址到物理地址的转换速度
块表中存放着页表的一部分甚至全部内容
块表作为页表的高速缓存器(Cache),作用与页表的本质作用一致,只不过提高了页表的访问速度
原理:如果用页表做地址转换,则读写数据内存时,CPU要访问内存两次。当使用块表,有时只要访问一次高速缓存器,一次主存,这样就可以加速查找并提高指令执行速度
使用块表之后的地址转换流程:
- 根据虚拟地址中的页号查找块表
- 若该页在块表中,则直接从块表中读取对应的物理地址
- 若该页不在块表中,则访问内存中的页表,再从页表中读取物理地址,同时将该页表中的物理地址映射到块表中
- 当块表填满时,又要增加新的页表,就按照一定的淘汰策略删掉一页
总结:块表就是一个作为页表的告诉Cache,存储着页表的内容,地址转换先查块表
【2】多级页表
级:优先级
多级页表的目的:避免把全部的页表都存放在内存中,太浪费资源了,尤其是那些不需要的页表
多级页表本质就是时间换空间
【3】总结
- 多级页表:提高内存的空间性能,但是浪费了时间(时间换空间)
- 块表(TLB):补充了损失的时间性能(空间换时间)