计算机组成原理学习笔记(4)
计算机组成原理学习笔记(4)
中央处理器
cpu的功能
cpu由运算器和控制器组成。具体功能包括
- 指令控制。完成取指令(也称取指)、分析指令和执行指令的操作,即程序的顺序控制。
- 操作控制。产生完成一条指令所需的操作信号,把各种操作信号送到相应的部件,从而控制这些部件按指令的要求正确执行。
- 时间控制。严格控制各种操作信号的出现时间、持续时间及出现的时间顺序。
- 数据加工。对数据进行算术和逻辑运算。
- 中断处理。对运行过程中出现的异常情况和中断请求进行处理。
cpu的结构
控制器的功能和结构
下图为计算机的五大功能部件和连接关系,虚线框为控制器部件。
1)运算器部件通过数据总线与内存储器、输入设备和输出设备传送数据。
2)输入设备和输出设备通过接口电路与总线相连接。
3)内存储器、输入设备和输出设备从地址总线接收地址信息,从控制总线得到控制信号,通过数据总线与其他部件传送数据。
4)控制器部件从数据总线接收指令信息,从运算器部件接收指令转移地址,送出指令地址到地址总线,还要向系统中的部件提供它们运行所需要的控制信号。
控制器的主要功能有
1)从主存中取出一条指令,并指出下一条指令在主存中的位置。
2)对指令进行译码或测试,产生相应的操作控制信号,以便启动规定的动作。
3)指挥并控制 CPU、主存、输入设备和输出设备之间的数据流动方向。
根据控制器产生微操作控制信号的方式的不同,控制器可分为硬布线控制器和微程序控制器,两类控制器中的 PC 和 IR 是相同的,但确定和表示指令执行步骤的办法及给出控制各部件运行所需要的控制信号的方案是不同的。
硬布线控制器
又称组合逻辑控制器。通过输入,发送一系列微操作控制信号导cpu内部或外部控制总线。
控制单元(CU)的输入信号来源如下:
1)经指令译码器译码产生的指令信息。现行指令的操作码决定了不同指令在执行周期所需完成的不同操作,它与时钟配合产生不同的控制信号。
2)时序系统产生的机器周期信号和节拍信号。为了使控制单元按一定的先后顺序、一定的节奏发出各个控制信号,控制单元必须受时钟控制。
3)来自执行单元的反馈信息即标志。控制单元有时需依赖 CPU 当前所处的状态产生控制信号,如 BAN 指令,控制单元要根据上条指令的结果是否为负来产生不同的控制信号。
微程序控制器
通过存储逻辑实现,也就是将微操作信号代码化,将机器指令转化为微程序存在控制存储器里,微操作控制信号由微指令产生。
基本概念
(1)微命令与微操作
在微程序控制的计算机中,控制部件向执行部件发出的各种控制命令称为微命令,它是构成控制序列的最小单位。例如,打开或关闭某个控制门的电位信号、某个寄存器的打入脉冲等。执行部件收到微命令后所进行的操作称为微操作,微命令和微操作是一一对应的。
微命令有相容性和互斥性之分。相容性微命令是指那些可以同时出现、共同完成某一些微操作的微命令;而互斥性微命令是指在机器中不允许同时出现的微命令。
(2)微指令与微周期
微指令是若干微命令的集合,一条微指令通常至少包含两大部分信息:
$\textcircled{1}$操作控制字段,也称微操作码字段,用于产生某一步操作所需的各种操作控制信号。
$\textcircled{2}$顺序控制字段,也称微地址码字段,用于控制产生下一条要执行的微指令地址。
微周期是指从控制存储器中取出并执行一条微指令所需的全部时间,通常为一个时钟周期。
(3)程序与微程序
微程序和程序是两个不同的概念。程序是指令的有序集合,用于完成特定的功能。微程序是微指令的有序集合,用于描述机器指令,一条指令的功能由一段微程序来实现。微程序实际上是机器指令的实时解释器,是由计算机设计者事先编制好并存放在控制存储器中的,一般不提供给用户。对于程序员来说,系统中微程序的结构和功能是透明的,无须知道。程序最终由机器指令组成,并且由软件设计人员事先编制好并存放在主存储器或者辅助存储器中。
读者应注意区分以下寄存器:
① 地址寄存器(MAR)。用于存放主存的读/写地址。
② 微指令地址寄存器(μPC或CMAR)。用于存放待执行的微指令在控制存储器中的微地址。
③ 指令寄存器(IR)。用于存放从主存中读出的指令。
④ 微指令寄存器(μIR或CMDR)。用于存放从控制存储器中读出的微指令。
微程序控制器的组成和工作过程
组成
工作过程
实际上就是在微程序控制器的控制下计算机执行机器指令的过程,这个过程可描述为:
- 执行取指令公共操作。在机器开始运行时,自动地将取指微程序的入口地址送入 μPC,并从 CM 中读出相应的微指令并送入 μIR。取指微程序的入口地址一般为 CM 的 0 号单元,取指微程序执行完成后,从主存中取出的机器指令就已存入指令寄存器中。
- 由机器指令的操作码字段通过微地址形成部件产生该机器指令所对应的微程序的入口地址,并送入 μPC。
- 从 CM 中逐条取出对应的微指令并执行。
- 执行完对应于一条机器指令的一个微程序后,又回到取指微程序的入口地址,继续执行下一条机器指令的公共操作。
以上是一条机器指令的执行过程,如此周而复始,直到整个程序执行完毕。
异常和中断
由CPU内部产生的意外事件被称为异常,也叫内中断。来自CPU外发出的中断请求叫做中断,也叫外中断。
异常的分类
异常是由 CPU 内部产生的意外事件,分为硬故障中断和程序性异常。硬故障中断是由硬连线出现异常引起的,如存储器校验错、总线错误等。程序性异常也称软件中断,是指在 CPU 内部因执行指令而引起的异常事件。如整除 0、溢出、断点、单步跟踪、非法指令、栈溢出、地址越界、缺页等。按异常发生原因和返回方式的不同,可分为故障、自陷和终止。
- 故障
在引起故障的指令启动后,执行结束前被检查到的异常。如:非法操作码,缺页,除以0。对于一些异常,可以经过处理,将所需要的数据或操作完成,回到原先的指令继续完成 - 陷阱
提前安排好的异常。通过特殊指令或特殊控制状态人为设置陷阱,当运行到陷阱时,cpu按照不同情况处理。如:系统调用指令,断点的实现 - 终止
计算机无法处理的硬件故障。如:控制器出错,存储器校验错,总线错误。此时,调出异常服务程序来重启系统。
中断的分类
(1) 可屏蔽中断
指通过可屏蔽中断请求线 INTR 向 CPU 发出的中断请求。CPU 可以通过在中断控制器中设置相应的屏蔽字来屏蔽它或不屏蔽它,被屏蔽的中断请求将不被送到 CPU。
(2) 不可屏蔽中断
指通过专门的不可屏蔽中断请求线 NMI 向 CPU 发出的中断请求,通常是非常紧急的硬件故障,如电源掉电等。这类中断请求信号不可被屏蔽,以让 CPU 快速处理这类紧急事件。
中断和异常在本质上是一样的,但它们之间有以下两个重要的不同点:
- “缺页”或“溢出”等异常事件是由特定指令在执行过程中产生的,而中断不和任何指令相关联,也不阻止任何指令的完成。
- 异常的检测由 CPU 自身完成,不必通过外部的某个信号通知 CPU。对于中断,CPU 必须通过中断请求线获取中断源的信息,才能知道哪个设备发生了何种中断。
指令流水线
理想情况下,每个时钟周期都有一条指令进入流水线,每个时钟周期都有一个指令完成,每条指令的时钟周期都为1。