📜  8086的体系结构

📅  最后修改于: 2021-06-28 09:19:48             🧑  作者: Mango

微处理器是具有CPU的所有功能的集成电路,但是它不能单独使用,因为与微控制器不同,它没有存储器或外围设备

8086里面没有RAM或ROM。但是,它具有用于存储中间结果和最终结果的内部寄存器,并通过系统总线与位于其外部的存储器进行接口。

在8086的情况下,它是40引脚双列直插式封装IC中的16位Integer处理器

内部寄存器(存在于芯片中)的大小指示处理器一次可以处理多少信息(在本例中为16位寄存器),以及处理器如何在芯片内部内部移动数据,有时也称为“内部”。内部数据总线。

8086为编程人员提供了14个内部寄存器,每个内部寄存器16位或2字节宽。

内存分段:

  • 为了提高执行速度和获取速度,8086分段了内存。
  • 它的20位地址总线可以寻址1MB的内存,它将其分成4个64kB段。
  • 8086仅可在整个1MB内存中使用四个64KB段。

英特尔8086的内部体系结构分为两个单元:总线接口单元(BIU)和执行单元(EU)。这些解释如下。

1.总线接口单元(BIU):

它通过系统总线提供8086与外部存储器和I / O设备的接口。它执行各种机器周期,例如内存读取,I / O读取等,以在内存和I / O设备之间传输数据。

BIU执行以下功能-

  • 它生成20位物理地址用于存储器访问。
  • 它从内存中获取指令。
  • 它在内存和I / O之间来回传输数据。
  • 维护6字节的预取指令队列(支持流水线)。

BIU主要包含4个段寄存器指令指针,预取队列和地址生成电路

指令指针(IP):

  • 它是一个16位寄存器。它保留了代码段中下一条指令的偏移量。
  • 提取每个指令字节后,IP递增。
  • 每当发生分支指令时,IP都会获得一个新值。
  • CS乘以10H得到代码段的20位物理地址。
  • 下一条指令的地址计算为CS x 10H + IP。

例子:

CS = 4321H IP = 1000H 
then CS x 10H = 43210H + offset =  44210H  

这是指令的地址。

代码段寄存器:
CS保留代码段的基址。所有程序都存储在代码段中,并可以通过IP进行访问。

数据段寄存器:
DS保留数据段的基地址。

堆栈段寄存器:
SS保留堆栈段的基地址。

额外的段寄存器:
ES保留额外段的基地址。

地址生成电路:

  • BIU具有物理地址生成电路。
  • 它使用以下公式使用段和偏移地址生成20位物理地址:
    Physical Address 
    = Segment Address x 10H + Offset Address

6字节预取队列:

  • 它是一个6字节队列(FIFO)。
  • 在执行当前指令的同时获取下一条指令(通过CS的BIU)称为流水线操作。
  • 每当发生分支指令时都会刷新。

2.执行单位(欧盟):

EU的主要组件是通用寄存器,ALU,专用寄存器,指令寄存器和指令解码器以及标志/状态寄存器。

  1. 从BIU中的队列中获取指令,使用ALU解码并执行算术和逻辑运算。
  2. 发送控制信号,以进行微处理器内部的数据传输操作。
  3. 向BIU发送请求信号以访问外部模块。
  4. 它相对于T状态(时钟周期)而不是机器周期进行操作。

8086具有四个16位通用寄存器AX,BX,CX和DX。在执行期间存储中间值。这些每个都有两个8位部分(较高和较低)。

  • AX寄存器:
    它在乘法和除法运算期间保存操作数和结果。也是String操作期间的累加器。
  • BX寄存器:
    它在间接寻址模式下保存内存地址(偏移地址)。
  • CX寄存器:
    它保存着诸如循环,旋转,移位和字符串操作之类的指令的计数。
  • DX寄存器:
    它与AX一起用于在乘法和除法过程中保存32位值。

算术逻辑单元(16位):
执行8位和16位算术和逻辑运算。

专用寄存器(16位):

  • 堆栈指针:
    指向堆栈顶部。堆栈位于堆栈段中,用于PUSH,POP,CALL,RET等指令。
  • 基本指针:
    BP可以保存堆栈段中任何位置的偏移地址。它用于访问堆栈的随机位置。
  • 来源索引:
    在字符串操作期间,它在数据段中保存偏移地址。
  • 目的地索引:
    在字符串操作期间,它将偏移地址保存在Extra Segment中。

指令寄存器和指令解码器:
EU从队列中获取操作码到指令寄存器中。指令解码器对其进行解码,并将信息发送到控制电路以执行。

标志/状态寄存器(16位):
它具有9个标志,可帮助更改或识别微处理器的状态。

6个状态标志:

  1. 进位标志(CF)
  2. 奇偶校验标志(PF)
  3. 辅助进位标志
  4. 零标志(Z)
  5. 签名
  6. 溢出标志(O)

每次进行算术和逻辑运算后,状态标志都会更新。

3个控制标志:

  1. 陷阱标志(TF)
  2. 中断标志(IF)
  3. 方向旗(DF)

可以使用控制指令(例如CLC,STC,CLD,STD,CLI,STI等)来设置或重置这些标志。

控制标志用于控制某些操作。