控制器的功能
控制器的功能:按每条指令的要求产生所需的控制信号
1、取指令:当程序已在存储器中时,首先根据程序入口取出第一条指令,为此要发出指令地址及控制信号。然后不断取出指令。
2、分析指令(解释指令、指令译码):对当前取得的指令进行分析,指出它要求作什么操作,并产生相应的操作控制命令。
3、执行指令:根据分析指令时产生的“操作命令”和“操作数地址”形成相应的操作控制信号序列,通过CPU及输入输出设备的执行,实现每条指令的功能。
4、控制程序和数据的输入与结果输出:根据程序的安排或人的干预,在适当的时候向输入输出设备发出一些相应的命令来完成I/O功能,这实际上也是通过执行程序来完成的。
5、对异常情况和某些请求的处理: (1) “中断请求”信号;(2)DMA请求信号。
控制器产生控制信号的两种方式:微程序控制、硬布线控制。
控制器的组成
1、程序计数器(PC)(指令地址寄存器):存放当前正在执行的指令地址或即将要执行的下一条指令地址。有指令预取功能的计算机中,增加一些PC存放要预取的指令地址。
形成指令地址的途径:顺序执行 PC+1(若按字节编址,指令长度为4,则PC+4);改变顺序执行程序(转移类指令形成转移地址)
2、指令寄存器(IR):存放当前正在执行的指令,以便在指令执行过程中,控制完成一条指令的全部功能
3、指令译码器(操作码译码器):对指令寄存器中的操作码进行分析解释,产生相应的控制信号。需要形成有一定时序关系的操作控制信号序列。
4、脉冲源及启停线路:脉冲源产生脉冲信号作为时钟脉冲(机器周期和工作脉冲的基准信号),在机器刚加电时,还产生一个总清信号(reset);启停线路保证可靠地送出或封锁时钟脉冲,控制时序信号的发生或停止,从而启动机器工作或使之停机。
5、时序控制信号形成部件:当机器启动后,在CLK时钟作用下,根据当前正在执行的指令的需要,产生相应的时序控制信号,并根据被控功能部件的反馈信号调整时序控制信号。
6、程序状态寄存器(PSR):保存程序状态字(PSW)的寄存器。各个机器的PSW内容不完全相同。
指令执行过程
- 8个通用寄存器GR
- 1个ALU
- 4个标志触发器
- N(负数)
- Z(零)
- V(溢出)
- C(进位)
- 符号
•
:两线相接o
:受控制的与门*
:控制命令
- 指令格式:
- 其中,rs,rd,rs1为GR地址,Imm或Disp为立即数或偏位量。
加法指令的执行过程
指令功能:GR中rs1地址中的数据与disp相加得到一个操作数的地址,访存并送数据寄存器DR;
GR中rs地址的数据与DR中数据相加,结果送到GR中。
4个机器周期:取值——计算地址——取数——运算送结果。
其中 取值 和 取数 需要访存(通过总线),计算地址 和 运算送结果在CPU内部,总线空闲。
① 【所有指令都一样】从存储器取指令,送入指令寄存器,并进行指令译码
- 指令送地址总线:PC -> AB
- 访存读命令:W/#R=0, M/#IO=1
- 取出的指令送指令寄存器:DB -> IR
- 程序计数器+1:PC+1
② 计算数据地址,将计算得到的有效地址送地址寄存器AR
- rs1内容和位移量送ALU:rs1 -> GR, (rs1) -> ALU, disp -> ALU
- 加法命令送ALU:“+”
- 计算结果(有效地址)送地址寄存器:ALU -> AR
③ 存储器取数
- 地址寄存器送数据地址到地址总线:AR -> AB
- 访存读命令:W/#R=0, M/#IO=1
- 存储器读出数据后送入数据总线,打入数据寄存器:DB -> DR
④ 进行加法运算,结果送通用寄存器,并根据运算结果置状态位N,Z,V,C
- rs内容和数据寄存器数据送ALU:rs -> GR, (rs) -> ALU, DR -> ALU
- 加法命令送ALU:“+”
- 结果送寄存器并置状态位:rd -> GR, ALU -> rd, 置N, Z, V, C
条件转移指令的执行过程
指令功能:根据状态位N,Z,V,C的状态,决定是否转换。如转移条件成立,则转移到本条指令所指定的地址,否则顺序执行下一条指令。
2个机器周期:取值——计算转移地址送PC
① 【所有指令都一样】从存储器取指令,送入指令寄存器,并进行指令译码
- 指令送地址总线:PC -> AB
- 访存读命令:W/#R=0, M/#IO=1
- 取出的指令送指令寄存器:DB -> IR
- 程序计数器+1:PC+1
② 如转移条件成立,计算转移地址,并送PC
- (采用相对寻址方式)PC和位移量送ALU:PC -> ALU, disp -> ALU
- 加法命令送ALU:“+”
- 计算结果(转移地址)送地址寄存器:ALU -> PC
微程序控制
微操作:一条指令的功能是通过按一定次序执行一系列基本操作完成的,这些基本操作称为微操作。
微指令:由同时发出的控制信号所执行的一组微操作。
一条指令分成若干条微指令,按次序执行这些微指令,就可以实现指令的功能。
微程序:计算机每条指令的功能均由微指令序列解释完成,这些微指令序列的集合就叫做微程序。
控制存储器:存放控制命令(信号)与下一条执行的微指令地址(简称为下址)。用只读存储器(ROM)实现(原因:指令系统固定,微程序也固定)。
执行一条指令实际上就是执行一段存放在控制存储器中的微程序。
微指令编码:将每个控制信号用1位表示:当该位为1时,表示有控制信号;为0时,表示无控制信号。对 M/#IO(22) 和 W/#R(23),则当该位为1时,分别表示访问存储器和写;当该位为0时,分别表示IO访问和读。
微指令由控制字段和下址字段组成:
微程序控制流程图:
加法指令控制信号举例
(1) 取指微指令 ((PC) -> IR)
① 指令地址送地址总线:PC -> AB(1)
② 发访存控制命令:ADS(21),M/#IO=1(22), W/#R=0(23);从存储器取指令送数据总线。
③ 指令送指令寄存器:DB -> IR(5)
④ 程序计数器+1:PC+1(3)
(2) 计算地址微指令((rs1) + disp -> AR)
① 取两个源操作数(计算地址用):rs1 -> GR(8),(rs1) -> ALU(10),disp -> ALU(4)。
② 加法运算:“+”(13)。
③ 有效地址送地址寄存器:ALU -> AR(19)。
(3) 取数微指令 ((AR) -> DR)
① 数据地址送地址总线:AR -> AB(20)。
② 发访存控制命令:ADS(21), M/#IO=1(22), W/#R=0(23)。由存储器将数据送数据总线DB。
③ 数据送数据寄存器:DB -> DR(6)
(4) 加法运算和送结果微指令 ((rs) + DR -> GR)
① 两源操作数送ALU:rs -> GR(9),(rs) -> ALU(11);DR -> ALU(12)。
② 加法运算:“+”(13)
③ 送结果:ALU -> GR(17);置N, Z, V, C。
微指令编码:
微程序设计
这一部分主要关注概念。
缩短微指令字长,减少微程序长度,提高执行速度。
微指令控制字段的编译法
1、直接控制法:每一位代表一个微命令,发出某个微命令将控制字段中相应位置成“1”。缺点是微指令字长过长。
2、字段直接编译法:选出互斥的微指令编成一组,作为微指令字的一个字段,用二进制代码表示。微指令字字段长度为n位时,有2^n-1个互斥的微命令(000表示不发微命令)。
微周期:一条微指令所需的执行时间。
互斥的微指令:若干微命令在每个选用的微周期内只有一个微命令起作用。
3、字段间接编译法:字段直接编译法 + 一个字段某些微命令,要兼由另一字段中的某些微命令来解释。进一步减少了指令长度,但削弱并行控制能力。
4、常数源字段E:仅有几位,微指令中用来给某些部件发送常数,故有时称为发射字段。
微程序流的控制
- 现行微指令:当前正在执行的微指令
- 现行微地址:现行微指令所在的控制存储器单元的地址
- 后继微指令:下一条要执行的微指令
- 后继微地址:后继微指令所在的控存单元地址
1、增量与下址字段结合产生后继微地址
机器加电后执行的第一条微指令地址(微程序入口)来自专门的硬件电路
- 顺序执行微指令:后继微地址由现行微地址加上一个增量(通常为1)形成
- 非顺序执行:产生一个转移微地址
微指令的下址字段分成两部分:转移控制字段BCF和转移地址字段BAF。微程序转移时BAF送μPC;否则μPC+1
BAF长度两种情况:① 与μPC的位数相等,转移灵活,但增加了微指令的长度;② 比μPC短(转移点在μPC附近)原μPC与BAF组合成转移微地址,转移地址受到限制,但可缩短微指令长度。
2、多路转移方式
多路转移:一条微指令存在多个转移分支的情况。
- 在若干个微地址中选择一个作为后继微地址(例:根据操作码产生不同的后继微地址),实现电路:PROM(可编程序只读存储器)。
- 根据某些硬件状态(运算结果所置的标志位(N,Z,V,C)、计数器状态、数据通路状态)来决定后继微地址:两路转移,四路转移。
3、微中断
出现微中断请求信号,完成现行指令的微程序后响应该微中断请求,这时中止当前正在执行的程序,而转去执行微中断处理程序。微中断请求信号是由程序中断请求信号引起的。
当CPU响应微中断请求时,由硬件产生微中断程序的入口地址。
微指令格式
- 水平型微指令:在一条微指令中定义并执行多个并行操作微命令。直接控制法、字段编译法(直接、间接编译法)经常应用在同一条水平型微指令中。
- 垂直型微指令:在微指令中设置有微操作码字段,采用微操作码编译法,由微操作码规定微指令的功能。
水平型微指令与垂直型微指令的比较:水平型微指令并行操作能力强,效率高,灵活性强,微指令字长但微程序短,用户难以掌握;垂直型微指令相反。
微程序控制存储器
微程序控制存储器一般由只读存储器ROM构成;用RAM作为控制存储器的优点是可以修改微程序。
控制存储器的操作:取微指令——执行微指令各个操作。两种方式:串行方式、并行方式。
微程序设计语言
- 微程序设计语言:编制微程序的语言
- 源微程序:用微程序设计语言编制的程序
- 微编译程序:将源微程序翻译成二进制码的程序
硬布线控制
硬布线控制方式(组合逻辑控制方式):控制信号是通过逻辑电路直接连线产生。
操作码译码器:输入操作码,每根输出线表示一条指令,有且仅有一根线为高电位,其余均为低电位(或反之)。
设计过程:
- 指令操作码的代码分配
- 确定机器周期、节拍与主频
- 确定机器周期和操作
操作控制命令名=指令名×机器周期×节拍×条件 - 综合所有指令的每一个操作命令(写出逻辑表达式并化简)
硬布线逻辑的实现途径:两级门电路的实现(PLA,PAL和GAL电路)、VLSI直接实现(集成在CPU芯片中)
微程序控制与硬布线控制的比较
- 实现
- 微程序采用控制存储器,控制信号存放在控存中,实现线路规整
- 硬布线由逻辑门组合实现,显得零乱且复杂,修改指令很麻烦。
- 性能
- 微程序控制的速度比硬布线控制的速度低
- RISC一般选用硬布线逻辑
控制器的控制方式
- 同步控制方式:一条已定的指令在执行时所需的机器周期数和节拍数都是固定不变的。简单、高效、成本低,但不够灵活。
- 异步控制方式:每条指令、每个微操作需要多少时间就占用多少时间。等待完成操作后发回“回答”信号或“结束”信号,再开始新的微操作。优点灵活,缺点成本高。
- 联合控制方式:同步控制和异步控制相结合的方式。各个微操作实行大部分统一(大部分操作安排在一个固定机器周期中,并在同步时序信号控制下进行)、小部分区别对待(时间难以确定的操作,则以执行部件送回的“回答”信号作为本次操作的结束)的方式。
- 人工控制:调试、开发。如:reset按键、连续执行或单条指令执行的转换开关。
流水线
顺序执行:优点是控制简单,但是机器各部分的利用率不高。
指令执行流水线的工作原理:把两条指令或若干条指令在时间上重叠起来进行,将大幅度提高程序的执行速度。
两级流水线(a)与四级流水线(b):
运算操作流水线:例如,执行浮点加法运算,可以分成“对阶”,“尾数加”及“结果规格化”三段,每一段设置有专门的逻辑电路完成指定操作,并将其输出保存在锁存器中,以保证在一个周期内流水线的输入信号不变
流水线的相关问题
流水线不能连续工作的原因:
- 编译形成的程序不能发挥流水线的作用 或 存储器供应不上为连续流动所需的指令和数据
- 相关问题
数据相关:第i条指令的操作数地址即为第i-1条指令保存结果的地址,那么第i条取操作数的动作需要等待t时间才能进行,否则取得的数据是错误的。分为:存储器数据相关或寄存器数据相关。
改善:一般设置相关专用通路,即当发生数据相关时,第i条指令的操作数直接从数据处理部件得到,而不是存入后再读取。
流水线阻塞(“气泡”):计算机内有较多指令存在,其繁简程度不一,执行时间及流水线级数不同,相关的情况各异,有时避免不了产生不能连续工作的情况。
一般来说,流水线级数越多,情况越复杂,而两级流水线则不存在数据相关现象。
程序转移对流水线的影响
遇到条件转移指令:确定转移与否的条件码往往由条件转移指令本身或由它前一条指令形成,只有流出流水线才能建立转移条件并决定下条指令地址。因此,流水线不能继续处理后面的指令而处于等待状态,因而影响流水线效率。
猜测法:机器先选定转移分支中的一个,按它继续取指并处理,猜对了继续执行,猜错了返回分支点(保证在分支点后的工作不能破坏原有现场)。
中断请求,I/O设备故障,转入中断处理时“断流”问题:
- 不精确断点法:还未进入流水线的后续指令不允许进入,已在流水线中执行完毕后转入中断处理程序。
- 精确断点法(大多采用):不待已进入流水线的指令执行完毕,尽早转入中断处理。
指令预取和乱序执行
- 指令预取:(取指时间和CPU操作相比长得多)提前从存储器取出指令,暂存在CPU的硬件中。
- 指令预分析:操作数在存储器中,提前取出放在CPU数据寄存器中。
- 乱序执行:适当调整一些指令的执行顺序,以利于程序优化执行。
计算机的供电
- 计算机的直流电源是由交流电源经过整流、稳压而得到的。
- 不间断电源(UPS):给计算机提供连续的、稳定的交流正弧波电源。分为后备式和在线式两类。
About this Post
This post is written by Holger, licensed under CC BY-NC 4.0.