CN110597554A - 一种指令集模拟器指令函数自动生成优化方法 - Google Patents
一种指令集模拟器指令函数自动生成优化方法 Download PDFInfo
- Publication number
- CN110597554A CN110597554A CN201910705850.4A CN201910705850A CN110597554A CN 110597554 A CN110597554 A CN 110597554A CN 201910705850 A CN201910705850 A CN 201910705850A CN 110597554 A CN110597554 A CN 110597554A
- Authority
- CN
- China
- Prior art keywords
- instruction
- function
- micro
- instruction set
- operand
- 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
-
- 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/30181—Instruction operation extension or modification
Abstract
本发明公开了一种指令集模拟器指令函数自动生成优化方法。该方法通过指令微操作和指令执行表达式标准化规则,可以有效提高指令函数自动生成方法的指令覆盖率。指令微操作提供指令集手册中为了描述简便大量使用的功能函数。指令执行表达式标准化规则限制了指令执行表达式中过于随意描述方式,对不符合规范的表达式进行等价的轻微修改,使得可以自动生成该指令的指令函数。该方法适用于多种类型的指令集,能有效降低开发人员的编程工作量,提高指令集模拟器的开发效率,具有较好的应用前景。
Description
技术领域
本发明涉及指令集模拟,尤其涉及一种指令集模拟器指令函数自动生成优化方法。
背景技术
由于指令集模拟器具有摆脱硬件数目限制,运行过程可调试,随时获取设备状态等优点,在硬件仿真、芯片设计等领域都得到了广泛的应用。然而,设计并定制一款特定的指令集模拟器却是一项非常复杂的工作。
模拟器的技术难点在于正确地模拟指令执行。指令的执行过程可分为:取指、译码、执行三个步骤。译码步骤被模拟器映射成译码模块,执行步骤则被映射成执行模块。译码模块通过匹配指令操作码,确定指令类型,并根据指令编码格式,分割提取各特征段信息。实际情况下,由于一个指令集往往包含上百条指令,而译码模块又需要支持所有指令类型的识别,故若指令集操作码分布无规律,则人工编写相关模块代码的工作量极大。
执行模块由整套指令集的指令函数组成。由于指令函数与指令种类一一对应,故若指令集数目庞大,指令函数的编写工作将变得非常繁重。按平均每个指令函数有20行代码计算,对于上百条指令的指令集而言,则仅指令函数一项的开发工作就包含了几千行代码,人工实现不仅费时费力而且容易出错。
申请号为201910175584.9的发明专利申请公开了一种基于代码自动生成的指令集模拟方法,它是一种指令函数自动生成技术,包括四个部分:指令执行判断模块,操作数定义与赋值模块,指令执行模块,结果写回模块。其中,指令执行模块用来判断指令是否执行;操作数定义与赋值模块用来定义指令所涉及的操作数定义与赋值;指令执行模块用来模拟指令的执行动作;结果写回模块用来将结果写到目标寄存器。该方法虽然大幅度的减轻了模拟器研发人员的工作量,但是还是存在一部分指令的指令函数不能自动生成,也就是说存在优化空间。
发明内容
本发明的目的在于针对现有技术的不足,提供了一种指令集模拟器指令函数自动生成优化方法。
本发明的目的是通过以下技术方案来实现的:一种指令集模拟器指令函数自动生成优化方法,包括以下步骤:
(1)将目标指令集中所有指令均按照指令编码规则进行记录,记录的过程中按照指令操作标准化规则,对其进行等价修改,并汇总保存至指令集编码文件中;
(2)统计目标指令集手册中使用的微操作,并实现微操作,将其作为指令集模拟器的基本操作,实现方式为函数或宏;
(3)对需要提供不定参数的微操作,在指令函数自动生成程序中为其定制判断操作,从使用到微操作的指令执行表达式中获取所需的不定参数;
(4)读取步骤(1)得到的指令集编码文件中的EX字段、DE字段、DT字段,包括指令执行表达式、延迟周期数、指令操作数及其数据类型的指令信息,利用指令函数自动生成技术自动生成指令函数;通过步骤(2)和(3)中实现的指令微操作,使得指令函数可执行;
所述指令编码规则为:
NA:指令的名字_指令执行单元
指令格式
DT:指令操作数及其数据类型
OP:指令的op字段
DE:延迟周期数
EX:指令执行表达式
所述指令操作标准化规则为规定目标指令集手册中下标和幂常数的表示方法,以适应高级语言的语法规则;
所述下标的表示方法为将操作bi表示为b&i;
所述幂常数的表示方法为将使用幂操作符表示的数字表示为宏定义的常数。
进一步地,所述步骤(3)中的不定参数包括操作数的长度、截断的长度、操作数的下标。
进一步地,所述步骤(4)中的指令函数包括指令执行判断模块,操作数定义与赋值模块,指令执行模块,结果写回模块。
本发明的有益效果是:
(1)开发人员只需按特定格式录入指令手册中的指令信息,即可自动生成指令函数代码,有效地降低开发新型指令集模拟器的工作量,提高生产效率;
(2)通过自动生成大部分模拟器代码,消除了由于人工所带来的各种不易发现的错误,降低了模拟器开发过程中的调试难度,能有效降低开发人员的编程工作量,大幅度缩短了模拟器的研发周期,提高指令集模拟器的开发效率,具有较好的应用前景;
(3)由于使用了与指令集手册中相同的微操作函数,对于同一系列的不同指令集架构,易于复用和扩展微操作函数。
附图说明
图1是本方法流程图。
具体实施方式
本发明是一种指令集模拟器的指令函数自动生成优化方法,所述的指令集模拟器指令函数自动生成方法是指从指令集编码文件中读取相应的信息,自动生成指令函数的方法。所述指令函数是指令在硬件上的操作,映射到软件层面的具体行为,实现为函数,故称为指令函数。
本发明流程图如图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]
0P:001 1010 DT:sint dst,xsint src2
OP:011 1000 DT:slong dst,slong src2
EX:abs(src2)->dst
所述指令操作标准化规则为规定目标指令集手册中下标和幂常数的表示方法,以适应高级语言的语法规则。
所述下标的表示方法为,将操作bi表示为b&i;具体的,操作bi是取操作数b的第i位,要对其进行等价转换,转为b&i,通过二进制位的与运算,取得操作数b的第i位。
所述幂常数的表示方法为,将使用幂操作符表示的数字表示为宏定义的常数;具体的,对使用幂操作符表示的数字进行等价转换,转换为宏定义的常数,如2^3表示为“#define max3 8”,使用max3来表示2^3。
(2)实现目标指令集手册中使用的微操作,并将其作为模拟器的基本操作,具体为:统计目标指令集手册中使用的微操作,并实现为指令微操作,实现方式为函数或宏;对于同名的微操作均在同一个指令微操作中实现;接收的参数数据类型不同,对应着不同的行为。该步骤提供了高级语言对于指令集手册中使用的微操作的支持,使用了这些微操作的指令可以通过这一步骤的支持实现指令函数的自动生成。
(3)对需要提供不定参数的微操作,在指令函数自动生成程序中为其定制判断操作,提供所需的不定参数;TMS320C64x指令集模拟器中需要提供的不定参数包括:操作数的长度、截断的长度、操作数的下标;部分需要不定参数的微操作及对应的判断操作如表1所示,不定参数可以从使用到微操作的指令执行表达式来获取,通过观察指令执行表达式,找到规律提取特征,从而获得操作数的长度,截断的长度,操作数的下标等。
如sat(取饱和)操作需要获取操作数的长度,从而实现对应的取饱和操作;而在程序中传入的参数的数据类型是固定的,因此需要在指令函数自动生成程序中加入相应的判断,根据其传入的参数的数据类型,调用对应的微操作函数,具体为:
(3.1)判断包含sat操作的执行表达式中是否有“ubyte”字段,若有,则操作数长度是无符号8位;
(3.2)判断包含sat操作的执行表达式中是否有“umsb16”字段,若有,则操作数长度是无符号位16位;
(3.3)判断包含sat操作的执行表达式中是否有“tmp”字段,若有,则操作数长度是有符号32位;
(3.4)判断包含sat操作的执行表达式中是否有“sb16”字段,若有,则操作数长度是有符号16位;
表1
(4)读取步骤(1)得到的指令集编码文件中的EX字段、DE字段、DT字段,包括指令执行表达式、延迟周期数、指令操作数及其数据类型的指令信息,利用指令函数自动生成技术自动生成指令函数;通过步骤(2)和(3)中实现的指令微操作,使得指令函数可执行。所述指令函数包括指令执行判断模块,操作数定义与赋值模块,指令执行模块,结果写回模块。
实施例
本发明的目的在于使用微操作和指令操作标准化来优化现有的指令函数自动生成技术,下面以sat微操作为例进一步说明本发明的工作原理和工作过程:
由于TMS320C64x指令集手册中使用了sat操作来简化指令执行表达式的描述方式,而高级语言中是没有对应的sat函数的,因此现有的指令函数自动生成技术无法自动生成使用了sat操作的指令。本发明提供的微操作函数,实现目标指令集手册中使用的sat操作,使得指令函数自动生成技术可以自动生成包含sat操作的指令,有效提高了指令函数自动生成技术对于指令的覆盖率。另外,还有一部分指令的执行表达式中含有一些表达式,如2^31,b1,2,3这类高级编程语言无法直接表达的表达式,导致现有的指令函数自动生成技术无法自动生成包含该类表达式的指令对应的指令函数。通过本发明中的指令操作标准化规则,将2^31转换成宏定义的常数,而将b1,2,3转换成b&0x00000007,程序可以直接将其从指令编码文件中拷贝到对应的指令函数中,从而自动生成其指令函数。
手工实现虚拟机的过程中,译码函数的编写是一项极其复杂的任务。由于TMS302C64x架构的指令集的操作码分布不存在明显的规律,用户手动定制译码函数非常困难,根据实际测试得到用户手动定制43条指令函数需耗费14天,而采用本发明指令函数自动生成优化方法自动生成220条指令函数仅需耗费10天,即自动生成43条指令函数仅需要2天的时间,相对于用户手动定制缩短了12天的研发时间。
Claims (3)
1.一种指令集模拟器指令函数自动生成优化方法,其特征在于,包括以下步骤:
(1)将目标指令集中所有指令均按照指令编码规则进行记录,记录的过程中按照指令操作标准化规则,对其进行等价修改,并汇总保存至指令集编码文件中。
(2)统计目标指令集手册中使用的微操作,并实现微操作,将其作为指令集模拟器的基本操作,实现方式为函数或宏。
(3)对需要提供不定参数的微操作,在指令函数自动生成程序中为其定制判断操作,从使用到微操作的指令执行表达式中获取所需的不定参数。
(4)读取步骤(1)得到的指令集编码文件中的EX字段、DE字段、DT字段,利用指令函数自动生成技术自动生成指令函数;通过步骤(2)和(3)中实现的指令微操作,使得指令函数可执行;
所述指令编码规则为:
NA:指令的名字_指令执行单元
指令格式
DT:指令操作数及其数据类型
OP:指令的op字段
DE:延迟周期数
EX:指令执行表达式
所述指令操作标准化规则为规定目标指令集手册中下标和幂常数的表示方法,以适应高级语言的语法规则;
所述下标的表示方法为将操作bi表示为b&i;
所述幂常数的表示方法为将使用幂操作符表示的数字表示为宏定义的常数。
2.根据权利要求1所述指令集模拟器指令函数自动生成优化方法,其特征在于,所述步骤(3)中的不定参数包括操作数的长度、截断的长度、操作数的下标。
3.根据权利要求1所述指令集模拟器指令函数自动生成优化方法,其特征在于,所述步骤(4)中的指令函数包括指令执行判断模块,操作数定义与赋值模块,指令执行模块,结果写回模块。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910705850.4A CN110597554A (zh) | 2019-08-01 | 2019-08-01 | 一种指令集模拟器指令函数自动生成优化方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910705850.4A CN110597554A (zh) | 2019-08-01 | 2019-08-01 | 一种指令集模拟器指令函数自动生成优化方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110597554A true CN110597554A (zh) | 2019-12-20 |
Family
ID=68853336
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910705850.4A Pending CN110597554A (zh) | 2019-08-01 | 2019-08-01 | 一种指令集模拟器指令函数自动生成优化方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110597554A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114328706A (zh) * | 2022-03-14 | 2022-04-12 | 西安羚控电子科技有限公司 | 一种icd图形化表达系统及方法 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7823122B1 (en) * | 2003-12-16 | 2010-10-26 | The Mathworks, Inc. | Model and subsystem function signatures |
CN102789418A (zh) * | 2012-06-27 | 2012-11-21 | 北京大学深圳研究生院 | 处理器功能仿真模型生成装置、方法及功能验证方法 |
CN102830975A (zh) * | 2012-08-15 | 2012-12-19 | 深圳市翌日科技有限公司 | 一种汇编语言到高级语言的代码转换方法和装置 |
CN104011672A (zh) * | 2011-12-30 | 2014-08-27 | 英特尔公司 | 转置指令 |
CN104965687A (zh) * | 2015-06-04 | 2015-10-07 | 北京东方国信科技股份有限公司 | 基于指令集生成的大数据处理方法及装置 |
CN106126314A (zh) * | 2016-06-15 | 2016-11-16 | 龙芯中科技术有限公司 | 扩充指令的模拟方法和装置 |
CN108334336A (zh) * | 2017-10-10 | 2018-07-27 | 平安普惠企业管理有限公司 | 原子操作自动化方法、系统、装置和计算机存储介质 |
CN109271168A (zh) * | 2018-08-09 | 2019-01-25 | 上海鲸鱼机器人科技有限公司 | 一种代码转换方法、装置及设备、存储介质 |
CN110007962A (zh) * | 2019-03-08 | 2019-07-12 | 浙江大学 | 一种基于代码自动生成的指令集模拟方法 |
-
2019
- 2019-08-01 CN CN201910705850.4A patent/CN110597554A/zh active Pending
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7823122B1 (en) * | 2003-12-16 | 2010-10-26 | The Mathworks, Inc. | Model and subsystem function signatures |
CN104011672A (zh) * | 2011-12-30 | 2014-08-27 | 英特尔公司 | 转置指令 |
CN102789418A (zh) * | 2012-06-27 | 2012-11-21 | 北京大学深圳研究生院 | 处理器功能仿真模型生成装置、方法及功能验证方法 |
CN102830975A (zh) * | 2012-08-15 | 2012-12-19 | 深圳市翌日科技有限公司 | 一种汇编语言到高级语言的代码转换方法和装置 |
CN104965687A (zh) * | 2015-06-04 | 2015-10-07 | 北京东方国信科技股份有限公司 | 基于指令集生成的大数据处理方法及装置 |
CN106126314A (zh) * | 2016-06-15 | 2016-11-16 | 龙芯中科技术有限公司 | 扩充指令的模拟方法和装置 |
CN108334336A (zh) * | 2017-10-10 | 2018-07-27 | 平安普惠企业管理有限公司 | 原子操作自动化方法、系统、装置和计算机存储介质 |
CN109271168A (zh) * | 2018-08-09 | 2019-01-25 | 上海鲸鱼机器人科技有限公司 | 一种代码转换方法、装置及设备、存储介质 |
CN110007962A (zh) * | 2019-03-08 | 2019-07-12 | 浙江大学 | 一种基于代码自动生成的指令集模拟方法 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114328706A (zh) * | 2022-03-14 | 2022-04-12 | 西安羚控电子科技有限公司 | 一种icd图形化表达系统及方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111078290B (zh) | 一种用于可扩展指令集的编译器及编译方法 | |
US7313773B1 (en) | Method and device for simulator generation based on semantic to behavioral translation | |
US8522221B1 (en) | Techniques for automatic generation of instruction-set documentation | |
US5949993A (en) | Method for the generation of ISA simulators and assemblers from a machine description | |
CN108228187B (zh) | 一种数值程序的全局优化方法 | |
WO2002056173A1 (en) | Methods and apparatus for deep embedded software development | |
US8732679B2 (en) | Loop transformation for computer compiler optimization | |
CN103098026A (zh) | 集成电路的系统、架构和微架构(sama)表达方式 | |
US8935512B2 (en) | Instruction operation code generation system | |
Reshadi et al. | Hybrid-compiled simulation: An efficient technique for instruction-set architecture simulation | |
Ceng et al. | C compiler retargeting based on instruction semantics models | |
CN110597554A (zh) | 一种指令集模拟器指令函数自动生成优化方法 | |
US8532974B2 (en) | Developing system and method for optimizing the energy consumption of an application program for a digital signal processor | |
Grigoraş et al. | Aspect driven compilation for dataflow designs | |
KR20080096306A (ko) | 규칙에 기반하여 스케일링 쉬프트의 최적의 위치를 찾는컴파일 방법 및 시스템 | |
US8621444B2 (en) | Retargetable instruction set simulators | |
CN110007962A (zh) | 一种基于代码自动生成的指令集模拟方法 | |
US20090112568A1 (en) | Method for Generating a Simulation Program Which Can Be Executed On a Host Computer | |
CN106815003A (zh) | 一种计算机语言的交互系统及交互方法 | |
CN101916179B (zh) | 控制寄存器中的标志位的存取方法 | |
Knuth | Runcible—algebraic translation on a limited computer | |
CN113835688B (zh) | 一种科学计算语言解释器的对象封装方法 | |
Rus et al. | An algebraic language processing environment | |
US9830174B2 (en) | Dynamic host code generation from architecture description for fast simulation | |
CN115309401A (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 | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20191220 |