CN113419709B - 软件优化方法及装置、电子设备、可读存储介质 - Google Patents
软件优化方法及装置、电子设备、可读存储介质 Download PDFInfo
- Publication number
- CN113419709B CN113419709B CN202110694159.8A CN202110694159A CN113419709B CN 113419709 B CN113419709 B CN 113419709B CN 202110694159 A CN202110694159 A CN 202110694159A CN 113419709 B CN113419709 B CN 113419709B
- Authority
- CN
- China
- Prior art keywords
- key
- target software
- time
- software
- coupling
- 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/20—Software design
- G06F8/24—Object-oriented
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/443—Optimisation
- G06F8/4441—Reducing the execution time required by the program code
- G06F8/4442—Reducing the number of cache misses; Data prefetching
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
- Stored Programmes (AREA)
Abstract
一种软件优化方法及装置、电子设备、存储介质。所述方法包括:在预设场景下对目标软件时序分析,确定所述目标软件中关键对象;所述关键对象为所述目标软件中的关键程序段或数据段;所述关键对象至少为两个以上;所述关键对象为所述目标软件中执行时间超过第一预设时长的对象;对所述目标软件中关键对象进行时间耦合分析,确定存在时间耦合的关键对象的信息,以基于所述存在时间耦合的关键对象的信息,执行对象预取操作。所述方法可以适用于任何场景明确的软件,通用性较好。
Description
技术领域
本发明涉及计算机技术领域,具体涉及一种软件优化方法及装置、电子设备、存储介质。
背景技术
Cache存储器(简称Cache)为高速缓冲存储器,是位于中央处理器(CentralProcessing Unit,CPU)与内存间的一种容量较小但速度很高的存储器。CPU的速度远高于内存,当CPU直接从内存中存取数据时要等待一定时间周期,而Cache则可以保存CPU刚用过或循环使用的一部分数据,如果CPU需要再次使用该部分数据时可从Cache中直接调用,由此可以避免重复存取数据,减少CPU的等待时间,因而提高系统的效率。
当前的嵌入式软件往往运行于带有Cache的处理器上。处理器为了性能、成本及功耗的平衡,绝大部分采用n路组关联映射(n-way set associate mapping)方式,实现Cache与内存间的映射。所谓n路组关联映射,即将Cache分成若干组(set),每一组对应一个地址。其中,每一组内包括多个块,每个块称为cache line,一个内存地址可以映射到多个cacheline中。每一个set中包含的cache line数目,即路的数目。
在采用段式内存管理的架构中,数据段、程序段在软件运行之前就已经确定。其中,数据段通常是指用来存放程序中已初始化的全局变量的一块内存区域。程序段就是一段程序,可以是一个子过程(SUB)、一个函数(FUNCTION),或者是面向对象程序设计中的一个方法。
如果前后运行的多个程序段或数据段,正好都映射到Cache的同一个组中,由于同一组的地址相同,那么只要这些程序段或数据段的数目超过路的数目,就会导致cache颠簸(thrashing)。
在嵌入式软件的优化技术中,通常都是通过删减增加程序段或数据段,来尝试找出性能最优的程序段或数据段。而这样的方法,缺乏通用性,场景稍微变化就会导致软件性能差异很大,从而无法系统性使用,只能针对个别恶劣场景针对性优化。
发明内容
本发明要解决的问题是:如何提高软件优化方案的通用性。
为解决上述问题,本发明实施例提供了一种软件优化方法,所述方法包括:在预设场景下对目标软件时序分析,确定所述目标软件中关键对象;所述关键对象为所述目标软件中的关键程序段或数据段;所述关键对象至少为两个以上;所述关键对象为所述目标软件中执行时间超过第一预设时长的对象;对所述目标软件中关键对象进行时间耦合分析,确定存在时间耦合的关键对象的信息,以基于所述存在时间耦合的关键对象的信息,执行对象预取操作。
本发明实施例还提供了一种软件优化装置,所述装置包括:时序分析单元,适于在预设场景下对目标软件时序分析,确定所述目标软件中关键对象;所述关键对象为所述目标软件中的关键程序段或数据段;所述关键对象至少为两个以上;所述关键对象为所述目标软件中执行时间超过第一预设时长的对象;时间耦合分析单元,适于对所述目标软件中关键对象进行时间耦合分析,确定存在时间耦合的关键对象的信息,以基于所述存在时间耦合的关键对象的信息,执行对象预取操作
本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行,以实现上述方法的步骤。
本发明实施例还提供了一种电子设备,包括存储器和处理器,所述存储器上存储有能够在所述处理器上运行的计算机程序,所述处理器运行所述计算机程序时执行上述方法的步骤。
与现有技术相比,本发明实施例的技术方案具有以下优点:
应用本发明的方案,结合目标软件执行的场景进行时间耦合分析,得到两个以上关键对象之间在时间上的前后关系的时间耦合分析结果,进而在根据时间耦合分析结果执行对象预取操作时,可以对与当前关键对象在执行时间上具有较密切关系的关键对象执行预取操作,从而可以提高目标软件的执行速度,达到对目标软件进行优化的目的。本发明的方案,可以适用于场景明确的任意软件,通用性更好。
进一步地,基于内存映射信息,对两个以上所述关键对象进行空间耦合分析,从而可以基于所述空间耦合分析结果,对关键对象进行空间解耦。由于空间耦合分析结果为具有相同低位地址的关键对象的标识信息,由此在对关键对象进行空间解耦后,可以避免具有相同低位地址的关键对象映射到Cache的同一组中,减少cache颠簸。
附图说明
图1是Cache的一种应用位置示意图;
图2是本发明实施例中一种软件优化方法的流程图;
图3是本发明实施例中另一种软件优化方法的流程图;
图4是本发明实施例中一种软件优化装置的结构示意图。
具体实施方式
图1为Cache的应用位置示意图。由图1所示,Cache 10位于CPU 11与内存12间。当CPU 11试图从内存中下载或存储数据的时候,CPU 11会首先从Cache10中查找对应地址的数据是否缓存在Cache 10中。如果其数据缓存在Cache 10中,直接从Cache 10中拿到数据并返回给CPU 11。CPU 11要访问的数据在Cache 10中有缓存,称为“命中”(hit),反之则称为“缺失”(miss)。
Cache 10的大小称之为cache size,代表Cache 10可以缓存最大数据的大小。将Cache 10平均分成相等的很多块,每一个块称之为一个cache line,每个cache line的大小是cache line size。例如一个64Bytes大小的Cache,如果将64Bytes平均分成64块,那么每个cache line的大小就是1字节,总共64行cache line。
cache line是Cache 10和内存12之间数据传输的最小单位。当CPU试图下载一个字节数据的时候,如果Cache 10缺失,那么Cache 10控制器会从内存中一次性的下载cacheline大小的数据到Cache 10中。例如,cache line大小是8字节。CPU11即使读取一个比特,在Cache 10缺失后,Cache 10会从内存中下载8字节填充整个cache line。
目前带有Cache的处理器,处理器为了性能、成本及功耗的平衡,绝大部分采用n路组关联映射(n-way set associate mapping)方式,实现Cache与内存间的映射。所谓n路组关联映射,即将Cache分成若干组(set),每一组对应一个地址,每一组内包括多个cacheline。比如,将64Bytes大小的Cache平均分成2组,每一组就是一路,每组大小为32Bytes。每路包含4行cache line,且这4行cache line对应一个地址。
每一组对应的内存地址包括组索引部分(index)及低位地址段部分(tag)。在n路组关联映射中,所以一个内存地址的程序段或数据段,可以映射到同一组的多个cacheline中。
在嵌入式软件的优化技术中,通常都是通过删减增加程序段或数据段,来尝试找出性能最优的程序段或数据段。而这样的方法,缺乏通用性,场景稍微变化就会导致软件性能差异很大,从而无法系统性使用,只能针对个别恶劣场景针对性优化。
针对该问题,本发明提供了一种软件优化方法,结合目标软件执行的场景进行时间耦合分析,得到两个以上关键对象之间在时间上的前后关系的时间耦合分析结果,进而在根据时间耦合分析结果执行对象预取操作。由于在根据时间耦合分析结果执行对象预取操作时,可以对与当前关键对象在执行时间上具有较密切关系的关键对象执行预取操作,从而可以提高目标软件的执行速度,达到对目标软件进行优化的目的。
为使本发明的上述目的、特征和优点能够更为明显易懂,下面结合附图对本发明的具体实施例作详细地说明。
参照图2,本发明实施例提供了一种软件优化方法,所述方法可以包括如下步骤:
步骤21,在预设场景下对目标软件时序分析,确定所述目标软件中关键对象。
其中,所述关键对象为所述目标软件中的关键程序段或数据段;所述关键对象至少为两个以上;所述关键对象为所述目标软件中执行时间超过第一预设时长的对象。
在本发明的实施例中,软件指的是一系列按照特定顺序组织的计算机数据和指令的集合。在采用段式内存管理的架构中,数据段、程序段在软件运行之前就已经确定。其中,数据段通常是指用来存放程序中已初始化的全局变量的一块内存区域。程序段就是一段程序,可以是一个子过程(SUB)、一个函数(FUNCTION),或者是面向对象程序设计中的一个方法。
在具体实施中,目标软件包括多个程序段及多个数据段。所谓关键程序段,指的是适于优化的程序段,也就是对软件性能影响较明显的程序段,是目标软件包括的多个程序段中的部分程序段。通过优化所述程序段,可以达到优化目标软件的目的。
所谓关键数据段,指的是适于优化的数据段,也就是对软件性能影响较明显的数据段,是目标软件包括的多个数据段中的部分数据段。通过优化所述程序段,可以达到优化目标软件的目的。
其中,软件性能可以通过执行时间来衡量。所述执行时间可以通过执行所述对象时,所需的循环周期数及内存空间来体现。
在具体实施宏,对目标软件进行时序分析,也就是分析实际执行目标软件时,各个对象的执行频度,各个对象之间的执行顺序,以及各个对象的执行时间等。通过对执行频度、执行顺序及执行时间等时序信息进行统计分析,可确定目标软件中关键对象。
在具体实施中,可以通过设置第一预设时长,从目标软件包括的多个程序段及多个数据段中,筛选得到关键程序段或关键数据段。
比如,目标软件包括程序段A、程序段B以及程序段C。其中,程序段B的执行时间大于第一预设时长,则程序段B为关键程序段。
需要说明的是,目标软件不局限于上述3个程序段,还可以包括其它程序段。同时,关键程序段也不局限于1个程序段,目标软件通常包括2个以上关键程序段。
在具体实施中,所述预设场景可以包括多种场景,具体不作限制。
在一实施例中,所述预设场景可以为最坏场景,即仅在最坏场景下对目标软件进行时序分析。其中,所述最坏场景通常指的是执行所述目标软件所需时间最长的场景。
通过在最坏场景下对目标软件进行时序分析,可以得到最坏场景下关键对象之间的时序关系,由此基于最坏场景下关键对象之间的时序关系,执行预取操作,可以缩短最坏场景下目标软件所需的执行时间,进而可以降低处理器及内存的规格,从而降低执行所述目标软件所需的成本。
在另一实施例中,所述预设场景可以为典型场景,即仅在典型场景下对目标软件进行时序分析。其中,对于任意目标软件而言,本领域技术人员可以清楚地确定其应用的典型场景。所述典型场景可以为一个场景,也可以为两个场景以上。比如,modem处于连接状态下,基带处理器在一定周期内的处理,可以作为典型场景。
通过在典型场景下对目标软件进行时序分析,可以得到典型场景下关键对象之间的时序关系,由此基于典型场景下关键对象之间的时序关系,执行预取操作,可以缩短典型场景下目标软件所需的执行时间,进而可以降低处理器主频,从而降低执行所述目标软件所需的功耗。
在又一实施例中,所述预设场景可以包括典型场景及最坏场景,即同时在典型场景及最坏场景下进行时序分析,以同时降低执行所述目标软件所需的成本和功耗。
在具体实施中,可以仅通过在预设场景下对目标软件时序分析,确定所述目标软件中关键对象。
在本发明的一实施例中,为了提高软件优化效率,可以先获取所述目标软件的先验信息,结合所述先验信息及预设场景下对目标软件时序分析结果,确定所述目标软件中关键对象。
在具体实施中,所述先验信息,包括所述目标软件的技术背景等信息,比如,一定时间周期内必须得到严格执行的程序段,各种程序段之间的依赖关系等。
基于所述先验信息,可以大概确定目标软件中关键对象所在位置,再通过预设场景下对目标软件进行时序分析,来准确地确定关键对象。
比如,基于先验信息可以确定目标软件中用于执行某一任务的程序对整个软件性能影响较明显,则可以将执行该任务的程序作为关键对象所在位置,再预设场景下对执行该任务的程序进行时序分析,确定执行该任务的程序中的部分程序段为关键程序段。
通常情况下,执行时间最长的程序段,是对软件性能影响最明显的程序段,也就是最需要优化的程序段。执行时间越短,该程序段对软件性能的影响也就越小。
在具体实施中,确定目标软件的关键对象后,还可以输出待分析清单,该待分析清单中包含各个关键对象,并按照各个关键对象对软件性能的影响程度,对各个关键对象进行排列,以便后续根据关键对象对软件性能的影响程度执行预取操作或者空间解耦。
步骤22,对所述目标软件中关键对象进行时间耦合分析,确定存在时间耦合的关键对象的信息,以基于所述存在时间耦合的关键对象的信息,执行对象预取操作。
在具体实施中,当关键对象为关键程序段时,对目标软件中关键对象进行时间耦合分析,也就是确定各关键程序段在执行时,在时间上是否存在较密切的前后关系,从而形成一个时间耦合的程序段列表。程序段列表中可以示出存在时间耦合的关键程序段标识信息。
在具体实施中,当关键对象为关键数据段时,对目标软件中关键对象进行时间耦合分析,也就是确定各关键数据段在访问时,在时间上是否存在较密切的前后关系,从而形成一个时间耦合的数据段列表。数据段列表中可以示出存在时间耦合的关键数据段标识信息。
在具体实施中,与同一关键对象时间耦合的关键对象可以仅为一个,也可以为多个。各个关键对象在执行时,时间上是否存在较密切的前后关系,即目标软件在执行过程中,各关键对象在执行顺序上是否存在时间耦合。
比如,目标软件在执行过程中,执行关键对象A后,应执行关键对象B和关键对象C,与关键对象A时间耦合的关键对象,可以为关键对象B和关键对象C。
将目标软件中关键对象之间在时间上的前后关系,也就是存在时间耦合的关键对象的信息,形成关键对象列表输出,可以便于后续进行预取操作及空间耦合。
在实际应用中,为了进一步提高CPU速度,Cache控制器具有预取单元。所述预取单元可以接收CPU向Cache发出的预取请求,对数据段或程序段执行预取操作,使得该数据段或程序段真正被使用到时己提前取入至Cache,从而避免Cache失效造成的CPU停顿。
现有技术中,预取单元是基于CPU的预取请求执行的。
而在本发明的实施例中,预取单元可以基于所述两个以上所述关键对象之间在时间上的前后关系,执行对象预取操作。具体地,预取单元可以对与当前关键对象在执行时间上具有较密切关系的关键对象执行预取操作,此时预取的关键对象是当前关键对象执行后需要执行的关键对象,进而可以避免与预取与当前关键对象在时间上不耦合的其它关键对象占用Cache的存储空间,影响目标软件的执行速度。
比如,与关键对象A时间耦合的关键对象,为关键对象B和关键对象C,故在关键对象A执行时,预取关键对象B和关键对象C,而非其它关键对象,避免其它关键对象占用Cache的存储空间,影响目标软件的执行速度。
采用本发明的方案,通过确定目标软件的关键对象及关键对象在时间上的前后关系,进而基于关键对象在时间上的前后关系执行预取操作,可以有效提高目标软件的执行速度。
图3为本发明实施例提供的另一种软件优化方法,所述方法可以包括如下步骤:
步骤31,在预设场景下对目标软件时序分析,确定所述目标软件中关键对象。
步骤32,对所述目标软件中关键对象进行时间耦合分析,确定存在时间耦合的关键对象的信息,以基于所述存在时间耦合的关键对象的信息,执行对象预取操作。
关于步骤31及32,具体可以参照上述关于步骤21及22的描述进行实施,此处不再赘述。
步骤33,获取所述目标软件对应的内存映射信息。
在具体实施中,目标软件在执行时,需先将内存中读取的目标软件进行编译,将目标软件的所有对象转换为机器码,然后再进行内存映射(memory map),也就是将内存中读取的对象与Cache对应的存储空间建立映射关系,以便后续可以从Cache中读取相应的对象。
内存映射信息,即内存中读取的目标软件的所有对象,与Cache对应的存储空间之间的映射关系。基于内存映射信息可以确定目标软件各个对象在Cache中的地址。
需要说明的是,步骤33可以在步骤32之前执行,也可以与步骤32同时执行,或者在步骤32之后执行,具体执行时间不作限制。
步骤34,基于所述内存映射信息,对所述两个以上所述关键对象进行空间耦合分析,并输出存在空间耦合的关键对象的信息,以用于对存在时间耦合且空间耦合的关键对象进行空间解耦。
在具体实施中,对关键对象进行空间耦合分析,也就是确定各关键对象在Cache中的地位地址部分是否重叠,即TAG相同是否相同。
具体地,对关键对象进行空间耦合分析,即各关键对象在Cache中的存储位置是否为同一组。若两个关键对象映射至Cache的同一组,则认为这两个关键对象存在空间耦合,否则认为这两个关键对象存在空间不耦合。
对关键对象进行空间耦合分析后,输出的空间耦合分析结果,为具有相同低位地址的关键对象的标识信息。基于所述空间耦合分析结果可以确定两关键对象之间是否存在空间耦合。
经发明人研究发现,对于前后执行的程序段或数据段,由于每一组内各个cacheline的低位地址段部分是重叠的,那么只要这些程序段或数据段的数目超过路的数目,多个程序段或者数据段可能因为低位地址段部分重复,导致反复出现Cache访问上的冲突,从而导致不断的缓存缺失,这种现象称为cache颠簸(thrashing)。
也就是说,既存在时间耦合又存在空间耦合的关键对象,称为双重耦合的关键对象。若存在双重耦合的关键对象超过路的数目,就会导致cache颠簸。
比如,程序段A、B、C、D及E都是关键对象,且会在时间上连续执行,而且这5个程序段的低位地址几乎一致,而cache的way数仅为4,那么在执行过程中,必然有其中一段比如程序段E,会被挤出cache,而程序段E执行后,会将另外一段即将执行的程序段,比如程序段A,挤出cache,从而形成cache颠簸,将会明显影响程序执行时间。
因此,在本发明的实施例中,对于存在双重耦合的关键对象,可以通过空间解耦,来减少cache颠簸。所谓空间解耦,也就是改变存在双重耦合的关键对象中,部分关键对象在Cache中的存放地址,使得原本存在双重耦合的关键对象,仅在时间上耦合,而在空间上不耦合,即保持执行时间上的先后关系,但改变Cache中的存放地址。
当然,在一些实施例中,对于存在双重耦合的关键对象,也可以改变全部关键对象在Cache中的存放地址。
比如,程序段A与程序段B为先后执行的两程序段,且程序段A与程序段B映射至Cache的同一组中,通过改变程序段B在Cache的存放地址,使得程序段B与程序段A空间解耦,以减少cache颠簸。
在具体实施中,对关键对象进行空间解耦时,可以按照执行时间由长至短的顺序,对时间耦合的关键对象进行排序,对空间耦合分析结果中,执行时间超过第二预设时长且存在时间耦合的关键对象进行空间解耦。所述第二预设时长大于所述第一预设时长。
也就是说,在实际应用中,无需对每个存在双重耦合的关键对象进行空间解耦,可以仅存在双重耦合的关键对象中,执行时间超过第二预设时长的关键对象进行空间解耦,即仅对软件性能影响严重的程序段或数据段进行空间解耦,以降低软件优化装置的功耗。
其中,关键对象之间是否时间耦合,可以从时间耦合的程序段列表或数据段列表中读取。而时间耦合的关键对象所需执行时间,可以从待分析清单中读取。
当然,也可以对每个存在双重耦合的关键对象进行空间解耦,此处不作限制。
在具体实施中,所述第二预设时长可以根据实际功耗要求进行设置,可以理解的是,第二预设时长越长,软件优化装置的功耗也就越小。
在具体实施中,可以通过人工干预的方式,对关键对象进行空间解耦。当然也可以通过执行计算机指令的方式,对关键对象进行空间解耦,此处不作限制。
需要说明的是,当关键对象为关键程序段时,步骤32可以根据关键程序段在时间上的耦合关系,对关键程序段执行预取操作,步骤34也就是对关键程序段进行空间解耦。
当关键对象为关键数据段时,步骤32可以根据关键数据段在时间上的耦合关系,对关键数据段执行预取操作,步骤34也就是对关键数据段进行空间解耦。
由上述内容可知,本发明的方案,通过技术手段确定关键对象,进而确定关键对象之间的时间关系,再确定关键对象间的空间关系,从而可以打破关键对象在时间和空间上的耦合,提高关键对象的命中率,从而提高嵌入式软件的整体运行性能,即减少嵌入式软件的执行时间。并且,本发明的方案,提供的是针对场景明确的嵌入式软件的通用方法,在确定关键对象后,对于任意软件,均可以基于关键对象的时间耦合关系进行预取及空间解耦,不仅优化效率较高,且适用性广泛,且投入的人力和时间都相对较少。
为了使本领域技术人员更好地理解和实现本发明,以下对上述方法对应的用户终端及计算机可读存储介质进行详细描述。
参照图4,本发明实施例提供了一种软件优化装置40,所述软件优化装置40可以包括:时序分析单元41及时间耦合分析单元42。其中:
所述时序分析单元41,适于在预设场景下对目标软件时序分析,确定所述目标软件中关键对象;所述关键对象为所述目标软件中的关键程序段或数据段;所述关键对象至少为两个以上;所述关键对象为所述目标软件中执行时间超过第一预设时长的对象;
所述时间耦合分析单元42,适于对所述目标软件中关键对象进行时间耦合分析,确定存在时间耦合的关键对象的信息,以基于所述存在时间耦合的关键对象的信息,执行对象预取操作。
在本发明的一实施例中,所述软件优化装置40还可以包括:第一获取单元43。所述第一获取单元43,适于获取所述目标软件的先验信息;
所述时序分析单元41,适于结合所述先验信息及预设场景下对目标软件时序分析结果,确定所述目标软件中关键对象。
在本发明的另一实施例中,所述软件优化装置40还可以包括:第二获取单元44及空间耦合分析单元45。其中:所述第二获取单元44适于获取所述目标软件对应的内存映射信息;所述空间耦合分析单元45,适于基于所述内存映射信息,对所述两个以上所述关键对象进行空间耦合分析,并输出存在空间耦合的关键对象的信息,以用于对存在时间耦合且空间耦合的关键对象进行空间解耦。
所述软件优化装置40(虚拟装置)例如可以是:芯片、或者芯片模组等。
关于所述软件优化装置40中各个功能单元,具体可以参照上述关于相关方法步骤的描述进行实施,此处不再赘述。
关于上述实施例中描述的各个装置、产品包含的各个模块/单元,其可以是软件模块/单元,也可以是硬件模块/单元,或者也可以部分是软件模块/单元,部分是硬件模块/单元。例如,对于应用于或集成于芯片的各个装置、产品,其包含的各个模块/单元可以都采用电路等硬件的方式实现,或者,至少部分模块/单元可以采用软件程序的方式实现,该软件程序运行于芯片内部集成的处理器,剩余的(如果有)部分模块/单元可以采用电路等硬件方式实现;对于应用于或集成于芯片模组的各个装置、产品,其包含的各个模块/单元可以都采用电路等硬件的方式实现,不同的模块/单元可以位于芯片模组的同一组件(例如芯片、电路模块等)或者不同组件中,或者,至少部分模块/单元可以采用软件程序的方式实现,该软件程序运行于芯片模组内部集成的处理器,剩余的(如果有)部分模块/单元可以采用电路等硬件方式实现;对于应用于或集成于终端的各个装置、产品,其包含的各个模块/单元可以都采用电路等硬件的方式实现,不同的模块/单元可以位于终端内同一组件(例如,芯片、电路模块等)或者不同组件中,或者,至少部分模块/单元可以采用软件程序的方式实现,该软件程序运行于终端内部集成的处理器,剩余的(如果有)部分模块/单元可以采用电路等硬件方式实现。
本发明实施例还提供了另一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器运行时执行上述实施例中任一种所述电子设备的控制方法步骤,不再赘述。
在具体实施中,所述计算机可读存储介质可以包括:ROM、RAM、磁盘或光盘等。
本发明实施例还提供了一种电子设备,所述终端可以包括存储器和处理器,所述存储器上存储有能够在所述处理器上运行的计算机程序,所述处理器运行所述计算机程序时执行上述实施例中任一种所述电子设备的控制方法的步骤,不再赘述。
虽然本发明披露如上,但本发明并非限定于此。任何本领域技术人员,在不脱离本发明的精神和范围内,均可作各种更动与修改,因此本发明的保护范围应当以权利要求所限定的范围为准。
Claims (11)
1.一种软件优化方法,其特征在于,包括:
在预设场景下对目标软件时序分析,确定所述目标软件中关键对象;所述关键对象为所述目标软件中的关键程序段或数据段;所述关键对象至少为两个以上;所述关键对象为所述目标软件中执行时间超过第一预设时长的对象;
对所述目标软件中关键对象进行时间耦合分析,确定存在时间耦合的关键对象的信息,以基于所述存在时间耦合的关键对象的信息,执行对象预取操作;
其中,所述时间耦合指的是两个以上关键对象在时间上存在较密切的前后关系。
2.如权利要求1所述的软件优化方法,其特征在于,所述预设场景包括:最坏场景。
3.如权利要求2所述的软件优化方法,其特征在于,所述预设场景还包括:典型场景。
4.如权利要求1至3任一项所述的软件优化方法,其特征在于,在预设场景下对目标软件时序分析之前,还包括:获取所述目标软件的先验信息,结合所述先验信息及预设场景下对目标软件时序分析结果,确定所述目标软件中关键对象。
5.如权利要求1至3任一项所述的软件优化方法,其特征在于,还包括:
获取所述目标软件对应的内存映射信息;
基于所述内存映射信息,对所述两个以上所述关键对象进行空间耦合分析,并输出存在空间耦合的关键对象的信息,以用于对存在时间耦合且空间耦合的关键对象进行空间解耦;
其中,所述空间耦合指的是两个以上关键对象在Cache中的存储位置为同一组。
6.如权利要求5所述的软件优化方法,其特征在于,所述对时间耦合且空间耦合的关键对象进行空间解耦包括:
对存在空间耦合的关键对象中,执行时间超过第二预设时长且存在时间耦合的关键对象进行空间解耦;所述第二预设时长大于所述第一预设时长。
7.一种软件优化装置,其特征在于,包括:
时序分析单元,适于在预设场景下对目标软件时序分析,确定所述目标软件中关键对象;所述关键对象为所述目标软件中的关键程序段或数据段;所述关键对象至少为两个以上;所述关键对象为所述目标软件中执行时间超过第一预设时长的对象;
时间耦合分析单元,适于对所述目标软件中关键对象进行时间耦合分析,确定存在时间耦合的关键对象的信息,以基于所述存在时间耦合的关键对象的信息,执行对象预取操作;
其中,所述时间耦合指的是两个以上关键对象在时间上存在较密切的前后关系。
8.如权利要求7所述的软件优化装置,其特征在于,还包括:
第一获取单元,适于获取所述目标软件的先验信息;
所述时序分析单元,适于结合所述先验信息及预设场景下对目标软件时序分析结果,确定所述目标软件中关键对象。
9.如权利要求7或8所述的软件优化装置,其特征在于,还包括:
第二获取单元,适于获取所述目标软件对应的内存映射信息;
空间耦合分析单元,适于基于所述内存映射信息,对所述两个以上所述关键对象进行空间耦合分析,并输出存在空间耦合的关键对象的信息,以用于对存在时间耦合且空间耦合的关键对象进行空间解耦;
其中,所述空间耦合指的是两个以上关键对象在Cache中的存储位置为同一组。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行,以实现权利要求1至6任一项所述方法的步骤。
11.一种电子设备,包括存储器和处理器,所述存储器上存储有能够在所述处理器上运行的计算机程序,其特征在于,所述处理器运行所述计算机程序时执行权利要求1至6任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110694159.8A CN113419709B (zh) | 2021-06-22 | 2021-06-22 | 软件优化方法及装置、电子设备、可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110694159.8A CN113419709B (zh) | 2021-06-22 | 2021-06-22 | 软件优化方法及装置、电子设备、可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113419709A CN113419709A (zh) | 2021-09-21 |
CN113419709B true CN113419709B (zh) | 2023-03-24 |
Family
ID=77716114
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110694159.8A Active CN113419709B (zh) | 2021-06-22 | 2021-06-22 | 软件优化方法及装置、电子设备、可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113419709B (zh) |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021109615A1 (zh) * | 2019-12-06 | 2021-06-10 | 深圳传音控股股份有限公司 | 一种信息获取方法、终端及计算机存储介质 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0613087B1 (en) * | 1993-02-24 | 2002-11-20 | Matsushita Electric Industrial Co., Ltd. | Apparatus and method for achieving high-speed data read access to memory |
WO2006082592A1 (en) * | 2005-02-04 | 2006-08-10 | Hewlett-Packard Development Company, L.P. | Data processing system and method |
US8607005B2 (en) * | 2006-02-17 | 2013-12-10 | International Business Machines Corporation | Monitoring program execution to learn data blocks accessed by software process for facilitating efficient prefetching |
CN103246542B (zh) * | 2012-02-01 | 2017-11-14 | 中兴通讯股份有限公司 | 智能缓存及智能终端 |
CN110262884B (zh) * | 2019-06-20 | 2023-03-24 | 山东省计算中心(国家超级计算济南中心) | 一种基于申威众核处理器的核组内多程序多数据流分区并行的运行方法 |
-
2021
- 2021-06-22 CN CN202110694159.8A patent/CN113419709B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021109615A1 (zh) * | 2019-12-06 | 2021-06-10 | 深圳传音控股股份有限公司 | 一种信息获取方法、终端及计算机存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN113419709A (zh) | 2021-09-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2017211240A1 (zh) | 一种处理器芯片以及指令缓存的预取方法 | |
US8924648B1 (en) | Method and system for caching attribute data for matching attributes with physical addresses | |
US8060701B2 (en) | Apparatus and methods for low-complexity instruction prefetch system | |
CN1726477A (zh) | 用于预取和存储器管理的页描述符 | |
CN110018811B (zh) | Cache数据处理方法以及Cache | |
CN114238167B (zh) | 信息预取方法、处理器、电子设备 | |
CN115712583B (zh) | 一种提升分布式缓存跨节点访问性能的方法及装置、介质 | |
JP2020500368A (ja) | データプリフェッチング方法、装置、およびシステム | |
CN108874691B (zh) | 数据预取方法和内存控制器 | |
US20100250842A1 (en) | Hybrid region cam for region prefetcher and methods thereof | |
CN115495394A (zh) | 数据预取方法和数据预取装置 | |
CN115617712A (zh) | 一种基于组相联高速缓存Cache的LRU替换算法 | |
US6507895B1 (en) | Method and apparatus for access demarcation | |
CN114925001A (zh) | 处理器、页表预取方法、电子设备 | |
Liang et al. | VStore: in-storage graph based vector search accelerator | |
WO2022057749A1 (zh) | 内存缺页异常的处理方法、装置、设备及存储介质 | |
CN107291630B (zh) | 一种高速缓冲存储器处理方法及装置 | |
CN113419709B (zh) | 软件优化方法及装置、电子设备、可读存储介质 | |
KR20100005539A (ko) | 캐시 메모리 시스템 및 캐시의 프리페칭 방법 | |
CN115563031A (zh) | 指令高速缓存的预取控制方法、装置、芯片及存储介质 | |
CN110941565A (zh) | 用于芯片存储访问的内存管理方法和装置 | |
US20060200631A1 (en) | Control circuit and control method | |
KR100737741B1 (ko) | 다차원 데이터 선인출 캐쉬를 이용한 메모리 장치 및 그제어 방법 | |
CN109308270B (zh) | 一种加速虚实地址转换的方法及装置 | |
US20210081323A1 (en) | Method of improving l1 icache performance with large programs |
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 |