微机原理微机原理第二章微处理器B.ppt
第二章 微处理器与系统结构,2.1 微处理器的基本结构及主要性能指标2.2 8086/8088微处理器2.3 8086系统的组成2.4 存储器组织2.5 8086总线时序,2.1 微处理器的基本结构,微机的运算器和控制器集成在一个芯片,称中央处理器CPU或微处理器MPUCPU按字长:4位、8位、16、32和64位按结构分类:单片微处理器和位片微处理器微处理器内部基本结构一般由算术逻辑单元、寄存器阵列、控制单元、总线和总线缓冲器四个部分组成。有些还集成有存储器和I/O接口,算术逻辑单元ALU,有加、与、或、非、移位硬件操作功能可完成加、减、乘、除、求补,逻辑与、或、非、异或,移位,BCD调整,定点/浮点运算输出结果和结果状态,控制与定时部件控制器,控制器的一般组成,控制器任务:逐渐取出指令、分析指令、执行指令。指令:操作码+地址码/操作数由指令部件、时序部件和微操作控制电路组成指令部件程序计数器PC:给出待执行指令的首地址指令寄存器IR:存放当前要执行的指令码,包括操作码和地址码(操作数)指令译码器ID:分析操作码并经译码后产生相应操作的控制信号,控制器的一般组成,时序部件:产生微机各部件所需定时信号时钟系统脉冲源:用外接晶振产生一定周期和宽度的脉冲信号。时钟周期或T状态是CPU操作的最小时间单位时钟启/停逻辑:按指令的控制要求,准确地开/关时钟脉冲时钟脉冲分配器:产生微机各部分所需要的能按一定顺序逐个出现的节拍脉冲信号,以控制和协调CPU各微操作有节奏地动作,指令周期、总线周期与时钟周期的关系,机器周期(总线周期,M周期):一般由35个时钟周期组成,期间可完成一个基本操作,如存储器读/写、I/O读/写指令周期:一般为15个机器周期,包括一条指令的取出和执行所需的时间,控制器的一般组成,微操作控制部件:由指令译码器、节拍发生器、节拍脉冲及外部状态信号等组合而产生的控制微机各部件的部件组合逻辑控制:用组合逻辑实现的微操作控制。修改不方便,快微程序控制(存储逻辑控制):将每条指令的微程序存放在只读存储器中,并由CPU逐条取出执行以实现微操作控制。便于检查修改,慢可编程逻辑阵列控制:通过程序设计而执行特定逻辑功能的组合逻辑结构。兼有两种控制的优点,总线与总线缓冲器,总线是微机部件间传送信息的导线集合内总线连接累加器、ALU、R与FLAG等。有单总线、双总线和多总线结构片外总线可分为片间总线、系统总线和外总线。前两种用来连接 CPU、M、I/O等。通常又分为AB、DB和CB总线缓冲器通过三态逻辑电路将挂在总线上的某些部件在电气连接上与总线脱开,寄存器阵列,存放待处理数据的寄存器:累加器和通用寄存器存放地址的寄存器:PC、SP、指针和变址寄存器存放控制和状态信息的寄存器:IR和FLAG起数据缓冲作用的寄存器:数据和地址总线缓冲器,微处理器主要性能指标,主频:即微处理器时钟频率。如Pentium4 2GHz同系列的微处理器,主频越高,速度越快。但主频相同的微处理器,速度不一定都相同,因结构有差异外频:微处理器外部总线工作频率。如Pentium4 2GHz的外频为400MHz地址线宽度:决定访存空间。如36位地址线访问236=64GB存储单元数据线宽度:决定微处理器与外部存储器、输入/输出部件之间一次交换的二进制数据位数。如8、16、32、64位。,微处理器主要性能指标,高速度缓存(CACHE):L1/L2Write-through缓存,只对读有效write-back缓存,对读写都有效内置协处理器:加快数值运算超标量结构:一个时钟周期内执行一条以上的指令。低标量结构:一条指令至少需要一个以上的时钟周期工作电压:微处理器正常工作所需要的电压,早期为5V,后来有3.3V,2.8V,1.5V等。制造工艺:晶体管之间的最小线距,0.35m,0.25m,0.18m,0.13m等,微处理器标识,微处理器类型(Intel),4004:4位8085/8088:8位8086、80286:16位80386、80486、80586:32位Pentium、Pentium PRO、Pentium II、Pentium III、Pentium 4:32/64位,2.2 8086/8088微处理器,INTEL78年推出(79年推出8088)4万多个晶体管(8088为2.9万个晶体管)时钟频率4.77MHZ数据线16位(8088的数据线8位)地址线20位40脚DIP封装81年推出Personal Computer(个人计算机、微机),8086CPU功能结构图,EU控制器,标志寄存器,8位队列总线,总线控制逻辑,内部总线16位,20位地址总线,16位数据总线,执行部件EU,总线接口部件BIU,一、8086执行部件EU,算术逻辑单元ALU(Arithmetic and Logic Unit)进行所有的算术和逻辑运算计算寻址单元的十六位偏移地址EA(Effect Address)EU控制器接收指令队列中的指令,进行指令译码、分析,形成各种控制信号,实现EU各个部件完成规定动作的控制标志寄存器F通用寄存器,标志寄存器F,唯一能按位操作的寄存器只定义了其中9位,另外7位未定义(不用)6位状态标志:OF、SF、ZF、PF、CF、AF3位控制标志:DF、IF、TF,状态标志,反映指令对数据作用之后,结果的状态(不是结果本身)。这些状态将控制后续指令的执行OF(Overflow Flag):溢出标志(指补码),F.11OF=1:在运算过程中,如操作数超过了机器表示的范围称为溢出。OF=0:在运算过程中,如操作数未超过了机器能表示的范围称为不溢出。求解方法:最高位进位次高位进位字节允许范围:-128+127字允许范围:-32768+32767,状态标志,CF(Carry Flag):进位/借位标志,F.0CF=1:最高位需要向前产生进位/借位。CF=0:最高位不会向前产生进位/借位。AF(Auxiliary Carry Flag):辅助进位标志,F.4AF=1:数据的第3位(半个字节)需要向前产生进位/借位。AF=0:数据的第3位(半个字节)不会向前产生进位/借位。,状态标志,SF(Sign Flag):符号标志,F.7SF=1:运算结果的最高位为1,如果为带符号数,则为负数。SF=0:运算结果的最高位为0,如果为带符号数,则为正数。带符号数的最高位为符号位;而无符号数的 最高位为数值位。ZF(Zero Flag):全零标志,F.6ZF=1:运算结果为全0。不包括进位的情况ZF=0:运算结果不为0。,状态标志,PF(Parity Flag):奇偶标志PF=1:结果的低8位中有偶数个1。PF=0:结果的低8位中有奇数个1。有些运算操作将影响全部状态标志,如加法、减法运算有些操作影响部分状态标志,如移位操作有些指令的操作不影响任何状态标志,如数据传送指令,运算结果最高位为1SF=1;,例:2个数相加后,分析各标志位的值,第三位向第四位有进位 AF=1;,次高位向最高位有进位,最高位向前没有进位,OF=10=1,最高位没有进位 CF=0;,低8位中1的个数为偶数个 PF=1;,运算结果本身0 ZF=0;,运算结果最高位为0SF=0;,例:2个数相减后,分析各标志位的值,第三位向第四位没有借位 AF=0;,次高位向最高位没有借位,最高位向前没有借位,OF=00=0,最高位没有借位 CF=0;,低8位中1的个数为奇数个 PF=0;,运算结果本身0 ZF=0;,控制标志,控制标志位的值不由数据运算的结果决定,而由指令直接赋值控制标志决定后续指令的执行情况DF(Direction Flag):方向控制标志位用于串处理指令,控制从前往后、还是从后往前对字符串进行操作处理DF=1,每次串处理操作后使变址寄存器SI和DI的值递减,使串处理从高地址向低地址方向处理。DF=0,每次串处理操作后使变址寄存器SI和DI的值递增,使串处理从低地址向高地址方向处理。,控制标志,IF(Interupt Flag):中断允许/禁止标志位IF=1,允许外部可屏蔽中断。CPU可以响应可屏蔽中断请求。IF=0,关闭中断。CPU禁止响应可屏蔽中断请求。IF的状态对不可屏蔽中断和内部软中断没有影响。TF(Trap Flag):跟踪(陷阱)标志位TF=1,每执行一条指令后,自动产生一次内部中断,使CPU处于单步执行指令工作方式,便于进行程序调试,用户能检查程序。TF=0,CPU正常工作,不产生陷阱。,控制标志与状态标志的区别,控制标志的值:由系统程序或用户程序根据需要用指令设置。状态信息:由中央处理器执行运算指令,并根据运算结果而自动设置。X86 CPU也提供了直接设置状态标志之值的指令,调试状态时,标志位之值的符号表示,AX,BX,CX,DX,8086的通用寄存器,目的变址指针(Destination Index),DI,源变址指针(Source Index),SI,基址指针(Base Pointer),BP,堆栈指针(Stack Pointer),SP,数据寄存器(Data),计数寄存器(Count),基址寄存器(Base),累加器(Accumulator),通用寄存器,一般,通用寄存器可以用于任何指令的任意操作,可以相互替换16位的数据寄存器可分解为2个8的使用,是同一个物理介质。如果存储了一个16位的数据,不能同时存储另外的1个或2个8位数地址寄存器不能分解为8位使用有些操作规定只能使用某个寄存器,即寄存器的特殊用法,通用寄存器的特殊用法(默认用法),8086CPU功能结构图,8位队列总线,总线控制逻辑,内部总线16位,20位地址总线,16位数据总线,总线接口部件BIU,二、8086总线接口部件BIU(Bus Interface Unit),BIU负责与 M、I/O 端口传送数据、地址。访问存储器时,需要生成20位的物理地址;要不断从内存中取指令并送到指令队列;CPU执行指令时,要配合执行部件从指定的内存单元或者外设端口中取数据,并将数据传送给执行部件;或把执行部件的操作结果传送给指定的M或I/O口,指令队列缓冲器,8088为4字节,8086为6字节。为FIFO(先进先出)结构指令队列至少保持有一条指令,且只要有一条指令,EU就开始执行;指令队列只要有空,BIU自动执行取指操作,直到填满为止;若EU要进行M/IO存取数据,BIU在执行完现行取指操作周期后进行。当执行转移指令时,EU要求BIU从新的地址中重新取指。队列中原有指令被清除。新取得的第一条指令直接送EU执行,随后取得的指令填入队列,BIU的段寄存器,4个16位段寄存器CS、DS、SS、ES用来识别当前可寻址的四个段,每个段的功能各不相同CS:Code Segment Register代码段寄存器,指示当前执行程序所在存储器的区域DS:Data Segment Register数据段寄存器,指示当前程序所用之数据的存储器区域。SS:Stack Segment Register堆栈段寄存器,指示当前程序所用之堆栈位于的存储器区域ES:Extra Segment Register附加段寄存器,指示当前程序所用之数据位于的另外存储器区域,在字符串操作中常用到,指令指针,IPInstruction Pointer指令指针寄存器用来存储代码段中的偏移地址;程序运行过程中IP始终指向下一次要取出的指令偏移地址通常不能被直接访问,也不能直接赋值,指令中不会出现IP。总线控制逻辑处理器与外界总线联系的转接电路。包括三组总线:20 位地址总线,16/8位双向数据总线,一组控制总线,地址生成器,CS左移4位,三、EU与BIU的协同工作,在一条指令的执行过程中可以取出下一条(或多条)指令,指令 在指令队列中排队;在一条指令执行完成后,就可以立即执行下一条指令,减少CPU为取指令而等待的时间,提高CPU的利用率和整个运行速度。,8086/8088的寄存器结构,数据寄存器,地址指针及变址寄存器,控制寄存器组,段寄存器组,AX AH AL 累加器BX BH BL 基址寄存器CX CH CL 计数寄存器DX DH DL 数据寄存器,通用寄存器组,SP 堆栈指针 BP 基址指针 SI 源变址指针 DI 目的变址指针,IP 指令指针 FLAG 标志寄存器,CS 代码段寄存器 DS 数据段寄存器 SS 堆栈段寄存器 ES 附加段寄存器,15 8 7 0,2.2.2 8086/8088引脚信号,AD0AD15地址/数据复用引脚(双向、三态)A16/S3A19/S6地址/状态复用引脚(输出、三态)/S7总线高位允许/状态(输出,三态)读信号(输出,低电平有效,三态)测试信号(输入、低电平有效)READY 准备就绪(输入、高电平有效),一、通用信号,状态信号指示当前使用段,一、8086通用引脚信号,INTR可屏蔽中断请求信号(输入、高有效)NMI非屏蔽中断请求(输入,上升沿触发)RESET复位信号(输入,高电平有效)CLK时钟输入端MN/最小/最大模式控制输入端,复位后相关寄存器的初始状态,二、8086最小模式引脚信号,M/存储器/IO控制信号(输出、三态)写信号(输出、低电平有效)中断响应信号(输出、三态、低电平有效)ALE地址锁存允许信号(输出)DT/数据发送/接收控制信号输出(输出、三态)数据允许信号(输出、三态、低电平有效)HOLD总线保持请求信号(输入、高电平有效)HLDA总线保持响应信号(输出、高电平有效),三、8086最大模式引脚信号,总线周期状态信号(输出、三态),总线请求(输入)/总线请求允许信号(输出)(双向、均为低电平有效)总线封锁信号(输出、三态、低电平有效)QS0,QS1指令队列状态信号(输出),四、8088引脚信号,AD0-AD7:数据/低8位地址复用线SS0:状态信号IO/M存储器/地址选择线,五、8088/8086两种工作模式,由第33号引脚(MN/MX)控制最小模式:系统只有8086或8088一个微处理器。所有控制信号直接由CPU提供最大模式:由两个或多个微处理器(主处理器和协处理器)组成中(大)规模系统,CPU并不直接向外界提供全部控制信号,而由S0S1S2通过Intel 8288总线控制器提供不同的工作模式下,CPU有一部分引脚具有不同的功能,2.3 8086系统的组成,总线接口部件8086的两种组态存储器组织与存储器分段堆栈输入/输出结构,2.3.1 地址锁存器8282内部结构,8282,地址锁存器8282引脚信号,直通,保持,高阻,地址锁存功能,STB为高电平期间,输出等于输入为下降沿时,输出锁存,与输出无关OE为有效电平(低电平)时,正常输出;为无效电平(高电平)时,输出高阻ALE为8088/8086地址锁存允许,高电平有效,输出,复用线上出现地址时为高电平锁存器的DI0-DI7与CPU的地址/数据复用线相连,STB与ALE相连。ALE为正脉冲时,输出地址;为低电平时,输出锁存,与数据无关,双向数据收发器8286内部结构,功能表,双向数据收发器8286引脚信号,两方面的功能、三态输出直接驱动总线、具有数据收和发两个方向的传输、隔离控制功能。常用芯片:Intel8286,Intel8287和74LS2458286输入输出同相8287输入输出反相74LS245的功能与8286相同,双向数据总线收发器,最小模式总线连接,8086最小工作模式下控制核心单元的组成,5V,读写控制,读写控制,读写控制,最小模式总线状态及操作,2.3.2 8288总线控制器,多CPU 8086/8088系统由总线控制器8288产生总线控制信号基本功能根据S2、S1、S0信号译出对应的状态命令产生地址锁存信号和双向数据驱动器控制信号使总线控制信号浮空,以允许其他总线控制单元控制总线产生简单或级联中断逻辑所需的控制信号,8288内部结构,8288引脚信号,8086最大工作模式下控制核心单元的组成,读写控制,读写控制,读写控制,最大模式总线状态,S0S1S2总线周期状态信号(输出、三态),经过8288总线控制器译码产生对存储器、I/O端口访问所需的控制信号,8086最小组态和最大组态的比较,1)不同之处 最小模式下系统控制信号直接由8086CPU提供;最大模式下因系统复杂,芯片数量较多,为提高驱动能力和改善总线控制能力,大多数的系统控制信号由总线控制器8288提供,2)相同之处:8086的低位地址线与数据线复用,为保证地址信号维持足够的时间,需使用ALE信号将低位地址线锁存(通过锁存器8282),以形成真正的系统地址总线;,8086最小组态和最大组态的比较,2.4 存储器组织,8086有20条地址线,寻址能力为1MB字节地址:能存储一个字节的存储单元的地址字地址:占用两个相邻字节单元的地址数值较小的单元地址(低字节地址)字符串地址:存放在最低地址单元的第一个字节地址字的存储:低字节在较低地址单元,高字节在较高的相邻地址单元指针的存储:偏移地址在低地址字单元,段地址在较高地址单元,内存单元既可以存放数据,也可以存放地址指针(包括偏移地址和段地址),此时地址也可以看成是数据,2.4.1 信息存放方式示意图,地址 内容 19H 0CH 1AH 1FH 1BH 01H 1CH 23H 1DH 74H 1EH ABH 1FH 41H 20H 42H 21H 43H 22H 44H 23H 45H,存储器组织,存储器的访问,8086奇偶存储器和总线连接,a)存储器地址空间分配,b)存储体与总线的连接,存储单元的访问,2.4.2 存储器分段,分段原因:8086有20根地址线,但其内部可以表示的地址最多只能是16位。为了能寻址1MB空间,8086对存储器进行逻辑分段,每个段最大为64KB,最小为16B(此时最多64K个段)。,存储器分段示例,存储器的逻辑地址和物理地址,8086物理地址PA的形成,其中的16位偏移量也称为有效地址EA(出现在指令中),物理地址PA与逻辑地址LA的对应,0000,存储器段操作,四个段寄存器(CS、DS、SS、ES)指示四个现行段的段地址。段和段之间可以相互分离、连接、部分重叠或完全重叠。,*由指令给的出寻址方式所指定的地址,逻辑地址源,物理地址的生成,取指令时:由代码段寄存器CS,再加上IP的16位偏移量堆栈操作时:由堆栈段寄存器SS,再加上SP所决定的16位偏移量取数据:ES或DS再加寻址的偏移地址程序所需的存储空间不超过64KB(包括程序、堆栈和数据),可使CS、SS、DS、ES相等任务的程序、堆栈以及数据分别不超过64KB,CS,DS,SS可分别置初值,否则用子程序结构,2.4.3 8086系统堆栈操作,堆栈:后进先出的的一段内存栈顶:永远由地址指针(SS:SP)指示栈底:最初始的地址指针(SS:SP)指示处堆栈深度:最大64KB堆栈的作用:调用子程序(或转向中断服务程序)时,把断点及有关的寄存器、标志位及时正确地保存下来,并保证逐次正确返回堆栈操作指令:入栈指令PUSH与出栈指令POP入/出栈操作数:是一个字,而不是一个字节子程序调用指令或中断响应自动完成时,恢复断点地址则由返回指令(RET或IRET)完成,堆栈初始化操作,堆栈段起始地址,栈底及初始栈顶,入栈操作,先把SPlSP,后AH入SP所指单元再次使SP1SP,把AL送至SP所指单元,出栈操作,I/O端口组织,特点:将端口看作存储单元,仅以地址范围的不同来区分两者。优点:对端口的操作和对存储单元的操作完全一样,因此系统简单,并且对端口操作的指令种类较多。缺点:CPU对存储单元和I/O端口的实际寻址空间都小于其最大寻址空间。,存储单元地址,I/O端口地址,特点:系统视端口和存储单元为不同的对象。优点:系统中存储单元和I/O端口的数量可以达到最大。缺点:需要专门的信号来指示系统地址线上出现的是存储单元地址 还是端口地址;专用的端口操作指令一般比较单一。,X86的编址方式,三、输入/输出,8086系统通过I/O端口访问外部设备,既可以接收外部信息,又可以把信息送往外设,并可发出命令控制外部设备8086 CPU具有读端口信息和写端口信息的专用I/O指令,可寻址21664K个字节端口,2.5 8086总线时序,时序图:描述某一操作过程中,芯片/总线上有关引脚信号随时间发生变化的关系图总线周期:执行一个总线操作所需要的时间一个基本的总线周期通常包含 4 个T状态,存储器/IO读时序,存储器/IO写时序,单CPU系统8086读操作总线周期时序,单CPU系统8086写操作总线周期时序,8086最大模式下的读总线周期时序,(DS)=3000H,(BX)=500CH,(3500CH)=9AH,1.IO/M变低,CPU将对内存进行操作2.A19A0上出现地址信号0011 0101 0000 0000 11003.ALE上出现正脉冲信号4.DT/R变低,数据收发器处于接受状态,执行指令MOV AL,BX的时序图T1,5.A19A16上出现状态信号S6S5S44S3=0 IF 1 1,使用DS6.AD7AD0变高阻态7.RD变低,CPU将进行读操作8.DEN 变低,允许数据收发器进行数据传送,执行指令MOV AL,BX的时序图T2,(DS)=3000H,(BX)=500CH,(3500CH)=9AH,9.AD7AD0上出现数据信号1 0 0 1 1 0 1 0,执行指令MOV AL,BX的时序图T3,10.RD变高,CPU从数据线上读数据,数据9AH读到AL中11.DEN变高,数据收发器与总线断开,AD7AD0 变高阻态,执行指令MOV AL,BX的时序图T4,80286微处理器,四个并行部件:执行部件EU,地址部件AU、指令部件IU和总线部件BU地址总线为24位,时钟频率为16MHz总线不复用,提高数据传输能力引入了存储器管理的保护工作模式,将段寄存器的内容当作选择器或者指向描述符表的指针,由描述符表提供224位的物理基地址,80386微处理器,32位结构,数据及地址线为32位,段寄存器仍为16位6个并行功能部件:总线接口部件BU、代码预取部件、指令译码部件、存储器管理部件MMU、指令执行与控制部件地址/数据总线不复用,两个时钟周期内可存取数据64位桶形移位器可加速移位、循环以及乘除法运算,80486微处理器,单芯片集成微处理器、浮点数字协处理器、代码及数据高速缓存8个并行单元:有总线接口单元、指令预取单元、指令译码单元、浮点运算单元、指令执行单元、段管理单元、页管理单元和高速缓存采用RISC技术,单时钟周期可执行一条指令内部集成有浮点运算部件 FPU采用了片内高速缓存技术具有新的内部总线结构,主处理器与Cache的数据总线宽度为128位采用了倍频技术,Pentium微处理器,64位数据线和32位地址线由执行单元(有两个ALU和一个FPU)、指令Cache、数据Cache、指令预取单元、指令译码单元、地址转换与管理单元(形成各指令所需数据的存放地址)、总线单元以及控制器等组成超标量体系结构:能一次同时执行多条指令的体系结构。两个平行独立的执行部件允许一次执行两条指令借助突发读、写周期能达到528MB/s的最高带宽增加了数据Cache回写能力,减少了写的数据量和时间有转移预测部件(BPU)预测下次程序转移的发生浮点指令部件使大多数浮点指令都可在一个时钟周期内执行完常用指令改用硬件实现,不使用微码进行操作,进一步加快速度Pentium Pro处理器具有36位地址线、64位数据线,