CN116028338A - 一种不友好访存检测方法及相关设备 - Google Patents
一种不友好访存检测方法及相关设备 Download PDFInfo
- Publication number
- CN116028338A CN116028338A CN202111250220.6A CN202111250220A CN116028338A CN 116028338 A CN116028338 A CN 116028338A CN 202111250220 A CN202111250220 A CN 202111250220A CN 116028338 A CN116028338 A CN 116028338A
- Authority
- CN
- China
- Prior art keywords
- access
- target
- track information
- unfriendly
- source code
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请实施例公开了一种不友好访存检测方法及相关设备,用于快速准确地检测出对高速缓冲存储器不友好的访存代码。本申请实施例方法包括:检测设备获取访存轨迹信息,访存轨迹信息包括访问的内存地址信息;检测设备根据访存轨迹信息确定对应的多个源码位置;检测设备根据目标访存轨迹信息集合确定满足预设条件的不友好访存指令,目标访存轨迹信息集合为目标源码位置对应的访存轨迹信息集合,多个源码位置包括目标源码位置,不友好访存指令为访问的内存地址信息包括目标等差数列的访存指令;检测设备确定不友好访存指令对应的目标源码位置信息。
Description
技术领域
本申请实施例涉及数据处理领域,尤其涉及一种不友好访存检测方法及相关设备。
背景技术
在设备的存储器中,距离中央处理器(Central Processing Unit,CPU)越近的存储器的读取速度就越快,同时容量也越小。例如常见的设备的存储器中,寄存器距离CPU最近,传输速度最快,寄存器的数量和容量和有限;其次是高速缓冲存储器cache,包括一级器cache、二级cache和三级cache等,然后是主存和本地磁盘。
高速缓冲存储器cache主要用于根据局部性原理减少CPU访问主存的次数。具体地,对于CPU正在访问的指令和数据,之后可能会被CPU多次访问到;该指令和数据附近的内存区域,也可能会被多次访问。因此,第一次访问这一块区域时,将其复制到cache中,CPU再访问该区域的指令或者数据时,就不用再从主存中取出。
但是由于在程序代码开发阶段并未关注cache的工作,在代码中可能存在部分对cache不友好的代码,即可能会使cache的命中率很低,从而使得cache的效率很低,而设备很难检测出这些使cache的工作效率降低的程序代码。
发明内容
本申请实施例提供了一种不友好访存检测方法及相关设备,用于快速准确地检测出对高速缓冲存储器不友好的访存代码。
本申请实施例提供了一种不友好访存检测方法,该方法用于快速准确地检测出对高速缓冲存储器不友好的访存代码,该方法包括:检测设备获取访存轨迹信息,访存轨迹信息包括访问的内存地址信息;检测设备根据访存轨迹信息确定对应的多个源码位置;检测设备根据目标访存轨迹信息集合确定满足预设条件的不友好访存指令,所述目标访存轨迹信息集合为目标源码位置对应的访存轨迹信息集合,所述多个源码位置包括所述目标源码位置,所述不友好访存指令为访问的内存地址信息包括目标等差数列的访存指令;检测设备确定不友好访存指令对应的目标源码位置信息。
该种可能的实现方式中,检测设备通过访存轨迹信息确定源码访问变量,然后根据目标源码访问变量对应的不友好访问指令,本申请实施例中的检测设备可以程序运行时的访存行为留下的访存轨迹信息确定其中的不友好访问指令,具体提供了一种不友好访问指令检测方法,从而使得设备可以检测出这些对高速缓冲存储器不友好的访问指令。相应地,运行这些不友好的访问指令的设备可以做出相应的调整,例如重构源码,从而提升cache的工作效率。
在第一方面的一种可能的实现方式中,在检测设备获取访存轨迹信息之前,上述方法还包括:检测设备确定预设条件。
该种可能的实现方式中,检测设备可以在获取访存轨迹信息之前确定预设条件,因此用户可以相应地调节对于不友好的访问指令的条件,即用户可以定义该不友好的访问指令,使得本申请实施例可以灵活实现。
在第一方面的一种可能的实现方式中,上述检测设备确定预设条件,包括:检测设备确定数据访问地址序列和对应的数据引用位置序列;检测设备确定目标数据引用位置访问的多个地址中存在目标等差数列,目标等差数列为长度大于第一预设值且公差大于第二预设值的等差数列。
该种可能的实现方式中,具体提供了一种确定不友好的访问指令的预设条件,即在对应的数据访问地址序列找出目标等差数列,增加了本申请实施例的可实现性。
在第一方面的一种可能的实现方式中,上述检测设备确定目标数据引用位置访问的多个地址中存在目标等差数列,包括:检测设备确定目标数据引用位置访问的多个地址中存在连续的目标等差数列;或检测设备确定目标数据引用位置访问的多个地址中存在等间隔的目标等差数列;或检测设备确定目标数据引用位置访问的多个地址中存在不等间隔的目标等差数列。
该种可能的实现方式中,更进一步对于目标等差数列进行了限定,增加了本申请实施例的可实现性。
在第一方面的一种可能的实现方式中,上述第二预设值包括高速缓冲存储器单元的大小的一半。
在第一方面的一种可能的实现方式中,上述检测设备根据访存轨迹信息确定满足预设条件的不友好访存指令,包括:检测设备根据数据引用位置将访问的内存地址分为多个地址集合,目标集合包括对应的数据引用位置访问的所有内存地址,目标集合为多个地址集合中的任一个;若检测设备确定目标集合的序列总长度大于第三预设值,则检测设备确定目标集合对应的数据引用位置的访存指令为满足预设条件的不友好访存指令。
该种可能的实现方式中,具体提供了一种检测设备根据访存轨迹信息确定满足预设条件的不友好访存指令的方法,增加了本申请实施例的可实现性。
在第一方面的一种可能的实现方式中,上述检测设备确定目标集合中的序列总长度,包括:检测设备确定目标等差数列的长度为序列总长度,目标等差数列为目标集合中的所有等差数列中最长的等差数列。
在第一方面的一种可能的实现方式中,在检测设备获取访存轨迹信息之前,上述方法还包括:检测设备在每个访存指令中插入获取代码,获取代码用于获取访存轨迹信息。
在第一方面的一种可能的实现方式中,在检测设备获取访存轨迹信息之前,上述方法还包括:检测设备通过程序调试平台记录获取访存轨迹信息与对应的源码信息;或检测设备通过性能仿真模拟平台记录获取访存轨迹信息与对应的源码信息。
该种可能的实现方式中,具体提供了一种检测设备获取访存轨迹信息的方法,增加了本申请实施例的可实现性。
本申请实施例中,检测设备通过访存轨迹信息确定源码访问变量,然后根据目标源码访问变量对应的不友好访问指令,本申请实施例中的检测设备可以程序运行时的访存行为留下的访存轨迹信息确定其中的不友好访问指令,具体提供了一种不友好访问指令检测方法,从而使得设备可以检测出这些对高速缓冲存储器不友好的访问指令。相应地,运行这些不友好的访问指令的设备可以做出相应的调整,例如重构源码,从而提升cache的工作效率。
本申请第二方面提供一种检测设备,该检测设备具有实现上述第一方面或第一方面任意一种可能实现方式的方法的功能。该功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。该硬件或软件包括一个或多个与上述功能相对应的模块,例如:确定单元。
本申请第三方面提供一种检测设备,该检测设备包括至少一个处理器、存储器、输入/输出(input/output,I/O)接口以及存储在存储器中并可在处理器上运行的计算机执行指令,当计算机执行指令被处理器执行时,处理器执行如上述第一方面或第一方面任意一种可能的实现方式的方法。
本申请第四方面提供一种存储一个或多个计算机执行指令的计算机可读存储介质,当计算机执行指令被处理器执行时,处理器执行如上述第一方面或第一方面任意一种可能的实现方式的方法。
本申请第五方面提供一种存储一个或多个计算机执行指令的计算机程序产品,当计算机执行指令被处理器执行时,处理器执行如上述第一方面或第一方面任意一种可能的实现方式的方法。
本申请第六方面提供了一种芯片系统,该芯片系统包括至少一个处理器,至少一个处理器用于实现上述第一方面或第一方面任意一种可能的实现方式中所涉及的功能。在一种可能的设计中,芯片系统还可以包括存储器,存储器,用于保存处理人工智能模型的装置必要的程序指令和数据。该芯片系统,可以由芯片构成,也可以包括芯片和其他分立器件。
从以上技术方案可以看出,本申请实施例具有以下优点:
本申请实施例中,检测设备通过访存轨迹信息确定源码访问变量,然后根据目标源码访问变量对应的不友好访问指令,本申请实施例中的检测设备可以程序运行时的访存行为留下的访存轨迹信息确定其中的不友好访问指令,具体提供了一种不友好访问指令检测方法,从而使得设备可以检测出这些对高速缓冲存储器不友好的访问指令。相应地,运行这些不友好的访问指令的设备可以做出相应的调整,例如重构源码,从而提升cache的工作效率。
附图说明
图1为设备的存储系统的架构示意图;
图2A为程序代码访问的一个场景示意图;
图2B为程序代码访问的另一个场景示意图;
图3为本申请实施例中不友好访存检测方法的一个流程示意图;
图4为本申请实施例中不友好访存检测方法的一个场景示意图;
图5为本申请实施例中不友好访存检测方法的另一个场景示意图;
图6为本申请实施例中不友好访存检测方法的另一个流程示意图;
图7为本申请实施例中检测设备的一个结构示意图;
图8为本申请实施例中检测设备的另一个结构示意图。
具体实施方式
本申请实施例提供了一种不友好访存检测方法及相关设备,用于快速准确地检测出对高速缓冲存储器不友好的访存代码。
下面结合附图,对本申请的实施例进行描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。本领域普通技术人员可知,随着技术的发展和新场景的出现,本申请实施例提供的技术方案对于类似的技术问题,同样适用。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
如图1所示,在设备的存储系统中,距离中央处理器(Central Processing Unit,CPU)越近的存储器的读取速度就越快,同时容量也越小。例如常见的设备的存储器中,寄存器距离CPU最近,传输速度最快,寄存器的数量和容量和有限;其次是高速缓冲存储器cache,包括一级cache、二级cache和三级cache等,然后是主存和本地磁盘。高速缓冲存储器cache主要用于根据局部性原理减少CPU访问主存的次数。具体地,对于CPU正在访问的指令和数据,之后可能会被CPU多次访问到;该指令和数据附近的内存区域,也可能会被多次访问。因此,第一次访问这一块区域时,将其复制到cache中,CPU再访问该区域的指令或者数据时,就不用再从主存中取出。
如图2A和图2B所示,由于在程序代码开发阶段并未关注cache的工作,在代码中可能存在部分对cache不友好的代码,即可能会使cache的命中率很低,从而使得cache的效率很低,而设备很难检测出这些使cache的工作效率降低的程序代码。例如一个代码会多次连续访问某一个大结构体的其中一个成员,该大结构体大于高速缓存行大小Cache LineSize每次访问读取一条高速缓存行Cache Line,但只使用其中变量对应的几个字节。
如图2A所示,代码A为:
如图2A所示,代码A访问二维数组,按照行优先的维度访问,由于数组在内存按照行优先的顺序存放,所以行优先的访问次序导致每行数据被读入后,会访问该行的其他数据,cache在这个过程中不会被反复冲刷。因此代码A即为对高速缓冲存储器友好的访存代码。
如图2B所示,代码B为:
如图2B所示,代码B访问二维数组,按照列优先的维度访问,由于数组在内存按照行优先的顺序存放,所以列优先的访问次序导致每行数据被读入后,只访问一个元素,然后访问下一行,cache在这个过程中被反复冲刷。因此代码B即为对高速缓冲存储器不友好的访存代码。
基于上述设备存储系统,本申请实施例提供了一种不友好访存检测方法,该方法应用于检测系统,可对目标软件的访存行为进行分析后,指出目标软件中对高速缓冲存储器不友好的访存代码的位置,下面对本申请实施例中的不友好访存检测方法进行描述:
请参阅图3,本申请实施例中不友好访存检测方法的一个流程包括:
301、检测设备获取访存轨迹信息。
检测设备即检测设备获取访存轨迹信息,该访存轨迹信息为程序代码运行时,CPU访问内存进行读、写等行为的相关信息,访存轨迹信息包括所访存的地址信息。例如可以是函数和文件行号的形式,也可以是其他形式,具体此处不做限定。
例如图4所示,一种可能的实现方式中,在检测设备获取访存轨迹信息之前,该检测设备通过编译器插桩源码,将获取代码插入到每个访存指令中,该获取代码用于检测设备获取多个访存指令对应的多个访存轨迹信息。
例如图5所示,一种可能的实现方式中,检测设备可以通过程序调试平台记录获取访存轨迹信息与对应的源码信息;或检测设备通过性能仿真模拟平台记录获取访存轨迹信息与对应的源码信息。
本申请实施例中,检测设备可以通过编译器插桩源码的方式获取访存轨迹信息,也可以通过程序调试平台记录和性能仿真模拟平台记录获取访存轨迹信息,还也已通过其他方式获取访存轨迹信息,具体此处不做限定。
302、检测设备根据访存轨迹信息确定对应的源码位置。
检测设备根据访存轨迹信息确定对应的多个源码位置,即确定获取该地址是哪个数据的内容。在访存轨迹信息中有内存地址信息,检测设备可以据此确定对应源码位置,即源码中访问内存的语句,该语句访问的是某个变量的地址。
本申请实施例中变量可以是全局变量或者堆变量,该堆变量主要包括申请后一直持有的那部分。
303、检测设备定义不友好的访存指令。
检测设备定义满足预设条件的访存指令为不友好的访存指令,该预设条件可以是对于访存轨迹信息中的访问地址信息的相关条件,该不友好访存指令为高速缓冲存储器命中率低于第一预设值的访问指令。
具体地,检测设备先根据访存轨迹信息确定数据访问地址序列和数据引用位置序列,其中,该数据引用位置序列为访存轨迹中访问同一数据的源代码位置,该数据引用位置序列与数据访问地址序列一一对应,然后检测设备再根据多条访存轨迹信息中寻找满足预设条件的数据引用位置信息,该多条访存轨迹信息可以是连续的。
检测设备可以定义预设条件为数据引用位置所访问的数据访问地址形成了目标等差数列,即访问地址是不是存在等差特征。该目标等差数列的长度大于第一预设值,该目标等差数列的公差大于第二预设值。该第一预设值也可由用户设定。即访问地址是不是存在等差特征。
本申请实施例中,该目标等差数列可以是连续的等差数列,例如[100,200,300,400,500,…],其中的[100,200,300,400,500]为连续的等差数列。也可以是等间隔的等差数列,例如[100,120,200,240,300,280,400,430,500,…],其中的[100,200,300,400,500]为等间隔的等差数列。除此之外,也可以是不等间隔的等差数列,例如[100,120,130,200,240,300,220,280,400,140,430,500,…],其中的[100,200,300,400,500]为不等间隔的等差数列,具体此处不做限定。
本申请实施例中,该第二预设值通常可以是高速缓存行大小的一半,即当该目标等差数列的公差大于高速缓存行大小的一半时,该数据引用位置所访问的下一个数据访问地址往往就在下一个高速缓存行,一个高速缓存行的数据命中率就较低,数据利用率较低,因此该第二预设值通常可以是高速缓存行大小的一半,除此之外,也可以是其他值,例如高速缓存行大小的三分之一等,可以根据用户对于高速缓存行的数据命中率等要求来确定,具体此处不做限定。
本申请实施例中,步骤303可以在步骤301之前执行,也可以在步骤301之后,步骤302之前执行,也可以在步骤302之后,步骤304之前执行,具体此处不做限定。
304、检测设备确定不友好访存指令。
检测设备根据目标访存轨迹信息确定满足预设条件的不友好访存指令,目标访存轨迹信息集合为目标源码位置对应的多个访存轨迹信息,多个源码位置包括目标源码位置,不友好访存指令为访问的内存地址信息包括目标等差数列的访存指令,即访问地址存在等差特征。即检测设备针对同一的源码访问变量的访存痕迹集合,查找其中的不友好访存指令。不友好访存指令为源码中访问变量的方式不合理或者变量定义的不合理的访问指令,例如结构体内热点字段不集中的访问指令。对于高速缓冲存储器来说,不合理的访问指令会使高速缓冲存储器的命中率变低,降低了高速缓冲存储器工作效率。
具体的,如图6所示,检测设备将所有的访存轨迹信息按照数据引用位置信息分为多个集合,每个集合中都包括一个数据引用位置信息对应的所有访存指令,即数据引用位置对应的目标源码访问变量的所有访存指令,集合中包括访存轨迹信息的原始序列号。
然后检测设备确定目标集合中是否有之前定义的不友好访存指令:
A、检测设备在目标集合中任选两个地址序列,例如(a,b),然后将这两个地址序列(a,b)作为键值对保存至hash表,记录两个地址序列(a,b)的差b-a为dist。然后检测设备查看目标集合中剩余的所有地址序列,将所有差值为dist的序列对保存至hash表中。即检测设备确定该代码位置的访问地址是不是存在等差特征。
B、检测设备计算最长的等差数列序列总长度,具体地,检测设备在hash表中以(a,b)位起始序列,以键值b+(a-b)查找hash表下一个连续访问,迭代查找直到下一个连续访问不再出现,记录查找到的等差访问数列的总个数,然后确定其中最长的等差数列序列总长度。
本申请实施例中,除了上述确定最长的连续访问等差数列序列总长度之外,也可以用其他方法确定最长的等差数列,例如确定目标集合中是否有等间隔的等差数列和不等间隔的等差数列,具体此处不做限定。
C、检测设备确定该最长的等差数列序列总长度是否大于预设的阈值即第三预设值,若大于预设的阈值,则说明该目标集合中有之前定义的不友好访存指令。若小于预设的阈值,则说明该目标集合中没有之前定义的不友好访存指令。除此之外,检测设备还可以确定查找到的等差访问数列的总个数是否大于预设的第二阈值,若大于,则该该目标集合中有之前定义的不友好访存指令。或者其他定义方式,具体此处不做限定。
目标集合处理完之后,检测设备依次处理其他集合。
305、检测设备确定不友好访存指令对应的目标源码位置信息。
检测设备根据不友好访问指令确定对应的目标源码位置信息。
一种可能的实现方式中,该检测设备在确定该目标源码位置信息后还会输出,以使得运行程序的设备可以根据该目标源码位置信息对程序源码做出相应的调整。
本申请实施例中,检测设备通过访存轨迹信息确定源码访问变量,然后根据目标源码访问变量对应的不友好访问指令,本申请实施例中的检测设备可以程序运行时的访存行为留下的访存轨迹信息确定其中的不友好访问指令,具体提供了一种不友好访问指令检测方法,从而使得设备可以检测出这些对高速缓冲存储器不友好的访问指令。相应地,运行这些不友好的访问指令的设备可以做出相应的调整,例如重构源码,从而提升cache的工作效率。
下面对本申请实施例中的检测设备进行描述,请参阅图7,本申请实施例提供的一种检测设备700,该检测设备可以为上述图3中检测设备,该检测设备700包括:
获取模块701,用于获取访存轨迹信息,该访存轨迹信息包括访问的内存地址信息;具体实现方式,请参考图3所示实施例中步骤301:检测设备获取访存轨迹信息,这里不再赘述。
该获取模块701包括:
插入单元702,用于在每个访存指令中插入获取代码,该获取代码用于获取访存轨迹信息。具体实现方式,请参考图3所示实施例中步骤301:检测设备获取访存轨迹信息,这里不再赘述。
获取单元703,用于该检测设备通过程序调试平台记录获取访存轨迹信息与对应的源码信息;或通过性能仿真模拟平台记录获取访存轨迹信息与对应的源码信息。具体实现方式,请参考图3所示实施例中步骤301:检测设备获取访存轨迹信息,这里不再赘述。
第一确定模块704,用于根据该访存轨迹信息确定对应的多个源码位置;具体实现方式,请参考图3所示实施例中步骤302:检测设备根据访存轨迹信息确定对应的源码位置,这里不再赘述。
第四确定模块705,用于确定预设条件。具体实现方式,请参考图3所示实施例中步骤303:检测设备定义不友好的访存指令,这里不再赘述。
第四确定模块705包括:
第一确定单元706,用于确定数据访问地址序列和对应的数据引用位置序列;具体实现方式,请参考图3所示实施例中步骤303:检测设备定义不友好的访存指令,这里不再赘述。
第二确定单元707,用于确定目标数据引用位置访问的多个地址中存在目标等差数列,该目标等差数列为长度大于第一预设值且公差大于第二预设值的等差数列。具体实现方式,请参考图3所示实施例中步骤303:检测设备定义不友好的访存指令,这里不再赘述。
第二确定模块708,用于根据目标访存轨迹信息集合确定满足预设条件的不友好访存指令,目标访存轨迹信息集合为目标源码位置对应的访存轨迹信息集合,多个源码位置包括目标源码位置,不友好访存指令为访问的内存地址信息包括目标等差数列的访存指令;具体实现方式,请参考图3所示实施例中步骤304:检测设备确定不友好访存指令,这里不再赘述。
第二确定模块708包括:
划分单元709,用于根据数据引用位置将该访存轨迹信息划分为多个集合,目标集合包括对应的数据引用位置的所有访存轨迹信息,该目标集合为该多个集合中的任一个;具体实现方式,请参考图3所示实施例中步骤304:检测设备确定不友好访存指令,这里不再赘述。
第三确定单元710,用于若该检测设备确定目标集合的序列总长度大于第三预设值,则确定该目标集合对应的数据引用位置的访存指令为满足预设条件的不友好访存指令。具体实现方式,请参考图3所示实施例中步骤304:检测设备确定不友好访存指令,这里不再赘述。
第三确定单元710还用于:确定目标等差数列的长度为该序列总长度,该目标等差数列为该目标集合中的所有等差数列中最长的等差数列。具体实现方式,请参考图3所示实施例中步骤304:检测设备确定不友好访存指令,这里不再赘述。
第三确定模块711,用于确定该不友好访存指令对应的目标源码位置信息。具体实现方式,请参考图3所示实施例中步骤305:检测设备确定不友好访存指令对应的目标源码位置信息,这里不再赘述。
本实施例中,检测设备可以执行前述图3中任一项所示实施例中检测设备所执行的操作,具体此处不再赘述。
图8是本申请实施例提供的一种检测设备结构示意图,该检测设备800可以包括一个或一个以上中央处理器(central processing units,CPU)801和存储器805,该存储器805中存储有一个或一个以上的应用程序或数据。
其中,存储器805可以是易失性存储或持久存储。存储在存储器805的程序可以包括一个或一个以上模块,每个模块可以包括对检测设备中的一系列指令操作。更进一步地,中央处理器801可以设置为与存储器805通信,在检测设备800上执行存储器805中的一系列指令操作。
其中,中央处理器801用于执行存储器805中的计算机程序,以使得检测设备800用于执行:检测设备获取访存轨迹信息,访存轨迹信息包括访问的内存地址信息;检测设备根据访存轨迹信息确定对应的多个源码访问变量;检测设备根据目标访存轨迹信息集合确定满足预设条件的不友好访存指令,目标访存轨迹信息集合为目标源码位置对应的访存轨迹信息集合,多个源码位置包括目标源码位置,不友好访存指令为访问的内存地址信息包括目标等差数列的访存指令;检测设备确定不友好访存指令对应的目标源码位置信息;具体实现方式,请参考图3所示实施例中步骤301-305,此处不再赘述。
检测设备800还可以包括一个或一个以上电源802,一个或一个以上有线或无线网络接口803,一个或一个以上输入输出接口804,和/或,一个或一个以上操作系统,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM等。
该检测设备800可以执行前述图3所示实施例中检测设备所执行的操作,具体此处不再赘述。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,read-onlymemory)、随机存取存储器(RAM,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
Claims (19)
1.一种不友好访存检测方法,其特征在于,所述方法包括:
检测设备获取访存轨迹信息,所述访存轨迹信息包括访问的内存地址信息;
所述检测设备根据所述访存轨迹信息确定对应的多个源码位置;
所述检测设备根据目标访存轨迹信息集合确定满足预设条件的不友好访存指令,所述目标访存轨迹信息集合为目标源码位置对应的访存轨迹信息集合,所述多个源码位置包括所述目标源码位置,所述不友好访存指令为访问的内存地址信息包括目标等差数列的访存指令;
所述检测设备确定所述不友好访存指令对应的目标源码位置信息。
2.根据权利要求1所述的方法,其特征在于,在所述检测设备根据目标访存轨迹信息集合确定满足预设条件的不友好访存指令之前,所述方法还包括:
所述检测设备确定所述预设条件。
3.根据权利要求2所述的方法,其特征在于,所述检测设备确定所述预设条件,包括:
所述检测设备确定数据访问地址序列和对应的数据引用位置序列;
所述检测设备确定目标数据引用位置访问的多个地址中存在目标等差数列,所述目标等差数列为长度大于第一预设值且公差大于第二预设值的等差数列。
4.根据权利要求3所述的方法,其特征在于,所述检测设备确定目标数据引用位置访问的多个地址中存在目标等差数列,包括:
所述检测设备确定目标数据引用位置访问的多个地址中存在连续的目标等差数列;或
所述检测设备确定目标数据引用位置访问的多个地址中存在等间隔的目标等差数列;或所述检测设备确定目标数据引用位置访问的多个地址中存在不等间隔的目标等差数列。
5.根据权利要求4所述的方法,其特征在于,所述第二预设值包括所述高速缓冲存储器单元的大小的一半。
6.根据权利要求1至5任一项所述的方法,其特征在于,所述检测设备根据目标访存轨迹信息集合确定满足预设条件的不友好访存指令,包括:
所述检测设备根据数据引用位置将所述访存轨迹信息划分为多个集合,目标集合包括对应的数据引用位置的所有访存轨迹信息,所述目标集合为所述多个集合中的任一个;
若所述检测设备确定目标集合的序列总长度大于第三预设值,则所述检测设备确定所述目标集合对应的数据引用位置的访存指令为满足预设条件的不友好访存指令。
7.根据权利要求6所述的方法,其特征在于,所述检测设备确定目标集合中的序列总长度,包括:
所述检测设备确定目标等差数列的长度为所述序列总长度,所述目标等差数列为所述目标集合中的所有等差数列中最长的等差数列。
8.根据权利要求1至7任一项所述的方法,其特征在于,在所述检测设备获取访存轨迹信息之前,所述方法还包括:
所述检测设备在每个访存指令中插入获取代码,所述获取代码用于获取访存轨迹信息。
9.根据权利要求1至7任一项所述的方法,其特征在于,在所述检测设备获取访存轨迹信息之前,所述方法还包括:
所述检测设备通过程序调试平台记录获取访存轨迹信息与对应的源码信息;或
所述检测设备通过性能仿真模拟平台记录获取访存轨迹信息与对应的源码信息。
10.一种检测设备,其特征在于,所述检测设备包括:
获取模块,用于获取访存轨迹信息,所述访存轨迹信息包括访问的内存地址信息;
第一确定模块,用于根据所述访存轨迹信息确定对应的多个源码位置;
第二确定模块,用于根据目标访存轨迹信息集合确定满足预设条件的不友好访存指令,所述目标访存轨迹信息集合为目标源码位置对应的访存轨迹信息集合,所述多个源码位置包括所述目标源码位置,所述不友好访存指令为访问的内存地址信息包括目标等差数列的访存指令;
第三确定模块,用于确定所述不友好访存指令对应的目标源码位置信息。
11.根据权利要求10所述的检测设备,其特征在于,所述检测设备还包括:
第四确定模块,用于确定所述预设条件。
12.根据权利要求11所述的检测设备,其特征在于,所述第四确定模块包括:
第一确定单元,用于确定数据访问地址序列和对应的数据引用位置序列;
第二确定单元,用于确定目标数据引用位置访问的多个地址中存在目标等差数列,所述目标等差数列为长度大于第一预设值且公差大于第二预设值的等差数列。
13.根据权利要求10至12任一项所述的检测设备,其特征在于,所述第二确定模块包括:
划分单元,用于根据数据引用位置将所述访存轨迹信息划分为多个集合,目标集合包括对应的数据引用位置的所有访存轨迹信息,所述目标集合为所述多个集合中的任一个;
第三确定单元,用于若所述检测设备确定目标集合的序列总长度大于第三预设值,则确定所述目标集合对应的数据引用位置的访存指令为满足预设条件的不友好访存指令。
14.根据权利要求13所述的检测设备,其特征在于,所述第三确定单元还用于:
确定目标等差数列的长度为所述序列总长度,所述目标等差数列为所述目标集合中的所有等差数列中最长的等差数列。
15.根据权利要求10至14任一项所述的检测设备,其特征在于,所述获取模块包括:
插入单元,用于在每个访存指令中插入获取代码,所述获取代码用于获取访存轨迹信息。
16.根据权利要求10至14任一项所述的检测设备,其特征在于,所述获取模块还包括:
获取单元,用于所述检测设备通过程序调试平台记录获取访存轨迹信息与对应的源码信息;或通过性能仿真模拟平台记录获取访存轨迹信息与对应的源码信息。
17.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-9任一项所述的方法。
18.一种控制器,其特征在于,包括处理器和存储有计算机程序的计算机可读存储介质;
所述处理器与所述计算机可读存储介质耦合,所述计算机程序被所述处理器执行时实现如权利要求1-9任一项所述的方法。
19.一种芯片系统,其特征在于,包括处理器,所述处理器被调用用于执行如权利要求1-9任一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111250220.6A CN116028338A (zh) | 2021-10-26 | 2021-10-26 | 一种不友好访存检测方法及相关设备 |
PCT/CN2022/119838 WO2023071611A1 (zh) | 2021-10-26 | 2022-09-20 | 一种不友好访存检测方法及相关设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111250220.6A CN116028338A (zh) | 2021-10-26 | 2021-10-26 | 一种不友好访存检测方法及相关设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116028338A true CN116028338A (zh) | 2023-04-28 |
Family
ID=86069316
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111250220.6A Pending CN116028338A (zh) | 2021-10-26 | 2021-10-26 | 一种不友好访存检测方法及相关设备 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN116028338A (zh) |
WO (1) | WO2023071611A1 (zh) |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9244724B2 (en) * | 2013-08-15 | 2016-01-26 | Globalfoundries Inc. | Management of transactional memory access requests by a cache memory |
JP6246022B2 (ja) * | 2014-02-28 | 2017-12-13 | 三菱電機株式会社 | ソフトウェア試験装置及びソフトウェア試験プログラム |
CN106940654B (zh) * | 2017-02-15 | 2020-08-14 | 南京航空航天大学 | 源代码中内存错误的自动检测和定位方法 |
WO2020114937A1 (en) * | 2018-12-07 | 2020-06-11 | Koninklijke Philips N.V. | A computing device with increased resistance against address probing |
CN113535545A (zh) * | 2021-06-16 | 2021-10-22 | 中国工程物理研究院计算机应用研究所 | 一种用于程序动态分析的二进制插桩方法 |
-
2021
- 2021-10-26 CN CN202111250220.6A patent/CN116028338A/zh active Pending
-
2022
- 2022-09-20 WO PCT/CN2022/119838 patent/WO2023071611A1/zh unknown
Also Published As
Publication number | Publication date |
---|---|
WO2023071611A1 (zh) | 2023-05-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP0852763B1 (en) | Polymorphic virus detection method and system | |
CN108985008B (zh) | 一种快速比对基因数据的方法和比对系统 | |
US8990792B2 (en) | Method for constructing dynamic call graph of application | |
CN109783399B (zh) | 一种动态可重构处理器的数据缓存预取方法 | |
CN103514210A (zh) | 小文件处理方法及装置 | |
CN111625833A (zh) | 一种高效的软件程序释放后重用漏洞判定方法和装置 | |
CN112085644A (zh) | 多列数据排序方法、装置、可读存储介质和电子设备 | |
US20090182994A1 (en) | Two-level representative workload phase detection method, apparatus, and computer usable program code | |
KR102347777B1 (ko) | Nop 슬레드 탐지 방법 및 그 장치 | |
CN110222046B (zh) | 列表数据的处理方法、装置、服务器和存储介质 | |
CN106874332B (zh) | 数据库访问方法和装置 | |
US8990741B2 (en) | Circuit design support device, circuit design support method and program | |
CN116028338A (zh) | 一种不友好访存检测方法及相关设备 | |
CN115758206B (zh) | 一种快速查找ZNS固态硬盘中NorFlash上次写结束位置的方法 | |
CN111381905B (zh) | 一种程序处理方法、装置及设备 | |
CN111435403B (zh) | 一种闪存系统的磨损均衡方法及装置 | |
CN116009889A (zh) | 深度学习模型的部署方法、装置、电子设备及存储介质 | |
CN103955394A (zh) | 一种基于推迟提交的gpu虚拟化优化方法 | |
US7096462B2 (en) | System and method for using data address sequences of a program in a software development tool | |
CN112395607A (zh) | 一种侧信道分析方法及装置 | |
CN108139980A (zh) | 用于合并存储器页的方法和存储器合并功能 | |
KR20210143547A (ko) | 교전 시뮬레이션 결과 예측을 위한 메타 모델 생성 방법, 장치 및 기록 매체 | |
CN109144424B (zh) | 一种固态硬盘的读写方法、装置、设备及存储介质 | |
KR20090079625A (ko) | 악성코드 진단 및 치료 장치 | |
CN111723266A (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 |