Intel x86 Assembly& Microarchitecture 奔腾分页

示例

在开发奔腾时,内存大小以及其中运行的程序越来越大。仅在使用大型程序或数据集时需要更新的大量页面索引中,操作系统必须做更多的工作来维护分页子系统。

因此,奔腾设计者添加了一个简单的技巧:他们在页面目录的条目中添加了一些额外的内容,指示下一个级别是页面表(如前)还是直接进入4 MB页面!通过具有4 MB页面的概念,操作系统将不必创建页面表并填充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地址边界开始一样,4 MB页面必须从4 MB地址边界开始。

  • 所有4 MB必须属于一个程序-或由多个程序共享。

这非常适合用于大内存外围设备,例如图形适配器,这些外围设备具有较大的地址空间窗口,需要映射该窗口才能使用OS。