第二章 微处理器与系统结构
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2、EU执行单元
组成:ALU、状态与标志寄存器、8个通用寄存 器、暂存器、队列控制逻辑与时序控制逻辑(EU控 制器)等; 完成工作:指令译码与执行指令; EU从BIU的指令队列输出端取得指令,对指令的 代码进行译码,产生操作数地址(若需要的话)并将 其传送给BIU,向BIU申请完成存储器或I/O的读/写 总线周期,对操作数进行指令规定的操作。 EU没有连接到总线上,所以对系统总线来说, 它是“外界”的。
通常,这4个16位通用寄存器都可以作累加器使用, 用于暂存16位的操作数,其中AX为主累加器。它们的 内容既可以用作算术逻辑运算的源操作数,也可用作目 的操作数。 虽然是通用寄存器,但在执行不同的指令时,也有 专门的用途。表2.1列出了8086通用寄存器的专门用法。
2、指针和变址寄存器 8086的指针和变 址寄存器由4个16位 的寄存器SP、BP、 SI和DI组成。 这些寄存器通常存放的内容是在某一个 段内的偏移量。 两个指针寄存器SP与BP用于访问堆栈段中的数据。 在16位算术逻辑运算中,它们也可作为操作数使用。 SP (Stack Pointer)称为堆栈指针,它指示当前堆 栈栈顶的地址的偏移量,在存储器寻址中,凡涉及到 SP寄存器则使用寄存器SS作为段寄存器。 BP (Base Pointer)称为基址指针,它用来指示现行 堆栈段的一个数据区的“基址”偏移量,这个寄存器主 要用来访问堆栈段中的数据。
取指令与执行指令操作是并行的,提高了CPU的 利用率,这种重叠操作技术,提高了整个系统的运行 速度。
8086CPU的功能结构
AH BH CH DH SP BP DI SI
内部数据总线
AL BL CL DL
AX BX CX DX
地址 加法器
20位地址总线
16位 数据线
CS DS SS ES IP 内部通信寄存器 8086 总线
2.2.3 8086 CPU的引脚及其功能
8086CPU采用40条引线封装,引脚安排如图所示。
GND AD14 AD13 AD12 AD11 AD10 AD9 AD8 AD7 AD6 AD5 AD4 AD3 AD2 AD1 AD0 NMI INTR CLK GND 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 VCC AD15 AD16/S3 AD17/S4 AD18/S5 AD19/S6 BHE/S7 MN/MX RD HOLD (RQ/GT0) HLDA (RQ/GT1) WR (LOCK) M/IO (S0) DT/R (S1) (S2) DEN ALE (QS0) (QS1) INTA TEST READY RESET
2.2 Intel 8086微处理器
8086单片微处理器芯片 内外数据总线16位,对外40 条引脚。主时钟8086为5MHz、 8086-2为8MHz、8086-1为 10MHz。 20条地址引脚,直接寻 址220=1MByte,可访问64K 个I/O端口。具有24种寻址 方式,可以对字节、字、字 符串、字串、组合的和未组 合的BCD码、ASCII码等多种 数据类型进行处理。
8086系统中存储器的结构
每个存储体 内部只需19 位地址码 16进制地址
这样在8086系统中访问存储器可读写一个字节(8位) 的信息,也可读写一个字(16位)的信息。需增设总线高 位有效信号BHE。BHE有效时,选定奇地址存储体,与 A0配合作用,体内地址由A19~A1确定。
字节读取 MOV AL ,[3000H]
3、段寄存器 8086中有4个16位段 寄存器。 每个段寄存器在8086存储器寻址空间中规定了64KB 的存储器块。该64KB存储器块叫做段寄存器的当前段。 CS(Code Segment)称作代码段寄存器。在每 条指令的取指期间,指令指针IP的内容加上CS寄存器 (左移4位)的内容作为被取的指令所在的存储器地址。 例如,如果CS=11DAH,而IP=0100H,则将要取出 的指令在内存11EA0H单元。因为:
标志寄存器(FR:Flag Register)将在后面详细介绍。
2.2.2 8086 CPU 的功能结构
8086 CPU 按功能可分为两大部分:
一部分为BIU ( BUS Interface Unit ) ; 专门负责取指令和存取操作数。它与BUS打交道。
一部分为EU ( Execution Unit )。 专门负责分析指令与执行指令。它不与系统BUS 打交道。
DS (Data Segment ) 称作数据段寄存器。对数据存 储器的访问都是相对于数据段寄存器。有三个例外: 利用SP计算堆栈地址; 使用BP计算数据存储器地址,均是相对于堆栈; 字符串操作(使用DI计算地址)均是相对于附加段。 SS (Stack Segment ) 叫做堆栈段寄存器。在地址 计算中使用SP或BP访问所有的数据存储器均是相对于 SS段寄存器。因此所有面向堆栈的指令 (例如PUSH、 POP,CALL、INT)均利用SS作为段寄存器。 ES (Extra Segment ) 叫做附加段寄存器。在字符串 操作中,利用DI计算存储器地址、均是相对ES段寄存 器。
9.INTA ( Interrupt Acknowledge) 中断响应信号。向外部输出,低电平有效,表示CPU 响应了外部发来的INTR信号,在中断响应总线周期,可 用来作读选通信号。 10.NMI ( Non-Maskable Interrupt Request ) 不可屏蔽中断请求信号。由外部输入,边沿触发, 正跳沿有效,不受中断允许标志的限制。CPU一旦测试 到NMI请求有效,待当前指令执行完就自动从中断入口 地址表中找到类型2中断服务程序的入口地址,并转去 执行。显然这是一种比INTR高级的中断请求。
4、指令指针IP和标志寄存器FR
16位的指令指针(IP:Instruction,Pointer),其功 能和一般的CPU中的程序计数器( PC )类似,它由8086 的总线接口部件BIU修改,总是包含下一条要取的指令 在当前代码段中的偏移量,即IP总是指向下一条待取的 指令。 IP与PC略有差别,8086中IP要与CS配合才能 形成真正的物理地址。
4.RD (Read) 读信号。三态输出,低电平有效,表示当前CPU正 在读存储器或 I / O 端口。
5.WR (Write) 写信号。三态输出,低电平有效,表示当前CPU正 在写存储器或 I / O 端口。
8086系统中存储器也是按字节编址,可寻址的存储 器空间为 l M字节(220字节),访问存储器中任何一个字 节,应给出20位的物理地址。
字读取 MOV AX ,[3000H]
6.M / IO ( Memory / IO) 存储器或I/O端口访问信号。三态输出, M / IO为 高电平时,表示当前CPU正在访问存储器; M / IO为低 电平时,表示CPU当前正在访问I / O端口。 7.READY 准备就绪信号。由外部输入,高电平有效.表示CPU 访问的存储器或I /O端口已准备好传送数据。当READY 无效时,要求CPU插入一个或多个等待周期TW,直到 READY信号有效为止。 8.INTR ( Interrupt Request ) 中断请求信号。由外部输入,电平触发,高电平有 效。INTR有效时,表示外部向CPU 发出中断请求。 CPU在每条指令的最后一个时钟周期对INTR进行测试, 一旦测试到有中断请求,并且当前中断允许标志IF=1时, 则暂停执行下条指令转入中断响应周期。
两个变址寄存器SI与DI用于访问数据存储器中的数 据。这些寄存器广泛地用于字符串操作。 串操作指令经常要求一个源操作数和一个目的操作 数,源操作数的地址偏移量放在SI中,目的操作数的地 址偏移量放在DI中,所以SI与DI分别称作源变址寄存器 和目的变址寄存器。 SI和DI对应的段地址寄存器分别为DS与ES,在使用 串操作指令时不能混淆。 SI与DI也可以在所有16位算术逻辑运算中作为操作 数使用。
S4 S3
0 0 0 1 1 0 1 1
段寄存器
ES SS CS(I/O、INT) DS
3.BHE/S7 (Bus High Enable / Status) 总线高位有效/状态输出信号。三态输出,低电平 有效,用来表示当前高8位数据总线上的数据有效。读 /写存储器或 I / O端口以及中断响应时,BHE用来作选 体信号,与最低位地址码A0配合,表示当前总线使用情 况。非数据传送期间,S7输出状态信息。
总线 控制 逻辑
暂存器 EU 控制器
ALU
1 2
3 4
5
6
指令队列 标志寄存器
执行单元(EU) 图2.5
总线接口单元(BIU)
8086的功能结构
早期的8位计算机取指令、执行指令是按照时间顺 序进行的,而8086 CPU 是二者并行同时操作的。
1、BIU总线接口单元
8086CPU与外设的接口部件,提供16位数据总线 与20位地址总线。 内部由段寄存器、IP、内部通信寄存器、指令队列、 地址加法器和总线控制逻辑等组成;
11.TEST 测试信号。由外部输入,低电平有效。当CPU执 行WAIT指令时,每隔5个时钟周期对TEST进行一次测 试,若测试TEST无效,则CPU处于踏步等待状态,直到 TEST有效, CPU才继续执行下一条指令。
பைடு நூலகம்
完成取指令、指令排队、读/写操作数、地址转换
与总线控制等工作; 指令队列为先进先出的原则组织FIFO ( First In First Out ),实现流水线操作,高性能CPU更是如此。 8086有6个Byte指令队列,需要两个指针,OUT 与IN指针。
当遇到BIU正准备取指令而EU→BIU申请读/写 MEM或I/O时,则先取指令,后读/写操作数;
当队列中当前有两个字节空间时,BIU顺序预取指 令并填满队列; 当遇到CALL、INT n等指令时,先把IP压入堆栈, 再清除队列,再重新取满队列; 当遇到JMP等指令时,清除队列,再重新取满队 列。 BIU有一个专用的地址加法器,用来产生20位的 物理地址,它的输出直接送往地址总线。20位物理地 址由16位段基地址(最低位补4个0)加上16位的偏移量 产生。 BIU还负责产生总线控制信号,例如存储器读/写、 I/O口读/写的控制信号。
8086 CPU
最 大 组 态 信 号
图2.8
8086CPU对外引脚
1. AD15~AD0 (Address Data Bus) 分时复用的地址数据总线。传送地址时三态输出, 传送数据时可双向三态输入/输出。
2.A19/S6,A18/S5,A17/S4,A16/S3 (Address/Status) 分时复用的地址/状态线。作地址线用时,A19 ~ A16与 AD15~AD0一起构成访问存储器的20位物理地址。 当CPU访问I / O 端口时,A19~A16保持为 “0”。 作状态线用时,S6~S3 用来输出状态信息。如: S5用来表示中断标志状态线, 当IF=1时,S5置“1”。 S6恒保持为“0 ”。
2.2.1 8086的寄存器结构
8086CPU内有四 组寄存器: 第一组是通用寄存器 组,用来存放数据和运 算的中间结果; 第二组是指针和变址 寄存器组,用来在存储 器的规定段中给出地址 偏移量; 第三组是段寄存器, 提供现行可寻址存储器 的段基地址; 第四组是控制寄存器。
1、通用寄存器
为了提高8086的运算速度,其内部设置了4个16位 的通用奇存器AX,BX,CX,DX。每个寄存器既可以 作为一个16位寄存器使用,也可以分别作为两个8位寄 存器使用。 低8位寄存器名分别为AL,BL,CL和DL,高8位 寄存器名分别为AH,BH,CH和DH。这些寄存器的双 重性使得8086很容易处理字节和字数据。
第二章 微处理器与系统结构
2.1 微处理器的基本结构
目前市场上有各种各样的微处理器。一般来说, 其内部基本结构大都由算术逻辑单元、寄存器阵列、 控制单元、总线和总线缓冲器四个部分组成。 高性能微处理器内部还有指令预取部件、地址形 成部件、指令译码部件和存储器管理部件等。 待后面各节内容学完后再来自学这节内容。