There’salwaysmoretolearn,andtherearealwaysbetterwaystodowhatyou’vedonebefore.—DONANLDE.KNUTH微型计算机原理与接口技术第二讲佘青山86919130qsshe@hdu.edu.cn2第二章8086系统结构80x86系列微处理器是8086的延伸8086CPU结构8086CPU引脚及功能8086CPU存储器组织8086CPU系统配置8086CPU时序内容提要380x86系列微处理器是8086的延伸一、8086功能的扩展(1)从16位扩展到32位8086是16位微处理器1985年,Intel推出的第一个32位微处理--80386目前,计算机正从32位向64位转移,主流仍是32位机(2)从实模式到保护模式单任务操作系统--多任务操作系统保护操作系统核心软件,实现操作系统核心程序与应用程序的严格隔离保护模式支持多任务机制,任务之间完全隔离(3)片内存储管理单元(MMU)支持页、页表等虚拟存储管理方法480x86系列微处理器是8086的延伸二、8086性能的扩展(1)利用流水线技术提高操作的并行性利用超大规模集成电路的工艺与制造计数提高芯片的主频,即减少一个时钟周期的时间缩短执行指令的时钟周期数,如采用流水线技术8086利用流水线把取指令和执行指令重叠,减少等待取指令的时间举例:012345678取指译码计算EA取数执行存结果取指译码计算EA取数执行存结果取指译码计算EA取数执行存结果第一条指令第二条指令第三条指令可见,采用流水线技术执行3条指令共需8个时间单位;如果完全串行执行,则需3×6=18个时间单位。580x86系列微处理器是8086的延伸二、8086性能的扩展(2)引入高速缓存(Cache)主存与CPU之间的速度不匹配在微处理器芯片中实现了缓存,以减少CPU从主存中取指令和数据的时间CPUCache主存辅存存放CPU经常使用的程序和数据680x86系列微处理器是8086的延伸三、微处理器的结构方面所受的限制(1)引脚数限制:(出于工艺和成本考虑)8086:40脚80386:132脚80486:168脚(2)芯片面积限制:增大芯片面积,成本增加,反而使产品合格率下降,因此不能盲目增大芯片面积。(3)器件速度限制:目前微处理器采用MOS(Metal-Oxide-Semiconductor,半导体金属氧化物)工艺,可以提高集成度,降低功耗,但速度较慢、负载能力较弱。780x86系列微处理器是8086的延伸四、16位微处理器基本结构具有的特点(1)引脚功能复用:提高引脚利用率。例如,数据双向传输可由“读/写”信号来控制,决定数据处于输入还是输出状态。(2)单总线、累加器结构:由于芯片面积限制,使微处理器内部寄存器的数目,数据通路位数受到限制。因此绝大多数微处理器内部采用单总线、累加器为基础的结构。(3)可控三态电路:采用可控三态电路与总线相连,当微处理器外部总线同时连接多个部件,可避免总线冲突相信号串扰,不工作器件所连的三态电路处于高阻状态。(4)总线分时复用:地址总线和数据总线使用了相同的引脚,节省引脚但增加操作时间。880x86系列微处理器是8086的延伸五、Intel8086CPU(1)16位微处理器,双列直插式外型,40个引脚;(2)时钟频率有3种:8086型微处理器为5MHz,8086-2型为8MHz,8086-1型为10MHz;(3)8086CPU有16根数据线和20根地址线,直接寻址空间为220,即220=210KB=1MB;(4)8088CPU内部结构与8086基本相同(内部字长为16位,但对外数据总线只有8条,称为准16位微处理器)。9§2-18086CPU结构一、8086CPU内部结构串行执行顺序并行执行顺序取指执行取指执行取指执行……取指取指取指取指取指取指……等待执行执行执行执行得到数据时间10§2-18086CPU结构AHALBHBLCHCLDHDLPSWALUIPDISIBPSPESSSDSCS控制逻辑段寄存器指针及变址寄存器数据寄存器一般CPU结构一、8086CPU的内部结构11§2-18086CPU结构地址总线20位AHALBHBLCHCLDHDLSPBPDISI通用寄存器AXBXCXDXALU数据总线(16位)运算寄存器ALU标志寄存器EU控制器指令执行单元EU∑CSDSSSESIP内部寄存器123456数据总线8086:16位总线控制电路指令队列8086队列总线(8位)指令指针段寄存器外部总线8086:16位总线接口单元BIU一、8086CPU的内部结构12§2-18086CPU结构一、8086CPU的内部结构(1)8086CPU内部结构组成:总线接口部件BIU(BusInterfaceUnit)指令执行部件EU(ExecutionUnit)(2)8086CPU流水线工作过程:取指取指取指取指取指取指……等待执行执行执行执行得到数据BIUEU时间与BIU有关的指令执行13§2-18086CPU结构1、总线接口部件BIU(BusInterfaceUnit)(1)功能:形成访问存储器的物理地址、取指令、指令排队、读/写操作数、总线控制(2)组成:16位段地址寄存器16位指令指针寄存器20位物理地址加法器6字节指令队列总线控制逻辑(3)工作过程:形成访问存储器的20位物理地址发出读信号(/RD)取出指令送入指令队列14§2-18086CPU结构2、指令执行部件EU(ExecutionUnit)(1)功能:指令译码执行指令(2)组成:算术逻辑运算单元ALU标志寄存器flags寄存器组EU控制器(3)工作过程:从BIU的指令队列取得指令指令译码执行指令15§2-18086CPU结构8086CPU的工作过程16§2-18086CPU结构二、寄存器结构(1)寄存器的作用存放运算过程中所需要的操作数地址、操作数、中间结果(2)寄存器的特点存取速度比存储器快得多(3)寄存器的分类通用寄存器组指针和变址寄存器段寄存器指令指针及标志位寄存器17§2-18086CPU结构二、寄存器结构14个16位寄存器:4个通用寄存器+4个专用寄存器+4个段寄存器+2个控制寄存器CSDSSSESAXBXCXDXSSBPSIDIAHBHCHDHALBLCLDL累加器基址寄存器计数寄存器数据寄存器代码段寄存器数据段寄存器堆栈段寄存器附加段寄存器堆栈指针寄存器基址指针寄存器源变址寄存器目的变址寄存器IPPSW指令指针寄存器标志寄存器指令指针和标志寄存器指针和变址寄存器段寄存器通用寄存器1587015015015018§2-18086CPU结构1、通用寄存器组AX,BX,CX,DX(16位)AH,AL,BH,BL,CH,CL,DH,DL(8位)习惯:AX:一般用来存放参加运算的数据和结果。在乘/除法运算、I/O操作、BCD数运算中有不可替代的作用。BX:数据寄存器;作为DS段中数据的指针。CX:数据寄存器;在串操作和循环指令中作计数用。DX:数据寄存器;I/O指针;字乘/除法。19§2-18086CPU结构寄存器的特殊用途和隐含性质在指令中没有明显的标出,而这些寄存器参加操作,称之为“隐含寻址”。具体的:在某类指令中,某些通用寄存器有指定的特殊用法,编程时需遵循这些规定,将某些特殊数据放在特定的寄存器中,这样才能正确的执行这些指令。采用“隐含”的方式,能有效地缩短指令代码的长度。20§2-18086CPU结构寄存器的特殊用途寄存器名特殊用途隐含性质AX,AL在I/O指令中作数据寄存器在乘法指令中存放被乘数或乘积,在除法指令中存放被除数或商不能隐含隐含AH在LAHF指令中作目标寄存器隐含AL在十进制运算指令中作累加器;在XLAT指令中作累加器隐含BX在间接寻址中作基址寄存器在XLAT指令中作基址寄存器不能隐含隐含CX在串操作指令和LOOP指令中作计数器隐含CL在移位/循环移位指令中作移位次数寄存器不能隐含DX在字乘法/除法指令中存放乘积高位或被除数高位或余数在间接寻址的输入/输出指令中作地址寄存器隐含不能隐含SI在字符串运算指令中作源变址寄存器在间接寻址中作变址寄存器隐含不能隐含DI在字符串运算指令中作目标变址寄存器在间接寻址中作变址寄存器隐含不能隐含BP在间接寻址中作基址寄存器不能隐含SP在堆栈操作中作堆栈指针隐含21§2-18086CPU结构2、指针和变址寄存器SI(SourceIndex)指向数据段寄存器DS中的数据指针、串操作的源指针。DI(DestinationIndex)指向扩展数据段寄存器ES中的目标数据的指针、串操作的目标指针。BP(BasePointer)用于存放内存的逻辑偏移地址,隐含的逻辑段地址在SS寄存器中。SP(StackPointer)用于存放栈顶的逻辑偏移地址,隐含的逻辑段地址在SS寄存器中。22§2-18086CPU结构3、段寄存器总线接口部件BIU设有4个16位段寄存器:CS(CodeSegment)存放程序代码段起始地址的高16位。DS(DataSegment)存放数据段起始地址的高16位。SS(StackSegment)存放堆栈段起始地址的高16位。ES(ExtendedSegment)存放扩展数据段起始地址的高16位。代码段数据段堆栈段数据段CSDSSSES所有段映射至相同的线性地址空间23§2-18086CPU结构3、段寄存器一个存储单元具有两种地址属性:物理地址和逻辑地址。物理地址:CPU访问存储器时,在地址总线上实际送出的地址。8086的范围是00000H~FFFFFH,即有220=1M字节的地址空间。8086的内部寄存器是16位(地址的宽度大于字长)。显然,不能用16位的寄存器来实现1MB单元的寻址。为此,引入了存储器“分段”的概念,即把1MB内存空间分成若干逻辑段。每段最大可达64KB(可由16位寄存器进行寻址)。段的起始地址成为“段基址”,要访问的单元距段基址的距离(字节数)为“偏移量”(Offset)。24§2-18086CPU结构二、寄存器结构3、段寄存器程序设计时,使用的是逻辑地址。由逻辑地址获得物理地址的计算公式:物理地址=段基值×16+偏移量段基值150偏移量150000030Σ物理地址190逻辑地址物理地址25§2-18086CPU结构二、寄存器结构3、段寄存器程序设计时,使用的是逻辑地址。由逻辑地址获得物理地址的计算公式:物理地址=段基值×16+偏移量举例:设(CS)=4232H,(IP)=66H物理地址计算如下42320H66H+)42386H......42320H66H42386H5231FH段地址段终址64K64K(2)1626§2-18086CPU结构二、寄存器结构4、指令指针寄存器IPIP用来控制CPU的指令执行顺序IP始终存有相对于当前指令段起点偏移量的下一条指令,即IP总是指向下一条待执行的指令当IP单独改变时,会发生段内转移当CS和IP同时改变时,会发生段间的程序转移27§2-18086CPU结构二、寄存器结构5、标志寄存器Flags标志寄存器的格式及各位的含义1514131211109876543210OFDFIFTFSFZFAFPFCF状态标志方向标志中断标志单步标志控制标志进位标志奇偶标志半进位标志全零标志符号标志溢出标志28§2-18086CPU结构二、寄存器结构5、标志寄存器Flags状态标志(6个):表示前面的操作执行后,算术逻辑部件处于怎样一种状态。例如,是否产生了进位,是否发生了溢出等等。程序中,可以通过对某个状态标志的测试,决定后面的走向及操作。例如:STATE:INAL,0DAHTESTAL,02H;查AL的D1=1?JZSTATE;是0,转STATE(1)零标志ZF(ZeroFlag):若运算结果为0,则ZF=1;否则ZF=0例1:MOVAL,4SUBAL,4;执行后,ZF为0。例2