您好,欢迎来电子发烧友网! ,新用户?[免费注册]

当前位置:电子发烧友网 > 图书频道 > 电子 > 《微计算机原理》 > 第2章 8086微处理器

第1节 概述及内部结构

 

  

 

  8086是Intel系列的16位微处理器,它是采用HMOS工艺技术制造的,内部包含约29000个晶体管。

  8086有16根数据线和20根地址线,因为可用20位地址,所以可寻址的空间达220即1M字节。

  8086工作时,只要一个5V电源和一相时钟,时钟频率为5MHz。后来,Intel公司推出的8086-1型微处理器时钟频率高达10MHz,8086-2型微处理器时钟频率达8MHz。

  几乎在推出8086微处理器的同时,Intel公司还推出了一种准16位微处理器8088。推出8088的主要目的的是为了与当时已有的一套Intel外围设备接口芯片直接兼容。8088的内部寄存器、内部运算部件以及内部操作都是按16位设计的,但对外的数据总线只有8条。

  

 

  掌握8086微处理器的内部结构,CPU的引脚功能、总线结构和时序。

  

 

  §1 概述

  §2 8086的内部结构

  §3 8086寄存器组结果

  §4 8086存储器组织

  §5 8086的引线

  §6 8086的时序

  §7 8086的总线请求和保持

  §8 8088与8086的比较

  §练习题

  §自测题

  

 

  2.1 总线接口部件BIU

  2.2 执行部件

  2.3 BIU和EU的动作管理

  2.4 8086的寄存器结构

  2.5 8086的存储器接口

  2.6 8086的最小组态和最大组态

  2.7 8086地址/数据线的分时复用特性

  

 

  1、重点在8086的时序,要好好地理解和掌握;

  2、读懂和理解8086的工作时序;

  3、逐步理解各知识点。

  

 

  寄存器  存储器  模式  时序

  

 

  1、《微型计算机技术及应用》,戴梅萼等编著,第二版,清华大学出版社

  2、《微型计算机原理》,季维法等编著,第一版,电子科技大学出版社

  3、《微型计算机原理—常见题型解析及模拟题》,武自芳主编,西北工业大学出版社

  4、《80X86/80X87汇编语言程序设计》,洪志全等编著,电子科技大学出版社

  §2.1 概述

  8086CPU是Intel公司1978年生产的,工作频率5 ,是一种16位CPU,其内部结构为16位,数据总线也是16位。它可以处理BCD码、ASCII码、字节、字以及字节串。与8086CPU配合工作的协处理器可以有8087(专门为实数运算而设计的数学协处理器,简称NPX)、8089(提高输入、输出性能而设计的I/O协处理器)。

  8086的地址信号线为20根,可以输出的存储器地址为:0000,0000,0000,000,0000 ~ 1111,1111,1111,1111,1111 或00000H~FFFFFH,每个地址信号指出一个存储器单元地址,因此,8086可以寻址1MB存储器。8086寻址存储器 时可以使用直接寻址、间接寻址、基址寻址、变址寻址等寻址方式。

  80286CPU也是16位CPU(内部结构为16位),其地址信号线为24根,可以寻址16MB存储器。与80286配合工作的 数学协处理器是80287或8087。

  80386CPU是32位CPU(内部结构为32位),其地址信号线为32根,可以寻址4GB存储器。与80386配合工作的数学协处理器是80387或80287。80386及其以后的CPU均支持多用户、多任务操作系统。

  80486、Pentium、Pentium w/MMX、Pentium Pro、Pentium Ⅱ(包含Celeron和Xeon)均为32位CPU,且内部已 包含数学协处理器(数学协处理器是CPU整体结构的一个单元,称为浮点处理单元,简称FPU)。但CPU每升级一 次,其内部均加入了其他一些高级功能,工作频率也不断提高,使其运算速度大为提高。

  高档CPU的高级功能一般包括:更大的内部缓存(Cache)、超标量流水线、MMX、动态执行微结构等。除了 MMX外,这些功能对于软件来说均是透明的。因此,从软件来说,8086与Pentium Ⅱ差异不大。(主要差异:80386开始引入的32位保护模式、Pentium w/MMX开始开始引入的MMX指令)。

  §2.2 8086的内部结构(编程结构)

  本节概述

  从编程的角度看,8086的内部结构分成两大部分:总线接口单元BIU和执行单元EU。这两部分是相互直接作用的,但它们也可以各自执行独立的功能而彼此无关,从而可以重叠工作。

  

 

  本节内容

  1.执行单元EU

  2.总线接口单元BIU

  3.总线接口单元和执行单元的动作管理

  4.8086总线周期的概念

  §2.2.1 执行单元EU(Excution Unit)

  这部分负责指令的执行。它包含有四个16位的数据寄存器(AX、BX、CX、DX,每个16位寄存器,均可作为两个8位寄存器使用)和四个16位的指示器(SP、BP)、变址寄存器(SI、DI),以及执行算术运算和逻辑运算的算术逻辑单元ALU,状态标志寄存器等。

  执行单元没有连接到系统总线上,对于系统总线来说,它是外界的。执行单元EU从总线接口单元BIU的"指令队列缓冲器"获得指令,同样,当指令要求访问存储器或I/O接口电路时,EU向BIU发出请求,由BIU通过总线获得存储数据。

  §2.2.2 总线接口单元BIU(Bus Interface Unit)

  BIU负责与存储器和I/O接口,即8086CPU与存储器或I/O接口电路信息传送都是通过BIU进行的。例如,当BIU从内存的指令部分取出指令,送至指令流队列中排队,在执行指令时所需的操作数,也由BIU从内部的指定区域取出,传送给EU部分去执行。

  按照EU的性能,在CPU和存储器或I/O接口之间传数时,EU提供的访问存储器的地址是16位的,而8086访问1MB存储器空间却需要20位地址,为了形成20位地址,就必须借助与在BIU中的四个16位的段寄存器(CS,DS,SS,ES)。而偏移量则由指令指示器IP(16位的指针寄存器)提供。

  8086总线接口部件由下列各部分组成:

  4个段地址寄存器,即:

  CS-16位的代码段寄存器,

  DS-16位的数据段寄存器,

  ES—16位的扩展段寄存器,

  SS—16位的堆栈段寄存器;

  16位的指令指针寄存器IP;

  20位的地址加法器;

  6字节的指令队列。

  使8086CPU的处理速度得到提高的重要原因是取指令和执行指令部分是分开的(即两者在执行时间上可以重跌,如图2-2所示)

  于是在一条指令的执行过程中,就可取出下一条(或多条)指令,送到指令流队列中排队。BIU具有这种预取指令的功能,就减少了CPU为取指令所需要的等待时间,提高了CPU的利用率,提高了整个运算速度。

 

  在多数情况下,指令对列机构中至少保持一个字节指令流,EU才不需要等待指令。指令队列中的指令,就是存放在同现行执行指令相连接,而地址又比它高的那些存储单元的指令。就是说,只要按顺序执行,在指令队列中的指令就是紧跟其后的指令。若EU执行转移指令时,则BIU清除指令队列机构,从新地址取指令,并立即送给EU,然后再从新单元开始,重新填满队列机构。此外,当EU请求存储器或I/O接口读或写数据的时候,BIU就不取指令。

  8086CPU采用取指令和执行指令这种重迭操作技术称为指令的流水线结构,它不但提高CPU利用率和整机运行速度,而且降低了对与它相配的存储器的存取速度的要求。

  对总线接口部件,作下面两点说明:

  ①8086的指令队列为6个字节,8088的指令队列为4个字节。不管是8086还是8088都会在执行指令的同时,从内存中取下面1条指令,取来的指令就放在指令队列中。这样,一般情况下,8086/8088执行完一条指令就可以立即执行下一条指令,而不象以往的计算机那样,轮番那地进行取指令和执行指令的操作,从而提高了CPU的效率。

  ②地址加法器用来产生20位地址。上面已经提到,8086可用20位地址寻址1M字节的内存空间,但8086内部所有的寄存器都是16位的,所以需要由一个附加的机构来根据16位寄存器提供的信息计算出20位的物理地址,这个机构就是20位的地址加法器。

  比如,一条指令的物理地址就是根据代码段寄存器IP的内容得到的。具体计算时,要将段寄存器的内容左移四位,然后再与IP的内容相加。假设CS=FE00H,IP=0200H,此时指令的物理地址为FE200H.

  §2.2.3 总线接口单元和执行单元的动作管理

  总线接口单元和执行单元并不是同步工作,但是,两者的动作管理仍然是有原则的,体现在下面几个方面:

  ①每当8086的指令队列中有2个空字节,或者8088的指令队列中有一个空字节时,总线接口部件就会自动把指令取到指令队列中。

  ②每当执行部件准备执行一条指令时,它会从总线揭开部件的指令队列前部取出指令的代码,然后用几个时钟周期去执行指令。在执行指令的过程中,如果必须访问存储器或者输入/输出设备,那么,执行部件就会请求总线接口部件进入总线周期去访问内存或者输入/输出端口的操作;如果此时总线接口部件正好处于空闲状态,那么,会立即响应执行部件的总线请求。但有时会遇到这样的情况,执行部件请求总线部件访问总线时,总线接口部件正在将某个指令字节取到指令队列中,此时,总线接口部件将首先完成这个指令的总线周期,然后再去响应执行部件发出的访问总线的请求。

  ③当指令队列已满,而且执行部件对总线接口部件又没有总线访问请求时,总线接口部件便进入空闲状态。

  ④在执行转移指令、调用指令和返回指令时,下面要执行的指令就不是在程序中紧接着排列的那条指令了,而总线接口部件往指令队列装入指令时,总是按顺序进行的,这样,指令队列中已经装入了的字节就没有用了。遇到这种情况,指令队列中的原有内容被自动清除,总线接口部件会接着往指令队列中装入另一个程序段中的指令。

  为了更深入了解8086和8088的工作特点,我们来比较一下8086/8088系统与传统的计算机在工作方式上有什么不同。

  传统的计算机都是按照下面这样的步骤来工作的:

  ①从指令指针所指的内存单元中取一条指令送到指令寄存器。

  ②对指令进行译码,而指令指针进行增值,以指向下一条指令。

  ③执行指令。如果所执行的是转移指令、调用指令或者返回指令,则重新设置指令指针的值,以指向下一条要执行的指令。

  可见,传统的计算机在执行指令时,总是相继地进行提取指令和执行指令的动作,也就是说,指令的提取和执行是串行进行的。

  相比之下,在8086/8088中,指令的提取和执行是分别由总线接口部件和执行部件完成的,总线控制逻辑和指令执行逻辑之间既相互独立又相互配合。正是这种互相配合但又非同步的工作方式,使得8086/8088可以在执行指令的同时进行提取指令操作。在8086或8088 CPU中,执行部件可以不停地执行实现已经进入指令队列中的指令。只有当遇到转移指令、调用指令或返回指令时,或者当某一条执行过程中,需要访问内存的次数过于频繁,以至于总线接口部件没有空闲从内存将指令提取到指令队列中时,才需要执行部件等待总线接口部件提取指令。而这种情况相对来说是较少发生的。

  8086/8088 CPU中,总线接口部件和执行部件的这种工作方式,有力地提高了工作效率,这也正是8086/8088成功的原因之一,并被用在更高档CPU的设计中。

  §2.2.4 8086的总线周期的概念

  为了取得指令或传送数据,就需要CPU的总线接口部件执行一个总线周期。为了便于叙述后面的内容,在此,先对总线周期的概念作一个介绍,在讲完8086的基本配置一后,再详细地讲解总线操作。

  在8086/8088中,一个最基本的总线周期由4个时钟周期组成,时钟周期是CPU的基本时间计量单位,它由计算机主频决定。比如,8086的主频为50MHz,1个时钟周期就是200ns;8086-1的主频为10MHz,一个时钟周期为100ns。在1个最基本的总线周期中,习惯上将4个时钟周期分别称为4个状态,即T1状态、T2状态、T3状态、T4状态。

  ①在T1状态,CPU往多路复用总线上发出地址信息,以指出要寻址的存储单元或外设端口的地址。

  ②在T2状态,CPU从总线上撤消地址,而使总线的低16位浮置成高阻状态,为传输数据作准备。总线的最高4位(A19~A16)用来输出本周期状态信息。这些状态信息用来表示中断允许状态、当前正在使用的短寄存器名等。

  ③在T3状态,多路总线的高4位继续提供状态信息,而多路总线的低16位(8088则为低8位)上出现由CPU写出的数据或者CPU从存储器或端口读入的数据。

  ④在有些情况下。外设或存储器速度较慢,不能及时地配合CPU传送数据。这时,外设或者存储器会通过“READY”信号线在T3状态启动之前向CPU发一个“数据未准备好”信号,于是CPU会在T3之后插入1个或多个附加的时钟周期TW。TW也叫等待状态,在TW状态,总线上的信号情况和T3状态的信息情况一样。当指定的存储器或外设完成数据传送时,便在“READY”线上发出“准备好”信号,CPU接收到这一信号,会自动脱离TW状态而进入T4状态。

  ⑤ 在T4状态,总线周期结束。

  需要指出,只有在CPU和内存或I/O接口之间传输数据,以及填充指令队列,CPU才执行总线周期。可见,如果在1个总线周期之后,不立即执行下一个总线周期,那么,系统总线就处在空闲状态,此时,执行空闲周期。

  在空闲周期中,可以包含1个时钟周期或多个时钟周期。这期间,在高4位上,CPU仍然驱动前一个总线周期的状态信息,而且,如果前一个总线周期为写周期,那么,CPU会在总线低16位上继续驱动数据信息;如果前一个总线周期为读周期没,则在空闲周期中,总线低16位处于高阻状态。

  图表示了一个典型的总线周期序列。