爱收集资源网

(知识点)CPU内部控制信号的修改方法与方法

网络整理 2023-10-29 05:04

控制单元的功能

发出各类控制命令或则是微指令,控制整个计算机系统,包括CPU内部的各个部件才能协调,稳定,正确,连续的运行。

1、控制单元的外特点

输入讯号:

(1)指令寄存器。

来自于指令寄存器的指令的操作码部份。控制单元要对操作码部份进行解调。强调这条指令要做哪些操作,便于在指令的执行阶段对不同的指令发出不同的控制讯号。

(2)时钟讯号。

控制单元在时钟讯号的控制下进行工作。各类微操作命令在时钟讯号控制下,在指定的时间点被发出,一个时钟脉冲,可以发出一个或则是一组可以并行执行的微操作命令。

(3)各类标志,

如条件转移指令中上一条指令运行结果的标志,就是本条指令是否发生跳转的根据。

(4)外来讯号,通过系统总线,CPU外部的控制讯号可以步入到控制单元。如中断恳求讯号和总线恳求讯号。

输出讯号:

(1)CPU内部控制讯号,控制CPU内部部件执行,如在寄存器和寄存器间数据传输,对PC值进行更改,运算完成各类运算的控制讯号。

(2)送到系统总线上的控制讯号,如,控制总线,储存器,外部IO设备的操作。

2、控制讯号举例1、不采用CPU内部总线的方法

不采用CPU内部总线的形式:

不采用CPU内部总线,也就是CPU中各个部件分散联接。下边以ADD@X为例,这个乘法指令采用的是间接轮询。

(1)取值周期

C0:CU控制PC和MAR通路,将PC中的值送入MAR。

C1:将MAR中内容送出,献给地址线,同时CU发出读命令,高速CPU进行读操作

C2:取回去的指令经过C2控制电路放回MDR

C3:由MDR把取出的指令经过C3送入IR

C4:将指令的操作码部份通过C4献给CU进行解调

最后进行PC+1,C0-C4五个控制讯号都是由CU形成的。

(2)间址周期

由于采用的是间址主存,所以X并不是操作数的地址,操作的地址目前还在显存中,保存在地址为X的单元中。

指令早已被拿回,在MDR和IR都保存了刚才拿回的指令,假定为了获得操作数地址,方式地址从MDR中获得,其实也可以从IR中取得。

C5:控制MDR将MDR小指令的地址码部份献给MAR

C1:再将MDR内容献给地址线。

C2:控制单元发出读命令,读出操作数的数学地址,将读出的操作数地址送入MDR。此时MDR中保存了操作数地址

C3:将MDR中保存的地址送入IR的地址码部份。

(3)执行周期

C5:将操作数地址献给MAR

C1:将MAR内容献给地址总线,同时CU发出读命令

C3:将拿回的操作数献给MDR。

C7,C6:将拿回的操作数和ACC中的被加数送入ALU。同时CU发出乘法控制讯号

C8:将减法的结果保存到ACC。

采用CPU内部总线形式:

ALU是一个组合电路,为了还能保存出席运算的两个操作数和输出的运算结果,在ALU两个输入端要加上寄存器,在他的输出端也要加上寄存器,以对输入输出的数据进行保存。输入可以使用AC作为一位寄存器,所以上图中降低了Y作为另一个输入寄存器和Z作为输出寄存器。

下边继续以ADD@X为例,剖析这些采用内部总线的CPU中,间址乘法的各个周期CU须要形成什么控制讯号。

取指周期:

(1)PC将通过控制讯号将PC中的值献给CPU内部总线。

(2)通过MAR输入控制讯号,把PC值献给MAR,此时MAR中保存的就是下一条要执行的指令的地址。

(3)MAR将地址献给外部地址线。

(4)CU发出读命令,读命令献给储存器。

(5)读出的指令通过数据线送到MDR,此时MDR保存的就是这条间接轮询的乘法指令。

(6)将MDR中的指令送到CPU内部总线。

(7)通过CPU内部总线将MDR内容献给IR。

(8)将IR中的指令的操作码部份通过CPU内部总线献给CU进行解调。

(9)将PC值加1,强调下一条要取出的指令的地址。

间址周期:

(1)把MDR小指令的方式地址通过CPU内部总线献给MAR。

(2)MAR把地址献给外部地址线访问显存。同时CU发出读操作给寻址。

(3)将读出的操作数的数学地址通过数据线献给MDR中。

(4)把MDR中的数据通过CPU内部总线献给IR的地址码部份。此时IR地址码部份就是出席运算的操作数的数学地址。

执行周期:

(1)把MDR中的操作数化学地址通过CPU内部总线献给MAR。

(2)把MAR中的地址献给外部地址总线,同时CU发出读讯号。

(3)通过数据线把读出的操作数献给MDR。

(4)把操作数MDR通过CPU内部总线献给Y。

(5)把Y中的数据通过CPU内部总线献给ALU。

(6)把AC中的数据通过CPU内部总线献给ALU。

(7)CU发出控制讯号,控制ALU做除法操作

(8)把乘法结果送入寄存器Z中。

