Skip to content

流水线技术

8086采用流水线技术、计算机中的流水线是把一个重复的过程分解为若干个子过程,每个子过程与其他子过程并行进行流水线技术是一种时间并行技术。

存储器也分奇偶、IO也区分奇偶

8086/8088微处理器概述

  1. 8086 CPU是Intel系列的16位微处理器,它有16位数据总线和20位地址总线,所以可寻址的地址空间是
    1. 2的20次方=1MB
  2. 而8088只有8根数据总线
  3. 8086CPU是准16位微处理器,8086和8088的区别是:
    1. 8088是对外的数据总线只有8位,但是它可以处理16位数据
    2. 8086是16位微处理器
    3. 8088是准16位微处理器
    4. 指令队列寄存器
      1. 8086 CPU 6个字节
      2. 8088 CPU 4个字节
    5. 8086有 BHE 非
    6. 而 8088 没有 BHE非
    7. 8086是 M/IO 非
    8. 8088是 IO/M 非

8086CPU的编程结构

CPU的组成部分(特别详细)-思维导图

从程序员的角度来看,8086CPU分为两部分:执行部件(EU)、总线接口部件(BIU)EU 负责执行所有指令,向 BIU 提供数据和地址

执行过程:

EU 负责执行所有指令,向 BIU 提供数据和地址,操纵通用寄存器和标志寄存器。除了几个控制引脚外,EU 完全与“外部世界”隔绝。BIU 负责执行所有外部总线周期,由段寄存器 和 通用寄存器(指令指针寄存器 和 指令代码队列)组成。BIU 在其专用累加器中结合段和偏移值来获得20位地址,BIU 负责根据 EU 要求读取数据,或者把 EU 执行后算术运算器中寄存器上的数据传输出去,另外 BIU 还负责预先读取要执行的指令缓存到指令代码队列供 EU 使用。

当EU准备好执行一条指令时,它从BIU的指令队列中获取指令目标码字节,然后执行该指令。如果EU准备取指令字节时队列为空,则EU等待取指令字节。在指令执行的过程中,如果内存位置或I/O端口必须被访问,EU请求BIU执行所需的总线周期。

CPU的两个处理部分是独立运行的。在8086 CPU中,当6字节指令队列的两个或两个以上字节为空时,EU不需要BIU执行总线周期,BIU执行指令获取周期来重新填充队列。在8088 CPU中,当4字节指令队列中的一个字节为空时,BIU执行一个指令获取周期。注意,8086 CPU,因为它有一个16位的数据总线,可以在一个总线周期访问两个指令目标码字节,而8088 CPU,因为它有一个8位的数据总线,每个总线周期访问一个指令目标码字节。如果 EU 在 BIU 处于指令获取总线周期的过程中发出总线访问请求,那么 BIU 在执行 EU 的请求之前完成该周期。

CPU:

image-20230918205946367

1、执行部件(EU:分析指令、执行指令)

  1. 功能:执行指令
  2. 组成:
    1. 4个通用寄存器(都是可以用来存放数据),即AX(累加器:专门用来存放数据)、BX(基址寄存器:间接寻址中用于存放基地址,默认在数据段)、CX(计数寄存器:循环存放在CX,移位指令存放在 CL)、DX(数据寄存器:存放高16位数,AX存放低16位,AX放不下,可以使用DX存放,可以存外设地址)
      1. 4个专用寄存器,即(暂存数据)(一定长度的二进制位)
        1. 基址指针寄存器 BP(base pointer)
        2. 堆栈指针寄存器 SP(stack pointer)
        3. 源变址寄存器 SI (source index)
        4. 目的变址寄存器 DI (destination index)
    2. 标志寄存器 FR(FLAGS)
    3. 算术逻辑单元 ALU (arithmetic logic unit)
    4. 内部控制逻辑
    5. 暂存器
    6. EU控制器

内部寄存器组

