CN102945164B - 数据处理方法 - Google Patents
数据处理方法 Download PDFInfo
- Publication number
- CN102945164B CN102945164B CN201210418659.XA CN201210418659A CN102945164B CN 102945164 B CN102945164 B CN 102945164B CN 201210418659 A CN201210418659 A CN 201210418659A CN 102945164 B CN102945164 B CN 102945164B
- Authority
- CN
- China
- Prior art keywords
- program
- functional device
- characteristic symbol
- original position
- simulator
- 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
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明提供了一种数据处理方法,适用于计算机系统模拟器,所述方法包括:在模拟第一程序的过程中根据第二程序的特征符号识别出所述第二程序的起始位置,所述第一程序包含所述第二程序;当识别到所述第二程序的起始位置后转入执行模拟器中与所述第二程序具有同样功能的功能块,所述功能块的返回位置为所述第二程序的返回位置。所述方法能够在保证模拟的有效性和准确性的前提下,提高模拟器的数据处理和数据传输速度。
Description
技术领域
本发明涉及多核处理器和众核处理器结构的计算机系统模拟器技术,特别涉及一种数据处理方法。
背景技术
计算机系统结构模拟器(模拟器)用于对计算机系统的行为进行模拟。目前,模拟器在计算机系统的研发过程中扮演着非常重要的作用。在新计算机系统研发过程中,可以利用模拟器对新系统进行模拟运行,以及对新系统进行性能评估,以分析出新系统的性能瓶颈,从而找出最优配置。
其中,多处理器结构模拟器采用单个或多个宿主进程模拟计算机系统中多个不同结构的目标机的行为。由于目标机之间存在数据传输,不管模拟器将用户空间如何布局,总是存在进程之间的数据交互以及各进程对共享存储空间的访存。另外,指令级模拟的数据量通常只有一个操作数长,是细粒度的数据传输,会导致大量的数据交互和访存开销,造成大量时间消耗,从而成为程序模拟中的瓶颈。
因此,有待提出一种新的数据处理方法,以在保证模拟的有效性和准确性的前提下,提高模拟器的数据处理和数据传输速度。
发明内容
本发明解决的问题提出一种新的数据处理方法,以在保证模拟的有效性和准确性的前提下,提高模拟异构系统的数据处理和数据传输速度。
为解决上述问题,本发明的实施例提供了一种适用于计算机系统模拟器的数据处理方法,所述方法包括:在模拟第一程序的过程中根据第二程序的特征符号识别出所述第二程序的起始位置,所述第一程序包含所述第二程序;当识别到所述第二程序的起始位置后转入执行模拟器中与所述第二程序具有同样功能的功能块,所述功能块的返回位置为所述第二程序的返回位置。
可选地,所述第二程序是所述第一程序中耗时超过预定时间的非核心程序。
可选地,所述非核心程序是所述第一程序中的初始化程序。
可选地,所述特征符号包含所述第二程序的预定参数、功能和起始程序计数器值(PC值)。
可选地,识别出所述第二程序的起始位置的方法包括:比对所述特征符号和当前指令跳转的下一条指令的程序计数器值(PC值),如果所述特征符号包含的起始程序计数器值(PC值)和当前指令跳转的下一条指令的程序计数器值(PC值)相等,那么当前指令的下一条指令跳转为所述第二程序的起始位置。
可选地,所述第二程序是所述第一程序中的子程序,所述特征符号包含所述第二程序的预定参数、功能和程序名称。
可选地,识别出所述第二程序的起始位置的方法包括:比对所述特征符号和当前指令调用的子程序的名称,如果所述特征符号包含的程序名称和当前指令调用的子程序的名称相同,那么所述当前指令的下一条指令为所述第二程序的起始位置。
可选地,所述方法在模拟所述第一程序前,还包括:记录所述第二程序的特征符号。
可选地,所述第二程序可以通过对所述第一程序进行模拟分段计时来找出。
可选地,所述第一程序中可以包含多个所述第二程序。
可选地,转入所述功能块的方法包括:通过函数调用转入所述功能块。
与现有技术相比,本发明的实施例具有以下优点:
首先,在模拟所述第一程序的过程中,当识别到所述第二程序的特征符号时,无需像现有技术那样通过逐条取指进入所述第二程序的模拟,而是跳过所述第二程序,转入模拟器中和所述第二程序具有相同功能的功能块,从而避免执行带来繁重访存开销和较长时间消耗的所述第二程序。
其次,所述功能块的返回位置为所述第二程序的返回位置,也就是说,在执行完所述功能块之后,能够返回所述第二程序的返回位置继续模拟所述第一程序,从而不影响所述第一程序的模拟有效性。
附图说明
图1是现有技术中模拟器模拟求和程序的过程示意图;
图2是本发明一实施例中数据处理方法的流程图;
图3是本发明一实施例中模拟器模拟求和程序的过程示意图;以及
图4是本发明另一实施例中模拟器模拟求和程序的过程示意图。
具体实施方式
现有技术中,模拟器通过逐条取指模拟程序,每取得一条指令就进行若干操作数的数据传输。如图1所示,当模拟器执行一个初始化程序时,每模拟一个赋值指令就只能传输一个数据至共享存储空间(指向共享存储空间的虚线箭头),同理,当模拟器模拟一个求和程序时,获取一个变量的值就只需要从共享存储空间读出一个操作数(从共享存储空间出发的虚线箭头),由此发明人发现,模拟器对每条指令的模拟都只针对单个的操作数,数据处理和传输的粒度小、次数多,导致频繁地访问共享存储空间,而繁重的访存开销将造成大量时间消耗,从而成为程序模拟中的瓶颈。
针对上述问题,本发明的实施例提供了一种适用于计算机系统模拟器的数据处理方法。图2是本发明一实施例中数据处理方法的流程图。
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图对本发明的具体实施方式做详细的说明。在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是本发明还可以采用其他不同于在此描述的其它方式来实施,因此本发明不受下面公开的具体实施例的限制。
首先,请参考图2,执行步骤S1,记录第一程序中的第二程序的特征符号,以便后续可以通过所述特征符号,识别出所述第二程序。
在本发明的实施例中,所述第二程序是所述第一程序中耗时超过预定时间的非核心程序,非核心程序是指用户在模拟中的非关注部分的程序,例如,在程序模拟过程中,如果用户关注的是程序的运算和远程通信部分的性能,那么由单个目标进程对一段空间赋初值(或称数据传输)的细节就可以忽略,这时,赋初值的代码就是非核心程序段;而如果用户关注的是程序对数据空间的访问性能,尤其是多个目标进程对同一块共享空间的访问冲突,那么赋值操作就不再是非核心程序段。
在本发明的一实施例中,所述第二程序可以通过对所述第一程序进行模拟分段计时来找出。例如,可以先通过标注所述第一程序中的某一非核心程序段的起始程序计数器值(PC值)和终止程序计数器值(PC值)将所述非核心程序段和其余部分划分开来,然后记录模拟所述非核心程序段所需要的时间,如果发现模拟所述非核心程序段所需要的时间超过了预定时间,那么可以将所述非核心程序段设置为一个第二程序。
在本发明的一实施例中,如果所述非核心程序段是所述第一程序的子程序,也可以通过标注所述非核心程序段的程序名称来将所述非核心程序段和其余部分划分开来,然后记录模拟所述非核心程序段所需要的时间,如果发现模拟所述非核心程序段所需要的时间超过了预定时间,那么可以将所述非核心程序段设置为一个第二程序。
在本发明的一实施例中,所述非核心程序是所述第一程序中的初始化程序,由于在主从结构的目标系统中,一般是由主核程序来初始化所有数据,然后再进入主、从核心程序段的实际运算和通信,整个初始化过程需要耗费大量时间,因此可以将第一程序中的耗时超过预定时长的初始化程设置为一个第二程序。
在本发明的实施例中,可以在所述第一程序中可以设置多个第二程序,且每一个第二程序对应一个特征符号。
在本发明的一实施例中,所述特征符号包含所述第二程序的预定参数、功能和起始PC值。在本发明的另一实施例中,如果所述第二程序是所述第一程序的子程序,所述特征符号包含所述第二程序的程序名称。
接着,请继续参考图1,执行步骤S2,在模拟所述第一程序的过程中根据第二程序的特征符号识别出所述第二程序的起始位置。
在本发明的一实施例中,如果所述特征符号包含所述第二程序的预定参数、功能和起始PC值,那么识别出所述第二程序的起始位置的方法包括:比对所述特征符号和当前指令跳转的下一指令的PC值,如果所述特征符号包含的起始PC值和当前指令跳转的下一指令的PC值相等,那么所述下一条指令为所述第二程序的起始位置。
在本发明的另一实施例中,如果所述特征符号包含所述第二程序的名称,识别出所述第二程序的起始位置的方法包括:比对所述特征符号和当前指令调用的子程序的名称,如果所述特征符号包含的程序名称和当前指令调用的子程序的名称相同,那么所述当前指令的下一条指令为所述第二程序的起始位置。
接着,请继续参考图1,执行步骤S3,当识别到所述第二程序的起始位置后转入执行模拟器中与所述第二程序具有同样功能的功能块。在本发明的一实施例中,所述功能块的方法包括:通过函数调用转入所述功能块。在本发明的其他实施例中,也可以通过其他可适用的方法来转入所述功能块。
在本发明的实施例中,所述功能块为模拟器级的程序,且能够根据所述第二程序的参数完成所述第二程序的功能。
在本发明的实施例中,所述功能块的返回位置为所述第二程序的返回位置,也就是说当执行完所述功能块之后,可以返回至所述第二程序的返回位置继续模拟所述第一程序。
下面将通过对比图1、图3和图4中的一个求和程序的例子来对转入功能模块的过程进行详细描述。
首先,如前所述,图1是现有技术中模拟器模拟求和程序的过程示意图。在图1中,在模拟器模拟求和程序前,通过模拟器模拟初始化程序时,需要反复的赋值,每赋值一次就需要访问一次共享存储空间。
而在图3中,上述初始化程序被设置为一个第二程序,那么,通过模拟器模拟求和程序的步骤为:记录标注所述初始化程序的特征符号;根据所述初始化程序的特征符号识别出所述初始化程序的起始位置;以及当识别到所述初始化程序的起始位置后转入功能块0,所述功能块0具有和所述初始化程序同样的功能;执行完所述功能块0后返回所述初始化程序的返回位置;以及执行所述求和程序。需要说明的是,所述功能块0是模拟器级的代码,不是用户程序级,但是能够按照所述初始化程序的参数对所有变量进行赋值,然后批量写入共享存储空间,无需像现有技术那样根据用户级程序的每一个赋值操作,启动一次访问共享存储空间的模拟赋值操作(用户程序的每次写共享空间一个操作数(最长8B)的访存操作,都被模拟成读入目标访存地址、计算地址偏移、将数据写入目标访存地址等一连串操作),因此减少了访存开销,提高了模拟器的数据处理速度。
另外,如果所述求和程序为非核心程序,且耗时超过预定时长,也可以将所述求和程序设置为另一第二程序,那么,如图4所示,通过模拟器模拟求和程序的步骤为:分别记录标注所述初始化程序的第一特征符号和标志求和程序的第二特征符号;根据所述第一特征符号识别出所述初始化程序的起始位置;以及当识别到所述初始化程序的起始位置后转入功能块0,所述功能块0具有和所述初始化程序同样的功能;执行完所述功能块0后返回所述初始化程序的返回位置;根据所述第二特征符号识别出所述求和程序的起始位置;以及当识别到所述求和程序的起始位置后转入功能块1,所述功能块1是模拟器级的代码,且具有和所述求和程序同样的功能;执行完所述功能块1后返回所述求和程序的返回位置。同理,所述功能块1能够按照所述求和程序的参数从共享存储空间批量读出变量值,无需像现有技术那样每获取一个变量就需要访问一次共享存储空间,因此进一步减少了访存开销,提高了处理器的数据处理速度。
以上所述,仅是本发明的较佳实施例而已,并非对本发明作任何形式上的限制。任何熟悉本领域的技术人员,在不脱离本发明技术方案范围情况下,都可利用上述揭示的方法和技术内容对本发明技术方案作出许多可能的变动和修饰,或修改为等同变化的等效实施例。因此,凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所做的任何简单修改、等同变化及修饰,均仍属于本发明技术方案保护的范围内。
Claims (11)
1.一种数据处理方法,适用于计算机系统模拟器,其特征在于,包括:
在模拟第一程序的过程中根据第二程序的特征符号识别出所述第二程序的起始位置,所述第一程序包含所述第二程序;
当识别到所述第二程序的起始位置后转入执行模拟器中与所述第二程序具有同样功能的功能块,所述功能块的返回位置为所述第二程序的返回位置,以便执行完所述功能块之后,返回至所述第二程序的返回位置继续模拟所述第一程序;
其中,所述功能块为模拟器级的程序,且能够根据所述第二程序的参数完成所述第二程序的功能。
2.如权利要求1所述的方法,其特征在于,所述第二程序是所述第一程序中耗时超过预定时间的非核心程序。
3.如权利要求2所述的方法,其特征在于,所述非核心程序是所述第一程序中的初始化程序。
4.如权利要求1所述的方法,其特征在于,所述特征符号包含所述第二程序的预定参数、功能和起始程序计数器值。
5.如权利要求4所述的方法,其特征在于,识别出所述第二程序的起始位置的方法包括:比对所述特征符号和当前指令条跳转的下一条指令的程序计数器值,如果所述特征符号包含的起始程序计数器值和当前指令跳转的下一条指令的程序计数器值相等,那么当前指令跳转的下一条指令为所述第二程序的起始位置。
6.如权利要求1所述的方法,其特征在于,所述第二程序是所述第一程序中的子程序,所述特征符号包含所述第二程序的预定参数、功能和程序名称。
7.如权利要求6所述的方法,其特征在于,识别出所述第二程序的起始位置的方法包括:比对所述特征符号和当前指令调用的子程序的名称,如果所述特征符号包含的程序名称和当前指令调用的子程序的名称相同,那么所述当前指令的下一条指令为所述第二程序的起始位置。
8.如权利要求1所述的方法,其特征在于,在模拟所述第一程序前,还包括:记录所述第二程序的特征符号。
9.如权利要求1所述的方法,其特征在于,所述第二程序可以通过对所述第一程序进行模拟分段计时来找出。
10.如权利要求1所述的方法,其特征在于,所述第一程序中包含多个所述第二程序。
11.如权利要求1所述的方法,其特征在于,转入所述功能块的方法包括:通过函数调用转入所述功能块。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210418659.XA CN102945164B (zh) | 2012-10-26 | 2012-10-26 | 数据处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210418659.XA CN102945164B (zh) | 2012-10-26 | 2012-10-26 | 数据处理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102945164A CN102945164A (zh) | 2013-02-27 |
CN102945164B true CN102945164B (zh) | 2016-06-08 |
Family
ID=47728113
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210418659.XA Active CN102945164B (zh) | 2012-10-26 | 2012-10-26 | 数据处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102945164B (zh) |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030088860A1 (en) * | 2001-11-02 | 2003-05-08 | Fu-Hwa Wang | Compiler annotation for binary translation tools |
US20070219771A1 (en) * | 2005-12-01 | 2007-09-20 | Verheyen Henry T | Branching and Behavioral Partitioning for a VLIW Processor |
-
2012
- 2012-10-26 CN CN201210418659.XA patent/CN102945164B/zh active Active
Non-Patent Citations (2)
Title |
---|
VLIW体系CPU仿真器MCS的设计与实现;李峰等;《计算机工程与应用》;20011101(第21期);第166页3.2节第2段,第167页第3.3.3节 * |
计算机体系结构高效并行性能模拟技术研究;徐传福;《中国博士学位论文全文数据库(电子期刊)》;20120715(第7期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN102945164A (zh) | 2013-02-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10284623B2 (en) | Optimized browser rendering service | |
US9875192B1 (en) | File system service for virtualized graphics processing units | |
CN101739283B (zh) | 一种计算机及虚拟系统直接访问计算机硬件的方法 | |
Walls | Embedded software: the works | |
US20080208558A1 (en) | System and method for simulating a multiprocessor system | |
CN111324396B (zh) | 一种区块链智能合约执行方法、装置及设备 | |
US10713330B2 (en) | Optimized browser render process | |
WO2013154550A1 (en) | User interface content personalization system | |
ATE444528T1 (de) | Migrieren von daten, die einem zugang durch eingabe-/ausgabeeinrichtungen ausgesetzt sind | |
CN102375787A (zh) | 利用内存窗口实现接口的系统及方法 | |
US10579341B2 (en) | Generation of workload models from execution traces | |
CN105224528A (zh) | 基于图计算的大数据处理方法和装置 | |
CN103049404A (zh) | 一种获取安卓手机型号的方法和系统 | |
CN101876954A (zh) | 一种虚拟机控制系统及其工作方法 | |
RU2008148347A (ru) | Способ улучшения характеристик при обработке данных межпроцессной цифровой модели | |
US20190187964A1 (en) | Method and Apparatus for Compiler Driven Bank Conflict Avoidance | |
CN110457198A (zh) | 调试信息输出方法、装置及存储介质 | |
CN102945164B (zh) | 数据处理方法 | |
CN101196828A (zh) | 一种模拟器及方法 | |
CN103955394A (zh) | 一种基于推迟提交的gpu虚拟化优化方法 | |
CN103389893A (zh) | 一种配置寄存器读写方法及装置 | |
CN109542460A (zh) | 一种基于教育操作系统的vue中接入typescript的方法及电子设备 | |
Aladjev | Computer Algebra Systems: A new software toolbox for Maple | |
US20170161662A1 (en) | Managing use of license-based software applications | |
CN103645936B (zh) | 一种基于设备模拟的数据卡虚拟化实现方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |