欢迎光临散文网 会员登陆 & 注册

第二周 微处理器与总线

2020-12-13 01:58 作者:康康Loong  | 我要投稿

大家好,又是我,沉迷学习无法自拔的小笨蛋康sir。 这个文集将会同步更新我观看吴宁老师的《微机原理与接口技术》教学视频写的笔记,学习笔记,大概每周一章。 有问题大家可以在评论下面留言讨论,欢迎纠错! 欢迎收藏阅读,动动小手给个硬币点个赞。                                                                 ——@正能量的康sir 

也可移步我的博客(https://blog.csdn.net/qq_33956508)获得更好的阅读体验,也会更新一些其它技术类文章。



第9讲 8088微处理器

8088/8086属于第三代处理器的典型代表。内部都是16位(二代8位)

8086对外总线16位。8088对外总线8位以兼容以前的设备。

关注点:

8088/8086CPU能够实现指令并行流水工作的原因

实地址模式下的存储器地址变换原理

如何知道CPU当前工作状态及指令运算结果的特征


8088/8086CPU的特点(相对于以前):

采用并行流水线工作方式(通过设置指令领取队列实现)(CPU内部结构)

对内存空间实行分段管理(将内存分为4个逻辑段并设置地址段寄存器,以实现对1MB空间的寻址)(实模式存储器寻址)

支持协处理器(工作模式)


8088/8086CPU的两种工作模式

最小模式:为单处理器模式,所有控制信号由微处理器产生

最大模式:为多处理器模式,部分控制信号由外部总线控制器产生。用于包含协处理器的情况下。

最小模式下的总线连接示意图


地址信息——>控制信息——>数据信息

ALE把地址信息锁到地址锁存器中


最大模式下的总线连接示意图



两种工作模式的选择方式

8088是工作在最小还是最大模式由MN/MX引线的状态决定。

(上横杠表示这条引线上低电平时为最大模式)

MN/MX-0:工作于最大模式

MN/MX-1:工作于最小模式

第10讲 8088 CPU主要引线和内部结构

一、8088CPU主要引线

总体分为4组

完成一次访问内存或接口所需要的主要信号

 与外部同步控制信号

 中断请求和响应信号

 总线保持和响应信号


回顾“微机读取一条指令的工作过程“


1. 发出读取数据所在的目标地址(地址信号)

 内存储器单元地址

 I/O接口地址

2. 发出读控制信号(控制信号)

3. 送出传输的数据(数据信号)


8088 CPU最小模式下的主要引脚信号

地址线和数据线:

AD0—AD7:低8位地址和低8位数据信号分时复用。在传送地址信号时为单向,传送数据信号时为双向。

A16--A19:高4位地址信号,与状态信号分时复用。

A8—A15 :8位地址信号

20位地址信号 可产生220=1M个编码

8位数据信号 可同时传输8bit二进制码

(1)主要控制信号

(#号作用相当于上横线,代表低电位时有效)

#WR: 写信号;

#RD: 读信号;

IO/#M:为“0”表示访问内存,为“1”表示访问接口;

#DEN: 低电平有效时,允许进行读/写操作;

DT/#R:数据收发器的传送方向控制;

ALE: 地址锁存信号;

RESET:复位信号。

例如:当#WR=1,#RD=0,IO/#M=0时,

表示CPU当前正在进行读存储器操作


(2)READY信号——外部同步控制信号

4个时钟周期(0.2s)为一个总线周期

若T3周期后检测引脚,ready引脚若为低电平就插入一个等待周期Twait,然后再检测,若低电平再插入…直到检测到高电平再插入T4个周期。(4个周期完成不了的情况)


(3) 中断请求和响应信号

 INTR:可屏蔽中断请求输入端

 NMI: 非屏蔽中断请求输入端

 INTA:中断响应输出端

(4) 总线保持信号

 HOLD:总线保持请求信号输入端。当CPU以外的其他设备要求占用总线时,通过该引脚向CPU发出请求。

 HLDA:总线保持响应信号输出端。CPU对HOLD信号的响应信号。


8088和8086CPU引线功能比较

数据总线宽度不同:8088的外部总线宽度是8位,8086为16位。

访问存储器和输入输出控制信号含义不同:8088——IO/M=0表示访问内存; 8086——IO/M=1表示访问内存。

其他部分引线功能的区别。


二、8088CPU的内部结构

微处理器:运算器、控制器、寄存器。


执行单元(EU)

总线接口单元(BIU)


图片说明:

FLAGS:标志寄存器,保留运算结果的特征、执行单元的控制逻辑


  1. 执行单元EU

构成:运算器、8个通用寄存器、1个标志寄存器,EU部分控制电路

功能:指令译码、指令执行、暂存中间运算结果、保存运算结果特征。

  1. 总线接口单元BIU

功能:

从内存中取指令到指令预取队列。指令预取队列是并行流水线工作的基础。

负责与内存或输入/输出接口之间的数据传送

在执行转移程序时,BIU使指令预取队列复位,从指定的新地址取指令,并立即传给执行单元执行

结论

指令预取队列的存在使EU和BIU两个部分可同时进行工作。实现指令的并行执行

提高了CPU的效率

降低了对存储器存取速度的要求


第11讲 8088 CPU内部寄存器

含14个16位寄存器,按功能分三类:

8个通用寄存器

4个段寄存器

2个控制寄存器

深入理解每个寄存器中数据的作用

16位二进制码的含义


  1. 通用寄存器

数据寄存器(AX,BX,CX,DX)

地址指针寄存器(SP,BP)

变址寄存器(SI,DI)

  1. 数据寄存器

8088/8086含4个16位数据寄存器,它们又可分为8个8位寄存器,即:

AX——AH,AL

BX——BH,BL

CX——CH,CL

DX——DH,DL

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

AX:累加器。所有I/O指令都通过AX与接口传送信息,中间运算结果也多放于AX中.

BX:基址寄存器。在间接寻址中用于存放基地址.

CX:计数寄存器。用于在循环或串操作指令中存放计数值.

DX:数据寄存器。在间接寻址的I/O指令中存放I/O端口地址(除了输入输出指令中,DX存放的地址一定是数据地址);在32位乘除法运算时,存放

高16位数。

  1. 地址指针寄存器

SP:堆栈指针寄存器,其内容为栈顶的偏移地址

BP:基址指针寄存器,常用于在访问内存时存放内存单元的偏移地址。

BX和BP应用上的区别:

作为通用寄存器,二者均可用于存放数据;

作为基址寄存器,用BX表示所寻找的数据在数据段;用BP则表示数据在堆栈段。

  1. 变址寄存器

SI:源变址寄存器

DI:目标变址寄存器

变址寄存器在指令中常用于存放数据在内存中的地址


除了AX、CX之外 其它六个寄存器里都可能存放的是地址。但是作为8位寄存器AH、AL、BH、BL…里一定存放的是数据


2.控制寄存器

IP:指令指针寄存器,其内容为下一条要取的指令的偏移地址。Instruction Pointer Register


FLAGS:标志寄存器,存放运算结果的特征 。16位只有9位有意义,7位空闲。

6个状态标志位(CF,SF,AF,PF,OF,ZF)

3个控制标志位(IF,TF,DF)

(1)状态标志位

CF(Carry Flag): 进位标志位。加(减)法运算时,若最高位有进(借)位则CF=1

OF(Overflow Flag): 溢出标志位。当算术运算的结果超出了有符号数的可表达范围时, OF=1

ZF(Zero Flag): 零标志位。当运算结果为零时ZF=1

SF(Sign Flag): 符号标志位。当运算结果的最高位为1时,SF=1。

下面这两个标志位只对8位有效:

PF(Parity Flag):奇偶标志位。运算结果的低8位中“1”的个数为偶数时PF=1。

AF(Auxiliary Carry Flag):辅助进位标志位。加(减)操作中,若Bit3向Bit4有进位(借位)(注意位是从0开始的,所以是右数第四个数的位置向右数第5个数位置进位), AF=1

 例题

给出以下运算结果及运算后各状态标志位的状态:10110110+11110100

10110110 + 11110100= 1 10101010

CF=1, OF=0(最高位进位状态 异或 次高位进位状态=1,则结果溢出.这里最高位有进位,次高位有进位), AF=0, PF=1, SF=1, ZF=0

(2)控制标志位

TF(Trap Flag): 陷井标志位,也叫跟踪标志位。TF=1时,使CPU处于单步执行指 令的工作方式。

IF(Interrupt Enable Flag): 中断允许标志位。IF=1使CPU可以响应可屏蔽中断请求。

  DF(Direction Flag): 方向标志位。在数据串操作时确定操作的方向。

  1. 段寄存器

作用:用于存放相应逻辑段的段基地址

8086/8088内存中逻辑段的类型:

代码段——存放指令代码

数据段——存放操作的数据

附加段——存放操作的数据

堆栈段——存放暂时不用但需保存的数据

段寄存

CS:代码段寄存器,存放代码段的段基地址

DS:数据段寄存器,存放数据段的段基地址

ES附加段寄存器,存放数据段的段基地址

SS堆栈段寄存器,存放堆栈段的段基地址

段寄存器的值表明相应逻辑段在内存中的位置

什么是逻辑段?为什么要分段?下一讲会说到

第12讲 实模式下的存储器寻址(很重要)

本讲提要:

内存分段管理思想

实模式下的内存地址变换

段寄存器的应用

堆栈的概念


内存储器管理

8088CPU是16位体系结构的微处理器

可以同时处理(产生)16位二进制码(可以产生64K个编码,直接管理64K个内存单元)

8088CPU需要管理1MB内存:需要能够产生1M个地址编码


前面有个“区域号”(红色X)

如何实现呢?下面来看内存分段管理方式

内存地址变换

欲实现对1MB内存空间的正确访问, 每个内存单元在整个内存空间中必须 具备惟一地址——物理地址



内存地址变换:如何将直接产生的16位编码变换为20位物理地址

1、内存单元的编址(1)

内存每个单元的地址在逻辑上都由两部分组成:

段(基)地址:指示存储单元在整个内存空间中处于哪个区域(即“段”)

段内地址(相对地址/偏移地址):指示存储单元在段中的相对位置(与段中第1个单元的距离)



存储器的编址

段基地址:决定存储单元在内存中的位置

相对地址(偏移地址):该存储单元相对段内第一个单元的距离

逻辑段的起始地址称为段首:每个逻辑段内的第一个单元



由偏移地址的定义得,段首的偏移地址=0


存储器的编址(3)

内存单元地址:



段首的偏移地址:

0000H



存储器的编址(4)

物理地址:内存单元在整个内存空间中的惟一地址

例:段基地址=6000H

段首地=60000H

偏移地址=0009H

物理地址=60009H



2.实地址模式下的存储器地址变换

内存物理地址由段基地址和偏移地址组成



物理地址=段基地址x16+偏移地址

因为16进制一位相当于4位二进制,二进制乘一个2的n次方就是左移n位,所以这里乘16的话,16进制左移一位即可(相当于二进制左移4位)

3. 段寄存器

作用:用于存放相应逻辑段的段基地址

8086/8088内存中逻辑段的类型

代码段——存放指令代码

数据段——存放操作的数据

附加段——存放操作的数据

堆栈段——存放暂时不用但需保存的数据

8086/8088内存中每类逻辑段的数量

最多为64K个

段寄存器的分类

CS:代码段寄存器,存放代码段的段基地址

DS:数据段寄存器,存放数据段的段基地址

ES:附加段寄存器,存放数据段的段基地址

SS:堆栈段寄存器,存放堆栈段的段基地址

段寄存器的值表示相应逻辑段在内存中的位置

例题1:设某操作数存放在数据段,DS=250AH,数据所在单元的偏移地址=0204H.则该操作数所在的单元的物理地址为:250AHX16+0204H=252A4H

例题2:设DS=2500H,某单元的偏移地址=00A0H,则有:物理地址=250A0H



逻辑段与逻辑地址

内存的分段时逻辑分段,不是物理段。各个逻辑段在地址上可以不相连、可以部分重合,也可以完全重合。

每个内存单元具有唯一物理地址,但可能具有多个逻辑地址。即:

一个内存单元可以同时处于两个逻辑段

一个内存单元可以在不同的时刻属于相同或不同类型的段

一个内存单元在同一时刻可以属于不同类型的段

例题3:

已知:CS=1055H,DS=250AH,ES=2EF0H,SS=8FF0H

画出各段在内存中的分布。


(默认段尾物理地址=段首+ FFFFH (二进制16个1)例如10550H+FFFFH=2054H。因为16位结构,一个逻辑段默认大小2的16次方=64K)

逻辑段说明

同一程序模块装入内存时,不同类型的段可以装入在相同/不同的物理空间

两个逻辑段完全重合或部分重合

两个不同程序模块装入主存时,同一类型的逻辑段也可以装入相同或不同的物理空间中



4.堆栈及堆栈段的使用

堆栈:

内存中一个特殊区域,用于存放暂时不用或需要保护的数据。

常用于响应中断或子程序调用。

若栈顶=栈底——>空栈

若栈顶=栈首——>满栈


堆栈示例:

已知SS=1000H,SP=0100H

则:

堆栈段的段首地址=10000H

栈顶(偏移)地址=0100H

若该段最后一个单元地址为10200H,则:

栈底偏移地址=0200H


第13讲 8088系统总线

重点:总线的概念、如何看时序图

  1. 总线时序

CPU工作时序:CPU各引脚信号在时间上的关系

总线周期:CPU完成一次访问内存(或接口)操作所需要的时间。一个总线周期至少包括4个时钟周期。


8088最小模式下的工作时序


  1. 总线的概念

总线:

是一组导线和相关的控制、驱动电路的集合。是计算机系统各部件之间传输地址、数据和控制信息的通道。

地址总线(AB)

数据总线(DB)

控制总线(CB)

总线按层次结构分类:CPU总线(没有标准)、系统总线(CPU和接口之间,分为PCI和PCIE)、外部总线(接口和外设之间)。


  1. 总线结构

单总线结构

优点:控制简单、扩充方便

缺点:由于所有设备部件均挂接在单一总线上使这种结构只能分时工作,即同一时刻只能在两个设备之间传送数据,这就使系统总体数据传输的效率和速度受到限制


多总线结构:双总线结构(面向CPU的双总线结构、面向主存的双总线结构)、多总线结构

  1. 面向CPU的双总线结构

优点:在CPU与主存储器之间、 CPU和l/0设备之间分别设置了总线, 从而提高了微机系统信息传送的速率

缺点:外设与主存之间信息交换必须通过 CPU 才能进行中转,而降低了 CPU 的丁 作效率(或增加了 CPU 的占用率)


  1. 面向存储器的双总线结构

CPU 与主存储器之间又专门设置了一条高速总线,使 CPU 可以通过它直接与主存储器交换信息

优点:使信息传送效率提高,而且减轻了总线的负担

缺点:造价较高


  1. 现代微机中的多总线结构



  1. 总线的基本功能

数据传送

仲裁控制

出错处理

总线驱动

  1. 总线的主要性能指标

总线带宽(B/S):单位时间内总线上可传送的数据量。总线带宽=位宽X工作频率。(可以想象成单位车流量=道路宽度x车速)

总线位宽(bit):能同时传送的数据位数

总线的工作频率(MHz)

总线带宽=(位宽/8)X(工作频率/每个存取周期的时钟数)

微处理器小结

本章提要

微处理器的一般构成

8088CPU最小模式下的主要引线及其功能

8088CPU的内部结构

内部寄存器功能、寄存器中数据的含义、8位寄存器中存放的均为运算的数据

实地址模式下的存储器寻址,逻辑地址,段基地址,偏移地址,物理地址

堆栈,栈顶地址,栈底地址,堆栈段基地址

内部寄存器

全部为16位寄存器

只有4个数据寄存器分别可分为2个8位寄存器

所有16位寄存器中:

全部通用寄存器中,只有AX和CX中的内容一定为参加运算的数据,其余通用寄存器中的内容可能是数据,也可能是存放数据的地址;

SP中的内容通常为堆栈段的栈顶地址;

段寄存器中的内容为相应逻辑段的段地址;

IP中的内容为下一条要取的指令的偏移地址;

FLAGS中有9位标志位

实模式下的存储器寻址小结

内存的地址:

逻辑地址(编程使用的地址):

段地址:偏移地址(实际编程中通常只给出偏移地址,段地址采用系统默认设定)

段首地址:每个逻辑段第一个单元的地址

偏移地址:相对于所在逻辑段内段首的距离。段首的偏移地址=0

物理地址:内存单元在整个内存中的惟一地址



每个内存单元在整个内存空间中都具有惟一的物理地址

每个内存单元的地址都由两部分组成:段基地址 段内相对地址(偏移地址)

段基地址决定了逻辑段在内存中所占的区域,改变段基地址,则改变了逻辑段的位置。

一个逻辑段的默认长度为64KB,最小长度值为16B。

逻辑段可以有多个,但只有4种类型。在一个程序模块中,每种类型的逻辑段最多只能有一个。



第二周 微处理器与总线的评论 (共 条)

分享到微博请遵守国家法律