8个16位通用寄存器

  1. 数据寄存器(AX、BX、CX、DX) 4个通用
  2. 指针和变址寄存器(SP、BP、SI、DI) 4个专用
    1. 数据寄存器:可用来存放16位的数据或地址。又可分为8个8位寄存器即:
      1. ​ AX ——> AH,AL AX(16位) 分为 AH(高八位) AL(低八位)
      2. ​ BX ——> BH,BL BX(16位) 分为 BH(高八位) BL(低八位)
      3. ​ CX ——> CH,CL CX(16位) 分为 CH(高八位) CL(低八位)
      4. ​ DX ——> DH,DL DX(16位) 分为 DH(高八位) DL(低八位)
      5. 注意:
        1. 8位寄存器只能存放数据而不能存放地址
        2. 8086中只有AX、BX、CX、DX,可以被分为高八位,低八位。其他不能被分

数据寄存器特有的习惯用法:

  1. AX:累加器。所有I/O指令都通过AX或AL与接口传送信息,中间运算结果也多放于AX中。
  2. BX:基址寄存器。在间接寻址中用于存放基地址。
  3. CX:计数寄存器。可以用作数据寄存器,在字符串操作、循环操作和移位操作时用作计数器,存放计数值。
  4. DX:数据寄存器。在间接寻址的I/O指令中存放I/O端口地址;在32位乘除法运算时,存放高16位数。

指针和变址寄存器

  1. 说明:

    4个16位寄存器,主要用来存放操作数的偏移地址(即操作数的段内地址)。

  2. SP:堆栈指针寄存器,在堆栈操作中存放栈顶的偏移地址。

  3. BP:基址指针寄存器,常用于在访问内存时存放内存单元的偏移地址,还用作堆栈区的基地址寄存器

    注意BX与BP在应用上的区别:

    1. 作为通用寄存器,二者均可用于存放数据
    2. 作为基址寄存器,用BX表示所寻找的数据在数据段; 用BP则表示数据在堆栈段
  4. SI:源变址寄存器,主要用于存放地址,在字符串操作中存放源操作数的偏移地址。

  5. DI:目的变址寄存器,主要用于存放地址,在字符串操作中存放目的操作数的偏移地址。

    变址寄存器常用于指令的间接寻址或变址寻址。

    在串操作中变址寄存器内存放的地址在数据传送完成后,具有自动修改的功能。例如,传送1字节数据后地址自动加1,为下次传送做好准备,变址寄存器因此得名。

2、算术逻辑单元(ALU)及标志寄存器(FR或FLAGS)

① 算术逻辑运算单元ALU:

​ 可完成16位或8位的算术逻辑运算,运算结果通过内部总线送到通用寄存器,或者送往BIU的内部寄存器中,等待写入存储器。ALU运算后的结果特征(有无进位,溢出等)置入标志寄存器FLAGS中保存。

② 标志寄存器FLAGS:

​ 16位寄存器,用来存放运算结果的特征和控制标志。

image-20230913201322082image-20230913203235933

根据功能,8086的标志可以分为两类:

  1. 状态标志——6个,用来表示运算结果的特征。

    包括CF、PF、AF、ZF、SF和OF

  2. 控制标志——3个,用来控制CPU的操作。

    包括IF、DF和TF。

8位二进制

​ 00H——>7FH ≥ 0

​ 80H ——>0FFH < 0 负数 因为80H——>0FFH最高位是1

如何判定溢出:

  1. 负+负=正 溢出
  2. 负-负=> 无溢出
  3. 正-正=> 无溢出
  4. 正+正=> 溢出
  5. 负+负=> 溢出
  6. 负-正=> 溢出
  7. 正-负=> 溢出

OF:同进、同不进 OF=0,不同 0F=1

2、BIU总线接口部件(程序存储、取指令)

总线接口部件按功能分3种:

  1. AB 地址总线 (Address Bus)
  2. DB 数据总线 (Data Bus)
  3. CB 控制总线 (control Bus)

