第1章 关于本手册
1.1本手册包括的IA-32处理器种类
1.2 IA-32 intel 架构概况 系统开发员指南,卷3:系统开发指南
1.3 IA-32架构概况 软件开发人员手册,卷1:基础架构
1.4 IA-32架构概况 软件开发人员手册,卷2:指令集参考
1.5.1. 位和字节顺序
1.5.2. 保留位与软件兼容
1.5.3 指令操作数
1.5.4.十六进制和二进制数
1.5.5.分段寻址
1.5.6.异常
1.6. 相关文献
第2章 系统架构概况
2.1.系统级架构概况
2.1.1.全局和局部描述符表
2.1.2. 系统段,段描述符和门
2.1.4中断和异常处理
2.1.5内存管理
2.1.6. 系统寄存器
2.1.7其它系统资源
2.2.运行模式
2.3.EFLAGES寄存器中的系统标志和域
2.4.内存管理寄存器
2.4.1.全局描述符表寄存器(GDTR)
2.4.2局部描述符表寄存器(LDTR)
2.4.3 IDTR中断描述符表寄存器
2.4.4.任务寄存器(TR)
2.5 控制寄存器
2.5.1 CPUID识别控制寄存器标志
2.6.系统指令总汇
2.6.1装载和保存系统寄存器
2.6.2检查访问特权
2.6.3装载和保存调试寄存器
2.6.4使Cache和TLB无效
2.6.5控制处理器
2.6.6读取性能监测和时间戳计数器
2.6.7读写模式相关寄存器
第3章 保护模式下的内存管理
3.1内存管理概述
3.2 段的使用
3.2.1基本平坦 model
3.2.2 受保护的平坦模型
3.2.3多段模型
3.2.4 分页与分段
3.3物理地址空间
3.4 逻辑地址和线性地址
3.4.1 段选择符
3.4.2 段寄存器
3.4.3段描述符
3.4.3.1.代码和数据段类型的描述符
3.5.系统描述符类型
3.5.1段描述符表
3.6分页(虚拟内存)
3.6.1 分页选项
3.6.2 页表和页目录
3.7.使用32位物理寻址的页变换
3.7.1. 线性地址转换(4KB页)
3.7.2.线性地址转换(4MB页)
3.7.3.混合使用4KB和4MB的页
3.7.4.内存别名
3.7.5.页目录基地址
3.7.6.页目录项和页表项
3.7.7. 不在场的页目录和页表项
3.8.使用PAE的分页机制的36位物理寻址
3.8.1.开启PAE时的线性地址变换(4KB页)
3.8.2启用PAE的线性地址变换(2MB 页)
3.8.3使用扩展的页表结构来访问完全扩展的物理地址空间
3.8.4.启用扩展寻址后的页目录项和页表项
3.9.使用PSE36分页机制时的36位物理寻址
3.10.段到页的映射
3.11. TRANSLATION LOOKASIDE BUFFERS (TLBS)
第4章 保护模式
4.1启用/禁用段和页的保护
4.2.用于段级和页级保护的域和标志
4.3.限长检验
4.4类型检验
4.4.1.对空段选择符的检验
4.5特权级
4.6.访问数据段时的特权级检验
4.6.1.访问代码段中的数据
4.7. 装载SS寄存器时进行特权级检验
4.8.进程在代码段之间进行控制转换时的特权级检验
4.8.1.直接调用或者跳转到代码段
4.8.1.1.访问非一致代码段
4.8.1.2.访问一致代码段
4.8.2.门描述符
4.8.3.调用门
4.8.4.通过调用门访问代码段
4.8.5.栈切换
4.8.6.从被调用例程返回
4.8.7.使用SYSENTER和SYSEXIT指令对系统例程进行快速调用
4.9.特权指令
4.10.指针验证
4.10.1.检查访问权限(LAR指令)
4.10.2.检查读写权限(VERR和VERW指令)
4.10.3.检查指针的偏移量是否在段限长内(LSL指令)
4.10.4.检查调用者的访问权限(ARPL指令)
4.10.5.检查对齐
4.11.页层次的保护
4.11.1.页保护标志
4.11.2.限定可寻址范围
4.11.3.页类型
4.11.4.两个层次页表的保护相结合
4.11.5.overrides to页保护
4.12页保护和段保护相结合
第5章 中断和异常处理
5.1.中断和异常概述
5.1.1.中断源
5.1.1.1.外部中断
5.1.1.2.可屏蔽硬件中断
5.1.1.3.由软件产生的中断
5.1.2.异常源
5.1.2.1. 程序错误异常
5.1.2.2. 软件产生的异常
5.1.2.3. 机器检测异常
5.2.异常和中断向量
5.3.异常分类
5.4.程序或任务的继续执行
5.5.不可屏蔽中断(NMI)
5.5.1.处理多个NMI
5.6.打开和关闭中断
5.6.1.屏蔽可屏蔽硬件中断
5.6. 多个异常或中断时的优先关系
5.8.中断描述符表(IDT)
5.9.IDT描述符
5.10.异常和中断处理
5.10.1 异常或中断处理例程
5.10.1.1.异常和中断处理例程的保护
5.10.1.2.异常或中断处理例程对标志位的使用
5.10.2.中断任务
5.11.出错码
5.12.异常和中断参考
第7章 多处理器管理
7.1加锁的原子操作(locked atomic operations)
7.1.1可靠的原子操作
7.1.2总线加锁(Bus Locking)
7.1.2.1自动加锁(Automatic Locking)
7.1.2.2软件控制的总线加锁
7.1.3处理自修改和交叉修改代码(handling self- and cross-modifying code)
7.1.4加锁操作对处理器内部缓存的影响
7.2访存排序(memory ordering)
7.2.1 Pentium和Intel486处理器的访存排序
7.2.2 Pentium 4, Intel Xeon, P6系列处理器的访存排序
7.2.3 Pentium 4, Intel Xeon, P6处理器对于串操作的无次序存储(Out-of-Order S
7.2.4加强和削弱访存排序模型(Strengthening or Weakening the Memory Order
7.3 向多个处理器广播页表和页目录条目的改变
7.4串行化指令(serializing instructions)
7.5多处理器初始化
7.5.1 BSP和AP处理器
7.5.2 MP初始化协议的要求和Intel Xeon处理器的限制
7.5.3 Intel Xeon处理器MP初始化协议算法
7.5.4 MP初始化举例
7.5.4.1典型的BSP初始化顺序
7.5.4.2典型的AP初始化顺序
7.5.5在MP系统中识别处理器
7.6超线程技术
7.6.1 Intel 超线程技术体系结构
7.6.1.1逻辑处理器的状态
7.6.1.2 APIC功能
7.6.1.3 内存类型范围寄存器(MEMORY TYPE RANGE REGISTERS,MTRR)
7.6.1.4页属性表(PAGE ATTRIBUTE TABEL,PAT)
7.6.1.5 机器检查体系(MACHINE CHECK ARCHITECTURE)
7.6.1.6 调试寄存器和扩展
7.6.1.7 性能监测计数器(PERFORMANCE MONITORING COUNTERS)
7.6.1.8 IA32_MISC_ENABLE MSR
7.6.1.9访存排序(MEMORY ORDERING)
7.6.1.10串行化指令
7.6.1.11微码更新资源(MICROCODE UPDATE RESOURCES)
7.6.1.12自修改代码(SELF MODIFYING CODE)
7.6.2依赖实现的HT功能(Implementation-Specific HT Technology Facilit
7.6.2.1处理器高速缓存(PROCESSOR CACHES)
7.6.2.2处理器转换后备缓冲区(Translation lookaside buffer(TLB))
7.6.2.3温度监控
7.6.2.4外部信号协调性(EXTERNAL SIGNAL COMPATIBILITY)
7.6.3检测超线程技术
7.6.3.1检测是否支持MONITOR/MWAIT指令
7.6.4初始化支持超线程技术的IA-32处理器
7.6.5在支持超线程技术的IA-32处理器上执行多个线程
7.6.6在支持超线程技术的IA-32处理器上处理中断
7.7空闲和阻塞情况的管理(MANAGEMENT OF IDLE AND BLOCKED CONDITIONS)
7.7.1 HLT指令
7.7.2 PAUSE指令
7.7.3 MONITOR/MWAIT 指令
7.7.4 Monitor/Mwait 地址范围判定
7.7.5 在MP系统中识别逻辑处理器
7.7.6所需的操作系统支持
7.7.6.1 在spin-wait loop中使用PAUSE指令
7.7.6.2 停止空闲逻辑处理器(HALT IDLE LOGICAL PROCESSORS)
7.7.6.3 在多个逻辑处理器上调度线程的方法(guideline)
7.7.6.4 去掉基于执行的计时循环(EXECUTION-BASED TIMING LOOPS)
7.7.6.5 在对齐的128字节内存块上设置锁或信号量
第11章 Intel® MMXTM技术系统编程
11.1 MMX指令集仿真
11.2 MMX状态与MMX寄存器映射
11.2.1 MMX、x87 FPU、FXSAVE及FXRSTOR指令对x87 FPU标签字的影响
11.3 保存和恢复MMX状态和寄存器
11.4 任务和环境切换时保存MMX状态
11.5 MMX指令执行时可能发生的异常
11.5.1 x87浮点指针异常未决时MMX指令的影响
11.6 调试MMX代码
第12章 关于SSE、SSE2和SSE3方面的系统编程
为操作系统提供SSE/SSE2/SSE3扩展的支持
在操作系统中增加对SSE/SSE2/SSE3扩展的支持
检查处理其是否支持SSE/SSE2/SSE3扩展
检查对FXSAVE、FXRSTOR指令的支持
初始化SSE/SSE2/SSE3扩展
为执行SSE/SSE2/SSE3指令时产生的例外提供处理程序
为SIMD指令提供浮点数例外(#XF)处理程序
数字错误标志和IGNNE#
模拟SSE/SSE2/SSE3
保存和恢复SSE/SSE2/SSE3的状态
在任务或上下文切换时保存SSE/SSE2/SSE3的状态
设计操作系统来自动保存x87、MMX、SSE、SS2和SSE3的状态
使用TS标志来控制保存x87、MMX、SSE、SSE2和SSE3的状态