四川大学
电子信息
学院
微机
原理
ppt
cpu
总线
第2章 微处理器与总线,微机原理与接口技术,主要内容,8088/8086微处理器结构与工作机制总线的形成与标准主流微处理器介绍64位计算机结构,从应用角度展开典型8位微处理器的基本结构8088/8086 CPU的内部寄存器存储器结构及寻址机制CPU的引线及其功能CPU的工作时序8088/8086 CPU的特性为学习指令系统打好基础,2.1 8088/8086微处理器结构与工作机制,微处理器的基本结构,8088的内部结构,8088/8086的功能结构,8088的内部结构从功能上分成两个单元1.执行单元EU负责指令的译码、执行和数据的运算2.总线接口单元BIU管理8088与系统总线的接口负责CPU对存储器和外设进行访问两个单元在大多数情况下独立操作,也可以并行执行,8088/8086 CPU的内部寄存器,8088/8086的寄存器组有8个通用寄存器4个段寄存器1个标志寄存器1个指令指针寄存器均为16位!,1.通用寄存器,8088有8个通用的16位寄存器(1)数据寄存器:AX BX CX DX(2)变址寄存器:SI DI(3)指针寄存器:BP SP 4个数据寄存器可分成高8位和低8位两个独立的寄存器:AX:AH ALBX:BH BLCX:CH CLDX:DH DL,(1)数据寄存器,AX:累加器(Accumulator)使用频度最高,用于算术、逻辑运算以及与外设传送信息等。BX:基址寄存器(Base address Register)常用于存放存储器地址。CX:计数器(Counter)循环、串操作等指令中的隐含计数器。DX:数据寄存器(Data register)存放双字长数据的高16位,或外设端口地址。,(2)变址寄存器,16位变址寄存器SI和DI 常用于存储器变址寻址方式时提供地址SI:源地址寄存器(Source Index)DI:目的地址寄存器(Destination Index)在串操作类指令中,SI、DI有特殊用法,(3)指针寄存器,指针寄存器用于寻址内存堆栈内的数据SP:堆栈指针寄存器(Stack Pointer),指示堆栈段栈顶的位置(偏移地址)BP:基址指针寄存器(Base Pointer),表示数据在堆栈段中的基地址 SP和BP寄存器与SS段寄存器联合使用以确定堆栈段中的存储单元地址,堆栈(Stack)是主存中一个特殊的区域,采用“先进后出”或“后进先出”存取操作方式。用8088/8086形成的微机系统中,堆栈区域被称为堆栈段。,2.指令指针寄存器,IP(Instruction Pointer):指令指针寄存器,指示主存储器指令的位置 随着指令的执行,IP将自动修改以指示下一条指令所在的存储器位置 IP寄存器是一个专用寄存器 IP寄存器与CS段寄存器联合使用以确定下一条指令的存储单元地址,3.标志寄存器,标志(Flag)用于反映指令执行结果或控制指令执行形式 8088处理器的各种标志形成了一个16位的标志寄存器FLAGS(程序状态字PSW寄存器),程序设计需要利用标志的状态,标志寄存器-分类,状态标志记录程序运行结果的状态信息,许多指令的执行都将相应地设置它们:CF ZF SF PF OF AF控制标志可由程序根据需要用指令设置,用于控制处理器执行指令的方式:DF IF TF,标志寄存器FLAGS,进位标志CF(Carry Flag),当运算结果的最高有效位有进位(加法)或借位(减法)时,进位标志置1,即CF1;否则CF0,3AH+7CHB6H,没有进位:CF=0AAH+7CH(1)26H,有进位:CF=1,零标志ZF(Zero Flag),若运算结果为0,则ZF1;否则ZF0,3AH7CHB6H,结果不是零:ZF084H7CH(1)00H,结果是零:ZF1,符号标志SF(Sign Flag),运算结果最高位为1,则SF1;否则SF0,3AH7CHB6H,最高位D71:SF184H7CH(1)00H,最高位D70:SF0,奇偶标志PF(Parity Flag),当运算结果最低字节中“1”的个数为零或偶数时,PF1;否则PF0,3AH7CHB6H10110110B结果中有5个“1”,是奇数,PF0,溢出标志OF(Overflow Flag),若算术运算的结果有溢出,则OF1;否则 OF0,3AH+7CHB6H,产生溢出:OF1AAH+7CH(1)26H,没有溢出:OF0,辅助进位标志AF(Auxiliary Carry Flag),3AH7CHB6H,D3有进位:AF1,运算时D3位(低半字节)有进位或借位时,AF1;否则AF0,方向标志DF(Direction Flag),用于串操作指令中,控制地址的变化方向:设置DF0,存储器地址自动增加;设置DF1,存储器地址自动减少,CLD指令复位方向标志:DF0STD指令置位方向标志:DF1,中断允许标志IF(Interrupt-enable Flag),控制可屏蔽中断是否可以被处理器响应:设置IF1,则允许中断;设置IF0,则禁止中断,CLI指令复位中断标志:IF0STI指令置位中断标志:IF1,陷阱标志TF(Trap Flag),用于控制处理器进入单步操作方式:设置TF0,处理器正常工作;设置TF1,处理器单步执行指令,单步执行指令处理器在每条指令执行结束时,便产生一个编号为1的内部中断(单步中断)利用单步中断可对程序进行逐条指令的调试单步调试,存储器结构及寻址机制,存储器是计算机存储信息的地方。掌握数据存储格式,以及存储器的分段管理对汇编程序设计非常重要。,数据的存储格式,计算机中信息的单位二进制位Bit:存储一位二进制数:0或1字节Byte:8个二进制位,D7D0字Word:16位,2个字节,D15 D0双字DWord:32位,4个字节,D31 D0最低有效位LSB:数据最低位,D0位最高有效位MSB:数据的最高位,对应字节、字、双字分别指D7、D15、D31位,存储单元及其存储内容,每个存储单元都有一个存储器地址每个存储单元存放一个字节的内容多字节数据在存储器中占连续多个存储单元低字节存入低地址,高字节存入高地址,0002H单元存放有一个数据34H表达为:0002H34H,存储器的分段管理,8088CPU有20条地址线最大可寻址空间为2201MB物理地址范围从00000HFFFFFH8088CPU将1MB空间分成许多逻辑段(Segment)每个段最大限制为64KB段地址的低4位为0000B这样,一个存储单元除具有一个唯一的物理地址外,还具有多个逻辑地址,8088的存储格式图示:,低地址,LSB,MSB,物理地址和逻辑地址,8088CPU存储系统中,对应每个物理存储单元都有一个唯一的20位编号,就是物理地址,从00000H FFFFFH分段后在用户编程时,采用逻辑地址,形式为:段基地址:段内偏移地址,物理地址 14700H逻辑地址 1460H:100H,逻辑地址,段基地址说明逻辑段在主存中的起始位置8088规定段基地址必须是16的整数倍:xxxx0H省略低4位0000B,段地址就可以用16位数据表示,就能用16位段寄存器表达段地址,物理地址和逻辑地址的转换,将逻辑地址中的段地址左移4位,加上偏移地址就得到20位物理地址一个物理地址可以有多个逻辑地址,逻辑地址1460:0100、1380:0F00物理地址14700H 14700H,段寄存器,8088有4个16位段寄存器CS(代码段)指明当前代码段的起始地址SS(堆栈段)指明当前堆栈段的起始地址DS(数据段)指明当前数据段的起始地址ES(附加段)指明当前附加段的起始地址每个段寄存器用来确定一个逻辑段的起始地址,逻辑段的分配图示:,8088 CPU的引线及其功能,8088引线信号,40个引线(总线)信号:数据和地址引线读写控制引线中断请求和响应引线总线请求和响应引线其它引线,1.数据和地址引线,AD7 AD0(Address/Data)地址/数据分时复用引线,双向、三态访问存储器或外设的总线操作周期中,这些引线在第一个时钟周期输出存储器或I/O端口的低8位地址A7 A0其他时间用于传送8位数据D7 D0,A15 A8(Address)中间8位地址引线,输出、三态在访问存储器或外设时,提供全部20位地址中的中间8位地址A15 A8,1.数据和地址引线(续),A19/S6 A16/S3(Address/Status)地址/状态分时复用引线,输出、三态在访问存储器的第一个时钟周期输出高4位地址A19 A16在访问外设的第一个时钟周期全部输出低电平其他时间输出状态信号S6 S3,2.读写控制引线,ALE(Address Latch Enable)地址锁存允许,输出、三态、高电平有效ALE引脚高有效时,表示复用引脚:AD7 AD0和A19/S6 A16/S3正在传送地址信息由于地址信息在这些复用引脚上出现的时间很短暂,所以系统可以利用ALE引脚将地址锁存起来,2.读写控制引线(续1),IO/M(Input and Output/Memory)I/O或存储器访问,输出、三态该引线输出高电平时,表示CPU将访问I/O端口,这时地址总线A15 A0提供16位I/O口地址该引线输出低电平时,表示CPU将访问存储器,这时地址总线A19 A0提供20位存储器地址,2.读写控制引线(续2),WR(Write)写控制,输出、三态、低电平有效有效时,表示CPU正在写出数据给存储器或I/O端口RD(Read)读控制,输出、三态、低电平有效有效时,表示CPU正在从存储器或I/O端口读入数据,2.读写控制引线(续3),IO/M(和8088是反得)、WR和RD是最基本的控制信号组合后,控制4种基本的总线周期,2.读写控制引线(续4),READY存储器或I/O口就绪,输入、高电平有效总线操作周期中,CPU会测试该引线如果测到高有效,CPU直接进入下一步如果测到无效,CPU将插入等待周期等待周期中仍然要监测READY信号,确定是否继续插入等待周期,2.读写控制引线(续5),DEN(Data Enable)数据允许,输出、三态、低电平有效有效时,表示当前数据总线上正在传送数据,可利用他来控制对数据总线的驱动 DT/R(Data Transmit/Receive)数据发送/接收,输出、三态该信号表明当前总线上数据的流向高电平时数据自CPU输出(发送)低电平时数据输入CPU(接收),2.读写控制引线(续6),SS0(System Status 0)最小组态模式下的状态输出信号它与IO/M和DT/R一起,通过编码指示CPU在最小组态下的8种工作状态:1.取指5.中断响应2.存储器读6.I/O读3.存储器写7.I/O写4.过渡状态8.暂停,3.中断请求和响应引线,INTR(Interrupt Request)可屏蔽中断请求,输入、高电平有效有效时,表示请求设备向CPU申请可屏蔽中断该中断请求是否响应受控于IF(中断允许标志)、可以被屏蔽掉,3.中断请求和响应引线(续1),INTA(Interrupt Acknowledge)可屏蔽中断响应,输出、低电平有效有效时,表示来自INTR引脚的中断请求已被CPU响应,CPU进入中断响应周期,3.中断请求和响应引线(续2),NMI(Non-Maskable Interrupt)不可屏蔽中断请求,输入、上升沿有效有效表示外界向CPU申请不可屏蔽中断该中断请求不能被CPU屏蔽,所以优先级别高于INTR(可屏蔽中断),4.总线请求和响应引线,HOLD总线保持(即总线请求),输入、高电平有效有效时,表示总线请求设备向CPU申请占有总线该信号从有效回到无效时,表示总线请求设备对总线的使用已经结束,通知CPU收回对总线的控制权,4.总线请求和响应引线(续1),HLDA(HOLD Acknowledge)总线保持响应(总线响应),输出、高电平有效有效表示CPU已响应总线请求并已将总线释放此时CPU的地址总线、数据总线及具有三态输出能力的控制总线将全面呈现高阻,使总线请求设备可以顺利接管总线待到总线请求信号HOLD无效,总线响应信号HLDA也转为无效,CPU重新获得总线控制权,5.其它引线,RESET复位请求,输入、高电平有效该信号有效,将使CPU回到其初始状态;当他再度返回无效时,CPU将重新开始工作8088复位后CSFFFFH、IP0000H,所以程序入口在物理地址FFFF0H,5.其它引线(续1),CLK(Clock)时钟输入系统通过该引线给CPU提供内部定时信号8088的标准工作时钟为5MHzIBM PC/XT机的8088采用了4.77MHz的时钟,其时钟周期约为210ns,5.其它引线(续2),Vcc电源输入,向CPU提供5V电源GND接地,向CPU提供参考地电平MN/MX(Minimum/Maximum)组态选择,输入接高电平时,8088引脚工作在最小组态;反之,8088工作在最大组态,5.其它引线(续3),TEST测试,输入、低电平有效使用协处理器8087时,通过该引线和WAIT指令,可使8088与8087的操作保持同步QS1、QS0指令队列状态,输出、高电平有效QSl和QS0不同编码状态,反映了CPU内部当前的指令队列状态,以便外部主控设备对8088进行跟踪,5.其它引线(续4),S2、S1、S0总线周期状态标志,输出、三态三条引线状态信号的不同组合,表示CPU总线周期的操作类型最大模式下,8288利用这些信号的不同组合,产生访问存储器或IO的控制信号或中断响应信号,5.其它引线(续5),RQ0/GT0、RQ1/GT1请求/允许控制信号,双向、三态、低有效最大模式下,供外部主控设备(协处理器)用来请求获得总线控制权LOCK封锁信号,输出,三态,低电平有效用来封锁外部主控设备请求如果一条指令加上前缀指令LOCK,则8088执行这条指令时,LOCK引线为低电平,并保持到指令结束,8086 CPU引线,8086引线与8088引线主要区别,8086共有16条地址/数据引线AD15AD0。而8088只有AD7AD0分时复用;8086的第34线为BHE/S7(8088为SS0),它是高8位数据总线的允许和状态信息复用引线;BHE可以看作一根附加的地址总线,用来访问存储器的高字节,而A0用来访问存储器的低字节。所以BHE通常作为接在高8位数据总线上设备的片选信号,而A0作为接在低8位数据总线上设备的片选信号。,表:BHE、A0编码和数据总线传送状态,BHE A0,8086引线与8088引线主要区别(续),8086的第28线为MIO;,存储器输入输出信号,输出、三态。当MIO1时,表示访问存储器;当MIO 0时,表示访问IO端口,它和8088第28线(IOM)意义正好相反。,CPU的工作时序,时序(Timing)是指信号高低电平变化及相互间的时间顺序关系CPU时序决定系统各部件间的同步和定时,CPU的时序与总线操作,总线操作是指CPU通过总线对外的各种操作8088的总线操作主要有:存储器读、I/O读操作存储器写、I/O写操作中断响应操作总线请求及响应操作CPU正在进行内部操作、并不进行实际对外操作的空闲状态Ti描述总线操作的微处理器时序有三级指令周期 总线周期 时钟周期,指令周期、总线周期、时钟周期,指令周期:一条指令经取指、译码、读写操作数到执行完成的过程。若干总线周期组成一个指令周期总线周期:CPU通过总线操作与外部(存储器或I/O端口)进行一次数据交换的过程时钟周期:CLK中两个时钟脉冲上升沿之间持续的时间CPU最小时间单位通常成为一个T状态一般等于时钟频率的倒数,总线周期与时钟周期的关系,8088的基本总线周期需要4个时钟周期4个时钟周期编号为T1、T2、T3和T4总线周期中的时钟周期也被称作“T状态”时钟周期的时间长度就是时钟频率的倒数当需要延长总线周期时插入等待状态TwCPU进行内部操作,没有对外操作时,其引脚就处于空闲状态Ti,8086/8088典型时序分析,任何指令的取指阶段都需要存储器读总线周期,读取的内容是指令代码任何一条以存储单元为源操作数的指令都将引起存储器读总线周期时序任何一条以存储单元为目的操作数的指令都将引起存储器写总线周期时序只有执行IN指令才出现I/O读总线周期时序,执行OUT指令才出现I/O写总线周期时序CPU响应可屏蔽中断时生成中断响应总线周期时序,8086存储器读总线周期时序,存储器读总线周期时序(T1),M/IO信号指出CPU访问内存还是I/O端口输出20位存储器地址A19 A0ALE输出正脉冲,表示复用总线输出地址BHE信号也在T1状态通过BHE/S7引脚送出DT/R端输出低电平,表示本总线周期为读周期,存储器读总线周期(T2),地址信号消失AD15AD0进入高阻状态,以便为读入数据作准备A19/S6A16/S3及BHE/S7引脚上输出状态信息S7S3DEN信号在T2状态变为低电平RD信号在T2状态变为低电平,被地址信号选中的内存单元(或I/O口),才被RD信号从中读出数据,将其送到数据总线上,存储器读总线周期(T3/4),T3内存单元的数据(或I/O口)送到数据总线上,CPU通过AD15AD0接收数据T4在T4状态和前一个状态交界下降沿处,CPU对数据总线采样,从而获得数据,等待状态Tw,同步时序通过插入等待状态,来使速度差别较大的两部分保持同步在读写总线周期中,判断是否插入Tw1.在T3的上升沿检测READY引脚是否有效2.如果READY无效,在T3和它T4之间插入一个等效于T3的Tw,转13.如果READY有效,执行完该T状态,进入T4状态,8086 存储器写总线周期时序,存储器写总线周期,写总线周期和读总线周期的时序完全类似不同之处在于T2前半周期开始WR输出低电平,在T3周期结束才变为高电平,而在读周期中RD在T2的后半周期才变为低电平DT/R在整个写总线周期都输出高电平读周期中,AD15AD0在T2会浮空;写周期中,AD15AD0在T2后半周期即开始输出。,8088访问存储器时序,8086与8088总线周期的时序非常相似,仅在地址/数据总线上有区别8088数据总线是8位的,所以只有AD7AD0是地址/数据复用线,而A15A8是8根地址线8088没有BHE信号,8086/8088访问I/O端口时序,8086/8088访问外设的时序,即输入/输出时序,与CPU访问存储器的时序几乎完全相同,两者唯一区别是IO/M(M/IO)线,中断响应周期,中断响应时序中有两个连续的中断响应周期第一个中断响应周期,CPU输出INTA负脉冲,表示CPU响应外设中断请求在第二个中断响应周期,CPU又输出INTA负脉冲,通知外设向数据线上送一个字节中断类型码,8086/8088等待(WAIT)状态时序,当存储慢速设备(存储器或I/O设备)的数据时,必须插入等待状态来延长总线周期;由READY信号来实现:当被访问对象的数据传输速度与CPU存取数据的速度匹配时,则READY线处于高电平;当被访问对象的数据传输速度慢于CPU的存取速度时,READY信号在T2结束的下降沿之前,变为低电平。CPU在T3的上升沿采样READY线。若READY为低电平,则自动插入1个Tw状态;若READY为高电平,则不插入Tw状态,并在T3结束进入T4。当插入Tw时,在每个Tw状态的上升沿继续采样READY线,若仍为低电平,则继续插入一个Tw,直到采样到高电平为止,才结束等待状态进入T4状态。,READY信号插入Tw状态示意图:,8086/8088总线空闲周期,只有当CPU和存储器及I/O端口之间传送数据时,CPU才执行总线周期,CPU在不执行总线周期时,BIU总线接口部件不和总线打交道,此时,进入总线空闲周期。总线空闲周期中,状态信号S6S3和前一个总线周期一样。如果前一个总线周期是写周期,在空闲周期中,地址/数据复用脚上还会继续有驱动前一个总线周期的数据D15D0。如果前面一个总线周期是读周期,则AD15AD0在空闲周期中处于高阻。在空闲周期中,尽管CPU对总线进行空操作,但在CPU内部,仍然进行着有效的操作。,8088/8086 CPU的特性,8088/8086 CPU基本特性8088/8086 CPU的增强功能,8088/8086 CPU基本特性,