(9)把Z中的结果通过CPU内部总线献给ACC寄存器。

3、多级时序系统

机器周期:

(1)机器周期的概念:

所有指令执行过程中的一个基准时间。

(2)确定机器周期须要考虑的诱因

每条执行执行的步骤,每位步骤须要多长时间,之后将各个步骤进行界定,放在不同的机器周期中。

(3)基准时间的确定

以完成最复杂指令功能的时间为准,也就是在指令执行过程中,从取指,间址,执行,到中断,这儿面涉及的微操作中最复杂的微操作所须要的时间作为基准。实际上在指令解释过程中,最复杂的微操作一般都是访存操作,所以一般以访问一次储存器的时间为准。

假如指令字长=机器储存字长,则取值周期=机器周期。

时钟周期(节拍):

一个机器周期中完成若干个微操作,每位微操作都须要一定的时间,有的微操作是在一个时钟周期中完成的,有的时钟周期会耗费多个微操作,如,对显存的访问。所以把一个机器周期可以界定为多个时钟周期,由这种时钟周期控制在一个机器周期中的微操作之间在时间上的先后次序。所以一直周期是控制计算机操作的最小时间单位,所以在计算机中时间并不是连续的,而是离散的。用时钟周期控制形成一个或则多个微操作命令

如上图,一个大的指令周期被界定为多个机器周期,一个机器周期又分成了多个时钟周期,时钟周期是最小时间单位,一个时钟周期可以发出一个或几个微操作命令。

多个时序系统:

指令周期,机器周期,时钟周期(节拍),构成多级时序系统。一个指令周期包含若干个机器周期,一个机器周期包含若干个时钟周期。

一个指令周期中的机器周期可以包含相同数目的时钟周期,也可以是不同数目的时钟周期。

机器速率与外频之间的关系:

机器显存f越快机器的速率也越快,这个判别方式是由前提条件的:在一个指令周期中包含相同多个机器周期,机器周期所含时钟周期数相同的情况下,两台机器的平均指令执行速率之比等于机器显存比:

机器执行速率除了和位宽有关,还与一个指令周期中包含了多少个机器周期有关,一个机器周期中包含了多少个时钟周期有关。

4、控制方法

同步控制方法:

这些方法使用的比较多,任意一个微操作均由统计基准时标的时序讯号控制,在指令的节拍下形成。

(1)采用定长的机器周期

每位机器周期中富含相同数目的节拍数,所以以最长的微操作序列和最复杂的微操作作为标准。

这些界定方法在个别阶段会导致时间的浪费,如在取址时须要4个节拍,并且在操作阶段一个节拍就可以结束。若果采用这些方法,执行阶段才会有3个节拍被浪费。

(2)采用不定长的机器周期

机器周期内节拍数不等。

假如指令的指令执行过程比较复杂,执行时间比较长,这么执行指令阶段包含的节拍数也可以比较多:

(3)采用中央控制和局部控制相结合的方法

倘若执行周期比较长,我们再进行机器周期设定的时侯,倘若根据执行周期的宽度进行设置,都会有大量的时间被浪费。我们可以把中央控制和局部控制相结合,一部份操作由中央控制节拍进行控制,延长的部份由局部控制节拍进行控制。中央控制和局部控制的节拍长度相等。

异步控制:

这些方法没有基准时标讯号,没有固定的周期节拍和严格的时钟周期同步,采用应答形式。一个微操作完成后会给出应答讯号,告诉下一个微操作可以开始。

联合控制:

同步控制和异步控制相结合,把不同的指令的微操作大部份采用同步控制方法地址译码信号有什么用,在特殊情况下,即有些微操作完成时间很难确定,这些情况下可以采用异步控制。如执行IO指令很难确定完成时间。

人工控制形式:

为了调试便捷设置的,如Reset,连续单条指令执行转换开关,符合条件停机开关等

控制单元的设计1、组合逻辑设#

(1)CU外特:

CLK(机器显存),节拍发生器:CU要发出各类控制命令,控制讯号,这种控制讯号之间是有先后关系的,每一个控制讯号他的发出都是有给定的时间点,这些先后关系和时间点的确定,是由节拍讯号控制的,因而,一定有一个节拍发生器,形成的节拍作为CU的输入,节拍发生器外端接的是计算机的显存(主时钟),输出的是T0……Tm个节拍讯号。在每位节拍讯号的起始端,CU形成给定的命令。

操作混频器:CU究竟要形成哪些命令,和现今正在执行的命令有直接关系,指令保存在IR寄存器中,IR的操作码部份要经过混频之后才才能确定当前正在执行的是那条指令,假定指令很尺寸,操作码为n位,经过操作码混频之后,n位操作码可以译出2n个结果,操作码的输出端(0-2-1)针对每一条指令混频结果只有一条线有效,这条线就指示了这条命令要做哪些操作。

标志:CU要发出哪些控制讯号还和状态标志有关,如条件跳转指令,就和跳转条件有关。