总线接口部件(BIU):实现了CPU和取指令外界交换数据

  1. 功能:
    1. 形成访问存储器的物理地址
    2. 访问存储器取得指令并暂存到指令队列中等待执行
    3. 访问存储器或I/O端口以读取操作数参与EU运算或存放运算结果等
  2. 组成:
    1. 4个段地址寄存器(CS(代码段)、DS(数据段)、ES(附加段)、SS(堆栈段))
    2. 16位的指针寄存器 IP (Instruction pointer)
    3. 20位的地址加法器
    4. 6字节的指令队列缓冲器(预取指令)
    5. 总线控制逻辑
地址加法器
  1. 功能:完成逻辑地址向物理地址的变换。
  2. 物理地址:访问存储器的实际地址,用20位二进制表示
  3. 方法:物理地址=段基址×16 (即左移4位)+ 偏移地址
  4. 注意:
    1. 一个存储单元的物理地址是唯一的,而它对应的逻辑地址是不唯一的。
指令指针寄存器IP—— 16位

功能:用来存放将要执行的下一条指令在代码段中的偏移地址。在程序运行过程中,BIU自动修改IP中的内容,使它始终指向将要执行的下一条指令。

注意:程序不能直接访问IP,但是可通过某些指令修改IP的内容。例如, 执行转移指令时,会将转移的目标地址送入IP中,以实现程序的转移。

指令队列缓冲器——6字节

BIU从存储器中读出指令送入6字节的指令队列。一旦指令队列中空出2个字节,BIU将自动进行读指令的操作以填满指令队列。只要收到EU送来的操作数地址,BIU将立即形成这个操作数的物理地址,完成读/写操作。遇到转移类指令,BIU将指令队列中剩余的指令作废,重新从存储器新的地址单元中取指令并送入指令队列。一般情况下应保证指令队列中填满指令,使得EU可以不断地得到等待执行的指令。

总线控制逻辑

是将CPU的内部总线与CPU引脚所连接的外部总线相连,是CPU与外部交换信息(数据、地址、状态、控制信息)的必经之路,包括16条数据线、20条地址线和若干条控制信号线。

EU和BIU的寄存器总结

8086分为14个寄存器:8个通用寄存器、4个段寄存器、2个控制寄存器

  • 8个通用寄存器:AX(累加器)、BX(基址寄存器)、CX(计数寄存器)、DX(数据寄存器)、SP(堆栈指针寄存器)、BP(基址指针寄存器)、SI(源变址寄存器)、DI(目的变址寄存器 )
  • 4个段寄存器:CS(代码段寄存器)、DS(数据寄存器)、ES(附加段寄存器)、SS(堆栈段寄存器)
  • 2个控制寄存器:IP(指针寄存器)专用、FR
    • FR又分为:SF(零标志位)、OF(溢出标志)、PF(奇偶标志)、AF(半借位标志)、CF(进位标志)、ZF(零标志)、IF(单步中断)、DF(方向标志)、TF(符号标志)

段地址寄存器(CS、DS、SS、ES)

存储器的分段

​ 8086可寻址的存储空间为1MB,有20位的地址线,而内部的寄存器是16位,只能寻址64KB。所以8086/8088系统采用了地址分段的方法,将1MB存储空间分成若干块,称为“逻辑段”,每个逻辑容量≤64KB,存放一种类型的数据或程序。因此1MB的存储空间可分成16个逻辑段(0~15)。在段内寻址仍采用传统的16位地址寻址的方法。剩下四位左移了

​ 如何分成16段

​ 2的20次方 = 1MB = 2的16次方=64KB

​ 所以2的20次方-2的16次方=2的4次方=16段

image-20230913203418981

8086只有20位地址,所以

​ 20位地址(物理地址):分成高16位(段地址)和低16位(偏移地址)

​ 段起始是16的整数倍,写成16进制最低位一位为0(省略)

例如:

​ ABCDH =》 ABCD0H 0省略,0省略就是段起始地址

偏移地址公式

​ 20位地址 - 段起始 = 偏移地址

​ 例如:

​ 20位地址是 ABCD5H ,段起始地址是 ABCD0H(占高16位),那么偏移地址(低16位)就是 ABCD5H - ABCD0H = 0005H(只能是16位,因为一个数占2位)

段起始地址公式

