一种处理器指令集译码方法、系统、设备和存储介质与流程

未命名 08-22 阅读:173 评论:0


1.本发明涉及指令译码技术领域,特别是涉及一种处理器指令集译码方法、系统、设备和存储介质。


背景技术:

2.指令集是处理器体系架构的重要组成部分,目前包括以x86为代表的cisc(复杂指令集)和以arm为代表的risc(精简指令集)。复杂指令集的目标是尽可能将经常使用的功能用最少乃至一条指令来实现,因此该指令所对应的运行电路通常十分复杂,比较侧重于硬件功能的实现;而精简指令集则相反,其目标是将复杂的运行电路进行分解,用简单的多指令去实现功能,通过软件来减少硬件的复杂度,因此精简指令集对编译器的要求比较高。
3.由于精简指令集的指令数相对较少,因此编译后的指令长度较长,内存需求较大,且由于精简指令集是定长的,为了便于实现多数指令在寄存器之间的操作,必须有足够量的cpu通用寄存器,而大寄存器组增加了寻址的复杂性和寻址的时间,目前精简指令集的常规译码方法是分类译码方法,但是该方法需要占用的芯片面积较大,如果直接对编译器进行优化,则存在较大的难度。因此,现有技术还有待进一步改进和提升。


技术实现要素:

