导图社区 2.80X86微处理器
这是一篇关于2.80X86微处理器的思维导图
编辑于2022-02-27 17:17:3880X86微处理器
8086/8088CPU的功能结构
执行单元EU
功能:译码分析指令,执行指令,暂存中间运算结果并保留结果特征
EU控制部件
对指令译码,发出控制信号控制EU的各个部件完成指令
ALU算术逻辑运算单元
进行数据的运算
Flags标志寄存器
记录运算结果的特征位
通用寄存器组
暂存运算结果
总线接口单元BIU
功能:负责CPU与内存或输入输出接口之间的信息传送,包括取指令,取操作数,保存运算结果
指令队列
存放待执行的指令
地址加法器
计算段地址与偏移地址,形成物理地址
段寄存器
存放段地址
指令指针寄存器
存放指令的地址
总线控制逻辑
与外界交换数据的通路
EU和BIU按流水线方式工作
当EU从指令队列中取走指令,指令队列出现两个及以上的字节空间BIU就顺序的预取后续指令的代码,填入指令队列
在EU执行指令过程中,BIU负责从指定的内存单元或外设读取EU需要的数据,并将EU运算结果存储到存储器
当EU执行跳转指令时,BIU就使指令队列复位,并立即从新地址取出指令传送给EU执行,然后再读取后续的指令序列填满指令队列
EU从BIU的指令队列取指令执行指令,在EU执行期间,BIU可以取指令放在指令队列中,EU执行指令和BIU取指令同时进行,节省了CPU访问内存的时间
寄存器结构
通用寄存器
数据寄存器
累加器AX
16位寄存器,可拆分为两个8位的寄存器AH,AL
基址寄存器BX
16位寄存器,可拆分为两个8位的寄存器BH,BL
计数寄存器CX
16位寄存器,可拆分为两个8位的寄存器CH,CL
数据寄存器DX
16位寄存器,可拆分为两个8位的寄存器DH,DL
指针和变址寄存器
堆栈指针SP,指向堆栈的栈顶
基址指针BP
源变址寄存器SI
目的变址寄存器DI
段寄存器
代码段寄存器CS:用于存放当前代码段的段地址
数据段寄存器DS:用于存放当前数据段的段地址
附加段寄存器ES:用于存放当前附加段的段地址
堆栈段寄存器SS:用于存放当前堆栈段的段地址
专用寄存器
标志寄存器flags
16位寄存器,仅定义了9位,其中6位标志位,3位控制位
进位标志CF
无符号数进行加减运算时,有借位或有进位,CF=1,否则 CF=0
辅助进位标志AF
在字节操作时,低4位向高四位有借位或进位,在字操作时低字节向高字节有进位或有借位时,AF=1,否则 AF = 0
奇偶效验标志PF
当运算结果的低8位‘1’的个数为偶数时,PF=1,否则 PF = 0
零标志ZF
当运算结果为0时,ZF=1,否则ZF=0
溢出标志OF
在有符号数的算术运算时,当运算结果溢出,OF=1,否则OF=0
符号标志SF
在有符号数的算术运算时,当运算结果为负,SF=1,当运算借位为正时,SF=0
方向标志DF
当DF=0时,在串操作指令中,进行自增操作,DF=1,在串操作指令中,进行自减操作
中断允许标志IF
当IF=0,禁止CPU响应可屏蔽中断,当IF=1时,允许CPU响应可屏蔽中断
单步调试标志TF
当TF=1时,表示CPU进行单步工作方式,当TF=0时,表示CPU正常执行程序
指令指针IP用来存放要取的下一条指令在当前代码段中的偏移地址
指示偏移地址的寄存器
BX,基址寄存器,隐含的数据段是DS
BP,隐含的数据段是SS
SI,隐含的数据段是DS,在字符串操作时,SI作为源变址,隐含的数据段是DS
DI,隐含的数据段是DS,在字符串操作时,DS作为目的变址,隐含的数据段是ES
SP:在堆栈操作中使用,隐含的数据段是SS
IP:在取指令时使用,隐含的数据段是CS
8086与8088的区别(都是16位的寄存器)
内部结构
8086的数据总线宽度为16位、8088的数据总线宽度为8位
8086的指令队列长度为6字节,8088的指令队列长度为4字节
引脚和存储器结构
8086有高8位数据总线允许引脚BHE,用来访问存储器的高字节,而A0用来访问低字节
8086把1MB的存储器分为两个512KB的存储体,分用BHE和A0信号用来作为奇地址存储体和偶地址存储体的选通线
8088没有BHE引脚,存储器也不划分奇偶,A0向A1~A19一样参加地址选通
地址/数据复用线
8086的地址/数据复用线时16位AD0~AD15,而8088仅有AD0~AD7复用,A8~A15仅作为地址线使用
8086位M/IO#,8088为M#/IO
8086/8088CPU引脚
AD0~AD15 为分时复用的地址数据线
T1:AD0~AD15用作低16地址线
T2~T4:用作16位数据线
A16~A19/(S3~S6),分时复用的地址状态线
A16~A19在T1时传送地址信息
在T2,T3,T4,传送状态信息
S6:指示8086/8088当前是否与总线相连,S6=0,表示当前与总线相连
S5:表示中断允许标志当前的设置,S5=0,表示当前CPU中断是关闭的,禁止一切可屏蔽中断的中断请求,S5=1,表示CPU中断是关闭的,允许一切可屏蔽中断的中断请求
S3,S4组合指出当前使用的段寄存器情况
BHE#/S7
T1:BHE = 0,表示高8位数据线上的数据有效
T2~T4:输出状态信号S7,未定义
控制总线
MN/MX#
接+5V时,最小模式,8086提供系统所需要的全部控制信号
接地时,最大模式,系统总线的控制信号由总线控制器8288提供,8086当前操作的状态信号(S0,S1,S2)送给8288,8288产生相应的控制信号
最大模式下的控制信号
S0#,S1#,S2#
三态,输出总线周期状态信号
RQ/GT0#,RQ/GT1
请求/允许 总线访问控制信号,双向
QS0,QS1
指令队列状态信号,用于指示8086内部BIU指令队列的状态
LOCK#
总线优先权锁定信号,当LOCK = 0时,外部控制器不能控制总线
最小模式下的控制信号
M/IO#存储器/IO控制信号(输出,三态)
M/IO# = 1时:访问存储器,M/IO# = 0时:访问I/O端口
DT/R# 数据发送/数据接收信号(输出,三态)
DT/R# = 1时:写,DT/R# = 0时:读
DEN# 数据允许信号(输出,三态)
在CPU访问存储器或I/O的总线周期的后一段时间内,该信号有效,作为系统中总线收发器的允许信号
ALE 地址锁存允许信号(输出)
T1时发出正脉冲,在下降沿,把总线上的地址信息锁存入地址锁存器
INTA# 中断响应信号
响应来自INTR引脚的可屏蔽中断请求
WR# 写控制信号
WR# = 0,8086处于写操作
HOLD 总线请求信号
HOLD = 1时,表示系统中CPU之外的另一个主模块要求占用总线
HLDA 总线响应信号
HLDA = 1时,表示CPU对总线请求信号做出响应,所有与三总线相接的CPU的引脚呈现高阻态,从而让出总线
公共总线(不受工作模式的影响)
RD# 读控制信号 (输出,三态)
RD# = 0,表示CPU在读
INTR 中断请求信号
INTR = 1,表示外设向CPU发出中断请求
NMI 不可屏蔽中断请求信号
上升沿触发,不可软件屏蔽,CPU执行完当前指令后响应中断
READY 等待状态控制信号
READY = 1时,表示CPU访问的存储器或I/O端口以准备好传送数据,若在总线周期T3,检测到READY=0,则插入等待状态Tw
TEST# 等待测试控制信号
等待测试控制信号,当CPU执行wait指令,CPU每隔5个T对TEST进行测试,当TEST=1,CPU重复执行wait指令,即CPU处于空闲等待状态,直到TEST = 0,等待状态结束,CPU执行后续指令
RESET 复位信号(输入)
该引脚保持4T状态以上时间高电平,则可复位,复位后CPU停止当前操作,对flags,IP,DS,SS,ES,及指令队列清零,CS置为FFFFH,CPU从FFFF0H开始执行程序
其它信号
CLK时钟信号 一般接5MHZ的时钟
VCC电源
GND 地线
8086/8088 的存储器结构
存储器的地址空间与数据格式的存储
由于8086/8088CPU有20条地址线,能直接访问的存储空间为1MB,地址范围:00000H~FFFFFH
数据的存储格式
每个存储单元存储 1个字节的数据
存取一个字节的数据需要一个总线周期
两个相邻的字节定义为一个字
字地址:每一个字的低字节存放在低地址中,高字节存放在高地址中,以低字节的地址作为字地址
对准字存放:字地址为偶地址,称为对准字存放,存取一个字只需要一个总线周期、
非对准字存放:字地址为奇地址,称为非对准字存放,存取一个字需要两个总线周期
存储器的分段
由于8086/8088的内部寄存器为16位,能寻址的内存空间只能是64kb,所以8086/8088系统采用了地址分段
每个段的起始地址低4位必须为0,高16位存放在16位的段寄存器(称为段基址)
段寄存器分别有CS,DS,SS,ES
物理地址的形成
由段地址与偏移地址组成,在地址加法器内部形成物理地址
公式:物理地址 = 段地址*10H+偏移地址
存储器的组成
在8086系统中,1MB的存储空间分为两个存储体,分别为奇存储体和偶存储体
偶存储体:其数据线与CPU的D7~D0相连,A0用于片选
奇存储体:其数据线与CPU的D15~D8相连,BHE用于片选
8088系统中不分奇偶存储体,A0~A19访问存储器
8086/8088的总线操作及时序
总线系统的时序
8086/8088系统的时钟clk为5mhz,故一个一个时钟周期为200ns
指令周期
执行一条指令的时间称为指令周期,一个指令周期是由若干个总线周期组成
总线周期
一个总线周期是CPU通过总线与存储器或外部设备进行一次数据传输所需的时间
一个最基本的总线周期包括4个时钟周期,即T1,T2,T3,T4
系统的复位与启动
8086CPU复位后,flags,,DS,ES,SS和其它寄存器被清零
指令队列也被清零
CS和IP被初始化为FFFF:0000,系统执行的第一条指令存储在FFFF0中
最小模式下的读/写时序
最小模式读时序
T1
当CPU准备开始一个总线读周期时,用M/IO#信号指出当前执行的读操作是从存储器读还是IO读
A19/S6~A16/S3,AD15~AD0,发出20位地址信息
同时BHE与ALE控制信号有效
BHE信号用来配合地址信号对存储单元的寻址
ALE信号下降沿将20位地址信号和BHE信号锁存,从而把地址信息和状态信息分开
T2
A19/S6~A6/S3上的地址信号消失,而出现S6~S3状态信号,状态信号指明CPU的状态信息
AD15~AD0变成高阻状态,为读入数据做准备
RD#信号有效,送至存储器或IO端口,开始从被选中的存储单元或IO端口中读取数据
DEN#有效,做好接受数据的准备
T3
CPU采样READY,若READY = 1,则选中的存储单元或IO端口已准备好数据,T3结束后,CPU从AD15~AD0上读取数据,若READY = 0,则说明选中的存储单元没有准备好数据,则T3之后插入Tw
Tw
每个Tw状态开始,CPU都测试READY信号,只有发现READY = 1时,才在该Tw结束后进入T4状态。否则继续插入Tw状态
T4
在T4状态和前一个状态交界的下降沿处,CPU对数据总线进行采样,读取数据
最小模式写时序
T1
当CPU准备开始一个总线写周期时,用M/IO# 控制信号指出写操作是对存储器写,还是IO端口写
A19/S6~A16/S3,AD15~AD0,发出20位地址信息
BHE#信号有效,作为存储体的体选信号,配合地址信号实现对奇地址存储单元的寻址
发出ALE信号,在下降沿对地址信号进行锁存,同时也对M/IO#和BHE#信号锁存
使控制数据收发器方向的信号DT/R# 信号为高电平,收发器8286发送数据,进行写操作
T2
AD15~AD0发出将要写到存储单元或IO端口的16位数据
WR#引脚发出写信号,该信号送到存储器或IO接口
写操作已准备就绪,只等待将数据写入存储单元或IO接口
T3
测试READY信号,若READY = 1,则在T3和T4状态交界处,将数据写入存储单元或IO接口
测试READY信号,若READY = 0,则说明,将要访问的存储单元或IO接口未准备接收好数据,则在T3之后插入Tw等待状态,以等待存储器或IO接口做好准备工作
Tw
每个Tw状态开始,CPU都测试READY信号状态,只有发现READY = 1,才在该Tw结束后进入T4状态。否则继续插入Tw状态
T4
数据从数据总线擦除,各种信号进入无效状态,CPU完成了对存储单元或IO接口的写操作