640 likes | 914 Views
8086 微处理器. 第二章 8086 微处理器. 指令执行过程. 第 2.1 节 INTEL8086 内部结构 指令的执行过程 取指令 指令译码 指令执行,在指令执行时根据需 要在存储器中取操作数。 8 位微处理器:按照这三步循环工作每次需到存储 器取指令。 16 位微处理器: 8086 微处理器采用预取指令技术 。 预取指令技术 提前将指令从存储器取到 CPU 内,每次执行时直接从 CPU 内 部获得指令。. 预取指令缓冲队列. 预取指令缓冲队列( ISQ )
E N D
8086微处理器 第二章 8086微处理器
指令执行过程 第2.1节 INTEL8086内部结构 • 指令的执行过程 取指令 指令译码 指令执行,在指令执行时根据需 要在存储器中取操作数。 • 8位微处理器:按照这三步循环工作每次需到存储 器取指令。 • 16位微处理器:8086微处理器采用预取指令技术。 • 预取指令技术 提前将指令从存储器取到CPU内,每次执行时直接从CPU内 部获得指令。
预取指令缓冲队列 • 预取指令缓冲队列(ISQ) Intel 8086(8088)设置有6(4)个字节的ISQ,当ISQ中出现2(1)个字节空时,CPU中的总线接口单元将自动完成指令填充,当遇到分支、跳转、子程序调用等情况时,ISQ会自动清空,并从新的程序位置取出指令进行填充。 • 80486中带有8K数据和指令统一的Cache • Pentium中带有独立的指令Cache和数据Cache。
队列尾部 队列头部 栈顶,由 堆栈指针 指示 84H 83H 82H 81H 堆栈段地址 队列结构示意图 堆栈结构示意图 堆栈和队列 • 堆栈和队列 • 堆栈(Stack):按照后进先出(LIFO)的原则组织的存 储器空间。 • 队列(Queue):按照先进先出(FIFO)的原则组织的 存储器空间。
AL AX AH BH BL BX CX CH CL DX DH DL CS SP DS BP SS SI ES DI IP 暂存器 总线 控制 暂存器 EU 逻辑 控 制 ALU 1 2 3 4 5 6 指令队列 FLAG (BIU)总线接口单元 (EU)执行单元 8086微处理器内部结构 • 8086微处理器内部结构 8086微处理器内 部分为执行单元和总 线接口单元两部分。 • 执行单元(EU- Execution Unit):负 责指令的译码和执行 • 总线接口单元 (BIU-Bus Interface Unit):与系统总线连 接,实现与存储器、 I/O口之间的数据传送
总线接口单元BIU (一)总线接口单元(BIU) • 4个16位段地址寄存器 • CS (Code Segment) —代码段寄存器 • DS (Data Segment) —数据段寄存器 • SS (Stack Segment) —堆栈段寄存器 • ES (Extra Segment) —扩展段寄存器 8086对存储器采用分段管理,4个段寄存器分别用于存放4个当前段的起始地址,又称作段基址寄存器。 • 16位指令指针寄存器 IP (Instruction Pointer) IP始终指向当前代码段(CS)所要取出的下一条指令的地址。每取出一个字节指令后,IP自动加1。可以用转移指令、调用指令及中断和复位等改变IP值。
总线接口单元BIU • 形成20位物理地址的加法器∑ • 段地址左移4位+段内偏移量—〉20位实际物理地址 • 段地址*16+段内偏移量—〉20位实际物理地址 例:CS的内容是CFFFH,IP的内容是1234H, 则加法器生成的实际物理地址是 CFFF0+01234=D1224H • 6个字节的指令队列(ISQ) • 与EU通信的内部寄存器 • 总线控制逻辑
执行单元 (二)执行单元(EU) • 16位算术逻辑单元ALU • 4个16位数据寄存器 AX、BX、CX、DX,又可以分为8个8位寄存器使用 AH、AL、BH、BL、CH、CL、DH、DL 数据寄存器用于存放操作数及中间结果,AX和AL可用作累加操作,因此又可称作累加器。 • 4个16位地址指针寄存器 • SP (Stack Pointer)—堆栈指针寄存器 • BP (Base Pointer) —基址指针寄存器 • SI (Source Index) —源变址寄存器 • DI (Destination Index)—目的变址寄存器 地址指针寄存器用于存放操作数的地址,编程时通过修改寄存器的内容达到修改地址的目的。
寄存器使用特殊说明 • 寄存器使用特殊说明: • SP — 总是指示堆栈段中的栈顶位置,专门用于数据进 栈和出栈的位置指示,只能与SS配对使用。 • BP —指示堆栈段中一个数据区的基址位置,通常与SS配 对使用。 • SI —在串操作时用作指示源串地址。 • DI —在串操作时用作指示目标串地址。 ************************************************* • BX —既可用作数据寄存器,也可用作基址指针寄存 器,此时通常与DS配对使用。 • SP、BP、SI、DI既可指示地址,也可以用作数据寄存器,存放操作数及中间结果。
执行单元 • 16位数据暂存器 • EU控制电路 • 16位状态标志寄存器 FLAG 6个状态标志,3个控制标志IF、DF、TF,剩下7位保留 状态标志: • CF —进(借)位标志,若运算结果最高位产生进 位或借位则CF置“1”,否则置“0” • AF —辅助进位标志,若低字节的第4位向上产生一 个进位或借位,则AF置“1”,否则置“0”
标志寄存器 • ZF —零标志位, 若运算结果为零, 则ZF置“1”,否则 置“0” • SF — 符号标志位,若算数运算的结果为负,SF置“1”, 否则置“0” • OF — 溢出标志位,有符号数算术运算结果产生溢出,OF 置“1”,否则置“0” • PF —奇偶标志位,逻辑运算中低8位所含1的个数为偶 数则PF置“1”,否则置“0” 控制标志: • DF —方向标志位 • DF=1 串操作指令以递减顺序处理数据串 • DF=0 串操作指令以递增顺序处理数据串
状态标志寄存器举例: • 0101 0100 0011 1001 • + 0100 0101 0110 1010 • 1001 1001 1010 0011 • 运算后 CF=0 PF=1 OF=1 OF=Cs Cp=1 • AF=1 ZF=0 SF=1 标志寄存器 • IF —中断允许标志 • IF=1 CPU允许接收外部可屏蔽中断请求,即开中断 • IF=0 关中断 • TF —跟踪标志位 • TF=1 处理器处于单步工作方式时,每执行完一条指令 产生一个软件中断 • TF=0 正常工作
BIU和EU的功能 (三)总线接口部件(BIU)和执行部件(EU)的功能 • 指令队列中出现两个字节为空时自动按CS值和IP值组成20位实际物理地址到存储器中取指令,一次取两个字节指令存放到指令队列中 • EU从BIU指令队列中读取指令 • 由EU控制电路对指令进行译码分析,指出操作性质及操作对象 • EU执行指令,如果执行指令时必需访问存储器或者I/O端口,则在EU中计算出操作数的16位地址偏移量送给BIU,由BIU的∑形成20位绝对地址 • BIU根据EU请求,将操作数的20位物理地址传递给存储器 • BIU取来操作数经总线控制逻辑传送到内部EU数据总线
BIU和EU的功能 • EU将取来的操作数从内部总线送入ALU,进行指令指定的操作 • EU运算出的结果,经内部总线送到指定的位置,若需要传送给存储器,则由EU请求BIU产生20位实际目标地址,将结果写入存储器
存储器和I/O管理 (四)存储器和I/O管理 Intel 8086为标准的16位微处理器,20根地址总线管理 1MB的存储空间,用低16根地址总线来管理64K的I/O端口地址。 所谓端口,是指I/O接口电路中可被访问的存储单元。8086 只使用1KB的I/O端口地址,即只需用低10根地址总线进行管理. • 存储器的分段管理 由于8086内部寄存器和ALU均是16位,为了方便20位地址管 理,在8086对存储器的管理设计中,采用了分段管理技术。
代码段 代码段段基址(CS) 堆栈段 堆栈段段基址(SS) 扩展段 每段地 址空间 最大64K 扩展段段基址(ES) 数据段内偏移地址 数据段 数据段段基址(DS) 分段管理技术 • 分段管理技术 8086把1MB的存储器按照使用需要分成若干段,每段的大小不超过64K(2^16),把每段起始位置的20位实际物理地址中的高16位称为段地址(段基址),每段中某个存储单元距段起始位置的偏移量称为偏移地址。段地址和偏移地址合称为逻辑地址。
逻辑地址与物理地址 • 逻辑地址与实际物理地址 • 对存储器中任一位置的访问都是在该位置所属段的段基址下进行的: 逻辑地址形式为 段基址:段内偏移 (物理地址)20 = (段基址)*16+ (段内偏移) 或 (物理地址)20 = 段基址左移4位 +段内偏移 如访问一个地址C85F:109A,对应的实际地址为: C85F0+109A=C968AH • 同一个实际物理地址可以采取不同的逻辑地址形式表示,即不同段可以相互重叠或重合,但段内地址连续。 例如:地址12345H可以表示为1200:0345 或 1230:0045
I/O端口地址管理 • I/O端口地址管理 8086对I/O端口操作,需要专门的IN、OUT指令,并且只能 通过累加器(AX/AL)来完成。 存储器和I/O端口分别独立编址 存储器的地址范围是00000 – 0FFFFFH I/O端口的地址范围是0000 – 0FFFFH • C语言中局部变量分配在堆栈段,全局变量分配在数据段
段超越 (四)段超越 段寄存器(CS、DS、ES、SS)与地址指针寄存器(SP、BP、 SI、DI)默认是隐含配对使用,但也允许段超越。
MN/MX MN/MX MN/MX 8086引脚信号和工作模式 第2.2节 8086引脚信号和工作模式 • 8086引脚信号和功能 • 20根AB/16根DB分时复用;先传地址,后传数据 • 两种工作模式,由 引脚决定 • 最小模式:系统中只有一个处理器; 为高电平 • 最大模式:系统中包括两个或多个处理器; 为低电平 不同模式下,部分引脚定义不同
8086引脚图 (一)8086引脚图 8086 CPU为40pin 双列直插(DIP)封装
最小模式引脚信号 (二)最小模式下引脚信号和功能 • AD0 ~ AD15: 地址数据复用总线 双向,三态,高电平有效。分时传送16位数据和地址的低16位。由ALE锁存地址信息。 • A16/S3 ~ A19/S6: 地址状态复用引脚 输出,三态,高电平有效。分时输出地址的高4位或CPU当前状态。地址信息由ALE锁存。 • BHE/S7:高8位数据总线允许/状态复用引脚 输出,三态,低电平有效。BHE为低电平表示高8位数据线D15~D8上数据有效,BHE由ALE锁存。BHE和A0可用于分别选中奇偶地址,并控制读/写一个字或者字节。
引脚信号和功能 • ALE: 地址锁存允许信号 输出、高电平有效。表示总线上的信息是地址信息。 • M/IO: 存储器/输入输出口控制信号 输出,三态。高电平表示当前的信息是存储器地址信 息;低电平表示当前的信息是I/O口地址信息。 • RD: 读信号 输出,三态,低电平有效。表示CPU正在从存储器或I/O口读入信息。 • WR: 写信号 输出,三态,低电平有效。表示CPU正向存储器或I/O口输出数据。
引脚信号和功能 • DT/R: 数据收发信号 输出,三态,高电平表示CPU正在发送数据;低电平表示CPU接收数据 • DEN: 数据允许信号 输出,三态,低电平有效。表示CPU正在进行数据收发操作 • INTR: 可屏蔽中断请求信号 输入,高电平有效。表示外部向CPU提出中断申请。 • INTA: 中断响应信号 输出,低电平有效。表示外设的中断申请得到响应。 • NMI: 非屏蔽中断申请信号 输入,上升沿有效。表示外部有非屏蔽中断申请。非屏蔽中断不受软件控制,CPU必须响应。
引脚信号和功能 • HOLD: 总线保持请求信号 输入,高电平有效。表示其他模块(如DMAC)申请占用总线 • HLDA: 总线保持响应信号 输出,高电平有效。表示CPU已让出总线。 • READY:准备好信号 输入,高电平有效。高电平表示存储器或I/O口已准备好接 收数据,外部使READY为低电平CPU要插入等待周期。 • TEST: 测试信号 输入,低电平有效。有效时CPU退出WAIT指令。
引脚信号和功能 • RESET: 复位信号 输入,高电平有效,至少保持4个时钟周期的高电平。复位时CPU停止现行操作,并开始进行初始化: 标志寄存器FLAG,IP,DS,SS,ES及指令队列均清零; CS设置为FFFFH,复位结束时CPU从FFFF0H开始执行程序 • CLK: 时钟信号 8086 4.77MHZ T=210ns;单相,占空比为1/3。 • VCC,GND: 电源及地 单+5V,满足TTL规范
最大模式引脚信号 (三)最大模式下引脚信号和功能 最大模式下8086有8个控制信号被重新定义,此时系统中可接入协处理器8087或8089。 • S2,S1,S0:总线周期状态信号 输出,三个信号组合产生系统控制信号,由总线控制器8288译码。
最大模式引脚信号 • LOCK:总线封锁信号 三态,输出,低电平有效。有效时禁止其他部件占用总线。 • RQ0/GT0,RQ1/GT1:总线请求/允许信号 双向,低电平有效。有两个总线请求与总线响应信号,支持多处理器工作。 • QS1,QS0:指令队列状态信号 输出,两个信号组合指示指令队列状态。
最小和最大模式引脚对比 • 最小和最大模式下不同定义引脚对比 最小模式 最大模式 • HOLD RQ0/GT0 • HLDA RQ1/GT1 • WR LOCK • M/IO S2 • DT/R S1 • DEN S0 • ALE QS0 • INTA QS1
8086与8088的区别 • 8086与8088在引脚上的区别 8086微处理器 8088微处理器 16位AB复用 8位AB复用 BHE高八位数据允许 SS0/高电平 M/IO引脚选择存储器/IO口 M/IO引脚选择存储器/IO口
最小模式下系统总线连接 • 系统总线 (一)最小模式下系统总线 • 最小模式下的系统总线连接
Intel 8282 和 Intel 8286 • 最小模式系统总线连接说明 • Intel 8282 把AD复用引脚连接到地址总线上的8位地址锁存器。 在最小系统中,由3片8282(低电平锁存,功能同 74LS373)锁存地址A0~A19和BHE。ALE为锁存信号。 • Intel 8286 把AD复用引脚连接到数据总线上的8位数据缓冲器。在最小系统中,由2片8286(双向缓冲器,功能同74LS245)做数据总线D15~D0的缓冲器,DT/R做方向选择,DEN为选通信号。
读/写控制 • 控制信号M/IO、RD和WR完成信息传递控制。组合起来完成右面的控制。 有时也作以下处理
中断申请和总线保持信号 • 中断控制信号INTR、INTA、NMI • INTR: 外部可屏蔽中断请求引脚,高电平有效 • INTA: 中断响应信号,低电平有效 • NMI: 不可屏蔽中断请求引脚,上升沿有效 • 总线控制信号HOLD、HLDA • HOLD:总线保持请求引脚,高电平有效 • HLDA:总线保持响应引脚,高电平有效 • HLDA控制8282的OE,当CPU总线保持响应时让出总线
BHE BHE 8282 地址总线 A19~A16 A19~A16 STB OE AEN_8237 STB A15~A0 8282 A15~A0 OE AEN_8237 (2) D15 OE 数据总线 8286 ~ 8086 (2) D0 DIR MN/MX DEN ALE DT/R INTA INTA 8288 MEMR MRDC S0 S0 MEMW MWTC S1 S1 IOR IORC S2 S2 IOW IOWC INTR INTR NMI NMI 最大模式下系统总线连接 (二)最大模式下系统总线 • 最大模式下系统总线的连接
8288引脚图 总线控制器8288 • 总线控制器8288 8288根据8086 CPU在最大模式的状态信号S2、S1、S0建立控制时序。
8288内部功能框图 • 8288内部功能框图 8288共有2组输入信号和2组 输出信号。
8288引脚信号 • 8288引脚信号说明 • 状态输入信号:S2、S1、S0用于接收CPU的状态信息。 • 控制输入信号: • CLK:系统时钟输入引脚,使得8288与CPU及整个系 统同步。 • AEN:芯片工作允许,低电平有效。多处理器系统中 由总线仲裁器控制8288工作。单处理器中, AEN直接接地。 • CEN:片选信号,CEN为高电平允许8288工作,否则 禁止工作。 • IOB:工作方式选择,IOB接地,8288为单处理器工 作方式;IOB接+5V为多处理器工作方式。
8288引脚信号 • 控制输出信号 • ALE、DT/R、DEN 与最小模式下信号相同,仅DEN极性相反,用于锁存地址和数据总线缓冲。 • MCE/PDEN 总线主模块允许/外设数据允许 • 单处理器工作时为MCE,用于控制主从方式时工作芯片间的协调工作。 • 多处理器系统中为PDEN,作数据总线收发器的开启信号。
8288引脚信号 • 输出命令信号 • MRDC 读存储器 此信号用来通知存储器将所寻址的存储器单元中的数据送到数据总线上。 • MWTC 写存储器 此信号用来通知存储器接收数据总线上的数据,并将数据写入所寻址的单元中。 • IORC 读I/O口 此信号用来通知I/O接口将所寻址的端口中的数据送到数据总线。
8288引脚信号 • IOWC 写I/O 此信号用来通知I/O接口接收数据总线上的数据,并将数据送到所寻址的端口中。 • AMWC 提前写存储器命令 功能与MWTC完全一样,只是比MWTC命令提前一个时钟周期发出。 • AIOWC 提前写I/O口命令 功能与IOWC完全一样,只是比IOWC命令提前一个时钟周期发出。 AMWC和AIOWC命令是为了让一些较慢的设备或存储器能够得到一个额外的时钟周期去执行写入操作。 • INTA 可屏蔽中断响应信号 与最小模式下含义相同
最大模式下连接说明 • 最大模式下系统总线连接说明 • 8086的S0,S1,S2连接8288,由8288译码产生总线控制 MEMR: 存储器读信号 MEMW: 存储器写信号 IOR: I/O读信号 IOW: I/O写信号 INTA: 中断响应信号 • 由8288产生ALE信号,锁存地址A19~A0和BHE信号 • 由8288产生的DT/R控制缓冲器8286的数据传输方向,由DEN和INTA任一有效打开三态门。 • INTR和NMI与小模式相同
最大模式下连接说明 • 8288的AEN和IOB接地,CEN接+5V • 三片8282的OE端: 在有DMA芯片(8237)的系统中,接AEN_8237,DMA占用总线时,在AEN_8237上输出高电平,禁止CPU占用AB 在没有DMA芯片的系统中直接接地, • 最小模式下的HOLD和HLDA信号在最大模式下变成了RQ0/GT0、RQ1/GT1。
最大模式下连接说明 • 8086和8088在工作电路上的区别 • 最小模式 • M/IO和M/IO不同,前者为8086的信号,后者为8088的信号。 • BHE引脚为状态引脚SS0; • 8286用一片即可 • 最大模式 • BHE不用,接为高电平 • 8286用一片即可
Intel 8284 第2.3节 8086操作时序 • Intel 8284及系统时钟电路 (一)时钟发生器Intel 8284 • Intel 8284引脚图 8086/8088内部无时钟发 生器,所使用时钟由8284提供
RES D RESET Q C X1 时钟 OSC 震荡器 X2 PCLK 1/3 F/C 1/2 EFI CSYNC RDY1 CLK AEN1 C C RDY2 Q Q D D READY AEN2 ASYNC 8284内部逻辑图 • 8284内部逻辑图
8284引脚功能 • 8284引脚及功能 • 时钟信号 • X1、X2:内部震荡器,外接晶体即可震荡。 • EFI:外部时钟输入端 • F/C:时钟选择端,高电平选择外时钟,低电平选择 内时钟 • OSC: 内部时钟同频信号。 • PCLK:输入时钟6分频信号,占空比1/2 • CLK: 输入时钟3分频信号,占空比为1/3。为8086 提供时钟 • CSYNC:外部时钟同频信号。使用内部时钟时, CSYNC接地;若CSYNC为高电平,则8284内部 逻辑停止输出。
8284引脚功能 8284所产生的信号有三个:OSC、CLK、PCLK。在多CPU系统中,需要使所有的时钟同步,因此设置了CSYNC • 复位逻辑 输入RES经斯密特触发器整形后,由系统时钟同步产生RESET信号,给计算机系统复位。 • 准备好控制逻辑(输出READY信号) 准备好控制电路有两组控制信号RDY1.AEN1和RDY2.AEN2,由ASYNC控制是否多插入一个时钟周期。ASYNC为低电平时,则多插入一个时钟周期。 RDY1、RDY2:外设准备好输入信号 AEN1、AEN2:允许外设工作信号 ASYNC:同步级数选择信号
PWRGOOD RESET RES RESET READY RDY1 READY DMAWAIT CLK AEN1 CLK RDY/WAIT 510 F/C X1 ASYNC 8284 8086 510 RDY2 X2 AEN2 +5V 14.31818MHZ PCLK OSC 输出到系统其他部件 8086时钟电路 (二)8086时钟电路 电路说明: • 时钟使用8284片内震荡器,晶振为14.31818MHZ。8086 CPU时钟为4.77MHZ。OSC和PCLK供系统其他部件使用