CN109426503B - 提供仿真激励的方法及装置 - Google Patents
提供仿真激励的方法及装置 Download PDFInfo
- Publication number
- CN109426503B CN109426503B CN201710598614.8A CN201710598614A CN109426503B CN 109426503 B CN109426503 B CN 109426503B CN 201710598614 A CN201710598614 A CN 201710598614A CN 109426503 B CN109426503 B CN 109426503B
- Authority
- CN
- China
- Prior art keywords
- instruction
- code
- simulated
- access
- code instruction
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
-
- 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
- G06F9/45508—Runtime interpretation or emulation, e g. emulator loops, bytecode interpretation
Abstract
一种提供仿真激励的方法及装置,在该方法中功能模拟器获取未被译码的待仿真代码指令流,将所述待仿真代码指令流中的各待仿真代码指令翻译为中间代码指令,根据中间代码指令中对应有访存地址的中间代码访存指令,在所述未被译码的待仿真代码指令流中确定与所述访存地址对应且未被译码的访存指令,将所述访存地址,以及与所述访存地址对应的未被译码的访存指令,提供给性能模拟器,以提高性能模拟器进行时序级模拟的准确度。
Description
技术领域
本申请涉及建模仿真技术领域,尤其涉及一种提供仿真激励的方法及装置。
背景技术
进行建模仿真过程中,通常由功能模拟器对被模拟对象的功能性方面进行模拟,并输出指令流,为性能模拟器提供仿真激励。性能模拟器利用功能模拟器提供的仿真激励,对被模拟的对象进行时序级的精确模拟。
目前,功能模拟器广泛采用二进制翻译技术,将被模拟对象对应的源体系结构对应的指令流(可以称为guest code,也可以称为源机器码),译码为中间代码序列,并将中间代码序列翻译为被模拟对象运行的目的体系架构对应的指令流(可以称为host code,也可以称为翻译码),提供给性能模拟器,实现为性能模拟器提供仿真激励。
随着进阶精简指令集机器(Advanced RISC Machine,ARM)处理器的授权内核被广泛用于手机等诸多电子产品,使得ARMv8架构作为下一代处理器的核心技术而受到普遍关注。功能模拟器如何实现对ARMv8架构的功能性方面模拟,也是备受关注的。功能模拟器利用上述二进制翻译技术对ARMv8架构进行功能性方面模拟,为性能模拟器提供的仿真激励,性能模拟器进行时序级模拟的准确度较低。
发明内容
本申请实施例提供一种提供仿真激励的方法及装置,以提高性能模拟器进行时序级模拟的准确度。
第一方面,本申请提供了一种提供仿真激励的方法,功能模拟器获取未被译码的待仿真代码指令流,并将未被译码的待仿真代码指令流译码为中间代码指令,根据中间代码指令中对应有访存地址的中间代码访存指令,在未被译码的待仿真代码指令流中确定与访存地址对应且未被译码的访存指令,并将访存地址,以及与访存地址对应的未被译码的访存指令,提供给性能模拟器,使得性能模拟器进行性能模拟操作时,将访存指令与访存地址对应,进而提高准确性。
其中,未被译码的待仿真代码指令流是指需要在性能模拟器中被模拟的对象在源体系结构中对应的指令。
一种可能的设计中,功能模拟器预先创建微操作码指令索引表,在该微操作码指令索引表中记录中间代码指令中包括的每一微操作码指令对应的未被译码的待仿真代码指令的索引。在确定了对应有访存地址的中间代码访存指令后,确定访存地址在预先创建的微操作码指令索引表中对应的索引,通过查询微操作码指令索引表,则可确定访存地址在预先创建的微操作码指令索引表中对应的索引,进而可根据该索引在未被译码的待仿真代码指令流中确定与所述访存地址对应且未被译码的访存指令,实现准确快速的确定出与访存地址对应的未被译码的访存指令。
另一种可能的设计中,若中间代码指令进行了优化,则功能模拟器确定优化后的中间代码访存指令与优化前的中间代码访存指令之间的位置索引偏移量,根据优化后的中间代码访存指令的位置索引,以及所述位置索引偏移量,确定访存地址在预先创建的微操作码指令索引表中对应的索引,提高确定出与访存地址对应的未被译码的访存指令的准确性。
又一种可能的设计中,功能模拟器可调用访存信息记录函数,将访存地址在预先创建的微操作码指令索引表中对应的索引作为所述访存信息记录函数的参数输入值,通过访存信息记录函数,在未被译码的待仿真代码指令流中,确定与访存地址对应且未被译码的访存指令,实现采用二进制动态翻译技术,生成目标主机代码指令。
又一种可能的设计中,功能模拟器获取未被译码的待仿真代码指令流之后,以指令翻译的基本单位为最小缓存单位,缓存待仿真代码指令流,并将缓存的所述待仿真代码指令流,提供给性能模拟器,其中,与所述访存地址对应的未被译码的访存指令包含在所述待仿真代码指令流中。
其中,每一缓存单位中缓存的待仿真代码指令流中包括源体系结构编译生成的二进制编码、访存指令标记以及访存地址。
本申请中功能模拟器将缓存的所述待仿真代码指令流,提供给性能模拟器,一方面能够将访存地址,以及与访存地址对应的未被译码的访存指令,提供给性能模拟器,使得性能模拟器进行性能模拟操作时,将访存指令与访存地址对应,进而提高准确性。另一方面,功能模拟器将未被译码的全部待仿真代码指令流提供给性能模拟器,可以使性能模拟器对各种模拟对象(例如自研核)的自定义特性,基于原始待仿真代码指令流进行时序级模拟。
第二方面,本申请提供了一种提供仿真激励的装置,该提供仿真激励的装置具备实现上述第一方面涉及的功能模拟器的功能,所述功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多个与上述功能相对应的模块。所述模块可以是软件和/或硬件。
一种可能的设计中,提供仿真激励的装置包括获取单元、处理单元和输出单元。
另一种可能的设计中,提供仿真激励的装置还包括缓存单元。
其中,获取单元、处理单元、输出单元和缓存单元执行的功能可以和各方法步骤相对应,在此不予赘述。
第三方面,本申请提供了一种提供仿真激励的装置,提供仿真激励的装置可应用于功能模拟器,包括至少一个处理元件和至少一个存储元件,其中所述至少一个存储元件用于存储程序和数据,所述至少一个处理元件用于执行本申请第一方面中提供的方法。
第四方面,本申请提供了一种提供仿真激励的装置,应用于功能模拟器,包括用于执行以上第一方面的方法的至少一个处理元件(或芯片)。
第五方面,本申请提供了一种提供仿真激励的程序,该程序在被处理器执行时用于执行以上第一方面的方法。
第六方面,本申请提供了一种计算机存储介质,例如计算机可读存储介质,存储有第五方面提及的计算机软件程序。
本申请提供的提供仿真激励的方法及装置,功能模拟器在未被译码的待仿真代码指令流中确定与访存地址对应且未被译码的访存指令,并将访存地址,以及与访存地址对应的未被译码的访存指令,提供给性能模拟器,使得性能模拟器进行性能模拟操作时,将访存指令与访存地址对应,进而提高准确性。
附图说明
图1为本申请实施例提供的提供仿真激励的方法所应用的系统架构图;
图2为本申请实施例提供的提供仿真激励的方法流程图;
图3为本申请实施例提供的待仿真代码指令流与中间代码指令之间的关系示意图;
图4为本申请实施例提供的待仿真代码指令流、中间代码指令、微操作码指令索引表中的索引之间的关系示意图;
图5为本申请实施例提供的待仿真代码指令流、优化前中间代码指令、优化后中间代码指令、微操作码指令索引表中的索引之间的关系示意图;
图6为本申请实施例提供的待仿真代码指令流、优化前中间代码指令、优化后中间代码指令、微操作码指令索引表中的索引以及目标主机代码指令之间的关系示意图;
图7为本申请实施例提供的缓存待仿真代码指令的实施示意图;
图8为本申请实施例提供的提供仿真激励的装置的一种示意图;
图9为本申请实施例提供的提供仿真激励的装置的另一种示意图。
具体实施方式
下面将结合附图,对本申请实施例中的技术方案进行描述。
首先,对本申请中的部分用语进行解释说明,以便于本领域技术人员理解。
1)、功能模拟器,用于对被模拟的对象,进行功能性的模拟,确保功能性方面正确。
2)、性能模拟器,用于对被模拟的对象,进行时序级的模拟。例如,对处理器的流水线各级处理单元进行模拟。
3)、待仿真代码指令,是指被模拟对象对应的源体系结构对应的指令,也称为Guest code,或者源机器码。
4)、目标主机代码指令,是指被模拟对象运行的目的体系架构对应的指令,也可称为Host code,或翻译码。目标主机代码指令可以理解为是实际在硬件主机上运行的程序。
5)、访存指令,是指访问内存的指令。
6)、访存地址,是指指令访问内存的地址。
7)、中间代码指令,是指具备通用的表达形式(intermediate code)的代码指令。将待仿真代码指令翻译为目标主机代码指令的过程可以理解为是:首先将待仿真代码指令翻译为通用的表达形式,然后再将通用的表达形式(intermediate code)翻译为目标主机代码指令。
8)、微操作码指令,是指中间代码指令对应的操作指令,一个中间代码指令可对应多个微操作码指令。
9)、指令翻译的基本单位,也称为Basic Block(Translated Block,TB),由1到N指令组成,以分支指令,或者到达页边界作为Block的终止条件。
10)、二进制翻译技术,是一种编译技术,它将源体系结构编译生成的二进制代码(源机器码)翻译为可以在目的体系结构上运行的代码(翻译码)。二进制翻译技术分为静态翻译与动态翻译。
11)、ABI规范(Application Binary Interface),是不同芯片指令架构的函数调用需要遵循的规范,可以包括在函数调用间可以修改的寄存器信息等。
本申请实施例涉及的提供仿真激励的方法可应用于建模仿真技术中,例如应用于对芯片进行建模仿真的图1所示的系统架构。图1所示的系统架构中,主要包括功能模拟器和性能模拟器。其中,功能模拟器为基于二进制翻译的功能级模拟的软件,可以提供指令流、访存地址等仿真激励。性能模拟器对被模拟的对象(例如处理器(central processingunit,CPU)等)进行时序级仿真的精确模拟,并输出仿真结果(例如缓存(cache)命中率等信息)。性能模拟器进行时序级精确模拟所需要的激励输入(如指令流、访存地址等信息)由功能模拟器来提供。功能模拟器对被模拟对象的功能进行模拟,并确保模拟的正确。若性能模拟器对CPU进行精确模拟,功能模拟器对CPU功能进行模拟,则模拟的正确可以理解为是功能模拟器侧的CPU需要与被测的性能模拟器中的CPU属于同一个系统架构,具有相同的指令集和寄存器等。功能模拟器与性能模拟器都运行在服务器上。性能模拟器在服务器上运行过程中,可以通过控制、查询接口对功能模拟器的状态进行查询。其中,服务器可以为业界通用的服务器(例如基于x86、或者arm等芯片的服务器)。该服务器运行的操作系统可以为业界通用的操作系统(例如windows、linux等操作系统)。
图1所示的系统架构中,功能模拟器为性能模拟器提供仿真激励时,可采用二进制翻译技术,将被模拟对象对应的待仿真代码指令流译码为中间代码序列,并将中间代码序列翻译为被模拟对象运行的目的体系架构对应的目标主机代码指令,将该目标主机代码指令提供给性能模拟器。性能模拟器利用目标主机代码指令对被模拟对象进行时序级模拟时,是将各目标主机代码指令随机进行时序级模拟的,并不能准确的将访存指令与访存地址对应,故使性能模拟器进行时序级模拟的准确度较低。
有鉴于此,本申请实施例提供一种提供仿真激励的方法,在该方法中,功能模拟器在未被译码的待仿真代码指令流中确定与访存地址对应且未被译码的访存指令,并将访存地址,以及与访存地址对应的未被译码的访存指令,提供给性能模拟器,使得性能模拟器进行性能模拟操作时,将访存指令与访存地址对应,进而提高准确性。
图2所示为本申请实施例涉及的提供仿真激励的方法实施流程图,图2所示的方法的执行主体可以是功能模拟器,也可以是功能模拟器中的独立部件,当然还可以是其它能够执行相应功能的部件,本申请实施例不作限定,以下实施例中以执行主体为功能模拟器为例进行说明。参阅图2所示,该方法包括:
S101:获取未被译码的待仿真代码指令流。
本申请实施例中未被译码的待仿真代码指令流是指需要在性能模拟器中被模拟的对象在源体系结构中对应的指令。例如,被模拟的对象为基于ARMv8体系架构的处理器,则待仿真代码指令流就是基于ARMv8的指令流。
本申请实施例中功能模拟器,可以直接获取到未被译码的原始待仿真代码指令流。
S102:将获取待仿真代码指令流中的各待仿真代码指令翻译为中间代码指令。
本申请实施例中,功能模拟器可以采用诸如二进制翻译技术将获取到的待仿真代码指令流中的各待仿真代码指令翻译为中间代码指令。
S103:根据中间代码指令中对应有访存地址的中间代码访存指令,在未被译码的待仿真代码指令流中确定与访存地址对应且未被译码的访存指令。
其中,每一待仿真代码指令译码得到的中间代码指令对应一个或多个微操作码指令,通过该微操作码指令可以确定待仿真代码指令所要被模拟的操作。其中,若中间代码指令对应的微操作码指令中包括访存地址,则可说明该中间代码指令为中间代码访存指令,对应的原始未被译码的待仿真代码指令也为访存指令。
例如,图3中,待仿真代码指令流中包括索引值为分别为0,1,2,3……20的21个待仿真代码指令,第14个待仿真代码指令(索引值为13的待仿真代码指令)对应的中间代码指令中包括五条微操作码,通过微操作码“Load/Store to/from virtual register”可以确定给中间代码指令对应有访存地址,该中间代码指令为中间代码访存指令。未被译码的待仿真代码指令流中与所述访存地址对应且未被译码的访存指令,则为第14个待仿真代码指令(索引值为13的待仿真代码指令)。
本申请实施例中为准确快速确定出与访存地址对应的未被译码的访存指令,可以预先创建微操作码指令索引表,在该微操作码指令索引表中记录中间代码指令中包括的每一微操作码指令对应的未被译码的待仿真代码指令的索引。其中,待仿真代码指令的索引可以理解为是待仿真代码指令的存储位置索引,例如图3中0,1,2,3……20可以理解为是待仿真代码指令的索引。索引值为0对应的中间代码的4条微操作码指令对应的未被译码的待仿真代码指令的索引为0,则微操作码指令索引表中可对应4条微操作码指令存储索引值为0,索引值为13对应的中间代码的5条微操作码指令对应的未被译码的待仿真代码指令的索引为13,则微操作码指令索引表中可对应5条微操作码指令存储索引值为13.例如图4所示。
其中,本申请实施例中,预先创建的微操作码指令索引表中对应每个待仿真代码指令能够存储的索引数量要大于每个待仿真代码指令译码得到的中间代码指令包括的微操作码指令的数量的上限,例如最大的待仿真代码指令码得到的中间代码指令包括的微操作码指令的数量为600,那么微操作码指令索引表中对应待仿真代码指令能够存储的索引数量要大于600,例如可以设置为640,以为后续优化提供余量。
由于微操作码指令索引表中记录了中间代码指令中包括的每一微操作码指令对应的未被译码的待仿真代码指令的索引,故在确定了对应有访存地址的中间代码访存指令后,对应的微操作码指令即可确定,进而通过查询微操作码指令索引表,则可确定访存地址在预先创建的微操作码指令索引表中对应的索引,进而可根据该索引在未被译码的待仿真代码指令流中确定与所述访存地址对应且未被译码的访存指令。
进一步的,功能模拟器可对译码得到的中间代码指令进行优化,以删除冗余指令。优化后的中间代码指令的个数可能比优化前的中间代码指令个数少,进而优化后的中间代码指令的位置索引也会发生变化,优化后的中间代码指令与优化前的中间代码指令之间存在位置索引偏移量。故,本申请实施例一种可能的实施方式中,若中间代码指令进行了优化,则确定优化后的中间代码访存指令与优化前的中间代码访存指令之间的位置索引偏移量,根据优化后的中间代码访存指令的位置索引以及位置索引偏移量,可确定访存地址在预先创建的微操作码指令索引表中对应的索引。如图5所示,指令13的微操作码指令A在优化前的中间代码指令中的位置索引为14,而在优化后的中间代码指令中的位置索引为7,优化后的中间代码访存指令与优化前的中间代码访存指令之间的位置索引偏移量为7。在确定指令13的微操作码指令A在预先创建的微操作码指令索引表中对应的索引时,可根据指令13的微操作码指令A在优化后的中间代码访存指令的位置7,加上位置索引偏移量7,得到指令13的微操作码指令A在优化前的中间代码访存指令的位置为14,进而可确定在优化前的中间代码访存指令的位置为14的微操作码指令在预先创建的微操作码指令索引表中对应的索引为13。
S104:将访存地址,以及与访存地址对应的未被译码的访存指令,提供给性能模拟器。
本申请实施例中功能模拟器可以采用二进制动态翻译技术,将访存地址,以及与访存地址对应的未被译码的访存指令翻译为目标主机代码指令,提供给性能模拟器。目标主机代码指令是指性能模拟器运行的硬件服务器处理器对应的体系架构指令,比如服务器是使用x86_64架构芯片,则目标主机代码指令就是x86_64指令。若待仿真代码指令流是基于ARMv8的指令流,则本申请实施例中可采用二进制动态翻译技术将ARMv8的指令流翻译为中间代码指令对应的访存地址,以及访存地址对应的ARMv8的指令流中原始未被译码的访存指令,翻译为x86_64指令提供给性能模拟器,例如图6所示。
本申请实施例中,功能模拟器可调用访存信息记录函数,根据相应的ABI规范,填充栈信息,实现采用二进制动态翻译技术,生成目标主机代码指令。例如,可将访存地址在预先创建的微操作码指令索引表中对应的索引作为所述访存信息记录函数的参数输入值,通过所述访存信息记录函数,在所述未被译码的待仿真代码指令流中,确定与所述访存地址对应且未被译码的访存指令,进而将访存地址,以及与访存地址对应的未被译码的访存指令翻译为目标主机代码指令,提供给性能模拟器。
本申请实施例中,功能模拟器在未被译码的待仿真代码指令流中确定与访存地址对应且未被译码的访存指令,并将访存地址,以及与访存地址对应的未被译码的访存指令,提供给性能模拟器,使得性能模拟器进行性能模拟操作时,将访存指令与访存地址对应,进而提高准确性。
一种可能的实施方式中,本申请实施例中,功能模拟器可在获取到未被译码的待仿真代码指令流之后,以指令翻译的基本单位为最小缓存单位,缓存获取到的待仿真代码指令流。其中,每一缓存单位中缓存的待仿真代码指令流中包括源体系结构编译生成的二进制编码、访存指令标记以及访存地址。
具体的,功能模拟器可在待仿真代码指令流译码为中间代码指令的译码阶段,缓存原始的未被译码的待仿真代码指令流。其中,每一待仿真代码指令中包括至少一个指令翻译的基本单位,以下为描述方便可将该指令翻译的基本单位称为TB块。每个TB块由1到N条指令组成,其中,N为大于等于1的正整数。故,功能模拟器可在待仿真代码指令流的译码阶段,以TB块为最小缓存单位,缓存获取到的待仿真代码指令流,在每一缓存单位中缓存的待仿真代码指令流中包括源体系结构编译生成的二进制编码、访存指令标记以及访存地址。功能模拟器缓存待仿真代码指令流的实施过程可参阅图7所示,图7中,每个TB块与被模拟对象相对应,例如图7中以缓存vCPU0为例进行说明,功能模拟器以TB块为单位,缓存vCPU0的各原始未被译码的待仿真代码指令流,每个TB块中包括源体系结构编译生成的二进制编码、访存指令标记以及访存地址,进而可使性能模拟器准确确定对每个被模拟对象进行时序级模拟时所需的各原始仿真代码指令。
本申请实施例中,性能模拟器若缓存了未被译码的待仿真代码指令流,则可将缓存的待仿真代码指令流,提供给性能模拟器,其中,与所述访存地址对应的未被译码的访存指令包含在该缓存的待仿真代码指令流中,一方面能够将访存地址,以及与访存地址对应的未被译码的访存指令,提供给性能模拟器,使得性能模拟器进行性能模拟操作时,将访存指令与访存地址对应,进而提高准确性。另一方面,功能模拟器将未被译码的全部待仿真代码指令流提供给性能模拟器,可以使性能模拟器对各种模拟对象(例如自研核)的自定义特性,基于原始待仿真代码指令流进行时序级模拟。
基于上述实施例涉及的提供仿真激励的方法,本申请实施例还提供一种提供仿真激励的装置。可以理解的是,提供仿真激励的装置为实现上述提供仿真激励的方法,其包含了执行各个功能相应的硬件结构和/或软件模块。结合本申请中所公开的实施例描述的各示例的单元及算法步骤,本申请实施例能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。本领域技术人员可以对每个特定的应用来使用不同的方法来实现所描述的功能,但是这种实现不应认为超出本申请实施例的技术方案的范围。
本申请实施例可以根据上述方法示例对提供仿真激励的装置进行功能单元的划分,例如,可以对应各个功能划分各个功能单元,也可以将两个或两个以上的功能集成在一个处理单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。需要说明的是,本申请实施例中对单元的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
在采用集成的单元的情况下,图8示出了本申请实施例提供的提供仿真激励的装置的一种结构示意图。参阅图8所示,提供仿真激励的装置100可包括获取单元101、处理单元102和输出单元103。其中,获取单元101,用于获取未被译码的待仿真代码指令流,将所述待仿真代码指令流中的各待仿真代码指令翻译为中间代码指令。处理单元102,用于根据中间代码指令中对应有访存地址的中间代码访存指令,在所述获取单元101获取的未被译码的待仿真代码指令流中确定与所述访存地址对应且未被译码的访存指令。输出单元103,用于将所述处理单元102确定的所述访存地址,以及与所述访存地址对应的未被译码的访存指令,提供给性能模拟器。
处理单元102,可采用如下方式在所述未被译码的待仿真代码指令流中确定与所述访存地址对应且未被译码的访存指令:确定所述访存地址在预先创建的微操作码指令索引表中对应的索引,其中,所述微操作码指令索引表中记录中间代码指令中包括的每一微操作码指令对应的未被译码的待仿真代码指令的索引;根据所述索引,在所述未被译码的待仿真代码指令流中确定与所述访存地址对应且未被译码的访存指令。
具体的,若所述中间代码指令进行了优化,则处理单元102确定优化后的中间代码访存指令与优化前的中间代码访存指令之间的位置索引偏移量;根据优化后的中间代码访存指令的位置,以及所述位置索引偏移量,确定所述访存地址在预先创建的微操作码指令索引表中对应的索引。
进一步的,处理单元102可调用访存信息记录函数,将所述索引作为所述访存信息记录函数的参数输入值,通过所述访存信息记录函数,在所述未被译码的待仿真代码指令流中,确定与所述访存地址对应且未被译码的访存指令。
一种可能的实施方式中,提供仿真激励的装置100还可包括缓存单元104,所述缓存单元104,用于在所述获取单元101获取未被译码的待仿真代码指令流之后,以指令翻译的基本单位为最小缓存单位,缓存所述待仿真代码指令流;其中,每一缓存单位中缓存的待仿真代码指令流中包括源体系结构编译生成的二进制编码、访存指令标记以及访存地址。所述输出单元103将所述缓存单元104缓存的所述待仿真代码指令流,提供给性能模拟器,其中,与所述访存地址对应的未被译码的访存指令包含在所述待仿真代码指令流中,以实现将与所述访存地址对应的未被译码的访存指令,提供给性能模拟器,并使性能模拟器准确确定对每个被模拟对象进行时序级模拟时所需的各原始仿真代码指令。
可以理解的是,本申请实施例中,提供仿真激励的装置100所涉及的与本申请实施例提供的技术方案相关的概念,解释和详细说明及其他步骤请参见前述方法或其他实施例中关于这些内容的描述,此处不做赘述。
应理解,以上提供仿真激励的装置100的各个单元的划分仅仅是一种逻辑功能的划分,实际实现时可以全部或部分集成到一个物理实体上,也可以物理上分开。且这些单元可以全部以软件通过处理元件调用的形式实现;也可以全部以硬件的形式实现;还可以部分单元以软件通过处理元件调用的形式实现,部分单元以硬件的形式实现。例如,处理单元可以为单独设立的处理元件,也可以集成在功能模拟器的某一个芯片中实现,此外,也可以以程序的形式存储于功能模拟器的存储器中,由功能模拟器的某一个处理元件调用并执行该单元的功能。其它单元的实现与之类似。此外这些单元全部或部分可以集成在一起,也可以独立实现。这里所述的处理元件可以是一种集成电路,具有信号的处理能力。在实现过程中,上述方法的各步骤或以上各个单元可以通过处理器元件中的硬件的集成逻辑电路或者软件形式的指令完成。
例如,以上这些单元可以是被配置成实施以上方法的一个或多个集成电路,例如:一个或多个特定集成电路(Application Specific Integrated Circuit,ASIC),或,一个或多个微处理器(digital singnal processor,DSP),或,一个或者多个现场可编程门阵列(Field Programmable Gate Array,FPGA)等。再如,当以上某个单元通过处理元件调度程序的形式实现时,该处理元件可以是通用处理器,例如中央处理器(Central ProcessingUnit,CPU)或其它可以调用程序的处理器。再如,这些单元可以集成在一起,以片上系统(system-on-a-chip,SOC)的形式实现。
请参阅图9,其为本申请实施例提供的另一种提供仿真激励的装置200,该提供仿真激励的装置200可应用于运行在服务器上的功能模拟器。该提供仿真激励的装置200可包括处理元件201和存储元件202,处理元件201调用存储元件202存储的程序,以执行以上方法实施例中所涉及的功能模拟器所执行的方法。此外,该提供仿真激励的装置200还可以包括接口203,用于与性能模拟器300交互信息,该接口例如为通用公共无线接口(commonpublic radio interface,CPRI),当提供仿真激励的装置200与性能模拟器300物理上布置在一起时,该接口可以为板内接口,或板间接口,这里的板是指电路板。
在另一种实现中,图8所示的各个单元可以是被配置成实施以上提供仿真激励的装置200执行的方法的一个或多个处理元件,这些处理元件设置于提供仿真激励的装置200上,这里的处理元件可以为集成电路,例如:一个或多个ASIC,或,一个或多个DSP,或,一个或者多个FPGA等。这些集成电路可以集成在一起,构成芯片。
例如,图9所示的各个单元可以集成在一起,以片上系统(system-on-a-chip,SOC)的形式实现,例如,提供仿真激励的装置200包括SOC芯片,用于实现以上方法。该芯片内可以集成处理元件201和存储元件202,由处理元件201调用存储元件202的存储的程序的形式实现以上功能模拟器执行的方法或图8所示各个单元的功能。或者,该芯片内可以集成至少一个集成电路,用于实现以上功能模拟器执行的方法或图8所示各个单元的功能。或者,可以结合以上实现方式,部分单元的功能通过处理元件调用程序的形式实现,部分单元的功能通过集成电路的形式实现。
不管采用何种方式,总之,以上提供仿真激励的装置200包括至少一个处理元件和存储元件,其中至少一个处理元件用于执行以上方法实施例所提供的功能模拟器执行的方法。处理元件可以以第一种方式:即执行存储元件存储的程序的方式执行以上方法实施例中功能模拟器执行的部分或全部步骤;也可以以第二种方式:即通过处理器元件中的硬件的集成逻辑电路结合指令的方式执行以上方法实施例中功能模拟器执行的部分或全部步骤;当然,也可以结合第一种方式和第二种方式执行以上方法实施例中功能模拟器执行的部分或全部步骤。
这里的处理元件同以上描述,可以是通用处理器,例如中央处理器(CentralProcessing Unit,CPU),还可以是被配置成实施以上方法的一个或多个集成电路,例如:一个或多个特定集成电路(Application Specific Integrated Circuit,ASIC),或,一个或多个微处理器(digital singnal processor,DSP),或,一个或者多个现场可编程门阵列(Field Programmable Gate Array,FPGA)等。
存储元件可以是一个存储器,也可以是多个存储元件的统称。
本申请实施例还提供一种提供仿真激励的装置,应用于功能模拟器,包括用于执行以上方法实施例的至少一个处理元件(或芯片)。
本申请提供一种提供仿真激励的程序,该程序在被处理器执行时用于执行以上实施例的方法。
本申请还提供一种计算机存储介质,例如计算机可读存储介质,其上存储有为执行上述涉及的仿真激励方法所需要的计算机软件程序。
本领域内的技术人员应明白,本申请实施例可提供为方法、系统、或计算机程序产品。因此,本申请实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请实施例是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本申请实施例进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请实施例的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (8)
1.一种提供仿真激励的方法,其特征在于,包括:
获取未被译码的待仿真代码指令流,将所述待仿真代码指令流中的各待仿真代码指令翻译为中间代码指令;
根据中间代码指令中对应有访存地址的中间代码访存指令,在所述未被译码的待仿真代码指令流中确定与所述访存地址对应且未被译码的访存指令;
将所述访存地址,以及与所述访存地址对应的未被译码的访存指令,提供给性能模拟器;
其中,在所述未被译码的待仿真代码指令流中确定与所述访存地址对应且未被译码的访存指令,包括:
确定所述访存地址在预先创建的微操作码指令索引表中对应的索引,其中,所述微操作码指令索引表中记录中间代码指令中包括的每一微操作码指令对应的未被译码的待仿真代码指令的索引;
根据所述索引,在所述未被译码的待仿真代码指令流中确定与所述访存地址对应且未被译码的访存指令。
2.根据权利要求1所述的方法,其特征在于,确定所述访存地址在预先创建的微操作码指令索引表中对应的索引,包括:
若所述中间代码指令进行了优化,则确定优化后的中间代码访存指令与优化前的中间代码访存指令之间的位置索引偏移量;
根据优化后的中间代码访存指令的位置索引,以及所述位置索引偏移量,确定所述访存地址在预先创建的微操作码指令索引表中对应的索引。
3.根据权利要求1或2所述的方法,其特征在于,根据所述索引,在所述未被译码的待仿真代码指令流中确定与所述访存地址对应且未被译码的访存指令,包括:
调用访存信息记录函数;
将所述索引作为所述访存信息记录函数的参数输入值,通过所述访存信息记录函数,在所述未被译码的待仿真代码指令流中,确定与所述访存地址对应且未被译码的访存指令。
4.根据权利要求1或2所述的方法,其特征在于,获取未被译码的待仿真代码指令流之后,所述方法还包括:
以指令翻译的基本单位为最小缓存单位,缓存所述待仿真代码指令流;
其中,每一缓存单位中缓存的待仿真代码指令流中包括源体系结构编译生成的二进制编码、访存指令标记以及访存地址;
将与所述访存地址对应的未被译码的访存指令,提供给性能模拟器,包括:
将缓存的所述待仿真代码指令流,提供给性能模拟器,其中,与所述访存地址对应的未被译码的访存指令包含在所述待仿真代码指令流中。
5.一种提供仿真激励的装置,其特征在于,包括:
获取单元,用于获取未被译码的待仿真代码指令流,将所述待仿真代码指令流中的各待仿真代码指令翻译为中间代码指令;
处理单元,用于根据中间代码指令中对应有访存地址的中间代码访存指令,在所述获取单元获取的未被译码的待仿真代码指令流中确定与所述访存地址对应且未被译码的访存指令;
输出单元,用于将所述处理单元确定的所述访存地址,以及与所述访存地址对应的未被译码的访存指令,提供给性能模拟器;
其中,所述处理单元,采用如下方式在所述未被译码的待仿真代码指令流中确定与所述访存地址对应且未被译码的访存指令:
确定所述访存地址在预先创建的微操作码指令索引表中对应的索引,其中,所述微操作码指令索引表中记录中间代码指令中包括的每一微操作码指令对应的未被译码的待仿真代码指令的索引;
根据所述索引,在所述未被译码的待仿真代码指令流中确定与所述访存地址对应且未被译码的访存指令。
6.根据权利要求5所述的装置,其特征在于,所述处理单元,采用如下方式确定所述访存地址在预先创建的微操作码指令索引表中对应的索引:
若所述中间代码指令进行了优化,则确定优化后的中间代码访存指令与优化前的中间代码访存指令之间的位置索引偏移量;
根据优化后的中间代码访存指令的位置索引,以及所述位置索引偏移量,确定所述访存地址在预先创建的微操作码指令索引表中对应的索引。
7.根据权利要求5或6所述的装置,其特征在于,所述处理单元,采用如下方式根据所述索引,在所述未被译码的待仿真代码指令流中确定与所述访存地址对应且未被译码的访存指令:
调用访存信息记录函数;
将所述索引作为所述访存信息记录函数的参数输入值,通过所述访存信息记录函数,在所述未被译码的待仿真代码指令流中,确定与所述访存地址对应且未被译码的访存指令。
8.根据权利要求5或6所述的装置,其特征在于,所述装置还包括缓存单元,所述缓存单元,用于:
在所述获取单元获取未被译码的待仿真代码指令流之后,以指令翻译的基本单位为最小缓存单位,缓存所述待仿真代码指令流;其中,每一缓存单位中缓存的待仿真代码指令流中包括源体系结构编译生成的二进制编码、访存指令标记以及访存地址;
所述输出单元,采用如下方式将与所述访存地址对应的未被译码的访存指令,提供给性能模拟器:
将所述缓存单元缓存的所述待仿真代码指令流,提供给性能模拟器,其中,与所述访存地址对应的未被译码的访存指令包含在所述待仿真代码指令流中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710598614.8A CN109426503B (zh) | 2017-07-21 | 2017-07-21 | 提供仿真激励的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710598614.8A CN109426503B (zh) | 2017-07-21 | 2017-07-21 | 提供仿真激励的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109426503A CN109426503A (zh) | 2019-03-05 |
CN109426503B true CN109426503B (zh) | 2022-05-31 |
Family
ID=65497661
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710598614.8A Active CN109426503B (zh) | 2017-07-21 | 2017-07-21 | 提供仿真激励的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109426503B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116629175B (zh) * | 2023-07-26 | 2023-12-15 | 深圳中安辰鸿技术有限公司 | 对npu中的译码单元进行验证的方法及相关装置、设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1766848A (zh) * | 2005-11-08 | 2006-05-03 | 北京大学 | 基于模拟器的嵌入式软件运行时能耗估算方法 |
CN101238438A (zh) * | 2005-07-08 | 2008-08-06 | 微软公司 | 用以提高仿真器性能的虚拟代码的选择性预编译 |
CN101425020A (zh) * | 2007-10-31 | 2009-05-06 | 国际商业机器公司 | 对mmu仿真进行加速的方法、装置和全系统仿真器 |
CN105701298A (zh) * | 2016-01-15 | 2016-06-22 | 天津大学 | 基于PowerPC SoC架构的仿真平台设计方法 |
CN105867879A (zh) * | 2016-03-21 | 2016-08-17 | 合肥赛猊腾龙信息技术有限公司 | 一种模拟微处理器指令的方法及装置 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3338466B2 (ja) * | 1991-11-05 | 2002-10-28 | 富士通株式会社 | 主記憶アクセス最適化処理装置 |
CN100511149C (zh) * | 2003-05-07 | 2009-07-08 | 华为技术有限公司 | 逻辑仿真测试系统和方法 |
US7730459B2 (en) * | 2003-09-30 | 2010-06-01 | Intel Corporation | Generating executable code based on code performance data |
CN100383798C (zh) * | 2005-09-07 | 2008-04-23 | 深圳市海思半导体有限公司 | 一种对随机存储器封装文件进行仿真的仿真平台及方法 |
CN102957553B (zh) * | 2011-08-25 | 2018-04-27 | 中兴通讯股份有限公司 | 一种激励代码自动生成方法和装置 |
CN105511942B (zh) * | 2015-12-02 | 2019-02-19 | 华为技术有限公司 | 语言虚拟机中热点中间代码的识别方法以及装置 |
-
2017
- 2017-07-21 CN CN201710598614.8A patent/CN109426503B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101238438A (zh) * | 2005-07-08 | 2008-08-06 | 微软公司 | 用以提高仿真器性能的虚拟代码的选择性预编译 |
CN1766848A (zh) * | 2005-11-08 | 2006-05-03 | 北京大学 | 基于模拟器的嵌入式软件运行时能耗估算方法 |
CN101425020A (zh) * | 2007-10-31 | 2009-05-06 | 国际商业机器公司 | 对mmu仿真进行加速的方法、装置和全系统仿真器 |
CN105701298A (zh) * | 2016-01-15 | 2016-06-22 | 天津大学 | 基于PowerPC SoC架构的仿真平台设计方法 |
CN105867879A (zh) * | 2016-03-21 | 2016-08-17 | 合肥赛猊腾龙信息技术有限公司 | 一种模拟微处理器指令的方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN109426503A (zh) | 2019-03-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9858057B2 (en) | Methods and apparatus to validate translated guest code in a dynamic binary translator | |
US10360322B2 (en) | Simulation of virtual processors | |
US7783867B2 (en) | Controlling instruction execution in a processing environment | |
KR101834896B1 (ko) | 고레벨 합성을 사용함으로써 효율적인 엔트로피 디코더를 구현하기 위한 방법 | |
CN114462338A (zh) | 一种集成电路的验证方法、装置、计算机设备及存储介质 | |
CN109426503B (zh) | 提供仿真激励的方法及装置 | |
US9658849B2 (en) | Processor simulation environment | |
CN115421861B (zh) | 一种通用的TMS320C55x处理器指令集虚拟化仿真方法 | |
US10289512B2 (en) | Persistent command parameter table for pre-silicon device testing | |
CN115858092A (zh) | 时序仿真方法、装置及系统 | |
US10445218B2 (en) | Execution of graphic workloads on a simulated hardware environment | |
US10409624B1 (en) | Data array compaction in an emulation system | |
US20170115973A1 (en) | Operating method of semiconductor device and semiconductor system | |
CN115421875B (zh) | 二进制翻译方法及装置 | |
CN117251118B (zh) | 支持虚拟NVMe仿真与集成方法及系统 | |
CN117008972B (zh) | 一种指令分析方法、装置、计算设备及存储介质 | |
US20220066911A1 (en) | Virtual machine for developing and testing target code for hardware designs | |
KR101171423B1 (ko) | 컴퓨터 아키텍쳐 상태 코드 세팅을 효율적으로 에뮬레이트하는 방법 | |
US10002213B2 (en) | System and method for verifying the deterministic starting state of a digital device | |
CN117873646A (zh) | 基于外设访问点引导的固件仿真方法及系统 | |
CN114357917A (zh) | 处理器流水线的仿真方法、装置和仿真系统 | |
CN114036066A (zh) | 一种单元测试方法、装置、计算设备及可读存储介质 | |
CN115421865A (zh) | 一种dsp c6713处理器指令集虚拟化仿真方法 | |
CN109766129A (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 |