​ 段地址末尾 +0 ,类似于段地址 ×16

​ 例如:

​ 段起始地址是 ABCDH ,那么段地址是 ABCD0H

物理地址公式

​ 段地址 × 16 + 偏移地址 = 物理地址

20位物理地址是唯一的,他的取值范围是从 000000H ~ FFFFFFH

逻辑地址、段地址、偏移地址不唯一

​ 逻辑地址 = 段地址 : 偏移地址

​ 例如:

​ 物理地址 23000H

​ 1、段地址 2000H × 16 = 2000H 偏移地址3000H

​ 2、段地址 2300H × 16 = 23000H 偏移地址0000H

偏移地址16位最大

  1. 最大 FFFFH (16个1)
  2. 最小 0000H (16个0)

段地址确定

​ 对应偏移地址最大末单元

​ 对应偏移地址最小起始单元

​ 例如:

​ 段地址确定 1000H,根据公式 段地址×16+偏移地址

​ 最小 10000H 起始

​ 最大 1FFFFH 末

段地址×16+偏移地址+大 = 最大物理地址(对应首地址)

段地址×16+偏移地址+小 = 最小物理地址(对应末地址)

段最大最小值

​ 如果段有重叠最大值是16B

​ 例如:

​ 30000H ~ 3FFFFH

​ 3001H ~ 4000FH

​ 这个段有重叠就是16B

​ 那么段没有重叠段就有64KB,段最大是64KB,最小16B

段可分为:代码段、数据段、附加段、堆栈段用于存放段基址有 4个16位段寄存器,代码段寄存器CS,数据段寄存器DS,附加段寄存器ES和堆栈段寄存器SS。

代码段:存放程序代码,程序代码超过64K时,需要分成几个段存放。CS中存放的是现在正在执行的程序段的段基址。

数据段:用于存放当前使用的数据。需要第二个数据段时可以使用附加段。

堆栈段:是内存中的一块存储区,用来存放专用数据。如调用子程序时的入口参数,返回地址等,这些数据都按照“后进先出”的规则进行存取。SS存放堆栈段的段基址,SP存放当前堆栈栈顶的偏移地址。数据进出堆栈要使用专门的堆栈操作指令,SP的值在执行堆栈操作指令时根据规则自动地进行修改。

image-20230913205424986

8086三种周期

  1. 时钟周期:
    1. 时钟周期 = 主频分之一 赫兹 = 秒分之一
    2. 定义时钟周期是按字节拍有序地进行
      1. 时钟周期是CPU最小时间单位,大小等于主频的倒数
  2. 总线周期:
    1. CPU通过外部总线对存储器或I/O端进行一次读/写操作的过程称为总线周期
      1. 解释:
        1. 为完成对存储器或I/O端口的一次访问,CPU需要先后发出存储器或I/O端口地址,发出读或写操作命令,后行数据的传输。以上的每一个操作都需要延续一个或几个时钟周期。所以,一个总线周期由若干个时钟周期(T)组成。
  3. 指令周期:
    1. 一条指令需要的时间,由若干个总线周期组成。
    2. 注意:
      1. 若干个一般都是总线周期大于等于4个时钟周期
    3. 先地址,后数据

8086CPU引脚的功能

了解

​ 引脚是CPU和外界通信的现实途径

引脚按功能分为:16条数据线、20条地址线、控制引脚

引脚有40条,数据线占16条、地址线占20条。4根引脚还需要I/O等操作,所以采用分时复用

分时复用

  1. 就是在同一根传输线上,在不同时间传送不同的信息。
  2. 8086/8088依靠分时复用技术,用40个引脚实现了众多数据、地址、控制信息的传送。
  3. 锁存器用来锁存地址,从而实现分时复用,锁存器不属于CPU内部。

分时复用:同一根线(传输地址、数据,不能遗失,所有使用锁存器),不同时间,传送不同信息。

分时复用的作用是:为了减少芯片引脚数量,对部分引脚采用分时复用的方式,构成了40条引脚的双列直插式封装分时复用

有一时刻,输出地址,使用锁存器把地址记录。交由锁存器帮CPU输出,从而替代CPU输出地址,然后这根线可以输出数据

8086CPU的引脚及功能

image-20230918191948471

8086/8088CPU有两种不同的工作模式(最小模式和最大模式,8条引脚(24~31)在两种模式中具有不同的功能)。

引脚图括号中是最大模式下被重新定义的控制信号:

  • 输出:信号从CPU向外部传送
  • 输入:信号从外部送入CPU
  • 双向:信号有时从外部送入CPU,有时从CPU向外部传送
  • 三太:除高电平、低电平两种状态之外,CPU内部还可以通过一个大的电阻,阻断内外信号的传送(高阻态),CPU内部的状态与外部相互隔离,称为"悬浮态" 或 "高阻态"。

引脚

  1. GND(地) 和 VCC(电源):供电使用(了解)

  2. AD15~AD0(address data bus):地址/数据复用引脚(双向、三态)

  3. A19/S6~A16/S3(address/status):地址复用引脚(A16到A19输出地址高四位)

  4. BHE非/S7(状态)(Bus High Enable/Status):高8位数据总线,允许引脚(区分奇偶地址)是否有用。

  5. NMI(Non Maskable Interrupt Request):非屏蔽中断引脚 (输入)

  6. INTR(Interrupt Request):可屏蔽中断请求信号(输入),由外部触发,高电平有效

    1. 中断控制信号分两种:

      1. 不可屏蔽中断控制信号
      2. 可屏蔽中断控制信号
    2. INTR:可屏蔽中断请求信号

    3. 非INTA:中断响应信号,三态,低电平有效(反馈中断响应信号)

  7. RD非(Read):读信号,三态输出,低电平有效,0表示读,1表示不读,表示当前CPU正在读存储器或I/O端口

  8. CLK (Clock)时钟输入引脚(了解)

    1. 8086要求时钟占空比为1/3,即一个周期中1/3为高电平、2/3为低电平。CPU的所有操作均是在时钟的同步下进行的。
  9. RESET(Reset):复位引脚,输入,高电平有效

    1. 8086要求复位信号至少维持4个时钟周期的高电平有效,以完成CPU内部寄存器的复位操作。
    2. 复位信号一出现,CPU立即结束当前的操作,进入复位操作,即将标志寄存器(FR)、IP、DS、SS、ES清0,指令队列清空,CS置为FFFFH。
    3. 当复位信号降为低电平后,CPU从CS:IP开始取出指令并执行它,即系统复位后执行的第一条指令的物理地址为FFFF0H。系统程序一般在物理地址单元放一条转移指令,转到引导程序的入口。
  10. READY(Ready):准备好引脚,输入,高电平有效。

  11. TEST(Test):测试引脚,输入、低电平有效 (了解)

  12. MN/MX非:最小/最大模式控制引脚,CPU输入信号

    ​ MN=+5V 非MX=0

    该引脚接+5V,则8086工作在最小模式

    该引脚接地(地=0),则8086CPU工作在最大模式

  13. DMA信号线

    1. HOLD:总线请求信号,输入,高电平有效,表示有其他设备向 CPU 请求使用总线
    2. HLDA:总线请求响应,输出,高电平有效

DMA 传输不经过 CPU,在内存和 IO 设备之间直接传输数据的方法

引脚的不同状态实现了某些指令。

四种状态,一共状态对应1个时钟周期

image-20230914213503013
  1. T1状态(送地址):
    1. CPU向多路复用总线上发送地址信息(A19~A0)指出寻址的内存地址或I/O端口地址,还要送出地址锁存信号ALE(ALE信号,告诉锁存器要记住了,这个锁存器就记住了)。
  2. T2状态(做准备):
    1. CPU从总线上撤销地址,使总线低16位呈现高阻(断开)状态,为数据传输做准备。
  3. T3状态(传输数据):
    1. 总线低16位上出现CPU需要的数据,如果外设和内存它的运行速度较慢,那么通过READY信息来查询是否需要插入等待状态(Tw),若READY等于0,需要插入等待状态,直到READY等于1,结束等待状态后,跳过T3状态。
    2. 最基本的情况下1个总线周期 = 4个时钟周期(不含等待状态Tw)
  4. T4状态(总线周期结束):
    1. 若为总线周期则在T4前沿将数据读入CPU
  5. TI状态:
    1. 总线周期空闲周期

