CN101542434A - 指令操作码生成系统 - Google Patents
指令操作码生成系统 Download PDFInfo
- Publication number
- CN101542434A CN101542434A CN 200780043241 CN200780043241A CN101542434A CN 101542434 A CN101542434 A CN 101542434A CN 200780043241 CN200780043241 CN 200780043241 CN 200780043241 A CN200780043241 A CN 200780043241A CN 101542434 A CN101542434 A CN 101542434A
- Authority
- CN
- China
- Prior art keywords
- opcode
- value
- instruction
- length
- operational code
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
Abstract
可以增大处理器指令集设计工作效率并减少设计者在调查指令集时的工作量。一种指令操作码生成系统包括:操作码位宽决定装置、指令排序装置和操作码值决定装置。操作码位宽决定装置根据与处理器指令集相关联的技术规范数据来决定要被指派给每一个指令的操作码位宽。指令排序装置根据操作码位宽对指令进行排序。操作码值决定装置决定每一个指令的操作码的值。
Description
技术领域
本发明涉及在处理器设计工具中使用的指令操作码(instructionoperation code)生成系统,更具体地涉及在设计处理器的指令集时用于自动决定指令操作码的技术。
背景技术
为了实现处理器的高效设计,已经开发出各种工具。作为这样的工具之一,已知一种根据处理器的设计技术规范(design specification)生成处理器硬件配置或处理器软件开发工具的工具。这样的工具在下文中称为“处理器设计工具”。在传统的处理器设计工具中,包括指令字长、操作码和操作数(operand)在内的所有信息都由设计者定义。当定义一个指令时,设计者定义该指令的字长以及在该指令中使用的操作数的类型和数目两者。
在非专利参考文件1和2和专利参考文件1到3中公开了传统的处理器设计工具。例如,非专利参考文件1的工具定义处理器的指令集从而生成处理器的仿真器。在非专利参考文件1的工具中,指令位模式(bitpattern)定义如下。
CODING{Dest Src1 Src2 0b010000 0b10000}
在“{”和“}”之间的部分表示位模式。Dest、Src1和Src2分别表示登记号(register number)。在Dest、Src1和Src2之后的0b010000和0b10000分别为表示指令的操作码的二进制数位。以这种方式,构成指令的位模式的所有信息都需要由设计者定义。相似的原理适用于非专利参考文件2以及专利参考文件1和2中公开的工具。
指令操作码是用于区分各个指令的指令字段。在已经预先设定(settle)指令集的情况下,仅需要设计者在开始时定义指令操作码一次。但是,在调查要向指令集添加何种指令时,设计者需要校正指令操作码几次。
如果不需定义或校正指令操作码,则要由设计者定义的项的数目减少。操作码具有什么值并不重要,而仅仅需要将操作码定义为使得各个指令可相互区分。当可自动定义指令操作码的机制被实现时,要由设计者定义的项的数目可以减少,从而提高设计效率。
非专利参考文件1:S.Pees et al.,″LISA-Machine Description Languagefor Cycle-Accurate Models of Programmable DSP Architectures″,36th DesignAutomation Conference(DAC 99),June 1999,pp.933-938
非专利参考文件2:Andreas Hoffmann,et al.,″A Survey on ModelingIssues Using the Machine Description Language Lisa,″Proceedings of ICASSP2001,VOL.2,pp.1137-1140,May 7-112001
专利参考文件1:美国专利No.6,477,683
专利参考文件2:美国专利No.6,862,563
专利参考文件3:日本的PCT国家公布No.2003-518280
专利参考文件4:JP-A-2003-323463
发明内容
[技术问题]
上面提及的传统指令集生成工具具有以下问题:由于设计者必需对指令操作码进行定义,所以效率被恶化。在设计者在调查指令集的内容时必须作出大量尝试和错误的情况下,要设计者输入的项的数目越少,则可实现更高时效的设计。
本发明的一个目的是提供这样一种指令操作码自动生成方法,其能够实现操作码的自动生成以便增大处理器指令集设计工作效率并减少设计者在调查指令集时的工作量。
[技术方案]
为了解决以上目的,根据本发明第一方面,提供了一种指令操作码生成系统,其包括:操作码位宽决定装置,用于根据与处理器指令集相关联的技术规范数据来决定要被指派给所述指令集的每一个指令的操作码的位宽;指令分类装置,用于根据操作码位宽对所述指令进行分类;以及操作码值决定装置,用于根据对所述指令的分类来决定每一个指令的操作码的值。
此外,根据本发明第二方面,提供了一种用于基于与处理器的指令相关联的技术规范数据生成处理器的硬件配置定义或者处理器的软件开发工具的系统,其中所述系统使用如上所述的指令操作码生成系统来决定构成所述指令集的每一个指令的操作码的值。
此外,根据本发明第三方面,提供了一种指令操作码生成方法,包括:对与处理器的指令集相关联的技术规范数据进行解释的技术规范数据分析步骤;决定要向所述指令集的每一个指令的操作码指派的位宽的步骤;根据操作码位宽对所述指令进行分类的步骤;以及根据对所述指令的分类来决定每一个指令的操作码的值的步骤,以上各个步骤根据与所述处理器指令集相关联的技术规范数据来操作。
[有利效果]
根据本发明,根据与处理器指令集相关联的技术规范数据来自动生成每一个指令的操作码的值,从而消除设计者对操作码进行定义的需要,这相应地增大了处理器指令集设计工作效率并减少了设计者在调查指令集时的工作量。
附图说明
图1是示出根据本发明第一示例性实施例的指令操作码生成系统的示图;
图2是示出根据本发明第二示例性实施例的指令操作码生成系统的示图;
图3是示出作为本发明一个示例的操作码赋值方法的流程图;
图4(a)是示出将操作码布置在指令的位模式的MSB侧的方法的示图,图4(b)是示出将操作码布置在指令的位模式的LSB侧的方法的示图;
图5是示出第一操作码决定方法的流程图;
图6是示出用作技术规范数据的指令的示例的示图;
图7是示出根据第一操作码决定方法对操作码进行赋值的示例的示图;
图8是示出第二操作码决定方法的流程图;
图9是示出根据第二操作码决定方法对操作码进行赋值的示例的示图;
图10是示出第三操作码决定方法的流程图;
图11是示出根据第三操作码决定方法对操作码进行赋值的示例的示图;
图12是示出第四操作码决定方法的流程图;
图13是根据第四操作码决定方法的索引子字段(index sub-field)决定方法的流程图;
图14是根据第四操作码决定方法的组子字段(group sub-field)决定方法的流程图;
图15是示出用作技术规范数据的指令的示例的示图;
图16是示出根据第四操作码决定方法对索引子字段进行赋值的示例的示图;
图17是示出根据第四操作码决定方法在基于组子字段的位宽进行排序之后的指令的示例的示图;以及
图18是根据第四操作码决定方法对组子字段进行赋值的示例。
标号说明
100:操作码位宽决定装置
200:指令排序装置
300:操作码值决定装置
400:第一操作码子字段值决定装置
500:第二操作码子字段值决定装置
600:技术规范数据分析装置
700:操作码输出装置
800:中间数据存储装置
具体实施方式
以下将参考附图详细描述根据本发明、用于实施指令操作码生成系统的优选示例性实施例。
(第一示例性实施例)
图1示出了根据本发明第一示例性实施例的指令操作码生成系统的配置。图1所示的指令操作码生成系统包括基于与处理器的指令集相关联的技术规范数据操作的以下装置:技术规范数据分析装置600,其对与处理器指令集相关联的技术规范数据进行解释;操作码位宽决定装置100,其决定可被分配给各个指令的操作码的位宽;指令排序(sort)装置200,其根据操作码位宽对指令进行排序;操作码值决定装置300,其决定各个指令的操作码的值;操作码输出装置700,其输出指令操作码;以及中间数据存储装置800,其存储技术规范数据分析装置600、操作码位宽决定装置100、指令排序装置200、操作码值决定装置300和操作码输出装置700所使用的数据。
利用以上配置,根据与处理器指令集相关联的技术规范数据来自动生成各个指令的操作码值,从而消除由设计者定义操作码的需要,这相应地增大了处理器指令集设计工作效率并减少了设计者在调查指令集时的工作量。
(第二示例性实施例)
图2示出了根据本发明第二示例性实施例的指令操作码生成系统的配置。图2所示的指令操作码生成系统包括:技术规范数据分析装置600,其对与处理器指令集相关联的技术规范数据进行解释;操作码位宽决定装置100,其决定可被分配给各个指令的操作码的位宽;指令排序装置200,其根据操作码位宽对指令进行排序;第一和第二操作码子字段值决定装置400和500,其根据操作码位宽分别决定构成操作码的两个子字段的值;操作码输出装置700,其输出指令操作码;以及中间数据存储装置800,其存储技术规范数据分析装置600、操作码位宽决定装置100、指令排序装置200、操作码值决定装置300、第一和第二操作码子字段值决定装置400和500、以及操作码输出装置700所使用的数据。
利用以上配置,与第一示例性实施例的情况一样,根据与处理器指令集相关联的技术规范数据来自动生成各个指令的操作码值,从而消除由设计者定义操作码的需要,这相应地增大了处理器指令集设计工作效率并减少了设计者在调查指令集时的工作量。此外,与根据第一示例性实施例的指令操作码生成系统相比较,根据第二示例性实施例的指令操作码生成系统更容易对生成的操作码进行解码。
根据第一和第二示例性实施例的指令操作码生成系统可通过在计算机上操作的程序来实现。在这种情况下,构成指令操作码生成系统的程序允许计算机用作以上各个装置100到800。在这种配置中,指令操作码生成系统控制计算机读出与处理器指令集相关联的技术规范数据,并基于该技术规范数据来决定各个指令的操作码。
参考图3到18,将具体描述根据第一和第二示例性实施例的指令操作码生成系统的示例。在以下示例中,图1和2所示的以上各个装置100到800由计算机的处理器(CPU:中央处理单元)来实现,该处理器执行存储在计算机的存储介质中的指令操作码生成系统的程序代码。
[示例]
首先,将描述处理器指令是如何定义的。
处理器指令由0和1组成的位模式来表示。模式中的哪个位具有什么含义是预先定义的,并且处理器读出指令的位模式以对指令进行解释。
指令的位模式包括两个字段:操作码字段和操作数字段。操作码字段是表示指令的名称或类型的字段。指令必然包括一个操作码以表示指令的名称或类型。由于操作码通过其自身表示指令的名称或类型,所以操作码依据指令的名称或类型而不同。操作数是表示赋予指令的参数的字段。某些指令可能具有多个操作数,而某些指令可能不具有任何操作数。
当解释指令时,处理器首先从指令操作码获取指令的名称或类型,然后从指令的名称或类型获取操作数的数目或其含义。由于在指令的名称或类型与操作数的数目或其含义之间具有一一对应关系,所以操作码是否容易解释直接影响指令解释的容易度。
例如,如果指令字长、操作码的起始位位置和操作码位宽都恒定不变,则可以很容易解释操作码。但是,操作码位宽通常并不恒定,并且可能存在指令字长或操作码起始位位置并不恒定的情况。因此,为了更容易解释操作码,有必要使操作码的起始位位置恒定,并尽可能减少位宽数目的变化。
[操作码生成方法]
接下来,将描述指令操作码是如何决定的。在本说明书中使用的各种运算符(=、+=、==、<<、&、~、+、-等)的含义被假定为与C语言中定义的一样。例如,“x=y”意味着将y赋值给x的赋值运算,“x+=y”意味着将x+y赋值给x的赋值运算(即,“x+=y”具有与“x=x+y”相同的含义)。“x==y”意味着用于确定x和y之间的相等性的关系运算。在这种运算中,当x与y彼此相等时,返回为真,而当x与y不相等时,返回为假。“x<<y”意味着x被向左移位y值的移位运算。“x&y”意味着用于计算x与y之间的逻辑AND的逻辑运算。“~x”意味着对x的所有位求反的运算。
首先,对以下描述中所使用的术语进行定义。在下文中,术语<技术规范>意味着为了生成操作码设计者应当定义的信息,即,技术规范数据。
[定义1]
指令编号由k或i表示。
[定义2]
指令总数由S<技术规范>表示。
[定义3]
指令字长由N<技术规范>表示。
[定义4]
用于表示指令k的所有操作数的位模式宽度由total_operands_length[k]<技术规范>表示。
[定义5]
指令k的操作码字段的长度由opcode_length[k]位表示。
[定义6]
指令k的操作码字段的值由opcode_value[k]表示。opcode_value[k]是无符号整数。
[定义7]
操作码字段的长度为x位的指令的数目由num_ofinst_having_opcode_length(x)表示。
[定义8]
不小于值x的2的幂的最小值由min_power_of_2(x)表示。
[定义9]
从具有位宽“length”的值x的位反转获得的值由bitrev(x,length)表示。
接下来,将在以下描述基于以上定义1到9指派指令操作码的方法。图3是与该方法相对应的流程图。
(0)读取技术规范数据(步骤St0)。
在这个步骤中,用于表示指令k的所有操作数的位模式宽度total_operands_length[k]被从技术规范数据中读出。这个处理由图1和2所示的技术规范数据分析装置600来执行。
(1)决定指令的操作码字段的位宽(步骤St1)。
在这个步骤中,指令k的操作码字段的位宽opcode_length[k]被定义如下。
opcode_length[k]=N-total_operands_length[k](k=0,1,...,S-1)
这个处理由图1和2所示的操作码位宽决定装置100来执行。
(2)随后,对指令进行排序(步骤St2)。
在这个步骤中,基于total_operands_length[k]对所有指令进行排序。排序之后的指令编号由i表示。对操作数使用最大位数的指令的编号i被设为0。此外,对操作数使用最小位数的指令的编号i被设为S-1。
这个处理由图1和2所示的指令排序装置200执行。
然后,决定指令的操作码字段的值(步骤St3)。
在这个步骤中,以从第0个指令开始的顺序来决定操作码字段的值“opcode_value[i]”。这个处理由图1所示的操作码值决定装置300或者图2所示的第一和第二操作码子字段值决定装置400和500来执行。
在以上过程中在操作码字段被布置在指令的位模式的最高有效位(MSB)侧的情况下,如图4(a)所示地布置操作码字段。另一方面,在操作码字段被布置在指令的位模式的最低有效位(LSB)侧的情况下,如图4(b)所示地布置从操作码字段的值的位反转获得的值。
在图4(a)和4(b)中,opcode_length[i]表示指令[i]的操作码的位宽,opcode_value[i]表示指令[i]的操作码的值,operand_0[i]表示指令[i]的第0个操作数的内容,operand_1[i]表示指令[i]的第1个操作数的内容,operand_q[i]表示指令[i]的的第q个操作数的内容,并且bitrev(X,Y)表示从X的低Y位的位反转值获得的值。
一些方法可用作用于决定操作码字段的值的方法(步骤St3)。在下文中,将描述操作码决定方法。
[第一操作码决定方法]
将描述第一操作码决定方法。
在该操作码决定方法中,根据上面提及的过程执行(1)操作码字段位宽的决定和(2)指令的排序。在此之后,(3)决定各个指令的操作码的值opcode_value[i],如下所示。
图5示出了第一操作码决定方法的流程图。在图5中,i表示指令编号,S表示指令总数,opcode_value[i]表示指令i的操作码的值,并且opcode_length[i]表示指令i的操作码的位宽。
将0赋值给opcode_value[0](步骤St11)。
然后,如下所示地顺序决定opcode_value[i],其中指令编号i在从0到S-1的范围内(步骤St12到St15)。
opcode_value[i]=((opcode_value[i-1]+1)<<(opcode_length[i]-opcode_length[i-1])
即,opcode_value[i-1]与1的和被向左移位opcode_length[i]与opcode_length[i-1]之差的值,并且从移位操作获得的值被赋值给opcode_value[i]。以这种方式来决定各个指令的操作码的值。
在图6和7中示出了根据第一操作码决定方法来对操作码赋值的示例。图6表示14个指令(S=14)的位模式。在图6中,Ra、Rb和Rc是各自表示登记号的操作数字段。IMM6、IMM4和IMM2是各自表示数值的操作数字段。在图6中,每一个指令的字长为16位(N=16)。此外,在图6中,写在各个位模式的MSB侧的由0和1组成的位模式表示操作码。
指令U、V、W、A、B、C、D、E、F、G、H、P、Q和T的操作码的值是在以下假设下决定的:假定给出了指令集的技术规范数据,其中每一个指令的字长和每一个操作数字段的位宽被设置为如图6所示。
基于opcode_length[i]对图6所示的指令进行排序,并执行图5的从St11到St15的处理,由此获得图7。如图7所示,每一个指令的值“opcode_value[i](i=0,...,13)”都不与任何其它指令的操作码的值重叠。因此,可以利用根据第一操作码决定方法生成的操作码正确地识别各个指令。
注意,图6仅仅是一个代表性模型,并且不一定总是如图6所示地描述技术规范数据。技术规范数据可以被描述为文本文件。
从上面可见,第一操作码决定方法非常简单。此外,第一操作码决定方法具有以下优点:与下面的操作码决定方法相比,第一操作码决定方法可以表示大量的操作码。
对以第一操作码决定方法生成的操作码的解码稍微复杂一些。即,需要减法和比较运算来解码以第一操作码决定方法生成的操作码。需要同时执行多个减法和比较运算,以对一个周期中的指令进行解码,因此,与使用以下操作码决定方法的情况相比,不可避免地增加了用于对操作码进行解码的解码电路的占位(footprint)。
[第二操作码决定方法]
接下来,将描述第二操作码决定方法。
在该操作码决定方法中,根据上面提及的过程执行(1)操作码字段位宽的决定(步骤St1)和(2)指令的排序(步骤St2)。在此之后,(3)决定每一个指令的操作码的值“opcode_value[i]”,如下所示。
图8示出了第二操作码决定方法的流程图。在图8中,i表示指令编号,S表示指令总数,opcode_value[i]表示指令i的操作码的值,并且opcode_length[i]表示指令i的操作码的位宽。
将0赋值给opcode_value[0](步骤St21)。
然后,如下所示地顺序决定opcode_value[i],其中,指令编号i在从1到S-1的范围内(步骤St22到St30)。
在步骤St23中,判断opcode_length[i]是否等于opcode_length[i-1]。
当opcode_length[i]等于opcode_length[i-1](步骤St23中为是)时,将opcode_value[i-1]加1,并且将从相加得到的值赋值给opcode_value[i](步骤St24)。即,通过向opcode_value[i-1]加1来获得opcode_value[i]。
另一方面,当opcode_length[i]不等于opcode_length[i-1](步骤St23中为否)时,将opcode_value[i]设置为(opcode_value[i-1]<<(opcode_length[i]-opcode_length[i-1]))(步骤St25)。即,从opcode_length[i]减去opcode_length[i-1]。然后,将opcode_value[i-1]左移从减法得到的值,并且将从移位操作得到的值赋值给opcode_value[i]。随后,执行步骤St26。
在步骤St26中,判断作为不小于与指令i具有相同操作码长度的指令数目的、2的幂的最小值的值(min_power_of_2(num_of_inst_having_opcode_length(opcode_length[i])))是否大于从(1<<opcode_length[i]-opcode_length[i-1]))获得的值,并将较大者设置为Z。
当步骤St26中的判断为是时,Z被设置为min_power_of_2(num_of_inst_having_opcode_length(opcode_length[i])),并且根据以下计算公式来计算opcode_value[i]:
opcode_value[i]=(opcode_value[i]+Z)&(~(Z-1))
另一方面,当步骤St26中的判断为否时,Z被设置为(1<<(opcode_length[i]-opcode_length[i-1])),并且根据以下计算公式来计算opcode_value[i]:
opcode_value[i]=(opcode_value[i]+Z)&(~(Z-1))(步骤St28)。
以这种方式,决定每一个指令的操作码的值。
在图6和9中示出了根据第二操作码决定方法对操作码进行赋值的示例。基于opcode_length[i]对在图6中被示作技术规范代码的指令进行排序,并执行图8的从St21到St30的处理,由此获得图9。
如图9所示,每一个指令的值“opcode_value[i](i=0,...,13)”都不与任何其它指令的操作码的值重叠。因此,可以利用根据第二操作码决定方法生成的操作码来正确地识别每一个指令。
从上面可见,第二操作码决定方法比第一操作码决定方法略微更复杂。但是,对以第二操作码决定方法生成的操作码的解码比第一操作码决定方法的情况容易。这是因为通过第二操作码决定方法生成的操作码是由表示具有相同位宽的一组操作码的位串和表示该组中的指令的索引的位串构成的。因此,可将操作码分为两个位串,从而允许分层地对操作码进行解码。
即,当对以第二操作码决定方法生成的操作码进行解码时,首先对表示具有相同位宽的一组操作码的位串进行解码。然后,选择具有最长位串的一组,并对表示该组中的指令的索引的位串进行解码。为了对以第二操作码决定方法生成的操作码进行解码不必执行减法。因此,可以仅利用逻辑运算和移位运算来构建解码电路。其结果是,在第二操作码决定方法中的解码电路比第一操作码决定方法中的解码电路简单。
[第三操作码决定方法]
将描述第三操作码决定方法。
在该操作码决定方法中,根据上面提及的过程执行(1)操作码字段位宽的决定(步骤St1)和(2)指令的排序(步骤St2)。在那之后,(3)决定每一个指令的操作码的值“opcode_value[i]”,如下所示。
图10示出了第三操作码决定方法的流程图。在图10中,i表示指令编号,S表示指令总数,opcod_value[i]表示指令i的操作码的值,并且opcode_length[i]表示指令i的操作码的位宽。
将0赋值给opcode_value[0](步骤St31)。
然后,如下所示地顺序决定opcode_value[i],其中,指令编号i在从1到S-1的范围内(步骤St32到St38)。
在步骤St33中,判断opcode_length[i]是否等于opcode_length[i-1]。
当opcode_length[i]等于opcode_length[i-1](步骤St33中为是)时,将opcode_value[i-1]加1,并且将从相加得到的值赋值给opcode_value[i](步骤St34)。
另一方面,当opcode_length[i]不等于opcode_length[i-1](在步骤St33中为否)时,作为不小于具有与指令i相同的操作码长度的指令的数目的、2的幂的最小值的值(min_power_of_2(num_of_inst_having_opcode_length(opcode_length[i-1])))被设置为Z(步骤St35)。随后,执行步骤St36。
在步骤St36中,根据以下计算公式计算opcode_value[i]:
opcode_value[i]=((opcode_value[i-1]+Z)<<(opcode_length[i]-opcode_length[i-1])
以这种方式,决定每一个指令的操作码的值。
在图6和11中示出了根据第三操作码决定方法对操作码的赋值的示例。基于opcode_length[i]对在图6中被示作技术规范代码的指令进行排序,并执行图10的从St31到St38的处理,由此获得图11。
如图11所示,每一个指令的值“opcode_value[i](i=0,...,13)”都不与任何其它指令的操作码的值重叠。因此,可以利用根据本操作码决定方法生成的操作码来正确地识别每一个指令。
在第三操作码决定方法中,需要减法和比较运算以对所生成的操作码进行解码。这与第一操作码决定方法的情况相同。
与第一和第二操作码决定方法相比,第三操作码决定方法在过程上不像第一操作码决定方法那么简单,并且在对操作码的解码上不像第二操作码决定方法那么容易。
[第四操作码决定方法]
将描述第四操作码决定方法。
在该操作码决定方法中,操作码字段被分为两个子字段。一个是组子字段,另一个是索引子字段。组子字段被置于MSB侧,并且索引子字段被置于LSB侧。在这种方法中,分别决定索引子字段的操作码和组子字段的操作码。
图12示出了第四操作码决定方法的流程图。如图12所示,第四操作码决定方法包括以下步骤:决定每一个索引子字段的位宽的步骤(步骤St41),决定每一个索引子字段的值的步骤(St42),决定每一个组子字段的位宽的步骤(步骤St43),基于每一个组子字段的位宽对指令进行排序的步骤(步骤St44),以及决定每一个组子字段的值的步骤(步骤St45)。
有关这两个子字段的符号被定义如下。
[定义10]
指令i的组子字段的长度由opcode_sub_grp_length[i]表示。
[定义11]
指令i的组子字段的值由opcode_sub_grp_value[i]表示。
[定义12]
指令i的索引子字段的长度由opcode_sub_idx_length[i]表示。
[定义13]
指令i的索引子字段的值由opcode_sub_idx_value[i]表示。
[定义14]
为所有指令定义索引子字段的长度,如下所示(步骤St41)。
opcode_sub_idx_length[i]=min_power_of_2(num_of_inst_having_opcode_length(opcode_length[i]))
[定义15]
为所有指令定义组子字段的长度,如下所示(步骤St43)。
opcode_sub_grp_length[i]=opcode_length[i]-opcode_sub_idx_length[i]
接下来,将描述决定索引子字段的值的过程。图13是与该过程相对应的流程图。在图13中,i表示指令编号,S表示指令总数,opcode_value[i]表示指令i的操作码的值,opcode_length[i]表示指令i的操作码的位宽,并且opcode_sub_idx_value[i]表示指令i的索引子字段的值。
将0赋值给opcode_sub_idx_value[0](步骤St51)。
然后,如下所示地顺序决定opcode_sub_idx_value[i],其中,指令编号i在从1到S-1的范围内(步骤St52到St57)。
在步骤St53中,判断opcode_length[i]是否等于opcode_length[i-1]。
当opcode_length[i]等于opcode_length[i-1](步骤St53中为是)时,将opcode_sub_idx_value[i-1]加1,并且将从相加得到的值赋值给opcode_sub_idx_value[i](步骤St54)。
另一方面,当opcode_length[i]不等于opcode_length[i-1](在步骤St53中为否)时,将0赋值给opcode_sub_idx_value[i](步骤St55)。
接下来,将描述基于各个组子字段的位宽对指令进行排序的过程。基于指令i的组子字段长度opcode_sub_grp_length[i]对所有指令进行排序。排序之后的指令编号由n表示。令对组子字段使用最大位数目的指令的编号n被设为0,并令对操作数使用最小位数目的指令的编号n被设为S-1。
接下来,将描述决定组子字段的值的过程。图14是与该过程相对应的流程图。在图14中,n表示指令编号,S表示指令的总数,opcode_value[n]表示指令n的操作码的值,opcode_length[n]表示指令n的操作码的位宽,opcode_sub_grp_value[n]表示指令n的组子字段的值。并且opcode_sub_grp_length[n]表示指令n的组子字段的位宽。
将0赋值给opcode_sub_grp_value[0](步骤St61)。
然后,如下所示地顺序决定opcode_sub_grp_value[n],其中,指令编号n在从1到S-1的范围内(步骤St62到St66)。
在步骤St63中,判断opcode_length[n]是否等于opcode_length[n-1]。
当opcode_length[n]等于opcode_length[n-1](在步骤St63中为是)时,将opcode_sub_grp_value[n-1]赋值给opcode_sub_grp_value[n](步骤St64)。
另一方面,当opcode_length[n]不等于opcode_length[n-1](在步骤St63中为否)时,根据以下计算公式计算opcode_sub_grp_value[n]:
opcode_sub_grp_value[n]=((opcode_sub_grp_value[n-1]+1)<<(opcode_sub_grp_length[n]-opcode_sub_grp_length[n-1])
以这种方式,决定了每一个指令的操作码的值。
在图15到18中示出了根据第四操作码决定方法对操作码赋值的示例。
图15表示14个指令(S=14)的位模式。在图15中,Ra、Rb和Rc是各自表示登记号的操作数字段。IMM6、IMM4和IMM2是各自表示数值的操作数字段。每一个指令的字长为16位(N=16)。操作数被布置在指令位模式的LSB侧,并且操作码字段被布置在指令位模式的MSB侧。
基于opcode_length[i]对在图15中被示作技术规范代码的指令进行排序,并执行图13的从St51到St57的处理,由此获得图16。图16示出了与图15的指令相对应的各个索引子字段的值。
随后,使用图16中已经算出每一个索引子字段的值的指令来计算每一个指令的组子字段的位宽。然后,基于每一个组子字段的位宽对指令进行排序,从而获得图17。
随后,针对图17的指令执行图14中从步骤St61到步骤St67的处理,从而获得图18。图18示出了与图17的指令相对应的各个组子字段的值。利用以上处理,计算得到每一个指令的索引子字段和组子字段的值。然后,将索引子字段和组子字段相连接,由此获得与操作码的值相对应的位串。
如图18所示,由组子字段的值“opcode_sub_grp_value[i](i=0,...,13)”和索引子字段的值“opcode_sub_idx_value[i](i=0,...,13)”构成的每一个指令的操作码的值不与任何其它指令的操作码的值重叠。因此,可以利用根据本操作码决定方法的操作码来正确地识别每一个指令。
通过第四操作码决定方法生成的操作码由表示具有相同位宽的一组操作码的位串和表示该组中的指令的索引的位串构成。这是与第二操作码决定方法相同的特征。因此,与第二操作码决定方法的情况相同,可以很容易地对操作码进行解码。为了对以第二操作码决定方法生成的操作码进行解码不必执行减法,因而可以仅利用逻辑运算和移位运算来解码操作码。
此外,通过第四操作码决定方法生成的操作码具有以下特征:较短操作码的组子字段与另一较长操作码的组子字段的一部分不一致。这是第二操作码决定方法不具有的特征。这使得解码处理比第二操作码决定方法的情况更容易。
即,当对以第二操作码决定方法生成的操作码进行解码时,首先对表示具有相同位宽的一组操作码的位串进行解码,然后需要选择具有最长位串的组。这是因为表示具有相同位宽的一组操作码的位串部分相互一致,因而有必要从这些位串中选择最适合的组。与使用第二操作码决定方法的情况相比,第四操作码决定方法可以表达的操作码的类型数目较少。但是,在指令字长为24或32位的情况下,这不是主要问题。
将描述如何选择以上第一到第四操作码决定方法中的哪些。
一般而言,优选地选择可以容易地执行解码的操作码决定方法。在第一到第四操作码决定方法中,在解码处理方面第四操作码最容易。在需要增加操作码数目的情况下,优选地选择第二操作码决定方法。
虽然已经参考以上示例详细描述了本发明,但是应当了解,本发明不限于以上代表性示例。因此,在不脱离由权利要求限定的本发明的真实范围的情况下,本领域技术人员可以进行各种修改、改变和应用。因此,所有修改例及其等同物均包括在本发明的范围内。
[修改例]
虽然在以上示例中,操作码被布置在各个指令的位模式的MSB侧,但是操作码可以被布置在各个指令的位模式的MSB侧、LSB侧或者中间位置。此外,操作码可以以分开的方式被布置在各个指令的位模式中。
[应用]
本发明的示例可被应用于处理器硬件配置生成工具或者处理器软件开发工具,如在专利参考文件3中所公开的。这样的工具基于处理器的技术规范来生成硬件配置或软件开发工具。处理器技术规范包括指令集的技术规范。虽然在专利参考文件3中指令集的技术规范包括操作码的位宽或值,但是使用本发明的示例允许自动决定位宽和值。这使得得到以下应用:生成用于正确地对所决定的操作码进行解码或编码的硬件配置或软件开发工具。
当构成根据本发明的示例的指令操作码生成系统的以上装置的至少一部分功能是使用计算机程序代码来实现的时,该程序代码和用于记录程序的计算机可读记录介质被包括在本发明的范畴内。程序代码可以具有任何类型,只要其可以允许计算机实现以上装置的功能即可。例如,程序代码可以与诸如OS(操作系统)之类的另一程序代码协同来实现这些功能。用于记录程序代码的记录介质的示例包括任何类型的记录介质,例如,诸如ROM(只读存储器)之类的半导体存储器以及盘状记录介质(磁盘、光盘、磁光盘等,例如硬盘驱动器)和带状记录介质。
此外,执行构成根据本发明示例的指令操作码生成系统的程序代码的指令的计算机被包括在本发明的范畴内。计算机可以通过使用以下各项的至少一部分来构成:根据控制程序操作的处理器(CPU)、具有用于存储控制程序或控制数据的存储区域的存储器、以及各种外围设备,外围设备包括各种I/O设备(例如,诸如硬盘之类的外部记录设备)、诸如通信调制解调器或LAN(局域网)接口之类的通信设备、诸如CRT(阴极射线管)和液晶显示设备之类的显示设备、以及诸如键盘和鼠标之类的输入设备。在这种情况下,用于实现以上装置的功能的处理器、存储器和各种I/O设备包括在本发明的范畴内。计算机可以具有任何类型,例如,独立式计算机、或者由可通信地连接到网络的多个计算机构成的计算机系统。
本申请基于并要求(2006年11月21日提交的)在先日本专利申请No.2006-314260的优先权,该申请的全部内容通过引用而全部结合于此。
[工业适用性]
通过使用本发明,可以从指令集的技术规范描述中自动生成各个指令的操作码。本发明可被应用于从处理器的技术规范描述生成处理器硬件描述的系统。另外,本发明可被应用于从指令集的技术规范描述生成诸如汇编程序或编译器之类的软件开发工具的系统。
Claims (15)
1.一种指令操作码生成系统,包括:
操作码位宽决定装置,用于根据与处理器指令集相关联的技术规范数据来决定要被指派给所述指令集的每一个指令的操作码的位宽;
指令分类装置,用于根据所述操作码位宽对所述指令进行分类;以及
操作码值决定装置,用于根据对所述指令的分类来决定每一个指令的操作码的值。
2.根据权利要求1所述的指令操作码生成系统,还包括:
技术规范数据分析装置,用于解释所述技术规范数据;以及
中间数据存储装置,用于存储由所述技术规范数据分析装置、操作码位宽决定装置、指令分类装置和操作码值决定装置输出的数据。
3.根据权利要求2所述的指令操作码生成系统,其中
所述操作码值决定装置包括用于将操作码划分成两个子字段的装置,并根据对所述指令的分类来决定每一个子字段的值。
4.根据权利要求2或3所述的指令操作码生成系统,其中
与所述处理器指令集相关联的技术规范数据包括指令的字长、指令中包括的操作数的数目、以及每一个操作数的位宽,并且
所述操作码值决定装置根据包括指令的字长、指令中包括的操作数的数目和每一个操作数的位宽在内的与所述处理器指令集相关联的技术规范数据来确定每一个指令的操作码。
5.根据权利要求4所述的指令操作码生成系统,其中
假定各个指令的编号为k,指令总数为S,各个指令的字长为N,用于表示指令k的所有操作数的位模式的宽度为total_operands_length[k],指令k的操作码字段的长度为opcode_length[k]位,指令k的操作码字段的值为opcode_value[k],操作码字段的长度为x位的指令数目为num_ofinst_having_opcode_length(x),并且不小于值x的2的幂的最小值为min_power_of_2(x),则操作码位宽决定装置根据以下计算公式计算指令k的操作码字段的位宽“opcode_length[k]”:opcode_length[k]=N-totaloperands_length[k](k=0,1,...,S-1),
指令分类装置基于表示指令k的所有操作数的位模式的宽度“total_operands_length[k]”对所有指令进行排序,并且
假定排序之后的指令编号为i,则对操作数使用最大位数的指令的编号i为0,并且对操作数使用最小位数的指令的编号i为S-1,
操作码值决定装置以从第0个指令到第(S-1)个指令的顺序来决定指令i的操作码字段的值“opcode_value[i]”。
6.根据权利要求5所述的指令操作码生成系统,其中
用于决定指令i的操作码的值“opcode_value[i]”的装置将0赋值给opcode_value[0],随后根据以下公式在从1到S-1地改变指令编号i的同时顺序决定值“opcode_value[i]”:
opcode_value[i]=((opcode_value[i-1]+1)<<(opcode_length[i]-opcode_length[i-1])。
7.根据权利要求5所述的指令操作码生成系统,其中
用于决定指令i的操作码字段的值“opcode_value[i]”的装置将0赋值给opcode_value[0],随后如下所示地在从1到S-1地改变指令编号i的同时顺序决定值“opcode_value[i]”:
(1)当opcod_length[i]等于opcode_length[i-1]时,该装置根据opcode_value[i]=opcode_value[i-1]+1来决定值“opcode_value[i]”;以及
(2)当opcode_length[i]不等于opcode_length[i-1]时,该装置对值“min_power_of_2(num_of_inst_having_opcode_length(opcode_length[i]))”与从(1<<opcode_length[i]-opcode_length[i-1])获得的值进行比较,从而将较大者设为Z,并根据“opcode_value[i]=((opcode_value[i-1]<<(opcode_length[i]-opcod_length[i-1]))+Z)&(~(Z-1))”来决定值“opcode_value[i]”,其中,值“min_power_of_2(num_of_inst_having_opcode_length(opcode_length[i]))”是不小于与指令i具有相同操作码长度的指令的数目的、2的幂的最小值。
8.根据权利要求5所述的指令操作码生成系统,其中
用于决定指令i的操作码字段的值“opcode_value[i]”的装置将0赋值给opcode_value[0],随后如下所示地在从1到S-1地改变指令编号i的同时顺序决定值“opcode_value[i]”:
(1)当opcode_length[i]等于opcode_length[i-1]时,该装置根据opcode_value[i]=opcode_value[i-1]+1来决定值“opcode_value[i]”;以及
(2)当opcode_length[i]不等于opcode_length[i-1]时,该装置将值“(min_power_of_2(num_of_inst_having_opcode_length(opcode_length[i-1]))”设为Z,并根据“opcode_value[i]=((opcode_value[i-1]+Z<<(opcode_length[i]-opcode_length[i-1]))”来决定值“opcode _value[i]”,其中,值“(min_power_of_2(num_of_inst_having_opcode_length(opcode_length[i-1]))”是不小于与指令i具有相同操作码长度的指令的数目的、2的幂的最小值。
9.根据权利要求5所述的指令操作码生成系统,其中
所述操作码字段被划分成组子字段和索引子字段,
用于决定指令i的的操作码字段的值“opcode_value[i]”的装置包括用于决定所述索引子字段的值的装置和用于决定所述组子字段的值的装置,
假定指令i的索引子字段的长度为opcode_sub_idx_length[i],指令i的索引子字段的值为opcode_sub_idx_value[i],通过opcode_sub_idx_length[i]=min_power_of_2(num_of_inst_having_opcode_length(opcode_length[i]))为所有指令定义所述索引子字段的长度,指令i的组子字段的长度为opcode_sub_grp_length[i],指令i的组子字段的值为opcode_sub_grp_value[i],通过opcode_sub_grp_length[i]=opcode_length[i]-opcode_sub_idx_length[i]为所有指令定义所述组子字段的长度,则用于决定索引子字段的值的装置将0赋值给opcode_sub_idx_value[0],随后如下所示地在从1到S-1地改变指令编号i的同时顺序决定值“opcode_sub_idx_value[i]”:
(1)当opcode_length[i]等于opcode_length[i-1]时,该装置根据opcode_sub_idx_value[i]=opcode_sub_idx_value[i-1]+1来决定值“opcode_sub_idx_value[i]”;以及
(2)当opcod_length[i]不等于opcode_length[i-1]时,该装置根据opcode_sub_idx_value[i]=0来决定值“opcode_sub_idx_value[i]”,
基于指令i的组子字段的长度“opcode_sub_grp_length[i]”对所有指令进行排序,并且
假定排序之后的指令编号为n,对操作数使用最大位数的指令的编号n为0,并且对操作数使用最小位数的指令的编号n为S-1,则
用于决定组子字段的值的装置将0赋值给opcode_sub_grp_value[0],随后如下所示地在从1到S-1地改变指令编号n的同时顺序决定值“opcode_sub_grp_value[n]”:
(1)当opcode_length[n]等于opcode_length[n-1]时,该装置根据opcode_sub_grp_value[n]=opcode_sub_grp_value[n-1]来决定值“opcode_sub_grp_value[n]”;以及
(2)当opcode_length[n]不等于opcode_length[n-1]时,该装置根据opcode_sub_grp_value[n]=((opcode_sub_grp_value[n-1]+1)<<(opcode_sub_grp_length[n]-opcode_sub_grp_length[n-1]))来决定值“opcode_sub_grp_value[n]”。
10.一种用于基于与处理器的指令相关联的技术规范数据生成处理器的硬件配置定义或者处理器的软件开发工具的系统,其中
所述系统使用如权利要求1到9的任意一项所述的指令操作码生成系统,基于所述处理器的指令集的技术规范数据来决定构成所述指令集的每一个指令的操作码的值。
11.一种指令操作码生成方法,包括:
对与处理器的指令集相关联的技术规范数据进行解释的技术规范数据分析步骤;
决定要向所述指令集的每一个指令的操作码指派的位宽的步骤;
根据操作码位宽对所述指令进行分类的步骤;以及
根据对所述指令的分类来决定每一个指令的操作码的值的步骤,以上各个步骤根据与所述处理器指令集相关联的技术规范数据来操作。
12.根据权利要求11所述的指令操作码生成方法,其中
所述操作码值决定步骤包括将操作码划分成两个子字段并根据对所述指令的分类来决定每一个子字段的值的步骤。
13.根据权利要求11或12所述的指令操作码生成系统,其中
与所述处理器指令集相关联的技术规范数据包括指令的字长、指令中包括的操作数的数目、以及每一个操作数的位宽,并且
所述操作码值决定步骤根据包括指令的字长、指令中包括的操作数的数目和每一个操作数的位宽在内的与处理器指令集相关联的所述技术规范数据来确定每一个指令的操作码。
14.一种指令操作码生成程序,其允许计算机执行根据权利要求11到13中的任意一项所述的指令操作码生成方法。
15.一种用于允许计算机基于与处理器的指令集相关联的技术规范数据来生成处理器的硬件配置定义或处理器的软件开发工具的程序,其中
所述程序使用根据权利要求14所述的指令操作码生成程序,基于所述处理器的指令集的技术规范数据来决定构成所述指令集的每一个指令的操作码的值。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006314260 | 2006-11-21 | ||
JP314260/2006 | 2006-11-21 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101542434A true CN101542434A (zh) | 2009-09-23 |
Family
ID=39429698
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 200780043241 Pending CN101542434A (zh) | 2006-11-21 | 2007-11-19 | 指令操作码生成系统 |
Country Status (6)
Country | Link |
---|---|
US (1) | US8935512B2 (zh) |
EP (1) | EP2096533A4 (zh) |
JP (1) | JP5218063B2 (zh) |
CN (1) | CN101542434A (zh) |
TW (1) | TWI381309B (zh) |
WO (1) | WO2008062768A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110007962A (zh) * | 2019-03-08 | 2019-07-12 | 浙江大学 | 一种基于代码自动生成的指令集模拟方法 |
CN113656071A (zh) * | 2021-10-18 | 2021-11-16 | 深圳市智想科技有限公司 | 一种基于risc架构的cpu指令集系统及cpu系统 |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI513282B (zh) * | 2013-11-21 | 2015-12-11 | Mstar Semiconductor Inc | 快取記憶體管理裝置及應用該快取記憶體管理裝置之動態影像系統及方法 |
US10831503B2 (en) | 2018-11-06 | 2020-11-10 | International Business Machines Corporation | Saving and restoring machine state between multiple executions of an instruction |
US10831502B2 (en) | 2018-11-06 | 2020-11-10 | International Business Machines Corporation | Migration of partially completed instructions |
US10831478B2 (en) | 2018-11-06 | 2020-11-10 | International Business Machines Corporation | Sort and merge instruction for a general-purpose processor |
CN111258633B (zh) * | 2018-11-30 | 2022-08-09 | 上海寒武纪信息科技有限公司 | 乘法器、数据处理方法、芯片及电子设备 |
Family Cites Families (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH03271829A (ja) * | 1990-03-20 | 1991-12-03 | Fujitsu Ltd | 情報処理装置 |
DE69431998T2 (de) * | 1993-11-05 | 2004-08-05 | Intergraph Hardware Technologies Co., Las Vegas | Superskalare Rechnerarchitektur mit Softwarescheduling |
US5493508A (en) * | 1994-06-01 | 1996-02-20 | Lsi Logic Corporation | Specification and design of complex digital systems |
US5636352A (en) * | 1994-12-16 | 1997-06-03 | International Business Machines Corporation | Method and apparatus for utilizing condensed instructions |
US5809273A (en) * | 1996-01-26 | 1998-09-15 | Advanced Micro Devices, Inc. | Instruction predecode and multiple instruction decode |
GB2308470B (en) * | 1995-12-22 | 2000-02-16 | Nokia Mobile Phones Ltd | Program memory scheme for processors |
US6862563B1 (en) | 1998-10-14 | 2005-03-01 | Arc International | Method and apparatus for managing the configuration and functionality of a semiconductor design |
US6477683B1 (en) | 1999-02-05 | 2002-11-05 | Tensilica, Inc. | Automated processor generation system for designing a configurable processor and method for the same |
EP1159693A2 (en) | 1999-02-05 | 2001-12-05 | Tensilica, Inc. | Automated processor generation system & method for designing a configurable processor |
US6385757B1 (en) * | 1999-08-20 | 2002-05-07 | Hewlett-Packard Company | Auto design of VLIW processors |
US6457173B1 (en) * | 1999-08-20 | 2002-09-24 | Hewlett-Packard Company | Automatic design of VLIW instruction formats |
US7036106B1 (en) | 2000-02-17 | 2006-04-25 | Tensilica, Inc. | Automated processor generation system for designing a configurable processor and method for the same |
WO2001069376A2 (en) * | 2000-03-15 | 2001-09-20 | Arc International Plc | Method and apparatus for processor code optimization using code compression |
US7069420B1 (en) * | 2000-09-28 | 2006-06-27 | Intel Corporation | Decode and dispatch of multi-issue and multiple width instructions |
US6948051B2 (en) * | 2001-05-15 | 2005-09-20 | International Business Machines Corporation | Method and apparatus for reducing logic activity in a microprocessor using reduced bit width slices that are enabled or disabled depending on operation width |
JP2003241975A (ja) | 2002-02-21 | 2003-08-29 | Matsushita Electric Ind Co Ltd | コンパイラ装置および半導体集積回路 |
JP2003288203A (ja) | 2002-03-27 | 2003-10-10 | Asahi Kasei Corp | プロセッサの開発支援装置 |
JP4202673B2 (ja) | 2002-04-26 | 2008-12-24 | 株式会社東芝 | システムlsi開発環境生成方法及びそのプログラム |
US7162617B2 (en) * | 2003-02-14 | 2007-01-09 | Fine Arc Incorporated | Data processor with changeable architecture |
US7299460B2 (en) * | 2003-05-29 | 2007-11-20 | Nec Corporation | Method and computer program for converting an assembly language program for one processor to another |
JP2005293448A (ja) | 2004-04-05 | 2005-10-20 | Renesas Technology Corp | データ処理装置の開発方法、データプロセッサの開発支援プログラム、設計データの提供方法、及びデータ処理システムの開発方法 |
JP4464316B2 (ja) | 2005-05-13 | 2010-05-19 | 明治乳業株式会社 | チロシン含有飲料の結晶析出の抑制方法 |
US20070038984A1 (en) * | 2005-08-12 | 2007-02-15 | Gschwind Michael K | Methods for generating code for an architecture encoding an extended register specification |
JP2007122626A (ja) * | 2005-10-31 | 2007-05-17 | Matsushita Electric Ind Co Ltd | マイクロプロセッサ |
-
2007
- 2007-11-19 CN CN 200780043241 patent/CN101542434A/zh active Pending
- 2007-11-19 EP EP07832143A patent/EP2096533A4/en not_active Withdrawn
- 2007-11-19 WO PCT/JP2007/072413 patent/WO2008062768A1/ja active Application Filing
- 2007-11-19 US US12/515,439 patent/US8935512B2/en not_active Expired - Fee Related
- 2007-11-19 JP JP2008545398A patent/JP5218063B2/ja not_active Expired - Fee Related
- 2007-11-20 TW TW96143956A patent/TWI381309B/zh not_active IP Right Cessation
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110007962A (zh) * | 2019-03-08 | 2019-07-12 | 浙江大学 | 一种基于代码自动生成的指令集模拟方法 |
CN113656071A (zh) * | 2021-10-18 | 2021-11-16 | 深圳市智想科技有限公司 | 一种基于risc架构的cpu指令集系统及cpu系统 |
CN113656071B (zh) * | 2021-10-18 | 2022-02-08 | 深圳市智想科技有限公司 | 一种基于risc架构的cpu指令集系统及cpu系统 |
Also Published As
Publication number | Publication date |
---|---|
JPWO2008062768A1 (ja) | 2010-03-04 |
WO2008062768A1 (fr) | 2008-05-29 |
EP2096533A4 (en) | 2011-06-22 |
TW200839610A (en) | 2008-10-01 |
JP5218063B2 (ja) | 2013-06-26 |
TWI381309B (en) | 2013-01-01 |
US20100037039A1 (en) | 2010-02-11 |
US8935512B2 (en) | 2015-01-13 |
EP2096533A1 (en) | 2009-09-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101542434A (zh) | 指令操作码生成系统 | |
Agerwala | Microprogram optimization: A survey | |
CN103443767B (zh) | 展开量化以控制自动机的入度和/或出度 | |
US8738892B2 (en) | Very long instruction word (VLIW) computer having efficient instruction code format | |
CN101488083B (zh) | 用于转换向量数据的方法、装置和指令 | |
US20040154006A1 (en) | Compiler apparatus and compilation method | |
CN104049945A (zh) | 用于融合指令以在多个测试源上提供或(or)测试和与(and)测试功能的方法和装置 | |
CN104094218A (zh) | 用于执行写掩码寄存器到向量寄存器中的一系列索引值的转换的系统、装置和方法 | |
CN104050077A (zh) | 利用多个测试源来提供或(or)测试和与(and)测试功能的可融合指令和逻辑 | |
CN104081340A (zh) | 用于数据类型的下转换的装置和方法 | |
CN104115114A (zh) | 经改进的提取指令的装置和方法 | |
CN104081337A (zh) | 用于响应于单个指令来执行横向部分求和的系统、装置和方法 | |
US5964861A (en) | Method for writing a program to control processors using any instructions selected from original instructions and defining the instructions used as a new instruction set | |
JP3246438B2 (ja) | 可変ターゲットコンパイル処理方法、その処理装置、そのプログラムの記憶媒体および変換テーブルの記憶媒体 | |
CN1853164B (zh) | 用于开发dsp编译器构件块的组合方法 | |
CN103946795A (zh) | 用于生成循环对齐计数或循环对齐掩码的系统、装置和方法 | |
KR20010024576A (ko) | 기계 기술로부터의 명령군 구조의 시뮬레이터 및 어셈블러생성 방법 | |
JP2001005675A (ja) | プログラム変換装置及びプロセッサ | |
CN104081342A (zh) | 经改进的插入指令的装置和方法 | |
CN101253480B (zh) | 具有实时动态可变指令集的计算机 | |
Britton | MIPS assembly language programming | |
CN104137052A (zh) | 用于选择向量计算的元素的装置和方法 | |
Monahan et al. | Symbolic modeling and evaluation of data paths | |
CN116414396A (zh) | 一种llvm的目标定义文件生成方法、装置和电子设备 | |
CN104126169A (zh) | 用于在两个向量寄存器的相应打包数据元素之间执行绝对差计算的系统、装置和方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20090923 |