CPU 的功能和基本结构
CPU 的功能
由 运算器 和 控制器 组成,控制器的主要功能是负责协调并控制计算机个部件执行程序的指令序列,包括取指令、分析指令和执行指令;运算器的功能是对数据进行加工。
的功能可以细化为:
- 指令控制,同样是取指令、分析指令和执行指令的操作,实现程序的顺序控制;
- 操作控制,一条指令的功能可能由若干个操作信号组成, 需要管理这些信号,并将其送入对应的组件;
- 时间控制,为每条指令按时间顺讯提供应有的控制信号;
- 数据加工,对数据进行算术和逻辑运算;
- 中断处理,对计算机运行过程中出现的异常情况和特殊请求进行处理。
CPU 的基本结构
运算器
由算术逻辑单元()、暂存寄存器、累加寄存器()、通用寄存器组 、程序状态字寄存器()、移位器、计数器()等组成。
这些部分前文都有描述,不再赘述。
控制器
控制器是整个系统的指挥中枢,保证了运算器、存储器和输入/输出设备等组件构成一个有机的整体,其基本功能是执行指令——每条指令由控制器发出的一组微操作(微指令)实现。
控制器有两种类型——硬布线控制器和微程序控制器。
控制器主要由程序计数器()、指令寄存器()、指令译码器、存储器地址寄存器()、存储器数据寄存器()、时序系统和微操作信号发生器等组成。
其中时序系统用于产生各种时序信号,由时钟信号分频得到。
微操作信号发生器是根据 、 的内容以及时序信号,产生控制整个计算机系统给所需要的各种控制信号,其结构由组合逻辑型和存储逻辑型。
中的通用寄存器组、程序状态字寄存器、程序计数器等是可见的,而 、 等对用户、程序员则是透明的。
其他
条件转移指令执行的依据是标志寄存器;
指令译码指的是对指令的操作码字段进行译码;
中寄存器的位数和数据总线的位数是相同的。
指令执行过程
指令周期
从主存中取出并执行一条指令的时间称为指令周期,不同指令的指令周期可能不同。
指令周期通常用若干机器周期表示,而机器周期可以用若干时钟周期表示。
不同类型的指令的机器周期并不相同,如无条件转移指令,在执行时不需访问主存,因此只需要取指和执行;对于间接寻址的指令,其需要访问两次主存。
若 采用中断的方式实现 通信,则需要在每条指令结束后添加一条中断周期,用于询问是否有中断请求,有则进入中断响应阶段。
通信有四种方式——无条件传送、程序查询传送、中断传送与 传送。
为了区别不同的工作周期, 内设置了 个标志触发器 、、 和 ,分别对应取指、间址、执行和中断周期,高电平有效。
指令周期的数据流
取指周期:根据 中的内容从主存中取出指令代码并存放在 中
因此数据流如下:
- 地址总线 主存(主存的额外的地址寄存器);
- 发出读命令 控制总线 主存(控制读写电路);
- 主存 数据总线 ;
- 发出控制信号 加 .
间址周期:取出操作数的有效地址
以一次间址为例,数据流:
- 或 地址总线 主存;
- 读命令 控制总线 主存;
- 主存 数据总线 .
这里的或 是因为取指周期结束后, 中的值并没有改变,因此和使用 中的值一样;如果是多次间址,则第一次之后的间址需要使用 MDR。
执行周期:取出操作数,并根据 中的指令字的操作码通过 执行,不同指令的执行周期不同,因此没有统一的数据流向。
中断周期:处理中断请求,程序断点存入堆栈,并用 指示栈顶地址,进栈操作为先修改栈顶指针,在存入数据。
数据流为:
- 控制 减 , 地址总线 主存;
- 写命令 控制总线 主存;
- 数据总线 主存(程序断点存入主存);
- (中断服务程序的入口地址).
指令执行方案
出于性能和硬件成本的考虑,可选用 种不同的方案来安排指令的执行步骤。
单指令周期:所有的指令都采用相同的执行时间来完成
每条指令都在一个时钟周期内完成,指令之间串行执行,因时钟周期取决于执行时间最长的指令。
多指令周期:不同类型的指令选用不同的执行步骤
串行执行,但是每个指令需要几个周期就为其分配几个周期。
流水线方案:指令可以并行执行,具体见计算机体系结构的相关笔记。