奇偶地址体

  1. 8086走的是最小存储单元字节,那么每个地址对应的数据就是1字节
  2. 8086最小存储单元是字节,一共有20位地址线对应的就是1M,8086的寻找空间就是1MB
  3. 8086有16根数据总线,它一次可以交换2B的数据

8086有16根DB(数据线),而8088只有8根DB,那么8086怎么根8088传输数据?

  1. 8088有8根数据总线,它一次可以交换1B的数据,为了解决一次性问题,把数字整数,分成两种数:奇数和偶数,那么设计者就把地址分成两种:奇地址和偶地址,然后它把所有奇地址的数据放在一个存储器里,把所有偶地址放在另一个存储器里,然后就可以一次性传输16bit的数据了

二进制奇数最低位为1,偶数最低位为0

奇地址最低位为1,偶地址最低位为0

从而实现了一次性读写16位数据,如果要读写8位的话,我们先把16位一次性读进来,然后舍掉8位。

奇偶地址存储器分高低位

用地址线来接奇偶,数据线接对应的存储体。

注意:

  1. 地址总线区分奇偶地址,数据总线负责取走里面的数据。
  2. 偶地址只能走D0~D7(低8位),奇地址只能走D8到D15(高8位)
  3. 取数一次性只能正向取数,就是先偶后奇,在偶在奇,取数

结论:

  1. 从偶地址开始取1个字节,只需要一次总线周期
  2. 从奇地址开始取字节,只需要一次总线周期
  3. 从偶地址开始取2个字节,需要一个总线周期
  4. 从奇地址开始取2个字节,需要用2次总线
  5. 从偶地址开始的字,叫做规则字
  6. 从奇地址开始的字,叫做非规范字
D15~D8D7~D0总线次数
只要1000H(偶)×(1000H)√(1000H)1次
只要1000H(奇)√(1000H)×(1000H)1次
要1001H和1002H(2字节)偶√(1001H)√(1001H)一个周期
要1001H和1002H(2字节)√(奇1001H)和×(偶1002H)×(1000H)和√(偶1002H)2次

有控制D15~D8,还要D7到D0,要与不要的两个引脚

D15~D8(高位):BHE非

D7~D0(低位):A0(A0就是地址总线的A0)

BHE非(高8位数据是否有效):上面的横表示0有效,低电平有效,BHE有效的时候它就是0,无效的时候它就是1

ALE:上面没有横就是1有效,0无效

A0=0(偶) A0=1(奇)

高8位数据线是否有效D15~D18(BHE非)D7~D0(A0)
偶(字节)1(无效)0
奇(字节)0(有效)1
(规则字)偶(字)0(有效)0
(非规则字)奇(字)①奇字节 0 ②偶字节 11(奇字节) 0(偶字节)

如何判断奇偶地址

  • 尾数是1、3、5、7 、9 、B、D、F 奇地址,剩余的全是偶地址
    • ABCDH 奇地址 789AH 偶地址

8086系统内存地址的一些专用区域

0000~003FFH:1KB空间用于存放中断向量表,可存放256个中断服务程序的入口地址,每个地址占4个字节

FFFF0H:启动地址,一般用来存放一条无条件转移指令,转到系统初始化程序。

8086 I/O组织

8086系统有专用的输入(IN)、输出(OUT)指令,用于外设端口(即外设接口中的内部寄存器)的寻址。

I/O端口与内存分别独立编址。内存有20AB,所以寻址空间就是1MB。I/O端口(有16AB)使用16位地址A15~A0,I/O端口地址范围为0000H到FFFFH,可寻址空间为64KB。

8086的系统配置