C0-Ck:在一系列的输入的作用下,CU在给定的时钟周期都会给出指定的控制讯号,在每一个时钟周期(节拍),C0-Ck控制讯号都会有一个或则几个有效,倘若是几个同时有效,表示在这一个节拍中,这几个控制讯号可以并行进行操作,她们之间没有时间的先后次序,或则是几个讯号的操作时间都十分短,有一定的现有次序,并且在一个节拍中才能实现。

节拍讯号:下边再看一下节拍讯号:

CLK是系统时钟,是计算机中最基本的时间单位。节拍讯号就是在时钟的控制下形成的。节拍讯号的长度(高电平)就是一个时钟周期。上图中,在第1,2,3,4时钟周期处分别形成。

T0,T1,T2,T3节拍,由这种节拍讯号控制每一个微操作命令发出的时间。假如一个指令周期包含了两个机器周期(取值周期,执行周期),我们给出的图中,一个机器周期包括了四个节拍。

一个机器周期包含多少节拍与这个机器周期中须要形成的控制讯号的数目以及控制讯号的复杂程度、控制讯号之间是否还能并行有直接关系。

(2)微操作的节拍安排

早已有了机器周期和节拍,我们要把微操作根据执行的时间先后次序安排在给定的节拍中,由这种控制命令控制计算机各个组成部份才能协调、稳定、正确的执行。

下边假定采用同步控制,即由一个统一的时钟讯号控制各个部件之间的交互和各个控制讯号的形成,但是假定在下边要设计的机器中,一个机器周期包含3个节拍。假定CPU内部采用的是非总线的形式。

上图中给出了CPU的结构,但是给出了若干个控制讯号,如红色部份C0-C12共13个控制讯号,在这儿,所有的控制讯号都是由CU在时钟、指令操作码、标志作为输入的情况下,在给定的节拍形成的,不仅仅C0-C12是由CU形成,CU也形成了ALU两侧的控制讯号,由CU形成的讯号控制ALU做相应的算数运算或则是逻辑运算操作。另外CU都会对标志位进行更改,依照运算结果更改控制标志位。

我们如今要把指令执行过程中,也就是轮询周期、间址周期,执行周期和中断周期,控制器须要发出的各类控制命令安排到不同周期中的各个节拍上,某一个控制命令究竟要安排到哪一个节拍上,下边瞧瞧怎么解决?

安排微操作时序的原则:

原则1:微操作的先后次序不得随便更改,如:只有把指令取到IR后,就能把指令操作码部份献给CU进行解调。

原则2:被控对象(微操作命令要控制的部件)假如是不同的,尽量安排在一个节拍内,实际上这个原则可以理解为:可以并行的微操作,微操作之间没有先后次序,这样的微操作就尽可能安排在同一个节拍中。

原则3:假如微操作占用的时间十分短,就尽可能安排在一个节拍中,而且容许有先后次序,如一个微操作在节拍的上升点进行操作,另一个微操作在节拍的增长点进行操作。

取值周期微操作的节拍安排:

里面提及过,假定在我们的机器中,每位机器周期包含了三个节拍。

周期操作依照原则

T0

PC——>MAR,1——>R:发出读显存命令

原则2

T1

M——>MDR:取数据,PC+1——>PC

原则2

T2

MDR——>IR,OP(IR)——>ID:将操作码送到解调器

原则3

间址周期微操作的节拍安排:

周期操作

T0

Ad(IR)——>MAR:将IR的地址码部份献给MAR,1——>IR:发出读命令

T1

M——>MDR:讲数据从显存中取出

T2

MDR——>Ad(IR):将MDR中的数据送到IR地址码部份

执行周期微操作的节拍安排:

执行周期,不同的指令要做的微操作是不一样的,下边对十条指令分别进行剖析。

CLA:对累加器进行清零,这个操作十分简单,使用一个节拍就能否完成。即,把0送入到累加器,并且执行周期给了三个节拍,可以把这个操作安排在三个节拍中的任意一个,这儿假定安排在T2.

周期操作

T0

哪些都不做(下边哪些都不做,空白给出)

T1

哪些都不做

T2

0——>ACC:把0送入累加器

COM:把ACC中的内容按位取反,再把结果储存到ACC

周期操作

T0

T1

T2

累加器的非——>累加器

SHR:算数右移操作,把ACC中保存的内容右移,符号位保留(写回即可)。

周期操作

T0

T1

T2

L(ACC)——>R(ACC):把ACC两侧内容讲到两侧,AC0——>AC0:符号位写回

CSL:循环左移

周期操作

T0

T1

T2

R(ACC)——>L(ACC):把ACC两侧内容讲到两侧,AC0——>ACn

STP:停机指令

周期操作

T0

T1

T2

0——>G:停机标志置0

ADDX:把X显存单元中保存的内容和累加器中的内容相乘,结果保存到累加器中。

周期操作

T0

Ad(IR)——>MAR:把IR地址码部份献给MAR,1——>R:发出读命令告知储存器要做读操作。

T1

M——>MDR:将数据从显存中取出送入MDR

T2

(AC)+(MDR)——>AC:AC内容和MDR内容相乘,结果送入AC

STAX:把累加器中的数据储存到给定的储存单元

周期操作

T0

Ad(IR)——>MAR:把IR地址码部份献给MAR,1——>W:发出写命令告知储存器要做写操作

T1

AC——>MDR:为了将数据献给储存器,AC中数据要先献给MDR

T2

MDR——>M:将数据写入储存器

LDAX:把地址为X的显存单元中的内容取出保存在累加器中

周期操作

T0

Ad(IR)——>MAR:把IR地址码部份献给MAR,1——>R:发出读命令告知储存器要做读操作。

T1

M——>MDR:将数据从显存中取出送入MDR

T2

MDR——>ACC:MDR内容送入到累加器

JMP:跳转到给定的地址,不须要访存,地址就是X。

周期操作

T0

T1

T2

Ad(IR)——>PC:把指令的地址码部份献给PC

BANX:条件转移指令,假如上一条指令估算结果是大于0的,就跳转,小于继续次序执行。这儿假定上一条指令的结果保存在累加器中。

周期操作

T0

T1

T2

假如A0为1表示估算结果为负,要指令的地址码献给PC,假如A0为0则不发生跳转。

中断周期微操作的节拍安排:

中断周期须要做三件事,一保存断点,二产生中断服务程序的入口地址,三关中断为保护现场做打算。这种操作都是由中断隐指令完成的,中断隐指令并不是真正的指令,他是硬件要做的操作,中断隐指令只完成了中断周期中的若干操作。

周期操作

T0

0——>MAR:把断点要保存的地址写入MAR,1——>W:发出写命令告知储存器要做写操作,硬件关中断:将容许中断触发器置0

T1

PC——>MDR

T2

MDR——>M:MDR中显存保存到显存,向量地址——>PC:将硬件产生的向量地址献给PC,这个操作不能安排在T0和T1,由于只有把PC中的值保存MDR,PC中的值能够被替换。

(3)组合逻辑设计的步骤

要形成控制讯号,只要用逻辑表达式才能写出任何一个控制讯号形成的条件,之后进行硬件实现,组合逻辑设计也就完成了。

列举操作时间表:

上表中,指令中间址标志I有效,则下一步进行间址操作,无效则执行指令。

上表中,一次间址结束后,须要使用间址周期标志IND判定是否还须要再度间址。

写出微操作命令的最简单表达式:

画出逻辑图:

(4)对于组合逻辑设计:

思路清晰,只要晓得每一个控制讯号形成的条件,之后写出逻辑表达式,画出逻辑框图就可以。

设计繁杂,调试困难,更改困难。里面给出的逻辑框图只是一个逻辑讯号的逻辑框图,假如有几十个,逻辑框图会特别复杂。

速率快,由于这些方法都是采用硬连形式实现。

对于精简指令集计算机,采用的就是这些设计方法,甚至在现今的处理器中,把处理单元分成了两类,一类是整形数处理单元,做整形数的运算,做控制类的操作,另一类是浮点处理单元,做浮点数的运算,一般情况下,整形单元部份采用的就是这些方法实现的,使速率更快。

2、微程序设计

采用微程序设计的方式,来实现计算机系统的控制器。上面早已讲过使用组合逻辑方法实现控制器,对于组合逻辑方法,思路清晰,简单明了,而且电路繁杂,每一个控制讯号都须要单独的电路来完成这个控制讯号的生成,更改困难,如:要进行指令集的扩充,在指令集中引入新的指令,这条指令相关的微操作,或则是控制命令的逻辑电路都须要进行更改,对控制器更改的工作量十分大。这儿讲解的微程序设计,设计比较容易,更改也比较容易的控制器的设计方式,特别适宜指令集的扩充。

(1)微程序设计思想的形成

由美国剑桥学院院长Wilkes于1951年提出,在指令执行的过程中,我们晓得,不同的节拍要发出不同的操作,节拍之间是有先后次序的,安排在不同节拍的微操作也是有先后次序的,每位节拍发出的控制命令实际上就是一个或则几个联通号,由这种联通号控制相应的部件进行操作。微程序设计的思想就是把这种控制讯号给他储存上去,我们晓得,在储存器中,我们常常讲储存单元储存了一串0,1代码,实际上在硬件上储存的并不是真正的0或则1,而是高电平或则是低电平,我们就可以借助高电平,低电平这种控制讯号来控制每一个节拍我们要发出的微操作命令,这就是微程序。

上图中,要完成一条机器指令(对应于上面讲过的一个机器周期),我们在不同的节拍中要安排好多微操作命令,一个节拍中可以有一个或则两个微操作命令形成,或则是多个(多个微操作命令可以并行情况下),这么,这种微操作命令,我们可以将其储存上去,弄成一条微指令,每位节拍对应一条微指令,这么多个节拍对应的多条微指令就构成了一个微程序。微指令的格式十分简单,假如在某个节拍中,我们要发出一个或则是几个控制讯号,我们假定控制讯号是高电平有效,我们用1来进行表示,上图中微指令1是10100000,两个1的位置表示,在这个节拍中,相对应的两个微操作他的控制讯号要在这个节拍中形成,但是由这两个1控制相应的部件进行操作,所以微指令的每一个位置表示了某一种微操作命令。微指令也是有先后次序的,这个先后次序和组合逻辑电路设计中看见的微指令的先后次序是一致的,这种微指令就构成了一个微程序,由这个微程序控制完成一条指令的执行过程。

