“水平微指令”和“垂直微指令”各是什么各有什么优缺点

“水平微指令”和“垂直微指令”各是什么各有什么优缺点,第1张

水平型微指令:一次能定义并执行多个并行 *** 作微命令的微指令。

垂直型微指令:微指令中设置微 *** 作码字段,采用微 *** 作码编译法,由微 *** 作码规定微指令的功能。

对于水平型微指令来说:并行 *** 作能力强,效率高,灵活性强,而且执行一条指令的时间短,并且解释指令的微程序,有微指令字较长而微程序短的特点,但是用户难以掌握。水平型微指令的大多数微命令一般可直接控制对象故执行每条微指令的时间短。并且它要经过译码后控制对象影响每条微指令的执行时间。

对于垂直型微指令来说:并行 *** 作能力弱,效率低,灵活性较弱,而且执行一条指令的时间较长,并且解释指令的微程序,有微指令字较短而微程序长的特点,对于用户来说比较容易掌握。垂直型微指令的结构类似于一般机器指令的结构由微 *** 作码译码确定微指令的功能。垂直型微指令字长较短实现一条机器指令的微程序要比水平型微指令编写的微程序长得多它是用较长的微程序结构来换取较短的微指令结构。

一条微程序对应一条汇编语言指令是错误的。

微程序是编写高级语言的程序的一种方法,它将高级语言指令转化为多条机器语言指令。而汇编语言是低级语言,它与机器语言相似,但是语法上更加类似于高级语言,编译成机器语言需要另外的汇编程序。

所以一条微程序对应多条汇编语言指令,或者一条汇编语言指令对应多条微程序。

微程序需要编译成机器语言指令,而汇编语言需要汇编成机器语言,它们是两种不同的编程语言,微程序由高级语言编写,汇编语言由低级语言编写,是不同层次的。

微程序(microprogram)是英国剑桥大学教授MVWilkes在1951年首先提出的,它是实现程序的一种手段,具体就是将一条机器指令编写成一段微程序。每一个微程序包含若干条微指令,每一条微指令对应一条或多条微 *** 作。在有微程序的系统中,CPU内部有一个控制存储器,用于存放各种机器指令对应的微程序段。当CPU执行机器指令时,会在控制存储器里寻找与该机器指令对应的微程序,取出相应的微指令来控制执行各个微 *** 作,从而完成该程序语句的功能。微程序设计技术,指的是利用软件技术来实现硬件设计的一门技术。

微程序控制方法由于规整性好,灵活方便,通用性强,因此在包括计算机在内的各种复杂数字系统控制器的设计中得到了广泛应用,成为控制器的主流设计方法之一。

程序控制的基本思想,就是仿照通常的解题程序的方法,把所有的控制命令信号汇集在一起编码成所谓的微指令,存放在一个EPROM里。系统运行时,一条又一条地读出这些微指令,从而产生执行部件所需要的各种控制信号,以控制各逻辑部件执行所规定的 *** 作。

一个数字系统基本上可以划分成两大部分——控制部件和执行部件,如图626所示。 控制器就是控制部件。而ALU、寄存器组、存储器RAM等,相对控制器来讲,就是执行部件。那么两者之间是如何进行联系的呢

控制部件与执行部件的联系之一,是通过控制线。控制部件通过控制线向执行部件发出各种控制命令,我们把这种控制命令称为微命令,而执行部件接受微命令所执行的 *** 作叫作微 *** 作。

控制部件与执行部件之间的另一联系是反馈信息。例如由于运算处理中正在处理的数据因其结果特征(正、负、进位、溢出等)而影响下一个 *** 作的执行,因此就需要规定条件测试或状态测试。执行部件通过反馈线向控制部件反映当前 *** 作的结果情况,以便使控制部件根据执行部件的“状态”标志下达新的微命令。

在系统的一个基本周期(又称机器周期,一般由几个时钟周期组成)中,一组实现一定 *** 作功能的微命令的组合,构成一条微指令。

这里要强调两点:

第一,一条微指令的有效持续时间为一个系统基本周期,它表示从R0M中读出微指令与执行这条微指令的时间总和。当从ROM中读出下一条微指令后,当前的这条微指令即失效。

