第2章微处理器内部结构2.1微处理器功能结构2.2IA-32微处理器寄存器本章内容2.1微处理器功能结构2.1.1微处理器基本结构2.1.28086的功能结构2.1.3IA-32的功能结构2.2IA-32微处理器寄存器2.2.1整数寄存器2.2.2浮点及多媒体寄存器2.3微处理器存储器组织2.3.1IA-32工作方式2.3.2实方式的逻辑段2.3.3保护方式的段页管理2.1微处理器功能结构“功能”结构观察角度程序员和使用者目的掌握一个CPU的工作性能和使用方法注意差别≠(CPU的物理结构和实际布局)2.1.1微处理器基本结构(8位为例)算术逻辑单元ALU累加器标志寄存器可编程寄存器Programmable通用寄存器专用寄存器指令处理单元CPU控制器指令执行过程读取指令↓指令译码↓执行指令2.1.28086/8088的功能结构寄存器阵列ALU及标志寄存器控制电路指令译码器段寄存器及指令指针地址加法器总线控制电路指令流队列执行部件EU数据及操作数16指令码多路复用地址/数据总线8086:16位8088:8位总线接口部件BIU8086/8088CPU的结构框图执行指令取指令、读操作数、写结果指令流数据流8088/8086的内部结构EU控制器ALU暂存器标志寄存器8位队列总线总线控制逻辑ALU数据总线16位(内部总线)地址加法器20位地址总线8(8088)/16(8086)位数据总线执行部件EU总线接口部件BIU123456指令队列通用寄存器AXAHALBXBHBLCXCHCLDXDHDLSPBPDISICSDSSSES80888086IP暂存器8086/8088三总线CPU执行指令的过程过程1.取指(fetch)2.译码(decoding)3.计算有效地址(EA:EffectiveAddress)4.取操作数5.执行指令6.存储运算结果取指令,PC值加1停机?译码并执行结束YN关键寄存器地址寄存器AR(AddressRegister)数据寄存器DR(DataRegister)指令寄存器IR(InstructionRegister)指令译码器ID(InstructionDecoder)指令预取手段:指令队列(Queue)作用BIU顺序预取后续指令指令队列实现流水线(InstructionPipeline)操作取指(属BIU)并行于指令译码和执行(属EU)预取条件指令队列中有1个/2个(8088/8086)以上的字节空间,且EU未申请读写存储器总线周期:CPU访问一次存储器或I/O接口所需的时间例如:若要求机器把两个数7和10相加预先,把一条条指令写入存储器中在执行时,机器把这些指令一条条地取出来,加以翻译和执行指令机器码MOVAL,7B07ADDAL,10040AHLTF4例:程序指令的执行过程第一条指令的取指过程0000000000000000101100000000011100000100000010101111010010110000OI2ALUI1ALBLPLAIDIR10110000DBAB+1……EABCARD读FDR0001020304GPC取第一条指令的操作示意图+100001011000010110000PC的内容(00H)送AR(AddressRegister)PC+1PC(01H)00H经AB送至存储器,经地址译码器选中00H单元。CPU给出读命令。(00H)=B0H读至DB(DataBus)10110000B0H送至DR(DataRegister)DR把B0H送IR经ID译码发出对应操作取指令第二字节的过程如下图所示。0000000110110000000001110000010000001010111101000100000111OI2ALUI1AL00000111BLPLAIDIR00000111DBAB+1……EABCARD读FDRGPC1000000001取立即数的操作示意图+10100000111PC的内容01H送ARPC+1PC(02H)01H经AB送至存储器,经地址译码选中01H单元。CPU发出读命令。(01H)=07H读至DB0000011107H送DRAL0000011107H由DR通过内部DB送至AL。2.1.3IA-32的功能结构英特尔32位结构:IA-32(IntelArchitecture-32)80X86系列微处理器标准IA-32微处理器:80386,80486,Pentium系列80386的功能结构6个功能部件可以并行工作,进行流水线处理EU(ExecutionUnit)BIU(BusInterfaceUnit)AU(AddressUnit)IU(InstructionUnit)Pentium的功能结构2.2.1IA-32的整数寄存器1.通用寄存器2.指令指针4.标志寄存器结合2.3微处理器存储器组织讲解3.段寄存器5.其他寄存器8088/8086的全部寄存器控制寄存器8位寄存器IPFLAGCSDSSSES代码段寄存器数据段寄存器堆栈段寄存器附加段寄存器AHALBHBLCHCLDHDLAXBXCXDXSPBPSIDI累加器基地址寄存器计数器数据寄存器堆栈指针寄存器基地址指针寄存器源变址寄存器目的变址寄存器(PC)指令指针寄存器(PSW)状态标志寄存器段寄存器16位寄存器通用寄存器寄存器组(RegisterSet)1.IA-32的通用寄存器存取16位寄存器,高16位不受影响存取8位寄存器,16/32位寄存器其他位不受影响通用寄存器的命名EAX:累加器(Accumulator)EBX:基址寄存器(Base)ECX:计数器(Counter)EDX:数据寄存器(Data)ESI:源变址寄存器(SourceIndex)EDI:目的变址寄存器(DestinationIndex)EBP:基址指针(BasePointer)ESP:堆栈指针(StackPointer)2.指令指针EIP(专用寄存器)程序计数器PC作用:指向将要执行的指令在主存的位置位置:当前代码段内的偏移地址长度在IA-32的32位环境中EIP,32位在80x86的16位工作方式IP,16位EIP的高16位为04.标志寄存器作用反映指令执行结果或控制指令执行形式分类状态标志位:记录程序运行结果的状态控制标志位:控制处理器执行指令的方式表示方法用一个或多个二进制位表示一种标志(Flag)位数8086:16位IA-32微处理器:32位32位FLAG主要标志位的含义符号标志单步中断中断允许方向标志溢出标志D15D0OFDFIFTFSFZFAFPFCF半进借位标志1-低4位向高4位有进、借位0-低4位向高4位无进、借位零标志1-结果为00-结果不为0进借位标志1-有进、借位0-无进、借位奇偶标志运算结果低8位,若含偶数个1,则为1,否则为0运算对状态标志位的影响符号标志SF(SignFlag)最高位(D15或D7)为1则SF=1,否则SF=0进位标志CF(CarryFlag)最高位(D15或D7)进位或借位则CF=1,否则CF=0。溢出标志OF(OverflowFlag)当n位带符号数的运算结果超出(-2n-1~2n-1-1)时溢出,OF=1,否则OF=0如何判断溢出?有符号数和无符号数判别方法的差别?无符号数超范围判断有符号数超范围判断有符号数运算的溢出判别和大小判别有符号数运算溢出判别Cs最高位进位,Cp次高位进位Cs⊕Cp=1,有溢出产生(1)a0,b0,a+b0;(2)a0,b0,a+b0(3)a0,b0,a-b0;(4)a0,b0,a-b0Cs⊕Cp=0,无溢出产生有符号数a和b大小判别a-bOF⊕SF=0,a≥bOF⊕SF=1,ab零标志ZF(ZeroFlag)结果为0则ZF=1,否则ZF=0奇偶标志PF(ParityFlag)结果低8位中‘1’的个数为偶数则PF=1,否则,PF=0辅助进位标志AF(AuxiliaryFlag)8位或16位数运算时低4位向高4位(D3向D4)有进位或借位则AF=1,否则AF=010001101001101100011001000011001+0110011010101001运算结果最高位为1∴SF=1;例1:这是有符号数运算还是无符号数运算?第三位向第四位有进位∴AF=1;次高位向最高位有进位,最高位向前没有进位,∴OF=10=1最高位没有进位∴CF=0;低8位中1的个数为偶数个∴PF=1;运算结果本身≠0∴ZF=0;例2:执行2345H+3219H,分析对PSW的影响10001101000101000011001000011001+0111101010101010标志:运算结果最高位为0∴SF=0;运算结果本身≠0∴ZF=0低8位中1的个数为奇数个∴PF=0;最高位没有进位∴CF=0;第3位向第4位无进位∴AF=0;次高位向最高位没有进位,最高位向前没有进位∴OF=0。控制标志位的作用方向标志DF(DirectionFlag)串操作时1,地址自动减0,地址自动增中断允许标志IF(InterruptEnableFlag)是否允许响应外部可屏蔽中断IF=1,允许IF=0,屏蔽追踪标志TF(TraceFlag)TF=1,进入单步方式(程序调试方式)控制标志一旦设置后,便对后边的操作产生控制作用2.2.2——浮点数据寄存器科学计算等工程领域需要使用实数IA-32微处理器支持三种浮点数据类型32位单精度64位双精度80位扩展精度浮点数浮点处理单元2.2.2——多媒体寄存器Pentium4支持多媒体指令:整数MMX,浮点数SSEMMX含有8个64位的MMX寄存器(MM0~MM7)SSE新增8个128位的SIMD浮点数据寄存器(XMM0~XMM7)多媒体指令支持紧缩(Packed)数据格式128位紧缩数据2个64位双精度浮点数或4个32位单精度浮点数16个8位、8个16位、4个32位或2个64位整数一条多媒体指令能够对两个紧缩数据进行运算关键技术:单指令多数据SIMD多媒体指令常被称为SIMD指令小结微处理器的功能结构微处理器的主要寄存器通用寄存器指令指针标志寄存器