一条机器指令对应了一个微程序,一个微程序中包含了若干条微指令,每一条微指令包含了一个或则是多个微操作命令控制讯号,微指令间的先后次序就是微操作在执行过程中的先后次序。我们把这个由微指令构成的微程序保存在只读储存器ROM中,执行的时侯,把微指令一条一条的从只读储存器中读出,按照读出的微指令中有效控制讯号的个数和位置,发出相应的控制讯号,让计算机去执行相应的操作。这些方法称为储存逻辑的形式。

(2)微程序控制单元框图及工作原理

1、机器指令对应的微程序

上图中,M保存了取指令须要的全部微操作,以及微操作之间的先后次序,即:M,M+1,M+2三个单元保存了取值微程序,由于上面讲过取值周期须要三个节拍完成,每位节拍对应一条微指令,完成了那种节拍上面形成控制命令的工作。

另外在控制储存器中还保存了指令执行阶段所须要的微操作,如上图中,P,P+1,P+2三个单元中保存了LDA指令执行阶段对应的微程序,同样,K,K+1,K+2保存了STA指令执行阶段对应的微程序。

另外还有间址周期,中断周期,所有的指令的间址周期和中断周期都是类似的,所以间址周期和中断周期单独编撰微程序。

2、微程序控制单元基本框图

控制储存器:微程序,微指令都保存在控制储存器,只读的。

CMAR:控制储存器地址寄存器,要从控制储存器中一条一条读微指令,就要晓得微指令的地址,微指令的地址就保存在CMAR中。

地址解调:保存在CMAR中的地址经过混频,把他送入到控制储存器中,把相应的微指令读出。

CMDR:控制储存器数据寄存器,把从控制储存器中读出的微指令放置在CMDR中。

微地址产生部件:一条指令执行阶段要做的微操作是不一样的,这么他所对应的微程序首地址也是不一样的,也就是说在执行阶段,我们要按照我们要执行的指令来确定这条指令所对应的微程序在控制储存器中的首地址,所以我们还须要微地址产生部件。这个部件要接受从指令寄存器IR中操作码部份送来的讯号。

次序逻辑:安排次序逻辑是由于CMAR当中的地址有多种来源,我们会借助次序逻辑从多个来源中选择一个正确的来源送入到CMAR中,次序逻辑实际上是一个多路,这个多路控制讯号包括了标志,时钟。

这个结构数据流:从OP开始,也就是从指令寄存器的地址码开始,操作码送入到微地址产生部件,由微地址产生部件产生这条指令执行阶段所对应的微程序在控制储存器中的地址是哪些。之后再献给次序逻辑,由次序逻辑在多个地址中进行选择,选择一个正确的地址,把他送入到CMAR,这个地址经过混频送入到控制储存器地址线,从给定的地址中读出一条微指令,而且把微指令送入到CMDR,这样,在CMDR中就包含了一条微指令,微指令的格式包括了两部份:

操作控制:由一系列的0和1组成,我们可以假设1表示控制器要发出某一个控制讯号,所以操作控制这部份内容每一个位置都代表了一个微操作控制讯号,倘若是1,表示这个操作命令是有效的,要由这条微操作命令控制相应的部件做一个特定的操作。

次序控制:给出了下一条微指令的地址。下地址可以送入到次序逻辑。

这样起码次序逻辑要从两个输入中取一个,如,在刚才步入到一条指令的执行阶段的时侯,我们要找到这条指令所对应的微程序在控制储存器中的首地址,那我们可以依据IR地址部份讯号输入给出。在微指令执行过程中,一条一条按次序执行,我们就可以依据下地址给出下一条微指令的地址是哪些。

CMDR操作控制数组会直接给出控制讯号,由这种控制讯号控制CPU或则是计算机系统的其他部份去做相应的操作,每条微指令就会做若干个操作,微程序中全部的微指令执行完以后才会完成某一个特定的操作,如取指操作,间址操作,执行操作或则是中断操作。

3、工作原理

如上图为控制储存器,M,M+1,M+2保存的是取指微程序,右边部份是下地址部份,取指微程序第一条微程序执行完之后,要通过下地址强调下一条微指令的地址,对M单元来说,下一条微指令的地址就为M+1,同样,M+1对应的下一条微指令地址为M+2。对于M+2,情况会有差别,他执行的下一条微指令并不是M+3,我们如今假定没有间址,取指然后马上进行执行。M,M+1,M+2三条微指令完成了把指令取出的操作。至于这条指令是哪些指令,要经过指令的解调就能晓得具体的是哪些指令,这么经过指令的解调,我们能够晓得去执行周期去执行哪一个微程序,这个过程就是通过微地址产生部件完成的。微地址产生部件依照取来的地址的操作码,产生这条指令在执行阶段的微程序在控制储存器中究竟保存在哪些地方,所以M+2,写的是XXX,表示不能由下地址直接标示下来,而是由硬件电路产生。

