CPU的功能
1、指令控制。取指令、分析指令和执行指令的操作,即程序的顺序控制
2、操作控制。一条指令的功能往往是由若干操作信号的组合来实现的。CPU管理并产生由内存取出的每条指令的操作信号,把各种操作信号送往相应的部件从而控制这些部件按指令的要求进行动作。
3、时间控制。对各种操作加以时间上的控制。时间控制要为每条指令按时间顺序提供应有的控制信号。
4、数据加工。对数据进行算术和逻辑运算。
5、中断处理。对计算机运行过程中出现的异常情况和特殊请求进行处理
CPU基本结构
运算器和控制器
运算器
对数据进行加工
1.算术逻辑单元:主要功能是进行算术/逻辑运算。
2.通用寄存器组:如AX、BX、CX、DX、SP等,用于存放操作数(包括源操作数、目的操作数及中间结果)和各种地址信息等。SP是堆栈指针,用于指示栈顶的地址。
3.暂存寄存器:用于暂存从主存读来的数据,这个数据不能存放在通用寄存器中,否则会(被坏其原有内容。(内部单总线的时候用)
4.累加寄存器:它是一个通用寄存器,用于暂时存放ALU运算的结果信息,用于实现加法运算。
5.程序状态字寄存器:保留由算术逻辑运算指令或测试指令的结果而建立的各种状态信息,如溢出标志(OP)、符号标志(SF)、零标志(ZF)、进位标志(CF)等。PSW中的这些位参与并决定微操作的形成。
6.移位器:对运算结果进行移位运算。
7.计数器,控制乘除运算的操作步数。
专用数据通路方式
根据指令执行过程中的数据和地址的流动方向安排连接线路
性能较高,基本不存在数据冲突现象,但结构复杂,硬件量,不易实现。
如果直接用导线连接,相当于多个寄存器同时并且一直向ALU传输数据
解决方法:
1.使用多路选择器根据控制信号选择一路输出解决方法
2.使用三态门可以控制每一路是否输出
CPU内部单总线方式
将所有寄存器的输入端和输出端都连接到一条公共的通路上。
结构算单,容易实现,但数据传输存在较多冲突的现象,性能较低。
控制器
协调并控制计算机各部件执行程序的指令序列,
基本功能包括取指令、分析指令、执行指令
取指令:自动形成指令地址;自动发出取指令的命令。
分析指令:操作码译码(分析本条指令要完成什么操作);产生操作数的有效地址。
执行指令:根据分析指令得到的“操作命令”和“操作数地址”形成操作信号控制序列,控制运算器、存储器以及I/0设备完成相应的操作。
中断处理:管理总线及输入输出,处理异常情况(如掉电)和特殊请求(如打印机请求打印一行字符)
1.程序计数器:用于指出下一条指令在主存中的存放地址。CPU就是根据PC的内容去主存中取指令的。因程序中指令(通常)是顺序执行的,所以PC有自增功能。
2.指令寄存器:用于保存当前正在执行的那条指令。
3.指令译码器:仅对操作码字段进行译码,向控制器提供特定的操作信号。
4.微操作信号发生器:根据IR的内容(指令)、PSW的内容(状态信息)及时序信号,产生控制整个计算机系统所需的各种控制信号,其结构有组合逻辑型和存储逻辑型两种。
5.时序系统:用于产生各种时序信号,它们都是由统一时钟(CLOCK)分频得到。
6.存储器地址寄存器:用于存放所要访问的主存单元的地址。
7.存储器数据寄存器:用于存放向主存写入的信息或从主存中读出的信息。
用户可见的寄存器:即用户可以通过指令改变寄存器内容的 (图中棕色的寄存器)
指令执行过程
指令周期
指令周期:CPU从主存中每取出并执行一条指令所需的全部执行时间(全部工作)
指令周期用若干机器周期来表示,也叫作CPU周期(完成一个子工作)
一个机器周期又包含若干时钟周期(也叫节拍、T周期或CPU时钟周期,是CPU操作最基本单位)
每个指令周期内机器周期数可以不相等,每个机器周期内的节拍数也可以不等
指令周期流程
指令周期的数据流
取值周期
1.当前指令地址送至存储器地址寄存器记做:(PC)—>MAR
2.CU发出控制信号,经控制总线传到主存,这里是读信号,记做:1→R
3.将MAR所指主存中的内容经数据总线送入MDR,记做:M(MAR)→MDR
4.将MDR中的内容(此时是指令)送入IR,记做:(MDR)→IR
5.CU发出控制信号,形成下一条指令地址,记做:(PC)+1>PC
间址周期
1.将指令的地址码送入MAR,记做:Ad(IR)—>MAR或Ad(MDR)—>MAR
2.CU发出控制信号,启动主存做读操作记做:1—>R
3.将MAR所指主存中的内容经数据总线送入MDR,记做:M(MAR)—>MDR
4.将有效地址送至指令的地址码字段,记做:(MDR)→>Ad(IR)
中断周期
中断:暂停当前任务去完成其他任务。为了能够恢复当前任务,需要保存断点。一般使用堆栈来保存断点,这里用SP表示栈顶地址,假设SP指向栈顶元素,进栈操作是先修改指针,后存入数据。
1.CU控制将SP减1,修改后的地址送入MAR记做:(SP)-1—>SP,(SP)—>MAR本质上是将断点存入某个存储单元,假设其地址为a,故可记做:a—>MAR
2.CU发出控制信号,启动主存做写操作,记做:1—>W
3.将断点(PC内容)送入MDR,记做:(PC)—>MDR
4.CU控制将中断服务程序的入口地址(由向量地址形成部件产生)送入PC,记做:向量地址—>PC
指令执行方案
方案1.单指令周期
对所有指令都选用相同的执行时间来完成
指令之间串行执行,指令周期取决于执行时间最长的指令的执行时间。
对于那些本来可以在更短时间内完成的指令,要使用这个较长的周期来完成,会降低整个系统的运行速度。
方案2.多指令周期
对不同类型的指令选用不同的执行步骤来完成
指令之间串行执行,可选用不同个数的时钟周期来完成不同指令的执行过程。
需要更复杂的硬件设计
方案3.流水线方案
在每一个时钟周期启动一条指令,尽量让多条指令同时运行,但各自处在不同的执行步骤中。指令之间并行执行。
数据通路
数据通路:数据在功能部件之间传送的路径。信息从哪里开始中间经过哪些部件最后传送到哪里
基本结构:1、CPU内部单总线方式 2、CPU内部多总线方式 3、专用数据通路方式
单总线结构
内部总线是指同一部件,如CPU内部连接各寄存器及运算部件之间的总线
系统总线是指同一台计算机系统的各部件,如CPU、内存、通道和各类I/0接口间互相连接的总线。
1.寄存器之间数据传送
比如把PC内容送至MAR,实现传送操作的流程及控制信号为:
(PC)→Bus PCout有效,PC内容送总线
Bus→MAR MARin有效,总线内容送MAR
2.主存与CPU之间的数据传送
比如CPU从主存读取指令,实现传送操作的流程及控制信号为:
(PC)→Bus→MAR PCout和MARin有效,现行指令地址—>MAR
1->R CU发读命令(通过控制总线发出,图中未画出)
MEM(MAR)->MDR MDRin有效
MDR—>Bus—>IR MDRout和IRin有效:现行指令→IR
3.执行算术或逻辑运算
比如一条加法指令,微操作序列及控制信号为:
1—>R CU发读命令
MEM(MAR)—>数据线—>MDR MDRin有效
MDR→Bus→Y MDRout和Yin有效,操作数→Y
(ACC)+(Y)→Z ACCout和ALUin有效,CU向ALU发送加命令
Z→ACC Zout和ACCin有效,结果→ACC
多总线比起单总线的差别就是,ALU是否需要暂存寄存器使用,还有多个数据流动
专用数据通路
(PC)→MAR Co有效
(MAR)→主存 C1有效
1→R 控制单元向主存发送读命令
M(MAR)→MDR C2有效
(MDR)→IR C3有效
(PC)+1→PC
Op(IR)→CU C4有效
硬布线控制器
CU发出一个微命令,正完成对应微操作。
如:微命令1使得PCout、MARin有效,完成对应的微操作1(PC)—>MAR
相当于一个机器周期中,一个节拍可以并行完成多个“相容的”微操作
同一个微操作可能在不同指令的不同阶段被使用
不同指令的执行周期所需节拍数各不相同。为了简化设计,选择定长的机器周期,以可能出现的最大节拍数为准(通常以访存所需节拍数作为参考)
若实际所需节拍数较少,可将微操作安排在机器周期末尾几个节拍上进行
根据 指令操作码、目前的机器周期、节拍信号、机器状态条件,即可确定现在这个节拍下应该发出哪些“微命令"
根据上述控制信号可以构建出对应的逻辑电路封装在CU中
安排微操作时序
原则一 微操作的先后顺序不得随意更改
原则二 被控对象不同的微操作,尽量安排在 一个节拍内完成
原则三 占用时间较短的微操作,尽量安排在 一个节拍内完成并允许有先后顺序
电路设计
1.列出操作时间表
2.写出微操作命令的最简表达式
3.画出逻辑图
硬布线控制器的特点:
指令越多,设计和实现就越复杂,因此一般用于RISC(精简指令集系统)
如果扩充一条新的指令,则控制器的设计就需要大改,因此扩充指令较困难。
由于使用纯硬件实现控制,因此执行速度很快。微操作控制信号由组合逻辑电路即时产生。
微程序控制器
设计思路
程序:由指令序列组成,对程序执行步骤的描述
微程序:由微指令序列组成,每一种指令对应一个微程序,对指令执行步骤的描述
采用存储程序的思想,CPU出厂前将所有指令的微程序存入控制存储器中。
微命令(发出微操作与之对应的信号)与微操作(强调我们要做什么)一一对应,微指令(微指令可能完成多个微操作)中可能包含多个微命令
指令是对微指令功能的封装
微程序控制器的基本结构
取值周期、间址周期、中断周期三个的微程序是一样的,执行指令的周期微指令可能不同
可以根据指令地址和中断信号来确定是否执行间址周期和中断周期
微指令设计
相容性微命令:可以并行完成的微命令
互斥性微命令:不允许并行完成的微命令
水平型微指令
一条微指令能定义多个可并行的微指令
优点:微程序短,执行速度快
缺点:微指令长,编写微程序较麻烦
1、直接编码方式
在微指令的操作控制字段中,每一位代表一个微操作命令某位为“1”表示该控制信号有效
优点:简单、直观,执行速度快,操作并行性好。
缺点:微指令字长过长,n个微命令就要求微指令的操作字段有n位,造成控存容量极大。
2、字段直接编码
将微指令的控制字段分成若干“段”,每段经译码后发出控制信号
微命令字段分段的原则:
①互斥性微命令分在同一段内,相容性微命令分在不同段内。
②每个小段中包含的信息位不能太多,否则将增译码线路的复杂性和译码时间。
③ 一般每个小段还要留出一个状态,表示本字段不发出任何微命令。因此,当某字段的长度为3位时,最多只能表示7个互斥的微命令,通常用000表示不操作。
3、字段间接编码方式
一个字段的某些微命令需由另一个字段中的某些微命令来解释,由于不是靠字段直接译码发出的微命令,故称为字段间接编码,又称隐式编码。
优点:进一步缩短微指令字长。
缺点:削弱了微指令的并行控制能力,故通常作为字段直接编码方式的一种辅助手段。
下一条地址形成方式
1.微指令的 下地址字段 指出
微指令格式中设置一个下地址字段,由微指令的下地址字段直接指出后继微指令的地址,这种方式又称为断定方式
2.根据机器指令的 操作码 形成当机器指令取至指令寄存器后,微指令的地址由操作码经微地址形成部件形成。
3.增量计数器法(CMAR)+1—>CMAR
4.分支转移 转移方式:指明判别条件;转移地址:指明转移成功后的去向。
5.通过测试网络
6.由硬件产生微程序入口地址
第一条微指令地址由专门硬件产生(用专门硬件记录取指期微程序首地址)
中断周期由 硬件 产生 中断周期微程序首地址(专门的硬件记录)
垂直型微指令
一条指令只能定义一个微命令,由操作码字段规定具体功能
优点:微指令短、简单、规整,便于编写微程序
块点:微程序长,执行速度慢,工作效率低
混合型微指令
微程序控制单元的设计
设计步骤
1.分析每个阶段的微操作序列
2.写出对应机器指令的微操作命令及节拍安排
显然,微程序控制器花费的时间更多
3.确定微指令格式
根据微操作个数决定采用何种编码方式,以确定微指令的操作控制字段的位数。根据CM中存储的微指令总数,确定微指令的顺序控制字段的位数。最后按操作控制字段位数和顺序控制字段位数就可确定微指令字长
4.编写微指令码点
根据操作控制字段每一位代表的微操作命令,编写每一条微指令的码点。
微程序设计分类:
1.静态微程序设计和动态微程序设计
静态 微程序无需改变,采用 ROM
动态 通过 改变微指令 和 微程序 改变机器指令有利于仿真,采用EPROM
2.毫微程序设计
毫微程序设计的基本概念
微程序设计用 微程序解释机器指令
亳微程序设计 用 亳微程序解释微程序
比较: