logo资料库

IA-32-3中文版.pdf

第1页 / 共265页
第2页 / 共265页
第3页 / 共265页
第4页 / 共265页
第5页 / 共265页
第6页 / 共265页
第7页 / 共265页
第8页 / 共265页
资料共265页,剩余部分请下载后查看
IA-32 架构软件开发人员手册 第 3 卷:系统编程指南 (中文版-部分)
目 录 第 1 章 导 读.............................................................................................................................1 1.1.本手册涵盖的 IA-32 处理器 .............................................................................................1 1.2.《第 3 卷:系统开发指南》简介.....................................................................................1 1.3.《第 1 卷:基础架构》简介.............................................................................................3 1.4.《第 2 卷:指令集参考》简介.........................................................................................5 1.5.符号约定.............................................................................................................................5 1.5.1.位和字节顺序..........................................................................................................6 1.5.2.保留位与软件兼容性..............................................................................................6 1.5.3.指令操作数..............................................................................................................7 1.5.4.十六进制和二进制数..............................................................................................7 1.5.5.分段寻址..................................................................................................................8 1.5.6.异常..........................................................................................................................8 1.6.相关文献.............................................................................................................................8 第 2 章 系统架构概况...................................................................................................................10 2.1.系统级架构概况...............................................................................................................10 2.1.1.全局和局部描述符表............................................................................................11 2.1.2.系统段、段描述符和门........................................................................................12 2.1.3.任务状态段和任务门............................................................................................13 2.1.4.中断和异常处理....................................................................................................13 2.1.5.内存管理................................................................................................................14 2.1.6.系统寄存器............................................................................................................14 2.1.7.其它系统资源........................................................................................................15 2.2.运行模式...........................................................................................................................15 2.3.EFLAGES 寄存器中的系统标志和域 ............................................................................17 2.4.内存管理寄存器...............................................................................................................19 2.4.1.全局描述符表寄存器(GDTR).........................................................................20 2.4.2.局部描述符表寄存器(LDTR) .........................................................................20 2.4.3.中断描述符表寄存器(IDTR)...........................................................................20 2.4.4.任务寄存器(TR)...............................................................................................21 2.5.控制寄存器.......................................................................................................................21 2.5.1.CPUID 识别控制寄存器标志...............................................................................28 2.6.系统指令汇总...................................................................................................................28 2.6.1 装载和保存系统寄存器........................................................................................30 2.6.2.检查访问特权........................................................................................................31 2.6.3.装载和保存调试寄存器........................................................................................31 2.6.4.使高速缓存和转换后备缓冲区(TLB)失效 ....................................................31 2.6.5.控制处理器............................................................................................................32 2.6.6.读取性能监测和时间戳计数器............................................................................33 2.6.7.读写模型相关寄存器............................................................................................33 第 3 章 保护模式内存管理...........................................................................................................34 3.1.内存管理概述...................................................................................................................34
3.2.段的使用...........................................................................................................................36 3.2.1.基本平坦模型........................................................................................................36 3.2.2.保护平坦模型........................................................................................................37 3.2.3.多段模型................................................................................................................37 3.2.4.分页与分段............................................................................................................38 3.3.物理地址空间...................................................................................................................39 3.4.逻辑地址和线性地址.......................................................................................................39 3.4.1.段选择子................................................................................................................40 3.4.2.段寄存器................................................................................................................41 3.4.3.段描述符................................................................................................................42 3.5.系统描述符类型.......................................................................................................47 3.5.1.段描述符表............................................................................................................48 3.6.分页(虚拟内存)概述...................................................................................................50 3.6.1.分页选项................................................................................................................51 3.6.2.页表和页目录表....................................................................................................52 3.7.使用 32 位物理寻址的页变换.........................................................................................53 3.7.1.线性地址转换(4KB 页) ...................................................................................53 3.7.2.线性地址转换(4MB 页)...................................................................................54 3.7.3.混合使用 4KB 和 4MB 页 ....................................................................................55 3.7.4.内存别名................................................................................................................55 3.7.5.页目录表基地址....................................................................................................55 3.7.6.页目录表项和页表项............................................................................................56 3.7.7.不存在的页目录表项和页表项............................................................................60 3.8.使用 PAE 分页机制的 36 位物理寻址............................................................................60 3.8.1.开启 PAE 的线性地址变换(4KB 页) ..............................................................61 3.8.2.开启 PAE 的线性地址变换(2MB 页)..............................................................62 3.8.3.使用扩展页表结构访问全部扩展物理地址空间 ................................................63 3.8.4.启用扩展寻址的页目录表项和页表项................................................................63 3.9.使用 PSE-36 分页机制的 36 位物理寻址.......................................................................66 3.10.段到页的映射.................................................................................................................67 3.11.转换后备缓冲区(TLB) .............................................................................................69 第 4 章 保 护...........................................................................................................................71 4.1.启用/禁用段保护和页保护..............................................................................................71 4.2.用于段级和页级保护的域和标志...................................................................................72 4.3.界限检验...........................................................................................................................74 4.4 类型检验...........................................................................................................................75 4.4.1.空段选择子的检验................................................................................................77 4.5.特权级...............................................................................................................................77 4.6.访问数据段时的特权级检验...........................................................................................79 4.6.1.访问代码段中的数据............................................................................................81 4.7.装载 SS 寄存器时的特权级检验 ....................................................................................81 4.8.在代码段之间进行程序控制转移时的特权级检验.......................................................81 4.8.1.直接调用或者跳转到代码段................................................................................82 4.8.2.门描述符................................................................................................................84 2
4.8.3.调用门....................................................................................................................85 4.8.4.通过调用门访问代码段........................................................................................86 4.8.5.栈切换....................................................................................................................89 4.8.6.从被调例程返回....................................................................................................91 4.8.7.使用 SYSENTER 和 SYSEXIT 指令快速调用系统例程 ...................................93 4.9.特权指令...........................................................................................................................94 4.10.指针验证.........................................................................................................................95 4.10.1.检验访问权限(LAR 指令).............................................................................95 4.10.2.检验读写权限(VERR 和 VERW 指令).........................................................96 4.10.3.检验指针偏移是否在段界限内(LSL 指令)..................................................96 4.10.4.检验调用者的访问权限(ARPL 指令)...........................................................97 4.10.5.对齐检验..............................................................................................................99 4.11.页级保护.........................................................................................................................99 4.11.1.页保护标志..........................................................................................................99 4.11.2.限定可寻址区间................................................................................................100 4.11.3.页类型................................................................................................................100 4.11.4.联合使用两级页表的保护................................................................................101 4.11.5.取代页保护........................................................................................................101 4.12.联合使用页保护和段保护...........................................................................................101 第 5 章 中断和异常处理.............................................................................................................103 5.1.中断和异常概述.............................................................................................................103 5.2.异常和中断向量.............................................................................................................104 5.3.中断源.............................................................................................................................105 5.3.1.外部中断..............................................................................................................105 5.3.2.可屏蔽硬件中断..................................................................................................106 5.3.3.软件产生的中断..................................................................................................106 5.4.异常源.............................................................................................................................107 5.4.1.程序错误异常......................................................................................................107 5.4.2.软件产生的异常..................................................................................................107 5.4.3.机器检测异常......................................................................................................108 5.5.异常分类.........................................................................................................................108 5.6.程序或任务重新开始.....................................................................................................109 5.7.不可屏蔽中断(NMI).................................................................................................110 5.7.1.处理多个 NMI.....................................................................................................110 5.8.打开和关闭中断.............................................................................................................110 5.8.1.屏蔽可屏蔽硬件中断.......................................................................................... 111 5.8.2.屏蔽指令断点......................................................................................................112 5.8.3.栈切换时屏蔽中断和异常..................................................................................112 5.9.并发异常或中断的优先关系.........................................................................................112 5.10.中断描述符表(IDT) ................................................................................................114 5.11.IDT 描述符 ...................................................................................................................115 5.12.异常和中断处理...........................................................................................................115 5.12.1.异常或中断处理例程........................................................................................116 5.12.2.中断任务............................................................................................................119
5.13.错误码...........................................................................................................................121 5.14.异常和中断参考...........................................................................................................122 0 号中断——除法错异常(#DE).............................................................................123 1 号中断——调试异常(#DB) ................................................................................123 2 号中断——NMI 中断...............................................................................................124 3 号中断——断点异常(#BP).................................................................................124 4 号中断——溢出异常(#OF).................................................................................125 5 号中断——BOUND 越界异常(#BR) .................................................................125 6 号中断——非法操作码异常(#UD) ....................................................................126 7 号中断——设备不可用异常(#NM)....................................................................127 8 号中断——双故障异常(#DF).............................................................................128 9 号中断——协处理器段超出....................................................................................130 10 号中断——非法 TSS 异常(#TS) ......................................................................130 11 号中断——段不存在(#NP)...............................................................................132 12 号中断——栈故障异常(#SS) ...........................................................................134 13 号中断——一般保护异常(#GP).......................................................................135 14 号中断——页故障异常(#PF) ...........................................................................137 16 号中断——x87 FPU 浮点错误(#MF)...............................................................140 17 号中断——对齐检验异常(#AC) ......................................................................141 18 号中断——机器检验异常(#MC)......................................................................143 19 号中断——SIMD 符点异常(#XF)....................................................................144 32-255 号中断——未定义中断...................................................................................146 第 6 章 任务管理.........................................................................................................................147 6.1.任务管理概述.................................................................................................................147 6.1.1.任务结构..............................................................................................................147 6.1.2.任务状态..............................................................................................................148 6.1.3.执行任务..............................................................................................................149 6.2.任务管理数据结构.........................................................................................................150 6.2.1.任务状态段(TSS)...........................................................................................150 6.2.2.TSS 描述符..........................................................................................................153 6.2.3.任务寄存器..........................................................................................................154 6.2.4.任务门描述符......................................................................................................155 6.3.任务切换.........................................................................................................................157 6.4.任务链接.........................................................................................................................160 6.4.1.使用忙标志防止递归任务切换..........................................................................162 6.4.2.修改任务链接......................................................................................................162 6.5.任务地址空间.................................................................................................................163 6.5.1.映射任务到线性和物理地址空间......................................................................163 6.5.2.任务逻辑地址空间..............................................................................................164 6.6.16 位任务状态段(TSS).............................................................................................165 第 7 章 多处理器管理.................................................................................................................167 7.1.加锁的原子操作.............................................................................................................168 7.1.1.保证原子操作......................................................................................................169 7.1.2.总线加锁..............................................................................................................169 4
7.1.3.处理自修改和交叉修改代码..............................................................................172 7.1.4.加锁操作对处理器内部高速缓存的影响..........................................................173 7.2.内存排序.........................................................................................................................173 7.2.1.Pentium 和 Intel486 处理器的内存排序 ............................................................174 7.2.2.Pentium 4、Intel Xeon、P6 系列处理器的内存排序........................................174 7.2.3.Pentium 4、Intel Xeon、P6 系列处理器的串操作的无次序存储....................176 7.2.4.强化或弱化内存排序模型..................................................................................177 7.3.向多个处理器传播页表项和页目录表项的修改.........................................................179 7.4.串行化指令.....................................................................................................................179 7.5.多处理器(MP)初始化...............................................................................................181 7.5.1.BSP 和 AP 处理器...............................................................................................182 7.5.2.Intel Xeon 处理器的 MP 初始化协议的需求和限制 ........................................182 7.5.3.Intel Xeon 处理器的 MP 初始化协议算法 ........................................................182 7.5.4.MP 初始化举例...................................................................................................184 7.5.5.在 MP 系统中识别处理器 ..................................................................................188 7.6.超线程技术.....................................................................................................................189 7.6.1.Intel 的超线程技术架构......................................................................................189 7.6.2.实现相关的 HT 技术设施...................................................................................194 7.6.3.探测超线程技术..................................................................................................196 7.6.4.初始化支持超线程技术的 IA-32 处理器 ..........................................................197 7.6.5.在支持超线程技术的 IA-32 处理器上执行多个线程.......................................198 7.6.6.在支持超线程技术的 IA-32 处理器上处理中断...............................................198 7.7.空闲和阻塞情况的管理.................................................................................................199 7.7.1.HLT 指令 .............................................................................................................199 7.7.2.PAUSE 指令 ........................................................................................................200 7.7.3.MONITOR/MWAIT 指令....................................................................................200 7.7.4.Monitor/Mwait 地址范围判定 ............................................................................202 7.7.5.在 MP 系统中识别逻辑处理器 ..........................................................................203 7.7.6.所需的操作系统支持..........................................................................................208 第 8 章 高级可编程中断控制器(APIC)................................................................................215 8.1.本地 APIC 和 I/O APIC 概述 ........................................................................................215 8.2.系统总线与 APIC 总线的对比......................................................................................219 8.3.Intel 82489DX 外部 APIC、APIC 和 xAPIC 之间的关系...........................................219 8.4.本地 APIC.......................................................................................................................219 8.4.1.本地 APIC 块图...................................................................................................219 8.4.2.本地 APIC 的存在...............................................................................................223 8.4.3.开启或关闭本地 APIC........................................................................................223 8.4.4.本地 APIC 状态和位置.......................................................................................224 8.4.5.重新分配本地 APIC 寄存器...............................................................................224 8.4.6.本地 APIC ID ......................................................................................................225 8.4.7.本地 APIC 状态...................................................................................................225 8.4.8.本地 APIC 版本寄存器.......................................................................................227 8.5.处理本地中断.................................................................................................................228 8.5.1.本地向量表..........................................................................................................228
8.5.2.合法中断向量......................................................................................................231 8.5.3.错误处理..............................................................................................................232 8.5.4.APIC 计时器........................................................................................................233 8.5.5.本地中断接受......................................................................................................234 8.6.发出处理器间中断.........................................................................................................234 8.6.1.中断命令寄存器(ICR) ...................................................................................235 8.6.2.确定 IPI 目的.......................................................................................................239 8.6.3.IPI 传送和接受....................................................................................................244 8.7.系统和 APIC 总线仲裁..................................................................................................244 8.8.处理中断.........................................................................................................................245 8.8.1.Pentium 4 和 Intel Xeon 处理器的中断处理......................................................245 8.8.2.P6 系列和 Pentium 处理器的中断处理 .............................................................246 8.8.3.中断、任务和处理器优先级..............................................................................247 8.8.4.固定中断的中断接受..........................................................................................249 8.8.5.发中断服务完成信号..........................................................................................251 8.9.伪中断.............................................................................................................................251 8.10.APIC 总线消息传送机制和协议(仅对 P6 系列和 Pentium 处理器)....................252 8.10.1.总线消息格式....................................................................................................253 8.11.消息引发中断信号.......................................................................................................253 8.11.1.消息地址寄存器格式........................................................................................254 8.11.2.消息数据寄存器格式........................................................................................255 后 记...........................................................................................................................................257 6
分享到:
收藏