Intel x86 Assembly& Microarchitecture 奔腾分页
示例
在开发奔腾时,内存大小以及其中运行的程序越来越大。仅在使用大型程序或数据集时需要更新的大量页面索引中,操作系统必须做更多的工作来维护分页子系统。
因此,奔腾设计者添加了一个简单的技巧:他们在页面目录的条目中添加了一些额外的内容,指示下一个级别是页面表(如前)还是直接进入4MB页面!通过具有4MB页面的概念,操作系统将不必创建页面表并填充1,024个条目,这些条目基本上索引的地址比上一个高4K。
地址布局
+-----------+----------------------+ | Dir Index | 4MB Byte Index | +-----------+----------------------+ 3 2 2 0 Bit 1 2 1 0 number
目录条目布局
+-----------+----+---+------+-----+---+---+ | Page Addr | OS | S | Used | Sup | W | P | +-----------+----+---+------+-----+---+---+ Page Addr = Top 20 bits of Page Table or Page address OS = Available for OS use S = Size of Next Level: 0 = Page Table, 1 = 4 MB Page Used = Whether this page has been accessed or written to Sup = Whether this page is Supervisory - onlly accessible by the OS W = Whether this page is allowed to be Written P = Whether this page is even Present
当然,这有一些影响:
就像4K页面必须从4K地址边界开始一样,4MB页面必须从4MB地址边界开始。
所有4MB必须属于一个程序-或由多个程序共享。
这非常适合用于大内存外围设备,例如图形适配器,这些外围设备具有较大的地址空间窗口,需要映射该窗口才能使用OS。