1、1,第2章 Intel IA-32/Intel 64处理器结构与原理,2,衡量CPU的性能指标可以是单位时间CPU完成的指令数,其计算公式如下: CPU性能 = CPU的主频IPC也可用CPU完成应用程序所需的总时间。其计算公式如下: IPC:每时钟执行的指令条数。 CPI:每指令平均时钟数思考:根据公式要提高CPU性能,可采用什么办法?,2.1 提高处理器的性能,2.1.1 问题的分析,3,如何提高主频:要提高主频减少每个流水级的执行周期减小每个流水级的任务量将任务再分解增加流水线深度,IA-32的流水线级数,思考:流水线级数变多后,有没有副作用?,4,思考:从图上可以得到哪些结论?,5,如
2、果各指令之间不存在相关性,那么它们在流水线中是可以并行执行的,这种指令间潜在的重叠就是指令级并行(Thread-Level Parallelism, ILP)。,1指令间的相关性,(1)结构相关所谓结构相关(也称为名相关)是指不同指令同时存取相同的寄存器或存储器,但这些指令间不存在数据流。,在冯诺依曼存储结构中,数据和程序放在同一存储器,如果此时一条指令要读或写数据,而刚好取指单元要取指令,就出现结构相关,2.1.2 提高处理器指令级并行性的技术,6,1指令间的相关性,(2)数据相关某条指令的操作数依赖前一条或前几条指令的运行结果,这就是所谓的数据相关。, 写后读相关(RAW,Read Aft
3、er Write) A=B+C D=3*A / 在数据A上写后读, 读后写相关(WAR,Write After Read) A=B+C B=D*2 / 在数据B上读后写, 写后写相关(WAW,Write After Write) A=B+C A=D*2 / 在数据A上写后写,思考:C语言里的 i+=2 包含了哪些数据相关?,7,1指令间的相关性,(3)控制相关控制相关可以看作是对指令指针寄存器的RAW相关问题。 取指阶段需要读指令指针寄存器,而分支语句会在执行阶段计算出新的转移地址写入指令指针寄存器,于是当分支条件满足的时候,就出现下条指令读指令指针寄存器(取指阶段)早于分支语句写该寄存器(执
4、行阶段)的情况。,8,2超标量技术,所谓超标量是指处理器中含有多条流水线,每个时钟能够译码、发射、执行多条指令。显然,超标量技术提高了处理器的IPC,也进而减少了理想流水线CPI。在超标量流水线中,并行执行的流水线条数称为超标度。从Pentium到Ivy Bridge处理器的超标度为24。,IF,ID,OF,EX,WB,IF,ID,OF,EX,WB,WB,EX,OF,ID,IF,I1,I2,I3,I4,I5,I6,I7,I8,I9,IF,ID,OF,EX,WB,IF,ID,OF,EX,WB,IF,ID,OF,EX,WB,IF,ID,OF,EX,WB,IF,ID,OF,EX,WB,IF,ID,O
5、F,EX,WB,思考:超标度为几?,9,3. 动态执行技术的使用(P6架构开始),A=B+C,P=A*2,Q=D-E,非乱序执行演示,乱序执行演示,R=F-7,A=B+C,P=A*2,Q=D-E,R=F-7,乱序可解决什么问题?,执行方向,执行方向,乱序执行技术为了提高指令流的执行效率,乱序执行核心分析多条指令的数据相关性和资源可用性,然后在不损失数据完整性的前提下,采用能充分发挥多个处理部件并行工作的指令顺序来执行。这个指令顺序可能和原始程序的不一样。,10,3. 动态执行技术的使用(P6架构开始),分支预测预测分支未来的方向,为处理器预先译码分支之后的指令提供依据 静态分支预测预测无条件转
6、移指令发生分支预测向前分支的条件转移指令不发生转移预测向后分支的条件转移指令发生转移动态分支预测使用分支目标缓冲器BTB记录分支转移历史信息BTB中缓存了先前执行过的分支语句的指令地址BIA,分支跳转的目的地址BTA,以及分支历史记录取指时,同时检索L1 Cache和BTB如最终分支结果与预测相符,则避免了流水线的停顿如最终分支结果与预测不符合,那么将刷新BTB的有关记录,并进行分支误预测的恢复操作,11,3. 动态执行技术的使用(P6架构开始),推测执行在分支预测基础上,推测分支路径,并按推测执行。一旦证实分支预测正确,已提前建立的“预测结果”立即变成“最终结果”并及时修改机器的状态。寄存器
7、重命名如果两条指令只是寄存器名字相重,实际数据并不相关,可以对其中一条指令的换寄存器来解决。寄存器重命名技术是在指令被译码成微代码时将IA指令使用的IA通用寄存器映射成微代码使用的内部寄存器。用这种办法可以解决寄存器结构相关的问题。,12,4. 分离Cache与指令配对,数据-代码分离式L1 Cache,符合MESI协议。数据-代码分离式L1Cache能解决流水线的什么问题?指令配对配对指令是可以同时进不同流水线的指令配对的指令必须是简单指令两条指令之间不可存在“写后读”或“写后写”这样的寄存器相关性一条指令不能同时既包含位移量又包含立即数带前缀(Jcc指令的OF除外)的指令只能出现在U流水中
8、,因为Pentium的V流水只执行简单指令浮点运算指令不能和任何指令配对(FCXH除外),下面两条指令是否可配对?,MOV AX, 200MOV CX, AX,MOV AX, 200MOV AX, 412,写后读,写后写,13,2.1.3 提高处理器数据级并行性的技术,1多媒体SIMD指令扩展技术,使用 SIMD指令,for (int i=0;i=MAX;i+) ci=ai+bi;,不使用 SIMD指令,14,16x bytes,8x words,4x dwords,2x qwords,1x dqword,2x doubles,MMX*,SSE*SSE2SSE3,SSE4*,* MMX使用的是
9、64位的 x87 浮点寄存器作为MMX寄存器;,4x floats,2x dqword,4x doubles,8x floats,8x bytes,4x words,2x dwords,1x qwords,AVX*,*SSE4使用了新的128位的XMM寄存器,但是不使用MMX寄存器,*SSE, SSE2和SSE3使用了新的128位的XMM 寄存器;也可用MMX寄存器,*AVX使用了新的256位的YMM 寄存器;也可用XMM寄存器,但是不使用MMX寄存器,15,2融合图形处理单元GPU,GPU在浮点运算、并行计算等计算方面可以提供数十倍乃至于上百倍于CPU的性能图形核心具有12个新设计的EU(执
10、行单元),它们包含更大的寄存器文件,用以提高并行性和复杂着色的执行效率EU改进了并行分支技术来提高面对深度嵌套条件下的并行化的效率图形核心无论在媒体处理还是3D方面因为提供了大量的固定功能的硬件支持,使得在相同的热能耗下,性能得以显著的提升。,16,2.1.4 提高处理器线程级并行性的技术,允许物理上单个的处理器采用共享执行资源的方法同时执行两个或更多的分离代码流(线程)HT技术由单处理器上的2个或者多个逻辑处理器组成,每个逻辑处理器都有自己的IA-32结构状态(AS)每个逻辑处理器都有自己的IA-32通用寄存器、段寄存器、控制寄存器、调试寄存器等逻辑处理器共享的资源包括执行引擎和系统总线接口
11、,1. 超线程(Hyper-Threading, HT)技术,SMT,17,通过在一个物理封装中包含多个分离的完整执行核来提供硬件多线程能力每个完整的执行核不仅有自己的AS,还拥有自己的执行引擎,总线接口与L2 Cache 。结构上有支持HT技术的和不支持HT技术的多核结构核之间有交叉开关、总线链接、环链路多种连接方式众核(Many-Core)技术大于32核的CPU采用片上网络(NoC)互联较多Intel采用双向环链接其第一个众核,61核的MIC,2. 多核(Multi-Core)技术,CMP,18,Core 2 Duo处理器,Intel的多核结构,19,2.1.5 Intel 64 结构 (
12、EM64T技术),完全兼容IA-32指令集Intel 64架构包括兼容模式和64位模式兼容模式允许大多数IA-32程序无需修改地运行在64位操作系统下64位模式下具有以下特性:64位线性地址空间最高支持40位物理地址空间增加8个新的通用寄存器增加8个新的流SIMD扩展(SSE, SSE2和SSE3)64位宽的通用寄存器和指令指针寄存器,CISC的缺点,各种指令的使用率相差悬殊:一个典型程序的运算过程所使用 的80指令只占一个处理器指令系统的20复杂的指令系统必然带来结构的复杂性这不但增加了设计的时间与成本还容易造成设计失误在CISC中,许多复杂指令需要极 复杂的操作,这类指令多数是某种高级语言
13、的直接翻版,因而通用性差由于采用二级的微码执行方式,它也降低那些被频繁调用的简单指令系统的运行速度提出了精简指令的设想即指令系统应当只包含那些使用频率很高的少量指令,并提供一些必要的指令以支持操作系统和高 级语言 MUL ADDRA, ADDRB,RISC的特点,RISC的着眼点不简单地放在简化指令系统上,而是通过简化指令使计算机的结构更合理,从而提高运算速度。RISC的设计要点为: 选取使用频度最高的一些简单指令和很有用但并不复杂的指令; 指令的长度固定,指令格式种类少,寻址方式种类少; 只有取数存数指令访问存储器,其余指令操作都在寄存器之间进行; 采用指令流水线操作,实现指令并行操作; 大
14、部分指令在一个时钟周期内完成; CPU中通用寄存器的数目相当多; 以硬布线控制为主,不用或少用微程序控制,以加快指令执行速度。,RISC,使用精简指令所编写出来的代码会更长,所以执行任务所需的内存也就更大。因此,对于复杂的程序来说,由于要考虑到各种可能的情况,最终程序代码可能非常大 MOV A, ADDRA; MOV B, ADDRB; MUL A, B; STR ADDRA, A,2.2 Pentium处理器,80x86系列微处理器兼容有64位数据总线、 32位地址总线,寻址空间4GB。RISC型超标量结构 - 两个5级整数指令流水线,一个8级浮点流水线。具有超级流水线技术的高性能浮点运算器
15、。数据-代码分离式高速缓存,符合MESI协议。增强的错误检测和报告功能。利用片上分支目标缓冲器提高分支指令预测准确性。常用的指令不采用微程序设计,而改用硬件实现。支持64位外部数据总线突发传输方式通过APIC总线支持多处理器系统Pentium MMX(与浮点运算共用寄存器),2.2.1 Pentium处理器的特性,=指令预取=首次译码=二次译码=指令执行=写回R,2.2.2 Pentium处理器的内部结构与工作原理,整数处理部件浮点处理部件分离型cahce指令预取指令配对,下面是连续传送100个字节的循环程序段,MOV SI,0200H ;源数据区偏移地址给SI MOV DI,0500H ;目
16、的数据区偏移地址给DI MOV CX,64H ;待传送字节数为100,赋给CXABC:MOV AL,SI ;从源区取出一个字节 MOV DI,AL ;存入目的数据区 INC SI ;源地址指针加1 INC DI ;目的地址指针加1 DEC CX ;CX=CX-1 JNZ ABC ;若CX0,转ABC,指令配对规则,配对的指令必须是简单指令两条指令之间不可存在“写后读”或“写后写”这样的寄存器相关性一条指令不能同时既包含位移量又包含立即数带前缀(JCC指令的0F除外)的指令只能出现在U流水中浮点运算指令不能和任何指令配对(FCXH除外),下面两条指令是否可配对?,MOV AX, 200MOV C
17、X, AX,MOV AX, 200MOV AX, 412,写后读,写后写,Pentium III处理器内部结构及工作原理,Pentium 4处理器内部结构及工作原理,30,2.3.1 Core微结构,2.3 Core微结构的处理器,4 个14级流水线兼容32位的64位设计,31,2.3.2 Core 2处理器内部结构示意图,32,宽位动态执行(Wide Dynamic Execution) 着眼于提高每时钟周期处理的指令数,改善执行时间和能源效率,2.3.3 酷睿2处理器新技术,3个译码器3条流水线同时完整的取、发射、执行3条指令,4个译码器4条流水线同时完整的取、发射、执行4条指令,P6架构
18、,Core架构,33,宽位动态执行宏融合(macrofusion)技术能够在译码期间将常见的指令对组合到一个单独的微代码中(Micro-op),for (int i=0; i100000; i+) ,Instruction Queue,add ecx, 1,dec0,movmem1, ecx,movmem1, ecx,moveax, mem1,add ecx, 1,cmpeax, mem2,dec1,dec2,dec3,jgelabel,moveax, mem1,cmpeax, mem2,jgelabel,dec0,34,宽位动态执行宏融合(macrofusion)技术能够在译码期间将常见的指
19、令对组合到一个单独的微代码中(Micro-op),for (unsigned int i=0; i100000; i+) ,Instruction Queue,add ecx, 1,dec0,movmem1, ecx,movmem1, ecx,moveax, mem1,add ecx, 1,cmpjaeeax, mem2, label,dec1,dec2,dec3,moveax, mem1,cmpeax, mem2,jaelabel,35,宽位动态执行微代码融合(Micro-op fusion)技术能在微代码执行前将译码自同一个x86指令的几个常见微代码对融合成一个微代码,std mem1 ,
20、edx,sta mem1,st mem1 , edx,u-ops of a Store “mov mem1 ,edx”,微代码融合有效地“加宽”了流水线,36,智能功效管理(Intelligent Power Capability) 超细粒度功耗控制能够只对处于工作状态的部件提供电源,而关闭非工作部件的电源供应,从而有效降低功耗。分离总线技术能够使总线宽度动态适应数据宽度的需要,对无效的信息位使其进入低电压状态,从而进一步降低功耗。 功效管理平台技术通过调整散热风扇运作模式,从外部降低处理器温度。,CPU,L1Cache,L2Cache,L3Cache,Memory,37,Intel 智能内存
21、访问(Intel Smart Memory Access),目标WHEN 确信数据能在最早的时候被取出并准备好WHERE 确信要使用的数据靠CPU最近,38,Intel 智能内存访问(Intel Smart Memory Access) 内存消歧技术利用装载(load)数据指令和存储(store)数据指令之间的乱序执行来提高推测执行部件的效率,其原则是尽量将load指令提到它前面不冲突的store指令之前执行。(解决WHEN的问题),Memory,Data Y,Data Z,Data W,Data X,没有内存消歧技术时Load4只能等待前面所有Store结束,下面来看有内存消歧技术的情况,先
22、乱序,这样做究竟有什么好处?,39,Intel 智能内存访问(Intel Smart Memory Access)高级预取技术确保被使用的数据已经位于最靠近能获得最小内存延迟的地方。(解决WHERE问题)用独立于流水线的预测器预测将来要用的数据,提前取到Cache中,L1D是3 clk的延迟和1 clk的通过时间; L2是14和2 clkCache失效延迟L1 失效后去读 L2 10 cyclesL2 失效, 存取存储器 300 cycles (server/FBD)L2 失效, 存取存储器 165 cycles (Desk/DDR2)Cache 带宽Cache带宽 8.5 bytes/cyc
23、le存储带宽桌面系统 6 GB/sec/socket (linux)服务器 3.5 GB/sec/socket,40,Intel高级智能Cache (Intel Advanced Smart Cache) 带来了新的双核结构采用了共享L2 Cache的双核结构 可以在两个核心间动态调整L2 Cache的分配,AS,AS,执行引擎,执行引擎,Local APIC,Local APIC,L2 Cache,L2 Cache,总线接口,总线接口,前端总线,Cache Line,Cache Line,Nehalem(第一代酷睿),44,2.4 SandyBridge微结构的处理器(第二代),2.4.1
24、SandyBridge微结构,46,2.4.2 SandyBridge的环状互连结构,SandyBridge采用片上系统设计,提供了一个高带宽双向环状总线来连接IA核与非核中不同的子系统一个系统代理 、图形单元(GT)、最后一级Cache环形总线由四条独立的环组成数据环(DT)、请求环(QT)、响应环(RSP)、侦听环(SNP),SandyBridge的Graphics部分主要包含了命令流处理器(Command Streamers)、媒体处理器(MediaProcessing)、多格式媒体解码器(Multi-Foumat Codec)、执行单元(EU)、统一执行单元阵列(Array of Un
25、ifiedExecution Units)、媒体取样器(Media Sampler)、纹理采样器(Texture Sampler)以及指令缓冲等。,IvyBridge(第三代),3D晶体管结构22nm,Haswell(第四代),22nm工艺新架构,性能更强,超频潜力更大,而且集成了完整的电压调节器;新的指令集,Haswell添加了新的AVX指令集,改善AES-NI的性能;核芯显卡增强,支持DX11.1、OpenCL1.2,优化3D性能,支持HDMI、DP、DVI、VGA接口标准;接口改变,使用LGA1150接口,不兼容旧平台。Haswell最大的卖点就是在大幅度提升性能的同时,也实现了功耗的进
26、一步降低。,49,2.5 IA-32处理器基本执行环境,实地址模式 开机进入的模式- 与8086/8088兼容,但可以处理32位数据- 1MB内存空间,分段管理,所有程序全在0 (核心)级- MS-DOS运行在此模式下,PC机开机首先进入的也 是该模式- 对内存和程序甚至操作系统没有任何保护能力,保护模式最主要的工作模式 - 支持多任务操作,并保护每个任务的数据和程序- 存储器采用虚拟地址空间、线性地址空间和物理地址空间三种方式来描述,具有存储保护功能- 虚拟地址空间64TB(246)- 4级管理,可以使用分页或分段技术管理内存- Windows、Linux操作系统均运行在该模式下,2.5.1
27、 IA-32处理器的工作模式,50,虚拟8086模式(V86模式)怀旧的感觉,系统管理模式“休闲”时光 - 为操作系统和正在运行的应用程序提供透明的电源管理和系统安全平台功能- 进入本模式系统将转到一个独立的地址空间运行,并保存当前程序或任务的基本环境,- 在保护模式下可以同时模拟多个8086处理器的工作,IA-32e模式(支持Intel 64 Architecture的处理器才有),51,工作模式的转换,52,1. IA-32的基本数据类型 IA32的基本数据类型包括Byte, Word, Doubleword, Quadword和Double Quadword,1) 整型数据类型 包括无符
28、号数和有符号数,其中有符号数以2的补码形式表示,最高位为符号位,1表示负数,2.5.2 IA-32处理器在实地址模式下的存储管理,53,2) 浮点数据类型 最高位为符号位,接下来是有效数和阶码,有效数给定了数的有效位数,决定数的精度;阶码决定数据范围。,54,3) 指针数据类型 指针用于定位存储单元的地址,包括近指针和远指针16位模式下近指针为段内16位有效地址远指针包括16位段首地址和16位段内有效地址32位模式下近指针为段内32位有效地址远指针包括16位段选择器和32位段内有效地址64位模式下近指针为64位有效地址操作数是32位时,远指针包括16位段选择器和16位段内有效地址操作数是32位
29、时,远指针包括16位段选择器和32位段内有效地址操作数是64位时,远指针包括16位段选择器和64位段内有效地址,55,4) 位域(field)数据类型 是一个连续的二进制位序列,可以从存储器任何一个字节的任何一位开始。可包含32位数据。,5) 串数据类型 是一个连续的位、字节、字或双字序列,位串可以从存储器任何一个字节的任何一位开始,并可包含232-1位,字节、字或双字串可包含232字节。,6) BCD和压缩BCD数据类型 用4位无符号二进制数表示十进制的09。压缩BCD每个字节包含二位十进制数,非压缩BCD数每字节的低4位表示一位十进制数,高4位为0。,56,2.存储单元的地址和内容以字节为
30、单位编址,即一个字节数据占一个存储单元,数据采用小端存放方式以字、双字、四字和双四字为单位存储数据时,分别占相邻2个、4个、8个和16个连续字节单元,其最低字节的地址为该数据地址。地址一般采用边界对齐,如果边界不对齐,IA-32会采用2倍于边界对齐时的总线周期来完成读写操作,有些双四字的操作甚至会引起一般性保护异常。,57,存储单元的地址和内容,0000H0001H0002H0003H0004H0005H0006H0007H,0000H地址上,字节数据是12H字数据是3412H双字数据是78563412H四字数据是FFDEBC9A78563412H,58,3. 实地址模式存储器寻址 在此模式下
31、,IA-32可以理解成是一个可处理32位数据的高速的8086。a. 存储器地址的分段,解决16位寄存器表示20位地址的问题 段是最大长度为64KB的连续的内存储器块,物理地址 每个存储单元的20位实际地址,有唯一性,访问主存时必须用物理地址 逻辑地址 每个存储单元的地址用两部分表示: 段基址(段首址的高16位) 偏移量 (段内某单元相对段首址的地址差,也称为有效地址EA),59,0000,6417H0100H 6417H10H + 0100H = 64170H + 0100H = 64270H几个不同的逻辑段地址在物理地址上是可重叠的,物理地址=段基址16+偏移量 书写形式:段基址:偏移量,1
32、6位段地址,16位段内偏移,:,16位段地址,16位段内偏移,(左移四位),+,20位物理地址,=,60,2.5.3 IA-32处理器中的寄存器,基本寄存器,系统级寄存器,调试与测试寄存器,浮点寄存器,通用寄存器,指令指针寄存器,标志寄存器,段寄存器,控制寄存器,系统地址寄存器,数据寄存器,地址指针寄存器,变址寄存器,61,AH ALBH BLCH CLDH DLSPBPDISI,累加器基址变址计数数据堆栈指针基址指针目的变址源变址,32位,1.通用寄存器,16位,AXBXCXDXSPBPDISI,16位名称,AX、BX、CX、DX、SP、BP、DI、SI分别是EAX、EBX、ECX、EDX
33、、ESP、EBP、EDI、ESI的低16位AL、BL 、CL、DL分别是AX、BX、CX、DX的低八位AH、BH 、CH、DH分别是AX、BX、CX、DX的高八位,EAXEBXECXEDXESPEBPEDIESI,32位名称,高16位扩展,62,1.1 通用数据寄存器,EAX 累加器存放操作数和结果,乘除运算、I/O指令中特指EBX 基址寄存器 查表转换和间接寻址时存放基址ECX 计数寄存器 串操作和循环中做计数 EDX 数据寄存器 乘除运算、I/O指令中特指,可以32位、16位或8位形式访问,例如, EAX可使用16位的AX,也可以使用8位的AH、AL,63,1.2 通用地址寄存器,ESP
34、堆栈指针寄存器,存放栈顶地址EBP 基址指针寄存器,存放栈段基地址ESI 源变址寄存器EDI 目的变址寄存器,存放地址的偏移量,也可存放操作数, 但只能以32位或16位为单位访问如:ESI可以使用16位的SI,64,1.3 64位模式下的通用寄存器,65,2.段寄存器,CS 代码段寄存器 DS 数据段寄存器 SS 堆栈段寄存器ES 附加段寄存器FS、GS 附加段寄存器,段寄存器均为16位的寄存器用于存储器寻址,存放段的开始地址在64位模式下,FS, GS无效,CS, DS, ES, SS均指向基地址为0的“段”。,一个完整的程序,2.1段寄存器介绍,66,2.2段寄存器与段 IA-32的6个1
35、6位的段寄存器,专门存放段基地址: 代码段存放当前程序的指令代码 数据段存放程序涉及的源数据或结果 堆栈段是以“先入后出”为原则的数据区 附加段是辅助数据区,存放串或其他数据,用户可以同时使用6个段,段间可以邻接、部分重叠、 重叠或不相邻,但注意,段的实体(被实际使用的段空间)是不能重叠的。,67,段寄存器和相应存放偏移地址的寄存器之间的默认组合,68,2.3 关于堆栈与堆栈段,堆栈是内存中以字为单元的“先入后出”、最大空间为64KB的存储区域,采用自底向上生成堆栈,栈底地址大于栈顶地址栈区最高地址-1的单元为栈底,最后进栈数据所对应的地址单元为栈顶SS指向栈的起始单元(地址最小的单元)SP寄
36、存器动态跟踪栈顶位置,初始化时SP的值为堆栈的长度,即指向栈底+2单元将数据送入堆栈叫压栈,从栈中取出数据叫弹出,均以字(16位或32位)为单位,69,70,3.指令指针寄存器,EIP 指令指针寄存器:即程序计数器,指向下一条指令在代码段中的偏移量,16位的IP,高16位扩展,32位指令指针寄存器EIP,64位模式下,扩展高32位成为64位RIP,32位的EIP,高32位扩展,64位指令指针寄存器RIP,71,EFLAGS 标志寄存器( 程序状态字寄存器PSW ):记录系统运行中的各种状态 和信息。由各种标志位构成,反映运算后的结果特征,将影响某些指令(如条件转移指令)的执行。,4.标志寄存器
37、,72,8086/8088程序状态寄存器(标志寄存器) b15 b8 b7 b0 OF DF IF TF SF ZF AF PF CF符号 名称 值为“1”的条件 CF 进位标志 加/减法时产生进位/借位 OF 溢出标志 运算结果超出有符号整数能表示的范围 ZF 零标志 运算结果为0时 SF 符号标志 运算结果的最高位为“1”时 AF 辅助进位标志 运算时半字节(b3)产生进位/借位 PF 奇偶标志 操作结果低8位为“1”的位数为偶数时 DF 方向标志 串操作中地址指针向低地址方向移动 IF 中断允许标志 允许CPU响应可屏蔽中断请求时 TF 跟踪标志 CPU处于单步执行的工作方式,73,思考
38、题:以下的几个4位十六进制数相加,会使得8088状态寄存器的以下几位为什么值?,110101,110010,001011,000010,74,注意:进位标志CF是表示无符号数是否超出范围,如CF=1,运算结果仍然正确;溢出标志表示的是有符号数运算结果是否超出范围,超出范围则运算结果已经不正确;处理器对两个操作数进行运算的时候是按照无符号数求得结果,并相应设置CF,根据是否超出有符号数的范围设置OF;对于程序员,如果做无符号运算,应该关心CF,做有符号运算应该关心OF。,75,符号 名称 值为“1”的条件 IOPL IO特权位 其值表示该任务使用的I/O操作的特权级 00为最高的核心级,11是最
39、低的用户级 NT 嵌套标志 当前任务嵌套在另一个任务中时 RF 恢复标志 DBUG调试时忽略下一条指令遇到的断点 VM 虚拟8086模式 从保护模式进入到虚拟8086模式 AC 对齐检查 数据访问允许对齐检查 VIF 虚拟中断位 允许V86扩展或允许保护模式虚拟中断 VIP 虚拟中断未决位 有未决的虚拟中断 ID 标识位 对它的读写表明处理器支持CPUID,这部分同8088,OF,31 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0,DF,IF,TF,SF,ZF,AF,CF,PF,IOPL,NT,RF,VM,AC,VIF,V
40、IP,ID,保 留,IA-32 标志寄存器EFLAG,0,1,0,0,76,当机器复位的时候CS=FFFFH,EIP, DS, ES, SS, FS, GS以及EFLAGS寄存器被清零。因为复位之后CS:EIP= FFFF:00000000,因此机器复位或开机后,都会自动从这个地址开始取指令,这里应该是BIOS的第一条指令。,控制寄存器,31 12 11 4 3 0,PWT,PCD,页目录基地址寄存器,CR3,页故障线性地址寄存器,CR2,31 0,保 留,CR1,WP,31 30 29 18 17 16 5 4 3 2 1 0,NE,ET,PE,MP,NW,CD,PG,CR0,31 0,EM
41、,TS,AM,PGE,PCE,31 10 9 8 7 6 5 4 3 2 1 0,MCE,PAE,PSE,DE,TSD,VME,PVI,保留,缺省为全0,CR4,*,*,* OSFXSR* OSXMMEXCPT,写保护 定位屏蔽 允许分页禁止Cache 不写贯穿,保护模式允许 浮点协处理器监控 模拟浮点协处理器任务切换 处理器扩展类型 数值异常,WP,31 30 29 18 17 16 5 4 3 2 1 0,NE,ET,PE,MP,NW,CD,PG,CR0,EM,TS,AM,CR0是在以前286MSW(机器状态字)基础上扩展来的,可在核心级中用MOV EAX, CR0/MOV CR0, EAX指令来读取和写入。,禁止Cache页面写贯穿,31 12 11 4 3 0,