CN117435248A - 一种自适应指令集编码自动生成方法及装置 - Google Patents
一种自适应指令集编码自动生成方法及装置 Download PDFInfo
- Publication number
- CN117435248A CN117435248A CN202311282780.9A CN202311282780A CN117435248A CN 117435248 A CN117435248 A CN 117435248A CN 202311282780 A CN202311282780 A CN 202311282780A CN 117435248 A CN117435248 A CN 117435248A
- Authority
- CN
- China
- Prior art keywords
- instruction
- code
- field
- coding
- num
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 71
- 230000003044 adaptive effect Effects 0.000 title claims description 12
- 238000002591 computed tomography Methods 0.000 claims description 57
- 239000013598 vector Substances 0.000 claims description 32
- 238000004590 computer program Methods 0.000 claims description 14
- 230000006870 function Effects 0.000 claims description 14
- 101100517651 Caenorhabditis elegans num-1 gene Proteins 0.000 claims description 6
- 238000003825 pressing Methods 0.000 claims description 6
- 238000001514 detection method Methods 0.000 claims description 5
- 238000013461 design Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 7
- 238000003860 storage Methods 0.000 description 6
- 238000012545 processing Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 101100534223 Caenorhabditis elegans src-1 gene Proteins 0.000 description 1
- 101100534229 Caenorhabditis elegans src-2 gene Proteins 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000012804 iterative process Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000013178 mathematical model Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000013138 pruning Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
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
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本发明公开一种自适应指令集编码自动生成方法及装置,该方法的步骤包括:配置指令集的指令格式中的字段类别、字段排列顺序以及指令需求模型,所述字段类别包括全局编码字段集、局部编码字段集以及特征编码字段集;判断指令需求模型中定义的指令格式的指令类型;如果为定长指令格式,采用定长指令格式编码生成方法生成指令集的编码;如果变长指令格式,采用基于编码二叉树的变长编码生成方法生成指令集的编码;如果指令需求模型中存在预设关键字,则使用基于优先队列的变长编码生成方法生成指令集的编码。本发明具有编码效率高、灵活性强,能够自适应实现指令集编码的自动生成,还能够降低后续解码的复杂度等优点。
Description
技术领域
本发明涉及指令集编码技术领域,尤其涉及一种自适应指令集编码自动生成方法及装置。
背景技术
处理器的性能在很大程度上依赖于其指令集的精心设计,因此,指令集的编码是处理器体系结构设计过程中非常关键和具有挑战性的核心任务之一。指令集编码是一个循环迭代的过程,需要不断调整和优化,以满足体系结构和编译效率的要求。指令格式设计是指令集研究的核心内容,而指令集的指令格式设计会涉及到代码密度和硬件译码方便性两方面的问题。复杂的指令格式可以表达更丰富的并行性,但更难以解码。相反,简单的指令格式易于在硬件中实现,但不能实现更高的代码密度,这限制了指令级并行的潜力。因而需要在代码密度和硬件译码方便性之间进行权衡,如何在这两个因素之间取得平衡是指令集编码的关键。
现有技术中对指令集编码进行描述时都是采取硬编码的方式,同时采用手工设计指令集编码,在指令集的编码过程中通常会存在以下问题:
1、编码效率低。手工设计指令集编码的效率低,且指令通常是使用较长的操作码位宽来表示更多的操作码类型以容纳更多的操作码,而实际的程序通常只使用其中的一些操作码,还会导致操作码位宽的浪费。对于不同数目的功能单元、寄存器和指令种类的指令集架构中指令集编码,或者当指令集架构发生调整或扩展时,均需要重新进行编码,会进一步降低编码效率。
2、指令格式适用单一。一旦指令格式确定后,仅能支持单一指令格式的指令编码,所能支持的最大指令数目也是固定的。而实际指令集编码过程中指令格式可能是定长,如果后续添加了更多相同格式类型的指令,导致超出操作码所能支持的指令数目,就需要重新设置指令格式,无法适应不同指令格式的指令编码需求。
3、解码复杂度高。在指令集多次迭代的过程中,或为了实现兼容性,对于特定的指令类型通常需要多个位宽不同、位置不同、数目不同的编码域来确定指令格式,这增加了后续软件工具链和硬件解码器的解码复杂性。
发明内容
本发明要解决的技术问题就在于:针对现有技术存在的技术问题,本发明提供一种自适应指令集编码自动生成方法及装置,编码效率高、灵活性强,能够自适应实现指令集编码的自动生成,提高指令集的编码效率以及动态灵活性,还能够降低后续解码的复杂度。
为解决上述技术问题,本发明提出的技术方案为:
一种自适应指令集编码自动生成方法,步骤包括:
配置指令集的指令格式中的字段类别、字段排列顺序以及指令需求模型,所述字段类别包括全局编码字段集、局部编码字段集以及特征编码字段集,所述特征编码字段集用于标识一条指令的指令格式、所属功能单元和具体的指令语义;
判断所述指令需求模型中定义的指令格式的指令类型;
如果为定长指令格式,采用定长指令格式编码生成方法生成指令集的编码;
如果变长指令格式,采用基于编码二叉树的变长编码生成方法生成指令集的编码;
如果指令需求模型中存在预设关键字,则使用基于优先队列的变长编码生成方法生成指令集的编码。
进一步的,所述全局编码字段为每一条指令都有的编码字段,所述局部编码字段为根据不同指令功能配置不同局部编码字段集合,所述特征编码字段集包括编码字段OP、编码字段U以及编码字段T,所述编码字段T与局部编码字段集对应,以用于定位LFS;所述编码字段U与功能单元对应,以用于定位功能单元;所述编码字段OP与指令语义对应,以用于定位指令操作语义。
进一步的,所述指令需求模型中包括多种关键字的定义类型,所述关键字包括定义指令格式的关键字Format、定义指令格式长度的关键字Length、定义指令格式中各个编码字段的排列顺序的关键字InstructionFormat、定义声明功能单元的关键字FunctionUnit、声明局部编码字段的关键字Field、声明定义局部编码字段集合的关键字FiledSet、声明全局编码字段的关键字GlobalField以及定义指令需求的关键字InstructionRequirementModel、定义优先的局部编码字段集的关键字Optimize。
进一步的,所述采用定长指令格式编码生成方法生成指令集的编码的步骤包括:
统计局部编码字段集数目确定编码段T的位宽;
统计功能单元数目确定编码段U的位宽;
遍历局部编码字段集,根据功能单元数目以及功能单元的指令数目确定编码段OP的位宽;
根据统计的各位宽依次为指令按照Length长度进行对齐。
进一步的,所述采用基于编码二叉树的变长编码生成方法生成指令集的编码的步骤包括:
将相容的局部编码字段集设置为同一种类的局部编码字段集;
将指令按照局部编码字段集的种类进行排序,并在同一种类的局部编码字段集内部再按照功能单元进行排序;
依次为所有指令确定特征编码字段的指令格式类型;
统计局部编码字段集的种类确定格式编码段T的num值以及编码段T的位宽;
基于编码二叉树的变长编码生成方法生成编码段T;
根据指令的ID指令格式类型,依次为所有指令分配格式编码。
进一步的,所述依次为所有指令确定特征编码字段的指令格式类型中对同一种编码字段集确定指令格式类型的步骤包括:若A=B+C,则当前编码字段集的指令格式类型为OP+U+T;若A<B+C,则当前编码字段集的指令格式类型为OPU混合编码+T编码;若A+LFSNum+GFSNum=2C,则当前编码字段集的指令格式类型为OPUT混合编码,若A+LFSNum+GFSNum>2C,则无法生成满足当前指令格式长度的指令格式,其中LFSNum为当前编码字段集的所有编码字段长度之和,GFSNum为当前编码字段集的所有全局编码字段长度之和,AllInstNum为当前编码字段集的所有指令数目,Unum为当前编码字段集的功能单元数目,OpNum为当前编码字段集的功能单元中指令数目最大值,A为[log2AllInstNum],B为[log2Unum],C为[log2OpNum],且对数结果均向上取整。
进一步的,所述基于编码二叉树的变长编码生成方法生成编码段T的步骤包括:
设有m维编码二叉树的编码向量Y=[ym,ym-1,...,y1],其中yi等于从根节点到所有叶子结点的路径长度为i的数目,具有编码二叉树解空间CTn(num),其中CTn代表层高为n的编码二叉树,num表示解空间中所有编码向量的模;
若m≠n,则向量Y不满足CTn(num);
若m=n,且CTn(num)中存在向量X=[xm,xm-1,...,x1],使得yi≤xi(1≤i≤m),则向量Y满足CTn(num);
若m=n,且CTn(num)中存在向量X=[xm,xm-1,...,x1],当xm≤ym时,令x’i=xi+1-yi+1+xi,若yi≤x’i(1≤i≤m-1),则向量Y满足CTn(num);
求解编码二叉树解空间CTn(num),由解空间CTn(num)中对应编码二叉树的所有路径得到变长编码,求解编码二叉树解空间CTn(num)的具体步骤包括:
若num>2n,则CTn(num)=φ;
若num=2n,则CTn(num)={[2n,0,...,0]};
若num<2n,则执行剪操作:CTn(num)→CTn(num-1);
若CTn(num)中可剪节点为0时,则CTn(num-1)=φ。
进一步的,所述使用基于优先队列的变长编码生成方法生成指令集的编码前,还包括使用变长编码检测算法检测是否能生成变长编码,步骤包括:
输入一个容器,容器的大小代表所求变长编码的数目,容器中每一项代表编码的长度;
从输入的容器中取出相等的两项,并将项-1放入容器,直到容器中不存在2个相等的项;
若容器中所有的项都有正整数,则存在变长编码,否则不存在。
进一步的,所述使用基于优先队列的变长编码生成方法生成指令集的编码的步骤包括:
输入一个容器,优先队列容器初始包含“0”和“1”,输入容器从小到大排序;
依次从输入容器取值requesti,记优先队列容器的队头为prefix;
如果prefix长度等于requesti,则将prefix加入Result;
如果prefix长度小于requesti,记n=requesti-prefix长度,生成2n个宽度为n的二进制码分别与prefix拼接构成新的容器code,将code容器第一项压入Result,剩余项压入优先队列容器;
遍历完输入容器,由Result容器得到变长编码输出。
一种计算机装置,包括处理器以及存储器,所述存储器用于存储计算机程序,所述处理器用于执行所述计算机程序以执行如上述方法。
与现有技术相比,本发明的优点在于:
1、本发明能够分辨支持定长指令编码和可变长指令编码,根据指令需求模型自动生成所有指令的指令编码,与传统的手工设计指令集编码相比,能高效、灵活的实现各类型指令编码的自动生成,大大提高指令集编码的效率以及可靠性,不仅能够满足不同数目的功能单元、寄存器和指令种类的指令集架构中指令集编码的需求,还能够动态的适应指令集架构的调整、扩展,根据目标需求自适应的生成所需的指令集编码,还可以降低后续解码复杂度。
2、本发明能够支持基于优先队列的变长编码生成,从而能够为指令需求模型中指定的各种指令格式的指令预留最大的指令编码空间,尽量避免需要对指令格式的修改,同时可以在指令格式设计阶段自动确定编码所需的最短位宽并根据需求的变化调整指令格式,有效地解决编码效率低下和格式调整问题。
3、本发明进一步通过在指令集架构模型中采用统一的编码域,使得在指令格式分析、指令调度、指令语义识别等阶段的指令都只依赖于编码域,能够降低硬件解码逻辑,有效地解决解码复杂度问题。
附图说明
图1是本实施例自适应指令集编码自动生成方法的实现流程示意图。
图2是在具体应用实施例中采用的指令需求模型示例示意图。
图3本实施例中定长指令格式编码生成方法的实现流程示意图。
图4本实施例基于编码二叉树的变长编码生成方法的实现流程示意图。
具体实施方式
以下结合说明书附图和具体优选的实施例对本发明作进一步描述,但并不因此而限制本发明的保护范围。
如图1所示,本实施例自适应指令集编码自动生成方法的步骤包括:
步骤1:配置指令集的指令格式中的字段类别、字段排列顺序以及指令需求模型,字段类别包括全局编码字段集(Global Field Set,GFS)、局部编码字段集(Local FieldSet,LFS)以及特征编码字段集,特征编码字段集用于标识一条指令的指令格式、所属功能单元和具体的指令语义。
本实施例中,全局编码字段具体为每一条指令都有的编码字段,如条件寄存器(REG)、条件判断(Z)、并行执行判断(P)等。局部编码字段为根据不同指令功能配置不同局部编码字段集合,不同的指令种类有不同的局部编码字段集合,例如目的寄存器(Dst),源操作数1(Src1)、源操作数2(Src2)、源操作数3(Src3)以及立即数(IMM)等。特征编码字段集包括编码字段OP、编码字段U以及编码字段T,编码字段T与局部编码字段集一一对应,以用于定位LFS;编码字段U与功能单元一一对应,以用于定位功能单元;编码字段OP与指令语义一一对应,以用于定位指令操作语义。
本实施例指令格式中的字段排列顺序中,全局编码字段集和局部编码字段集中的字段顺序具体可以在指令需求模型中设定;特征编码字段集具体按照{编码字段OP,编码字段U,编码字段T}设定。
本实施例中,指令需求模型中包括多种关键字的定义类型,关键字包括定义指令格式的关键字Format、定义指令格式长度的关键字Length、定义指令格式中各个编码字段的排列顺序的关键字InstructionFormat、定义声明功能单元的关键字FunctionUnit、声明局部编码字段的关键字Field、声明定义局部编码字段集合的关键字FiledSet、声明全局编码字段的关键字GlobalField以及定义指令需求的关键字InstructionRequirementModel、定义优先的局部编码字段集的关键字Optimize。
本实施例中具体关键字Format定义指令格式有2个值,FIXED表示定长指令格式,VARIABLE变长指令格式。关键字Length定义指令格式长度,当Length=auto时代表自动生成一种指令格式长度,当Length=C时代表生成指令格式长度为C的定长指令格式方案或生成指令长度为C/2C的变长指令格式方案。关键字InstructionRequirementModel定义指令需求,由多个指令需求元组构成,其中每个指令需求元组由4个部分组成,分别是功能单元集合、编码字段集合、指令数目和默认指令。关键字Optimize定义优先的局部编码字段集,指定若干个FieldSet,使这些FieldSet最大化OP编码字段的长度。
如图2所示,在具体应用实施例中一个指令需求模型示例,该示例生成一个40/80的变长指令,包含功能单元fu1、fu2、fu3和fu4、以及R、IMM6、OR和AR0_7 4个局部编码字段以及REG、Z和P 3个全局编码字段以及fs1、fs2和fs3一共3种编码字段集,指令格式字段顺序由关键字InstructionFormat给出,希望最大化fs1的OP位宽。fu1和fu2分别共有N条指令,fu3和fu4分别含有M条指令。
步骤2:判断指令需求模型中定义的指令格式的指令类型。
若Format=FIXED,表示定长指令格式,后续按照定长指令格式编码生成方法生成指令集的编码;若Format=VARIABLE,表示为变长指令格式,后续按照基于编码二叉树的变长编码生成方法生成指令集的编码。若指令需求模型中存在Optimize关键字,后续则使用基于优先队列的变长编码生成算法。
步骤3:根据指令需求模型中定义的指令格式的指令类型,采用对应指令格式编码生成方法生成指令集的编码。
步骤3.1.如果为定长指令格式,采用定长指令格式编码生成方法生成指令集的编码。
如图3所示,采用定长指令格式编码生成方法生成指令集的编码的步骤包括:
步骤3.1.1.统计局部编码字段集数目确定编码段T的位宽。
具体的,编码段T的位宽按下式计算得到:T位宽=[log2局部编码字段集数目],对数结果向上取整。
步骤3.1.2.统计功能单元数目确定编码段U的位宽。
具体的,编码段U的位宽按下式计算得到:U位宽=[log2功能单元数目],对数结果向上取整。
步骤3.1.3.遍历局部编码字段集,根据功能单元数目以及功能单元的指令数目确定编码段OP的位宽。
具体的,编码段OP的位宽按下式计算得到:OP位宽=[log2(功能单元数目*功能单元的指令数目)],对数结果向上取整。
步骤3.1.4.根据步骤3.1.1~步骤3.1.3统计的各位宽依次为指令按照Length长度进行对齐。
一条具体的指令格式由全局编码字段集、局部编码字段集、编码段OP、编码段U和编码段T组成。若这些编码字段长度相加后小于Length长度,需要在编码段OP前插入若干0来进行对齐操作。
经过上述操作后,指令的编码字段长度和不一,进一步通过补0对齐操作使得指令长度满足指令格式长度要求。
步骤3.2.如果变长指令格式,采用基于编码二叉树的变长编码生成方法生成指令集的编码。
如图4所示,采用基于编码二叉树的变长编码生成方法生成指令集的编码的步骤包括:
步骤3.2.1.将相容的局部编码字段集设置为同一种类的局部编码字段集。
两个局部编码字段集相容指的是两个局部编码字段集中对应的字段完全相同,或者字段长度相同;或者两个局部编码字段集的编码字段数目相同,且一个局部编码字段集的字段长度分别不小于另一个局部编码字段集中对应字段的长度。
步骤3.2.2.将指令按照局部编码字段集的种类进行排序,并在同一种类的局部编码字段集内部再按照功能单元进行排序。
步骤3.2.3.依次为所有指令确定特征编码字段的指令格式类型。
本实施例中,特征编码字段的指令格式类型分为三种:(1)OP+U+T,分别编码;(2)OPU混合编码+T编码;(3)OPUT混合编码。对同一种编码字段集确定指令格式类型的步骤为:
若A=B+C,则当前编码字段集的指令格式类型为OP+U+T;若A<B+C,则当前编码字段集的指令格式类型为OPU混合编码+T编码;
若A+LFSNum+GFSNum=2C,则当前编码字段集的指令格式类型为OPUT混合编码;
若A+LFSNum+GFSNum>2C,则无法生成满足当前指令格式长度的指令格式;
其中LFSNum为当前编码字段集的所有编码字段长度之和,GFSNum为当前编码字段集的所有全局编码字段长度之和,AllInstNum为当前编码字段集的所有指令数目,Unum为当前编码字段集的功能单元数目,OpNum为当前编码字段集的功能单元中指令数目最大值,A为[log2AllInstNum],B为[log2Unum],C为[log2OpNum],且对数结果均向上取整。
本实施例通过在指令集架构模型中采用统一的编码域(特征ID,ID格式分为三种:(1)OP+U+T,分别编码;(2)OPU混合编码+T编码;(3)OPUT混合编码),使得在指令格式分析、指令调度、指令语义识别等阶段的指令都只依赖于编码域,能够降低硬件解码逻辑,有效地解决解码复杂度问题。
步骤3.2.4.统计局部编码字段集的种类确定格式编码段T的num值以及编码段U的位宽。
num值代表格式编码段T需要映射多少个不同指令格式。
编码段U的位宽按照下式计算得到:U位宽=[log2功能单元数目],对数结果向上取整。
步骤3.2.5.基于编码二叉树的变长编码生成方法生成编码段T。
首先进行参数定义:
编码二叉树定义为:一棵二叉树的所有非叶子节点拥有2个子树,那么这棵树即是编码二叉树,层高为n的编码二叉树使用CTn代表。
编码向量定义为:设有m维向量Y=[ym,ym-1,...,y1],其中yi等于从根节点到所有叶子结点的路径长度为i的数目,则Y为编码二叉树对应的编码向量。如Y=[6,1,0]是CT3的一个编码向量,向量Y的模为各向量分量之和=7,代表可以产生映射至7个状态的编码。编码向量模相同的编码二叉树视为一种编码二叉树。
编码二叉树解空间CTn(num)定义为:代表层高为n的编码二叉树的编码向量解空间,且解空间中所有编码向量的模等于num。
步骤3.2.5.1.设有m维编码二叉树的编码向量Y=[ym,ym-1,...,y1],其中yi等于从根节点到所有叶子结点的路径长度为i的数目,具有编码二叉树解空间CTn(num),其中CTn代表层高为n的编码二叉树,num表示解空间中所有编码向量的模。
若m≠n,则向量Y不满足CTn(num);
若m=n,且CTn(num)中存在向量X=[xm,xm-1,...,x1],使得yi≤xi(1≤i≤m),则向量Y满足CTn(num);
若m=n,且CTn(num)中存在向量X=[xm,xm-1,...,x1],当xm≤ym时,令x’i=xi+1-yi+1+xi,若yi≤x’i(1≤i≤m-1),则向量Y满足CTn(num)。
步骤3.2.5.2.求解编码二叉树解空间CTn(num),由解空间CTn(num)中对应编码二叉树的所有路径得到变长编码,求解编码二叉树解空间CTn(num)的具体步骤包括:
若num>2n,则CTn(num)=φ;
若num=2n,则CTn(num)={[2n,0,...,0]};
若num<2n,则执行剪操作:CTn(num)→CTn(num-1);
若CTn(num)中可剪节点为0时,则CTn(num-1)=φ。
以统计后需要6个长度为3和1个长度为2的变长编码为例,首先构造编码向量Y=[6,1,0],由于所需最长的变长编码长度为3,所需变长编码的个数是7,因此所需的编码编码在CT3(7)的解空间里。易知CT3(8)={[8,0,0]},执行一次剪枝操作后即可得到CT3(7)={[6,1,0]}。根据上述定义,可知编码向量Y满足CT3(7),因此求得的变长编码为CT3(7)中对应编码二叉树的所有路径,即{00,010,011,100,101,110,111}。
步骤3.2.6.根据指令的ID指令格式类型,依次为所有指令分配格式编码。
本实施例中具体根据指令的ID指令格式类型,依次为所有指令分配格式编码段T、OP、U编码或OPU混合编码或OPUT混合编码。优选的,上述分配优先分配前两种编码,在为OPUT混合编码时需要剔除前两者的前缀码,然后再进行分配。
步骤3.3.如果指令需求模型中存在预设关键字,则使用基于优先队列的变长编码生成方法生成指令集的编码。
本实施例中,使用基于优先队列的变长编码生成方法生成指令集的编码的步骤包括:
步骤3.3.1.设定优先关键字Optimize(LFS),则需要LFS.OP长度最大,即使得LFS.T长度最小。依次减小LFS.T长度,利用变长编码检测算法检测变长编码是否存在,直到无法继续生成变长编码。LFS.OP是指局部编码字段集的编码字段OP,LFS.T是指局部编码字段集的编码字段T。
步骤3.3.2.使用变长编码检测算法检测是否能生成变长编码,如果是则转入步骤3.3.3。
使用变长编码检测算法检测是否能生成变长编码的步骤包括:
输入一个容器,容器的大小代表所求变长编码的数目,容器中每一项代表编码的长度;
从输入的容器中取出相等的两项,并将项-1放入容器,直到容器中不存在2个相等的项;
若容器中所有的项都有正整数,则存在变长编码,否则不存在。
步骤3.3.3.使用基于优先队列的变长编码生成方法生成指令集的编码的步骤包括:
输入一个容器,并将输入容器从小到大排序,初始化优先队列容器包含“0”和“1”;
依次从输入容器取值requesti,记优先队列容器的队头为prefix;
如果prefix长度等于requesti,则将prefix加入Result;
如果prefix长度小于requesti,记n=requesti-prefix长度,生成2n个宽度为n的二进制码分别与prefix拼接构成新的容器code,将code容器第一项压入Result,剩余项压入所述优先队列容器;
遍历完输入容器,由Result容器得到变长编码输出,返回步骤3.3.1。
本实施例通过上述步骤,能够支持基于优先队列的变长编码生成,从而能够为指令需求模型中指定的各种指令格式的指令预留最大的指令编码空间,尽量避免需要对指令格式的修改,同时可以在指令格式设计阶段自动确定编码所需的最短位宽并根据需求的变化调整指令格式,有效地解决编码效率低下和格式调整问题。
本发明通过将指令编码的自动生成问题从体系结构描述语言中抽离出来,在对指令集描述时仅关注指令的语法信息和语义信息,自动生成全部的指令编码信息,通过对指令格式的功能单元、操作数以及并行执行等字段进行编码建模,构建一个高效的指令编码数学模型,使得能够根据该模型自动生成最优化的指令编码,从而能够在满足目标应用指令需求的约束条件下最大化编码空间。
通过本发明方法,能够分辨支持定长指令编码和可变长指令编码,根据指令需求模型自动生成所有指令的指令编码,与传统的手工设计指令集编码相比,能灵活的实现各类型指令编码的自动生成,大大提高指令集编码的效率以及可靠性,不仅能够满足不同数目的功能单元、寄存器和指令种类的指令集架构中指令集编码的需求,还能够动态的适应指令集架构的调整、扩展,根据目标需求自适应的生成所需的指令集编码。
本实施例进一步提供存储有计算机程序的计算机可读存储介质,所述计算机程序被处理器执行时实现如上述方法。
本领域内的技术人员应明白,本申请的上述实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可读存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
本实施例进一步提供计算机装置,包括处理器以及存储器,存储器用于存储计算机程序,所述处理器用于执行所述计算机程序以执行如上述方法。
可以理解的是,本实施例上述方法可以由单个设备执行,例如一台计算机或服务器等,也可以应用于分布式场景下由多台设备相互配合来完成,在分布式场景的情况下,多台设备中的一台设备可以只执行本实施例上述方法中的某一个或多个步骤,多台设备之间进行交互以完成上述方法。处理器可以采用通用的CPU、微处理器、应用专用集成电路、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本实施例上述方法。存储器可以采用只读存储器ROM、随机存取存储器RAM、静态存储设备以及动态存储设备等形式实现。存储器可以存储操作系统和其他应用程序,在通过软件或者固件来实现本实施例上述方法时,相关的程序代码保存在存储器中,并由处理器来调用执行。
上述只是本发明的较佳实施例,并非对本发明作任何形式上的限制。虽然本发明已以较佳实施例揭露如上,然而并非用以限定本发明。因此,凡是未脱离本发明技术方案的内容,依据本发明技术实质对以上实施例所做的任何简单修改、等同变化及修饰,均应落在本发明技术方案保护的范围内。
Claims (10)
1.一种自适应指令集编码自动生成方法,其特征在于,步骤包括:
配置指令集的指令格式中的字段类别、字段排列顺序以及指令需求模型,所述字段类别包括全局编码字段集、局部编码字段集以及特征编码字段集,所述特征编码字段集用于标识一条指令的指令格式、所属功能单元和具体的指令语义;
判断所述指令需求模型中定义的指令格式的指令类型;
如果为定长指令格式,采用定长指令格式编码生成方法生成指令集的编码;
如果变长指令格式,采用基于编码二叉树的变长编码生成方法生成指令集的编码;
如果指令需求模型中存在预设关键字,则使用基于优先队列的变长编码生成方法生成指令集的编码。
2.根据权利要求1中自适应指令集编码自动生成方法,其特征在于,所述全局编码字段为每一条指令都有的编码字段,所述局部编码字段为根据不同指令功能配置不同局部编码字段集合,所述特征编码字段集包括编码字段OP、编码字段U以及编码字段T,所述编码字段T与局部编码字段集对应,以用于定位LFS;所述编码字段U与功能单元对应,以用于定位功能单元;所述编码字段OP与指令语义对应,以用于定位指令操作语义。
3.根据权利要求1中自适应指令集编码自动生成方法,其特征在于,所述指令需求模型中包括多种关键字的定义类型,所述关键字包括定义指令格式的关键字Format、定义指令格式长度的关键字Length、定义指令格式中各个编码字段的排列顺序的关键字InstructionFormat、定义声明功能单元的关键字FunctionUnit、声明局部编码字段的关键字Field、声明定义局部编码字段集合的关键字FiledSet、声明全局编码字段的关键字GlobalField以及定义指令需求的关键字InstructionRequirementModel、定义优先的局部编码字段集的关键字Optimize。
4.根据权利要求1中自适应指令集编码自动生成方法,其特征在于,所述采用定长指令格式编码生成方法生成指令集的编码的步骤包括:
统计局部编码字段集数目确定编码段T的位宽;
统计功能单元数目确定编码段U的位宽;
遍历局部编码字段集,根据功能单元数目以及功能单元的指令数目确定编码段OP的位宽;
根据统计的各位宽依次为指令按照Length长度进行对齐。
5.根据权利要求1中自适应指令集编码自动生成方法,其特征在于,所述采用基于编码二叉树的变长编码生成方法生成指令集的编码的步骤包括:
将相容的局部编码字段集设置为同一种类的局部编码字段集;
将指令按照局部编码字段集的种类进行排序,并在同一种类的局部编码字段集内部再按照功能单元进行排序;
依次为所有指令确定特征编码字段的指令格式类型;
统计局部编码字段集的种类确定格式编码段T的num值以及编码段T的位宽;
基于编码二叉树的变长编码生成方法生成编码段T;
根据指令的ID指令格式类型,依次为所有指令分配格式编码。
6.根据权利要求5所述的自适应指令集编码自动生成方法,其特征在于,所述依次为所有指令确定特征编码字段的指令格式类型中对同一种编码字段集确定指令格式类型的步骤包括:若A=B+C,则当前编码字段集的指令格式类型为OP+U+T;若A<B+C,则当前编码字段集的指令格式类型为OPU混合编码+T编码;若A+LFSNum+GFSNum=2C,则当前编码字段集的指令格式类型为OPUT混合编码,若A+LFSNum+GFSNum>2C,则无法生成满足当前指令格式长度的指令格式,其中LFSNum为当前编码字段集的所有编码字段长度之和,GFSNum为当前编码字段集的所有全局编码字段长度之和,AllInstNum为当前编码字段集的所有指令数目,Unum为当前编码字段集的功能单元数目,OpNum为当前编码字段集的功能单元中指令数目最大值,A为[log2AllInstNum],B为[log2Unum],C为[log2OpNum],且对数结果均向上取整。
7.根据权利要求5所述的自适应指令集编码自动生成方法,其特征在于,所述基于编码二叉树的变长编码生成方法生成编码段T的步骤包括:
设有m维编码二叉树的编码向量Y=[ym,ym-1,...,y1],其中yi等于从根节点到所有叶子结点的路径长度为i的数目,具有编码二叉树解空间CTn(num),其中CTn代表层高为n的编码二叉树,num表示解空间中所有编码向量的模;
若m≠n,则向量Y不满足CTn(num);
若m=n,且CTn(num)中存在向量X=[xm,xm-1,...,x1],使得yi≤xi(1≤i≤m),则向量Y满足CTn(num);
若m=n,且CTn(num)中存在向量X=[xm,xm-1,...,x1],当xm≤ym时,令x’i=xi+1-yi+1+xi,若yi≤x’i(1≤i≤m-1),则向量Y满足CTn(num);
求解编码二叉树解空间CTn(num),由解空间CTn(num)中对应编码二叉树的所有路径得到变长编码,所述求解编码二叉树解空间CTn(num)的具体步骤包括:
若num>2n,则CTn(num)=φ;
若num=2n,则CTn(num)={[2n,0,...,0]};
若num<2n,则执行剪操作:CTn(num)→CTn(num-1);
若CTn(num)中可剪节点为0时,则CTn(num-1)=φ。
8.根据权利要求1~7中任意一项所述的自适应指令集编码自动生成方法,其特征在于,所述使用基于优先队列的变长编码生成方法生成指令集的编码前,还包括使用变长编码检测算法检测是否能生成变长编码,步骤包括:
输入一个容器,容器的大小代表所求变长编码的数目,容器中每一项代表编码的长度;
从输入的容器中取出相等的两项,并将项-1放入容器,直到容器中不存在2个相等的项;
若容器中所有的项都有正整数,则存在变长编码,否则不存在。
9.根据权利要求1~7中任意一项所述的自适应指令集编码自动生成方法,其特征在于,所述使用基于优先队列的变长编码生成方法生成指令集的编码的步骤包括:
输入一个容器,优先队列容器初始包含“0”和“1”,输入容器从小到大排序;
依次从输入容器取值requesti,记优先队列容器的队头为prefix;
如果prefix长度等于requesti,则将prefix加入Result;
如果prefix长度小于requesti,记n=requesti-prefix长度,生成2n个宽度为n的二进制码分别与prefix拼接构成新的容器code,将code容器第一项压入Result,剩余项压入优先队列容器;
遍历完输入容器,由Result容器得到变长编码输出。
10.一种计算机装置,包括处理器以及存储器,所述存储器用于存储计算机程序,其特征在于,所述处理器用于执行所述计算机程序以执行如权利要求1~8中任意一项所述方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311282780.9A CN117435248B (zh) | 2023-09-28 | 2023-09-28 | 一种自适应指令集编码自动生成方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311282780.9A CN117435248B (zh) | 2023-09-28 | 2023-09-28 | 一种自适应指令集编码自动生成方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117435248A true CN117435248A (zh) | 2024-01-23 |
CN117435248B CN117435248B (zh) | 2024-05-31 |
Family
ID=89547119
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311282780.9A Active CN117435248B (zh) | 2023-09-28 | 2023-09-28 | 一种自适应指令集编码自动生成方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117435248B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2000046704A2 (en) * | 1999-02-05 | 2000-08-10 | Tensilica, Inc. | Automated processor generation system and method for designing a configurable processor |
CN101382884A (zh) * | 2007-09-07 | 2009-03-11 | 上海奇码数字信息有限公司 | 指令编码方法、指令编码系统及数字信号处理器 |
WO2016131428A1 (zh) * | 2015-02-20 | 2016-08-25 | 上海芯豪微电子有限公司 | 一种多发射处理器系统和方法 |
CN114217856A (zh) * | 2021-12-17 | 2022-03-22 | 中国人民解放军国防科技大学 | 面向AArch64架构的CPU指令微基准测试方法及系统 |
-
2023
- 2023-09-28 CN CN202311282780.9A patent/CN117435248B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2000046704A2 (en) * | 1999-02-05 | 2000-08-10 | Tensilica, Inc. | Automated processor generation system and method for designing a configurable processor |
CN101382884A (zh) * | 2007-09-07 | 2009-03-11 | 上海奇码数字信息有限公司 | 指令编码方法、指令编码系统及数字信号处理器 |
WO2016131428A1 (zh) * | 2015-02-20 | 2016-08-25 | 上海芯豪微电子有限公司 | 一种多发射处理器系统和方法 |
CN114217856A (zh) * | 2021-12-17 | 2022-03-22 | 中国人民解放军国防科技大学 | 面向AArch64架构的CPU指令微基准测试方法及系统 |
Non-Patent Citations (6)
Title |
---|
XIN XIAO .ETC: "An Adaptive Instruction Set Encoding Automatic Generation Method for VLIW", 《INTERNATIONAL CONFERENCE ON ALGORITHMS AND ARCHITECTURES FOR PARALLEL PROCESSING》, 12 March 2024 (2024-03-12), pages 283 - 300 * |
XIN XIAO .ETC: "ISADL:An Instruction Set Architecture Description Language for VLIW", 《2023 IEEE 29TH INTERNATIONAL CONFERENCE ON PARALLEL AND DISTRIBUTION SYSTEMS》, 21 December 2023 (2023-12-21), pages 1 - 8 * |
刘仲: "基于对象存储结构的可伸缩集群存储系统研究", 《中国博士学位论文全文数据库》, 31 October 2006 (2006-10-31), pages 137 - 10 * |
李德贤: "专用处理器及片上通信架构设计研究", 《中国博士学位论文全文数据库》, 30 June 2009 (2009-06-30), pages 137 - 6 * |
杜延宁等: "一种数据结构制导的线程划分方法与执行模型", 《软件学报》, vol. 24, no. 10, 15 October 2013 (2013-10-15), pages 2432 - 2459 * |
雷元武;陈小文;彭元喜;: "DSP芯片中的高能效FFT加速器", 计算机研究与发展, vol. 53, no. 07, 15 July 2016 (2016-07-15), pages 1438 - 1446 * |
Also Published As
Publication number | Publication date |
---|---|
CN117435248B (zh) | 2024-05-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102376117B1 (ko) | 병렬 결정 트리 프로세서 아키텍처 | |
US8713048B2 (en) | Query processing with specialized query operators | |
US10007605B2 (en) | Hardware-based array compression | |
US20120297171A1 (en) | Methods for generating code for an architecture encoding an extended register specification | |
US8549502B2 (en) | Compiler with user-defined type inference rules | |
US20080091923A1 (en) | Register-based instruction optimization for facilitating efficient emulation of an instruction stream | |
CN111966424A (zh) | 使用复常量的方法和系统 | |
US6925639B2 (en) | Method and system for register allocation | |
CN109313547B (zh) | 用于cpu利用率和代码重构的查询优化器 | |
WO2016177405A1 (en) | Systems and methods for transformation of a dataflow graph for execution on a processing system | |
US8543898B2 (en) | Techniques for more efficient generation of XML events from XML data sources | |
WO2021120713A1 (zh) | 一种数据处理方法、解码电路及处理器 | |
US9182960B2 (en) | Loop distribution detection program and loop distribution detection method | |
US8930929B2 (en) | Reconfigurable processor and method for processing a nested loop | |
US8560805B1 (en) | Efficient allocation of address space resources to bus devices | |
CN117435248B (zh) | 一种自适应指令集编码自动生成方法及装置 | |
CN108027736B (zh) | 使用通过对物理寄存器预分配的乱序重命名的运行时代码并行化 | |
CN105320763B (zh) | 一种将xml文件的内容导入数据库的方法和装置 | |
US7698693B2 (en) | System and method for run-time value tracking during execution | |
US8701119B1 (en) | Parsing XML in software on CPU with multiple execution units | |
CN111279308B (zh) | 代码转换期间的屏障减少 | |
US8700887B2 (en) | Register, processor, and method of controlling a processor using data type information | |
US10642876B1 (en) | Query processing pipeline for semi-structured and unstructured data | |
CN112347122B (zh) | Sql工作流处理方法、装置、电子设备和存储介质 | |
WO2023028833A1 (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 |