2020/1/201邯郸学院信息工程学院计算机科学与技术系张志刚2020/1/202第二章8086系统结构主要掌握内容1、8086CPU的内部结构、管脚、时序;2、8086最大工作模式与最小工作模式下三总线的产生;3、8086CPU存储器管理方法;4、80X86系列CPU的在结构、性能等方面的进展2020/1/20316位微处理器的基本结构特点•引脚功能复用•单总线、累加器结构•可控三态电路•总线分时复用2020/1/2048086微处理器的特点•40引脚的双列直插式•时钟频率有三种•16根数据线和20根地址线•于8位CPU8080向上兼容•可与8087协处理器及8089输入/输出处理器构成多机系统•8088CPU内部结构与8086的区别2020/1/205概述程序计数器PC指令寄存器IR处理器状态字PSW堆栈指示器SP指令译码器IDI/O控制逻辑工作寄存器地址寄存器数据寄存器ALU控制器1.CPU的基本结构与工作机理2020/1/2062020/1/2072.CPU的主要性能指标•数据宽度(字长):CPU的字长是指CPU一次所能处理的二进制数的位数,是表示运算器性能的主要技术指标,一般它等于CPU数据总线的宽度。如:8088CPU,8086/80286CPU,80386/486CPU,PentiumCPU等。•寻址能力(或寻址范围):寻址能力往往是指CPU能直接存取数据的内存地址的范围,这是由CPU的地址总线引脚的数目来决定的。通常用K(千)或M(兆)来表示(1K=1024个地址;1M=1024K;1G=1024M等)。如:8088CPU,8086/80286CPU,80386/486CPU,PentiumCPU等。220=1M,而80286CPU的地址线有24根,则其寻址能力为224=16M,而386/486/586CPU的地址线为32根,故可直接寻址的物理地址达232=4G。•运算速度:CPU的运算速度通常用每秒执行基本指令的条数来表示,常用的单位是MIPS(MillionInstructionPerSecond),即每秒执行的百万条指令数,是CPU执行速度的一种表示方式。对于某一特定的CPU,其MIPS值并非定值,得出的数据会因CPU正在执行的软件的不同而不同。2020/1/2083.CPU的指令体系•CISC(即ComplexInstructionSetComputer:复杂指令集计算机)CISC结构的CPU是指能够识别处理100种以上汇编指令的处理器。CISC理论比RISC理论的历史要悠久,以前对Intel80X86系列中的8088,80286等,都是按CISC理论设计的,由此可见CISC对当今微处理器的发展有相当大的影响。(1)复杂指令(ComplexInstruct1on)(2)复杂的内存参考方式(ComplexMemoryReferenceMethods)(3)微程序结构(MicroProgramming)•RISC(即ReducedInstructionSetComputer:精简指令集计算机)RISC结构的CPU在执行一项任务时,只需对指令集中不到一半的指令分类,找出完成该任务所需的指令,这样便提高了CPU的速度。RISC将机器指令简化,提供有限数量的常用和必须的指令,从而简化了CPU芯片的复杂程度,节省了芯片空间。(1)固定指令长度(2)指令流水线处理(3)装入/存储体系结构•VLISC(VeryLongInstructionSetComputer)将多条指令组织成长达1024K的单条指令,一次进入,同时执行。2020/1/2094.CPU的三总线微处理器是大规模集成电路的CPU,就其外部管脚而言,从8086的40脚到80286的68脚,再到PII的242脚,管脚的逐步增加,也说明了集成度的增大。但无论什么型号的CPU,其外部管脚信号线按功能可分为四类:地址总线、数据总线、控制信号总线、电源线。其中地址总线(AB)、数据总线(DB)、控制总线(CB)统称为CPU三总线。地址总线是从CPU发送出去,用来传递地址信息。地址总线的位数决定了CPU可以直接寻址的内部存储器地址空间的大小,它是单向的。数据总线的位数是微处理器的一个重要指标,数据总线的位数越大,就意味着CPU在单位时间内一次传递的数据就越多,数据处理速度就快。控制总线是用来传递控制信号的,一部分是CPU向外发送给存储器、I/O接口电路的控制信号,如读、写命令信号,中断响应信号、地址锁存信号等;另一部分是外部接口电路给CPU传来的控制信号,如外设准备就绪信号、中断请求信号等。三总线的逻辑关系一般是:CPU在工作过程中,先有地址信号,然后在控制信号的作用下,通过数据总线传递数据,三者是并行的。8088读演示2020/1/20102-18086/8088CPU结构Intel8086是标准的16位微处理器,Intel8088是准16位微处理器。它们在内部结构上都是按16位设计的,但Intel8088在外部引脚上和当时的8位微处理器Intel8080/8085相兼容(8根数据线)。Intel8086双列直插封装,40引脚,单一正5V供电。具有16位的数据总线,20位的地址总线,可以管理1MB的存储器空间和64K的端口地址。2020/1/2011内部暂存器IPESSSDSCS输入/输出控制电路外部总线执行部分控制电路123456∑ALU标志寄存器AHALBHBLCHCLDHDLSPBPSIDI通用寄存器地址加法器指令队列缓冲器执行部件(EU)总线接口部件(BIU)16位20位16位8位一、8086/8088内部结构8086/8088的总线接口部件(BIU)和执行部件(EU)在操作过程中是可以并行进行的.总线接口部件(BIU)完成取指令,读操作数和送结果。即所有需要访问外部总线的操作。执行部件(EU)从BIU的指令队列中取出指令,并且执行指令,不必访问存储器和I/O端口。若需要访问存储器或I/O端口,由EU发出访问需要的地址(偏移地址),在BIU中形成物理地址,然后访问,取得操作数送EU。2020/1/2012EUBIU2020/1/20131.总线接口部件(BIU——BusInterfaceUnit)•4个16位的段地址寄存器–CS——代码段寄存器–DS——数据段寄存器–SS——堆栈段寄存器–ES——扩展段寄存器•16位的指令指针寄存器IP:存放下一条要执行指令的偏移地址。•20位的地址加法器∑–段地址寄存器的内容左移4位+偏移量→20位的实际物理地址–段地址*16+偏移量→20位的实际物理地址•6个字节的指令队列缓冲器–提高CPU的效率•总线控制逻辑电路例:CS的内容是89ABH,IP的内容是0201H,则生成的地址是89AB0H+0201H=89CB1HBIU负责执行所有的8086外部总线周期,提供系统总线控制信号。2020/1/2014总线接口部件的工作过程BIU:由先进先出的队列寄存器组成。当指令队列中有2个获2个以上的字节空余时,BIU自动取指令到指令队列。当EU没有访问存储器或I/O端口的请求,同时指令队列也不空时,BIU处于空闲状态。取指令:由CS和IP通过地址加法器形成20位的物理地址送总线,总线控制逻辑发出存储器读信号(RD),从存储器读出指令送指令队列。EU:从队列中取出指令,译码后产生控制信号,实现指令的功能。若需要访问存储器,则由所选的段寄存器和偏移寄存器形成物理地址。IP:由BIU自动修改,执行下一条指令在代码段(CS)中的偏移地址。转移指令则通过指令修改IP,同时由BIU清除指令队列中的预取内容。2020/1/2015执行部件(EU——ExecutionUnit)•16位的算术逻辑单元ALUo完成算术/逻辑运算和指令要求寻址的单元地址的位移量•4个16位的通用寄存器oAX——累加器oBX——基址寄存器oCX——计数器oDX——数据寄存器•4个16位的专用寄存器oSP——堆栈指针寄存器oBP——基址指针寄存器oSI——源变址寄存器oDI——目的变址寄存器•EU控制单元o即CPU中的控制器,主要由译码和时序电路组成,其功能是对指令操作码译码,产生各种微操作信号。•16位的标志寄存器o其中包括6位状态标志、3位控制标志,还有7位没有使用。AHBHCHDHDLALBLCLSPBPSIDIAX,BX,CX,DX,它们又可以分成8个8位的寄存器使用:AH,AL,BH,BL,CH,CL,DH,DL2020/1/2016执行部件的工作过程ALU:完成各种算术逻辑运算,并影响PSW的内容EU控制器:从指令队列取指令,译码,根据指令要求发出控制信号2020/1/2017EU和BIU空闲状态当指令队列已满,而且执行部件对总线接口部件又没有总线访问请求时,总线接口部件(BIU)便进入空闲状态。在执行转移指令、调用指令和返回指令时,下一条要执行的指令就不是在程序中紧接着排列的那条指令了,而总线接口部件往指令队列装入指令时,总是按顺序进行的,这样,指令队列中已经装入的指令就没有用了。遇到这种情况指令队列中的原有内容被自动清除,总线接口部件会接着往指令队列中装入由转移指令、调用指令或返回指令指定的指令,这个时候,EU则处于空闲状态。8086内部两个功能部件有存在空闲状态的可能,CPU的利用率没有达到最佳。如何使CPU内部的功能部件处于“零等待”状态,是CPU设计追寻的目标之一。(流水线)2020/1/2018二、寄存器结构15870AXAHAL累加器BXBHBL基址寄存器CXCHCL计数寄存器DXDHDL数据寄存器通用寄存器组150SP堆栈指针寄存器BP基址指针寄存器SI源变址寄存器DI目的变址寄存器指针和变址寄存器150CS代码段寄存器DS数据段寄存器SS堆栈段寄存器ES附加段寄存器段寄存器150IP指令指针寄存器PSW标志寄存器指令指针和标志寄存器图2-28086CPU寄存器组通用寄存器组的特殊用途指针和变址寄存器的用途段寄存器的用途例:代码段寄存器CS存放当前代码段基地址,IP指针寄存器存放了下一条要执行的指令的段内偏移地址,其中CS=2000H,IP=003AH。通过组合形成20位存储器的地址为:2003AH为什么要分段?段的划分?段基址?偏移地址?20物理地址的形成?指令指针寄存器(IP):指向下一条要执行的指令在现行代码段中的偏移地址。2020/1/2019标志寄存器(PSW)1511109876543210OFDFIFTFSFZFAFPFCFCF(CarryFlag):进位标志位。本次运算最高位有进位或借位时,CF=1。相关指令有STC(使CF=1),CLC(使CF=0),CMC(使CF取反)PF(ParityFlag):奇偶效验标志位。本次运算结果低8位中有偶数歌“1”时,PF=1;有奇数歌“1”时,PF=0。AF(AuxiliaryCarryFlag):辅助进位标志位。本次运算结果低4位向高4位有进位或借位时,AF=1。AF一般用在BCD码运算中,判断是否需要十进制调整。ZF(ZeroFlag):全零标志位。本次运算结果为0时,ZF=1,否则ZF=0。SF(SignFlag):符号标志位。本次运算结果的最高位为1时,SF=1,否则SF=0。反映了本次运算结果是正还是负。OF(OverflowFlag):溢出标志位。本次运算结果产生溢出时,OF=1,否则OF=0。对带符号数,字节运算结果的范围为-128~+127,字运算结果的范围为-32768~+32767。判断溢出的方法有两种。例:将5394H与-777FH两数相加,并说明其标志位状态:0101001110010100+10001000100000011101110000010101运算结果为:-23EBH,各标志位的值为:CF=0、PF=0、AF=0、ZF=0、SF=1、OF=0。TF(TrapFlag):单步标志位。调试程序时,可设单步工作方式,TF=1时,CPU每执行完一条指令,就自动产生一次内部中断,使用户能逐条跟踪程序进行调试。IF(InterruptFlag):中