4.为了解决上述技术问题,本发明提供一种处理器指令集译码方法、系统、设备和存储介质,以能够在指令发送到运算单元前通过二次译码来识别指令的有效性,提高指令的执行效率。
5.为了达到上述目的,第一方面,本发明提供一种处理器指令集译码方法,所述方法包括:
6.从存储单元中取出待执行指令,对所述待执行指令进行微译码,得到第一指令信息;
7.根据预设的指令有效表达式和所述第一指令信息,对所述待执行指令的有效性进行判断,所述指令有效表达式通过二次译码算法对处理器指令集中的所有指令进行译码得到;
8.若所述待执行指令为有效指令,则执行所述待执行指令,反之,则丢弃所述待执行指令。
9.进一步地,所述通过二次译码算法对处理器指令集中的所有指令进行译码的步骤包括:
10.获取处理器指令集中的所有指令,并对所有指令进行微译码,得到所有指令的指令信息;
11.使用二次译码算法对所述所有指令的指令信息进行译码,得到指令有效表达式。
12.进一步地,所述根据预设的有效性条件和所述第一指令信息,对所述待执行指令的有效性进行判断的步骤包括:
13.将所述第一指令信息输入所述指令有效表达式,得到所述指令有效表达式的输出结果;
14.若所述输出结果为1,则所述待执行指令为有效指令,若所述输出结果为0,则所述待执行指令为无效指令。
15.进一步地,所述二次译码算法的步骤包括:
16.获取待译码数据,根据所述待译码数据之间的逻辑关系,生成逻辑函数表达式,所述待译码数据为对处理器指令集中的指令进行微译码得到的指令信息;
17.对所述逻辑函数表达式中的最小项进行迭代合并,生成素蕴涵项,并从所述素蕴涵项中选出本质素蕴涵项;
18.根据最小覆盖原则,对所述本质素蕴涵项和/或所述素蕴涵项进行组合,得到化简后的逻辑函数表达式。
19.进一步地,在所述则执行所述待执行指令之后,所述方法还包括:
20.根据预设的类型有效表达式集和所述第一指令信息,对所述待执行指令的类型进行识别,得到所述待执行指令的指令类型,所述类型有效表达式集通过所述二次译码算法对所述处理器指令集中不同类型的指令分别进行译码得到。
21.进一步地,所述通过所述二次译码算法对所述处理器指令集中不同类型的指令分别进行译码的步骤包括:
22.获取处理器数据集中的所有指令,按照指令类型对所有指令进行分类,得到若干个子指令集;
23.分别对各个所述子指令集中的指令进行微译码,得到各个所述子指令集对应的指令信息;
24.使用所述二次译码算法分别对各个所述子指令集对应的指令信息进行译码,得到每种指令类型对应的类型有效表达式,并将所有的所述类型有效表达式组成类型有效表达式集。
25.进一步地,所述根据预设的类型有效表达式集和所述第一指令信息,对所述待执行指令的类型进行识别,得到所述待执行指令的指令类型的步骤包括:
26.将所述第一指令信息分别输入所述类型有效表达式集的每个类型有效表达式中,得到每个所述类型有效表达式的输出结果;
27.按照预设规则将各个所述类型有效表达式的输出结果进行组合,生成指令类型编码;
28.根据所述指令类型编码,得到所述待执行指令的指令类型。
29.第二方面,本发明提供了一种处理器指令集译码系统,所述系统包括:
30.取指译码模块,用于从存储单元中取出待执行指令,对所述待执行指令进行微译码,得到第一指令信息;
31.有效性判断模块,用于根据预设的指令有效表达式和所述第一指令信息,对所述待执行指令的有效性进行判断,所述指令有效表达式通过二次译码算法对处理器指令集中的所有指令进行译码得到;
32.指令执行模块,用于若所述待执行指令为有效指令,则执行所述待执行指令,反之,则丢弃所述待执行指令。
33.进一步地,所述系统还包括:
34.指令有效表达式生成模块,用于获取处理器指令集中的所有指令,并对所有指令进行微译码,得到所有指令的指令信息;使用二次译码算法对所述指令信息进行译码,得到指令有效表达式。
35.进一步地,所述系统还包括:
36.二次译码模块,用于获取待译码数据,根据所述待译码数据之间的逻辑关系,生成逻辑函数表达式,所述待译码数据为对处理器指令集中的指令进行微译码得到的指令信息;
37.对所述逻辑函数表达式中的最小项进行迭代合并,生成素蕴涵项,并从所述素蕴涵项中选出本质素蕴涵项;
38.以及,根据最小覆盖原则,对所述本质素蕴涵项和/或所述素蕴涵项进行组合,得到化简后的逻辑函数表达式。
39.第三方面,本发明实施例还提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述方法的步骤。
40.第四方面,本发明实施例还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述方法的步骤。
41.本发明提供了一种处理器指令集译码方法、系统、计算机设备和存储介质。通过所述方法,可以在指令发送到运算单元时通过有效性表达式来识别指令是否有效,不仅方法简单高效,并且判断结果精准,能够提高系统指令的执行效率,本发明通过二次译码算法对指令信息进行译码生成判断表达式的方法不仅可以用于指令有效性的判断,还可以结合其他指令信息来表示指令的具体信息,从而对处理器的性能进行准确的表征。
附图说明
42.图1是本发明实施例中处理器指令集译码方法的流程示意图;
43.图2是本发明实施例中处理器指令集译码方法的另一种流程示意图;
44.图3是本发明实施例中处理器指令集译码方法的第三种流程示意图;
45.图4是本发明实施例中处理器指令集译码系统的结构示意图;
46.图5是本发明实施例中计算机设备的内部结构图。
具体实施方式
47.为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
48.指令集是cpu中用来计算和控制计算机系统的一套指令的集合,是处理器系统架构的重要组成部分,根据现阶段的主流体系结构,指令集可以分为复杂指令集和精简指令集。指令集关系到cpu的性能发挥,是cpu性能体现的一个重要标志。
49.对于cpu的指令执行,现代的处理器广泛使用的是五级流水线,即取指、译码、执
行、访存和回写。在对指令执行过程进行说明之前,先对指令的编码进行解释,编码是指实现汇编语言到二进制机器码的过程,具体表现为先将指令分成操作码和操作数,操作码代表着指令功能,如加、减、乘、除等,操作数代表着指令功能所对应的输入与输出,在电路中亦表现为输入与输出。
50.取指是指cpu根据当前pc(program counter)即程序计数器的值从内存的对应地址去取指令。译码则是对取出来的指令机器码进行译码,来选择对应的电路来执行所取的指令,比如选择加法电路还是逻辑非电路等等,执行就是这条指令的执行过程。而译码是与指令的编码是相对应的,编码是指实现汇编语言到二进制机器码的过程,具体表现为先将指令分成操作码和操作数,操作码代表着指令功能,如加、减、乘、除等,操作数代表着指令功能所对应的输入与输出,在电路中亦表现为输入与输出。
51.以基于power架构的处理器为例,在power架构中指令编码均为32位,可以支持和表达很多的功能(操作码)和寄存器(操作数)。当指令即将执行到译码阶段时,会在译码前先将指令根据本来的机器码进行微译码,将一堆指令数据先拆分,判断出第一条指令是什么指令,第二条指令是什么指令,可能还会对指令进行分类标志,微译码后的指令会放在指令队列中。而在译码阶段,会根据刚刚的结果读取寄存器堆,得到指令的源操作数。cpu在碰到类似把内存中两个数加起来这样的指令,需要分解成:从内存载入第一个数字;从内存载入第二个数字;两个数字相加这样三个指令。一般来说,把原始的指令称为宏操作,分解后的指令称为微操作。而目前这种对指令分类的译码方法,其缺点在于占用的芯片面积较大,为此,本发明提出一种在微译码的基础上进行二次译码的方法,来解决现有分类译码方法存在的问题。
52.请参阅图1,本发明第一实施例提出的一种处理器指令集译码方法,包括步骤s10~s30:
53.步骤s10,从存储单元中取出待执行指令,对所述待执行指令进行微译码,得到第一指令信息。
54.通过上面描述的cpu对于指令的执行过程可知,在对指令进行执行之前cpu会先进行取指以及微译码的操作,从而得到待执行指令对应的第一指令信息,在常规的指令执行过程中,指令在进行译码之后会进行执行阶段,而本发明提出的译码方法则是在进入运算单元时,会先对该指令的有效性进行识别,判断该指令是否有效,在有效的情况下才会进行正确的运算。
55.步骤s20,根据预设的指令有效表达式和所述第一指令信息,对所述待执行指令的有效性进行判断,所述指令有效表达式通过二次译码算法对处理器指令集中的所有指令进行译码得到。
56.为了对一个系统架构下的所有指令都能够通过统一的方式进行有效性的验证,因此需要对所有指令进行统一处理,而本发明是通过二次译码的方法对指令进行统一处理,具体步骤如下所示:
57.获取处理器指令集中的所有指令,并对所有指令进行微译码,得到所有指令的指令信息;
58.使用二次译码算法对所述所有指令的指令信息进行译码,得到指令有效表达式。
59.请参阅图2,仍以power架构为例,先获取power架构的所有指令,并对所有指令进
行统一的微译码操作,这一步是现有cpu所具有的功能,因此不再进行过多说明。在对所有指令的机器码进行特定处理之后,就得到了处理后的所有指令的指令信息,为了后续能够对每条指令的有效性进行识别,需要对所有指令的指令信息进行统一的二次译码,来生成所有指令都适用的指令有效表达式,从而实现对所有指令的有效性的判断,通过一个指令有效表达式就能实现对所有指令的有效性的判断,从而提高了有效性判断的效率。
60.由于指令较多,对于处理后得到的指令信息可能有数十比特的位宽,因此二次译码所处理的数据位宽比较大。常规使用的卡诺图化简的方法通常仅用于4比特左右的数据位宽,对于更大位宽的数据是无法应对的,为此,本发明引入了奎因-麦克拉斯基算法来对大位宽指令信息的二次译码提供算法支持,虽然奎因-麦克拉斯基算法在功能上等同于卡诺图,也是一种最小化布尔函数的方法,但是在现有技术中并没有对指令进行二次译码的做法,也没有将奎因-麦克拉斯基算法应用于指令信息的化简的先例。而本发明则创新的使用了奎因-麦克拉斯基算法作为二次译码算法对指令信息进行二次译码,以实现对所有指令的指令信息进行快速有效的处理,其具体步骤如下所示:
61.获取待译码数据,根据所述待译码数据之间的逻辑关系,生成逻辑函数表达式,所述待译码数据为对处理器指令集中的指令进行微译码得到的指令信息;
62.对所述逻辑函数表达式中的最小项进行迭代合并,生成素蕴涵项,并从所述素蕴涵项中选出本质素蕴涵项;
63.根据最小覆盖原则,对所述本质素蕴涵项和/或所述素蕴涵项进行组合,得到化简后的逻辑函数表达式。
64.二次译码算法的核心是通过找到函数所有的素蕴涵项并使用这些素蕴涵项来找到该函数的本质素蕴涵项,从而得到最终的化简结果。其步骤可以分为两步:
65.(1)找到素蕴涵项。将最小项和其他最小项组合在一起,若有两个项只有一个二进制值不同,则这个位的数字可以用横线表示,来表明该数字可忽略。不断重复这个过程,当不能再找到某两个项只有一个二进制值不同时,剩下的项被称为素蕴涵项。
66.(2)找到本质素蕴涵项。通过寻找最少的素蕴涵项来表示(1)中所有的项,得到的项被称为本质素蕴涵项。所有的本质素蕴涵项组合在一起,便得到了最终的化简结果。
67.以4比特位宽的数据为例,下面通过具体的例子对二次译码算法的化简过程进行说明,通过指令信息之间的相关性,假设得到了如下的四变量的逻辑函数表达式:
68.f(a,b,c,d)=∑m(0,1,5,6,8,9,10,14)
69.本实施例中的逻辑函数表达式采用最小项之和的标准形式来表示,因此上述的四变量逻辑函数表达式写为所有使函数值为1的四变量的最小项之和的形式,即m(0)、m(1)、m(5)、m(6)、m(8)、m(9)、m(10)、以及m(14)均为最小项,而a、b、c和d则为输入的逻辑变量。
70.首先,按照最小项中“1”的个数来分组,得到不同的group,如下表1所示:
71.[0072][0073]
表1最小项分组表
[0074]
接着,对表1中可以合并的两个最小项进行合并得到大小为2的蕴涵项(implicant)。可以合并是指若两个不同分组中的最小项的二进制表示中只有一位不同,则可以将这两个最小项进行合并,在合并过程中,对于两个最小项的不同的位,可以用一个横线来代替该位,来表示该位可忽略。结果如下表2所示:
[0075][0076]
表2最小项合并表
[0077]
然后,按照同样的合并原则,对表2中的大小为2的蕴涵项继续合并,得到大小为4的蕴涵项,同时对不能再继续合并的蕴涵项标记上“*”,称之为素蕴涵项(prime implicant),如下表3所示:
[0078][0079][0080]
表3蕴涵项合并表
[0081]
由于m(0,1)和m(8,9)的合并结果与m(0,8)和m(1,9)的合并结果一样均为m(0,1,8,9),因此,在对大小为2的蕴涵项进行合并后得到的大小为4的蕴涵项只有一个,而对于那些无法再合并的蕴涵项,即为素蕴涵项。
[0082]
通过上述步骤,得到了所有的素蕴涵项,下一步就可以构造本质素蕴涵项表,如下表4所示:
[0083][0084]
表4本质素蕴涵项表
[0085]
在上表中对于本质素蕴涵项(essential prime implicant)加了“*”,这表示该项无法用其他蕴涵项来组合,而m(8,10)可以被m(0,1,8,9)和m(10,14)所覆盖,m(10,14)则可以被m(8,10)和m(6,14)所覆盖,因此m(8,10)和m(10,14)都不是本质素蕴涵项,而m(8,10)和m(10,14)又不能用本质素蕴涵项m(0,1,8,9)、m(1,5)、m(6,14)表示,因此在实际的化简过程中,m(8,10)和m(10,14)可以任意选择一种用到最终的表达式,比如说选择m(8,10),则最终化简的逻辑表达式为:
[0086][0087]
如果不存在某一项或某几项不能用本质素蕴涵项组合来表示,则最终的化简结果就是所有的本质素蕴涵项的逻辑或。
[0088]
通过二次译码算法对大量携带多比特数据的指令信息进行统一的处理,就可以得到指令有效表达式,通过指令有效表达式就可以正确的识别指令,具体步骤如下所示:
[0089]
将所述第一指令信息输入所述指令有效表达式,得到所述指令有效表达式的输出结果;
[0090]
若所述输出结果为1,则所述待执行指令为有效指令,若所述输出结果为0,则所述待执行指令为无效指令。
[0091]
对于进入运算单元的不同的指令信息,如果能使得指令有效表达式为1,则认为该指令有效,若指令有效表达式的输出值为0,则认为该指令无效,也就是说,通过二次译码算法得到化简后的逻辑函数表达式,并将该化简后的逻辑函数表达式作为指令有效表达式就可以实现通过一个表达式对所有指令代码的有效性判断,本发明提供的这种判断方法不仅简单高效,并且对于判断结果也具有极高的准确度。
[0092]
步骤s30,若所述待执行指令为有效指令,则执行所述待执行指令,反之,则丢弃所述待执行指令。
[0093]
对于被识别为有效的指令可以进行下一步的指令运算,被判定为无效的指令,则会被丢弃。通过本发明提供的这种二次译码算法,可以使用统一的指令有效表达式对待执行指令的有效性进行简单且精准的识别,由于通过有效性的识别能够避免无效指令运行时的系统占用,因此通过本发明提供的译码方法不仅能够提高系统执行指令的效率,同时还能够提高系统运行的安全性和稳定性。
[0094]
进一步地,本发明提供的这种二次译码算法还可以与其他指令信息相结合,用来表示该指令的更具体的信息,比如该指令执行后,可以获取该已执行指令的运算类型以及数据类型等。其步骤为:
[0095]
根据预设的类型有效表达式集和所述第一指令信息,对所述待执行指令的类型进行识别,得到所述待执行指令的指令类型,所述类型有效表达式集通过所述二次译码算法对所述处理器指令集中不同类型的指令分别进行译码得到。
[0096]
本发明还可以通过将二次译码与其他指令相结合对指令的具体信息进行展示,能够使用户对已经执行的指令进行更详细的理解,并通过已执行指令的具体信息来进一步地判断处理器的运行状态。
[0097]
请参阅图3,基于和上述生成指令有效性表达式相同的原理,对于指令的运算类型和数据类型同样可以通过类型表达式的方式进行识别,类型表达式也同样可以基于二次译码算法来生成,其生成类型表达式的具体步骤为:
[0098]
获取处理器数据集中的所有指令,按照指令类型对所有指令进行分类,得到若干个子指令集;
[0099]
分别对各个所述子指令集中的指令进行微译码,得到各个所述子指令集对应的指令信息;
[0100]
使用所述二次译码算法分别对各个所述子指令集对应的指令信息进行译码,得到每种指令类型对应的类型有效表达式,并将所有的所述类型有效表达式组成类型有效表达式集。
[0101]
对于处理器指令集中的指令按照运算类型的复杂程度可以分为简单运算和复杂运算,比如数据转换、取位、以及四则运算中的加法、减法和乘法、及其混合运算都属于简单运算,而除法和方根运算由于涉及到迭代等处理,可以归为复杂运算;对于指令的数据类型则可以划分为浮点运算、定点运算、向量运算和标量运算,而在power架构下,还可以将数据分为浮点二进制运算和浮点十进制运算等。
[0102]
按照上述的分类规则,或者其他任何分类规则,可以对处理器指令集中的所有指令进行类型划分,即将所有指令划分为若干个类型不同的指令集。以运算类型为例,假定指令按照运算类型分为转换取位、单独的加减乘、混合的加减乘、以及除法方根四种类型,处理器指令集中的所有指令就可以按照上述的分类规则划分为四个不同运算类型的子指令集。
[0103]
下一步是分别对子指令集进行微译码,得到每个子指令集对应的指令信息,然后按照上述的二次译码算法分别对各个子指令集对应的指令信息进行译码,得到每种运算类型对应的类型有效表达式,假定这四种运算类型对应的类型有效表达式分别为第一类型有效表达式、第二类型有效表达式、第三类型有效表达式和第四类型有效表达式,这四个表达式就可以组成类型有效表达式集,通过类型有效表达式集就可以实现对指令的运算类型的识别,从而准确的了解已执行的指令的指令类型,比如运算类型和数据类型等,本发明提供这种有效表达式的生成方法不仅简单高效,并且识别的准确率高,需要说明的是,对于指令类型的分类可以根据实际情况按照所需要了解的指令属性对所有指令进行类型划分,在此将不再一一赘述。
[0104]
由于在这个阶段所使用的并不是唯一的有效表达式,因此不能简单用表达式的输
出结果为0和1来识别运算类型,为此本发明还提供了指令类型编码方法结合类型有效表达式集对指令类型进行识别,类型识别的具体步骤如下所示:
[0105]
将所述第一指令信息分别输入所述类型有效表达式集的每个类型有效表达式中,得到每个所述类型有效表达式的输出结果;
[0106]
按照预设规则将各个所述类型有效表达式的输出结果进行组合,生成指令类型编码;
[0107]
根据所述指令类型编码,得到所述待执行指令的指令类型。
[0108]
在对指令有效性进行识别的步骤中,我们已经通过cpu的微译码来获得了该指令的指令信息,在该指令被识别为有效进行指令执行的情况下,可以将该指令的指令信息输入到通过上述步骤生成的类型有效表达式集中,即输入类型有效表达式集的每一个类型有效表达式中,从而得到每个类型有效表达式的输出结果。
[0109]
对于输出结果可以有多种编码方式,比如将输出结果按照二进制的位数进行编码,假设转换取位、单独的加减乘、混合的加减乘、以及除法方根四种类型分别对应二进制的最低位至最高位,即如果指令被识别为混合的加减乘运算,则该类型对应的类型有效表达式的输出结果为1,其他表达式的输出结果均为零,此时最终输出的指令类型编码为0100,转换为十进制则为4,在预设规则中4就表示为混合运算指令;如果输出的指令类型编码为0001,即十进制的1,就可以知道该指令执行的是转换取位运算,而二进制的0010即十进制的2表示该指令执行的是单独的加减乘运算,二进制的1000即十进制的8则表示该指令执行了较为复杂的除法方根运算。此外,本发明还提供了另一种指令类型编码方法,即以不同的数值表示不同的指令类型,假定分别以0、1、2和3代表转换取位、单独的加减乘、混合的加减乘、以及除法方根四种类型,然后根据输出结果为1的表达式的类型输出其对应的数值。比如当除法方根运算对应的第四类型有效表达式的输出结果为1时,输出的指令类型编码即为3,即代表该指令执行了除法方根运算。当然,还可以有其他的编码方式来表示对应的类型,本实施例中提供的编码规则只是优选的规则,在实际使用中可以按照情况进行灵活设置,在此并不做过多限定。
[0110]
对于数据类型的识别同样可以根据上述的步骤对所有指令进行分类、微译码以及二次译码生成对应的类型有效表达式,从而识别指令的数据类型,并且对于输出的指令类型编码可以与上述的运算类型进行共同编码,也可以使用单独的编码。比如可以按照二进制位数与运算类型共同编码,假设二进制从低位到高位的第五位表示定点运算,第六位表示浮点运算,如果输出的指令类型编码为00011000,那么根据为1的位数,可以知道该指令执行了定点数据的除法方根运算;如果按照单独编码的话,可以使用4表示定点运算、5表示浮点运算等。通过输出的指令类型编码,可以很清楚的获知该有效指令执行的具体内容,比如对什么类型的数据执行了什么样的指令,通过指令类型编码能够快速有效的展示已执行指令的具体信息,不仅编码方法简单有效,并且占用的资源少,不会影响到系统的运行效率。随着计算机和集成电路的快速发展,对微处理器浮点算法性能的要求越来越高,浮点运算单元(fpu)成为衡量cpu性能的重要指标。而除法和平方根算法是浮点运算单元(fpu)中比较复杂的算法,也是循环次数较多的算法,因此其是影响fpu性能的一个重要方面。基于此情况下,本发明还提供了一种对于处理器性能进行判定和表征的方法,即通过上述的指令类型识别来精确的获取该指令的具体信息,并根据指令的具体信息进一步地的表征cpu
的运行性能。
[0111]
假设本发明的指令类型编码是在指令执行完成后,与执行的输出结果一起输出,即该指令执行完成后除了输出result之外,还对应输出了其指令类型编码,从指令类型编码中可以获知该指令是否执行了浮点数据的除法方根运算,对于不同的处理器cpu,可以使其运行相同的一系列指令,根据输出的指令类型编码统计在单位时间内浮点数据的除法方根运算的执行次数,并根据在单位时间内浮点数据的除法方根运算的执行次数对处理器的性能进行判定,很明显相比执行次数少的处理器,执行次数多的处理器的性能更优。
[0112]
进一步地,我们还可以通过设计单位时间内的不同执行次数来对不同处理器的性能进行更细致的等级划分,对处理器的性能进行详细和准确的表征,从而为后续在提升处理器的性能时提供一定的数据支撑。需要说明的是,对于指令具有多个译码信息的情况下,依然可以使用本发明提供的译码方法,比如微译码后的指令信息有两个,一个用于识别指令的类型,另一个用于识别具体的指令,仍然可以使用本发明提供的译码方法对其某一个指令信息或者全部指令信息进行二次译码,从而精确的识别指令,并且本发明提供的译码方法也不局限于power架构,对于其他处理器架构中的微译码信息,都可以使用本发明提供的译码方法对指令信息进行二次译码。
[0113]
进一步地,本发明还提供了另一种优选的实施例,在该实施例中,在得到待执行指令的指令信息后,对于指令有效性的判断和指令分类的识别会同时进行,即在实际的逻辑设计中,可以根据设计需要,将指令有效和指令类型结合起来,只有指令属于某种类型且同时满足指令有效表达式的情况下,该指令才真正有效,该指令才会被执行。比如已知某待执行指令为除法运算,且在设计时需要满足只有除法运算的指令才会被执行的要求,那么此时就可以将指令有效的判断和指令分类的识别结合起来一起对该指令进行判断,只有在该指令满足指令有效表达式为1,且与除法运算对应的类型编码一致的情况下,该指令才算真正有效,才会被执行,这种方式能够满足指令执行的特定需要,能够进一步保证指令执行的准确性。需要说明的是,在不脱离本发明关于指令有效判断和指令分类识别的技术原理的情况下,本发明提供的这种二次译码方法可以根据实际情况应用于指令执行过程中的各个阶段,相关方法也都应属于本技术的保护范围内。
[0114]
本实施例提供的一种处理器指令集译码方法,在现有的处理器微译码的基础上,通过对指令信息进行统一的二次译码,可以在指令发送到运算单元执行前先对指令的有效性进行识别,并且还可以和其他的指令信息搭配使用来表示指令的具体信息,本发明提供的这种译码方法不仅简单高效,并且识别结果的准确度高,能够提高处理器的运行效率,以及提高系统的安全性和稳定性,同时还可以对处理器的性能进行表征。
[0115]
请参阅图4,基于同一发明构思,本发明第二实施例提出的一种处理器指令集译码系统,包括:
[0116]
取指译码模块10,用于从存储单元中取出待执行指令,对所述待执行指令进行微译码,得到第一指令信息;
[0117]
有效性判断模块20,用于根据预设的指令有效表达式和所述第一指令信息,对所述待执行指令的有效性进行判断,所述指令有效表达式通过二次译码算法对处理器指令集中的所有指令进行译码得到;
[0118]
指令执行模块30,用于若所述待执行指令为有效指令,则执行所述待执行指令,反
之,则丢弃所述待执行指令。
[0119]
通过本发明提供的这种二次译码算法,可以使用统一的指令有效表达式对待执行指令的有效性进行简单且精准的识别,不仅提高了系统执行指令的效率,同时还提高了系统运行的安全性和稳定性。
[0120]
进一步地,在一个优选的实施例中,该系统还包括:
[0121]
指令有效表达式生成模块,用于获取处理器指令集中的所有指令,并对所有指令进行微译码,得到所有指令的指令信息;使用二次译码算法对所述指令信息进行译码,得到指令有效表达式。
[0122]
为了实现对所有指令进行统一的判断,因此需要对所有指令的指令信息进行统一的译码,来生成所有指令都适用的指令有效表达式,通过一个指令有效表达式就能实现对所有指令的有效性的判断,从而提高了有效性判断的效率。
[0123]
进一步地,在一个优选的实施例中,该系统还包括:
[0124]
二次译码模块,用于获取待译码数据,根据所述待译码数据之间的逻辑关系,生成逻辑函数表达式,所述待译码数据为对处理器指令集中的指令进行微译码得到的指令信息;
[0125]
对所述逻辑函数表达式中的最小项进行迭代合并,生成素蕴涵项,并从所述素蕴涵项中选出本质素蕴涵项;
[0126]
以及,根据最小覆盖原则,对所述本质素蕴涵项和/或所述素蕴涵项进行组合,得到化简后的逻辑函数表达式。
[0127]
本发明创新的使用了奎因-麦克拉斯基算法作为二次译码算法对指令信息进行二次译码,能够对位宽比较大的数据进行快速有效的处理。,从而得到化简后的逻辑函数表达式,通过将化简后的逻辑函数表达式作为指令有效表达式就可以实现对所有指令的有效性的判断,不仅方法简单,并且具有极高的判断效率和判断准确性。
[0128]
进一步地,在一个优选的实施例中,该系统还包括:
[0129]
指令类型识别模块,用于根据预设的类型有效表达式集和所述第一指令信息,对所述待执行指令的类型进行识别,得到所述待执行指令的指令类型,所述类型有效表达式集通过所述二次译码算法对所述处理器指令集中不同类型的指令分别进行译码得到。
[0130]
本发明提供的这种二次译码算法还可以与其他指令信息相结合,用来表示该指令的更具体的信息,能够使用户对已经执行的指令进行更详细的理解,并通过已执行指令的具体信息来进一步地判断处理器的运行状态。
[0131]
进一步地,在一个优选的实施例中,该系统还包括:
[0132]
指令分类模块,用于获取处理器数据集中的所有指令,按照指令类型对所有指令进行分类,得到若干个子指令集;
[0133]
指令集微译码模块,用于分别对各个所述子指令集中的指令进行微译码,得到各个所述子指令集对应的指令信息;
[0134]
类型有效表达式生成模块,用于使用所述二次译码算法分别对各个所述子指令集对应的指令信息进行译码,得到每种指令类型对应的类型有效表达式,并将所有的所述类型有效表达式组成类型有效表达式集。
[0135]
通过类型有效表达式集就可以实现对指令的运算类型的识别,从而准确的了解已
执行的指令的指令类型,比如运算类型和数据类型等,本发明提供这种有效表达式的生成方法不仅简单高效,并且识别的准确率高。
[0136]
进一步地,在一个优选的实施例中,该系统还包括:
[0137]
将所述第一指令信息分别输入所述类型有效表达式集的每个类型有效表达式中,得到每个所述类型有效表达式的输出结果;
[0138]
按照预设规则将各个所述类型有效表达式的输出结果进行组合,生成指令类型编码;
[0139]
根据所述指令类型编码,得到所述待执行指令的指令类型。
[0140]
本发明通过指令类型编码的方式,能够快速有效的展示已执行指令的具体信息,不仅编码方法简单有效,并且占用的资源少,不会影响到系统的运行效率。
[0141]
本发明实施例提出的一种处理器指令集译码系统的技术特征和技术效果与本发明实施例提出的方法相同,在此不予赘述。上述一种处理器指令集译码系统中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
[0142]
请参阅图5,一个实施例中计算机设备的内部结构图,该计算机设备具体可以是终端或服务器。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口、显示器和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种处理器指令集译码方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
[0143]
本领域普通技术人员可以理解,图5中示出的结构,仅仅是与本技术方案相关的部分结构的框图,并不构成对本技术方案所应用于其上的计算机设备的限定,具体的计算设备可以包括比途中所示更多或更少的部件,或者组合某些部件,或者具有相同的部件布置。
[0144]
此外,本发明实施例还提出一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述方法的步骤。
[0145]
此外,本发明实施例还提出一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述方法的步骤。
[0146]
综上,本发明实施例提出的一种处理器指令集译码方法、系统、设备和存储介质,所述方法通过从存储单元中取出待执行指令,对所述待执行指令进行微译码,得到第一指令信息;根据预设的指令有效表达式和所述第一指令信息,对所述待执行指令的有效性进行判断,所述指令有效表达式通过二次译码算法对处理器指令集中的所有指令进行译码得到;若所述待执行指令为有效指令,则执行所述待执行指令,反之,则丢弃所述待执行指令。本发明可以在指令发送到运算单元执行前先对指令的有效性进行识别,并且还可以和其他的指令信息搭配使用来表示指令的具体信息,本发明提供的这种译码方法简单高效且具有较高的识别准确度,不仅能够提高处理器的运行效率,并且能够对处理器的性能进行表征。
[0147]
本说明书中的各个实施例均采用递进的方式描述,各个实施例直接相同或相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。需要说明的是,上述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
[0148]
以上所述实施例仅表达了本技术的几种优选实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和替换,这些改进和替换也应视为本技术的保护范围。因此,本技术专利的保护范围应以所述权利要求的保护范围为准。

