精简指令集流水线结构的微控制器的指令定义方法技术

技术编号:2884560 阅读:389 留言:0更新日期:2012-04-11 18:40
一种用于精简指令集流水线结构的微控制器的指令定义方法,其特征在于该方法利用三个指令定义区域,其中用同一指令定义区域来规定立即数、操作数地址或目标地址,用另一指令定义区域来规定不同操作运算的操作码,以及用还有一个指令定义区域来规定用于识别指令中的操作数地址或位置及目标地址或位置从而控制精简指令集流水线结构中流水线各阶段之间的数据传递的识别控制码。(*该技术在2019年保护过期,可自由使用*)

【技术实现步骤摘要】

本专利技术涉及一种应用于微控制器(MCU)或中央处理器(CPU)等各种微控制器的指令定义方法,尤其涉及一种应用于精简指令集流水线结构的MCU或CPU的指令定义方法。目前已公之于世的大多数精简指令集流水线结构微控制器的指令长度为32位(请见参考文献1,2,3)。典型的指令定义如下表一所示。表一 表一中各字段的意义如下。IT规定指令类型。例如IT=“00”表示数学运算类指令;IT=“01”表示逻辑运算类指令;IT=“10”表示位移或循环类指令;IT=“11”表示跳转类指令。OP规定操作码。例如OP=“000101”表示A-B;OP=“010001”表示A与B;OP=“000011”表示A+1。WR规定存放操作运算结果的地址,称为目标地址。RA规定操作数A的地址。RB规定操作数B的地址。已有技术的指令定义方案参见以下文献参考文献1.美国AT&amp;T的Neil H.E.Weste和Kamram Eshraghian的Principles of CMOS VLSI Design,1993。参考文献2.美国Prentice Hall的Advanced RISC Machines Ltd.的ARM Architectural reference Manual,1996。参考文献3.美国Prentice Hall的Mark Gordon Arnold的VerilogDigital Computer Design,Algorithms into Hardware,1999。参考文献4.美国Intel Corporation的MCS 51 Micro-controllerFamily User’s Manual,1994。在复杂指令集微控制器中,指令的长度是可变的。例如,INTEL 8051的指令可从8位到24位变化(参考文献4)。每条指令的执行在时间上不能与相邻指令重叠,执行各指令所需的时间也互不相同。但在精简指令集流水线结构微控制器中,每条指令的长度是一样的,执行时间也是一样的,在每一个时钟周期中,都有一条指令进入指令“流水线”,且都有一条指令从“流水线”中出来。所以,微控制器的执行速度是平均每个时钟周期执行一条指令(个别指令如跳转,读表等指令除外)。流水线结构的目的是提高执行速度。例如,如果执行一条指令平均所需的时间为1μs,若不采取流水线结构,则其执行速度为平均1条指令/1μs;如果采用5阶段的流水线结构,则其执行速度为平均5条指令/1μs。现以4阶段流水线为例来说明流水线结构微控制器的工作原理第一阶段,取指令阶段程序计数器提供一个地址给指令存储器;该存储器将输出一条与此地址对应的指令。该指令包含数学逻辑单元的操作码、操作数、操作数地址及目标地址等信息。第二阶段,读操作数阶段根据指令中所提供的操作数地址从随机存取存储器中读取相应的操作数,并将操作数加到数学逻辑单元的输入端。第三阶段,执行运算阶段数学逻辑单元执行操作码所规定的操作运算,并得出结果。第四阶段,写结果阶段将运算结果写入目标地址规定的存储单元中。上述四阶段流水线结构的操作可用表二来观察。表二 在周期0,指令1在取指令阶段,此时指令1已从指令存储器中取出,在周期1,指令1移到读操作数阶段,根据指令中规定的地址,读取操作数A,B;此时,指令2进入取指令阶段。在周期2,指令1进入执行阶段,将操作码提供给数学逻辑单元并将执行规定的操作运算;指令2移到读操作数阶段;指令3进入取指令阶段。最后,在周期3,指令1进入写结果阶段,将数学逻辑单元的运算结果写入到目标地址规定的存储单元中。从上述流水线图表中,可以看到,指令2与3中的操作数正在或已被读取时,指令1的结果被写入到存储单元中。如果指令2与3在读操作数或执行指令的阶段需要用指令1的运算结果,那么指令1的运算结果就必须被提前传递到数学逻辑单元的输入端,否则,就会发生“数据灾难”(DATA HAZARD)或得到错误的结果。例如,若指令2要用指令1的结果,那么在周期3,指令1的结果在被写入存储器的同时必须被向前转送到指令2的执行阶段。(这种数据转送是通过下列方法来实现的将读操作数阶段和执行阶段的操作数地址或位置与写结果阶段的目标地址或位置进行比较,并用一组多路选择开关将适当的操作数据传递给数学逻辑单元。考虑下列程序片段SUB A,B,C----A-B,结果存放到CADD D,C,F----D+C,结果存放到F指令X指令Y上述程序片段的执行次序可用下表三的流水线图表来表示。表三<tables id="table3" num="003"><table>周期取指令阶段读操作数阶段执行阶段写结果阶段0SUB A,B,C1ADD D,C,FSUB A,B,C2指令XADD D,C,FSUB A,B,C3指令Y指令XADD D,C,FSUB A,B,C</table></tables>在上表三的周期3中,A-B的结果被写入C。可是在执行阶段,C却被用来计算D+C。因此,正常的读操作数路径必须被绕开,并必须将写结果阶段中的C值传递到执行阶段的数学逻辑单元的输入端。否则,就得不到预期的结果。在复杂指令集微控制器中,由于相邻指令的执行在时间上是互不重叠的,即在当前这条指令执行完毕之后,下一条指令才被从指令存储器中取出并开始执行,但在精简指令集流水线结构微控制器中,由于相邻指令的执行在时间上是相互重叠的,如果某一条指令的操作数是相邻前一条或二条指令的执行结果(这种情况称为数据相关),那么就必须将这一个结果向前传递到执行阶段;否则,就会发生所谓的“数据灾难”(data hazard),也就不可能得到期望的运算结果。为了实现各阶段之间数据的正确传递,需要将读操作数阶段的指令和执行阶段的指令中的操作数地址与写结果阶段的指令中的目标地址进行比较;然后用比较的结果所产生的信号来控制一组多路选择开关,从而将适当的操作数传送到数学逻辑单元的数据输入口。为了准确无误地实现这种数据传递,在指令定义中,必须设法严格区别操作数地址与目标地址。即,普遍采用的方法就是表一所示的定义方法,即分别利用不同的指令定义区域来规定操作数地址与目标地址。本专利技术的目的在于通过一种简化的指令定义方法来缩短采用传统指令定义方法的指令的长度,但仍可完全实现与传统指令相同的功能。本专利技术提供了一种新的精简指令集流水线结构微控制器的指令定义方法,该方法利用三个指令定义区域,其中用同一指令定义区域来规定立即数、操作数地址或目标地址,用另一指令定义区域来规定不同操作运算的操作码,以及用还有一个指令定义区域来规定用于识别指令中的操作数地址或位置及目标地址或位置从而控制精简指令集流水线结构中流水线各阶段之间的数据传递的识别控制码。依据本专利技术的一个方面,提供了一种用于,其指令长度包括17位,比上述指令定义少了15位,其中把指令中的三位作为识别指令中的操作数地址或位置及目标地址或位置从而控制所述精简指令集流水线结构中流水线各阶段之间的数据传递的识别控制码;把该指令中的八位作为指令所执行的立即数、操作数地址或目标地址;以及把该指令中的六位作为规定不同操作运算的操作码。本专利技术提出的精简指令流水线结构微控制器的指令定义将指令长度从本文档来自技高网...

【技术保护点】
一种精简指令集流水线结构的微控制器的指令定义方法,其特征在于该方法利用三个指令定义区域,其中用同一指令定义区域来规定立即数、操作数地址或目标地址,用另一指令定义区域来规定不同操作运算的操作码,以及用还有一个指令定义区域来规定用于识别指令中的操作数地址或位置及目标地址或位置从而控制精简指令集流水线结构中流水线各阶段之间的数据传递的识别控制码。

【技术特征摘要】

【专利技术属性】
技术研发人员:谢卫国严晓浪滕强华
申请(专利权)人:杭州华盛微电子有限公司
类型:发明
国别省市:86[中国|杭州]

相关技术
    暂无相关专利
网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1