【README】
本文总结自bilibili《计算机组成原理(哈工大刘宏伟)》的视频讲解,非常棒,墙裂推荐;
【1】CPU结构
Cpu的首要功能就是解释指令;功能列表如下:
- 1) 取指令:从内存中读取指令;
- 2) 分析指令:对指令的操作码部分进行解码;分析这条指令要完成什么功能,是指令集中的哪一条指令;
- 3) 执行指令: cpu控制器发出各种操作命令,由这些操作命令去控制相关部件去完成指令要求的操作;(这些操作命令有一定的先后顺序);
- 4) 控制器控制参数输入及结果输出;
- 5) 总线管理: 对总线的控制权,使用权进行管理;
- 6) 处理异常情况和特殊请求: 在程序执行过程中,控制器能够对异常情况,或特殊请求进行及时处理;
【2】cpu结构框图
【2.1】总线功能列表
1) 控制总线:双向,由cpu向各个部件发出的控制命令,或外部设备向cpu提出的请求以及外部设备的状态,可以通过控制总线来传输;
2) 数据总线:双向,由cpu向存储器或外设写出或读入数据;
3) 地址总线:单向, 由cpu发出,送给内存或外设接口;
【2.2】cpu内部结构
【2.2.1】寄存器
PC,程序计数器寄存器,存储要取出的指令的地址;
IR,指令寄存器,从内存中取出指令,被放入到IR寄存器中;
。。。其他寄存器;
【2.2.2】控制单元CU
操作控制和实际控制:这两部分需要控制单元CU,由控制单元对指令进行译码,译码之后,在给定时刻给出给定的操作命令;
【2.2.3】ALU(算术逻辑运算单元):
算术运算,逻辑运算都是在ALU中进行计算中;
另外在运算过程中,还需要寄存器,如2个操作数可能都保存在寄存器中,或运算结果也需要输出到寄存器中;
【2.2.4】中断系统
还需要中断处理,所以需要中断系统;
refer2 计算机中断系统小结(cpu响应中断)_PacosonSWJTU的博客-CSDN博客_各中断源如何向cpu提出中断请求
【3】cpu的寄存器
【3.1】用户可见寄存器
1) 通用寄存器:用于存放操作数,如8086cpu的AX,BX等;
2) 数据寄存器:存放操作数,如有保存整数的寄存器,也有保存浮点数的寄存器;如把ACC寄存器和MQ寄存器拼接在一起用于保存两个数相乘的积;
3) 地址寄存器:保存地址,如8086cpu中的段寄存器,如段基址,堆栈指针寄存器SP;
4) 条件码寄存器:存放条件码,根据条件码来判断是否要跳转执行指令;
补充:用户可见的寄存器指的是 用户在编写程序的过程中,可以使用这些寄存器的值;
【3.2】控制和状态寄存器
PC -> MAR -> M -> MDR ->IR 讲的是取指令的过程,其中
- PC-程序计数器寄存器:保存了将要执行的下一条指令的地址;
- MAR-主存(内存)地址寄存器:保存了访问内存(访存)的地址,从内存读出或写入内存某地址;
- M:主存(内存);
- MDR-主存(内存)数据寄存器:保存了访问内存(访存)的数据,从内存的MAR指定的地址单元读取的数据,或写入到MAR指定的地址单元的数据;
- IR:指令寄存器:存储要执行的指令;(而PC存储的下一条执行的地址)
步骤如下:
- PC -> MAR :PC(程序计数器寄存器)保存了下一条执行指令的地址,把下一条指令地址送入到MAR;
- MAR -> M :MAR中的指令地址送入到地址总线,地址总线再送入到主存;
- M -> MDR:从主存的MAR指定的内存单元读取数据(指令)到MDR
- MDR ->IR :把读取的数据(指令)从MDR 送入 IR;
写到这里,本文扩展性的给出取指令的步骤(干货):
步骤 | 描述 |
1 | PC把下一条指令的内存地址送入MAR; |
2 | MAR把地址送到地址总线,再由地址总线送到存储器; |
3 | CU把读控制信号送到控制总线上;再由控制总线送到存储器; |
4 | 存储器执行读操作,把相应的数据送到数据总线;通过数据总线送到MDR; (这个时候,指令已经被取出到cpu了,并保持到MDR寄存器中) |
5 | MDR把指令送到IR中; |
6 | CU把PC加1(得到下一条指令的地址);为下一条指令的取指操作做准备; |
【补充】
状态寄存器 :反映了指令执行结果的情况或计算机的软硬件状态;
PSW: 程序状态字寄存器(procedure state word);程序状态字是什么?
在中断或者是子程序调用过程中,为了能够让程序能够正确返回断点,返回断点后,还能够接着执行给定程序;在中断前或转子程序前,就需要保存程序的运行现场和断点,包括了程序运行的软硬件信息;这些软硬件信息就可以保存在程序状态字寄存器(它是一个大的寄存器);
【4】控制单元CU和中断系统
【4.1】控制单元CU
1)控制单元作用:产生全部指令在执行时所需要的微操作命令序列;
任何一条指令的执行,它会在cpu中译码;
根据它是一条什么样的指令,或完成什么功能;要产生完成这些功能所需的微操作命令及序列(保证微操作命令的顺序);
2)控制器的设计方式
- 组合逻辑设计: 通过硬连线逻辑,如精简指令集计算机 CISC;
- 微程序设计:存储逻辑;适用于复杂指令的设计;