计算机组成原理(八)

260 阅读9分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

第八章 CPU的结构和功能

CPU的结构

一、CPU功能

计算机对信息进行处理(或计算)是通过程序的执行而实现的,程序是完成某个确定算法的指令序列,要预先存放在存储器中。控制器的作用是控制程序的执行,它必须具有以下基本功能: 1、取指令 控制器必须具备能从存储器中取出指令的功能。 2、分析指令 分析指令包括两部分内容: 其一,分析此指令要完成什么操作,即控制器需发出什么操作命令; 其二,分析参加这次操作的操作数地址,即操作数的有效地址。 3、执行指令 执行指令就是根据分析指令产生的“操作命令”和“操作数地址”的要求,形成操作控制信号序列,通过对运算器、存储器以及I/O设备的操作,执行每条指令。 4、控制程序输入及结果的输出 5、总线管理 6、处理异常情况和特殊请求

二、CPU的寄存器

1、用户可见寄存器:用户可以对这类寄存器编程,以及通过优化使CPU因使用这类寄存器而减少对主存的访问次数。 (1)通用寄存器:存放操作数,可作某种寻址方式所需的专用寄存器。 (2)数据寄存器:存放操作数(满足各种数据类型) (3)地址寄存器:存放地址,其位数应满足最大的地址范围。 (4)条件码寄存器:存放条件码,可作为程序分支的依据。

2、控制和状态寄存器:用户不可对这类寄存器编程,它们被控制部件使用,以控制CPU的操作,也可被带有特权的操作系统程序使用,从而控制程序的执行。 (1)MAR:存储器地址寄存器,用于存放将被访问的存储单元的地址。 (2)MDR:存储器数据寄存器,用于存放欲存入存储器中的数据或最近从存储器中读出的数据。 (3)PC:程序计数器,存放现行指令的地址,通常具有计数功能。当遇到转移类指令时,PC的值可被修改。 (4)IR:指令寄存器,存放当前欲执行的指令。

四、控制单元和中断系统 控制单元(CU)是提供完成计算机全部指令操作的微操作命令序列部件。

指令周期

一、指令周期的基本概念 1、CPU每取出并执行一条指令所需的全部时间称为指令周期,也即CPU完成一条指令的时间。

指令周期.JPG

2、此外,当遇到间接寻址的指令时,由于指令字中只给出操作数有效地址的地址,因此,为了取出操作数,需先访问一次存储器,取出有效地址,然后再访问存储器,取出操作数。 间接寻址的指令周期包括,取指周期、间址周期和执行周期三个周期。

间接寻址.png 3、带有中断周期的指令周期

中断周期指令寻址.png 4、上述四个周期都有CPU访存操作,只是方寸的目的不同。取指周期是为了取指令,间址周期是为了取有效地址,执行周期是为了取操作数,中断周期是为了保存程序断点。

二、指令周期的数据流(P344)

1.取址周期数据流

取址周期数据流.png

目标:需要将PC中的地址取出,并存在IR(指令寄存器中) 步骤:先将PC中的指令地址送到MAR(主存地址寄存器)中,再通过地址总线送到存取器中,然后CU通过控制总线将存储器中的数据读出来并通过数据总线将数据送到MDR中,然后再送到IR中。但是,这样还没有完,CU还会将PC+1,使得PC指向下一条指令所在的地址

2.间址周期数据流

间址周期说明IR中或者是MDR中保存的是操作数的地址。 假设我们的操作数的地址保存在了MDR中:

间址周期数据流.png

首先,MAR先从MDR中将数据地址的地址读出,然后通过地址总线传到存储器中,CU发出控制信号,并通过控制总线将地址读出通过数据总线放回到MDR中

3.执行周期数据流

不同指令执行周期数据流不同

4.中断周期数据流

中断周期数据流.png

我们要知道中断周期我们做了什么操作: 保存断点 生成中断服务程序入口地址 硬件关闭断点

CU决定了把中断保存在内存单元的哪一个地址(保存断点是一个写操作) 首先,我们需要保存断点,但是有谁知道断点需要保存在哪里呢——CU,所以第一步是将CU中的地址传到MAR再通过地址总线传到存储器中,那么,我们是要保存当前断点的地址,当前断点的地址在哪里有呢——PC,所以第2步我们需要将PC的地址传到MDR通过数据总线传到存储器中。而中断程序的入口地址是由CU给出,CU直接将入口地址放入PC中