技术特征:
1.一种处理器指令集译码方法,其特征在于,包括:从存储单元中取出待执行指令,对所述待执行指令进行微译码,得到第一指令信息;根据预设的指令有效表达式和所述第一指令信息,对所述待执行指令的有效性进行判断,所述指令有效表达式通过二次译码算法对处理器指令集中的所有指令进行译码得到;若所述待执行指令为有效指令,则执行所述待执行指令,反之,则丢弃所述待执行指令。2.根据权利要求1所述的处理器指令集译码方法,其特征在于,所述通过二次译码算法对处理器指令集中的所有指令进行译码的步骤包括:获取处理器指令集中的所有指令,并对所有指令进行微译码,得到所有指令的指令信息;使用二次译码算法对所述所有指令的指令信息进行译码,得到指令有效表达式。3.根据权利要求2所述的处理器指令集译码方法,其特征在于,所述根据预设的有效性条件和所述第一指令信息,对所述待执行指令的有效性进行判断的步骤包括:将所述第一指令信息输入所述指令有效表达式,得到所述指令有效表达式的输出结果;若所述输出结果为1,则所述待执行指令为有效指令,若所述输出结果为0,则所述待执行指令为无效指令。4.根据权利要求2所述的处理器指令集译码方法,其特征在于,所述二次译码算法的步骤包括:获取待译码数据,根据所述待译码数据之间的逻辑关系,生成逻辑函数表达式,所述待译码数据为对处理器指令集中的指令进行微译码得到的指令信息;对所述逻辑函数表达式中的最小项进行迭代合并,生成素蕴涵项,并从所述素蕴涵项中选出本质素蕴涵项;根据最小覆盖原则,对所述本质素蕴涵项和/或所述素蕴涵项进行组合,得到化简后的逻辑函数表达式。5.根据权利要求2所述的处理器指令集译码方法,其特征在于,在所述则执行所述待执行指令之后,所述方法还包括:根据预设的类型有效表达式集和所述第一指令信息,对所述待执行指令的类型进行识别,得到所述待执行指令的指令类型,所述类型有效表达式集通过所述二次译码算法对所述处理器指令集中不同类型的指令分别进行译码得到。6.根据权利要求5所述的处理器指令集译码方法,其特征在于,所述通过所述二次译码算法对所述处理器指令集中不同类型的指令分别进行译码的步骤包括:获取处理器数据集中的所有指令,按照指令类型对所有指令进行分类,得到若干个子指令集;分别对各个所述子指令集中的指令进行微译码,得到各个所述子指令集对应的指令信息;使用所述二次译码算法分别对各个所述子指令集对应的指令信息进行译码,得到每种指令类型对应的类型有效表达式,并将所有的所述类型有效表达式组成类型有效表达式集。
7.根据权利要求6所述的处理器指令集译码方法,其特征在于,所述根据预设的类型有效表达式集和所述第一指令信息,对所述待执行指令的类型进行识别,得到所述待执行指令的指令类型的步骤包括:将所述第一指令信息分别输入所述类型有效表达式集的每个类型有效表达式中,得到每个所述类型有效表达式的输出结果;按照预设规则将各个所述类型有效表达式的输出结果进行组合,生成指令类型编码;根据所述指令类型编码,得到所述待执行指令的指令类型。8.一种处理器指令集译码系统,其特征在于,所述系统包括:取指译码模块,用于从存储单元中取出待执行指令,对所述待执行指令进行微译码,得到第一指令信息;有效性判断模块,用于根据预设的指令有效表达式和所述第一指令信息,对所述待执行指令的有效性进行判断,所述指令有效表达式通过二次译码算法对处理器指令集中的所有指令进行译码得到;指令执行模块,用于若所述待执行指令为有效指令,则执行所述待执行指令,反之,则丢弃所述待执行指令。9.根据权利要求8所述的处理器指令集译码系统,其特征在于,所述系统还包括:指令有效表达式生成模块,用于获取处理器指令集中的所有指令,并对所有指令进行微译码,得到所有指令的指令信息;使用二次译码算法对所述指令信息进行译码,得到指令有效表达式。10.根据权利要求9所述的处理器指令集译码系统,其特征在于,所述系统还包括:二次译码模块,用于获取待译码数据,根据所述待译码数据之间的逻辑关系,生成逻辑函数表达式,所述待译码数据为对处理器指令集中的指令进行微译码得到的指令信息;对所述逻辑函数表达式中的最小项进行迭代合并,生成素蕴涵项,并从所述素蕴涵项中选出本质素蕴涵项;以及,根据最小覆盖原则,对所述本质素蕴涵项和/或所述素蕴涵项进行组合,得到化简后的逻辑函数表达式。11.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7中任一项所述方法的步骤。12.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的方法的步骤。

技术总结
本发明涉及指令译码技术领域,公开了一种处理器指令集译码方法、系统、设备和存储介质,包括:从存储单元中取出待执行指令,对所述待执行指令进行微译码,得到第一指令信息;根据预设的指令有效表达式和所述第一指令信息,对所述待执行指令的有效性进行判断,所述指令有效表达式通过二次译码算法对处理器指令集中的所有指令进行译码得到;若所述待执行指令为有效指令,则执行所述待执行指令,反之,则丢弃所述待执行指令。本发明能够对指令的有效性进行识别,并且还可以和其他的指令信息搭配使用来表示指令的具体信息,本发明提供的译码方法简单高效且具有较高的识别准确度,不仅能够提高处理器的运行效率,并且能够对处理器的性能进行表征。进行表征。进行表征。


技术研发人员:咸有龙 冯春阳 马思杰
受保护的技术使用者:合芯科技(苏州)有限公司
技术研发日:2023.04.27
技术公布日:2023/8/21
版权声明

本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

航空之家 https://www.aerohome.com.cn/

飞机超市 https://mall.aerohome.com.cn/

航空资讯 https://news.aerohome.com.cn/

分享:

扫一扫在手机阅读、分享本文

相关推荐