控制单元(Control Unit) 控制单元:是CPU的主要部件,是CPU的核心。 CPU的基本任务:数据的存储、传输、处理
任何任务(不管是CPU内部的还是CPU外部的)都离不开控制信号,控制信号就来自控制单元。
程序是一系列按照时间顺序执行的指令。
每一条指令都可以分解为若干个步骤,这些步骤是有时间先后顺序的,称为微操作。 微操作是最基本的,最小的程序操作,是控制单元的最小的功能单位。
分层:
微操作、微代码和硬件实现对汇编语言程序员是不可见的,对CPU的设计者是可见的。 CPU指令集是对汇编语言程序员可见的最小功能单位。
MAR:存储器的地址寄存器,与地址总线连接在一起
MBR:存储器的缓冲寄存器,与数据总线连接在一起。也叫MDR,存储器的数据寄存器。
汇编语言程序员可以直接操作寄存器(如通用的数据寄存器、段寄存器、指针寄存器、标志寄存器),如给寄存器赋值,但是这两个寄存器对汇编语言程序员是不可见的,对计算机的设计者是可见的。
CPU有内部总线,CPU内的各个部分可以通过内部总线连接到一起。
CPU内部与外部的地址总线连接在一起的部件只有MAR,与外部的数据总线连接在一起的部件只有MBR。
CPU内部的地址信号都要通过MAR才能送到地址总线当中去。
程序执行的时间就是它所有指令执行的时间的总和。 每条指令的指令周期(执行时间)一般是不同的。 每条指令的指令周期可分为多个周期,如: 1、 取址周期(从内存中读取指令)
把PC中的内容读取出来,作为地址信号,送到MAR中 把MAR中的地址信号送到数据总线中 把地址信号通过地址总线送到内存中 读取内容,送到MBR中
打开数据总线,把MBR中的内容送到数据总线中 把指令送到指令寄存器中 2、 间址周期(如果不是直接寻址或者立即寻址获取操作数,则需要去寻址得到操作数,
所以不是所有的指令需要这个周期) 需要判断,但不一定需要这个周期
把指令寄存器中与间址部分的内容读取出来,送到MAR中 把地址信号送到地址总线中去。
从内存中读取到该地址的内容,并送回到MBR中 把MBR中的内容送到IR中
根据MBR中的地址信号去获取操作数。
3、 执行周期
由于指令的功能不同,执行周期的长短可能是不同的,也不能归纳出指令进行的共同操作。
a. 不涉及对内存的操作的指令
不需要用到MAR和MBR 如对累加器取反
b. 涉及到对内存的操作的指令
如对内存的读写;对两个操作数进行相加,其中有一个操作数用间接寻址,需要到内存中寻址。 c. 跳转指令
a) 涉及到对内存的操作 b) 不涉及对内存的操作
4、 中断周期(打断当前执行的程序去响应外部的硬件或者软件中断的请求)
中断的响应一定是在某一条指令执行完毕之后。
如果接受中断请求,则要先保存现场,然后才响应中断。 需要判断,但不一定需要这个周期
对于不同的中断,执行的任务是不一样的。但是在响应中断之前,它们有共同的内容。
子程序与中断的区别:
程序写完之后,要调用多少子程序,在哪里调用,我们是知道的,而中断什么时候发生我们是不知道的。
所以处理器在设计的时候要能随时响应中断
中断响应的时候:
1、 断点的保护,保留现场,把PC中的值读出来送到MBR中,指令的地址要当做
数据保护起来,所以送到MBR中,然后送到存储器中保存。
2、 把保留现场的堆栈地址送到MAR中。中断响应结束后到这里读取数据继续进
行操作。
3、 把中断服务程序的第一条指令存储的地址送到PC中
设计微操作的时候要注意避免资源冲突。
我们并不知道中断处理器当前处于哪个周期时,可以用两个二进制位来标识状态,称为指令周期寄存器(ICC, Instruction Cycle Code)。并且根据ICC来判断下一步要进入哪个周期。
要设计这么一个控制单元,需要分析:
1、 分析与微操作有关的物理单元,定义控制单元需要的物理单元,如取址需要用到
PC、MAR
需要有的基本物理单元:ALU、寄存器、内部数据连接路径(CPU内部总线)、外部连接路径(外部总线)、控制单元 2、 描述微操作的功能
a. 在寄存器之间传输数据 b. 从寄存器传输到外部 c. 从外部读取到寄存器 d. 算术运算和逻辑运算
相比之下,bc两个需要的时间比另外两个长,因为它们只在CPU内部执行。
3、 确定控制器必须具备什么功能才能完成微操作,也就是如何完成这些微操作,比如
如何进行取址 控制器的功能:(通过控制信号来实现) a. 排序
不同微操作相互之间是有时间顺序的,要对它们进行排序,比如要先取址再执行。 b. 执行
控制微操作进行执行,不管什么时候,只有接受到控制信号才会进行操作
控制单元的设计有两种设计方式:
1、 直接通过硬件设计
a. 进行需求分析,分析输入输出(要把所有输入输出考虑齐全)
每一个微操作都有一个独立的逻辑 输入:
(1) 指令寄存器:正在执行的指令(要通过指令译码器才输入) (2) 标志寄存器:SVZC四个标志寄存器
(3) 控制总线:中断请求是通过控制总线传输到控制单元的
(4) 时钟信号:所有微操作都要与时钟同步,只有时钟来了才发出控
制信号,排序根据时钟信号作为基准,是一串重复的脉冲序列 输出:控制信号 输出的目的地:
CPU内部和外部(存储器或者I/O模块,通过控制总线传输)
b. 设计电路
优点: 速度快,效率高 缺点:
1. 设计比较困难 2. 测试比较困难
3. 可扩展性低,要增加新的功能比较麻烦
2、 通过微程序设计(或者成为固件:具有特定功能的硬件,如已经烧录好的ROM)
a. 分析什么时候需要什么样的控制信号
b. 把控制信号保存起来,需要用到的时候直接调出来用就可以了(而不是通
过硬件电路来产生它)
c. 每一条指令是用一段微程序来构造,微程序的内部由若干条微指令构成
的,CPU内部会存储这些微程序,存储在控制存储器中,简称为控存 d. 每一个微操作都分配一个相应的控制字 e. 要知道下一条微指令的地址
f. 通过指令寄存器读取第一条指令,然后通过指令译码器得到微程序的地
址,通过顺序逻辑产生下一条指令的地址
g. 微指令包含有跳转条件和下一条指令的地址,通过这个来判断下一条指令
的位置,一般是不用到这个地址的,一般用微指令地址加1,如果跳转条件成立则跳转到上面的地址。
任何两个单元之间的连接都需要一个控制信号来启动连接 以取址为例:
1、 要把PC中的内容送到MAR中
控制单元输送门控信号,打开PC和MAR直接的内部总线 2、 从内存中读取数据到MBR中
控制单元输送门控信号,打开MAR与地址总线之间的连接 控制单元输送内存读取信号
控制单元输送门控信号,打开MBR与数据总线之间的连接
连接的组织:
1、 只用一条内部总线,每个部件都挂在这条总线上(每个部件都有两条通道,一条进
行读入,一条进行输出,每条通道都需要控制信号来启动),部件之间的传输需要经过内部总线,而不是网状的每两个部件之间直接连接。 2、 门控信号决定是把数据传输到总线上还是从总线上读取数据
3、 门控信号决定是把数据传输到外部总线上还是从外部总线上读取数据 4、 ALU需要临时寄存器来存储一些临时数据
机器周期:为了衡量指令运行的时间和效率,我们定义一个基准时间,一般用处理器的耗时最长的功能作为这个基准时间,也就是对存储器的读或者写的时间(称为访存周期,由于占用总线,所以也称为总线周期)。
机器周期与总线周期的定义是不一样的,但是值是一样的。
一个机器周期包含若干个时钟周期,不是在一个时钟周期内就可以完成的。 一个指令周期大于机器周期,一个指令周期含有若干个机器周期。 判断指令运行时间长短可以直接看指令的指令周期,也可以用指令周期与机器周期的比来判断指令运行时间的长短。
计算机组成原理与接口技术笔记 5 第五周 控制单元