第二,一条微指令中包含若干个微命令,它们分头并行地控制执行部件进行相应的微 *** 作。

微指令除给出微命令信息外,还应给出测试判别信息。一旦出现此信息,执行这条微指令时要对系统的有关“状态标志”进行测试,从而实现控制算法流程图的条件分支。微指令中还包含一个下址字段,该字段将指明ROM中下一条微指令的地址

图6.27 微指令的典型结构

图6.27示出了微指令的典型结构,长条框内的符号X表示一个二进制位(bit)。其中微命令字段给出执行部件的控制信号:X编码为1,表示有微命令,X编码为0表示无微命令。测试判别字段和下一地址字段一起实现顺序控制:当测试判别字段无效时(X编码为0),下址字段信息即是下条微指令的地址;当判别测试字段有效时(其中一个X编码为1),根据执行部件反馈线上的标志信息对下址字段信息进行修改,修改好的地址即为下条微指令的地址。

微程序是由若干条微指令组成的序列。在计算机中,一条机器指令的功能可由若干条微指令组成的序列来解释和执行,因此机器执行一条指令的过程,也就是执行一个相应的微程序的过程。就一般数字系统而言,按照我们在第6.5节中使用的概念,微程序实质上就是将控制算法流程图用EPROM等来实现。

微程序概念的引入使大型复杂数字系统控制器的设计发生了革命性的变化。因为微程序技术可代替硬件布线的控制技术,即由门电路和触发器等组成的硬件网络可被存有控制代码的EPROM存储器所取代[1]

[编辑本段]指令 拼音:zhǐ lìng

(1) ∶指导;号令 (2) ∶旧时公文的一种,是上级对下级呈请的批示 (3) ∶能被计算机识别并执行的二进制代码,它规定了计算机能完成的某一 *** 作。

告诉计算机从事某一特殊运算的代码合算:

指令种类:数据传送指令、算术运算指令、位运算指令、程序流程控制指令、串 *** 作指令、处理器控制指令。 [编辑本段]指令的组成形式: 一条指令通常由两个部分组成: *** 作码 +地址码 。

*** 作码:指明该指令要完成的 *** 作的类型或性质,如取数、做加法或输出数据等。

地址码:指明 *** 作对象的内容或所在的存储单元地址。

宏指令:

宏指令是汇编语言程序中的一种伪指令

它的格式为

[ 宏指令名 ] MACRO [形式参数]

……

代码段

……

ENDM

使用了“形式参数“,它们引用宏指令时被给出的一些名字或数值(实在参数)所替换。使用形式参数给宏指令带来了很大的灵活性。

宏调用格式

[ 宏指令名 ] [实际参数]

实参数项将对应替换宏指令中形式参数。如果形式参数为标号时,则在宏调用中,实参也应为标号,且要求实参是唯一的。如果宏定义中有自己的标号,则在宏调用时,汇编程序自动地把标号变成唯一的标号

伪指令:

伪指令(伪 *** 作)不像机器指令那样是在程序运行期间由计算机来执行的,它是在汇编程序对源程序汇编期间由汇编程序处理的 *** 作它可以完成如处理器选择,定义程序模式,定义数据,分配存储区,指示程序结束等功能伪指令在编译的时候并不生成代码.伪指令在编译之后就就不存在了

实验三微程序设计 一、 实验目的:

1掌握时序产生器的组成及工作原理;掌握微程序控制器的组成及工作原理; 2根据给出的指令系统、微指令格式、微命令的字段译码方案、地址转移逻辑电路分别设计部分微程序流程图、微指令的二进制代码; 3掌握微程序的编制、写入和读出验证的方法;

4根据给出的汇编语言和机器语言源程序,通过改变SE1~SE6的值,模拟P(1)测试,观察微程序的运行过程,掌握由微程序解释机器语言源程序的工作原理。 二、实验设备

TDN-CM+计算机组成原理教学实验系统一台。

三、实验内容

1实验原理

