CN117369867A - 面向指令集及工具链自动生成的指令集架构模型描述方法 - Google Patents

面向指令集及工具链自动生成的指令集架构模型描述方法 Download PDF

Info

Publication number
CN117369867A
CN117369867A CN202311279510.2A CN202311279510A CN117369867A CN 117369867 A CN117369867 A CN 117369867A CN 202311279510 A CN202311279510 A CN 202311279510A CN 117369867 A CN117369867 A CN 117369867A
Authority
CN
China
Prior art keywords
instruction
instruction set
field
set architecture
model
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.)
Granted
Application number
CN202311279510.2A
Other languages
English (en)
Other versions
CN117369867B (zh
Inventor
刘仲
肖鑫
李程
刘胜
田希
彭盼攀
陈小文
李晨
袁珩洲
汤先拓
刘畅
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
National University of Defense Technology
Original Assignee
National University of Defense Technology
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by National University of Defense Technology filed Critical National University of Defense Technology
Priority to CN202311279510.2A priority Critical patent/CN117369867B/zh
Publication of CN117369867A publication Critical patent/CN117369867A/zh
Application granted granted Critical
Publication of CN117369867B publication Critical patent/CN117369867B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/73Program documentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/42Syntactic analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Library & Information Science (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

本发明公开一种面向指令集及工具链自动生成的指令集架构模型描述方法,步骤包括:步骤S1:根据指令集体系结构构建指令集架构模型中的指令集架构结构模型;步骤S2:设置指令格式中编码字段分布,以用于分别定位局部编码字段、功能单元以及指令操作语义,即在指令集语义文件设置指令语义项,构建形成指令集架构模型中的指令集架构行为模型;步骤S3:依次为所有指令确定指令格式类型和编码;步骤S4:根据指令集架构模型生成指令集架构汇编器所需的汇编器描述模型;步骤S5:根据指令集架构模型生成指令集架构模拟器所需的模拟器描述模型。本发明能够灵活的描述指令集架构模型,快速、自动化生成指令集及工具链所需的描述模型。

Description

面向指令集及工具链自动生成的指令集架构模型描述方法
技术领域
本发明涉及指令集编码技术领域,尤其涉及一种面向指令集及工具链自动生成的指令集架构模型描述方法。
背景技术
处理器的性能在很大程度上依赖于其指令集架构,因此,指令集编码是处理器体系结构设计过程中非常关键和具有挑战性的核心任务之一。指令集编码是一个循环迭代的过程,需要不断调整和优化,以满足体系结构和编译效率的要求。其中指令格式是指令集的核心内容,指令集的指令格式设计需要权衡代码密度和硬件译码方便性两个因素。复杂的指令格式可以表达更丰富的并行性,但更难以解码。相反,简单的指令格式易于在硬件中实现,但不能实现更高的代码密度,这限制了指令级并行的能力。如何在代码密度和硬件译码这两个因素之间取得平衡是指令集设计的关键。
在指令集评估和验证阶段,需要从编译效率、吞吐量、代码密度、指令空间利用率、功耗和面积、硬件实现复杂度等方面对指令集进行考量。为构建形成指令集架构模型,需要通过指令集架构描述语言对目标处理器的指令集架构进行建模。指令集体系结构模型即是通过使用体系结构描述语言对指令集体系结构进行建模,使得可以快速生成工具链来评估指令集的当前版本。进而指令集体系结构模型可以由该语言的编译器自动生成为硬件描述语言源代码或软件工具链的高级语言源代码。然而,目前体系结构描述方法中通常都是使用硬编码的方式来描述指令集体系结构的指令格式和编码,该类方式不仅耗时、可靠性差,灵活性也较差,一旦需要进行指令的添加、删除或指令格式的调整,体系结构描述语言描述文件就需要大量的重新修改,进而影响指令集迭代的进程,不利于指令集的自动化生成。
发明内容
本发明要解决的技术问题就在于:针对现有技术存在的技术问题,本发明提供一种实现方法简单、效率高且灵活性强的面向指令集及工具链自动生成的指令集架构模型描述方法,能够灵活的描述指令集架构模型,快速、自动化生成指令集及工具链所需的描述模型。
为解决上述技术问题,本发明提出的技术方案为:
一种面向指令集及工具链自动生成的指令集架构模型描述方法,步骤包括:
步骤S1:根据指令集体系结构构建指令集架构结构模型;
步骤S2:设置指令格式中编码字段分布,以用于分别定位局部编码字段、功能单元以及指令操作语义,即在指令集语义文件设置指令语义项,构建形成指令集架构模型中的指令集架构行为模型;
步骤S3:依次为所有指令确定指令格式类型和编码,并配置指令格式中每个编码字段为唯一;
步骤S4:根据所述指令集架构模型中指令集架构结构模型、指令集架构行为模型生成指令集架构汇编器所需的汇编器描述模型,所述汇编器描述模型包括所述指令集架构结构模型以及用于识别汇编语句包含的指令名称的InstRegex部分、用于指定指令信息的InstuctionItem部分;
步骤S5:根据所述指令集架构模型中指令集架构结构模型、指令语义文件生成指令集架构模拟器所需的模拟器描述模型,所述模拟器描述模型包括指定信息identifier部分、用于声明指令集指令访问的所有存储器资源,的存储器描述部分以及指令集架构结构模型中寄存器资源声明RegisterStatement部分。
进一步的,所述指令集架构结构模型包括用于声明指令集预期的指令长度的InstructionLen部分、用于声明指令格式中的全局编码字段的GlobalField部分、用于声明局部编码字段的Field部分、用于声明生成的指令集中的指令格式的字段排列顺序的GlobalFieldOrder部分、用于声明汇编字段语法的SyntaxStatement部分、用于将语法名匹配到的内容解析成二进制码的matchRule部分、用于声明全局编码字段的映射规则的GlobalFieldmatchRule部分以及用于声明指令集包含的寄存器资源的RegisterStatement部分。
进一步的,所述GlobalField部分包括多个全局编码字段二元组,每一个全局编码字段二元组包括字段名称、字段长度两部分,所述Field部分包括多个局部编码字段二元组,每一个局部编码字段二元组包括字段名称、字段长度两部分,所述GlobalFieldOrder部分中字段包括来源于GlobalField中的全局编码字段、来源于Field中的局部编码字段以及特征字段ID,所述特征字段ID用于标识每一条指令的特征字段;所述SyntaxStatement部分包括多个汇编字段语法二元组,每一个汇编字段语法二元组包括汇编字段名称、汇编字段语法描述两部分,所述matchRule部分包括多个匹配规则块,每个所述匹配规则块包括指定匹配规则名称、制定匹配类型以及多个匹配内容二元组;所述GlobalFieldmatchRule部分包括多个全局编码字段映射二元组,每一个全局编码字段映射二元组包括全局编码字段名称、匹配内容两部分,所述RegisterStatement部分中包括指定寄存器类型、指定寄存器位宽、指定寄存器组数目以及指定向量宽度。
进一步的,所述指令集架构行为模型包括多个元组,每个元组包括用于声明功能单元的FU部分、用于声明局部编码字段集合的FieldSet部分、用于声明汇编器相关信息的asm部分、用于声明模拟器相关信息的sim部分、用于声明默认的指令名称集合的default部分以及用于声明预期的指令数量的number部分。
进一步的,所述asm部分包括用于指定汇编指令语法模板的asmSyntax和用于指定匹配规则名称,局部编码字段源和索引值的mapping,所述sim部分包括多个mapping元组,每个元组包括指定FieldSet中的一个局部编码字段二进制码的映射规则。
进一步的,所述步骤S3中设定指令格式中编码字段分布为:{全局编码字段集,局部编码字段集,编码字段OP,编码字段U,编码字段T},其中,编码字段T与局部编码字段集一一对应以用于定位LFS;编码字段U与功能单元一一对应以用于定位功能单元;编码字段OP与指令语义一一对应以用于定位指令操作语义。
进一步的,所述步骤S5中InstRegex部分包括所有指令名称的正则语法表示,所述InstuctionItem部分的每一项元组包括用于指定指令名称的InstName、用于指定指令编码长度的bitLen、用于指定指令名称通过InstRegex识别出来的内容的regexStr、用于指定指令的汇编语法的syntax、用于指定字段信息的sequences。
进一步的,所述identifier部分中每一个元组包括用于识别一条指令是哪个功能单元哪条指令什么指令格式的ID、用于指定指令名称的InstName、用于指定功能单元的fucntionUnit、用于指定指令长度的instLen以及用于指定字段信息的sequence,所述sequences中每一个元组分别用于指定字段的二进制码长度、编码字段名称、二进制码的属性和映射实例。
一种计算机装置,包括处理器以及存储器,所述存储器用于存储计算机程序,所述处理器用于执行所述计算机程序以执行如上述方法。
一种存储有计算机程序的计算机可读存储介质,所述计算机程序被处理器执行时实现如上述方法。
与现有技术相比,本发明的优点在于:
1、本发明通过构建指令集架构结构模型与指令集架构行为模型,形成指令集架构模型,构建指令集架构行为模型时依次设置指令格式中编码字段分布、为所有指令确定指令格式类型和编码,最后结合指令集架构模型分别构建汇编器描述模型与模拟器描述模型,能够有效的对目标处理器的指令集架构进行编程和建模,实现指令集架构模型的表示、描述,快速、自动化生成指令集及工具链所需的描述模型,从而使得可以利用该生成的汇编器描述模型、模拟器描述模型实现指令集的自动化生成,大大提高指令集生成的效率以及可靠性。
2、本发明通过实现面向指令集及工具链自动生成的指令集架构模型描述方法,不仅可以灵活适用于各类不同数目的功能单元、寄存器和指令种类的指令集架构设计中,当需要进行指令的添加、删除或指令格式的调整时,仅需要进行相应的指令信息修改,即可以重新生成所需的新的汇编器描述模型与模拟器描述模型,而无需如传统描述方式需要大量修改体系结构描述语言描述文件,可以动态的适应指令集架构的调整和扩展。
附图说明
图1是本实施例面向指令集及工具链自动生成的指令集架构模型描述方法的实现流程示意图。
图2是在具体应用实施例中指令集架构结构模型中matchRule匹配规则块组成结构示例示意图。
图3是在具体应用实施例中指令集架构结构模型中的RegisterStatement组成结构示例示意图。
图4是在具体应用实施例的指令集架构行为模型表示示例结构示例示意图。
具体实施方式
以下结合说明书附图和具体优选的实施例对本发明作进一步描述,但并不因此而限制本发明的保护范围。
如图1所示,本实施例面向指令集及工具链自动生成的指令集架构模型描述方法的步骤包括:
步骤S1:根据指令集体系结构构建指令集架构模型中的指令集架构结构模型;
步骤S2:设置指令格式中编码字段分布,以用于分别定位局部编码字段、功能单元以及指令操作语义,即在指令集语义文件添加指令语义项,构建形成指令集架构模型中的指令集架构行为模型,由指令集架构行为模型与指令集架构结构模型构成指令集架构模型;
步骤S3:依次为所有指令确定指令格式类型和编码,并配置指令格式中每个字段为唯一;
步骤S4:根据指令集架构模型中指令集架构结构模型、指令集架构行为模型生成指令集架构汇编器所需的汇编器描述模型,汇编器描述模型包括指令集架构结构模型以及用于识别汇编语句包含的指令名称的InstRegex部分、用于指定指令信息的InstuctionItem部分,其中InstructionItem每项使用指令集架构行为模型构建得到。
步骤S5:根据指令集架构模型中指令集架构结构模型、指令语义文件生成指令集架构模拟器所需的模拟器描述模型,模拟器描述模型包括指定信息identifier部分、存储器描述部分以及指令集架构结构模型中寄存器资源声明RegisterStatement部分。
本实施例通过首先构建指令集架构结构模型与指令集架构行为模型,形成指令集架构模型,构建指令集架构行为模型时依次设置指令格式中编码字段分布、为所有指令确定指令格式类型和编码,最后结合指令集架构模型分别构建汇编器描述模型与模拟器描述模型,能够有效的对目标处理器的指令集架构进行编程和建模,实现指令集架构模型的表示、描述,能够根据设计目标需求快速、自动化生成指令集及工具链软件所需的描述模型,从而使得可以利用该生成的汇编器描述模型、模拟器描述模型实现指令集的自动化生成,大大提高指令集生成的效率以及可靠性,与传统的手工设计指令集编码相比,所生成的指令编码更规整、指令编码空间更大。同时通过依次为所有指令确定指令格式类型和编码,并配置指令格式中每个字段为唯一,还可以降低指令集译码的复杂度,使得在代码密度和硬件译码方便性之间取得平衡。
按照本实施例上述指令集架构模型描述方法,不仅可以灵活适用于各类不同数目的功能单元、寄存器和指令种类的指令集架构设计中,当需要进行指令的添加、删除或指令格式的调整时,仅需要进行相应的指令信息修改,即可以重新生成所需的新的汇编器描述模型与模拟器描述模型,而无需如传统描述方式需要大量修改体系结构描述语言描述文件,可以动态的适应指令集架构的调整和扩展。
本实施例中,指令集架构结构模型具体包括用于声明指令集预期的指令长度的InstructionLen部分、用于声明指令格式中的全局编码字段的GlobalField部分、用于声明局部编码字段的Field部分、用于声明生成的指令集中的指令格式的字段排列顺序的GlobalFieldOrder部分、用于声明汇编字段语法的SyntaxStatement部分、用于将语法名匹配到的内容解析成二进制码的matchRule部分、用于声明全局编码字段的映射规则的GlobalFieldmatchRule部分以及用于声明指令集包含的寄存器资源的RegisterStatement部分。
本实施例中,GlobalField部分具体包括多个全局编码字段二元组,每一个全局编码字段二元组包括字段名称、字段长度两部分,Field部分包括多个局部编码字段二元组,每一个局部编码字段二元组包括字段名称、字段长度两部分,GlobalFieldOrder部分中字段包括来源于GlobalField中的全局编码字段、来源于Field中的局部编码字段以及特征字段ID,特征字段ID用于标识每一条指令的特征字段;特征字段ID的编码具体是根据指令的局部编码字段集的种类为每条指令自动生成或指定。
本实施例中,SyntaxStatement部分具体包括多个汇编字段语法二元组,每一个汇编字段语法二元组包括汇编字段名称、汇编字段语法描述两部分。matchRule部分。matchRule部分具体包括多个匹配规则块,以用于将语法名匹配到的内容(设为Content)解析成二进制码(返回值),每个匹配规则块包括指定匹配规则名称、制定匹配类型以及多个匹配内容二元组。
在具体应用实施例中,匹配规则块具体配置有三种类型:
匹配规则块类型1:由ruleName、matchPattern和matchItem构成。其中ruleName指定匹配规则名称;matchPattern指定匹配类型为"1:1",含义是内容完全匹配;matchItem由多个匹配内容二元组{“内容i”,“二进制i”}构成。若Content和"内容i"完全相等,返回"二进制i"。
匹配规则块类型2:由ruleName、matchPattern和matchItem构成。其中ruleName指定匹配规则名称;matchPattern指定匹配类型为"match",含义是正则语法匹配;matchItem由多个匹配内容二元组{“Regex语法i”,“二进制i”}构成。若Content和"Regex语法i"正则语法匹配,返回"二进制i"。
匹配规则块类型3:由ruleName、matchPattern、ParseRegex、ParseLeftBracketIndex、ParseTo和BitLen构成。其中ruleName指定匹配规则名称;matchPattern指定匹配类型为"parse",含义是解析匹配;ParseRegex指定解析语法;ParseLeftBracketIndex指定解析第几个内容块;ParseTo指定解析后的内容如何处理;BitLen指定解析生成的二进制码修正为多长。将Content通过ParseRegex进行解析,提取第ParseLeftBracketIndex个内容块Content2,将Content2按照ParseTo方式处理得到二进制码,将二进制码修正为BitLen长度,修正方式是高位补0,返回修正后的二进制码。
在具体应用实施例中如图2所示,给出了一个指令集架构结构模型中的matchRule匹配规则块组成结构示例,其中示出了三个matchRule匹配块,其matchPattern匹配类型为分别"1:1"、”match”和”parse”。其中“1:1”对应为完全匹配,即content的字符串完全等于matchItem中左边一项,才返回对应的二进制码。“match”对应为符合匹配,即content的字符串符合matchItem中左边一项,就返回对应的二进制码。“parse”对应为解析匹配,即提取content的字符串的子字符串,按照ParseTo解析,解析生成的二进制码对齐为BitLen长度,并返回处理后的结果。
若content=“VLR”,ruleName=“CR”,则返回"000000"。
其中content字符串为“VLR”,ruleName=“CR”的匹配类型为“1:1”完全匹配,matchItem中“VST”:“000000”的左边一项与content内容完全相等,所以返回“000000”。
若content="*++AR[OR1]",ruleName=“AR[OR]_TO_OR”,则返回"0001"。
其中content字符串为“*++AR[OR1]”,ruleName=“AR[OR]_TO_OR”的匹配类型为“match”符合匹配。“.*\\[OR1\\].*”:”0001”的左边一项与content内容符合匹配。所以返回“0001”。这里的”.*”表示匹配任意数量个任意字符,“\\[”表示匹配一个左中括号,“OR1”表示匹配字符串“OR1”,“\\]”表示匹配一个右中括号,所以字符串“*++AR[OR1]”和正则表达式规则“.*\\[OR1\\].*”是相符合的,所以最终返回“0001”。
若content="++AR[0xFA]",ruleName=“AR[IMM8]_TO_UCST8”,则返回"11111010"。其中content字符串为“++AR[0xFA]”,ruleName=“AR[IMM8]_TO_UCST8”的匹配类型为“parse”解析匹配。其中“ParseRegex”是指该规则的正则表达式规则。“ParseLeftBracketIndex”是指提取第几个括号内容,“ParseLeftBracketIndex”:1,表示提取第一个括号内的字符串。“ParseTo”表示如何处理提取出来的字符串,这里“ParseTo”:“IMM”表示将提取出来的字符串作为立即数处理。“BitLen”表示处理后生成的二进制码对齐的长度,这里“BitLen”:8表示将处理得到的二进制码对齐到8位宽。这里content="++AR[0xFA]"与“ParseRegex”:“.*\\[(.*)\\]”匹配,第一个括号内提取的字符串位0xFA,这个字符串经过立即数处理然后经过对齐操作后得到“11111010”,所以最终返回“11111010”。
本实施例中,GlobalFieldmatchRule部分具体包括多个全局编码字段映射二元组,以用于声明全局编码字段的映射规则。每一个全局编码字段映射二元组包括全局编码字段名称、匹配内容两部分,根据相对应的语法名称完成全局编码字段的生成。
本实施例中,RegisterStatement部分用于声明指令集包含的寄存器资源,包括多个元组的列表,其中每一个元组包含type、name、bit、number、groupNumber五个部分,用于分别指定寄存器类型、指定寄存器位宽、指定寄存器组数目以及指定向量宽度。其中type指定寄存器类型,具体有三种类型,“R”表示单个寄存器,“R1D”表示1维寄存器(标量寄存器),“R2D”表示2维寄存器(向量寄存器),name指定寄存器名称,bit指定寄存器位宽,number指定寄存器组数目,groupNumber指定向量宽度。
在具体应用实施例中,如图3所示,给出了一个指令集架构结构模型中的RegisterStatement组成结构示例,其中示出了三类寄存器资源描述:
第一类为单个寄存器,寄存器名称分别为"VST","VECR","SVR","VCR","SMR","VLR","SST","SFCR1","SFCR2","SCR","SAMR","STPR","SECR","IER","IFR","ICR","IRRL",
"ISTPL","EER","EFR","ECR","ERRL","ESTPL","CGCR","CVCCR","BRREG","IRRH","ISTPH","ERRH","ESTPH",寄存器位宽为32位。
第二类为1维寄存器(标量寄存器),寄存器名称分别为"R",寄存器组数目为64,寄存器位宽为32位。
第三类为2维寄存器(向量寄存器),寄存器名称分别为"VR",寄存器组数目为64,寄存器向量宽度为16,寄存器位宽为32位。
本实施例中,指令集架构行为模型具体包括多个元组,每个元组包括用于声明功能单元的FU部分、用于声明局部编码字段集合的FieldSet部分、用于声明汇编器相关信息的asm部分、用于声明模拟器相关信息的sim部分、用于声明默认的指令名称集合的default部分以及用于声明预期的指令数量的number部分。FieldSet部分使用的局部编码字段需在步骤1中的指令集架构结构模型中进行声明。
在具体应用实施例中,若上述number不超过default指定的指令名称集合大小,则使用default中的前number条指令名称。若number大于default大小,则超出default大小的指令名称会默认生成为指令名FU_{序号}。
本实施例中,asm部分包括用于指定汇编指令语法模板的asmSyntax和用于指定匹配规则名称、局部编码字段源和索引值的mapping。如asmSyntax:"{P}{REG}?{InstName}{VR},{AR[OR]}",其中语法模板中使用的字段需在指令集架构结构模型中的SyntaxStatement中进行了声明。mapping包含多个元组,其中每个元组包含matchRule、from、fromIndex字段,分别用于指定匹配规则名称,局部编码字段源和索引值。mapping中的每一个元组用于指定FieldSet中的一个局部编码字段的映射规则,其中映射规则元组的顺序和FieldSet中的局部编码字段顺序一致。
本实施例中,sim部分具体包括多个mapping元组,其中每个元组包含attribute、to,分别用于指定字段的属性和映射实例。mapping中的每一个元组用于指定FieldSet中的一个局部编码字段二进制码的映射规则,映射规则元组的顺序和FieldSet中的局部编码字段顺序一致。
本实施例中,步骤S2中指令集语义文件包含若干指令语义项,每个指令语义项是由三部分按顺序组成:指令名、变量声明和指令语义,其中指令名表示指令的助记符,变量声明用于声明一组变量用于后续指令语义使用,指令语义是指当前指令名的实际指令语义。
在具体应用实施例中,如图4所示,给出了一个指令集架构模型表示方法中的指令集架构行为模型表示示例。其中示出中,功能单元为"VLDST0",局部编码字段集为:["AR0_7","MODE3","OR","VR"],汇编语法为:"{P}{REG}?{InstName}{VR},{AR[OR]}"。mapping给出局部编码字段集中4个字段的映射规则:字段AR0_7由asmSyntax中第fromIndex个{AR[OR]}生成,生成规则为AR[OR]_TO_AR;字段MODE3由asmSyntax中第fromIndex个{AR[OR]}生成,生成规则为AR[OR]_TO_MODE;字段OR由asmSyntax中第fromIndex个{AR[OR]}生成,生成规则为AR[OR]_TO_OR;字段VR由asmSyntax中第fromIndex个{VR}生成,生成规则为VR。sim中的mapping给出局部编码字段集中4个字段在模拟器中的二进制码映射规则:AR0_7生成的二进制码,类型是register_AR,在指令语义文件中利用实例名AR来使用;MODE3生成的二进制码,类型是IMM,在指令语义文件中利用实例名MODE来使用;OR生成的二进制码,类型是register_OR,在指令语义文件中利用实例名SRC1来使用。VR生成的二进制码,类型是register_VR,在指令语义文件中利用实例名DST来使用。default指定了指令的默认名称分别为:
"VSTH","VSTW","VSTDW","VSTDWM16","VSTDW0M16","VSTDW0M32"。
number指定该类指令数目为6。
在具体应用实施例中,一个指令语义项的示例可以为第一部分是指令名助记符InstName,声明4个变量AR、MODE、SRC1和DST,最后对应该指令的实际指令语义。
本实施例步骤S3中具体设定指令格式中编码字段分布为:{全局编码字段集,局部编码字段集,编码字段OP,编码字段U,编码字段T},其中,编码字段T与局部编码字段集一一对应以用于定位LFS;编码字段U与功能单元一一对应以用于定位功能单元;编码字段OP与指令语义一一对应以用于定位指令操作语义。传统方案中的指令格式中用于定位指令格式、指令对应功能单元和指令OP码的编码字段不唯一,且存在多个编码字段来确认指令格式、功能单元或OP码,会导致译码逻辑复杂。汇编器和模拟器的实际使用需要知晓指令格式和编码,本实施例通过由{全局编码字段集,局部编码字段集,编码字段OP,编码字段U,编码字段T}组成指令格式,每个编码字段的功能明确不混用,可以降低硬件译码器难度。
本实施例步骤S4中,具体InstructionItem每项的sequences由指令集架构行为模型的mapping构建得到,以在sequences的每一项增设2条属性:len和note,其中len是指字段长度,note只指默认编码。
本实施例步骤S5中根据指令语义文件设置映射实例,例如设置“to”映射实例与指令语义文件中指令语义项的变量声明一一对应。InstRegex部分具体包括所有指令名称的正则语法表示,以用于快速精准识别出汇编语句包含的具体指令名称。InstuctionItem部分具体包括多个元组,每一项元组包括用于指定指令名称的InstName、用于指定指令编码长度的bitLen、用于指定指令名称通过InstRegex识别出来的内容的regexStr、用于指定指令的汇编语法的syntax、用于指定字段信息的sequences。sequences由多个元组组成,每一个元组包括from、fromIndex、len、matchRule、note,分别用于指定字段来源、索引号、字段长度、匹配规则和默认编码。
本实施例中,identifier部分identifier由多个元组组成,每一个元组包括用于识别一条指令是哪个功能单元哪条指令什么指令格式的ID、用于指定指令名称的InstName、用于指定功能单元的fucntionUnit、用于指定指令长度的instLen以及用于指定字段信息的sequence,sequences由多个元组组成,每一个元组包括len、name、attribute、to,分别用于指定字段的二进制码长度、编码字段名称、二进制码的属性和映射实例。
本实施例中,存储器描述用于声明指令集指令访问的所有存储器资源,由包含多个元组的列表构成。其中每一个元组包含存储器名称、起始地址、存储器大小和存储粒度四个部分。其中,存储器名称指定所描述存储器的存储器名称;起始地址指定所描述存储器的起始地址;存储器大小指定所描述存储器的存储器大小;存储粒度指定所描述存储器的存储粒度。
本发明能够根据需求设计目标快速、自动化生成指令集架构汇编器所需要的汇编器描述模型,以及生成指令集架构模拟器所需要的模拟器描述模型,所生成的汇编器描述模型和模拟器描述模型能够用于自动生成指令集架构对应的汇编器和模拟器工具链软件,进而有效提高工具链的开发效率,还能够动态的适应指令集架构的调整和扩展。
本实施例进一步提供存储有计算机程序的计算机可读存储介质,所述计算机程序被处理器执行时实现如上述方法。
本领域内的技术人员应明白,本申请的上述实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可读存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
本实施例还提供一种计算机装置,包括处理器以及存储器,存储器用于存储计算机程序,处理器用于执行计算机程序以执行如上述方法。
可以理解的是,本实施例上述方法可以由单个设备执行,例如一台计算机或服务器等,也可以应用于分布式场景下由多台设备相互配合来完成,在分布式场景的情况下,多台设备中的一台设备可以只执行本实施例上述方法中的某一个或多个步骤,多台设备之间进行交互以完成上述方法。处理器可以采用通用的CPU、微处理器、应用专用集成电路、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本实施例上述方法。存储器可以采用只读存储器ROM、随机存取存储器RAM、静态存储设备以及动态存储设备等形式实现。存储器可以存储操作系统和其他应用程序,在通过软件或者固件来实现本实施例上述方法时,相关的程序代码保存在存储器中,并由处理器来调用执行。
上述只是本发明的较佳实施例,并非对本发明作任何形式上的限制。虽然本发明已以较佳实施例揭露如上,然而并非用以限定本发明。因此,凡是未脱离本发明技术方案的内容,依据本发明技术实质对以上实施例所做的任何简单修改、等同变化及修饰,均应落在本发明技术方案保护的范围内。

Claims (10)

1.一种面向指令集及工具链自动生成的指令集架构模型描述方法,其特征在于,步骤包括:
步骤S1:根据指令集体系结构构建指令集架构模型中的指令集架构结构模型;
步骤S2:设置指令格式中编码字段分布,以用于分别定位局部编码字段、功能单元以及指令操作语义,即在指令集语义文件设置指令语义项,构建形成指令集架构模型中的指令集架构行为模型;
步骤S3:依次为所有指令确定指令格式类型和编码,并配置指令格式中每个编码字段为唯一;
步骤S4:根据所述指令集架构模型中指令集架构结构模型、指令集架构行为模型生成指令集架构汇编器所需的汇编器描述模型,所述汇编器描述模型包括所述指令集架构结构模型以及用于识别汇编语句包含的指令名称的InstRegex部分、用于指定指令信息的InstuctionItem部分;
步骤S5:根据所述指令集架构模型中指令集架构结构模型、指令语义文件生成指令集架构模拟器所需的模拟器描述模型,所述模拟器描述模型包括指定信息identifier部分、用于声明指令集指令访问的所有存储器资源,的存储器描述部分以及指令集架构结构模型中寄存器资源声明RegisterStatement部分。
2.根据权利要求1所述的面向指令集及工具链自动生成的指令集架构模型描述方法,其特征在于,所述指令集架构结构模型包括用于声明指令集预期的指令长度的InstructionLen部分、用于声明指令格式中的全局编码字段的GlobalField部分、用于声明局部编码字段的Field部分、用于声明生成的指令集中的指令格式的字段排列顺序的GlobalFieldOrder部分、用于声明汇编字段语法的SyntaxStatement部分、用于将语法名匹配到的内容解析成二进制码的matchRule部分、用于声明全局编码字段的映射规则的GlobalFieldmatchRule部分以及用于声明指令集包含的寄存器资源的RegisterStatement部分。
3.根据权利要求2所述的面向指令集及工具链自动生成的指令集架构模型描述方法,其特征在于,所述GlobalField部分包括多个全局编码字段二元组,每一个全局编码字段二元组包括字段名称、字段长度两部分,所述Field部分包括多个局部编码字段二元组,每一个局部编码字段二元组包括字段名称、字段长度两部分,所述GlobalFieldOrder部分中字段包括来源于GlobalField中的全局编码字段、来源于Field中的局部编码字段以及特征字段ID,所述特征字段ID用于标识每一条指令的特征字段;所述SyntaxStatement部分包括多个汇编字段语法二元组,每一个汇编字段语法二元组包括汇编字段名称、汇编字段语法描述两部分,所述matchRule部分包括多个匹配规则块,每个所述匹配规则块包括指定匹配规则名称、制定匹配类型以及多个匹配内容二元组;所述GlobalFieldmatchRule部分包括多个全局编码字段映射二元组,每一个全局编码字段映射二元组包括全局编码字段名称、匹配内容两部分,所述RegisterStatement部分中包括指定寄存器类型、指定寄存器位宽、指定寄存器组数目以及指定向量宽度。
4.根据权利要求1所述的面向指令集及工具链自动生成的指令集架构模型描述方法,其特征在于,所述指令集架构行为模型包括多个元组,每个元组包括用于声明功能单元的FU部分、用于声明局部编码字段集合的FieldSet部分、用于声明汇编器相关信息的asm部分、用于声明模拟器相关信息的sim部分、用于声明默认的指令名称集合的default部分以及用于声明预期的指令数量的number部分。
5.根据权利要求4所述的面向指令集及工具链自动生成的指令集架构模型描述方法,其特征在于,所述asm部分包括用于指定汇编指令语法模板的asmSyntax和用于指定匹配规则名称,局部编码字段源和索引值的mapping,所述sim部分包括多个mapping元组,每个元组包括指定FieldSet中的一个局部编码字段二进制码的映射规则。
6.根据权利要求1~5中任意一项所述的面向指令集及工具链自动生成的指令集架构模型描述方法,其特征在于,所述步骤S3中设定指令格式中编码字段分布为:{全局编码字段集,局部编码字段集,编码字段OP,编码字段U,编码字段T},其中,编码字段T与局部编码字段集一一对应以用于定位LFS;编码字段U与功能单元一一对应以用于定位功能单元;编码字段OP与指令语义一一对应以用于定位指令操作语义。
7.根据权利要求1~5中任意一项所述的面向指令集及工具链自动生成的指令集架构模型描述方法,其特征在于,所述步骤S5中InstRegex部分包括所有指令名称的正则语法表示,所述InstuctionItem部分的每一项元组包括用于指定指令名称的InstName、用于指定指令编码长度的bitLen、用于指定指令名称通过InstRegex识别出来的内容的regexStr、用于指定指令的汇编语法的syntax、用于指定字段信息的sequences。
8.根据权利要求1~5中任意一项所述的面向指令集及工具链自动生成的指令集架构模型描述方法,其特征在于,所述identifier部分中每一个元组包括用于识别一条指令是哪个功能单元哪条指令什么指令格式的ID、用于指定指令名称的InstName、用于指定功能单元的fucntionUnit、用于指定指令长度的instLen以及用于指定字段信息的sequence,所述sequences中每一个元组分别用于指定字段的二进制码长度、编码字段名称、二进制码的属性和映射实例。
9.一种计算机装置,包括处理器以及存储器,所述存储器用于存储计算机程序,其特征在于,所述处理器用于执行所述计算机程序以执行如权利要求1~8中任意一项所述方法。
10.一种存储有计算机程序的计算机可读存储介质,其特征在于,所述计算机程序被处理器执行时实现如权利要求1~8中任意一项所述的方法。
CN202311279510.2A 2023-09-28 2023-09-28 面向指令集及工具链自动生成的指令集架构模型描述方法 Active CN117369867B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311279510.2A CN117369867B (zh) 2023-09-28 2023-09-28 面向指令集及工具链自动生成的指令集架构模型描述方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311279510.2A CN117369867B (zh) 2023-09-28 2023-09-28 面向指令集及工具链自动生成的指令集架构模型描述方法

Publications (2)

Publication Number Publication Date
CN117369867A true CN117369867A (zh) 2024-01-09
CN117369867B CN117369867B (zh) 2024-07-09

Family

ID=89390261

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311279510.2A Active CN117369867B (zh) 2023-09-28 2023-09-28 面向指令集及工具链自动生成的指令集架构模型描述方法

Country Status (1)

Country Link
CN (1) CN117369867B (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100115498A1 (en) * 1999-11-30 2010-05-06 Stmicroelectronics Limited Adaptive production of assembler
CN103136162A (zh) * 2013-03-07 2013-06-05 太原理工大学 Asic片内云架构及基于该架构的设计方法
CN107688704A (zh) * 2017-08-25 2018-02-13 金陵科技学院 基于Petri网模型的ASIP行为逻辑综合方法
CN113515348A (zh) * 2021-07-16 2021-10-19 江苏师范大学 一种基于时机动作流的模拟器建模方法及装置
CN115328551A (zh) * 2022-08-01 2022-11-11 中国人民解放军国防科技大学 一种基于算子的微处理器架构设计方法及系统

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100115498A1 (en) * 1999-11-30 2010-05-06 Stmicroelectronics Limited Adaptive production of assembler
CN103136162A (zh) * 2013-03-07 2013-06-05 太原理工大学 Asic片内云架构及基于该架构的设计方法
CN107688704A (zh) * 2017-08-25 2018-02-13 金陵科技学院 基于Petri网模型的ASIP行为逻辑综合方法
CN113515348A (zh) * 2021-07-16 2021-10-19 江苏师范大学 一种基于时机动作流的模拟器建模方法及装置
CN115328551A (zh) * 2022-08-01 2022-11-11 中国人民解放军国防科技大学 一种基于算子的微处理器架构设计方法及系统

Also Published As

Publication number Publication date
CN117369867B (zh) 2024-07-09

Similar Documents

Publication Publication Date Title
US9239710B2 (en) Programming language transformations with abstract syntax tree extensions
CN109670053B (zh) 数据对象映射方法、装置、设备和计算机可读存储介质
US6954747B1 (en) Methods for comparing versions of a program
CN100462920C (zh) 为优化的程序生成展开信息
US7657878B2 (en) Compiler, method of compiling and program development tool
US7917899B2 (en) Program development apparatus, method for developing a program, and a computer program product for executing an application for a program development apparatus
US9164744B2 (en) Method and system for program building
US20080091923A1 (en) Register-based instruction optimization for facilitating efficient emulation of an instruction stream
US20050065953A1 (en) System and method for changing defined elements in a previously compiled program using a description file
WO2021258692A1 (zh) 一种多芯片兼容的编译方法和装置
US6684394B1 (en) Relocation format for linking with relocation instructions containing operations for combining section data
CN105204837B (zh) 一种逻辑编程的实现方法和装置
US6859932B1 (en) Relocation format for linking
Juričić Detecting source code similarity using low-level languages
US6704928B1 (en) Relocation format for linking
CN117369867B (zh) 面向指令集及工具链自动生成的指令集架构模型描述方法
CN114791811B (zh) 一种基于元函数模板的汇编器实现方法
EP2535813B1 (en) Method and device for generating an alert during an analysis of performance of a computer application
CN111126012B (zh) 定制生成表达式方法及装置
WO2012137390A1 (ja) 並列化設計支援システム、プログラム、および方法
US20040045018A1 (en) Using address space bridge in postoptimizer to route indirect calls at runtime
CN112799942B (zh) 基于Keil C51的软件源码和目标码覆盖率分析方法和系统
Riddle et al. Tools for software system construction
CN117519665B (zh) 一种模型驱动的汇编器自动生成方法及装置
CN113791767B (zh) 一种字节码修改方法及装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant