图书介绍

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

64位微处理器系统编程和应用编程
  • 周明德编著 著
  • 出版社: 北京:清华大学出版社
  • ISBN:9787302207757
  • 出版时间:2009
  • 标注页数:726页
  • 文件大小:280MB
  • 文件页数:753页
  • 主题词:微处理器-程序设计

PDF下载


点此进入-本书在线PDF格式电子书下载【推荐-云解压-方便快捷】直接下载PDF格式图书。移动端-PC端通用
种子下载[BT下载速度快]温馨提示:(请使用BT下载软件FDM进行下载)软件下载地址页直链下载[便捷但速度慢]  [在线试读本书]   [在线获取解压码]

下载说明

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

热门推荐