微程序怎么编译
① 学计算机多年的困惑......
计算机是分层抽象的,你应该学过编译原理和汇编语言吧!
最底层的硬件只能识别机器语言,也就是010001010……
人们为了好记,设计一种助记符,如ADD A,B,C代表把A和B相加,结果存到C,机器会把ADD转换成01101这样的指令,这就是汇编语言。
再到最后,人们又闲汇编太麻烦,逐渐发展出了高级语言,像C,C++,JAVA等,像C++中的Cout命令,通过C++编译器转换成汇编语言,再通过汇编解释器转化成机器语言,得到执行。期间,最重要的就是编译器,相当一个翻译的工具,把高级语言翻译成汇编语言。
其实计算机就是这么一层一层抽象的,都是为了更贴近人类的习惯,找本编译原理看看就明白了。
补充:cout是C++里的,只能编译成最基本的汇编语言,例如ADD,load,等等汇编指令,这些指令一般又可以分为微指令,像取地址,写到寄存器等等微指令。这些微指令分别对应不同的机器编码,例如011011。
微指令的编译方法是决定微指令格式的主要因素.考虑到速度,成本等原因,在设计计算机时采用不同的编译法 .因此微指令的格式大体分成两类:水平型微指令和垂直型微指令 .
1.水平型微指令
一次能定义并执行多个并行操作微命令的微指令,叫做水平型微指令.例如5.4节中所讲的微指令即为水平型微指令 .水平型微指令的一般格式如下:
控制字段 判别测试字段 下地址字段
按照控制字段的编码方法不同,水平型微指令又分为三种:一种是全水平型(不译法)微指令,第二种是字段译码法水平型微指令,第三种是直接和译码相混合的水平型微指令 .
2.垂直型微指令
微指令中设置微操作码字段,采用微操作码编译法,由微操作码规定微指令的功能,称为垂直型微指令 .
垂直型微指令的结构类似于机器指令的结构.它有操作码,在一条微指令中只有l-2个微操作命令,每条微指令的功能简单,因此,实现一条机器指令的微程序要比水平型微指令编写的微程序长得多 .它是采用较长的微程序结构去换取较短的微指令结构.
下面举4条垂直型微指令的微指令格式加以说明.
设微指令字长为16位,做操作码3位.
(1)寄存器-寄存器传送型微指令
15 13 12 8 7 3 2 0
0 0 0 源寄存器编址 目标寄存器编址 其他
其功能是把源寄存器数据送目标寄存器 .13—15位为微操作码(下同),源寄存器和目标寄存器编址各 5位,可指定31个寄存器.
(2)运算控制型微指令
_____________________________________________________________
其功能是选择ALU的左,右两输入源信息,按ALU字段所指定的运算功能(8种操作)进行处理,并将结果送入暂存器中.左,右输入源编址可指定31种信息源之一.�
(3)访问主存微指令�
_____________________________________________________________
其功能是将主存中一个单元的信息送入寄存器或者将寄存器的数据送往主存.存储器编址是指按规定的寻址方式进行编址.第1,2位指定读操作或写操作(取其之一).�
(4)条件转移微指令�
_____________________________________________________________
其功能是根据测试对象的状态决定是转移到D所指定的微地址单元,还是顺序执行下一条微指令.9位D字段不足以表示一个完整的微地址,但可以用来替代现行μPC的低位地址. 测试条件字段有4位,可规定16种测试条件.
3.水平型微指令与垂直型微指令的比较
(l)水平型微指令并行操作能力强.效率高,灵活性强,垂直型微指令则较差.
在一条水平型微指令中,设置有控制信息传送通路(门)以及进行所有操作的微命令,因此在进行微程序设计时,可以同时定义比较多的并行操作的微命令,来控制尽可能多的并行信息传送,从而使水平型微指令具有效率高及灵活性强的优点 .
在一条垂直型微指令中,一般只能完成一个操作,控制一两个信息传送通路,因此微指令的并行操作能力低,效率低 .
(2)水平型微指令执行一条指令的时间短,垂直型微指令执行时间长.
因为水平型微指令的并行操作能力强,因此与垂直型微指令相比,可以用较少的微指令数来实现一条指令的功能,从而缩短了指令的执行时间 .而且当执行一条微指令时,水平型微指令的微命令一般直接控制对象,而垂直型微指令要经过译码也会影响速度 .
(3)由水平型微指令解释指令的微程序,具有微指令字比较长,但微程序短的特点.垂直型微指令则相反,微指令字比较短而微程序长 .
(4)水平型微指令用户难以掌握,而垂直型微指令与指令比较相似,相对来说.比较容易掌握 .
水平型微指令与机器指令差别很大,一般需要对机器的结构,数据通路,时序系统以及微命令很精通才能设计 .
5.5.4 动态微程序设计
微程序设计技术有静态微程序设计和动态微程序设计之分.
1.静态微程序设计
对应于一台计算机的机器指令只有一组微程序,而且这一组微程序设计好之后,一般无须改变而且也不好改变,这种微程序设计技术称为静态微程序设计.
2.动态微程序设计
当采用EPROM作为控制存储器时,还可以通过改变微指令和微程序来改变机器的指令系统,这种微程序设计技术称为动态微程序设计.采用动态微程序设计时,微指令和微程序可以根据需要加以改变,因而可在一台机器上实现不同类型的指令系统.这种技术又称为仿真其他机器指令系统,以便扩大机器的功能.
② 微指令的格式主要与哪些因素有关后续地址的选取有什么限制
垂直型微指令。
微指令格式大体分成两类:水平型微指令和垂直型微指令。
垂直型微指令微指令中设置微操作码字段,采用微操作码编译法,由微操作码规定微指令的功能,称为垂直型微指令。
微指令是指在微程序控制的计算机中,将由同时发出的控制信号所执行的一组微操作。所以微指令就是把同时发出的控制信号的有关信息汇集起来形成的。将一条指令分成若干条微指令,按次序执行就可以实现指令的功能。若干条微指令可以构回成一个微程序,而一个微程序就对应了一条机器指令。因此,一条机器指令的功能是若干条微指令组成的序列来实现的。简言之,一条机器指令所完成的操作分成若答干条微指令来完成,由微指令进行解释和执行。微指令的编译方法是决定微指令格式的主要因素。
③ 微程序的控制方式有哪些
微程序控制的基本思想,就是仿照通常的解题程序的方法,把操作控制信号编成所谓的“微指令”,存放到一个只读存储器里.当机器运行时,一条又一条地读出这些微指令,从而产生全机所需要的各种操作控制信号,使相应部件执行所规定的操作
.
采用微程序控制方式的控制器称为微程序控制器。所谓微程序控制方式是指微命令不是由组合逻辑电路产生的,而是由微指令译码产生。一条机器指令往往分成几步执行,将每一步操作所需的若干位命令以代码形式编写在一条微指令中,若干条微指令组成一段微程序,对应一条机器指令。在设计cpu时,根据指令系统的需要,事先编制好各段微程序
,且将它们存入一个专用存储器(称为控制存储器)中。微程序控制器由指令寄存器ir、程序计数器pc、程序状态字寄存器psw、时序系统、控制存储器cm、微指令寄存器以及微地址形成电路、微地址寄存器等部件组成。执行指令时,从控制存储器中找到相应的微程序段,逐次取出微指令,送入微指令寄存器,译码后产生所需微命令,控制各步操作完成。
④ 微程序和程序的关系
微程序是由多个机器指令组成的机器指令集,程序则是为了完成某一应用功能所编写的代码的集合。简单一点,微程序是机器指令级别的,程序是高级语言级别的。
一种用于解决实际问题的机器指令的有序集合,包括子程序、分支、循环和其他结构,存储在主存中,可以更新和修改;
微程序设计是一组有序的微指令。微程序设计是传统程序设计方法在控制逻辑设计中的应用。因此,微程序也可以有微子程序、分支、循环等结构。
(4)微程序怎么编译扩展阅读:
微程序和程序的区别
1、不同的系统
是用某种编程语言编写的,运行在某种目标架构上。微程序存储在控制内存CM中,控制内存CM只能读取,不能更改。CM中的所有微程序解释并执行整个指令系统中的所有机器指令。
2、编译是不同的
通常,程序是用高级语言编写的,然后在编译期间由编译器/解释器翻译成机器语言以执行。
在某些情况下,也可以用汇编语言进行编程,汇编语言经过机器语言的修改,用文字代替0和1,如Add用于添加,Mov用于传递数据等。
⑤ 微程序和机器指令有什么关系
微程序和程序是两个不同的概念。微程序是由微指令组成的,用于描述机器指令,实际上是机器指令的实时解释器,微程序是由计算机的设计者事先编制好并存放在控制存储器中的,一般不提供给用户;程序是由机器指令组成的,由程序员事先编制好并存放在主存放器中。
微指令是控制计算机各部件完成某个基本微操作的命令。微操作是指计算机中最基本的、不可再分解的操作。微指令和微操作是一一对应的,微指令是微操作的控制信号,微操作是微指令的操作过程。微指令是若干个微命令的集合。
微程序是机器指令的实时解释器,每一条机器指令都对应一个微程序。
(5)微程序怎么编译扩展阅读
微指令和指令(机器指令)的区别:
一、概念不同
1、机器指令:机器指令是CPU能直接识别并执行的指令。
2、微指令:是指在机器的一个CPU周期中,一组实现一定操作功能的微命令的组合,描述微操作的语句。
二、表现格式不同
1、机器指令:表现形式是二进制编码。
2、微指令:格式分为水平型微指令和垂直型微指令。
三、原理不同
1、机器指令:机器指令通常由操作码和操作数两部分组成,操作码指出该指令所要完成的操作,即指令的功能,操作数指出参与运算的对象,以及运算结果所存放的位置等。
2、微指令:一条机器指令的功能是若干条微指令组成的序列来实现的,即一条机器指令所完成的操作分成若干条微指令来完成,由微指令进行解释和执行,这个微指令序列通常叫做微程序。微指令的编译方法是决定微指令格式的主要因素。
⑥ 简述程序和微程序两个的概念和区别。
程序是一系列机器指令的有序集合,用于解决实际问题,有子程序、分支、循环等结构,存放在主存中,可以更新修改;
微程序是一系列微指令的有序集合,微程序设计是将传统的程序设计方法运用到控制逻辑的设计中,因此在微程序中也可以有微子程序、分支、循环等结构。
区别:
1、体系不同
程序它以某些程序设计语言编写,运行于某种目标结构体系上。微程序存储在控制存储器CM中,只能读出,不能更改,CM中的所有微程序解释执行整个指令系统中的所有机器指令。
2、编译不同
一般的,程序是由高级语言编写,然后在编译的过程中,被编译器/解释器转译为机器语言,从而得以执行。
有时,也可用汇编语言进行编程,汇编语言在机器语言上进行了改进,以单词代替了0和1,例如以Add代表相加,Mov代表传递数据等。
(6)微程序怎么编译扩展阅读:
微程序的设计技术:
微程序设计技术,指的是利用软件技术来实现硬件设计的一门技术。优点:微程序设计克服了组合逻辑控制单元线路庞杂的缺点,同硬布线比较具有规整性,灵活性,可维护性等一系列优点。缺点:由于增加了到控制存储器中读取微指令的时间导致执行速度慢。
程序的运行:
为了使计算机程序得以运行,计算机需要加载代码,同时也要加载数据。从计算机的底层来说,这是由高级语言(例如Java,C/C++,C#等)代码转译成机器语言而被CPU所理解,进行加载。
⑦ 微指令的格式可分为水平型微指令和什么
垂直型微指令。
微指令格式大体分成两类:水平型微指令和垂直型微指令。
垂直型微指令微指令中设置微操作码字段,采用微操作码编译法,由微操作码规定微指令的功能,称为垂直型微指令。
微指令是指在微程序控制的计算机中,将由同时发出的控制信号所执行的一组微操作。所以微指令就是把同时发出的控制信号的有关信息汇集起来形成的。将一条指令分成若干条微指令,按次序执行就可以实现指令的功能。若干条微指令可以构成一个微程序,而一个微程序就对应了一条机器指令。因此,一条机器指令的功能是若干条微指令组成的序列来实现的。简言之,一条机器指令所完成的操作分成若干条微指令来完成,由微指令进行解释和执行。微指令的编译方法是决定微指令格式的主要因素。
⑧ 微程序的控制方式有哪些
1.
组合逻辑控制器有哪些缺点,微程序控制器如何针对这些缺点对其进行了改
进?
(P140)
答:组合逻辑控制器的缺点为:
①设计不规整,设计效率较低;控制器核心结构零乱,不便于检查和调试。
②不易修改与扩展指令系统功能。
改进:
引入了程序技术,使设计规整;
引入了存储逻辑,使功能易于扩展。
2.
微程序控制的基本思想是什么?
答:
①若干微命令编制成一条微指令,控制实现一步操作;
②若干微指令组成一段微程序,解释执行一条机器指令;
③微程序事先存放在控制存储器中,执行机器指令时再取出。
3.
简述控制存储器存储的内容,以及与主存的区别。
答:控制存储器中存放微程序。
与主存的区别:
①控制存储器在
CPU
中、而主存不是;
②控制存储器是一个
ROM
,而主存是
ROM
和
RAM
③控制存储器容量比主存小
④控制存储器字长比主存长
⑤控制存储器速度比主存快
4.
微指令可分为哪两部分?各自作用是什么?
答:微指令可分为
微命令字段(或微操作控制字段
)
和微地址字段
(
或顺序控制字段
)
微命令字段:提供一步操作所需的微命令。
微地址字段:指明后续微地址的形成方式
,
提供微地址的给定部分。
5.
采用分段直接编译法时,微命令分组的原则是什么?
答:同类操作中互斥的微命令放同一字段。
6.
什么是功能转移?
答:根据机器指令找到对应微程序入口地址的过程称为功能转移。
7.
后续微地址的形成方式有哪些?
答:有增量方式和断定方式两种。
⑨ 微程序(指令),机器语言是硬件还是软件
这部分程序的开发语言一般是C或者其他低级语言。使用编译工具链生成二进制文件固化在芯片内部的ROM中。
芯片上电时,硬件会自动从ROM加载这部分程序运行。
总结,这部分是属于软件。
⑩ 微程序设计的基本原理是什么
在微指令的控制字段中,每一位代表一个微命令,在设计微指令时,是否发出某个微命令,只要将控制字段中相应位置成"1"或"0",这样就可打开或关闭某个控制门,这就是直接控制法.
在6.3节中所讲的就是这种方法.但在某些复杂的计算机中,微命令甚至可多达三四百个,这使微指令字长达到难以接受的地步,并要求机器有大容量控制存储器,为了改进设计出现了以下各种编译法.
6.4.1 微指令的编译法(编码译码方法)(2)
2.字段直接编译法
在计算机中的各个控制门,在任一微周期内,不可能同时被打开,而且大部分是关闭的(相应的控制位为"0").所谓微周期,指的是一条微指令所需的执行时间.如果有若干个(一组)微命令,在每次选择使用它们的微周期内,只有一个微命令起作用,那么这若干个微命令是互斥的.
例如,向主存储器发出的读命令和写命令是互斥的;又如在ALU部件中,送往ALU两个输入端的数据来源往往不是唯一的,而每个输入端在任一微周期中只能输入一个数据,因此控制该输人门的微命令是互斥的.
选出互斥的微命令,并将这些微命令编成一组,成为微指令字的一个字段,用二进制编码来表示, 就是字段直接编译法.
6.4.1 微指令的编译法(编码译码方法)(3)
例如,将7个互斥的微命令编成一组,用三位二进制码分别表示每个微命令,那么在微指令中,该字段就从7位减成3位,缩短了微指令长度.而在微指令寄存器的输出端,为该字段增加一个译码器,该译码器的输出即为原来的微命令.
6.4.1 微指令的编译法(编码译码方法)(4)
字段长度与所能表示的微命令数的关系如下:
字段长度 微命令数
2位 2~3
3位 4~7
4位 8~15
一般每个字段要留出一个代码,表示本段不发出任何微命令,因此当字段长度为3位时,最多只能表示7个互斥的微命令,通常代码000表示不发微命令.
6.4.1 微指令的编译法(编码译码方法)(5)
3.字段间接编译法
字段间接编译法是在字段直接编译法的基础上,进一步缩短微指令字长的一种编译法.
如果在字段直接编译法中,还规定一个字段的某些微命令,要兼由另一字段中的某些微命令来解释,称为字段间接编译法.
本方法进一步减少了指令长度,但很可能会削弱微指令的并行控制能力,因此通常只作为直接编译法的一种辅助手段.
6.4.1 微指令的编译法(编码译码方法)(6)
字段A(3位)的微命令还受字段B控制,当字段B发出b1微命令时,字段A发出a1,1,a1,2,…,a1,7中的一个微命令;而当字段B发出b2微命令时,字段A发出a2,1,a2,2,…,a2,7中的一个微命令,仅当A为000时例外,此时什么控制命令都不产生.
6.4.1 微指令的编译法(编码译码方法)(7)
4.常数源字段E
在微指令中,一般设有一个常数源字段E就如指令中的直接操作数一样.E字段一般仅有几位,用来给某些部件发送常数,故有时称为发射字段.
该常数有时作为操作数送入ALU运算;有时作为计算器初值,用来控制微程序的循环次数等.
6.4.2 微程序流的控制 (1)
当前正在执行的微指令,称为现行微指令,现行微指令所在的控制存储器单元的地址称现行微地址,现行微指令执行完毕后,下一条要执行的微指令称为后继微指令,后继微指令所在的控存单元地址称为后继微地址.
所谓微程序流的控制是指当前微指令执行完毕后,怎样控制产生后继微指令的微地址.
与程序设计相似,在微程序设计中除了顺序执行微程序外还存在转移功能和微循环程和微子程序等,这将影响下址的形成.
下面介绍几种常见的产生后继微指令地址的方法.
6.4.2 微程序流的控制 (2)
(1)以增量方式产生后继微地址.
在顺序执行微指令时,后继微地址由现行微地址加上一个增量(通常为1)形成的;而在非顺序执行时则要产生一个转移微地址.
机器加电后执行的第一条微指令地址(微程序入口)来自专门的硬件电路,控制实现取令操作,然后由指令操作码产生后继微地址.接下去,若顺序执行微指令,则将现行微地址主微程序计数器( PC中)+1产生后继微地址;若遇到转移类微指令,则由 PC与形成转移微地址的逻辑电路组合成后继微地址.
6.4.2 微程序流的控制 (3)
6.4.2 微程序流的控制 (4)
(2)增量与下址字段结合产生后继微地址
将微指令的下址字段分成两部分:转移控制字段BCF和转移地址字段BAF,当微程序实现转移时,将BAF送 PC,否则顺序执行下一条微指令( PC+1).
执行微程序条件转移时,决定转移与否的硬件条件有好几种.例如,"运算结果为零","溢出","已完成指定的循环次数"等.
我们假设有八种转移情况,定义了八个微命令(BCF取3位),在图中设置计数器CT用来控制循环次数.如在执行乘(或除)法指令时,经常采用循环执行"加,移位"(或减,移位)的方法,指令开始执行时,在CT中置循环次数)每执行一次循环,计数器减1,当计数器为零时结束循环.又考虑到执行微子程序时,要保留返回微地址,因此图中设置了一个返回寄存器RR.