Intel 8086微处理器 是由美国Intel 公司1987年推出的一种高性能的16位微处理器,是第三代微处理器的代表。它有20条地址线,直接寻址能力达1MB,具有16条数据总线,内部总线和ALU均为16位,可进行8位和16位操作 。
Intel 8086微处理器具有丰富的指令系统,采用多级中断技术、多种寻址方式、多种数据处理形式、段式存储器结构、硬件乘除法运算电路,增加了预先存取指令的队 列寄存器等,一问世就显示出了强大的生命力,以它为核心组成的微机系统性能已经达到中、高档小 型计算机的水平。8086的一个突出特点是多重处理能力,用8086CPU与8087协处理器以及8089I/O处理器组成的多处理器系统,可大大提高其数据处理和输入输出能力。另外,与8086配套的各种外围接口芯片非常丰富,从而方便用户开发各种系统。
8086CPU内部结构图
- 概述
8086CPU采用不同于第二代微处理器的一种全新结构形式,内部由两大独立的功能部件组成,分别为总线接口部件BIU(Bus Interface Unit)和执行部件EU(ExecuteUnit)。在执行指令的过程中,两个部件形成了两级流水线:执行部件执行指令的同时,总线接口部件完成从主存中预先取后继指令的工作,使指令的读取与执行可以部分重叠,从而提高了总线的利用率。
- 执行部件EU
执行部件EU由一个16位的算术逻辑单元ALU、8个16位通用寄存器、一个16位标志寄存器FLAGS、一个数据暂存寄存器和执行单元的控制电路组成。EU负责进行所有指令的解释和执行,同时管理上述有关的寄存器。
执行部件EU内部结构
(1)EU的组成 ①算术逻辑运算单元 它是一个16位的运算器,可用于8位、16位二进制算术和逻辑单元,也可按指令的寻址方式计算寻址存储器所需的16位偏移量。 ②通用寄存器 它包括4个16位的数据寄存器AX、BX、CX、DX和4个16位指针与变址寄存器 SP、BP与SI、DI。 ③标志寄存器 它是一个16位的寄存器,用来反映CPU运算的状态特征和存放某些控制标志。 ④数据暂存寄存器 它协助ALU完成运算,暂存参加运算的数据。 ⑤EU控制电路 它负责从BIU的指令队列缓冲器中取指令,并对指令译码,根据指令要求 向EU内部各部件发出控制命令,以完成各条指令规定的功能。 (2)EU的主要功能 ①从指令队列中取出指令代码,由EU控制器进行译码后控制各部件完成指令规定的操作。 ②对操作数进行算术和逻辑运算,并将运算结果的特征状态存放在标志寄存器中。 ③当需要与主存储器或I/O端口传送数据时,EU向BIU发出命令,并提供要访问的内存地址或I/O端口地址以及传送的数据。 执行单元中的各部件通过16位的ALU总线连接在一起,在内部实现快速数据传输。值得注意的是,这个内部总线与CPU外接的总线之间是隔离的,即这两个总线可以同时工作而互不干扰。EU对指令的执行是从取指令操作码开始的,它从总线接口单元的指令队列缓冲器中每次取出一个字节。如果指令队列缓冲器中是空的 ,那么EU就要等待BIU通过外部总线从存储器中取得指令并送到EU,通过译码电路分析,发出相应控制命令,控制ALU数据总线中数据的流向。
如果是运算操作,则操作数据经过暂存寄存器送入ALU,运算结果经过ALU数据总线送到相应寄存器,同时标志寄存器FLAGS根据运算结果改变状态。在指令执行过程中常会发生从存储器中读或写数据的事件,这时就由EU单元提供寻址用的16位有效地址,在BIU 单元中经运算形成一个20位的物理地址,送到外部总线进行寻址。
- 总线接口部件BUI
总线接口部件BIU是8086CPU在存储器和I/O设备之间的接口部件,负责对全部引脚的操作,即8086对存储器和I/O设备的所有操作都是由BIU完成的。所有对外部总线的操作都必须有正确的地址和适当的控制信号,BIU中的各部件主要是围绕这个目标设计的。它提供了16位双向数据总线、20位地址总线和若干条控制总线。
其具体任务是:负责从内存单元中预先取出指令,并将它们送到指令队列缓冲器暂存。CPU执行指令时,总线接口单元要配合执行单元,从指定的内存单元或I/O端口中取出数据传送给执行单元,或者把执行单元的处理结果传送到指定的内存单元或I/O端口中。
总线接口部件BUI内部结构
(1)BIU的组成
总线接口单元BIU由一个20位地址加法器、4个16位段寄存器、一个16位指令指针IP、指令队列缓冲器和总线控制逻辑电路等组成。8086的指令队列由6个字节构成。 ①地址加法器和段寄存器
地址加法器将16位的段寄存器内容左移4位,与16位偏移地址相加,形成 20位的物理地址。 ②16位指令指针IP
指令指针IP用来存放下一条要执行的指令在代码段中的偏移地址。 ③指令队列缓冲器
当EU正在执行指令,且不需占用总线时,BIU会自动地进行预先取指令操作,将所取得的指令按先后次序存入一个6字节的指令队列寄存器,该队列寄存器按“先进先出 ”的方式工作,并按顺序取到EU中执行。其操作遵循下列原则: ☆每当指令队列缓冲器中存满一条指令后,EU就立即开始执行。 ☆每当BIU发现队列中空了两个字节时,就会自动地寻找空闲的总线周期进行预先取指令操作,直到填满为止。 ☆每当EU执行一条转移、调用或返回指令后,则要清除指令队列缓冲器,并要求BIU从新的地址开始取指令,新取的第一条指令将要直接经指令队列缓冲器送到EU去执行,并在新地址基础上再作预先取指令操作,实现程序段的转移。 BIU和EU是各自独立工作的,在EU执行指令的同时,BIU可预先取下一条或 下几条指令。因此,一般情况下,CPU执行完一条指令后,就可立即执行存放在指令队列中的下一条指令,而不需要像以往的8位CPU那样,采取先取指令,后执行指令的串行操作方式。 ④总线控制逻辑电路
总线控制逻辑电路将8086CPU的内部总线和外部总线相连,是8086CPU与内存单元或I/O端口进行数据交换的必经之路。它包括16条数据总线、20条地址总线和若干条控制总线,CPU通过这些总线与外部取得联系,从而构成各种规模的8086微型计算机系统。 (2)BIU的主要功能
BIU完成CPU与主存储器或I/O端口之间的信息传送,其主要功能如下:
① 预先取指令队列,存放在指令队列中。每当8086CPU的指令队列中有两个空字节,并且EU没有要求BIU 进入存取操作数的总线周期时,BIU就自动从主存中顺序取出指令字节放入指令队列中。当执行转移指令时,BIU清空指令队列,从转移后的当前地址取出指令送EU执行,然后从主存中取出后继指令字节送指令队列排队,从而实现EU和BIU的并行操作。
②将访问主存的逻辑地址转换成实际的物理地址。
,