文章目录
5.1 CPU的功能和基本结构
5.1.1 CPU的基本功能
中央处理器(CPU)包括运算器和控制器
控制器扶额协调并控制计算机各个部件执行程序的指令序列,包括取指令、分析指令和执行指令
运算器负责对数据进行加工
CPU功能包括
- 指令控制:完成取指令、分析指令和执行指令的操作,即程序的顺序控制
- 操作控制:管理并产生指令的操作信号,送往相应部件,从而控制这些部件按照指令的要求进行动作
- 时间控制:对各种操作加以时间上的控制,为每条指令按照时间顺序提供应有的控制信号
- 数据加工:对数据进行算术和逻辑运算
- 中断处理:对异常情况和特殊请求进行处理
5.1.2 CPU的基本结构
运算器
运算器接受从控制器送来的命令并执行相应的动作,对数据进行加工和处理
主要由算术逻辑单元ALU,暂存寄存器、累加寄存器(ACC)、通用寄存器组、程序状态字寄存器PSW、移位器、计数器CT等组成
- 算术逻辑单元ALU(核心):主要功能是进行算术/逻辑运算
- 暂存寄存器:暂存从主存读来的数据,该数据不能存放在通用寄存器中,否则会破坏原有内容。暂存寄存器对应用程序员是透明的
- 累加寄存器:是一个通用寄存器,用于暂时存放ALU运算的结果,可以作为加法运算的一个输入端
- 通用寄存器组:例如AX、BX等,用于存放操作数、各种地址信息等
- 程序状态字寄存器:保留由算术逻辑运算指令或测试指令的结果而建立的各种状态信息。例如溢出标志OF、符号标志SF、零标志ZF、进位标志CF等
- 移位器:进行移位运算
- 计数器:控制乘法、除法运算的操作步数
控制器
控制器的基本功能:执行指令,每条指令的执行由控制器发出的一组微操作实现
控制器实现上有:硬布线和微程序控制器两种
控制器包括:程序计数器PC、指令寄存器IR、指令译码器、存储器地址寄存器MAR、存储器数据寄存器MDR、时序系统微操作信号发生器等
- 程序计数器PC:用于指出下一条指令在主存中的存放位置,PC有自增功能
- 指令寄存器IR:保存当前正在执行的那条指令
- 指令译码器:对操作码进行译码,向控制器提供特定的操作信号
- 存储器地址寄存器MAR:存放将要访问的主存单元的地址
- 存储器数据寄存器MDR:存放向主存写入的信息或从主存读出的信息
- 时序系统:产生各种时序信号,由统一时钟CLOCK分频得到
- 微信号操作发生器:根据IR、PSW及时序信号,产生各种控制信号
- 所谓的n位CPU中,n指的是数据总线的数量
- CPU的寄存器中,指令寄存器IR对用户是透明的
- 在一条无条件跳转指令的指令周期中,PC的值被修改2次。(取指令后PC+1,跳转后PC修改
5.2 指令执行过程
5.2.1 指令周期
CPU从主存中取出一条指令并执行的时间称为指令周期
指令周期通常用若干个机器周期来表示,每个机器周期又包含若干个时钟周期(CPU操作的最基本单位)
对于无条件跳转指令JMP X
,执行阶段不需要访问主存,只包含取指(包括取指和分析)阶段和执行阶段,因此其指令周期只包括取指周期和执行周期
对于间接寻址的指令,为了取操作数,需要先访问一次主存,取出有效地址,然后访问主存,取出操作数。因此还需要包括间址周期,间址周期介于取指和执行周期之间
取指周期 | 执行周期 |
---|
取指周期(取指令) | 间址周期(取有效地址) | 执行周期(执行指令) |
---|
CPU采用中断方式实现主机和I/O设备的信息交换时,每条指令结尾,都需要发送中断查询信号,如果有中断请求,则CPU进入中断相应阶段,又称中断周期。此时一个完整的指令周期包括:取指、间址、执行和中断周期
上述四个工作周期都有CPU访存操作,访存目的不同
- 取指周期:取指令
- 间址周期:取有效地址
- 执行周期:取操作数
- 中断周期:保存程序断点
取指周期(取指令) | 间址周期(取有效地址) | 执行周期(执行指令) | 中断周期 |
---|
为了区别不同工作周期,在CPU内设置4个标志触发器FE、IND、EX和INT,分别对应取指、间址、执行和中断周期,1表示有效
5.2.2 指令周期的数据流
数据流是根据指令要求依次访问的数据序列。在执行指令的不同阶段、以及对于不同指令,数据流往往不同
1. 取指周期数据流
取指周期的任务:根据PC的内容,从主存中取出指令代码,放在IR中
- PC->MAR->地址总线->主存
- CU发出读命令->控制总线->主存
- 主存->数据总线->MDR->IR
- CU发出控制信号->PC+1
2. 间址周期数据流
间址周期的任务:取操作数有效地址。将指令中的地址码送到MAR并发送至地址总线,之后CU向存储器发读命令,获取有效地址存到MDR
- Ad(IR)->MAR->地址总线->主存
- CU发出读命令->控制总线->主存
- 主存->数据总线->MDR(存放有效地址)
3. 执行周期数据流
执行周期的任务:取操作数,并根据IR中的指令字的操作码,通过ALU操作产生执行结果
不同指令的执行周期操作不同,因此没有统一的数据流向
4. 中断周期
任务:处理中断请求。
假设程序断点存入堆栈中,用SP指示栈顶位置,进栈操作先修改栈顶指针,后存入数据