当前课程知识点:微机原理与接口技术 > 第2周 8088微处理器 > 第9讲 8088 CPU主要引线及机构 > 8088 CPU内部结构
好 我们第二步来第二部分我们来介绍一下
8088CPU的内部结构
我们都知道
微处理器呢
不论是哪一种型号的处理器
它的内部都是由三个部分来组成的
就是控制器 运算器和内部的寄存器组
我们在这里给大家看一个
Pentium 4微处理器内部的结构
Pentium 4也是Inter公司的产品 对吧
8088也好 8086也好
也是Inter公司的产品
8088是和8086是
典型的第三代微处理器的代表
就是Inter公司的代表
当然同期还有其他公司的一些代表
那么Pentium 4呢
它属于第五代微处理器的典型代表
那么大家看一下这个图会发现它巨复杂
如果我们用这样子的一个
奔4 奔4还不是今天
离今天的CPU还有一些很大的距离
那么如果用这个来介绍
大家可能就觉得有点眼晕
但是不管怎么样
它实际上是8088的
在8088肩膀上成长起来的一个CPU
所以 它实际上有很多东西
是跟8088里头 长大了
慢慢复杂 在这个基础上一步步复杂出来的
我们来看一下这里头
这个东西就是我们刚才说的
8088在支持协处理器的时候
协处理器主要的工作就是做浮点运算
当然今天它已经不是个独立芯片了
已经在这个芯片里头了
这就是有关浮点运算的部件
其他呢我们后边马上讲到结构里头
我们会看到的
比如总线接口单元 比如指令译码
比如运算器 比如寄存器
在这里头都能看到影子
只不过它都是在8088的基础上慢慢的
复杂起来 扩大起来
就像一个人刚生下来的时候
他是小孩子 但是长大了以后
他个子会变得很高 力量会变的很大
但是他还是两个眼睛一鼻子
他并没有更多的变化 对吧
没有本质上的区别
这个也一样
好 所以下边我们来看一下8088的内部结构
我们说了 不论是哪一种型号的CPU
它在总的功能上都是包含了那三个部分
控制器 运算器和内部寄存器组
但是Inter公司的CPU呢
它在逻辑上
他们把它的内部又做了一些逻辑上的
功能上的划分
8088这个时代呢
它的功能上 它分成了
执行单元和总线接口单元
我们现在屏幕上左边的这个就是执行单元
右边的那个叫总线接口单元
执行单元的含义
显而易见 就是执行程序用的
那么总线接口是什么意思呢?
和总线打交道的
为什么要和总线打交道呢?
我们说总线是CPU外边
主要指的是CPU 总线就是通道对吧
所以一旦要跟总线打交道
意味着就要出去了
所以CPU出去能够直接出到哪呢?
无非是内存和接口
所以总线接口单元
其实就是为用于访问内存和访问接口的
就是名字就是这样子得出来的
我们来看一下这个图
这个图里头
左边这个执行单元 我们看最上面的这些
一个个的小格格
这些小格格我们都叫它
我们看到一个AX BX CX等等
旁边有一行字 叫通用寄存器
我们前面讲
讲寄存器的时候 我们大概说过
寄存寄存就是暂时存放数据的
我们也说为什么要有寄存器?
实际上我们举的那个例子就是
暂存中间运算结果
那么通用寄存器的主要功能
就是暂存中间运算结果来用的
那么在执行单元的下边有一个
像一个马蹄形的东西
这个叫ALU
其实我们前面也提到过
这叫算术逻辑单元的一个缩写
这个就是
主要用来运算
或者执行指令的
也就是说运算器的核心部件就在这里了
其他的还有一些寄存器
因为它不对程序员开放
所以我们比如这个暂存寄存器
它是它内部的 我们就不讲了
底下还有一个叫FLAGS
这个是什么?这个是
标志寄存器 它用来
保留运算结果的特征
也就是说两个数相加 比如有没有进位
结果是不是零 有没有溢出等等
这些特征都保留在FLAGS里头
还有一些就是它的
执行单元的一些控制逻辑
它负责指令的译码这些功能
这个右边的这个总线接口单元
我们看到它最上边
有一个叫地址加法器
这个地址加法器画的非常的形象
这个是人家Inter公司给出来的图
它好像这个倒过来的一个马蹄
相当于像有两条腿
一条腿进去的是个地址
另外一条腿又进去的是个地址
那么这左边这条腿进去从哪里来?
从底下的这些寄存器
大家看 CS SS DS等等
这些也是寄存器
这些寄存器是专用的寄存器 我们称为
段寄存器
我们后边讲寄存器的时候也会给大家介绍
底下还有一个叫IP
这个IP
就是我们前面已经看到过
好几次的那个程序计数器的一个
换了一个名字 它叫指令指针
我们等会后边也会给大家介绍
总之
整个这样一个内部结构里头分了这样两大部分
中间的这些实颜色实的这些线
就是它的片内的总线
也就是CPU内部的通道
声明一下 这个图
是一个示意图 并不是严格的原理图
所以下边我们
在这个图介绍了这么多的基础上
我们总结一下这两个部分
它的主要的功能
作为执行单元 它的主要功能就是
执行的指令 所以它里边包含了运算器
包含了8个通用寄存器
包含了标志寄存器
以及 执行单元这一部分的控制电路
所以它的主要的功能 就是指令译码
指令执行
暂存中间运算结果
以及保留运算结果的特征
这个就是执行单元 它的主要功能
它的 执行肯定是在
运算器里 也就是ALU里来完成的
它的中间运算结果的暂存
是在8个通用寄存器里做的
它的运算结果的特征
是在FLAGS里头做的
那么总线接口单元的功能什么呢?
我们从它的名字我们已经看出来
它就是和总线进行打交道
那么总线是一个通道
那么CPU要通过通道到哪里去?
无非就是要对外边进行访问
CPU能够访问的外边就是内存和接口
所以总线接口单元主要的功能
就是负责
访问内存或者访问接口的
访问内存和访问接口
我们比如访问内存 它可能干的工作
就是去读取指令
读取操作的对象
传送运算结果
访问接口 那么就是读取数据
或者是写入数据出去
对于这样的一个功能模块
它的 读取指令
它有一项特殊的一个部件
在帮助它完成这么一个工作
这个部件是什么呢? 叫指令预取队列
也就是说它的工作 首先它读取指令的时候
它通过对从外边把指令读过来
它并不是把指令直接经过译码
之后送给CPU去执行
送给运算器去执行
而是把指令读过来以后 先放到了这样一个
我们现在这个红线
所括起来的这样一个预取队列里
这个预取队列的作用是什么?
预取队列的作用
就是用来展示存放指令
我们说队列的作用就是排队 对吧
先进去的先出来
那么现在这里
我们假设现在我们读取的是第一条指令
咱们读取之前这个队列是空的
现在这个队列有四道
每一道代表着一个字节
也就是说每一道里面
可以放一条指令吧
那么好 我们读取的第一条指令进来
因为队列是空的 所以它就从最后
咵咵咵的一直走到最前头 然后就出去
出去到哪里呢?进入到运算器
去指令译码 然后指令执行
然后呢
指令译码或者指令执行的时候
那么这个队列一直是空的了
BIU也就空闲了
它就立刻又去读了第二条指令
第二条指令如果读过来
像我们前面讲指令的执行几个步骤
的时候我们说过
如果它读过来指令译码部件
正好译码结束
那么它就接着就送去译码了
那么如果这个时候译码部件没有译码结束
那么它就把它放在了现在
这个队列的最排头这个位置等着
然后呢 因为后边队列还有空闲
它就又去读第三条指令
这样子一直读 如果假设它四条指令
都读过来 队列都已经满了
你前面那条指令的译码还没结束
那大家就只好等着了
那一般情况下不会这样 对吧
所以它就 如果译码结束以后
开始执行那条指令的时候
第二条指令就直接从队列里取
因为有了个这样一个队列的存在
所以呢
我们就实现了
执行指令 指令译码和读取指令
并行工作的这样一个可能
这就是我们今天 实现流水线技术
或者说流水线工作方式
它的一个早期的阶段
当然这个早期
我们想象一下 如果每一次
读取的指令过来
指令译码正好结束
然后它就去译码 译码完了以后
那条指令的前面的那一条指令
的执行正好完成
那就接着去完成了
那么这样子过去
好像像一个水管里的水一直就不断流
但是实际上是不太可能的
这种 仅仅靠这样的指令预取队列
无法做到指令的不断流
因为我们预取了指令
但是没有预取数据
所以如果
这条指令执行 取过来的这条指令
经过译码 发现它要执行的对象
不是对外的数据 它就自己去执行了
然后下面一条指令也是它内部去处理的
也不需要对外访问
好像这个指令就可以每一次都从队列里去取
它就每一次都不断流
看上去很好
但是如果
它指令译码 发现这条指令是做加法运算
加法运算 就有加数和被加数
那么这个时候它就需要到内存再去取数据
那么因为数据并没有预取
所以这个时候大家就只好停下来了
所以 这样的一个并行流水线方式
仅仅靠这样的
指令预取队列是没有办法实现的
但是毕竟它开拓了这样一种思路
也就是说为今天的流水线的技术打下了基础
今天的CPU里头 不仅仅能够指令预取
还能够实现数据的预取
而且呢 我们现在还有一个问题
需要请大家考虑
如果我们每一次预取
大家我们说 第一条指预取过来 好被执行
接着第二条指令预取 第三条指令预取
当队列里只要出现两个空
它就可以去预取
这样的话
BIU和EU两个部分就可以并行的工作
但是呢
如果我们
BIU辛辛苦苦的预取过来的指令
好 结果它的前一条指令
去经过译码 发现它是转移类指令
那就是说转移到别的地方去了
那么你刚刚预取过来这条指令就不是
要被执行的指令
那么这个时候就等于白取了
所以这个时候也需要再去重新取
也就是说流水线也断流了
那么对于这样子的方式
我们今天的CPU里也采用了
软件硬件相结合的方式来处理
比如刚才我们看到那个Pentium 4内部的结构里头
有一些分支预测这样的技术
也就是说它可以预测
下一条指令是不是有转移或者是
循环等等这样子的一些指令
当然这个要借助编译器里边的功能来实现
总而言之 今天的CPU
通过软件的方式 软硬件的结合的方式
以及硬件的方式
能够基本上做到这个流水线
不再断流的这样的可能
但是在8088这个时代
流水线是肯定会断流的
但是它毕竟有了这样一个先河
也就是说有了指令并行处理
的这样一个可能性
这个是它非常重要的一个贡献
所以BIU这一部分
通过地址加法器
它能够实现将两个16位地址合成
大家关注一下那个图会发现
它的输出端是20位的地址
也就是我们的A0到A19
也就是说它能够把
利用16位的体系结构产生出20位的地址来
这是它的第一大
那么总线接口单元的下边
通过设置指令预取队列
能够实现
指令的并行执行
这样子的一个模式
这就是BIU这一部分它的主要功能
总而言之简单的一句话
它就是用来访问接口或者访问内存用的
好了 我们对它的内部结构做一个总结
说了这么多 对吧
首先 通过指令预取队列的存在
能够使得BIU跟EU
能够并行进行工作
也就是说 BIU去取指令的时候
EU能够同时进行指令译码和指令执行
这也就是 因为它们两者都属于CPU内部
所以 也就实现了CPU内部主要三大部件
就是指令译码 指令执行和取指令这三大部件
能够并行工作 这样的成为一种可能
这也就是今天实现指令并行执行的基础
就是因为有了指令预取队列
因为有了这样子指令预取队列的存在
或者说因为有了这样
指令并行执行的可能性
所以 它提高了CPU的整个的效率
这是毫无问题的
第二 它降低了对存储器存取速度的要求
这一点怎么解释呢?
我们说
因为如果我们希望我们现要到内存去过来
这边等着计算
那么我们当然希望内存的速度越高越好
我们总线的效率越高越好
这样我们就快速的拿过来 这边就执行
但是因为我们有了预取
所以我们可以事先把它拿过来放在这里
因为队列到ALU
这都是在CPU内部的 它们之间去取
那个时间是可以忽略不计的
所以这样的话 我们就可以把
让内存的速度不要一定有那么高
因为不一定有那么高
也就是说因为降低了内存的要求
所以我们内存的成本就会便宜一点
我们整个买计算机要的花销也就小一点
好了这就是8088CPU最小模式下
它的主要引线的功能
以及它的内部的结构给大家简单地介绍到这里
-第1讲 关于本课程
--关于本课程
-第2讲 微型计算机系统
--微机系统_01
--微机系统_02
-第3讲 微型计算机一般工作过程
-第4讲 数制与编码
--计算机中的编码
-第5讲 计算机中数的表示与运算
--数的表示
--符号数的表示
--数的表示与运算
-第6讲 基本逻辑运算与逻辑电路
-第7讲 本周小结
--本周小结
-第1周 微型计算机基础概论--第一周单元测验
-第8讲 8088微处理器
-第9讲 8088 CPU主要引线及机构
-第2周 8088微处理器--第二周单元测验
-第10讲 实模式存储器寻址
-第11讲 8088系统总线
--8088系统总线
-第12讲 微处理器小结
--微处理器小结
-单元测验--作业
-第13讲 指令概述
--指令概述
-第14讲 寻址方式
--寻址方式
-第15讲 通用数据传送指令
-第16讲 地址传送指令
--地址传送指令
-第17讲 输入输出指令
--输入输出指令
-第4周 数据传送指令--第四周单元测验
-第18讲 算术运算指令
--加法运算指令
--减法指令
--乘除运算指令
-第19讲 逻辑运算指令
-第20讲 移位操作指令
--移位操作指令
-第5周 算术运算、逻辑运算与移位操作指令--第五周单元测验
-第21讲 关于串操作指令的说明
--串操作指令说明
-第22讲 串传送与串比较
--串传送与串比较
-第23讲 串扫描指令
--串扫描指令
-第24讲 串装入与串存储指令
-第六周单元测验--作业
-第25讲 程序控制指令说明
-第26讲 转移类指令
--无条件转移指令
--条件转移指令
-第27讲 循环控制指令
--循环控制指令
-第28讲 过程调用指令
--过程调用指令
-第29讲 中断指令
--中断指令
-第30讲 处理器控制指令
--处理器控制指令
-第31讲 指令系统小结
--指令系统小结
-第7周 程序与处理器控制--第七周单元测验
-第7周 程序与处理器控制--第七周作业
-第32讲 汇编语言源程序
-- 汇编语言源程序_01
-- 汇编语言源程序_02
-第33讲 伪指令
--数据定义伪指令
--其它伪指令
-第34讲 系统功能调用
-第35讲 汇编语言程序设计示例详解
--程序设计示例1
-第36讲 汇编语言程序设计小结
-第8周 汇编语言程序设计--第八周单元测验
-第8周 汇编语言程序设计--第八周作业
-第37讲 半导体存储器概述
--半导体存储器概述
-第38讲 内存单元编址
--存储单元编址
-第39讲 随机存取存储器RAM
-- RAM_01
--RAM_02
-第40讲 只读存储器ROM
--ROM_01
--ROM_02
-第九周单元测验--作业
-第41讲 半导体存储器扩展
--存储器扩展_2
-第42讲 半导体存储器小结
--半导体存储器小结
-第十周单元测验--作业
-第十周作业--作业
-第43讲 基本I/O接口
-第44讲 简单接口芯片
--简单接口芯片
-第45讲 基本输入输出方法
--基本I/O方法
-第46讲 简单I/O控制系统设计
-第47讲 中断技术
--中断技术1
--中断技术2
-第48讲 输入输出与中断技术小结
--本周小结
-第十一周单元测验--作业
-第49讲 可编程定时计数器
-第50讲 可编程并行接口
-第51讲 可编程接口小结
--本周小结_01
--本周小结_02
-第十二周单元测验
-第52讲 模拟量的输入输出
--模拟量的输入输出
-第53讲 D/A转换器
-第54讲 A/D转换器
-- A/D转换器_01
-第十三周单元测验--作业
-第55讲 I/O接口系统综合设计示例详解I
-第56讲 综合设计示例详解II
-第57讲 结束语
--结束语