最大模式和最小模式的概念

  • 8086/8088 CPU为适应不同的应用环境。8086可工作于两种工作模式:最大模式和最小模式
    • 最小模式:是指系统中只有一个8086/8088处理器,所有的总线控制信号都由8086/8088 CPU直接产生,构成系统所需的总线控制逻辑部件,最小模式因此得名。最小模式也称单处理模式。

最小模式下的系统控制信号

  • M/IO非:存储器或I/O端口,访问选择信号,三态输出(指示访问存储器还是I/O端口)
    • 为高电平时,表示当前CPU正在访问存储器。
    • 为低电平时,表示CPU当前正在访问I/O端口。
  • RD非(Read):读信号,三态输出,低电平有效,0表示读,1表示不读,表示当前CPU正在读存储器或I/O端口
  • WR非 (Write) : 写信号,为0写,为1不写,三太输出,低电平有效,表示当前CPU正在写存储器或 I/O 端口上。

M/IO非 、 WR非、RD非 合起来决定系统中数据传输的方向。

ALE(Address Latch Enable) : 地址锁存允许信号,输出,高电平有效(地址出现的时候,ALE出现,地址消失的时候,ALE消失)

DEN非(Data Enable):数据允许信号,三态输出,低电平有效(跟数据共存亡)

DT/R非 (Data Transmit/Receive):数据发送/接收控制信号,三态输出,为1发送,为0表示接收。

中断控制信号引脚

中断是外部设备请求CPU进行数据传输的有效方法。这一组引脚传输中断的请求和应答信号。

  • INTR:可屏蔽中断请求信号
  • 非INTA:中断响应信号,三态,低电平有效(反馈中断响应信号)
  • NMI:不可屏蔽中断请求信号。

最小模式和最大模式的区别

  1. 最大模式只有一个控制器,最小模式没有控制器
  2. 百分之99,都是最小模式

DMI控制信号引脚

DMA传输是一种不经过CPU,在内存和I/O设备之间直接传输数据的方法。进行DMA传输之前要向CPU申请使用总线并取得认可。

  1. HOLD (Hold Request):总线请求信号,输入,高电平有效,表示有其他设备向CPU请求使用总线。
  2. HLDA (Hold Acknowledge):总线请求响应信号。输出,高电平有效。

常用的最小模式控制总线信号归纳如下:

  • 控制存储器/IO端口读写的信号:
    • M/IO非,RD非,WR非,BHE非,DEN非,DT/R非,READY。
  • 用于中断联络和控制的信号:
    • INTR非,INTA非 , NMI非。
  • 用于DMA联络和控制的信号:
    • HOLD,HLDA。

最小模式下的总线周期

image-20230918202145106

最大模式和最小模式

**最小模式:**是指系统中只有一个 8088/8086 处理器,所有的总线控制信号由 8086/8088 产生的,构成系统所需的总线控制逻辑部件最少,最小模式也称 “单处理器模式”

**最大模式:**系统内可以有一个以上处理器,除了 8086/8088 作为 “中央处理器”外,还可以配置用于数值计算的 8087(数值处理器) 和用于IO管理的8089(IO协处理器) 等,各处理器发往总线的命令统一送往 “总线控制器”,由它 “仲裁” 后发出,8288(总线控制器) 8289(总线仲裁器) 8087(总线收发器)

最大模式配置:

8086最大模式:

  1. 协处理器:
    1. 8087(浮点处理器)
    2. 8082(总线控制器)
    3. 8089(总线仲裁器)

协处理器:8087(浮点处理器)、8082(总线控制器)、8089(总线仲裁器)

最小模式下的典型配置:

需要3个锁存器8282、2个驱动器8086、一个时钟发生器8084

8086最小模式的典型配置:

  1. 一片8086(20条AB、16条DB、主频各种芯片8位)
  2. 20条的地址锁存器(3片)
  3. 16条数据线(会考虑到电平配平的问题:数据收发器或总线驱动器2片(8286、74xxx24/5))
  4. 时钟源(时钟发生器8284)
  5. 地址锁存器:
    1. 8282
    2. 74xx273
    3. 74xx373