CN102446112B - 指令处理装置和处理器、指令翻译装置和方法 - Google Patents
指令处理装置和处理器、指令翻译装置和方法 Download PDFInfo
- Publication number
- CN102446112B CN102446112B CN201010508848.7A CN201010508848A CN102446112B CN 102446112 B CN102446112 B CN 102446112B CN 201010508848 A CN201010508848 A CN 201010508848A CN 102446112 B CN102446112 B CN 102446112B
- Authority
- CN
- China
- Prior art keywords
- instruction
- operand
- logical expression
- target
- value
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Executing Machine-Instructions (AREA)
Abstract
一种指令处理装置和处理器、指令翻译装置和方法,所述指令处理装置用于处理目标指令,所述目标指令由二进制码表示,用于求逻辑表达式的运算结果,所述目标指令包括所述逻辑表达式的真值表中逻辑表达式的值和操作数,以及目标操作数,所述逻辑表达式的操作数至少为二个;所述指令处理装置包括:解析单元,用于解析所述目标指令,获取所述真值表中逻辑表达式的值和操作数以及目标操作数;多路选择单元,根据所述真值表中逻辑表达式的值和操作数输出逻辑运算的结果至所述目标操作数。本发明的指令处理装置和处理器、指令翻译装置和方法,加快了处理器处理逻辑运算的效率,提高了处理器的应用性能,有效的降低了处理器的功耗。
Description
技术领域
本发明涉及计算机领域,特别涉及指令处理装置和处理器、指令翻译装置和方法。
背景技术
编译过程是将源代码(通常为高阶语言)翻译为能直接被计算机或虚拟机执行的目标代码(通常为低阶语言或机器语言)的过程。且经过翻译后的目标代码的功能与源代码的功能相同,最后计算机通过处理器执行目标代码来得到源代码所要实现的功能。
一般来讲,编译器就是将高级语言翻译成机器语言的程序。其工作流程为:源代码(source code)→预处理器(preprocessor)→编译器(compiler)→汇编程序(assembler)→目标代码(object code)→链接器(Linker)→可执行程序(executables)。而编译器又包括编译器前端(frontend)、编译器分析(compileranalysis)和编译器后端(backend)。
编译器前端主要负责解析输入的源代码,由语法分析器和语意分析器协同工作。语法分析器负责把源代码中的“单词”找出来,语意分析器把这些分散的单词按预先定义好的语法组装成有意义的表达式,语句,函数等等。编译器前端同时还负责语义的检查,例如检测参与运算的变量是否是同一类型的,简单的错误处理。编译器分析主要是对由前端生成并传递过来的中间代码进行分析,而编译器后端主要是负责分析,优化中间代码并生成机器代码。
随着计算机编程技术的迅猛发展,越来越多的逻辑运算被应用在源程序中。现有技术在对含有逻辑运算的指令进行编译时,往往会将其翻译成多条汇编指令,当逻辑运算比较复杂,涉及的操作数比较多时,如果仍将其翻译成多条汇编指令,计算机的处理器要执行多条汇编指令才能完成多操作数的逻辑运算,因而处理逻辑运算的效率会明显的减低,同时处理器的功耗也会增加。
申请号为200710047697.8的中国专利申请,公开了一种利用中间指令集的二进制翻译方法,其设计了一套中间指令集来作为将一套物理指令翻译成另一套物理指令的中间层,隔开了源机器及目标机器。但对于提高处理器处理逻辑运算的效率方面并未涉及。
发明内容
本发明解决的问题是,提供一种指令处理装置和处理器、指令翻译装置和方法,用于提高处理器处理逻辑运算的效率,有效降低处理器的功耗。
为解决上述技术问题,本发明提供一种指令处理装置,用于处理目标指令,
所述目标指令由二进制码表示,用于求逻辑表达式的运算结果;所述目标指令包括所述逻辑表达式的真值表中逻辑表达式的值和操作数,以及目标操作数;所述逻辑表达式的操作数至少为二个;
所述指令处理装置包括:
解析单元,用于解析所述目标指令,获取所述真值表中逻辑表达式的值和操作数以及目标操作数;
多路选择单元,包括多路数据输入端、多个选择输入端和输出端,所述多路数据输入端分别输入所述真值表中逻辑表达式的值,所述多个选择输入端分别输入所述逻辑表达式的操作数,所述输出端的值赋给所述目标操作数,所述多路选择单元用于根据所述多个选择输入端的值选择其中一路数据输入端的值输出至所述输出端以赋给所述目标操作数。
可选的,所述逻辑表达式的操作数为二个,所述多路选择单元包括4选1多路选择器。
可选的,所述逻辑表达式的操作数为三个,所述多路选择单元包括8选1多路选择器。
可选的,所述逻辑表达式的操作数为四个,所述多路选择单元包括16选1多路选择器。
可选的,所述多路选择单元包括多个多路选择器,所述多路选择器的个数与所述操作数的位数相同。
为解决上述技术问题,本发明还提供一种包括上述指令处理装置的处理器。
为解决上述技术问题,本发明还提供一种指令翻译装置,包括:
提取单元,用于提取源指令中的逻辑运算表达式,所述源指令用于求所述逻辑表达式的运算结果,所述逻辑表达式的操作数至少为二个;
列表单元,用于依据所述操作数列出所述逻辑表达式的真值表;
生成单元,用于生成目标指令,所述目标指令包括所述真值表中逻辑表达式的值和操作数,以及目标操作数。
可选的,所述目标指令为二进制码。
为解决上述技术问题,本发明还提供一种指令翻译方法,包括如下步骤:
提取源指令中的逻辑表达式,所述源指令用于求所述逻辑表达式的运算结果,所述逻辑表达式的操作数至少为二个;
依据所述操作数列出所述逻辑表达式的真值表;
生成目标指令,所述目标指令包括所述真值表中逻辑表达式的值和操作数,以及目标操作数。
可选的,所述目标指令为二进制码。
本发明的指令处理装置,通过多路选择单元处理上述指令翻译装置生成的目标指令,从而输出最终逻辑表达式的结果,其结构简单,在硬件上容易实现,所述指令处理装置嵌入于处理器中,并配合所述指令翻译装置,可以加快处理器处理逻辑运算的时间,降低处理器的功耗。
本发明的指令翻译装置,利用了列表单元所生成的逻辑表达式的真值表;通过生成单元将含有逻辑表达式的指令翻译成一条目标指令,使得处理器只需执行一条指令即可完成复杂的逻辑运算,与现有技术将含有逻辑表达式的指令翻译成多条指令,处理器需要执行多条指令相比,加快了处理器处理逻辑运算的效率,提高了处理器的应用性能,有效的降低了处理器的功耗。
本发明的指令翻译方法,利用了逻辑表达式的真值表,将含有逻辑表达式的指令翻译成一条目标指令,使得处理器只需执行一条指令即可完成复杂的逻辑运算,与现有技术将含有逻辑表达式的指令翻译成多条指令,处理器需要执行多条指令相比,加快了处理器处理逻辑运算的效率,提高了处理器的应用性能,有效的降低了处理器的功耗。
附图说明
图1是本发明具体实施例的指令翻译装置的结构示意图;
图2是本发明一实施例的逻辑表达式的真值表;
图3是本发明又一实施例的逻辑表达式的真值表;
图4是本发明具体实施例的指令处理装置的结构示意图;
图5是本发明具体实施例一八选一多路选择器的结构示意图;
图6是本发明具体实施例的多路选择单元结构示意图。
具体实施方式
发明人发现,现有技术处理器对含有逻辑表达式的源指令进行处理时,通常会将其翻译成多条指令,举例来说,对于逻辑表达式(x&y)|(x&z)而言,编译器会将其翻译成至少3条指令,然后再将其转换为处理器能够识别的二进制代码(机器语言),当逻辑表达式越复杂,翻译的指令就越多,处理器需要经过多个指令周期才能处理完逻辑表达式的运算,由此会导致处理器处理逻辑运算效率过低,处理器功耗过大。
本发明的具体实施方式提供一种指令处理装置和处理器、指令翻译装置和方法。通过多路选择单元处理所述指令翻译装置生成的目标指令,从而输出最终逻辑表达式的结果,其结构简单,在硬件上容易实现,所述指令处理装置嵌入于处理器中,并配合所述指令翻译装置,可以加快处理器处理逻辑运算的时间,降低处理器的功耗。以下结合附图和实施例对本发明具体实施方式进行详细说明。
实施例一
本实施例提供一种指令翻译装置,所述指令翻译装置可以嵌入于编译器中。参考图1,本发明具体实施例的指令翻译装置包括,提取单元101,用于提取源指令中的逻辑运算表达式,所述源指令用于求所述逻辑表达式的运算结果,所述逻辑表达式的操作数至少为二个;列表单元102,用于依据所述操作数列出所述逻辑表达式的真值表;生成单元103,用于生成目标指令,所述目标指令包括所述真值表中逻辑表达式的值和操作数,以及目标操作数。
现以参与逻辑表达式的操作数为2个,逻辑表达式为d=(x&y)|(~x&y)&y对本实施例的指令翻译装置进行详细说明。
在对源程序进行编译的过程中,当处理到用于求所述逻辑表达式的运算结果的源指令时,提取单元101会将源指令中的逻辑表达式(x&y)|(~x&y)&y提取出;本实施例中的源指令可以为任何一种语言例如:C语言、VC等所描述的逻辑表达式。现有技术在处理上述逻辑表达式时,会直接将其翻译成至少5条指令,如:首先,对x进行逻辑取反得到~x,然后将~x与y做逻辑与运算得到(~x&y),对(~x&y)与y求一次逻辑与运算得到(~x&y)&y;对x和y做逻辑与运算得到x&y,最后对(x&y)和(~x&y)&y做逻辑或运算。而本实施例中,通过下面的各个单元将由提取单元101提取出的上述逻辑表达式翻译(转换)成一条指令。
列表单元102依据提取单元101提取出的逻辑表达式(x&y)|(~x&y)&y中的操作数x,y列出相应的真值表;
本领域技术人员知晓,对于两操作数的逻辑表达式,其真值表对应了4种状态,如图2所示:在二进制中,操作数x与y的组合总共有4种状态,分别是00,01,10,11,根据逻辑表达式(x&y)|(~x&y)&y可以求出这4种状态所对应的(x&y)|(~x&y)&y的值d。由图2可知,当x取0,y取0时,d的值为0,当x取0,y取1时,d的值为1,当x取1,y取0时,d的值为0,当x取1,y取1时,d的值为1。
生成单元103根据真值表中逻辑表达式的值及参与逻辑运算的操作数,生成目标指令。一般来讲,所述目标指令包括操作码、源操作数和目标操作数,所述操作码可以为自定义的符号(以下简称为操作符),并具有与其相对应的二进制码(可以将其编入指令集中)。本实施例中,所述源操作数包括所述真值表中逻辑表达式的值和操作数,在另一具体实施例中,所述操作码包括操作符和真值表中逻辑表达式的值,所述源操作数包括所述逻辑表达式的操作数。
本实施例中生成的所述目标指令的操作符为loge,其含义为根据逻辑表达式的操作数选择真值表中逻辑表达式的一个值赋给目标操作数(对应于提取单元提取到的源指令即求逻辑表达式的运算结果)(操作符也可以用log2x,log3x,log nx表示,含义为根据逻辑表达式的2个操作数、3个操作数或n个操作数选择真值表中逻辑表达式的一个值赋给目标操作数);作为所述目标指令中的一源操作数,真值表中逻辑表达式的值已由列表单元102生成,本实施例中为0,1,0,0,为便于表示,将其用16进制表示,即为4。作为所述目标指令中的另一源操作数为真值表中逻辑表达式的两个操作数,在实际的程序中,x和y的值是给定的,因此,其逻辑表达式的值也对应了真值表中的唯一值。根据上述真值表的值及操作数生成的目标指令为loge 4,d,r0,r1,其中4为真值表中上述逻辑表达式的值的16进制表示;r0、r1为逻辑表达式的两个操作数,可以表示寄存器r0、r1,分别用于储存参与逻辑运算的操作数x、y的值。例如,如果要计算x为1,y为0时逻辑表达式的值d,则寄存器r0储存1,寄存器r1储存0。d为目标操作数(可以表示寄存器d,用于储存逻辑表达式的值,或者说,目标操作数d对应逻辑表达式的运算结果),即本实施例中所要计算的逻辑表达式的值。
本实施例中的生成单元103生成的目标指令可以为一自定义的汇编指令,但不仅仅限定于汇编指令。接下来,编译器会将所述目标指令编译成目标代码即二进制代码,所述二进制代码包括操作符(如上述的loge)对应的二进制代码、真值表中逻辑表达式的值对应的二进制代码(如上述的0101)、存放逻辑表达式的操作数的寄存器r0、r1的地址对应的二进制代码,目标操作数对应的二进制代码(如上述寄存器d的地址),处理器对所述二进制代码进行识别进而控制硬件进行相应的操作(即执行指令),得到(x&y)|(~x&y)&y的值。有关处理器如何控制硬件进行操作,执行所述目标指令将在指令处理装置中进行详细的说明。
实施例二
为了能够对本发明的指令翻译装置更好的理解,仍然参考图1指令翻译装置的结构示意图,以参与逻辑表达式的操作数为3个,逻辑表达式为d=(x&y)|(~x&z)对本实施例的指令翻译装置进行详细说明。
在对源程序进行编译的过程中,当处理到用于求所述逻辑表达式的运算结果的源指令时,提取单元101会将源指令中的逻辑表达式(x&y)|(~x&z)提取出;本实施例中的源指令可以为任何一种语言例如:C语言、VC等所描述的逻辑表达式。现有技术编译器在处理上述逻辑表达式时,会直接将其翻译成至少4条指令,如:首先,对x进行逻辑取反得到~x,然后将~x与z做逻辑与运算得到(~x&z),对x和y做逻辑与运算得到x&y,最后对(x&y)和(~x&z)做逻辑或运算,而本实施例中,通过下面的各个单元将由提取单元101提取出的上述逻辑表达式翻译(转换)成一条指令。
列表单元102依据提取单元101提取出的逻辑表达式(x&y)|(~x&z)中的操作数x,y列出相应的真值表。
本领域技术人员知晓,对于三操作数的逻辑表达式,其真值表对应了8种状态,如图3所示:在二进制中,x、y、z的组合总共有8种状态,分别是000,001,010,011,100,101,110,111根据逻辑表达式(x&y)|(~x&z)可以求出这8种状态所对应的(x&y)|(~x&z)的值d。由图3可知,当x取0,y取0,z取0时,d的值为0;当x取0,y取0,z取1时,d的值为1;当x取0,y取1,z取0时,d的值为0;当x取0,y取1,z取1时,d的值为1;当x取1,y取0,z取0时,d的值为0;当x取1,y取0,z取1时,d的值为0;当x取1,y取1,z取0时,d的值为1;当x取1,y取1,z取1时,d的值为1。
生成单元103根据真值表中逻辑表达式的值及参与逻辑运算的操作数,生成目标指令。一般来讲,所述目标指令包括操作码、源操作数和目标操作数,所述操作码可以为自定义的符号(以下简称为操作符),并具有与其相对应的二进制码(可以将其编入指令集中)。本实施例中,所述源操作数包括所述真值表中逻辑表达式的值和操作数,在另一具体实施例中,所述操作码包括操作符和真值表中逻辑表达式的值,所述源操作数包括所述逻辑表达式的操作数。
本实施例中生成的所述目标指令的操作符为loge,其含义为根据逻辑表达式的操作数选择真值表中逻辑表达式的一个值赋给目标操作数(对应于提取单元提取到的源指令即求逻辑表达式的值)(操作符也可以用log2x,log3x,log nx表示,含义为根据逻辑表达式的2个操作数、3个操作数或n个操作数选择真值表中逻辑表达式的一个值赋给目标操作数);作为所述目标指令中的一源操作数,真值表中逻辑表达式的值已由列表单元102生成,本实施例中为0,1,0,1,0,0,1,1,为便于表示,仍然参考图3,将真值表中的8个值自下而上用16进制表示,即将1100表示为16进制的c,1010表示为16进制的a。作为所述目标指令中的另一源操作数为真值表中逻辑表达式的三个操作数,在实际的程序中,x、y、z的值是给定的,因此,其逻辑表达式的值也对应了真值表中的唯一值。根据上述真值表的值及操作数生成的目标指令为loge ca,d,r0,r1,r2,其中ca为真值表中上述逻辑表达式的值自下而上的16进制表示;r0,r1,r2为逻辑表达式的三个操作数,可以表示寄存器r0,r1,r2,分别用于储存参与逻辑运算的操作数x、y、z的值。例如,如果要计算x为0,y为0,z为0时逻辑表达式的值d,则寄存器r0储存0,寄存器r1储存0,寄存器r2储存0。d为目标操作数(可以表示寄存器d,用于储存逻辑表达式的值,或者说,目标操作数d对应逻辑表达式的运算结果),即本实施例中所要计算的逻辑表达式的值。
本实施例中的生成单元103生成的目标指令可以为一自定义的汇编指令,但不仅仅限定于汇编指令。接下来,编译器会将所述目标指令编译成目标代码即二进制代码,所述二进制代码包括操作符(如上述的loge)对应的二进制代码、真值表中逻辑表达式的值对应的二进制代码(如上述的ca)、存放逻辑表达式的操作数的寄存器r0、r1、r2的地址对应的二进制代码,目标操作数对应的二进制代码(如上述寄存器d的地址),处理器对所述二进制代码进行识别进而控制硬件进行相应的操作(即执行指令),得到(x&y)|(~x&z)的值。有关处理器如何控制硬件进行操作,执行所述目标指令将在指令处理装置中进行详细的说明。
此外,指令翻译装置还可以包括转换单元(图中未示出),用于将该目标指令翻译成对应的二进制代码,即以二进制代码表示该目标指令,所述二进制代码可以储存于程序存储器中。
实施例三
本发明还提供一种用于处理上述指令翻译装置生成的目标指令的指令处理装置,所述目标指令由二进制码表示,用于求逻辑表达式的运算结果;所述目标指令包括所述逻辑表达式的真值表中逻辑表达式的值和操作数,以及目标操作数;所述逻辑表达式的操作数至少为二个;参考图4,图4为本发明具体实施例的指令处理装置的结构示意图,所述指令处理装置包括:解析单元104,用于解析所述目标指令,获取所述真值表中逻辑表达式的值和操作数,以及目标操作数;多路选择单元105,包括多路选择器,所述任一多路选择器包括多路数据输入端、多个选择输入端和输出端,所述多路数据输入端分别输入所述真值表中逻辑表达式的值,所述多个选择输入端分别输入所述逻辑表达式的操作数,所述输出端的值赋给所述目标操作数,所述多路选择单元用于根据所述多个选择输入端的值选择其中一路数据输入端的值输出至所述输出端以赋给所述目标操作数。
以实施例二中的三操作数的逻辑表达式(x&y)|(~x&z)为例,对于由指令翻译装置生成的以二进制代码表示的目标指令loge ca,d,r0,r1,r2,解析单元从程序存储器中读出所述loge ca,d,r0,r1,r2对应的二进制代码,处理器根据指令集中对该指令的定义,首先,取出真值表中逻辑表达式的值,即(x&y)|(~x&z)的值,本实施例中为11001010,同时根据寄存器r0、r1、r2的地址,找到储存于寄存器r0中的x的值,储存于寄存器r1中的y的值,储存于寄存器r2中的z的值,然后将真值表中逻辑表达式的值11001010这8个值送到多路选择器的多路数据输入端。本实施例中由于参与逻辑运算的操作数为3个,因此其真值表的状态为8种,所以其多路选择器可以为一8选1的多路选择器,如图5所示,包括8路数据输入端i_truth[7]至i_truth[0],3个选择输入端s2、s1、s0和输出端O。
仍然参考图5,将真值表中逻辑表达式的值11001010这8个值分别输入至多路选择器的8路数据输入端i_truth[7]至i_truth[0],即,i_truth[7]输入1,i_truth[6]输入1,i_truth[5]输入0,i_truth[4]输入0,i_truth[3]输入1,i_truth[2]输入0,i_truth[1]输入1,i_truth[0]输入0;同时将储存在三个寄存器r0、r1、r2中的值x,y,z分别输入至多路选择器的3个选择输入端s2、s1、s0,即s2输入x、s1输入y、s0输入z。多路选择器根据3个选择输入端输入的x,y,z的值,选择8路数据输入端中的一路输入(与x,y,z的值对应的真值表中逻辑表达式的值)的值输出至输出端O,输出端O的值会储存于寄存器d中。例如,本实施例中参与逻辑运算的操作数x=1,y=1,z=1,则多路选择器的输出端O会输出数据输入端i_truth[7]的值即1,并按照寄存器d的地址,将其储存在寄存器d中(即将逻辑表达式的值赋给目标操作数)。
对于实施例一,由于参与逻辑运算的操作数为2个,因此其真值表的状态为4种,所以其多路选择器可为一4选1的多路选择器。在其他实施例中,操作数也可以多于3个,例如,对于操作数为4个的逻辑表达式,其对应的真值表的状态有16种,因此,其多路选择器可为一16选1的多路选择器。对于操作数为n个的逻辑表达式,对应的真值表的状态有2n种,则选择2n选1的多路选择器。
需要注意的是,为了能够清楚地表达本发明的宗旨,上述实施例中仅以参与逻辑运算的操作数中的1bit位为例来说明的,实际应用中,由于处理器处理位数的不同,参与逻辑运算的操作数可能是8位、16位、32位、64位或更多。现仍以3操作数的逻辑表达式(x&y)|(~x&z)为例,参与逻辑运算的操作数为32位来说明本实施例的指令处理装置。若
参与逻辑运算的x的二进制代码为10101010010101011111111100000001
参与逻辑运算的y的二进制代码为10010110111101001001010101000001
参与逻辑运算的z的二进制代码为01001011101101000100110110110001
对于由指令翻译装置生成的以二进制代码表示的目标指令loge ca,d,r0,r1,r2,解析单元104所完成的功能与上述相同,此处不再赘述。处理器根据指令集中对该指令的定义,取出真值表中逻辑表达式的值,即(x&y)|(~x&z)的值,本实施例中为11001010,同时根据寄存器r0、r1、r2的地址,找到储存于寄存器r0中的x的值,储存于寄存器r1中的y的值,储存于寄存器r2中的z的值,此时x、y、z均为32位的二进制代码。本领域技术人员知晓,对于32位的二进制代码进行逻辑操作时,是按位进行逻辑运算的。但是不管操作数的位数是32为还是64位,对于3操作数的逻辑运算来说,其真值表是唯一的,因此,处理器会将真值表中逻辑表达式的值11001010这8个值分别送入32个8选1的多路选择器的多路数据输入端,如图6所示,图中1~32分别表示第1~32个8选1的多路选择器。每个多路选择器均具有相同的结构。处理器将真值表中逻辑表达式的值11001010这8个值分别输入至1~32个8选1的多路选择器的8路数据输入端i_truth[7]至i_truth[0],即1~32个8选1的多路选择器的i_truth[7]均输入1,i_truth[6]均输入1,i_truth[5]均输入0,i_truth[4]均输入0,i_truth[3]均输入1,i_truth[2]均输入0,i_truth[1]均输入1,i_truth[0]均输入0。
将32位二进制表示的x、y、z的每一位由低到高按照x、y、z的顺序分别输入至1~32个8选1的多路选择器的3个选择输入端s2、s1、s0,(参见上述x、y、z的二进制代码表示)即,多路选择器1的s2、s1、s0输入1,1,1,多路选择器2的s2、s1、s0输入0,0,0;多路选择器3的s2、s1、s0输入0,0,0;多路选择器4的s2、s1、s0输入0,0,0;依此类推,......;多路选择器30的s2、s1、s0输入1,0,0;多路选择器31的s2、s1、s0输入的0,0,1;多路选择器32的s2、s1、s0输入1,1,0。
8选1的多路选择器1~32分别根据3个选择输入端输入的x,y,z的每一位的二进制值,分别选择8路数据输入端中的一路输入(与x,y,z的每一位的组合对应的真值表中逻辑表达式的值)的值输出至输出端O1~O32,多路选择器1~32的输出端O1~O32的值按照寄存器d的地址,储存于寄存器d中(即将逻辑运算的结果赋给目标操作数)。
例如,本实施例中参与逻辑运算的操作数,
x的二进制代码为10101010010101011111111100000001
y的二进制代码为10010110111101001001010101000001
z的二进制代码为01001011101101000100110110110001
则多路选择器1的输出端O1会输出数据输入端i_truth[7]的值即1;
多路选择器2的输出端O2会输出数据输入端i_truth[0]的值即0;
多路选择器3的输出端O3会输出数据输入端i_truth[0]的值即0;
.....;
多路选择器30的输出端O30会输出数据输入端i_truth[4]的值即0;
多路选择器31的输出端O31会输出数据输入端i_truth[1]的值即1;
多路选择器32的输出端O32会输出数据输入端i_truth[6]的值即1;
最终得到逻辑运算(x&y)|(~x&z)的结果为11000011111101001001010110110001,将其储存在寄存器d中。
对于实施例一中的二操作数而言,若处理器为32位,则需要32个4选1的多路选择器,若处理器为64位,则需要64个4选1的多路选择器。而对于本实施例二中的三操作数而言,若处理器为64位,则需要64个8选1的多路选择器。具体采用多少个多路选择器,应该根据操作数的位数来决定。
本发明还提供一种包括上述指令处理装置的处理器,用于执行上述指令翻译装置生成的目标指令,所述处理器可以是计算机的中央处理器(CPU),也可以是微控制器(MCU)及其他可用于执行指令的装置。
本发明的具体实施例还提供一种对应上述指令翻译装置的指令翻译方法,包括如下步骤:提取源指令中的逻辑表达式,所述逻辑表达式的操作数至少为二个;依据所述操作数列出所述逻辑表达式的真值表;生成目标指令,所述目标指令包括真值表中逻辑表达式的值和操作数,以及目标操作数。
综上所述,本发明的具体实施例所提供的指令处理装置和处理器,指令翻译装置和方法,利用逻辑表达式的真值表,将现有技术计算机在进行逻辑运算时所执行的多条指令翻译成一条指令执行,加快了处理器处理逻辑运算的速度,提高了处理器的应用性能,有效的降低了处理器的功耗。
本发明虽然已以较佳实施例公开如上,但其并不是用来限定本发明,任何本领域技术人员在不脱离本发明的精神和范围内,都可以利用上述揭示的方法和技术内容对本发明技术方案做出可能的变动和修改,因此,凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化及修饰,均属于本发明技术方案的保护范围。
Claims (9)
1.一种指令处理装置,用于处理目标指令,其特征在于,
所述目标指令由指令翻译装置生成,由二进制码表示,用于求逻辑表达式的运算结果;所述目标指令包括所述逻辑表达式的真值表中逻辑表达式的值和操作数,以及目标操作数;所述逻辑表达式的操作数至少为二个;所述指令翻译装置提取源指令中的逻辑表达式,依据所述操作数列出所述逻辑表达式的真值表,生成所述目标指令,所述目标指令的个数为一;
所述指令处理装置包括:
解析单元,用于解析所述目标指令,获取所述真值表中逻辑表达式的值和操作数以及目标操作数;
多路选择单元,包括多路数据输入端、多个选择输入端和输出端,所述多路数据输入端分别输入所述真值表中逻辑表达式的值,所述多个选择输入端分别输入所述逻辑表达式的操作数;所述多路选择单元用于根据所述多个选择输入端的值选择其中一路数据输入端的值,输出至所述输出端以赋给所述目标操作数。
2.如权利要求1所述的指令处理装置,其特征在于,所述逻辑表达式的操作数为二个,所述多路选择单元包括4选1多路选择器。
3.如权利要求1所述的指令处理装置,其特征在于,所述逻辑表达式的操作数为三个,所述多路选择单元包括8选1多路选择器。
4.如权利要求1所述的指令处理装置,其特征在于,所述逻辑表达式的操作数为四个,所述多路选择单元包括16选1多路选择器。
5.如权利要求1至4任一项所述的指令处理装置,其特征在于,所述多路选择单元包括多个多路选择器,所述多路选择器的个数与所述操作数的位数相同。
6.一种指令翻译装置,其特征在于,包括:
提取单元,用于提取源指令中的逻辑表达式,所述源指令用于求所述逻辑表达式的运算结果,所述逻辑表达式的操作数至少为二个;
列表单元,用于依据所述操作数列出所述逻辑表达式的真值表;
生成单元,用于生成一条目标指令,所述目标指令包括所述真值表中逻辑表达式的值和操作数,以及目标操作数;
解析单元,用于解析所述目标指令,获取所述真值表中逻辑表达式的值和操作数以及目标操作数;
多路选择单元,包括多路数据输入端、多个选择输入端和输出端,所述多路数据输入端分别输入所述真值表中逻辑表达式的值,所述多个选择输入端分别输入所述逻辑表达式的操作数;所述多路选择单元用于根据所述多个选择输入端的值选择其中一路数据输入端的值,输出至所述输出端以赋给所述目标操作数。
7.如权利要求6所述的指令翻译装置,其特征在于,所述目标指令由二进制码表示。
8.一种指令翻译方法,其特征在于,包括如下步骤:
提取源指令中的逻辑表达式,所述源指令用于求所述逻辑表达式的运算结果,所述逻辑表达式的操作数至少为二个;
依据所述操作数列出所述逻辑表达式的真值表;
生成一条目标指令,所述目标指令包括所述真值表中逻辑表达式的值和操作数,以及目标操作数;
解析所述目标指令,获取所述真值表中逻辑表达式的值和操作数以及目标操作数;
将所述真值表中逻辑表达式的值输入到多路选择单元的多路数据输入端,将所述逻辑表达式的操作数输入到所述多路选择单元的多个选择输入端,所述多路选择单元根据所述多个选择输入端的值选择其中一路数据输入端的值,输出至所述输出端以赋给所述目标操作数。
9.如权利要求8所述的指令翻译方法,其特征在于,所述目标指令由二进制码表示。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010508848.7A CN102446112B (zh) | 2010-10-12 | 2010-10-12 | 指令处理装置和处理器、指令翻译装置和方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010508848.7A CN102446112B (zh) | 2010-10-12 | 2010-10-12 | 指令处理装置和处理器、指令翻译装置和方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102446112A CN102446112A (zh) | 2012-05-09 |
CN102446112B true CN102446112B (zh) | 2015-05-20 |
Family
ID=46008626
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201010508848.7A Active CN102446112B (zh) | 2010-10-12 | 2010-10-12 | 指令处理装置和处理器、指令翻译装置和方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102446112B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103729168A (zh) * | 2012-10-10 | 2014-04-16 | 黄根根 | 编程软件的编译方法 |
CN105404497B (zh) * | 2015-10-26 | 2018-05-25 | 北京锐安科技有限公司 | 一种逻辑表达式的解析方法及装置 |
CN105676768B (zh) * | 2015-12-31 | 2018-06-01 | 天津凯发电气股份有限公司 | 一种加快继电保护装置中可编程逻辑运行速度的方法 |
WO2021217656A1 (zh) * | 2020-04-30 | 2021-11-04 | 深圳中砼物联网科技有限公司 | 快速开发软件的方法、计算机设备、及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1219703A (zh) * | 1997-08-29 | 1999-06-16 | 松下电器产业株式会社 | 削减了硬件数量的处理器和削减了指令种类的指令变换装置 |
US7075332B1 (en) * | 2004-06-08 | 2006-07-11 | Xilinx, Inc. | Six-input look-up table and associated memory control circuitry for use in a field programmable gate array |
CN101145109A (zh) * | 2007-11-01 | 2008-03-19 | 上海交通大学 | 利用中间指令集的二进制翻译方法 |
US7685215B1 (en) * | 2005-10-24 | 2010-03-23 | Lattice Semiconductor Corporation | Fast-carry arithmetic circuit using a multi-input look-up table |
-
2010
- 2010-10-12 CN CN201010508848.7A patent/CN102446112B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1219703A (zh) * | 1997-08-29 | 1999-06-16 | 松下电器产业株式会社 | 削减了硬件数量的处理器和削减了指令种类的指令变换装置 |
US7075332B1 (en) * | 2004-06-08 | 2006-07-11 | Xilinx, Inc. | Six-input look-up table and associated memory control circuitry for use in a field programmable gate array |
US7685215B1 (en) * | 2005-10-24 | 2010-03-23 | Lattice Semiconductor Corporation | Fast-carry arithmetic circuit using a multi-input look-up table |
CN101145109A (zh) * | 2007-11-01 | 2008-03-19 | 上海交通大学 | 利用中间指令集的二进制翻译方法 |
Also Published As
Publication number | Publication date |
---|---|
CN102446112A (zh) | 2012-05-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6035120A (en) | Method and apparatus for converting executable computer programs in a heterogeneous computing environment | |
CN102541611B (zh) | 指令翻译装置和方法、指令处理装置和处理器 | |
CN101799760B (zh) | 生成任意目标架构的并行单指令多数据代码的系统和方法 | |
CN102385524B (zh) | 一种基于混编指令集的编译链指令替换方法 | |
CN102446112B (zh) | 指令处理装置和处理器、指令翻译装置和方法 | |
CN103235724A (zh) | 基于原子操作语义描述的多源二进制代码一体化翻译方法 | |
WO2012092211A2 (en) | Emulating pointers | |
CN109542446A (zh) | 一种编译系统、方法及编译器 | |
US8117604B2 (en) | Architecture cloning for power PC processors | |
Ellul et al. | Run-time compilation of bytecode in sensor networks | |
Nozik | Kotlin language for science and Kmath library | |
Maheshwari et al. | Scientific workflow development using both visual and script-based representation | |
CN100559344C (zh) | 一种支持用规则记录变量访问专用寄存器组的处理方法 | |
CN112416313B (zh) | 支持大整数数据类型和运算符的编译方法 | |
Olschanowsky et al. | Pir: Pmac's idiom recognizer | |
CN102831004B (zh) | 一种基于C*core处理器的优化编译方法及编译器 | |
CN107180193B (zh) | 一种将程序代码转换成数据约束的方法和装置 | |
US7574703B2 (en) | Method and apparatus for reducing instruction dependencies in extended SSA form instructions | |
US8645758B2 (en) | Determining page faulting behavior of a memory operation | |
Klimov | An approach to supercompilation for object-oriented languages: the Java Supercompiler case study | |
Liang et al. | Semantics-recovering decompilation through neural machine translation | |
US7774767B2 (en) | System and method for compiler interprocedural optimization having support for object files in libraries | |
CN109710419B (zh) | 基于文本分析的mpi代码通信过程解析方法 | |
Korobeynikov | Improving switch lowering for the LLVM compiler system | |
US9606779B2 (en) | Data processing system and data simulation method in the system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |