CN110572160A - 一种指令集模拟器译码模块代码的压缩方法 - Google Patents
一种指令集模拟器译码模块代码的压缩方法 Download PDFInfo
- Publication number
- CN110572160A CN110572160A CN201910705844.9A CN201910705844A CN110572160A CN 110572160 A CN110572160 A CN 110572160A CN 201910705844 A CN201910705844 A CN 201910705844A CN 110572160 A CN110572160 A CN 110572160A
- Authority
- CN
- China
- Prior art keywords
- instruction
- instructions
- decoding
- group
- instruction set
- 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
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/60—General implementation details not specific to a particular type of compression
- H03M7/6047—Power optimization with respect to the encoder, decoder, storage or transmission
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/60—General implementation details not specific to a particular type of compression
- H03M7/6058—Saving memory space in the encoder or decoder
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Executing Machine-Instructions (AREA)
Abstract
本发明公开了一种指令集模拟器译码模块代码的压缩方法。该方法根据指指令集中指令译码特征段的分布情况,将所有指令按照译码特征段分布情况分组;具有译码特征段分布的指令划分为同一小组;同时,将同一小组内所有指令的出现频率累加,作为小组的指令频率;将所有小组按照小组指令频率降序排序,并且小组内部对每条指令按照其指令频率进行降序排序;按照该排序结果生成每个小组的译码代码块,最终实现将译码特征段相同的指令压缩至同一译码代码块的效果;同时小组内指令译码按照从高到低的顺序进行译码,从而显著减少模拟器译码模块代码规模。该方法适用于多种类型的指令集,可显著减少模拟器解析指令时的位匹配次数,提高模拟器运行效率,具有较好的应用前景。
Description
技术领域
本发明涉及指令集模拟,尤其涉及一种指令集模拟器译码模块代码的压缩方法。
背景技术
由于指令集模拟器具有摆脱硬件数目限制,运行过程可调试,随时获取设备状态等优点,在硬件仿真、芯片设计等领域都得到了广泛的应用。
指令集模拟器的译码模块通过匹配指令操作码,确定指令类型,并根据指令编码格式,分割提取各特征段信息。实际情况下,由于一个指令集往往包含上百条指令,而译码模块又需要支持所有指令类型的识别,故相关模块代码往往非常庞大,而且极其复杂。此外,模拟器在译码时,通过顺序遍历上述模块代码的方法解析指令内容,故其执行效率与译码模块规模呈负相关,即译码模块的代码块数目越多,指令集模拟器的执行效率越低。
例如,原始的没有经过译码优化的译码函数结构如图2所示,接收到一条指令的二进制码时,首先判断指令的译码特征段,然后一次获取指令的非译码字段,如creg,z,dst字段等,最后根据OP字段的不同,给指令函数指针赋值。在译码的过程中,除了OP字段的判断不会重复执行,其他字段的判断,如译码特征段,creg字段,z字段等都会重复执行多次,导致译码函数效率降低。
因此,找到一种优化模拟器译码模块代码的方法在实际应用中具有重要价值。
发明内容
本发明的目的在于针对现有技术的不足,提供一种指令集模拟器译码模块代码的压缩方法。
本发明的目的是通过以下技术方案来实现的:一种指令集模拟器译码模块代码的压缩方法,包括以下步骤:
(1)将目标指令集中所有指令都按照指令编码规则进行记录,创建指令集编码文件;
(2)建立指令集结构体,用于记录目标指令集中所有指令的信息,包括指令名、译码特征段、指令频率,并建立哈希表用于记录每条指令在指令集结构体中的位置;读取步骤(1)中创建的指令集编码文件,填充指令集结构体,并初始化哈希表;
(3)将目标指令集中所有指令及其指令频率按照指令频率编码规则进行记录,并汇总保存至指令集频率文件中;
(4)读取步骤(3)得到的指令集频率文件,并通过步骤(2)建立的哈希表将指令频率文件中的指令频率记录在步骤(1)建立的指令集结构体中;
(5)用字符串记录目标指令集中所有指令的译码特征段,将译码特征段相同的指令划分为同一小组;将同一小组中的指令按照指令频率降序排序,得到组内指令排序,并计算组内指令频率之和;
(6)将步骤(5)划分的所有小组,按照组内频率之和进行降序排序,得到小组排序;
(7)按照步骤(6)得到的小组排序,依次对各小组进行顺序译码,生成每个小组的译码函数代码块;其中,小组内指令按照步骤(5)得到的组内指令排序进行顺序译码;
所述指令编码规则为:
NA:指令名
指令格式
DT:指令操作数及其数据类型
OP:指令的op字段
DE:延迟周期数
EX:指令执行表达式
所述指令频率编码规则为:
NA:指令名
FE:指令频率
进一步地,所述步骤(5)中的指令的译码特征段在指令格式中为二进制数串。
进一步地,所述步骤(7)中同一小组的指令共用相同的译码特征段判断语句。
本发明的有益效果是:
(1)本发明通过复用译码特征段相同的指令格式信息,减少了指令集模拟器译码模块的代码规模;
(2)本发明通过降低指令误判的次数,减少了指令译码时的判断次数;
(3)本发明通过优化译码函数的性能,提高了模拟器的运行效率,具有较好的应用前景。
附图说明
图1是本方法流程图;
图2未经过译码优化的译码函数结构示意图;
图3经过译码函数优化的译码函数结构示意图。
具体实施方式
本发明是一种指令集模拟器译码模块代码的压缩方法,流程图如图1所示,具体步骤如下:
(1)将目标指令集中所有指令都按照指令编码规则进行记录,创建指令集编码文件。
所述指令编码规则为使用NA字段记录指令名,直接记录指令格式,DT字段记录指令操作数及其数据类型,OP字段记录指令的op字段,DE字段记录指令是否需要延迟操作,EX字段记录指令所需要执行的操作;其中,指令格式包括译码特征段;OP字段可以有多个,表示有多种数据类型,每个OP字段对应一个DT字段;由于不是所有指令都限制指令执行单元或需要延迟操作,故NA字段中指令执行单元部分和DE字段用括号标注;在指令集编码文件中的具体表现形式为:
NA:指令名(_指令执行单元)
指令格式
DT:指令操作数及其数据类型
OP:指令的op字段
(DE:延迟周期数)
EX:指令执行表达式
如指令ABS按照指令操作标准化规则等价修改后,在指令集编码文件中的具体表现形式为:
NA:ABS
creg[31,29]z[28]dst[27,23]src2[22,18]″00000″[17,13]X[12]op[11,5]″110″[4,2]s[1]p[0]
OP:001 1010DT:sint dst,xsint src2
OP:011 1000DT:slong dst,slong src2
EX:abs(src2)->dst
其中,”00000”[17,13]和”110”[4,2]为译码特征段。
(2)建立指令集结构体,用于记录目标指令集中所有指令的信息,包括指令名、译码特征段、指令频率,并建立哈希表用于记录每条指令在指令集结构体中的位置。读取步骤(1)中创建的指令集编码文件,填充指令集结构体,并初始化哈希表。
(3)将目标指令集中所有指令及其指令频率按照指令频率编码规则进行记录,并汇总保存至指令集频率文件中。所述指令频率编码规则为使用NA字段记录指令名,FE字段记录指令频率,在指令集频率文件中表示成如下形式:
NA:指令名
FE:指令频率
例如,指令频率为234的指令AND表示为:
NA:AND
FE:234
(4)读取步骤(3)中的指令集频率文件,并通过步骤(2)建立的哈希表根据指令名将指令频率文件中的指令频率记录在步骤(1)建立的指令集结构体中。
(5)用字符串记录目标指令集中所有指令的译码特征段,将译码特征段相同的指令划分为同一小组;将同一小组中的指令按照指令频率降序排序,得到组内指令排序,并计算组内指令频率之和;指令的译码特征段在指令格式中为二进制数串,如“0100[6,3]”,表示指令格式的第6位到第3位分别是0,1,0,0。
(6)将步骤(5)划分的所有小组,按照组内频率之和进行降序排序,得到小组排序。
(7)按照步骤(6)得到的小组排序,依次对各小组进行顺序译码,生成每个小组的指令译码代码,即译码函数代码块;其中,小组内指令按照步骤(5)得到的组内指令排序进行顺序译码。由于同一小组内的译码特征段完全相同,故可共用相同的译码特征段判断语句来减少译码特征段的判断次数。
实施例
下面以TMS320C64x指令集模拟器中译码特征段相同的一组指令为例进一步说明本发明的工作原理和工作过程:
该小组有7条指令,这7条指令的译码特征段均是“110[4,2]”,由于译码特征段相同,所以指令格式也完全相同。记录每条指令出现的频率,进行降序排序,得到组内顺序,经过降序排序后,指令在组内的分布如表1所示。对排序后的指令进行解析,得到译码函数代码块。
表1:经过排序后的指令分布
指令名 | 组内排序 | 指令频率 |
CMPLT_L | 1 | 246 |
AND_L | 2 | 149 |
SUB_L | 3 | 129 |
ADD_L | 4 | 74 |
CMPEQ_L | 5 | 66 |
CMPGT_L | 6 | 36 |
OR_L | 7 | 5 |
原始的译码函数经过本发明进行译码优化后,可以将重复判断的信息去除,而且每个特征段的赋值仅需进行一次,有效提升了译码函数的执行效率。优化过后的译码函数结构如图3所示,首先是指令译码特征段的判断,然后是获取各非译码特征段的值,如creg,z,dst字段等,最后匹配OP字段。与之前的译码结构不同的是,这里整合了非译码特征段的赋值和OP字段的判断,减少了译码函数块的数量,减少了指令译码特征段的匹配次数,有效提高了译码函数的效率。
使用TMS320C64x指令集模拟器,对多种经典算法的测试用例利用本发明进行实际测试,得到的MIPS(Million Instructions Per Second,每秒百万条指令)性能如表2所示;而TMS320C64x指令集模拟器的原MIPS性能约为1.83MIPS,故使用本发明译码函数代码块压缩技术后,可显著提高TMS320C64x指令集模拟器的MIPS性能。
表2
测试用例 | MIPS |
排序二叉树 | 1.976 |
树形选择排序 | 1.897 |
宽度优先搜索 | 1.963 |
二叉树遍历 | 1.971 |
最小生成树 | 1.966 |
KMP算法 | 1.989 |
基数排序 | 2.021 |
深度优先搜索 | 1.956 |
哈夫曼编码 | 1.999 |
最短路径 | 1.980 |
Prim算法 | 2.871 |
Claims (3)
1.一种指令集模拟器译码模块代码的压缩方法,其特征在于,包括以下步骤:
(1)将目标指令集中所有指令均按照指令编码规则进行记录,创建指令集编码文件。
(2)建立指令集结构体,用于记录目标指令集中所有指令的信息,包括指令名、译码特征段、指令频率,并建立哈希表用于记录每条指令在指令集结构体中的位置;读取步骤(1)中创建的指令集编码文件,填充指令集结构体,并初始化哈希表。
(3)将目标指令集中所有指令及其指令频率按照指令频率编码规则进行记录,并汇总保存至指令集频率文件中。
(4)读取步骤(3)得到的指令集频率文件,并通过步骤(2)建立的哈希表将指令频率文件中的指令频率记录在步骤(2)建立的指令集结构体中;
(5)用字符串记录目标指令集中所有指令的译码特征段,将译码特征段相同的指令划分为同一小组;将同一小组中的指令按照指令频率降序排序,得到组内指令排序,并计算组内指令频率之和;
(6)将步骤(5)划分的所有小组,按照组内频率之和进行降序排序,得到小组排序;
(7)按照步骤(6)得到的小组排序,依次对各小组进行顺序译码,生成每个小组的译码函数代码块;其中,小组内指令按照步骤(5)得到的组内指令排序进行顺序译码;
所述指令编码规则为:
NA:指令名
指令格式
DT:指令操作数及其数据类型
OP:指令的op字段
DE:延迟周期数
EX:指令执行表达式
所述指令频率编码规则为:
NA:指令名
FE:指令频率。
2.根据权利要求1所述指令集模拟器译码模块代码的压缩方法,其特征在于,所述步骤(5)中的指令的译码特征段在指令格式中为二进制数串。
3.根据权利要求1所述指令集模拟器译码模块代码的压缩方法,其特征在于,所述步骤(7)中同一小组的指令共用相同的译码特征段判断语句。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910705844.9A CN110572160A (zh) | 2019-08-01 | 2019-08-01 | 一种指令集模拟器译码模块代码的压缩方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910705844.9A CN110572160A (zh) | 2019-08-01 | 2019-08-01 | 一种指令集模拟器译码模块代码的压缩方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110572160A true CN110572160A (zh) | 2019-12-13 |
Family
ID=68773968
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910705844.9A Pending CN110572160A (zh) | 2019-08-01 | 2019-08-01 | 一种指令集模拟器译码模块代码的压缩方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110572160A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115586923A (zh) * | 2022-11-29 | 2023-01-10 | 摩尔线程智能科技(北京)有限责任公司 | 用于指令集的操作码编码方法、装置和计算机可读介质 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102419715A (zh) * | 2011-08-29 | 2012-04-18 | 展讯通信(上海)有限公司 | 代码的压缩方法及其压缩装置、代码的执行方法 |
US20140317377A1 (en) * | 2011-12-30 | 2014-10-23 | Elmoustapha Ould-Ahmed-Vall | Vector frequency compress instruction |
CN104331269A (zh) * | 2014-10-28 | 2015-02-04 | 中国科学院自动化研究所 | 一种嵌入式系统可执行代码压缩方法及代码解压缩系统 |
US20160077835A1 (en) * | 2011-05-03 | 2016-03-17 | Qualcomm Incorporated | Methods and apparatus for storage and translation of entropy encoded software embedded within a memory hierarchy |
CN106257402A (zh) * | 2015-06-19 | 2016-12-28 | Hgst荷兰公司 | 用于对于数据传递的单遍熵检测的设备和方法 |
CN108141225A (zh) * | 2016-07-14 | 2018-06-08 | 华为技术有限公司 | 使用simd引擎的通用数据压缩 |
CN110007962A (zh) * | 2019-03-08 | 2019-07-12 | 浙江大学 | 一种基于代码自动生成的指令集模拟方法 |
CN110007955A (zh) * | 2019-03-08 | 2019-07-12 | 浙江大学 | 一种指令集模拟器译码模块代码的压缩方法 |
CN110032432A (zh) * | 2018-12-03 | 2019-07-19 | 阿里巴巴集团控股有限公司 | 实例的压缩方法和装置、实例的解压方法和装置 |
-
2019
- 2019-08-01 CN CN201910705844.9A patent/CN110572160A/zh active Pending
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160077835A1 (en) * | 2011-05-03 | 2016-03-17 | Qualcomm Incorporated | Methods and apparatus for storage and translation of entropy encoded software embedded within a memory hierarchy |
CN102419715A (zh) * | 2011-08-29 | 2012-04-18 | 展讯通信(上海)有限公司 | 代码的压缩方法及其压缩装置、代码的执行方法 |
US20140317377A1 (en) * | 2011-12-30 | 2014-10-23 | Elmoustapha Ould-Ahmed-Vall | Vector frequency compress instruction |
CN104331269A (zh) * | 2014-10-28 | 2015-02-04 | 中国科学院自动化研究所 | 一种嵌入式系统可执行代码压缩方法及代码解压缩系统 |
CN106257402A (zh) * | 2015-06-19 | 2016-12-28 | Hgst荷兰公司 | 用于对于数据传递的单遍熵检测的设备和方法 |
CN108141225A (zh) * | 2016-07-14 | 2018-06-08 | 华为技术有限公司 | 使用simd引擎的通用数据压缩 |
CN110032432A (zh) * | 2018-12-03 | 2019-07-19 | 阿里巴巴集团控股有限公司 | 实例的压缩方法和装置、实例的解压方法和装置 |
CN110007962A (zh) * | 2019-03-08 | 2019-07-12 | 浙江大学 | 一种基于代码自动生成的指令集模拟方法 |
CN110007955A (zh) * | 2019-03-08 | 2019-07-12 | 浙江大学 | 一种指令集模拟器译码模块代码的压缩方法 |
Non-Patent Citations (1)
Title |
---|
蔡铭等: "智能家居场景联动中基于知识图谱的隐式冲突检测方法研究", 《计算机学报》 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115586923A (zh) * | 2022-11-29 | 2023-01-10 | 摩尔线程智能科技(北京)有限责任公司 | 用于指令集的操作码编码方法、装置和计算机可读介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106777292B (zh) | 一种数据序列化方法及装置 | |
US8838551B2 (en) | Multi-level database compression | |
CA2283591C (en) | Data coding network | |
CN108536657B (zh) | 人为填写的地址文本相似度处理方法和系统 | |
CN110008192A (zh) | 一种数据文件压缩方法、装置、设备及可读存储介质 | |
CA2939959A1 (en) | Parallel decision tree processor architecture | |
CN101783788A (zh) | 文件压缩、解压缩方法、装置及压缩文件搜索方法、装置 | |
US7973680B2 (en) | Method and system for creating an in-memory physical dictionary for data compression | |
CN109857457B (zh) | 一种在双曲空间中学习源代码中的函数层次嵌入表示方法 | |
CN105302915B (zh) | 基于内存计算的高性能数据处理系统 | |
US20200185058A1 (en) | Gene sequencing data compression preprocessing, compression and decompression method, system, and computer-readable medium | |
CN103248369A (zh) | 基于fpga的压缩系统及其方法 | |
CN107491508B (zh) | 一种基于循环神经网络的数据库查询时间预测方法 | |
CN104869397B (zh) | 一种基于slwe概率估计模型的自适应区间编码方法及解码方法 | |
CN100349160C (zh) | 一种对数据进行有限穷举优化的压缩方法 | |
KR20030071327A (ko) | 개선된 허프만 디코딩 방법 및 장치 | |
CN110572160A (zh) | 一种指令集模拟器译码模块代码的压缩方法 | |
CN111045670A (zh) | 一种二进制代码与源代码间复用关系的识别方法与装置 | |
CN110737469A (zh) | 一种功能粒度上基于语义信息的源代码相似度评估方法 | |
CN110007955B (zh) | 一种指令集模拟器译码模块代码的压缩方法 | |
US6388585B1 (en) | Method for data compression and decompression using decompression instructions | |
CN110008236B (zh) | 一种数据分布式自增编码方法、系统、设备及介质 | |
CN116579319A (zh) | 一种文本相似度的分析方法及系统 | |
CN110021349B (zh) | 基因数据的编码方法 | |
CN103326731B (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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20191213 |