图书介绍
64位微处理器系统编程和应用编程【2025|PDF|Epub|mobi|kindle电子书版本百度云盘下载】

- 周明德编著 著
- 出版社: 北京:清华大学出版社
- ISBN:9787302207757
- 出版时间:2009
- 标注页数:726页
- 文件大小:280MB
- 文件页数:753页
- 主题词:微处理器-程序设计
PDF下载
下载说明
64位微处理器系统编程和应用编程PDF格式电子书版下载
下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!
(文件页数 要大于 标注页数,上中下等多册电子书除外)
注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具
图书目录
第1章 引言1
1.1符号约定1
1.1.1位与字节顺序1
1.1.2保留位与软件兼容性1
1.1.3十六进制与二进制数2
1.1.4分段的寻址2
1.1.5对CPUID、CR和MSR值的新句法3
1.1.6异常3
1.2 Intel 64和IA-32体系结构的简要历史4
1.2.1 16位处理器与分段4
1.2.2 Intel 286处理器4
1.2.3 Intel 386处理器4
1.2.4 Intel 486处理器4
1.2.5 Intel Pentium(奔腾)处理器5
1.2.6处理器的P6族(系列)5
1.2.7 Intel Pentium 4处理器系列6
1.2.8 Intel Xeon处理器6
1.2.9 Intel Pentium M处理器6
1.2.10 Intel Pentium处理器极品版6
1.2.11 Intel Core Duo和Intel Core Solo处理器7
1.2.12 Intel Xeon处理器5100系列和Intel Core 2处理器系列7
1.3更多的关于特定的先进技术8
1.3.1 P6族微体系结构8
1.3.2 Intel NetBurst微体系结构9
1.3.3 Intel Core微体系结构11
1.3.4 SIMD指令13
1.3.5超线程技术14
1.3.6多核技术15
1.3.7 Intel 64体系结构16
1.3.8 Intel虚拟化技术17
第2章 基本执行环境18
2.1操作方式18
2.1.1 Intel 64体系结构18
2.1.2 x86-64的操作方式19
2.2基本执行环境概要21
2.2.1 64位方式执行环境22
2.3内存组织24
2.3.1 IA-32方式25
2.3.2分页和虚拟存储器26
2.3.3 64位方式的内存组织26
2.3.4操作方式与内存模型26
2.3.5 32位和16位地址与操作数尺寸26
2.3.6在保护方式扩展的物理寻址27
2.3.7在64位方式的地址计算27
2.4基本程序执行寄存器28
2.4.1通用寄存器28
2.4.2段寄存器30
2.4.3 EFLAGS寄存器32
2.5指令指针35
2.6操作数尺寸和地址尺寸属性35
2.7操作数寻址36
2.7.1立即数37
2.7.2寄存器操作数37
2.7.3存储器操作数38
2.7.4规定段选择子38
2.7.5规定偏移量39
2.7.6汇编程序和编译器寻址方式40
2.7.7 I/O端口寻址40
第3章 数据类型41
3.1基本数据类型41
3.2数字数据类型42
3.2.1整数42
3.2.2浮点数据类型43
3.3指针数据类型45
3.4位字段数据类型46
3.5串数据类型46
3.6组合的SIMD数据类型47
3.6.1 64位SIMD组合的数据类型47
3.6.2 128位组合的SIMD数据类型47
3.7 BCD和组合的BCD整数48
3.8实数和浮点格式49
3.8.1实数系统49
3.8.2浮点格式49
3.8.3实数和非数字编码51
3.8.4舍入54
3.9浮点异常概要55
3.9.1浮点异常条件56
3.9.2浮点异常优先权59
3.9.3浮点异常处理程序的典型动作60
第4章Intel 64 (AMD x86-64)和IA-32系统体系结构概要61
4.1系统级体系结构概要62
4.1.1全局和局部描述符表62
4.1.2系统段、段描述符和门64
4.1.3任务状态段和任务门64
4.1.4中断和异常处理65
4.1.5存储管理65
4.1.6系统寄存器66
4.1.7其他系统资源66
4.2操作方式67
4.3在EFLAGS寄存器中的系统标志和字段68
4.4存储管理寄存器70
4.4.1全局描述符表寄存器(GDTR)70
4.4.2局部描述符表寄存器(LDTR)70
4.4.3中断描述符表寄存器(IDTR)70
4.4.4任务寄存器(TR)71
4.5控制寄存器71
4.6系统指令概要75
4.6.1装入和存储系统寄存器77
4.6.2验证访问权77
4.6.3装入和存储调试寄存器77
4.6.4无效缓存和TLB78
4.6.5控制处理器78
4.6.6读性能监视和时戳计数器78
4.6.7读和写模型特定寄存器79
第5章 保护方式存储管理80
5.1存储管理概要80
5.2使用分段81
5.2.1基本平面模型81
5.2.2保护的平面模型82
5.2.3多段模型82
5.2.4在IA-32e方式中的分段83
5.2.5分页和段83
5.3物理地址空间84
5.4逻辑和线性地址84
5.4.1在IA-32e方式中逻辑地址的转换85
5.4.2段选择子85
5.4.3段寄存器85
5.4.4在IA-32e方式中的段装入指令86
5.4.5段描述符87
5.5系统描述符类型90
5.5.1段描述符表91
5.5.2在IA-32e方式中的段描述符表92
5.6分页(虚拟存储器)概要93
5.6.1分页选项93
5.6.2页表和页目录94
5.7使用32位物理寻址的页转换94
5.7.1线性地址转换(4KB页)94
5.7.2线性地址转换(4MB页)95
5.7.3混合4KB和4MB页96
5.7.4内存混合96
5.7.5页目录的基地址96
5.7.6页目录和页表项96
5.7.7页目录和页项不存在99
5.8使用PAE分页机制的36位物理寻址99
5.8.1增强的传统PAE分页100
5.8.2具有PAE启用的(4KB页)的线性地址转换100
5.8.3具有PAE启用的(2MB页)的线性地址转换101
5.8.4访问具有扩展的页表结构的全扩展物理地址空间101
5.8.5具有扩展的地址启用的页目录和页表102
5.9使用PSE-36分页机制的36位物理寻址103
5.10在IA-32e方式中PAE启用的分页104
5.10.1 IA-32e方式线性地址转换(4KB页)105
5.10.2 IA-32e方式线性地址转换(2MB页)106
5.10.3增强的分页数据结构106
5.11映射段至页109
5.12转换查找缓冲器110
5.13输入输出111
5.13.1 I/O端口寻址111
5.13.2 I/O端口硬件111
5.13.3 I/O地址空间111
5.13.4 I/O指令112
5.13.5保护方式I/O113
5.13.6顺序I/O114
第6章 内存缓存控制116
6.1内部缓存、TLB和缓冲器116
6.2缓存的术语119
6.3缓存可用的方法120
6.3.1写组合内存单元的缓冲121
6.3.2选择内存类型122
6.3.3在不可缓存的内存中取代码123
6.4缓存控制协议123
6.5缓存控制123
6.5.1缓存控制寄存器和位124
6.5.2缓存控制的优先级126
6.5.3阻止缓存127
6.5.4禁止和启用L3缓存128
6.5.5缓存管理指令128
6.5.6 L1数据缓存环境方式129
6.6自修改代码129
6.7隐含的缓存(Pentium 4、 Intel Xeon和P6族处理器)129
6.8显式缓存130
6.9无效转换查找缓冲器130
6.10存储缓冲器131
6.11内存类型范围寄存器131
6.11.1 MTRR特性标识132
6.11.2用MTRR设置内存范围133
6.11.3基地址和屏蔽计算举例136
6.11.4范围尺寸和对齐要求137
6.11.5 MTRR初始化138
6.11.6重新映射内存类型138
6.11.7 MTRR维护编程接口138
6.11.8在MP系统中MTRR考虑141
6.11.9大页尺寸考虑142
6.12页属性表(PAT)142
6.12.1检测对PAT特性的支持143
6.12.2 IA32_ CR_ PAT MSR143
6.12.3从PAT选择一内存类型144
6.12.4编码PAT144
第7章 保护146
7.1启用与禁止段和页保护146
7.2段级和页级保护所用的字段与标志147
7.3界限检查149
7.4类型检查150
7.5特权级151
7.6当访问数据段时的特权级检查152
7.7当装入SS寄存器时的特权级检查154
7.8在码段之间传送程序控制的特权级检查154
7.8.1直接调用或跳转至码段154
7.8.2门描述符156
7.8.3调用门156
7.8.4通过调用门访问码段158
7.8.5堆栈切换160
7.8.6从被调用过程返回162
7.8.7用SYSENTER和SYSEXIT指令执行快速调用至系统过程162
7.8.8在64位方式中快速系统调用164
7.9特权指令165
7.10指针确认166
7.10.1访问权检查(LAR指令)166
7.10.2检查读写权限(VERR和VERW指令)166
7.10.3检查偏移量在界限内(LSL指令)167
7.10.4调整调用者的访问权(ARPL指令)167
7.10.5检查对齐169
7.11页级保护169
7.11.1页保护标志169
7.11.2限制可寻址的域169
7.11.3页类型169
7.11.4组合页表的两级保护170
7.11.5超越页保护171
7.12组合页与段保护171
7.13页级保护与执行禁止位171
7.13.1检测与启用执行禁止位功能172
7.13.2执行禁止位页保护172
7.13.3保留位检查173
7.13.4异常处理174
第8章 中断和异常处理175
8.1中断和异常概要175
8.2异常和中断向量175
8.3中断源177
8.3.1外部中断177
8.3.2可屏蔽的硬件中断177
8.3.3软件生成的中断177
8.4异常的源178
8.4.1程序差错异常178
8.4.2软件生成的中断178
8.4.3机器检查异常178
8.5异常分类178
8.6程序或任务重启动179
8.7非屏蔽中断180
8.8启用与禁止中断180
8.8.1屏蔽可屏蔽的硬件中断180
8.8.2屏蔽指令断点181
8.8.3屏蔽当切换堆栈时的异常和中断181
8.9在同时发生中断和异常之间的优先级181
8.10中断描述符表(IDT)182
8.11 IDT描述符183
8.12异常和中断处理184
8.12.1异常或中断处理程序过程185
8.12.2中断任务187
8.13出错码188
8.14在64位方式中的异常和中断处理188
8.14.1 64位方式IDT189
8.14.2 64位方式堆栈帧190
8.14.3在IA-32e方式中的IRET190
8.14.4在IA-32e方式中的堆栈切换190
8.14.5中断堆栈表191
8.15异常和中断引用191
8.15.1中断0——除法错误异常(# DE)192
8.15.2中断1——调试异常(# DB)192
8.15.3中断2—— NMI中断193
8.15.4中断3——断点异常(#BP)193
8.15.5中断4——溢出异常(# OF)194
8.15.6中断5——BOUND范围超出异常(#BR)194
8.15.7中断6——无效操作码异常(# UD)194
8.15.8中断7——设备不可用异常(# NM)195
8.15.9中断8——双故障异常(# DF)196
8.15.10中断9——协处理器段超出198
8.15.11中断10——无效异常(# TS)198
8.15.12中断11——段不存在(# NP)201
8.15.13中断12——堆栈故障异常(# SS)202
8.15.14中断13——通用保护异常202
8.15.15中断14——页故障异常204
8.15.16中断15——x87 FPU浮点出错(# MF)207
8.15.17中断16——对齐检查异常(# AC)208
8.15.18中断17——机器检查异常处理程序(# MC)209
8.15.19中断18—— SIMD浮点异常(# XF)210
8.15.20中断32~255——用户定义的中断211
第9章 指令集小结213
9.1通用指令214
9.1.1数据传送指令214
9.1.2二进制算术运算指令221
9.1.3十进制算术运算指令225
9.1.4逻辑指令227
9.1.5移位和旋转指令228
9.1. 6位和字节指令230
9.1.7控制传送指令233
9.1.8串指令243
9.1.9 I/O指令247
9.1.10进入和离开指令249
9.1.11标志控制指令250
9.1.12段寄存器指令254
9.1.13杂项指令254
9.2 x87 FPU指令256
9.2.1 x87 FPU数据传送指令256
9.2.2 x87 FPU基本算术运算指令260
9.2.3 x87 FPU比较指令270
9.2.4 x87 FPU超越指令273
9.2.5 x87 FPU装入常数指令278
9.2.6 x87 FPU控制指令278
9.3 x87 FPU和SIMD状态管理指令282
9.4 MMX指令288
9.4.1 MMX数据传送指令288
9.4.2 MMX转换指令289
9.4.3 MMX组合的算术运算指令291
9.4.4 MMX比较指令295
9.4.5 MMX逻辑指令295
9.4.6 MMX移位和旋转指令296
9.4.7 MMX状态管理指令298
9.5 SSE指令298
9.5.1 SSE SIMD单精度浮点指令298
9.5.2 SSE MXCSR状态管理指令310
9.5.3 SSE 64位SIMD整数指令311
9.5.4 SSE缓存控制、预取和指令按序指令314
9.6 SSE2指令316
9.6.1 SSE2组合的和标量双精度浮点指令317
9.6.2 SSE2组合的单精度浮点指令329
9.6.3 SSE2 128位SIMD整数指令330
9.6.4 SSE2缓存控制指令和按序指令333
9.7 SSE3指令336
9.7.1 SSE3 x87 FPU整数转换指令336
9.7.2 SSE3特定的128位未对齐的数据装入指令337
9.7.3 SSE3 SIMD浮点组合的加/减指令337
9.7.4 SSE3 SIMD浮点水平加/减指令338
9.7.5 SSE3 SIMD浮点装入/传送/复制指令341
9.7.6 SSE3代理同步指令342
9.8补充的流扩展3指令344
9.8.1水平加减指令344
9.8.2组合的绝对值345
9.8.3乘和加组合的符号的和无符号的字节345
9.8.4用舍入和伸缩组合地乘高345
9.8.5组合地抽取字节346
9.8.6组合的符号346
9.8.7组合的右对齐346
9.9系统指令347
9.10 64位方式指令360
第10章用x87 FPU编程363
10.1 x87 FPU执行环境363
10.1.1在64位方式和兼容方式中的x87 FPU364
10.1.2 x87 FPU数据寄存器364
10.1.3 x87 FPU状态寄存器365
10.1.4条件分支和条件传送367
10.1.5 x87 FPU控制字368
10.1.6无穷大控制标志369
10.1.7 x87 FPU标记字369
10.1.8 x87 FPU指令和数据指针370
10.1.9最后的指令操作码370
10.1.10用FSTENV/FNSTENV和FSAVE/FNSAVE保存x87 FPU的状态371
10.1.11用FXSAVE保存x87 FPU的状态372
10.2 x87 FPU数据类型372
10.2.1不确定373
10.2.2不支持的扩展双精度浮点编码和伪非规格化373
10.3 x87 FPU指令集374
10.3.1换码指令375
10.3.2 x87 FPU指令操作数375
10.3.3数据传送指令375
10.3.4装入常数指令376
10.3.5基本算术运算指令376
10.3.6比较和分类指令378
10.3.7三角函数指令379
10.3.8 π380
10.3.9对数、指数和伸缩381
10.3.10超越指令精度381
10.3.11 x87 FPU控制指令381
10.3.12等待的与非等待的指令382
10.3.13不支持的x87 FPU指令382
10.4 x87 FPU浮点异常处理383
10.4.1算术与非算术指令383
10.5 x87 FPU浮点异常条件384
10.5.1无效操作异常384
10.5.2非规格化操作数异常(# D)386
10.5.3被零除异常(# Z)386
10.5.4数字溢出异常(# O)386
10.5.5数字下溢异常(# U)387
10.5.6不精确结果(精度)异常(# P)388
10.6 x87 FPU异常同步388
10.7用软件处理x87 FPU异常389
10.7.1本身方式389
10.7.2 MS-DOS兼容子方式390
10.7.3用软件处理x87 FPU异常390
10.8 8087程序设计举例391
第11章64位和128位媒体与科学编程419
11.1概要420
11.2能力420
11.2.1并行操作421
11.2.2数据转换和重组422
11.2.3矩阵运算425
11.2.4饱和426
11.2.5分支删除426
11.2.6浮点向量运算427
11.3 MMX技术、SSE和SSE2编程环境428
11.3.1在64位方式和兼容方式中的SSE428
11.3.2 MMX寄存器429
11.3.3 XMM寄存器429
11.3.4 MXCSR控制和状态寄存器430
11.3.5 SSE扩展与SSE2/SSE3/MMX和x87 FPU的兼容性433
11.3.6其他寄存器433
11.3.7 rFLAGS寄存器433
11.4操作数433
11.4.1数据类型434
11.4.2操作数尺寸和超越436
11.4.3操作数寻址436
11.4. 4数据对齐436
11.4.5整型数据类型437
11.4.6 64位媒体浮点数据类型438
11.4.7 128位媒体浮点数据类型439
11.4.8浮点数表示440
11.4.9浮点数编码442
11.4.10浮点舍入444
11.5指令摘要——整型指令444
11.5.1语法445
11.5.2退出媒体状态446
11.5.3数据传送446
11.5.4数据转换450
11.5.5数据重组450
11.5.6算术运算454
11.5.7移位459
11.5.8比较460
11.5.9逻辑指令462
11.5.10保存和恢复状态462
11.6指令摘要——浮点指令463
11. 6.1语法463
11.6.2数据转换463
11.6.3数据传送465
11.6.4数据重组467
11.6.5算术运算469
11.6.6比较473
11.6.7 128位媒体逻辑指令475
11.6.8存储顺序指令475
11.6.9 PAUSE指令476
11.7指令对标志的影响476
11.8指令前缀476
11.8.1支持的前缀476
11.8.2特殊使用和保留的前缀477
11.8.3引起异常的前缀477
11.9特征检测477
11.10异常477
11.10.1通用异常478
11.10.2 x87浮点异常(# MF)479
11.10.3 128位媒体指令引起的SIMD浮点异常479
11.10.4生成 SIMD浮点异常482
11.10.5 SIMD异常处理482
11.10.6 SIMD浮点异常优先级483
11.10.7 SIMD和x87 FPU浮点异常的交互作用485
11.11在执行64位媒体指令上采取的动作485
11.12混合媒体码和x87码486
11.12.1混合代码486
11.12.2清MMXTM状态487
11.13状态保存487
11.13.1状态保存和恢复487
11.13.2状态保存指令487
11.13.3参数传递488
11.13.4在MMX寄存器中访问操作数488
11.14性能考虑488
11.14.1用小的操作数尺寸488
11.14.2为并行操作重组织数据489
11.14.3删除分支489
11.14.4用流存储489
11.14.5对齐数据489
11.14.6为可缓存性组织数据489
11.14.7预取数据489
11.14.8为传送数据用128位媒体码490
11.14.9保留中间结果至MMX或XMM寄存器中490
11.14.10用128位媒体码替换GPR码490
11.14.11用128位媒体码替换x87码490
11.15用SSE/SSE2扩展的应用程序490
11.15.1使用SSE/SSE2扩展的通用指南490
11.15.2检查对SSE/SSE2的支持491
11.15.3检查在MXCSR寄存器中的DAZ标志491
11.15.4 SSE/SSE2扩展的初始化491
11.15.5保存和恢复SSE/SSE2状态492
11.15.6写MXCSR寄存器的指南492
11.15.7 SSE/SSE2指令与x87 FPU和MMX指令的交互作用493
11.15.8 SIMD和x87 FPU浮点数据类型的兼容性493
11.15.9混合组合的和标量浮点与128位SIMD整数指令与数据493
11.15.10与SSE/SSE2过程和函数的接口494
11.15.11用128位SIMD整数指令更新已存在的MMX技术例程495
11.15.12在算术运算上的分支495
11.15.13线索指令的可缓存性495
11.15.14指令前缀对SSE/SSE2指令的影响496
11.16应用举例:基于MMX/SSE/SSE2的H·264解码器关键算法优化497
11.16.1 H·264解码器关键算法优化497
11.16.2性能测试结果500
11.16.3结论501
第12章用SSE3和追加的SSE3编程502
12.1 SSE3/SSSE3编程环境和数据类型502
12.1.1 SSE3/SSSE3在64位方式和兼容方式中502
12.1.2 SSE3/SSSE3与MMX技术、x87 FPU环境和SSE/SSE2扩展的兼容性502
12.1.3水平的和不对称的处理502
12.2SSE3指令的概要503
12.3SSE3指令503
12.3.1 x87 FPU整数转换的指令503
12.3.2特殊的128位未对齐数据装入的SIMD整数指令504
12.3.3增强LOAD/MOVE/DUPLICATE性能的SIMD浮点指令504
12.3.4提供组合的加/减的SIMD浮点指令504
12.3.5提供水平加/减的SIMD浮点指令505
12.3.6两条线程同步指令505
12.4用SSE3扩展写应用程序506
12.4.1使用SSE3扩展的指南506
12.4.2检查对SSE3的支持506
12.4.3对于SIMD浮点计算启用FTZ和DAZ506
12.4.4与SSE/SSE2扩展编程SSE3506
12.5 SSSE3指令概要507
12.6 SSSE3指令507
12.6.1水平加/减507
12.6.2组合的绝对值508
12.6.3乘和加组合的符号和无符号字节508
12.6.4组合的乘高与舍入和比例508
12.6.5组合的搅乱字节508
12.6.6组合的符号509
12.6.7组合的右对齐509
12.7用SSSE3扩展写应用程序509
12.7.1使用SSSE3扩展的指南509
12.7.2检查对SSSE3的支持509
12.8 SSE3/SSSE3异常509
12.8.1设备不可用异常509
12.8.2数字出错标志和IGNNE 510
12.8.3仿真510
第13章 任务管理511
13.1任务管理概要511
13.1.1任务结构511
13.1.2任务状态511
13.1.3执行任务512
13.2任务管理数据结构513
13.2.1任务状态段513
13.2.2 TSS描述符515
13.2.3在64位方式中的TSS描述符516
13.2.4任务寄存器516
13.2.5任务门描述符517
13.3任务切换518
13.4任务链接521
13.4.1使用忙标志以防止递归的任务切换522
13.4.2修改任务链接522
13.5任务地址空间522
13.5.1映射任务至线性和物理地址空间523
13.5.2任务线性地址空间523
13.6 16位任务状态段524
13.7在64位方式中的任务管理525
第14章 调试与性能监视527
14.1调试支持设施的概要527
14.2调试寄存器528
14.2.1调试地址寄存器(DR0~DR3)529
14.2.2调试寄存器DR4、DR5.529
14.2.3调试状态寄存器(DR6)529
14.2.4调试控制寄存器(DR7)530
14.2.5断点字段识别531
14.2.6调试寄存器和Intel 64处理器532
14.3调试异常532
14.3.1调试异常(#DB)——中断向量1532
14.3.2断点异常(#BP)——中断向量3535
14.4最后分支记录概要535
14.5最后分支、中断和异常记录(Intel Core 2 Duo处理器族)535
14.5.1 IA32_ DEBUGCTL MSR535
14.5.2 BTS和相关的设施537
14.6最后分支、中断和异常记录(基于Intel NetBurst微体系结构处理器)538
14.6.1 CPI确定的最后分支记录机制539
14.6.2 MSR_ DEBUGCTLA MSR540
14.6.3 LBR堆栈541
14.6.4监视的分支、异常和中断542
14.6.5在分支、异常和中断上单步542
14.6.6分支追踪消息543
14.6.7最后异常记录543
14.6.8分支踪迹存储543
14.7最后分支、中断和异常记录(Intel Core Solo和Intel Core Duo处理器)546
14.8最后分支、中断和异常(Pentium M处理器)547
14.9最后分支、中断和异常记录(P6族处理器)548
14.9.1 DEBUGCTLMSR寄存器549
14.9.2最后分支和最后异常MSR549
14.9.3监视的分支、异常和中断550
14.10时戳计数器550
14.11性能监视概要551
14.12体系结构的性能监视552
14.12.1体系结构性能监视版本1552
14.12.2体系结构性能监视版本2554
14.12.3预定义的体系结构性能事件556
14.13性能监视(Intel Core Solo和Intel Core Duo处理器)558
14.14性能监视(基于Intel Core微体系结构处理器)559
14.14.1固定功能性能计数器560
14.14.2全局计数器控制设施560
14.14.3在撤出点的事件562
14.14.4基于采样的精确事件562
14.15性能监视(基于Intel NetBurst微体系结构的处理器)564
14.15.1 ESCR MSR568
14.15.2性能计数器569
14.15.3 CCCR MSR570
14.15.4调试存储机制571
14.15.5 DS保存区域571
14.15.6为非撤出事件编程性能计数器575
14.15.7在撤出时计数580
14.15.8基于采样的精确事件582
14.15.9操作系统暗示583
14.16性能监视和超线程技术583
14.16.1 ESCR MSR584
14.16.2 CCCR MSR584
14.16.3 IA32_ PEBS_ ENABLE MSR586
14.16.4性能监视事件586
14.17计数时钟587
14.17.1非暂停的时钟滴答588
14.17.2非睡眠时钟滴答588
14.17.3增量时戳计数器589
14.17.4未暂停的基准时钟滴答589
14.17.5周期计数和机会主义的处理器操作589
14.18性能监视和双核技术590
14.19在64位具有8MB L3缓存的Intel Xeon处理器MP上的性能监视590
14.20在双核Intel Xeon处理器7100系列上的性能监视592
14.20.1 GBSQ事件接口593
14.20.2 GSNPQ事件接口594
14.20.3 FSB事件计数595
14.20.4公共事件控制接口596
第15章 先进的可编程的中断控制器598
15.1当地和I/O APIC概要598
15.2系统总线与APIC总线600
15.3 Intel 82489DX外部APIC、 APIC和xAPIC601
15.4当地APIC601
15.4.1当地APIC方框图601
15.4.2当地APIC的存在604
15.4.3启用或禁止当地APIC604
15.4.4当地APIC状态和位置604
15.4.5当地APIC寄存器的重定位605
15.4.6当地APIC ID605
15.4.7当地APIC状态605
15.4.8当地APIC版本寄存器607
15.5处理当地中断607
15.5.1当地向量表607
15.5.2有效的中断向量609
15.5.3差错处理610
15.5.4 APIC定时器611
15.5.5当地中断接受612
15.6发出处理器间中断612
15.6.1中断命令寄存器612
15.6.2确定IPI目的615
15.6.3 IPI交付和接收618
15.7系统和总线仲裁618
15.8处理中断619
15.8.1 Pentium 4和Intel Xeon处理器的中断处理619
15.8.2中断、任务和处理器优先级619
15.8.3对于固定中断的接收620
15.8.4通知中断服务完成621
15.8.5在IA-32e方式中任务优先级622
15.9伪中断623
15.10消息通知的中断623
15.10.1消息地址寄存器格式624
15.10.2消息数据寄存器格式625
第16章 多处理器管理626
16.1锁定的原子操作627
16.1.1保证的原子操作627
16.1.2总线锁定628
16.1.3处理自修改代码和交叉修改代码629
16.1.4在处理器内部缓存中的LOCK操作的影响630
16.2内存顺序630
16.2.1在Pentium和Intel 486处理器中的内存顺序631
16.2.2在P6和更近代处理器族中时的内存顺序631
16.2.3对于串操作的超出顺序存储632
16.2.4强或弱内存顺序模型633
16.3传播页表和页目录项修改至多处理器634
16.4串行化指令634
16.5多处理器初始化635
16.5.1 BSP和AP处理器636
16.5.2 MP初始化协议要求和对Intel Xeon处理器的限制636
16.5.3对于Intel Xeon处理器的初始化协议算法636
16.5.4 MP初始化举例637
16.5.5在MP系统中标识逻辑处理器640
16.6超线程和多核技术640
16.7测试硬件多线程支持和拓扑641
16.7.1初始化支持超线程技术的处理器641
16.7.2初始化多核处理器641
16.7.3在一支持硬件多线程的Intel 64或IA-32处理器上执行多线程642
16.7.4在支持硬件多线程的IA-32处理器上处理中断642
16.8 Intel超线程技术体系结构642
16.8.1逻辑处理器状态643
16.8.2 APIC功能643
16.8.3内存范围寄存器644
16.8.4页属性表644
16.8.5机器检查属性644
16.8.6调试寄存器和扩展644
16.8.7性能监视计数器644
16.8.8 IA32_ MISC_ ENABLE MSR644
16.8.9内存顺序645
16.8.10串行化指令645
16.8.11微码更新资源645
16.8.12自修改码645
16.8.13实现特定的HT技术设施645
16.9多核体系结构647
16.9.1逻辑处理器支持647
16.9.2内存类型范围寄存器647
16.9.3性能监视计数器647
16.9.4 IA32_ MISC_ ENABLE MSR647
16.9. 5微码更新资源648
16.10对于硬件多线程功能资源的编程考虑648
16.10.1共享的资源的层次映射648
16.10.2在MP系统中标识逻辑处理器649
16.10.3对于APIC ID的三级映射算法650
16.10.4在一MP系统中标识拓扑关系652
16.11空闲和阻断条件的管理656
16.11.1 HLT指令656
16.11.2 PAUSE指令656
16.11.3检测对MONITOR/MWAIT指令的支持656
16.11.4 MONITOR/MWAIT指令657
16.11.5 MONITOR/MWAIT地址范围确定658
16.11.6要求的操作系统支持658
第17章 处理器标识及特性663
17.1 CPUID(处理器标识)指令663
17.1.1指令格式663
17.1.2指令描述663
17.1.3测试CPUID指令663
17.1.4 CPUID功能0668
17.1.5 CPUID功能1.669
17.1.6 CPUID功能2.674
17.1.7 CPUID功能4.677
17.1.8 CPUID功能5.677
17.1.9 CPUID功能6.677
17.1.10 CPUID功能10.677
17.2 CPUID指令的使用678
17.2.1返回商标信息的方法678
第18章 处理器管理和初始化681
18.1初始化概要681
18.1.1复位后的处理器状态682
18.1.2处理器内置自测试684
18.1.3模型和步进信息684
18.1.4执行的第一条指令684
18.2 x87 FPU初始化685
18.2.1配置x87 FPU环境685
18.2.2设置处理器为x87 FPU软件仿真686
18.3启用缓存686
18.4模型特定的寄存器686
18.5存储类型范围寄存器687
18.6初始化SSE/SSE2/SSE3/SSSE3扩展687
18.7为实地址方式操作的软件初始化687
18.7.1实地址方式IDT688
18.7.2 NMI中断处理688
18.8软件初始化保护方式操作688
18.8.1保护方式系统数据结构689
18.8.2初始化保护方式异常和中断689
18.8.3初始化分页689
18.8.4初始化多任务689
18.8.5初始化IA-32e方式690
18.9方式切换692
18.9.1切换至保护方式692
18.9.2切换回实地址方式692
18.10初始化和方式切换举例693
18.10.1汇编程序使用695
18.10.2 STARTUP·ASM清单695
18.10.3 MAIN·ASM源代码703
18.10.4支持文件704
18.11微码更新设施706
18.11.1微码更新706
18.11.2任选的扩展签名表708
18.11.3处理器标识709
18.11.4平台标识710
18.11.5微码更新检验和711
18.11.6微码更新装入器711
18.11.7更新签名和验证713
18.11.8 Pentium 4、Inte1 Xeon和P6族处理器微码更新规范714
参考文献726
热门推荐
- 2037829.html
- 2511585.html
- 2105752.html
- 3091568.html
- 1796979.html
- 2961108.html
- 976515.html
- 79906.html
- 405944.html
- 629449.html
- http://www.ickdjs.cc/book_1967947.html
- http://www.ickdjs.cc/book_88660.html
- http://www.ickdjs.cc/book_3525846.html
- http://www.ickdjs.cc/book_1069928.html
- http://www.ickdjs.cc/book_1647203.html
- http://www.ickdjs.cc/book_3683500.html
- http://www.ickdjs.cc/book_3579654.html
- http://www.ickdjs.cc/book_1957536.html
- http://www.ickdjs.cc/book_1649515.html
- http://www.ickdjs.cc/book_3837030.html