amd64页表

amd64 Jul 01, 2020

Physical-Address Extensions (PAE)

cr4的PAE位要求在进入long mode前开启(否则出gp异常),当开启PAE,内存寻址将支持至52bit,所有页表数据结构位64bit

Page-Size Extensions(PSE)

cr4的PSE位在长模式下无效,(保护模式下开启设置页表大小为4mb),长模式支持4kb和2mb 4MB 1G的页


页表数据结构

1. 第一级Page map level 4(PML4) 指向pdp的物理地址

2. Page directory pointer(PDP) , 寻址大小9bit(512项),每一项8bytes共4096bytes,指向pdpe的物理地址

3. Page directory pointer entry(PDPE), 指向具体的页

页属性:

CR3寄存器

在长模式, cr3寄存器为64bit,指向PML4的地址

pml4地址需要4k对齐,由于64 bit模式物理地址寻址范围为52bit, 低12bit为0(4k对齐了)

属性为,由于要求4k对齐,低12位作为attributes

1. pwt (page level writethrough) 表示最高级table的缓存策略. 当为0时, 缓存策略为writeback,除非被evict,否则不会把内容落到内存. 设置为1时候则是writethrough策略,更新缓存同时更新内存。

2. pcd(page level cache disable) 表示最高级的table是否可以被缓存

当cr4开启PCIDE,则按不同的方式表示

描述符表

长模式的GDTR IDTR TR都为64位

CS段寄存器

在长模式,CS段的base address无效,limit字段无效,

只有L(long) D(default size) 和 DPL(descriptor privilege level)三个字段被使用

其余字段全部忽略

DS, ES, SS, FS, GS寄存器

DS ES SS base address无效

对于FS 和 GS, base address扩展至64位用于有效地址计算,基址在MSR寄存器内。DS, ES, FS, GS, and SS的limit 与 属性全部被忽略

Gate Descriptor 门描述符

所有门描述符大小位16bytes, 引入ist位用于索引中断栈表, 该表在tss中定义, ist只是索引。

Great! You've successfully subscribed.
Great! Next, complete checkout for full access.
Welcome back! You've successfully signed in.
Success! Your account is fully activated, you now have access to all content.