数据寄存器(DataRegister,DR)又称数据缓冲寄存器,其主要功能是作为CPU和主存、外设之间信息传输的中转站,用以弥补CPU和主存、外设之间操作速度上的差异。
数据寄存器用来暂时存放由主存储器读出的一条指令或一个数据字;反之,当向主存存入一条指令或一个数据字时,也将它们暂时存放在数据寄存器中。
数据寄存器的作用是:
(1)作为CPU和主存、外围设备之间信息传送的中转站;
(2)弥补CPU和主存、外围设备之间在操作速度上的差异;
(3)在单累加器结构的运算器中,数据寄存器还可兼作操作数寄存器。
指令寄存器(InstructionRegister,IR)用来保存当前正在执行的一条指令。
当执行一条指令时,首先把该指令从主存读取到数据寄存器中,然后再传送至指令寄存器。
指令包括操作码和地址码两个字段,为了执行指令,必须对操作码进行测试,识别出所要求的操作,指令译码器(InstructionDecoder,ID)就是完成这项工作的。指令译码器对指令寄存器的操作码部分进行译码,以产生指令所要求操作的控制电位,并将其送到微操作控制线路上,在时序部件定时信号的作用下,产生具体的操作控制信号。
指令寄存器中操作码字段的输出就是指令译码器的输入。操作码一经译码,即可向操作控制器发出具体操作的特定信号。
程序计数器(ProgramCounter,PC)用来指出下一条指令在主存储器中的地址。
在程序执行之前,首先必须将程序的首地址,即程序第一条指令所在主存单元的地址送入PC,因此PC的内容即是从主存提取的第一条指令的地址。
当执行指令时,CPU能自动递增PC的内容,使其始终保存将要执行的下一条指令的主存地址,为取下一条指令做好准备。若为单字长指令,则(PC)+1,若为双字长指令,则(PC)+2,以此类推。
但是,当遇到转移指令时,下一条指令的地址将由转移指令的地址码字段来指定,而不是像通常的那样通过顺序递增PC的内容来取得。
因此,程序计数器的结构应当是具有寄存信息和计数两种功能的结构。
地址寄存器(AddressRegister,AR)用来保存CPU当前所访问的主存单元的地址。
由于在主存和CPU之间存在操作速度上的差异,所以必须使用地址寄存器来暂时保存主存的地址信息,直到主存的存取操作完成为止。
当CPU和主存进行信息交换,即CPU向主存存入数据/指令或者从主存读出数据/指令时,都要使用地址寄存器和数据寄存器。
如果我们把外围设备与主存单元进行统一编址,那么,当CPU和外围设备交换信息时,我们同样要使用地址寄存器和数据寄存器。
累加寄存器通常简称累加器(Accumulator,AC),是一个通用寄存器。
累加器的功能是:当运算器的算术逻辑单元ALU执行算术或逻辑运算时,为ALU提供一个工作区,可以为ALU暂时保存一个操作数或运算结果。
显然,运算器中至少要有一个累加寄存器。
程序状态字(ProgramStatusWord,PSW)用来表征当前运算的状态及程序的工作方式。
程序状态字寄存器用来保存由算术/逻辑指令运行或测试的结果所建立起来的各种条件码内容,如运算结果进/借位标志(C)、运算结果溢出标志(O)、运算结果为零标志(Z)、运算结果为负标志(N)、运算结果符号标志(S)等,这些标志位通常用1位触发器来保存。
除此之外,程序状态字寄存器还用来保存中断和系统工作状态等信息,以便CPU和系统及时了解机器运行状态和程序运行状态。
因此,程序状态字寄存器是一个保存各种状态条件标志的寄存器
数据通路:各寄存器传递信息的通路操作控制器:为数据通路的建立提供各种操作信号。操作信号提供的依据是指令操作码和时序信号,主要有三种类型:
硬布线控制器,它是采用时序逻辑技术来实现的,其操作控制信号形成部件是由门电路组成的复杂树形网络。这种方法是分立元件时代的产物,以使用最少器件数和取得最高操作速度为设计目标。硬布线控制器的最大优点是速度快,但是时序、控制信号形成部件的结构不规整,使得设计、调试、维修较困难,难以实现设计自动化。
微程序控制器是采用存储逻辑来实现的,也就是把微操作信号代码化,使每条机器指令转化成为一段微程序并存入一个专门的存储器(控制存储器)中,微操作控制信号由微指令产生。这是我们学习的重点。微程序控制器的设计思想和时序逻辑设计思想截然不同。它具有设计规整、调试、维修以及更改、扩充指令方便的优点,易于实现自动化设计,已成为当前控制器的主流。但是,由于它增加了一级控制存储器,所以指令执行速度比组合逻辑控制器慢。
这种控制器称为PLA控制器,它是吸收前两种的设计思想来实现的。
通常又称CPU周期或者总线周期,通常把一条指令周期划分为若干个机器周期,每个机器周期完成一个基本操作。不同的指令,可能包含不同数目的机器周期。
一条指令周期划分为若干个机器周期,一条指令周期划分为若干个机器周期。
属于RR型指令,一共两个周期:取值周期和执行周期,占2个CPU周期。
分为取值周期和执行周期,但是由于是RS型,执行周期需要两个CPU周期,第一个CPU周期先将操作数的地址送如地址寄存器,第二个CPU周期则进行执行。
取值周期和MOV指令相同,下面看执行周期:
取值周期和MOV的差不多,不在重复,看一下指令执行周期:
组成计算机硬件的器件特性决定了时序信号的基本体制是电位—脉冲制(以触发器为例)
功能:产生时序信号,各型计算机产生时序电路不相同,大、中型计算机的时序电路复杂,微型计算机的时序电路简单。构成:时钟源、环形脉冲发生器、节拍脉冲和读写时序译码逻辑、启停控制逻辑。
时钟脉冲源用来为环形脉冲发生器提供稳定且电平匹配的方波时钟信号。它通常用石英晶体振荡器和与非门组成的正反馈震荡电路组成。
作用:产生一组有序间隔相等或不等的脉冲序列,以便通过译码电路来产生最后所需要的节拍脉冲。毛刺产生原因:电路内部原因以及寄存器参数的影响,避免方法:采用循环移位寄存器电路分析:S为置位端,R为复位端
节拍脉冲的译码逻辑(一个CPU周期包含4个等间隔的节拍脉冲)
机器指令所包含的CPU周期数反映了指令的复杂程度,不同CPU周期出现的操作控制信号的数目和出现的先后次序也不相同。
控制方式:控制不同操作序列时序信号的方法。
分类:
基本思想:仿照解题的方法,把操作控制信号编制成微指令,存放到CPU中的控制存储器里,运行时,从控存中取出微指令,产生指令运行过程中所需的各种操作控制信号。从上述可以看出,微程序设计技术是用软件方法来设计硬件的技术。
组成计算机的部件可以分为两大类:控制部件和执行部件。
控制部件向执行部件发出的各种控制命令叫作微命令,它是构成控制序列的最小单位。
例如:打开或关闭某个控制门的电位信号、某个寄存器的打入脉冲等。微命令是控制计算机各部件完成某个基本微操作的命令。
执行部件接受微命令后所完成的操作叫微操作。
微命令和微操作是一一对应的。微命令是微操作的控制信号,微操作是微命令的操作过程。微操作是执行部件中最基本的操作。
分类:互斥性的微操作,是指不能同时或不能在同一个CPU周期内可以并行执行的微操作。可以编码实现(类似状态压缩二进制表示)相容性的微操作,是指能够同时或在同一个CPU周期内并行执行的微操作。必须各占一位。
把在同一个CPU周期内一组实现一定操作功能的微命令的组合叫做一条微指令(Microinstruction)。它是并行执行的微操作控制信息,存储在控制存储器里。它是微命令的组合,微指令存储在控制器中的控制存储器中。一条微指令通常至少包含两大部分信息:
微指令顺序控制字段的后四位给出下一条微指令地址,19,19位为判别位,当两位都为0时直接将控制字段的后四位作为下一条微指令地址,否则进行判别测试,对20-23的某几位进行修改后再作为下一条微指令地址。
实现一条机器指令功能的一系列微指令的有序集合就是微程序,一段微程序对应一条机器指令。微地址:存放微指令的控制存储器的单元地址
(1)一条机器指令对应着一段微程序(2)对应的硬件设备不同(3)每个CPU周期就是一条微指令
设计微指令应当追求的目标:
入口地址:每条机器指令对应一段微程序,当公用的取指微程序从主存中取出机器指令之后,由机器指令的操作码字段指出各段微程序的入口地址,这是一种多分支(或多路转移)的情况。后继微地址的产生方式主要有两种:
入口地址形成:如果机器指令操作码字段的位数和位置固定,可以直接使用操作码与微程序入口地址的部分位相对应。后继微地址形成方法:
垂直型微指令:采用编码方式
通过逻辑电路直接连线而产生的,又称为组合逻辑控制方式
使用最少元件(复杂的树形网络),速度最快。
$C=f(I_m,M_i,T_k,B_j)$$C$为微操作控制信号,$I_m$为译码器输出,$M_i$为节拍电位,$T_k$为节拍脉冲,$B_j$为状态条件,C由组合电路实现,速度快,但难以修改。
微程序控制器时序信号简单。只需要若干节拍脉冲信号即可。组合逻辑控制器除了节拍脉冲信号外,还需要节拍电位信号。
在微程序控制器中,微操作控制信号由微指令产生,并且可以重复使用。在硬联线控制器中,某一微操作控制信号由布尔代数表达式描述的输出函数产生。$C=f(I_m,M_i,T_k,B_j)$设计微操作控制信号的方法和过程是,根据所有机器指令流程图,寻找出产生同一个微操作信号的所有条件,并与适当的节拍电位和节拍脉冲组合,从而写出其布尔代数表达式并进行简化,然后用门电路或可编程器件来实现。
根据整理并化简的逻辑表达式组,可以用一系列组合逻辑电路加以实现,根据逻辑表达式画出逻辑电路图,用逻辑门电路的组合来实现之,也可以直接根据逻辑表达式,用PLA或其他逻辑电路实现。