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为[log 2 AllInstNum],B为[log 2 Unum],C为[log 2 OpNum],且对数结果均向上取整。
7.根据权利要求5所述的自适应指令集编码自动生成方法,其特征在于,所述基于编码二叉树的变长编码生成方法生成编码段T的步骤包括:设有m维编码二叉树的编码向量Y=[y m ,y m-1 ,...,y 1 ],其中y i 等于从根节点到所有叶子结点的路径长度为i的数目,具有编码二叉树解空间CT n (num),其中CT n 代表层高为n的编码二叉树,num表示解空间中所有编码向量的模;若m≠n,则向量Y不满足CT n (num);若m=n,且CT n (num)中存在向量X=[x m ,x m-1 ,...,x 1 ],使得y i ≤x i (1≤i≤m),则向量Y满足CT n (num);若m=n,且CT n (num)中存在向量X=[x m ,x m-1 ,...,x 1 ],当x m ≤y m 时,令x’ i =x i+1 -y i+1 +x i ,若y i ≤x’ i (1≤i≤m-1),则向量Y满足CT n (num);求解编码二叉树解空间CT n (num),由解空间CT n (num)中对应编码二叉树的所有路径得到变长编码,所述求解编码二叉树解空间CT n (num)的具体步骤包括:若num>2 n ,则CT n (num)=φ;若num=2 n ,则CT n (num)={[2 n ,0,...,0]};若num<2 n ,则执行剪操作:CT n (num)→CT n (num-1);若CT n (num)中可剪节点为0时,则CT n (num-1)=φ。
8.根据权利要求1~7中任意一项所述的自适应指令集编码自动生成方法,其特征在于,所述使用基于优先队列的变长编码生成方法生成指令集的编码前,还包括使用变长编码检测算法检测是否能生成变长编码,步骤包括:输入一个容器,容器的大小代表所求变长编码的数目,容器中每一项代表编码的长度;从输入的容器中取出相等的两项,并将项-1放入容器,直到容器中不存在2个相等的项;若容器中所有的项都有正整数,则存在变长编码,否则不存在。
9.根据权利要求1~7中任意一项所述的自适应指令集编码自动生成方法,其特征在于,所述使用基于优先队列的变长编码生成方法生成指令集的编码的步骤包括:输入一个容器,优先队列容器初始包含“0”和“1”,输入容器从小到大排序;依次从输入容器取值request i ,记优先队列容器的队头为prefix;如果prefix长度等于request i ,则将prefix加入Result;如果prefix长度小于request i ,记n=request i -prefix长度,生成2 n 个宽度为n的二进制码分别与prefix拼接构成新的容器code,将code容器第一项压入Result,剩余项压入优先队列容器;遍历完输入容器,由Result容器得到变长编码输出。
10.一种计算机装置,包括处理器以及存储器,所述存储器用于存储计算机程序,其特征在于,所述处理器用于执行所述计算机程序以执行如权利要求1~8中任意一项所述方法。