《酷能指令集》及相关专利技术

2020-03-08 19:21发布

本帖最后由 吾要单片机 于 2017-5-20 10:24 编辑

     本《酷能指令集》是一种全新的计算机指令集,它是基于本人的3项专利技术设计而成的,其具有新颖、高效、高代码密度的优点,目前基于本《酷能指令集》的CPU设计已经完成,仿真结果表明达到了专利所描述的效果,非常满意。在介绍本指令集之前,首先介绍与之相关的专利技术。(先介绍已经公开的2项)
第一项专利技术:专利号:201310153746.1,专利名:《一种在计算机数据处理指令中附加跳转功能的方法及CPU模块》
      这项专利的主要思想是:在计算机数据处理指令(包含数据转送指令,以下同)中增加设置执行的条件码、反条件码和跳转矢量,从而使得数据处理指令不再是单一的数据处理,而且具备跳转能力,其好处是提高程序的密度和执行效率。具体内容参见专利的说明书。
通过上述技术方法实施后数据处理指令具有跳转功能了,在此我称之为具有跳转功能的数据处理指令。这些具有跳转功能的数据处理指令的汇编格式如下所示:
操作码<条件码>   [操作数1] , [操作数2], [操作数3] ,[E][JMP  跳转标号]
其中E是反条件码,跳转矢量是相对PC的跳转矢量。
注意观察该汇编指令格式,我们发现比现在传统的数据处理指令指令多出了“[E][JMP  跳转标号]”字段,这个字段就是用于描述跳转功能。其中E是反条件码助记符,JMP是立即跳转助记符。如果E被隐去,则表示同条件跳转,即附加的跳转条件和操作码后缀的条件码相同;如果E被显现,则表示反条件跳转,即附加的跳转条件和操作码后缀的条件码相反。
    汇编指令格式:操作符<cond>  操作数1,操作数2,..,[E][JMP  #v]
其中:    cond------条件码,其意思是:如果满足条件码的要求,则执行操作符定义的操作;如果没有条件码,其意思是:无条件执行操作符定义的操作。
E—-------反条件码,意思是否则(Else)。
JMP  #v---意思是立即跳转#v条指令。
例如:           SUB<cond>  Rd,  Rn,  Rj,  [E][JMP  #v_6]
需要特别指出的是:有些数据处理指令是无条件执行,没有条件码、反条件码、跳转矢量。
实际应用举例如下:
SUBEQ  R3, R1, R2, EJMP  lab_1; //如果相等,则执行R3=R1-R2;否则立即跳到lab_1处。属于反条件跳转。这种情况下它顶得3条MIPS指令。
SUBEQ  R3, R1, R2, JMP  lab_1; //如果相等,则执行R3=R1-R2,并且立即跳到lab_1处。属于同条件跳转。这种情况下它顶得3条MIPS指令。
SUB    R3, R1, R2; //无条件执行R3=R1-R2。没有跳转功能,属于反条件跳转。这种情况下它只顶得1条MIPS指令。
SUB    R3, R1, R2, JMP  lab_1; // 无条件执行R3=R1-R2,并且立即跳到lab_1处。属于同条件跳转。这种情况下它顶得2条MIPS指令。
SUBRE  R3, R1, R2, JMP  lab_1; //无条件执行RC=RC-1的操作,如果Z==1&&RC>0,则执行R3=R1-R2,并且立即跳到lab_1处。属于同条件跳转。这种情况下有最高效率,它顶得5条MIPS指令!

从上面可以看出:在数据处理指令(含数据转送指令)中附加执行条件码、反条件码和跳转矢量后,可以使得数据处理指令不但有条件执行,而且具有跳转功能。这种指令的效率显然高于现在主流的RISC指令,不过由于附加的跳转矢量位数有限(32位指令集是6位,16位指令集是7位),所以跳转的范围都比较小,属于短跳转。

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
19条回答
吾要单片机
1楼-- · 2020-03-09 20:12
 精彩回答 2  元偷偷看……
吾要单片机
2楼-- · 2020-03-09 21:08
定义的操作数扩展指令,其中:RIMM指令用于扩展寄存器号,CIMM指令用于扩展条件码(cond)、反条件码(E)、跳转矢量(V),HIMM指令用于扩展高12位立即数,WIMM指令用于扩展高28位立即数。在16位指令集中,可以使用的前缀扩展指令是RIMM、CIMM、HIMM以及WIMM。
在32位指令集中,只能使用的前缀扩展指令是WIMM,用于扩展32位立即数。
吾要单片机
3楼-- · 2020-03-10 01:39
本16位指令集的技术特点:
1.支持的通用寄存器16个,即R0---R15(其中R0是零寄存器),这比其他的16位指令集大一倍,为用户提供更多的寄存器变量空间,有利于提高效能。
2.可以携带16位或32位的立即数,这一优势是其他16位指令集不能比拟的。
3.LOAD/STORE寻址方式灵活多样,支持EA=Rn、EA=Rn+#imm12、EA=Rn+#imm28、EA=Rn+Ra.比其他16位指令集强。
4.有布尔处理指令,有位与指令bit_and、位或指令bit_or、位异或指令bit_xor、位取反指令bit_not、位运算结果保存指令zmb.。这一特点比MCS-51或ARM的位操作指令更通用,位变量定义不再受限制。
5.本16位指令集自成一体,不用借助32位指令集就能实现所有功能,代码密度更高,与32位指令集相比,其性能损失非常小。
吾要单片机
4楼-- · 2020-03-10 05:22
需要说明的是:1、16位指令集和32位指令集都是完整独立的,这和ARM不同。2、16位指令集前缀的立即数扩展指令为16位或32位,因此该16位指令的长度等效于16位、32和48位。3、32位指令集前缀的立即数扩展指令位32位,因此该32位指令的长度等效于32位或64位。
吾要单片机
5楼-- · 2020-03-10 07:06
本帖最后由 吾要单片机 于 2017-7-10 23:48 编辑

本人已经完成基于这3项专利的CPU设计,根据仿真结果表明,设计达到预期效果,使用verilog HDL编写,五级流水线,同时支持16位指令集(78条指令)和32位指令集(89条指令),与Thumb/microMIPS有所不同,本指令系统规定:一个子程序(即函数)只能使用一套指令集,也就是说,在一个子程序(即函数)中,要么全部使用16位的指令集,或要么全部使用32位指令集!这是因为译码器是根据该指令的地址的第0位的状态来区分该指令是16位指令集还是32位指令集,而只有CALL指令、int指令、硬件中断响应、中断返回指令iret和子程序返回指令ret才可以改变PC.0的状态值。本CPU设定:当PC.0为0时,指令为16位指令集;当PC.0为1时,指令为32位指令集。
吾要单片机
6楼-- · 2020-03-10 12:44
 精彩回答 2  元偷偷看……

一周热门 更多>