对于P来说,他的下地址就是P+1,P+1的下地址就是P+2,P+2这条微指令执行完之后LDA就操作结束了,若果没有中断,他应当直接再去取下一条指令,所以P+2的下地址为M,回到取指微程序。同样STA操作的微程序也是这么。

对于间址周期,也有微指令,间址周期结束之后,要转到执行周期,间址周期最后一条微指令的下地址仍旧是XXX方式,还是由微地址产生部件产生微程序所在的地址。

中断周期,结束之后要转到到取指周期,所以中断周期最后一条微指令的下地址为M。

下边,对其工作原理做更进一步的剖析:

首先编撰一个程序,保存在寻址中,程序包含好多条指令,这儿只以四条执行为例剖析程序是怎样执行的。

下边是在控制储存器中保存的微程序,包括了取指周期的微程序,间址周期微程序,中断周期微程序,以及对应每一条指令他的执行过程的微程序。

操作过程如下:

取指阶段:执行取指微程序。

M——>CMAR:把控制储存器中M的内容献给CMAR寄存器,由这个寄存器强调第一条微指令在控制储存器的首地址。

CM(CMAR)——>CMDR:把控制储存器中保存的微指令取出献给CMDR寄存器,CMDR中就保存了要执行的控制讯号。此时,CMDR中保存的数据如下:

这儿面有1和0,1表示相应位置控制的微操作须要发出控制讯号,在取址周期须要发出的微操作如下:

Ad(CMDR)——>CMAR:产生下一条微指令的地址,将CMDR的下地址献给次序逻辑,经过次序逻辑的选择,把M+1献给CMAR。为取下一条微指令做打算。

CM(CMAR)——>CMDR:取下一条微指令。控制储存器中,地址为CMAR中地址位置的微指令取出,放在CMDR。此时取出的微指令,以及对应的两个微操作如下:

Ad(CMDR)——>CMAR:产生下一条微指令的地址,将M+2送入到CMAR。

CM(CMAR)——>CMDR:取下一条微指令。这条微指令只包括了一个微操作:

这条指令的下地址为XXX,表示下一条微指令的地址不能由微地址强调,而是要步入到间址阶段或则是执行阶段,若果是步入到执行阶段,就是按照操作码由微地址产生部件产生要执行的指令的执行阶段对应的微程序所在的地址。

执行阶段:

执行LDA微程序:

OP(IR)——>微地址产生部件——>CMAR:把指令的操作码数组送入到微地址产生部件,由微地址产生部件产生下一条微操作命令的地址,实际上就是把P——>MAR。

CM(CMAR)——>CMDR:取执行阶段的第一条微指令,献给CMDR,这条微指令如下:

Ad(CMDR)——>CMAR:产生下一条微指令的地址,把P+1献给MAR。

CM(CMAR)——>CMDR:取出一条微指令,如下:

Ad(CMDR)——>CMAR:产生下一条微指令的地址,把P+2献给MAR。

CM(CMAR)——>CMDR:取出一条微指令,如下:

执行阶段结束后,没有中断,下地址就直接指向了取值微程序首地址,用于取下一条取值微程序首地址。下边就又回到了取值阶段,若果不考虑间址和中断,每条指令都要执行取值微程序,执行执行微程序。借此循环执行完所有的程序。

全部的微指令都储存在控制储存器CM中,操作之间的先后次序由微指令执行的先后次序来确定的,这样,指令的执行过程就是把这种微指令从控制储存器中读出。

从里面可以看出,用微程序的形式设计控制器有两个关键问题:

1、微指令的操作控制数组怎样设计,怎么产生微操作命令,什么微操作置于同一条微指令中,操作控制数组有多位,每一位究竟表示哪些含意,给出的是哪些控制讯号。

2、微指令的后续地址怎样产生

(3)微指令的编码方法(控制方法)

1、直接编码(直接控制)形式

这些编码方法实际上就是上面讲解微程序控制方法举的反例,这些方法十分简单,在微指令的控制数组中,每一位都代表一个微操作命令,在所有指令的执行过程中,一共须要多少微操作命令,这么他的操作控制数组就可以设置为多少位。具体格式如下:

微指令取出后,就用微指令操作控制数组中的0和1来控制计算机中相应的部件完成给定的操作。如上面讲过的事例:

里面的微指令有两个控制讯号为1有效,分别代表吧PC值献给MAR和把读讯号献给寻址。

这些方法控制讯号由某一位直接给出,不须要混频,所以速率最快。

2、字段直接编码方法

先将微指令控制数组分成若干段,每段经过混频后发出控制讯号。具体如下:

上图中,把控制数组分成若干段,每段经过混频之后再发出控制讯号,控制去完成相应的操作,在这儿要注意的是,每位段经过混频器解调输出后,在混频器的输出端只有一位是有效讯号,每一位都表示了在这组或则这段中地址译码信号有什么用,对应的一个微操作。也就是,分到这一组中的微操作应当是互斥的,其中一个发出控制命令,另一个就不能再发出控制命令。不同组发出的控制命令是可能并行执行的。这些方法称之为显示编码。

采用这些方法,假如每一小段中包含了2n个微操作,采用这些编码方法,这一段的宽度只须要n位即可,倘若采用第一种直接编码方法,这一段的宽度就须要2n。所以这些方法,减短了微指令的字长,而且要经过混频阶段要降低解调时间,微程序执行速率会比较慢。

3、字段之间的间接编码

这些编码方法,每位数组他的解调结果除了和本数组的输入有关,并且和其他数组的解调结果是相关的,这些方法称之为隐式编码

4、混合编码

把直接编码,数组编码等几种方法结合上去,例如:在各个阶段或则各个微指令中,最常用的什么操作命令,我们可以采用直接编码的方法,不常用的微操作命令采用数组间直接编码,这样可以压缩微指令的字长。

(4)微指令序列地址的产生

1、微指令的下地址数组强调

如,取指阶段,我们执行了第一条微指令以后,下一条微指令就是由下地址直接给出的。如下:

2、根据机器指令的操作码产生

当执行完取指的最后一条微指令后,就没有办法再依据下地址继续强调下一条微指令的地址,此时就须要通过对机器指令的操作码进行解调得到机器指令具体要进行的操作的微指令程序的首地址。

3、增量计数器

如,在我们取值阶段,下地址好多情况下都是次序加1,在执行阶段,好多微指令包含的下地址也是次序加1,这时侯就可以采用增量计数器来做。假如用增量计数器,部份微指令的下地址数组就可以省略。

4、分支转移

假如微指令中涉及到分支,如,假如没有跳转,我们再控制储存器中继续执行下一条微指令,倘若发生跳转,就给出下一条微指令的地址。

所以,分支转移微指令的格式如下:

转移方法:指明判定条件

转移地址:执行转移成功后的去向。

5、通过测试网路

如上图,我们把次序控制,也就是下地址部份分成两段,低位数组不动,高位数组通过测试网路,由测试源(状态和条件)对高位的地址就行变换,变换以后和原先的低位地址合在一起产生新的地址,送入到CMAR中,取出新的微指令。这些方法可以用于微程序在小范围内的跳转及条件转移操作。

6、由硬件形成微程序入口地址

如,计算机一开机就要开始执行,要执行指令,就要取指令,取指微程序所在控制储存单元的首地址为M,所以要先把M送入到CMAR中,这么M的形成就由硬件直接形成。即,第一条微指令的地址由专门的硬件形成。假如在执行过程中发生中断,这么中断所对应的微程序在控制储存器中的地址是固定的,也可以由硬件形成中断周期微程序的首地址。同样,假如有间址阶段,间址阶段在控制储存器的位置也是固定的,所以也可以由硬件直接形成。

7、微指令地址产生方法原理图

里面讲了多种粮址的产生方法,下边把多种方法结合上去看一下。

ADDX

上图中的多路选择器,从多个来源中进行选择,来源如下:

(1)通过下地址,由微指令次序控制数组给出下地址。

(2)由OP,指令的操作码数组给出对应的指令执行阶段所对应的微程序在控制储存器中的地址。

(3)假如是次序执行,可以通过吧CMAR中的内容进行+1.

(4)第一条微指令的地址M可以通过硬件方法完成,中断周期,间址周期对应的微程序首地址也可以通过硬件形成。

(5)通过转移方法经过分支逻辑确定。

(5)微指令的格式

1、水平型微指令

之前讲过的几种微指令方式都是水平型微指令,这些方法一次可以定义多个并行操作,如采用直接编码,数组直接编码,数组间接编码,混和编码,都可以一次定义多个可以并行执行的操作。

2、垂直型的微指令

这些方法类似指令操作码的形式,一次只能定义一个操作,其实这个操作可能很复杂,他在控制执行中,可能控制硬件完成一个复杂的操作,这种操作之间可能还有先后次序。

他是由微操作地址码数组来规定微操作的功能。

3、两种微指令格式比较

水平型的微指令比垂直型微指令并行操作能力更强,更灵活。由于水平型可以有多个讯号并行进行操作,垂直型的微指令不可以

水平型微指令因为每一条微指令中控制讯号比较多,指令都会比较长,微指令的数量比较少。不须要进行混频或则是进行简单的解调,速率快。

水平型的微指令,用较短的微程序结构换取较长的微指令结构。

水平型的微指令和机器指令差异比较大。

(6)静态微程序设计和动态微程序设计

静态微程序设计,是指微程序不再须要任何改变,也就是意味着计算机系统CPU指令集不再改变,在这些情况下,就可以把微程序保存到ROM中,不再进行更改。

动态微程序设计,我们可以更改或则是扩充计算机系统的指令集,降低指令集中的指令。通过更改微程序的形式,在控制储存器中写入新的指令所对应的执行阶段的微程序,因而对指令集进行扩充。这些方法有利于指令仿真,也就是在系统中降低一条新指令或则是改变计算机的指令系统,看一下改变以后的指令结构运行某一种或则某一类应用程序的时侯,他的性能是否会得到较大的提高,倘若能得到较大的提高,这么在生产下一款处理器的时侯,就可以把指令加入到新的处理器指令集中,或则是对原有的指令集进行适当的更改。并且,一般情况下,甚少会对指令集进行更改。

(7)毫微程序设计

1、指的是微指令中给出的操作若果比较复杂,但是这个操作内部的毫微操作也有一定的时间先后次序,这么我们就可以使用一个毫微程序来解释这条微指令。所以,微程序设计是用微程序来解释机器指令,毫微程序设计是用毫微程序解释微指令。

2、毫微程序控制器的基本组成

左侧是微程序的原理图,上面早已讲过,而且这儿从控制储存器中取出的微指令和上面讲过水平型的微指令是不一样的,这个微指令,通常采用的是垂直型的微指令,也就是说他的控制编码部份编码方法和指令的操作码编码方法是类似的,每一个操作可能是一个复杂的操作,为了对这个复杂的操作进一步的分解,我们就要用毫微程序来做。通过微程序的地址码部份,可以得到毫微程序的地址,把这个地址送入到CMAR2中,通过这个地址找到这条微指令所对应的毫微程序他的首地址,之后把毫微程序中的毫微指令一条条取出,毫微指令采用的是水平型编码,可以把控制讯号直接送到计算机系统的各个控制部件来控制各个相应的部件才能协调操作,来完成这条微指令所要求的复杂的操作。

(8)串行微程序控制和并行微程序控制

1、串行微程序控制

这些情况下,微指令的取指执行是串行的

2、并行微程序控制

这些方法是采用流水形式进行控制,第i条的微指令在执行的时侯,就可以借助取微指令的部件的空闲时间去取i+1条指令。

(9)微程序设计举例

1、写出对应机器指令的微操作及节拍安排:

下边,举例说明微程序设计的过程,便于更好的理解微程序设计是如何做的,要想设计微程序,微指令。同样要写出对应每一条机器指令的微操作和节拍安排,由于这种微操作我们要把他置于微指令的控制数组,节拍安排决定了微指令的先后次序,这儿假定CPU和讲组合逻辑时是相同的,都采用非总线的方法进行控制。

(1)取值阶段微操作剖析

由里面可以看出,取指阶段包含三条微指令。现今还要考虑这三条微指令怎样从控制储存器中取出?

在次序执行阶段:

假如取指阶段结束以后,我们要步入到执行阶段,我们要把指令的操作码部份献给微地址产生部件,由微地址产生部件确定这条指令在控制储存器中微地址的首地址。

(2)取值阶段微操作及节拍安排

这儿考虑了产生后续微指令地址的步骤:

(3)执行阶段的微操作及节拍安排

这儿还是要考虑要产生后续的微指令地址。执行阶段结束后,要进行取指操作,这儿取指的微指令地址我们通过下地址M给出。

CLA指令,对ACC进行清零:

COM指令,对ACC中内容进行取反:

SHR,右移操作:

CSL,循环左移:

STP,停机:

ADD:

STA指令,存数指令:

LDA指令,取数指令:

JMP指令,跳转指令:

BAN指令,条件转移指令:

里面一共列举了20种微操作,这20中微操作,合在一起,一共有38条微指令,每一种微操作,假若采用水平型的直接编码,每一个微操作在操作控制数组都须要一位进行表示,地址码数组是要在控制储存器内部进行轮询,所以地址码数组宽度和控制储存器的地址宽度是直接相关的。

2、确定微指令格式:

(1)微指令的编码方法

采用水平型的直接控制

(2)后续微指令的地址产生方法

由机器指令操作码通过微地址产生部件产生,和微指令的下地址数组直接给出。

(3)微指令的字长

后面剖析公有20个微操作,所以操作控制数组起码为20位。

所有的微指令放到一起,公有38条微指令构成,所以控制储存器起码也要有38个储存位置,下地址要才能对这38个位置进行轮询,所以下地址数组最少为6位。

所以,微指令字长=20+6=26位

下边,对前面估算下来的微指令字长进行简化。

里面的38条微指令中,其中有19条是用于产生后续地址的,即把后续地址送到CMAR。这19条中:

假如在设计控制器过程中,每一条微指令的下地址数组直接献给CMAR,则省去了把下地址献给CMAR时间。根据这样的思路,OP(IR)——>微地址产生部件——>CMAR命令也可以省略掉。这样,可以省去19条微指令,2个微操作,所以,控制储存器只须要储存19条微指令,下地址数组取5位即可。微操作省去了2个,操作数组为18位。这样,假如不须要将地址献给CMAR进行锁存,还可以省去一个CMAR寄存器,地址可直接由多路选择直接献给控制储存器,如右图:

设计中,要考虑一定的余量,操作控制数组如今是18位,可以扩充到24位,下地址数组,现今有19个微指令存贮在控制储存器中,后续可能会扩充,轮询范围会进一步扩大,所以轮询由5位扩充到6位。

这样,微指令宽度为24+6,共30位。

(4)定义微操作控制数组每一位的微操作。

(5)编撰微指令码点

上图中,是对码点的定义,即每一位对应哪些样的微操作。如,第0位对应的是PC——>MAR,第1为是1——>R等。

下边编撰微指令的码点:

地址译码信号有什么用
上一篇:地铁惊现猥亵男!造谣手机壳引关注 下一篇:没有了
相关文章