2.1.1 8086的功能结构
2.1.1 8086的功能结构
0. 组成部分
1. 两个工作部件
8086微处理器的内部功能结构如图2-1新示,由两个独立的工作部件构成一一
- 执行部件(Execution Unit, EU)
- 总线接口部件(Bus Interface Unit, BIU)
2.工作部件 结构和功能
- [[EU]]由运算器、寄存器组、控制器等组成,负责指令的执行;
- [[BIU]]由指令队列、地址加法器、总线控制逻辑等组成,负责与系统总线打交道。
1. 执行部件EU
(1)EU的功能
EU(Execution Unit,执行单元)是微处理器中的一个核心部件,负责执行指令。它的功能主要包括以下三个方面:
1. 指令获取与译码:
- EU负责从总线接口单元(BIU)的指令队列缓冲器中取出指令,并由EU控制器的指令译码器对指令进行译码,产生相应的操作控制信号给各个部件。
- 这些控制信号指导后续的操作,例如选择寄存器、选择ALU(算术逻辑单元)的运算方式等。
2. 算术逻辑运算:
- EU执行指令时,对操作数进行算术运算和逻辑运算。
- 算术运算包括加法、减法、乘法、除法等,逻辑运算包括与、或、非、异或等。
- EU通过控制ALU完成这些运算,并将运算结果保存到状态寄存器FR(Flag Register,标志寄存器)中。
- 状态寄存器保存了指令执行后的状态特征,如零标志、进位标志、溢出标志等。
3. 数据交换:
- EU不直接与CPU外部系统相连,
- 当需要与主存储器或I/O设备交换数据时,EU向BIU发出命令,并提供给BIU 16位有效地址及所需传送的数据。BIU根据EU提供的信息进行数据传输,以完成与外部系统的数据交换。
总的来说,EU是微处理器中负责执行指令和处理数据的关键部件,它通过译码指令、执行运算、保存状态和与外部系统交换数据等功能,实现了计算机程序的运行和控制。
(2)EU的组成
EU组成部分:
- 算术逻辑单元(ALU)、
- 通用数据寄存器组(AX、BX、CX、DX),
- 地址指针
- 变址寄存器(SP、BP、SI、DI)、标志寄存器(FR)、
- 数据暂存寄存器
- EU控制器
EU(Execution Unit,执行单元)的组成包括了多个关键部件
1. 算术逻辑单元(ALU):
算术逻辑单元是执行单元中的核心部件,负责执行算术运算(如加法、减法、乘法、除法等)和逻辑运算(如与、或、非、异或等)。ALU根据控制信号执行相应的运算操作,并将结果输出给其他部件或保存到寄存器中。
2. 通用数据寄存器组:
通用数据寄存器组包括了多个通用目的寄存器,用于存储数据和临时结果。在8086/8088微处理器中,通用数据寄存器组包括了AX、BX、CX、DX等寄存器,它们可以用于存储数据、地址、计数器等。
3. 地址指针和变址寄存器:
地址指针寄存器(如SP、BP、SI、DI)和变址寄存器(如BX、SI、DI)用于存储地址信息,用于访问内存或进行数据传输。
4. 标志寄存器(FR):
标志寄存器(Flag Register,FR)保存了指令执行后的状态特征,如零标志、进位标志、溢出标志等。它们用于控制程序的流程和处理条件分支。
5. 数据暂存寄存器:
数据暂存寄存器用于临时存储数据或中间结果,以便进行后续的处理。这些寄存器可以在执行指令过程中暂存数据,然后再传送给其他部件或保存到寄存器组中。
6. EU控制器:
EU控制器负责对指令进行译码,并产生相应的控制信号,用于控制ALU、寄存器组、标志寄存器等部件的操作。它协调了整个执行单元的工作,确保指令能够按照正确的顺序和方式执行。
这些部件共同组成了执行单元,实现了指令的执行和数据的处理功能。通过协调这些部件的工作,执行单元能够有效地执行各种指令,并完成复杂的计算和控制任务。
(3)EU的特点
1. 寄存器 的使用
通用数据寄存器的灵活性:
- 通用数据寄存器AX、BX、CX、DX,既可以作16位寄存器使用,也可以分成高低8位分别作两个8位寄存器使用。这种灵活性允许程序员根据需要选择合适的寄存器宽度,以适应不同的数据处理任务。
地址指针和变址寄存器
地址指针BP、SP和变址寄存器SI、DI都是16位寄存器,一般用来存放地址信息。
2. ALU 的功能
ALU的核心是16位二进制加法器。
它具有两个主要功能功能:
- 进行算术/逻辑运算:ALU负责执行指令中的算术运算和逻辑运算,如加法、减法、与、或等。
- 提供操作对象的地址: ALU根据指令的寻址方式提供给BIU所需要操作对象的16位(偏移)地址,使BIU能够正确地对内存或I/O空间进行寻址,并传输操作对象。
3. 状态标志寄存器 (Flag Register)
16位状态标志寄存器(7位未用)存放了指令执行后的状态特征和设置的控制标志。
这些标志包括零标志、符号标志、进位标志等,用于反映操作结果的状态和控制程序的流程。
4. EU控制器
EU控制器是执行指令的控制电路,负责从指令队列中取指令、译码指令、产生控制信号等。它协调了整个执行单元的工作,确保指令能够按照正确的顺序和方式执行。
2. 总线接口部件BIU
(1)BIU的功能。
BIU(Bus Interface Unit,总线接口单元)是微处理器中的一个部件,负责处理CPU与主存储器或I/O设备之间的数据传输。它的功能主要包括以下三个方面:
1. 指令获取:
BIU负责从主存储器中取指令,并将这些指令送到指令队列缓冲器中。指令队列缓冲器用于暂存即将执行的指令,以便CPU逐条执行。
2. 数据传输:
当CPU执行指令时,BIU配合EU(Execution Unit,执行单元)从指定的主存储器单元或外设端口中取数据,然后将这些数据传送给EU,或者将EU的操作结果传送到指定的主存储器单元或外设端口中。这包括了
- 从主存取数据、
- 写入数据到主存、
- 从外设读取数据、
- 向外设写入数据等操作。
3. 物理地址计算:
BIU还负责计算并形成访问存储器的物理地址。
- 在访问主存或外设时,CPU通常使用逻辑地址,而BIU则负责将逻辑地址转换为物理地址,以便在实际的存储器中进行读写操作。
- 在8086/8088处理器中,物理地址通常是20位的,因此BIU需要进行物理地址的计算和生成。
总的来说,BIU在微处理器中起着桥梁的作用,负责处理CPU与主存储器或I/O设备之间的数据传输和地址转换,保证了整个系统的正常运行。
(2)BIU的组成。
BIU由4个16位段寄存器、16位指令指针寄存器、20位物理地址加法器、6字节指令队列及总线控制逻辑组成。
BIU(Bus Interface Unit,总线接口单元)的组成:
1. 16位段寄存器:
BIU包括了4个16位段寄存器,用于存储段选择子。
在实模式下,段寄存器存储的是段的起始地址,用于计算实际物理地址。
而在保护模式下,段寄存器存储的是描述符表中的索引,用于访问GDT(Global Descriptor Table)或LDT(Local Descriptor Table)中的描述符。
2. 16位指令指针寄存器:
BIU还包括了一个16位指令指针寄存器,用于存储当前执行指令的偏移地址。指令指针寄存器的值会随着指令的执行而更新,指向下一条待执行的指令。
3. 2位物理地址加法器:
BIU中还包括了一个20位物理地址加法器,用于计算物理地址。在实模式下,物理地址由段寄存器和指令指针寄存器中的偏移地址组合而成,在保护模式下,物理地址还需经过分页机制的处理。
4. 6字节指令队列:
BIU中还包括了一个6字节的指令队列,用于暂存从内存中读取的指令。指令队列可以提高指令获取的效率,减少对内存的访问次数,从而提高处理器的性能。
5. 总线控制逻辑:
总线控制逻辑负责控制总线的访问,协调指令的获取和数据的传输。它负责将指令队列中的指令送入执行单元,同时处理数据的读取和写入操作,以及与外部设备的通信。
综合来看,BIU作为微处理器中负责与总线进行交互的关键部件,包括了段寄存器、指令指针寄存器、物理地址加法器、指令队列和总线控制逻辑等组成部分,这些组件共同协作,实现了指令的获取和数据的传输,从而保证了处理器的正常运行。
(3)BIU的特点。
以下是关于BIU(总线接口单元)的特点:
1. 指令队列的作用:
指令队列由6字节的寄存器组成**(8088指令队列由4字节组成)** ,采用“先进先出”原则,暂时存放BIU从存储器中预取的指令。当EU执行完一条指令时,可以立即从指令队列中取指令执行,而不必等待BIU再次访问存储器。这种流水线技术提高了CPU的效率,减少了CPU取指令和执行指令之间的等待时间。图2-2给出这两种方式的简单对比。
2. 地址加法器的功能:
地址加法器用于产生20位存储器的物理地址。
由于8086可寻址1MB空间,但内部寄存器和数据通道宽度都是16位,因此需要根据提供的逻辑地址信息产生20位的物理地址。
地址加法器将段寄存器提供的16位信息(段基址)左移4位(相当于乘以16),然后与EU或
I
/
O
I/O
I/O提供的16位信息(偏移地址)相加,形成20位的物理地址。
计算公式为
物理地址PA(20位)=段基址SA(16位)×16+偏移地址EA(16位)
3. 总线控制逻辑的作用:
总线控制逻辑负责 8086 分配 20 条引脚线实现分时传输20位地址、16位数据和4位状态信息到外部系统。
它通过逻辑控制方法实现了在总线上的信息传输,协调了BIU和外部设备之间的数据交换。
4. 流水线技术的应用:
EU和BU之间可以并行工作,形成指令的取指、指令译码、指令执行的流水线。
- 当指令队列中出现空字节,且EU没有访问存储器和接口的要求时,BIU可以自动从存储器读出指令代码,存放于指令队列中,供EU执行。
- 这样,在一条指令执行的过程中,就可以预取下一条(或多条)指令,从而减少了CPU为取指令而等待的时间,提高了CPU的运行速度。
- 然而,跳转指令可能导致预取的指令并非要执行的指令,从而降低了流水线的效率:
- 当遇到跳转指令的情况下,导致预取的指令并非是要执行的指令,只好舍弃,这将会降低流水线的效率。
综合来看,BIU通过指令队列、地址加法器和总线控制逻辑等组件,以及流水线技术的应用,实现了指令的高效取指和执行,从而提高了CPU的性能和运行速度。
在以后的几代微处理器中,对内部结构的改进主要从流水线入手,将指令的执行过程进一步分解,尽可能使每一步骤都能同时执行,由此提高微处理器的执行速度。