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

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-08 19:36
本帖最后由 吾要单片机 于 2017-5-17 21:08 编辑

第二项专利:专利号:201512153746.1,专利名:《一种将计算机指令中立即数扩展的方法和装置》
    技术背景:RISC指令可以携带的立即数一般都不大,比如ARM的数据运算指令携带的立即数最大是12位,而MIPS指令系统的数据运算指令携带的立即数最大是16位,要这些RISC指令系统携带32位的立即数是不可能的,因为其指令长度只有32位,所以在RISC指令系统中要取得32位立即数就费不少周折了,目前常用的方法有两种:第一种是分段读取法,具体是先读取高16位的立即数,再读取低16位的立即数,从而组成32位立即数,为了支持这种分段读取法,几乎所有的RISC指令系统都是专门制定了相应的指令,比如ARM的MOVW和MOVT指令、MIPS的LUI和ADDIU指令;第二种是访存法,具体是把32位立即数当做常数放在离当前PC值不太远的地方,然后使用一条与PC相关的访存指令读取它。但是不管使用哪种读取方法,要获取一个32位的立即数都是费时,怎么都要花2个周期才能完成。
比如要处理表达式:R2=R3&0x87654321,当前ARM的做法是:
     使用分段读取法的是:
         MOVT   R1,#8765H;(取得高16位常数,要花1个周期时间)
         MOVW   R1,#4321H;(取得低16位常数,要花1个周期时间)
         AND    R2,R3,R1;
     使用访存法的是:
LDR   R1, [PC,  #offest];(这条指令要花2个周期时间)
         AND   R2,R3,R1;
由此可见,ARM处理R2=R3&0x87654321共需要花3个周期时间,其中获取32位常数0x87654321需要花2个周期时间。
发明内容:为了解决现有的RISC指令系统获取大立即数执行效率低下的不足,又要维持RISC指令系统精简、统一长度的优点,本人提出了一种将计算机指令中立即数扩展的专利方法,其方法是:在RISC指令系统中至少新增一条立即数扩展指令,该指令包含有操作码和立即数域,具体应用是将一个大的立即数分成两段,一段是高位立即数,另一段是低位立即数,将高位立即数经过有符号或无符号扩展后装入该立即数扩展指令的立即数域,而将低位立即数装满执行指令的立即数域,并且规定该立即数扩展指令要前缀于携带该低位立即数的执行指令,中间不能插入别的指令。在取指令时,取指令电路将该立即数扩展指令和紧随其后的执行指令同步送入它们各自的译码器进行译码,立即数扩展指令译码器输出高位立即数经过逻辑左移位后再和执行指令译码器输出的低位立即数进行合并,合并结果输出的立即数再经过有符号数或无符号数扩展后还原为原来的大的立即数。该立即数扩展指令是一条非执行指令,它到译码这一阶段就终结了,它不需要经历执行、回写的阶段。具体内容见本人的专利资料详细说明(专利号:201512153746.1,专利名:一种将计算机指令中立即数扩展的方法和装置)。
通过使用本发明的方法,同样要处理上述的表达式:R2=R3&0x87654321,其做法是:
        HIMM   #8765h;         (这是新增的立即数扩展指令,其携带高位立即数#8765h)
        AND    R2, R3,  #4321h;(执行指令携带低16位立即数#4321h)
如果取指令电路工作于单倍速取指令模式(即程序存贮器每次只能在其接口总线上输出1条指令),则处理R2=R3&0x87654321共需要花2个周期时间,其中立即数扩展指令(HIMM  #8765h)需要延迟 1条指令的时间,以等待紧随其后的执行指令(AND   R2, R3,  #4321h)的到来,才能同步译码。
如果取指令电路工作于双倍速取指令模式(即程序存贮器每次都能在其接口总线上输出2条指令),则处理R2=R3&0x87654321仅需要花1个周期时间,此时立即数扩展指令(HIMM    #8765h)不需要任何延迟就可以和紧随其后的执行指令(AND   R2, R3,  #4321h)同步译码,所以它不花任何时间!
对比ARM和本发明的做法可以看出,使用本发明的方法可以极大改善RISC指令集计算机执行程序的效率,既节省时间又节省空间。
吾要单片机
2楼-- · 2020-03-09 01:05
 精彩回答 2  元偷偷看……
吾要单片机
3楼-- · 2020-03-09 04:48
本帖最后由 吾要单片机 于 2017-7-11 19:14 编辑

现在可以介绍指令集和CPU了,先介绍CPU的寄存器组:
寄存器组.png


hp34401a
4楼-- · 2020-03-09 10:46
顶一下吧,不过我没有看懂...
吾要单片机
5楼-- · 2020-03-09 15:51
本帖最后由 吾要单片机 于 2017-12-10 16:51 编辑

寄存器介绍:寄存器的宽度是32位,所以本CPU是32位CPU。
R0为零寄存器,读出总是0。
当CPU处于16位指令模式时,其通用寄存器为R0—R15,R16(HR0)--R31(HR15)用特别的指令访问。
当CPU处于32位指令模式时,其通用寄存器为R0—R31。
其中:R1-----UMAC指令的目的寄存器。
R26---LO寄存器,用于存贮乘法或乘加的64位结果的低32位,或者用于存贮32位除法运算的商。
R27---HI寄存器,用于存贮乘法或乘加的64位结果的高32位,或者用于存贮32位除法运算的余数。
R29---INT,即中断号等信息。
R30---SP寄存器,即推栈指针。当CPU处于用户态时是PSP;而当CPU处于管理态时是PSP或MSP,由PSR.P选择。
R31---LR寄存器,即子程序返回链接寄存器。
另外,CPU设置2个系统控制寄存器,它们定义如下:
PC寄存器,即程序计数器。
PSR寄存器,即程序状态寄存器,里面有程序状态标志位以及系统状态和控制信息。






吾要单片机
6楼-- · 2020-03-09 19:15
本帖最后由 吾要单片机 于 2017-12-10 16:55 编辑

16位指令集通用寄存器是R0---R15(比其他CPU的16位指令系统大一倍),R16--R31用特别的指令访问。
当中断响应时,系统进入特权模式,自动选择MSP作为SP,并且自动依次保存LR、R29、PSR、R1、R2、R3到堆栈中,同时还将中断信息保存到R29。

一周热门 更多>