(一)CPU的功能和基本结构
CPU = 运算器 + 控制器 。
运算器的功能是完成数据加工
控制器的功能有指令控制(完成对取指令、分析指令、指令执行整个过程的控制),时间控制,中断,操作控制(将指令执行过程中产生的控制信号送往各个部件)。
运算器结构:ALU、程序状态寄存器PSW(存放标志信息如OF、ZF)、通用寄存器、累加寄存器ACC(保留结果)、暂存寄存器(保留主存传递来的数据)
控制器结构:PC、MAR、MDR、IR、指令译码器、时间控制单元(用于产生各种时序信号)、微操作信号产生器。
(二)指令执行过程
指令执行最多可分为四个周期:取指、间址、执行、中断。
其中取指周期:
根据指令所在地址找指令:(PC)→MAR
CU发出控制信号,读取存储体:1→R
根据MAR的值在存储体中取指令:M(MAR)→MDR
此时MDR的值即为指令,MDR→IR
PC值+1:(PC)+1→PC
间址周期:针对操作数的直接地址没有给出(可理解为给出的是一个二级指针),要找到操作数的直接地址(不是操作数本身)
根据译码得到指令的地址码部分,得到二级地址:Ad(IR)→MAR
CU发出读信号:1→R
存储体找到该地址中存放的值:M(MAR)→MDR
将该MDR的值写回IR中的地址码:(MDR)→Ad(IR)
执行周期:
根据指令的具体种类进行操作,无固定的微命令。
如加法(其中一个操作数已保存在ACC中):
Ad(IR)→ MAR;
CU发出读信号 1→R;
M(MAR) → MDR;
MDR + ACC → ACC;
中断周期(有些指令有中断操作):
修改堆栈地址:SP-1→SP,SP→MAR(计算机中堆栈指针都是向低地址靠近,与传统栈相反)
CU发出写信号
保存当前PC:(PC)→MDR
设置PC为中断入口地址:入口地址→PC
关中断
(三)数据通路的功能和基本结构
数据通路的基本结构有三种:
1.单总线:内部只有一根总线,ALU、MAR、MDR、IR、PC共用这一根总线,(MAR和MDR之间数据传递用存储器内部的地址线和数据线传递)
2.多总线:内部有多根总线
3.专用数据通路:专门设置数据通路
数据通路功能:实现数据在各个部件之间的传输
(四)控制器的功能和工作原理
控制器的功能:1.从存储器中取出指令,并给出下一条指令的位置
2.对指令进行译码,根据译码结果给出控制信号,控制指令之后的执行过程
3.控制输入设备、输出设备、CPU、存储器中的数据流向。
控制器的工作原理:
控制器分为硬布线控制器和微程序控制器。
硬布线控制器的工作原理是,逻辑门电路等硬件根据指令码、时序、状态,产生微操作控制信号。
微程序控制器的工作原理是,微操作控制信号存放在控制器内部的微程序存储器中,执行指令时读取存储器产生微操作控制信号。(相当于编程式产生指令的控制信号,便于修改)
采用微程序控制器,指令执行速度慢,但方便修改;采用硬布线控制器,指令执行速度快,但不方便修改,因为在设计硬件电路时,根据指令集的特点已经将硬件电路设计死;若再引入新的指令,则可能由于硬件电路无法识别而导致指令的微操作控制信号无法产生。
(五)异常和中断的机制
1.异常和中断的基本概念
异常:内中断,是CPU内部执行指令时产生的异常情况,与正在执行的指令相关的同步事件,如除数为0、地址越界、译码的时候出现非法操作码。
异常分为:故障、陷入、终止。
故障:如缺页中断(也是硬件故障)、越界中断,是可以被修复的
陷入:如系统调用,是系统有意而为之的异常
终止:计算机发生了无法返回的硬件故障,程序无法执行,只能终止。如控制器出错、存储器出错。
中断:外中断,是由CPU外部设备触发、与当前正在执行的指令无关的异步事件(通常是输入输出设备),CPU每执行完一条指令就检查有无外部设备向CPU发送中断信号,若有则转入中断处理。
2.异常和中断的处理过程
1.中断检测
2.中断响应:根据中断信号,找到中断向量入口地址
3.保存上下文现场
4.关中断
5.进入中断处理
6.返回到程序执行
(六)指令流水线
1.指令流水线的基本概念
将不同的指令划分多个阶段,不同阶段采用不同的部件运行,使得在同一时刻内多个部件能够同时运行,提高运行效率。
2.指令流水线的基本实现
影响指令流水线实现的三种冒险:
①结构冲突
解决方法:1.将存储器分为数据存储器和指令存储器
2.将后一相关指令暂停执行一个时钟周期
②数据冲突
解决方法:1.采用数据旁路优化技术
2.在编译时进行指令的优化
3.将相关指令暂停多个时钟周期
③控制冲突:
解决方法:1.静态分支预测
2.动态分支预测
3.分支目标缓冲(有一个缓冲器存放之前的转移情况,遇到转移指令查看之前的情况是否转移从而判断本次是否要转移)
4.分支延迟槽(一般延迟一个时钟周期)
3.超标量和动态流水线的基本概念
超标量流水线——在硬件上叠加
对于同一部件,配置多个,从而使得能在一个时钟周期每个相同的部件都在运行指令,提高指令执行速度。
动态流水线——同一时间内,可以执行不同的功能,如同一时间内既能做乘法也能做加法,且硬件足够多能够符合同时做乘法和加法的需要。