实验所用的时序电路原理如图5-1所示,可产生4个等间隔的时序信号TS1-TS4,其中φ为时钟信号,由实验台左上方的方波信号源提供,可产生频率及脉宽可调的方波信号。学生可根据实验自行选择方波信号的频率及脉宽。为了便于控制程序的运行,时序电路发生器也设置了一个启停控制触发器Cr,使TS1-TS4信号输出可控。图5-1中STEP(单步)、STOP(停机)分别是来自实验台上方中部的两个二进制开关STEP、STOP的模拟信号。START键是来自实验板上方中部的一个微动开关START的按键信号。当STEP的开关为0时(EXEC),一旦按下启动键,运行触发器Cr一直处于“1”状态,因此时序信号TS1-TS4将周而复始地发送出去。当STEP为1(STEP)时,一旦按下启动键,机器便处于单步运行状态,即此时只发送一个CPU周期的时序信号就停机。利用单步方式,每次只读一条微指令,可以观察微指令的代码与当前微指令的执行结果。另外,当机器连续运行时,如果STOP开关置“1”(STOP),也会使机器停机。

由于时序电路的内部线路已经连好,所以只需将时序电路与方波信号源连接(即将时序电路的时钟脉冲输入端φ接至方波信号发生器输出端H23),时序电路的CLR已接至实验板右下方的CLR模拟开关上。

2微程序控制电路与微指令格式 (1)微程序控制电路

微程序控制器的组成见图5-2,其中控制存储器采用3片2816的EPROM,具有掉电保护功能,微命令寄存器18位,用两片8D触发器(74LS273)和一片4D(74LS175)触发器组成。微地址寄存器6位,用三片正沿触发的双D触发器(74LS74)组成,它们带有清“0”端和预置端。在不判别测试的情况下,T2时刻打入微地址寄存器的内容即为下一条微指令

2

的微地址。当T4时刻进行测试判别时,转移逻辑满足条件后输出的负脉冲通过强置端将某一触发器置为“1”状态,完成微地址的多路转移功能。

在该实验电路中设有一个编程开关(位于实验台中部上方),它具有三种状态:PROM(编程)、READ(校验)、RUN(运行)。当处于“编程状态”时,学生可根据微地址和微指令格式将微指令二进制代码写入到控制存储器2816中。当处于“校验状态”时,可以对写入控制存储器中的二进制代码进行验证,从而可以判断写入的二进制代码是否正确。当处于“运行状态”时,只要给出微程序的入口微地址,则可根据微程序流程图自动执行微程序。图中微地址寄存器输出端增加了一组三态门,目的是隔离触发器的输出,增加抗干扰能力,并用来驱动微地址显示灯。

如图5-1

(2)微指令格式

微指令字长共24位,其微指令格式及每位的功能如表5-1所示。

表5-1 微指令格式及字段译码功能

A、B、C字段经过译码器译码后的信号使用说明:

A字段 B字段 C字段

A9、A8经译码器译码后的信号使用说明:

计数器存储器RAM6116:

功能 不选择 读 写 其中UA5-UA0为6位的后续微地址,A、B、C为三个译码字段,分别由三个控制位译码出多位。C字段中的P(1)-P(4)是四个测试字位。其功能是根据机器指令及相应微代码进行译码,使微程序转入相应的微地址入口,从而实现微程序的顺序、分支、循环运行,其原理如图5-3所示,图中I7-I2为指令寄存器的第7-2位输出,SE6-SE1为微程序控制器单元微地址锁存器的异步置“1”输入端。AR为算术运算是否影响进位及判零标志控制位,其为低电零有效。B字段中的RS-B、RD-B、RI-B分别为源寄存器选通信号、目的寄存器选通

信号及变址寄存器选通信号(均为低电平有效),其功能是根据机器指令来进行三个工作寄存器R0、R1及R2的选通译码,其原理如图5-4,图中I0-I3为指令寄存器的第0-3位,LDRi为打入工作寄存器信号的译码器使能控制位,高电平有效。

3.汇编指令格式和指令系统

助记符号 指令格式 功能

IN Rd 0000 ×× Rd (SW)-->Rd

ADD Rd×× Rd d)+(addr)-->Rd addr

STA Rds ××s)-->addr addr

×× ××addr

×× ××addr

