计算机组成原理学习笔记(4)
计算机组成原理学习笔记(4)
中央处理器
cpu的功能
cpu由运算器和控制器组成。具体功能包括
- 指令控制。完成取指令(也称取指)、分析指令和执行指令的操作,即程序的顺序控制。
- 操作控制。产生完成一条指令所需的操作信号,把各种操作信号送到相应的部件,从而控制这些部件按指令的要求正确执行。
- 时间控制。严格控制各种操作信号的出现时间、持续时间及出现的时间顺序。
- 数据加工。对数据进行算术和逻辑运算。
- 中断处理。对运行过程中出现的异常情况和中断请求进行处理。
指令周期的数据流
取指周期的数据流向如下:
$1)PC\textcircled{1}MAR\textcircled{2}地址总线\textcircled{3}$存储器。
2)CU发出读命令$\textcircled{4}$控制总线$\textcircled{5}$存储器。
3)主存$\textcircled{6}$数据总线$\textcircled{7}$MDR$\underline{\textcircled{8}}$IR(存放指令)。
4)CU发出控制信号,PC 内容加 1。
间址周期的数据流向如下:
1)Ad(IR)(或 MDR)$\textcircled{1}$MAR$\textcircled{2}$地址总线@存储器。
2)CU发出读命令$\textcircled{4}$控制总线$\textcircled{5}$存储器。
3)主存$\textcircled{6}$数据总线$\textcircled{7}$MDR(存放有效地址)。
中断周期的任务是处理中断请求。假设程序断点存入堆栈中,并用 SP 指示栈顶地址,而且进栈操作是先修改栈顶指针,后存入数据。
中断周期的数据流向如下:
1)CU控制将 SP 减 l, SP$\underline{\textcircled{1}}$MAR$\textcircled{2}$地址总线$\textcircled{3}$存储器。
2)CU发出写命令$\textcircled{4}$控制总线$\textcircled{5}$存储器。
3)PC_OMDR$\textcircled{7}$数据总线$\textcircled{8}$主存(程序断点存入存储器)。
4)CU(中断服务程序的入口地址)9PC。
数据通路
数据通路的功能
数据在指令执行过程中所经过的路径,包括路径上的部件,称为数据通路,ALU、通用寄存器、状态寄存器、异常和中断处理逻辑等都是指令执行时数据流经的部件,都属于数据通路的一部分。数据通路描述了信息从哪里开始,中间经过哪些部件,最后被传送到哪里。数据通路由控制部件控制,控制部件根据每条指令功能的不同,生成对数据通路的控制信号。
数据通路的组成
- 操作元件
不含记忆单元,不受时钟信号控制。如:加法器,算术逻辑单元(ALU),译码器,多路选择器,三态门 - 状态元件
任何时刻的输出不仅与该时刻的输入有关,还与该时刻之前的输入有关。如:各类寄存器和存储器,都属于时序逻辑元件
数据通路的基本结构
- CPU内单总线
将ALU及所有寄存器连接到一条内部公共总线上。结构简单但数据传输有较多冲突,性能较低。 - 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。
流水线的基本实现
一些例题
下列部件不属于控制器的是( )。
A. 指令寄存器
B. 程序计数器
C. 程序状态字寄存器
D. 时序电路
在CPU的寄存器中,()对用户是透明的。
A.程序计数器
B.状态寄存器
C.指令寄存器
D.通用寄存器
程序计数器 (PC) 可以使用字节地址或字地址,其位数取决于 ( )。
I. 存储器的容量 II. 机器字长 III. 指令字长
A. I
B. I 和 III
C. II 和 III
D. I、II 和 III
下列关于程序计数器(PC)的叙述中,错误的是()。
A. 机器指令中不能显式地使用 PC
B. 指令顺序执行时,PC值总是自动加 1
C. 调用指令执行后,PC值一定是被调用过程的入口地址
D. 无条件转移指令执行后,PC值一定是转移目标地址
指令周期由一个到几个机器周期组成,第一个机器周期是()。
A. 从主存中取出指令字
B. 从主存中取出指令操作码
C.从主存中取出指令地址码
D. 从主存中取出指令的地址
下列关于各种字长的说法中,正确的是()。
I. 指令字长等于机器字长的前提下,取指周期等于机器周期 II. 指令字长等于存储字长的前提下,取指周期等于机器周期 III. 指令字长和机器字长的长度没有任何关系
IV. 为了硬件设计方便,指令字长都和存储字长一样大
A. II、III B. II、III、IV C. I、III、IV D. I、IV
冯·诺依曼计算机中指令和数据均以二进制形式存放在存储器中,CPU区分它们的依据是( )。
A. 指令操作码的译码结果
B. 指令和数据的寻址方式
C. 指令周期的不同阶段
D. 指令和数据所在的存储单元
CCBBA AC