【微机原理与接口 2】—— 8088/8086 CPU 工作原理和结构分析

一、8088/8086 CPU 的特点

我们说的 8088/8086 CPU 的特点是相比较前几代 CPU 而言的。现在许多CPU ,例如多核 CPU 的工作模式,很大程度上是从 8088/8086 CPU 的基础上成长起来的。下面看看 8088/8086 CPU 的特点:

  1. 采用并行流水线的工作模式。 关于并行流水线工作模式,我们在第一篇 B l o g Blog 中已经有了一个了解,就是说 CPU 的三个最主要的步骤:取指令、分析指令和执行指令分别由三个模块执行(当然现在肯定不止),取指令模块取完指令送给分析模块之后,就立刻跑去取下一条指令。分析指令分析完了之后,把分析结果告诉执行模块后,就立刻拿下一条指令分析、、、以此往复下去
  2. 对内存空间实施分段管理。 8088/8086 CPU 将内存分成了 4 段,以实现对 1M 内存的管理。这其实挺神奇的,我们知道,内存中其实是一个个个存储单元组成的,内存就像一栋大楼,存储单元就相当于一间一间的房间,它们都有自己的门牌号(二进制编码)。我们现在想,8088/8086 是16位的 CPU,也就是说它一共可以产生 2 16 2^{16} 也就是 64K 个二进制编码,换句话说就是最多能够产生 64K 种地址编码表示,可是要想访问到内存大楼里面 1M 个不同的房间,我们需要 2 20 2^{20} 个不同的二进制编码,可现在只有 2 16 2^{16} ,如何管理?且看下文!
  3. 8088/8086 CPU 支持协处理器。 这涉及到 最大模式和最小模式,我们等下就会分析到。

二、8088/8086 CPU 的工作模式

我们刚刚说了,这种型号的 CPU 执行协处理器,因此 8088/8086 CPU 就可以有两种工作模式选择:(1)最小模式:就是 CPU 一个人自己单干,所有的控制信号都由它自己产生。(2)最大模式:就是加入了协处理器,那么部分的控制信号就可以通过协处理器(总线控制器)产生。

2.1 最小模式下的总线连接方式

我们看到在 CPU 产生了一个指令地址之后,当我们的 A L E ALE 信号有效时,CPU 就会把这个地址信号先保存在地址锁存器里面,再送进地址总线,然后指向对应的内存单元。

那么,为什么要把地址信号存进锁存器呢?我们可以这样理解:地址总线是从你家(CPU)到你朋友家(内存单元)的一条在天空中的路径,现在你要用飞鸽传书,让鸽子飞到你朋友家,这个格子脚上绑着的,就是你朋友家的地址信号。可是,设想一下,你不把这个鸽子做上特殊的记号(对应地址锁存),那么这条空中路线上飞着那么多类似的带着不同地址的鸽子,你哪里分得出来那只鸽子携带的是你想要的地址信号啊? 因此,锁存器很有必要。

2.3 8088/8086 在最小模式下的引脚信号分析

2.3.1 访问内存或者访问接口所需的主要引脚

【1】一类引脚信号:访问内存或者访问接口所需的主要信号:
我们看看访问内存或接口的一般流程:

  1. CPU 产指令或者数据的地址 \to 地址信号
  2. CPU 发出“读控制信号” \to 控制信号
  3. 送出传输信号 \to 数据信号

下面是8088 CPU 引脚示意图:

我们先看看和访问内存或接口有关的引脚:8088 一共有 20 根地址线,也就是 20 个地址引脚。这是肯定的,因为要管理 1M 内存必须有 20根地址线。

A D 0 AD_0 ~ A D 7 AD_7 这低8位是地址线和数据线公用的(分时复用),必须是先传地址后传数据

A 16 / S 3 A_{16}/S_3 ~ A 19 / S 6 A_{19}/S_6 这时高四位是地址线和状态线的分时复用

A 8 A_8 ~ A 15 A_{15} 这时 808 CPU 独用的地址线

这里我们说明一下:8088 CPU 有20位地址信号, 2 20 = 1 M 2^{20} = 1M ,因此它是有能力管理 1M 内存的,至于是怎么管理的,我们晚点解释。

但是我们注意到了:这个 CPU 只有8位的数据信号引脚,这意味着:8088 CPU 一次只可以并行传输 8 bit 的二进制信号。(但是注意:8088 CPU 是 16 位的,也就是说,它内部是能够一次性处理 16位二进制信号的,比如说:假设我们要 CPU 做一个 16位二进制数的加法,那么它可以一次做完。但是要把这个 16位的结果传输出去,那么它得传2次)

2.3.2 控制信号引脚

  1. /WR:这个是写信号(“/” 表示低电平有效)
  2. /RD:这个是读信号(同样是低电平有效)
  3. IO//M:这个是控制 CPU 到底是访问接口(I/O)还是内存(M),其中,访问内存是低电平有效。也就是在这个引脚是低电平时,CPU 访问内存。
  4. DT//R:这个是控制的数据收发,如果低电平,就是 CPU 收数据,高电平CPU 发送数据。
  5. READY信号:对于8088/8086 CPU 来讲,一般完成一个指令的时间大约是4个时钟周期,如下图所示:

但是,我们知道,内存的速度比 CPU 慢很多,而接口的速度就更加慢了。那么有可能在4个时钟周期里面,CPU 还无法完成一个指令,这时,READY就变成高电平,那么就会插入多一个时钟周期,如下图所示:

只要 CPU 没有在规定时间完成指令的执行,那么 READY 就会给它多插入一个周期的时间

2.3.3 中断请求和响应信号

这个是在后面几章才能学到的,因此,我们现在就不深入挖掘。

  1. INTR:可屏蔽中断请求(高电平有效)。什么是“中断”呢?就是 CPU 正在执行原本的指令,因为种种因素(可能是强行给它一个新的信号之类的)而停止原本的工作。INTR 就是说 CPU 可以不去理会这些导致它中断的信号,继续干自己的事情。
  2. NMI:非屏蔽中断请求:就是没有不理会它们的权力,别人说了新命令,就必须执行
  3. /INTA:中断响应信号,也就是 CPU 执行了新的命令后执行得到的结果响应。

2.3.4 总线保持信号

  1. HOLD
  2. HLDA

三、8088/8086CPU 结构

下图是 8086 CPU 的内部结构示意图:
在这里插入图片描述
我们可以看到, CPU 可以粗略地分成两个部分—— 执行单元 EU 和总线接口单元 BIU。

我们先看看执行单元 EU:核心就是 ALU(算数逻辑运算单元),就是执行计算的。通用寄存器用于保存中间计算结果。FLAGS(标志寄存器)用于保存计算结果的特征,比如:有无进位、有无溢出之类的。

而总线接口单元,顾名思义就是和外部打交道的。

对于8088/8086CPU 的结构里面,那些寄存器是特别重要的,这一点在我们研究 CPU 寻址方式的时候会专门提到。

发布了140 篇原创文章 · 获赞 411 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/weixin_44586473/article/details/104551601
今日推荐