指令流水

一、指令流水 1、提高机器的运行速度从两方面入手: (1)提高器件的性能 (2)改进系统的结构,开发系统的并行性,其中并行分为同时性和并发性两个方面。同时性是指两个或多个事件在同一时刻发生,并发性是指两个或多个事件在同一时间段发生。 2、指令流水原理

指令流水原理.png

3、影响指令流水效率加倍的原因 如果取指和执行阶段在时间上完全重叠,相当于将指令周期减半。然后进一步分析流水线,就会发现存在两个原因使得执行效率加倍是不可能的。 (1)指令的执行时间一般大于取指时间,因此取指阶段可能要等待一段时间,也即存放在指令部件缓冲区的指令还不能立即传给执行部件,缓冲区不能空出。 (2)当遇到条件转移指令时,下一条指令是不可知的,因为必须等到执行阶段结束后,才能获知条件是否成立,从而决定下条指令的地址,造成时间损失。 二、影响指令流水性能的因素

1、结构相关:不同指令争用同一功能部件产生资源冲突 2、数据相关:不同指令因重叠操作,可能改变操作数的读写访问顺序 3、控制相关:由转移指令引起的

三、流水线性能 1、吞吐率

指令流水线中,吞吐率是指单位时间内流水线所完成的指令或输出结果的数量。

2、加速比

流水线的加速比是指m段流水线的速度与等功能的非流水线的速度之比。

3、效率

效率是指流水线中各功能段的利用率。

中断系统

一、概述 1、引起中断的各种因素 (1)人为设置的中断 (2)程序性事故 (3)硬件故障 (4)I/O设备 (5)外部事件

2、中断系统需要解决的问题

中断系统需要解决的问题.png

二、中断请求标记和中断判优逻辑 1、中断请求标记INTR 为了判断是哪个中断源提出请求,在中断系统中必须设置中断请求标记触发器,简称中断请求触发器,记作INRT。当其状态为1时,表示中断源有请求。 2、中断判优逻辑 任何一个中断系统,在任意时刻,只能响应一个中断源的请求。但许多中断源提出请求都是随机的,当某一时刻有多个中断源提出中断请求时,中断系统必须按其优先顺序予以响应,这称为中断判优。 中断判优可由硬件排队软件排队两种方式实现。 硬件排队:排队器 。 软件排队:程序查询 。

三、中断服务程序入口地址的寻找 由于不同的中断源对应不同的中断服务程序,故准确找到服务程序的入口地址是中断处理的核心问题。 1、硬件向量法 硬件向量法就是利用硬件产生向量地址,再由向量地址找到中断服务程序的入口地址。 2、软件查询法 用软件寻找中断服务程序入口地址的方法称为中断查询法。不涉及硬件,但查询时间长。

四、中断响应 1、响应中断的条件 允许中断触发器 EINT = 1 2、响应中断的时间 指令执行周期结束时刻由CPU发查询信号。 3、中断隐指令 (1)保护程序断点 保护程序断点就是要将当前程序计数器PC的内容(程序断点)保存到存储器中,它可以存到存储器的特定单元(如0号地址)内,也可以存入堆栈。 (2)寻找中断服务程序的入口地址 向量地址——PC(硬件向量法) 中断识别程序入口地址M——PC (软件查询法) (3)硬件关中断 CPU进入中断周期,意味着CPU响应了某个中断源的请求,为了确保CPU响应后所需做的一系列操作不至于又受到新的中断请求的干扰,再中断周期内必须自动关中断,以禁止CPU再次响应新的中断请求。EINT为允许中断触发器,INT为中断标记触发器,当进入中断周期时,INT为1状态,触发器使EINT置0,即关中断。

上述保护断点、寻找入口地址和关中断这些操作都是在中断周期内由一条中断隐指令完成的。所谓中断隐指令,即在机器指令系统中没有的指令,它是CPU在中断周期内由硬件自动完成的一条指令。

五、保护现场和恢复现场 保护现场应该包括保护程序断点和保护CPU内部各寄存器内容的现场两个方面。 恢复现场是指在中断返回前,必须将寄存器的内容恢复到中断处理前的状态。

保护现场和恢复现场.png