说明:指令格式中IN指令为单字长(8位)指令,其它指令为双字长指令(16位),指令格式中给出了各条指令的 *** 作码编码,Rs为源寄存器编码(共2位),Rd为目的寄存器编码(共2位)。

4实验步骤

(1)图5-5给出了几条机器指令对应的参考微程序流程图,设计ADD和JMP机器指令对应的微程序流程图,将有关的微程序按微指令格式编写二进制代码,填入表5-2所示的二进制代码表。

运行微程序

表5-2 微指令的二进制代码表

(2)按图5-6连接实验线路,仔细查线无误后接通电源。

(3)观测时序信号

用双踪示波器(或用PC示波器功能)观察方波信号源的输出,时序电路中的“STOP”开关置为“RUN”,“STEP”开关置为“EXEC”。按动START按键,从示波器上可观察到TS1、TS2、TS3、TS4各点的波形,比较它们的相互关系,画出其波形,并标注测量所得到的脉冲宽度,如图5-7所示。

(4)观察微程序控制器的工作原理: ①编程

A将编程开关置为PROM(编程)状态;

B将实验板上“STATE UNIT”中的“STEP”置为“STEP”,“STOP”置为“RUN”状态; C用二进制模拟开关置微地址MA5-MA0;

D在MK24-MK1开关上置微代码,24位开关对应24位显示灯,开关量为“0”时灯亮,

开关量为“1”时灯灭;

E启动时序电路(按动启动按钮“START”),即将微代码写入到E2PROM(2816)的相

应地址对应的单元中;

F重复C-E步骤,将表5-2的微代码写入到2816。 ②校验

A将编程开关设置为READ(校验)状态;

B将实验板的“STEP”开关置为“STEP”状态,“STOP”开关置为“RUN”状态; C用二进制开关置好微地址MA5-MA0;

D按动“START”键,启动时序电路,读出微代码。观察显示灯MD24-MD1的状态(灯

亮为“0”,灯灭为“1”),检查读出的微代码是否与写入的相同。如果不同,则将开关置于PROM编程状态,重新执行①即可。

③单步运行

A将编程开关置于“RUN(运行)”状态;

B将实验板的“STEP”开关置为“STEP”状态,“STOP”开关置为“RUN”状态; C *** 作CLR开关(拨动开关在实验板右下角)使CLR信号1->0->1,微地址寄存器

MA5-MA0清零,从而明确本机的运行入口微地址为000000(二进制);

D按动“START”键,启动时序电路,则每按动一次启动键,读出一条微指令后停机,

此时实验台上的微地址显示灯和微命令显示灯将显示所读出的一条指令。

注意:在当前条件下,可将“MICR0-CONTROLLER”单元的SE6-SE1接至“SWITCH UNIT”中的S3-Cn对应二进制开关上(即:将SE1-SE6对应二进制开关置为“1”),当需要人为设置分支地址时,可通过强制端SE1-SE6人为设置分支地址,将某个或某几个二进制开关置为“0”,相应的微地址位即被强置为“1”,从而改变下一条微指令的地址。(二进制开关置为“0”,相应的微地址位将被强置为“1”)

④连续运行

A将编程开关置为“RUN(运行)”状态;

B将实验板的单步开关“STEP”置为“EXEC”状态,“STOP”开关置为“RUN”状态; C使CLR从1->0->1,此时微地址寄存器清“0”,从而给出取指微指令的入口地址

为000000(二进制);

D启动时序电路,则可连续读出微指令。

思考题:

1为什么取指周期在这里要占用2个CPU周期?

2在解释OUT指令时,17、25微地址的微指令所完成的 *** 作为什么不能由一条微指令实现?

3在向RAM写入机器码时,24、30微地址的微指令所完成的 *** 作为什么不能由一条微指令实现?

注意事项

1、所有导线使用前须测通断; 2、不允许带电接线; 3、“0”——亮 “1”——灭;

4、注意连接线的颜色、数据的高低位。

以上就是关于“水平微指令”和“垂直微指令”各是什么各有什么优缺点全部的内容,包括:“水平微指令”和“垂直微指令”各是什么各有什么优缺点、一条微程序对应一条汇编语言指令对还是错、微程序运行的依据是什么等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/9772030.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存