CN103885886B - 一种全局数据的地址分配方法及相关装置 - Google Patents
一种全局数据的地址分配方法及相关装置 Download PDFInfo
- Publication number
- CN103885886B CN103885886B CN201210558814.8A CN201210558814A CN103885886B CN 103885886 B CN103885886 B CN 103885886B CN 201210558814 A CN201210558814 A CN 201210558814A CN 103885886 B CN103885886 B CN 103885886B
- Authority
- CN
- China
- Prior art keywords
- global
- global data
- data
- sum
- cohesion
- 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
- Memory System Of A Hierarchy Structure (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本发明实施例公开了一种全局数据的地址分配方法及相关装置,其中,一种全局数据的地址分配方法包括:对源程序中的全局数据进行分组,其中,同一分组内的所有全局数据满足如下条件:同一分组内的所有全局数据在同一个基本块中被使用,同一分组内的所有全局数据的数据大小之和不大于计算机系统的缓存行大小,所述同一个基本块的执行总数大于执行总数预设值;为每个分组内的全局数据分配地址,使同一分组的全局数据分配在同一缓存行中,且使每个分组的全局数据段起始位置都与缓存行的起始位置对齐;若存在未分组的全局数据,则为所述未分组的全局数据分配地址。本发明提供的技术方案能够有效减少访问全局数据引起的缓存不命中。
Description
技术领域
本发明涉及计算机科学技术领域,尤其涉及一种全局数据的地址分配方法及相关装置。
背景技术
在计算机科学技术领域中,如何将程序员编写的源程序正确、有效的转化为可以在计算机上执行的文件,一直是研究的热点之一。目前,从源程序生成可执行文件统一的划分为三个阶段,即将源程序先后经过编译器、汇编器、链接器的处理。由上述三个阶段构成的处理过程需要完成两项工作:一是将源程序中的高级语言代码转换为计算机可识别的指令序列;二是为源程序中使用的数据分配一块内存地址用于存放该数据。在第二项工作中涉及到的数据里,局部数据由编译器首先确定数据排布次序,之后由链接器确定这些局部数据的首地址;全局数据则完全由链接器确定数据的排布次序和首地址。
目前的全局数据排布完全在链接器中实现,其技术方案较为直接,主要支持采用如下方式实现:在外界(如程序员)没有特殊要求时,链接器在考虑数据对齐等基本问题的基础上,对全局数据的次序进行随机排布,并分配首地址。然而,对全局数据的次序进行随机排布将导致在访问全局数据时缓存不命中(缓存不命中率即指从缓存中读取不到要读取的全局数据)的增加,从而影响生成的可执行文件的执行效率。
举例说明,假设全局数据a和全局数据b在源程序中经常一起使用,按照目前的全局数据排布方式,全局数据a和b在内存中的地址为随机分配,因此,全局数据a和b在内存中的地址可能相隔较远。当可执行文件执行到使用全局数据a的指令时,中央处理器(CPU,Central Processing Unit)发出一条将全局数据a放入寄存器的指令,由于这是对全局数据a的第一次访问,因此全局数据a并不在缓存中,造成第一次缓存不命中。使用全局数据a的这条指令执行完毕之后,全局数据a及其相邻的数个数据将备放入缓存的一个缓存行(即cacheline)中,若此时执行使用全局数据b的指令,与上述过程相仿,由于全局数据b并不在缓存中,使用全局数据b的指令将造成第二次缓存不命中。
发明内容
本发明各个方面提供了一种全局数据的地址分配方法及相关装置,用于减少访问全局数据引起的缓存不命中。
为解决上述技术问题,提供以下技术方案:
本发明第一方面提供了一种全局数据的地址分配方法,包括:
对源程序中的全局数据进行分组,其中,同一分组内的所有全局数据满足如下条件:同一分组内的所有全局数据在同一个基本块中被使用,同一分组内的所有全局数据的数据大小之和不大于计算机系统的缓存行大小,上述同一个基本块的执行总数大于执行总数预设值;
为每个分组内的全局数据分配地址,使同一分组的全局数据分配在同一缓存行中,且使每个分组的全局数据段起始位置都与缓存行的起始位置对齐;
若存在未分组的全局数据,则为上述未分组的全局数据分配地址。
基于本发明第一方面,在第一种可能的实现方式中,上述对源程序中的全局数据进行分组,包括:
生成全局数据亲密度图,其中,上述全局数据亲密度图包含:顶点、边以及所有亲密度顶点的亲密度大小,其中,上述全局数据亲密度图中的各个顶点分别指示上述源程序中的数据大小不大于上述缓存行大小的各个全局数据,上述顶点与上述全局数据一一对应,上述全局数据亲密度图中的每条边连接具备亲密度的两个顶点,其中,上述亲密度顶点是指满足数据大小之和不大于上述缓存行大小,且满足在同一个执行总数大于上述执行总数预设值的基本块中被使用的两个全局数据所对应的两个顶点,上述亲密度顶点的亲密度大小等于上述亲密度顶点对应的两个全局数据所在的基本块的执行总数;
建立一个成员为空的新组;
根据当前全局数据亲密图,选取亲密度最大的两个全局数据作为上述新组的成员;
从当前全局数据亲密图中删除选取的上述两个全局数据对应的两个顶点以及边,得到当前全局数据亲密图;
根据当前全局数据亲密图,将与上述新组的任一成员存在亲密度,并且数据大小不大于M的所有全局数据纳入考虑范围,其中,上述M等于上述缓存行大小减去上述新组的成员的数据大小之和;
判断上述纳入考虑范围的所有全局数据的数据大小之和是否大于上述M;
若上述纳入考虑范围的所有全局数据的数据大小之和不大于上述M,则,将上述纳入考虑范围的所有全局数据作为上述新组的成员,并从当前全局数据亲密图中删除上述纳入考虑范围的所有全局数据对应的顶点以及边,得到当前全局数据亲密图,返回执行上述建立一个成员为空的新组以及后续步骤,直至全局数据亲密图的顶点数为0;
若上述纳入考虑范围的所有全局数据的数据大小之和大于上述M,则,从上述纳入考虑范围的所有全局数据中列出数据大小之和不大于上述M的所有全局数据组合,根据当前全局数据亲密图,从上述所有全局数据组合中选取亲密度之和最大的全局数据组合,将上述亲密度之和最大的全局数据组合内的所有全局数据作为上述新组的成员,并从当前全局数据亲密图中删除上述亲密度之和最大的全局数据组合中的所有全局数据所对应的顶点以及边,得到当前全局数据亲密图,返回执行上述建立一个成员为空的新组以及后续步骤,直至全局数据亲密图的顶点数为0。
基于本发明第一方面或者本发明第一方面的第一种可能实现方式,在第二种可能的实现方式中,上述对源程序中的全局数据进行分组之前包括:
执行一次上述源程序;
记录执行上述源程序的过程中,上述源程序的每个基本块被执行的次数,得到每个基本块的执行总数。
基于本发明第一方面,或者本发明第一方面的第一种可能实现方式,或者本发明第一方面的第二种可能实现方式,在第三种可能的实现方式中,上述使每个分组的全局数据段起始位置都与缓存行的起始位置对齐,包括:
若当前进行地址分配的分组内的所有全局数据的数据大小之和小于上述缓存行大小,则在对上述当前进行地址分配的分组内的所有全局数据分配地址之后,在上述当前进行地址分配的分组所占用的缓存行中未被分配的其它地址空间填充数据。
本发明第二方面提供了一种全局数据地址分配装置,包括:
编译分组单元,用于对源程序中的全局数据进行分组,其中,同一分组内的所有全局数据满足如下条件:同一分组内的所有全局数据在同一个基本块中被使用,同一分组内的所有全局数据的数据大小之和不大于计算机系统的缓存行大小,上述同一个基本块的执行总数大于执行总数预设值;
地址分配单元,用于为上述编译分组单元分组得到的每个分组内的全局数据分配地址,使同一分组的全局数据分配在同一缓存行中,且使每个分组的全局数据段起始位置都与缓存行的起始位置对齐;当存在未分组的全局数据时,为上述未分组的全局数据分配地址。
基于本发明第二方面,在第一种可能的实现方式中,
上述编译分组单元包括:
生成单元,用于生成全局数据亲密度图,其中,上述全局数据亲密度图包含:顶点、边以及所有亲密度顶点的亲密度大小,其中,上述全局数据亲密度图中的各个顶点分别指示上述源程序中的数据大小不大于上述缓存行大小的各个全局数据,上述顶点与上述全局数据一一对应,上述全局数据亲密度图中的每条边连接具备亲密度的两个顶点,其中,上述亲密度顶点是指满足数据大小之和不大于上述缓存行大小,且满足在同一个执行总数大于上述执行总数预设值的基本块中被使用的两个全局数据所对应的两个顶点,上述亲密度顶点的亲密度大小等于上述亲密度顶点对应的两个全局数据所在的基本块的执行总数;
建立单元,用于建立一个成员为空的新组;
第一选取单元,用于根据当前全局数据亲密图,选取亲密度最大的两个全局数据作为上述新组的成员;
第二选取单元,用于根据当前全局数据亲密图,将与上述新组的任一成员存在亲密度,且数据大小不大于M的所有全局数据纳入考虑范围,其中,上述M等于上述缓存行大小减去上述新组的成员的数据大小之和;
判断单元,用于判断上述第二选取单元选取纳入考虑范围的所有全局数据的数据大小之和是否大于上述M;
第一添加单元,用于当上述判断单元的判断结果为否时,将上述纳入考虑范围的所有全局数据作为上述新组的成员;
第三选取单元,用于当上述判断单元的判断结果为是时,从上述第二选取单元选取上述纳入考虑范围的所有全局数据中列出数据大小之和不大于上述M的所有全局数据组合;根据当前全局数据亲密图,从上述所有全局数据组合中选取亲密度之和最大的全局数据组合;
第二添加单元,用于将上述第三选取单元中选取的亲密度之和最大的全局数据组合内的所有全局数据作为上述新组的成员;
更新单元,用于:在上述第一选取单元触发时,从当前全局数据亲密图中删除上述第一选取单元选取的上述两个全局数据对应的两个顶点以及边;在上述第一添加单元触发时,从当前全局数据亲密图中删除上述第二选取单元纳入考虑范围的所有全局数据对应的顶点以及边;在上述第二添加单元触发时,从当前全局数据亲密图中删除上述第三选取单元选取的亲密度之和最大的全局数据组合内的所有全局数据所对应的顶点以及边。
基于本发明第二方面,或者,本发明第二方面的第一种可能的实现方式,在第二种可能的实现方式中,上述全局数据地址分配装置,还包括:
执行次数统计单元,用于执行一次上述源程序;记录执行上述源程序的过程中,上述源程序的每个基本块被执行的次数,得到每个基本块的执行总数。
基于本发明第二方面,或者第二方面的第一种可能的实现方式,或者第二方面的第二种可能的实现方式,在第三种可能的实现方式中,上述全局数据地址分配装置还包括:
填充单元,用于在当前进行地址分配的分组内的所有全局数据的数据大小之和小于上述缓存行大小,且在上述地址分配单元对上述当前进行地址分配的分组内的所有全局数据分配地址之后,在上述当前进行地址分配的分组所占用的缓存行中未被分配的其它地址空间填充数据。
由上可见,本发明实施例中通过对源程序中的全局数据进行分组处理,将在同一个执行总数大于执行总数预设值的基本块中被使用,且数据大小之和不大于计算机系统的缓存行大小的全局数据分在同一组中,并根据分组情况对全局数据进行地址分配,使同一分组的全局数据分配在同一缓存行中并且每个分组的全局数据段起始位置都与缓存行的起始位置对齐,有效改善了全局数据的空间局部性,从而减少了访问全局数据引起的缓存不命中,进而提升了可执行文件的执行效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明提供的一种全局数据的地址分配方法一个实施例流程示意图;
图2为本发明提供的一种全局数据分组方法一个实施例流程示意图;
图3为本发明提供的一种具体应用场景下的一个全局数据亲密图;
图4为本发明提供的一种具体应用场景下的另一个全局数据亲密图;
图5为本发明提供的一种具体应用场景下的全局数据地址分配结果示意图;
图6为本发明提供的一种全局数据地址分配装置一个实施例结构示意图;
图7为本发明提供的一种全局数据地址分配装置另一个实施例结构示意图。
具体实施方式
本发明实施例提供了一种全局数据的地址分配方法及相关装置。
为使得本发明的发明目的、特征、优点能够更加的明显和易懂,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而非全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的各个其他实施例,都属于本发明保护的范围。
下面对本发明实施例提供的一种全局数据的地址分配方法进行描述,请参阅图1,本发明实施例中的全局数据的地址分配方法包括:
101、对源程序中的全局数据进行分组;
其中,同一分组内的所有全局数据满足如下条件:同一分组内的所有全局数据在同一个基本块中被使用,同一分组内的所有全局数据的数据大小之和不大于计算机系统的缓存行大小(即cache line size),上述同一个基本块的执行总数大于执行总数预设值。
在本发明实施例中,一个源程序可能包含一个或者多个源文件,一个全局数据大于一个函数范围,根据源程序的实际代码实现,一个全局数据的范围可以是位于同一源文件中的某几个函数或者所有函数,也可以是位于源程序的某几个源文件中的某几个函数或者所有函数,此处不作限定。本发明实施例中的基本块(BB,Basic Block)为编译器对源程序进行代码变换过程中产生的一种结构,源程序被划分为数个BB,每个BB代表一段代码,这段代码只有一个入口和一个出口,一个BB可能包含一个或者多个全局数据,也可能不包含全局数据。
本发明实施例中的全局数据地址分配装置可以通过如下两种方式来获得源程序的各个基本块的执行总数:
在一种实现方式中,对源程序进行代码分析来得到各个基本块的执行总数。例如,一个for(1:100)循环的基本块,通过分析即可获知该基本块执行总数为100。
在另一个实现方式中,预先执行一次源程序,记录执行该源程序的过程中,该源程序的每个基本块被执行的次数,从而得到每个基本块的执行总数。在具体实现中,可以在每个基本块中插入计数器,当该基本块每执行一次时,令该基本块所对应的计数器加一,从而精确地得到每个基本块的执行次数。
当然,本发明实施例中全局数据地址分配装置也可以通过其它方式获得源程序的各个基本块的执行总数,例如也可由人工统计完各个基本块的执行总数后记录到该全局数据地址分配装置中,此处不作限定。
在一种实现方式中,全局数据地址分配装置对源程序中的全局数据进行分组的过程可以如图2所示,包括:
A1、生成全局数据亲密度图;
其中,上述全局数据亲密度图包含:顶点、边以及所有亲密度顶点的亲密度大小,其中,上述全局数据亲密度图中的各个顶点分别指示上述源程序中的数据大小不大于cache line size的各个全局数据,上述顶点与上述全局数据一一对应,上述全局数据亲密度图中的每条边连接具备亲密度的两个顶点,其中,上述亲密度顶点是指满足数据大小之和不大于cache line size,且满足在同一个执行总数大于执行总数预设值的基本块中被使用的两个全局数据所对应的两个顶点,上述亲密度顶点的亲密度大小等于上述亲密度顶点对应的两个全局数据所在的基本块的执行总数。
在一种实现方式中,全局数据地址分配装置通过对源程序的各个BB进行遍历,将同时满足条件a1和a2的全局数据作为全局数据亲密图的顶点,并将同时满足条件b1、b2和b3的两个全局数据所对应的顶点(即亲密度顶点)连接,最终生成全局数据亲密度图。需要说明的是,本发明实施例中将全局数据亲密图中连接亲密度顶点的连线称为边。其中,a1和a2如下:
a1、全局数据的数据大小不大于cache line size;
例如,假设cache line size为32字节(即32B),则作为全局数据亲密图的顶点的全局数据的数据大小必然要小于32B。
a2、全局数据亲密图中尚未存在指示该全局数据的顶点;
在满足条件a1的前提下,若指示该全局数据的顶点在全局数据亲密图中已经存在,则不再在全局数据亲密图中增加顶点,只有在全局数据亲密图中尚未存在指示该全局数据的顶点时,才在全局数据亲密图中增加指示该全局数据的顶点,从而保证在全局数据亲密图中,顶点与全局数据一一对应。例如,可在向全局数据亲密图中添加顶点时,在这个顶点上附带标注信息(如该顶点对应的全局数据的名称),那么在遍历BB的过程中,在遇到满足a1的全局数据时,可以通过检验全局数据亲密图中已有顶点的标注信息来确定该全局数据亲密图中是否已经存在指示该全局数据的顶点。
其中,b1、b2和b3分别如下:
b1、两个全局数据在同一个基本块中被使用;
b2、该基本块的执行总数大于执行总数预设值;
b3、两个全局数据的数据大小之和不大于cache line size。
A2、建立一个成员为空的新组。
A3、根据当前全局数据亲密图,选取亲密度最大的两个全局数据作为上述新组的成员;
由于全局数据亲密图中包含所有亲密度顶点的亲密度大小,因此,全局数据地址分配装置根据当前全局数据亲密图,即可选取出亲密度最大的亲密度顶点对应的两个全局数据作为步骤A2建立的新组中的成员。
A4、从当前全局数据亲密图中删除步骤A3选取的两个全局数据对应的两个顶点以及边,得到当前全局数据亲密图。
A5、根据当前全局数据亲密图,将与上述新组的任一成员存在亲密度,并且数据大小不大于M的所有全局数据纳入考虑范围;
其中,M等于cache line size减去上述新组的成员的数据大小之和。
举例说明,假设新组的成员包含全局数据1和全局数据2,则在当前全局数据亲密图中所有与全局数据1具有边连接的全局数据都认为与全局数据1存在亲密度,同理,在当前全局数据亲密图中所有与全局数据2具有边连接的全局数据都认为与全局数据2存在亲密度。假设全局数据1的数据大小为m1,全局数据2的数据大小为m2,则全局数据地址分配装置将与全局数据1存在亲密度,且数据大小不大于(cache line size-(m1+m2))的所有全局数据纳入考虑范围,同时,也将与全局数据2存在亲密度,且数据大小不大于(cacheline size-(m1+m2))的所有全局数据纳入考虑范围。
A6、判断纳入考虑范围的所有全局数据的数据大小之和是否大于上述M;
若全局数据地址分配装置判断出步骤A5中纳入考虑范围的所有全局数据的数据大小之和大于上述M,则执行步骤A7~A10。
若全局数据地址分配装置判断出步骤A5中纳入考虑范围的所有全局数据的数据大小之和不大于上述M,则执行步骤A11~A12。
A7、从纳入考虑范围的所有全局数据中列出数据大小之和不大于上述M的所有全局数据组合。
A8、根据当前全局数据亲密图,从上述所有全局数据组合中选取亲密度之和最大的全局数据组合;
全局数据地址分配装置根据当前全局数据亲密图(即最新的全局数据亲密图),从步骤A7得到的所有全局数据组合中选取亲密度之和最大的全局数据组合。
A9、将上述亲密度之和最大的全局数据组合内的所有全局数据作为上述新组的成员;
全局数据地址分配装置将步骤A8得到的亲密度之和最大的全局数据组合内的所有全局数据作为上述新组的成员,由此得到一个分组。
A10、从当前全局数据亲密图中删除上述亲密度之和最大的全局数据组合中的所有全局数据所对应的顶点以及边,得到当前全局数据亲密图;
全局数据地址分配装置进一步从当前全局数据亲密图将步骤A9加入到新组中的所有全局数据所对应的顶点和边删除,以得到当前全局数据亲密图(即最新的全局数据亲密图)。
全局数据地址分配装置在执行完A10后,返回执行步骤A2,直至全局数据亲密图的顶点数为0。
A11、将上述纳入考虑范围的所有全局数据作为上述新组的成员,由此得到一个分组。
A12、从当前全局数据亲密图中删除上述纳入考虑范围的所有全局数据对应的顶点以及边;
全局数据地址分配装置进一步从当前全局数据亲密图将步骤A5纳入考虑范围的所有全局数据所对应的顶点和边删除,以得到当前全局数据亲密图(即最新的全局数据亲密图)。
全局数据地址分配装置在执行完A12后,返回执行步骤A2,直至全局数据亲密图的顶点数为0。
需要说明的是,本发明实施例并不局限于通过图2所示的方式来实现对源程序中的全局数据的分组,例如,本发明实施例中也可以不生成全局数据亲密度图,而直接通过分析完源程序之后执行分组,此处不作限定。
102、为每个分组内的全局数据分配地址,使同一分组的全局数据分配在同一缓存行中,且使每个分组的全局数据段起始位置都与缓存行的起始位置对齐;
在从步骤101得到多个分组以后,全局数据地址分配装置开始为每个分组内的全局数据分配地址。其中,全局数据地址分配装置可以在完成一个分组内的所有全局数据分配地址之后,再对下一个分组内的所有全局数据分配地址,当然,全局数据地址分配装置也可以并行地对多个分组内的所有全局数据分配地址,此处不作限定。
在分配地址过程中,由于同一分组的全局数据不大于cache line size,因此,全局数据地址分配装置在使每个分组的全局数据段起始位置都与缓存行的起始位置对齐之后,即可将同一分组的全局数据分配在同一缓存行中。
在一种实现方式中,若当前进行地址分配的分组内的所有全局数据的数据大小之和小于cache line size,由于每个分组的全局数据段起始位置都与缓存行的起始位置对齐,这使得该缓存行将存在空闲的地址空间,因此,本发明实施例在对当前进行地址分配的分组内的所有全局数据分配地址之后,进一步,在当前进行地址分配的分组所占用的缓存行中未被分配的其它地址空间填充数据。
103、若存在未分组的全局数据,为上述未分组的全局数据分配地址;
在本发明实施例中,在步骤101执行完后,可能存在未分组的全局数据,例如,存在如下3种情况中的任一种的全局数据将不会被分组:1、一个全局数据的数据大小大于等于cache line size;2、一个全局数据从来没有和其他全局数据在同一BB被使用过;3、一个全局数据有和其它全局数据在同一BB中被使用,但是该全局数据与在同一BB里使用的任一全局数据的数据大小之和始终都超过cache line size。
当存在未分组的全局数据时,全局数据地址分配装置还要为上述未分组的全局数据分配地址。
需要说明的是,本发明实施例中的全局数据地址分配装置可以由编译器和链接器组成,则在本发明实施例中,步骤101由编译器执行,步骤102和步骤103由链接器,当然,本发明实施例中的全局数据地址分配装置也可以是其它能够实现本发明实施例的全局数据的地址分配方法的组件,此处不作限定。
由上可见,本发明实施例中通过对源程序中的全局数据进行分组处理,将在同一个执行总数大于执行总数预设值的基本块中被使用,且数据大小之和不大于计算机系统的缓存行大小的全局数据分在同一组中,并根据分组情况对全局数据进行地址分配,使同一分组的全局数据分配在同一缓存行中并且每个分组的全局数据段起始位置都与缓存行的起始位置对齐,有效改善了全局数据的空间局部性,从而减少了访问全局数据引起的缓存不命中,进而提升了可执行文件的执行效率。
下面以一具体应用场景,对本发明实施例中的全局数据的地址分配方法进行描述。
在本发明实施例中,全局数据地址分配装置由编译器和链接器组成,假设cache line size=32B。首先,假设编译器根据源程序生成如图3所示的全局数据亲密图,在图3中,每个圈代表一个顶点,每条连线(即边)连接着亲密度顶点,边上的数字表示亲密度顶点的亲密度大小,该值等于亲密度顶点所在的BB的执行总数。这里需要说明的是,图3所示的全局数据亲密图仅仅一种可能的表现形态,在实际应用中,编译器所生成的全局数据亲密图的表现形态也可能不同于图3所示全局数据亲密图。为了便于理解,本发明实施例中在图3中的每个顶点内都标注了该顶点对应的全局数据的名称以及该全局数据的数据大小,而在实际应用中,各个顶点对应的全局数据的名称以及数据大小也可能没有在全局数据亲密图中显现。
在生成图3所示的全局数据亲密图之后,接着,编译器根据图3建立一个成员为空的新组,选取亲密度最大的两个全局数据,即bslive和bsBuff,加入到建立的新组中。考虑到bslive和bsBuff的数据大小之和为8B,则将与它们中任一个存在亲密度,并且数据大小不大于24B的所有全局数据纳入考虑范围,即bytesOut、bsStream、workFac、szptr、nMTF和smallMode。判断这些纳入考虑范围的全局数据的数据大小之和是否大于24B,根据图3可知,这些纳入考虑范围的全局数据的数据大小之和小于24B,因此将它们全部加入bslive和bsBuff所在的组,并将它们以及相关的边从图3的全局数据亲密图中删除,得到如图4所示的全局数据亲密图,这样,第一个组就划分完成了,以此类推,最终得到第二个组:workDon和workLim,以及未分组的quadrang和last。编译器将包含第一个组、第二个组和未分组情况的分组结果输入到文本文件中,链接器首先链接器将全局数据段的首地址填充到32B对齐的位置上,之后根据该分组结果为全局数据分配地址,将每个组中的全局数据分配到连续的32B地址空间中,得到如图5所示的地址分配示意图,在图5中,每一行代表一个缓存行,缓存行中的一个方格可以容纳4B的数据,由图5可见,第一组的所有全局数据都在同一个缓存行中,第二组的所有全局数据也都在同一个缓存行中,并且,由于smallMode的数据大小只有1B,在第一组所在的缓存行的最后还需要填充3B数据,从而保证了每个组的全局数据段起始位置都与缓存行的起始位置对齐。
下面对本发明实施例中的一种全局数据地址分配装置进行描述,请参阅图6,本发明实施例中的全局数据地址分配装置600包括:
编译分组单元601,用于对源程序中的全局数据进行分组,其中,同一分组内的所有全局数据满足如下条件:同一分组内的所有全局数据在同一个基本块中被使用,同一分组内的所有全局数据的数据大小之和不大于计算机系统的缓存行大小,上述同一个基本块的执行总数大于执行总数预设值。
地址分配单元602,用于为编译分组单元601分组得到的每个分组内的全局数据分配地址,使同一分组的全局数据分配在同一缓存行中,且使每个分组的全局数据段起始位置都与缓存行的起始位置对齐;当存在未分组的全局数据时,为上述未分组的全局数据分配地址。
在本发明实施例中,一个源程序可能包含一个或者多个源文件,一个全局数据大于一个函数范围,根据源程序的实际代码实现,一个全局数据的范围可以是位于同一源文件中的某几个函数或者所有函数,也可以是位于源程序的某几个源文件中的某几个函数或者所有函数,此处不作限定。本发明实施例中的BB为编译器对源程序进行代码变换过程中产生的一种结构,源程序被划分为数个BB,每个BB代表一段代码,这段代码只有一个入口和一个出口,一个BB可能包含一个或者多个全局数据,也可能不包含全局数据。
本发明实施例中的全局数据地址分配装置600可以通过如下两种方式来获知源程序的各个基本块的执行总数:
在一种实现方式中,对源程序进行代码分析来得到各个基本块的执行总数。例如,一个for(1:100)循环的基本块,通过分析即可获知该基本块执行总数为100。
在另一个实现方式中,全局数据地址分配装置600可以包括:
执行次数统计单元,用于执行一次上述源程序;记录执行上述源程序的过程中,上述源程序的每个基本块被执行的次数,得到每个基本块的执行总数。在具体实现中,执行次数统计单元可以通过插入到每个基本块中的计数器记录每个基本块被执行的次数。
当然,本发明实施例中全局数据地址分配装置600也可以通过其它方式获得源程序的各个基本块的执行总数,例如也可由人工统计完各个基本块的执行总数后记录到该全局数据地址分配装置600中,此处不作限定。
在一种实现方式中,编译分组单元601包括:
生成单元,用于生成全局数据亲密度图,其中,上述全局数据亲密度图包含:顶点、边以及所有亲密度顶点的亲密度大小,其中,上述全局数据亲密度图中的各个顶点分别指示上述源程序中的数据大小不大于cache line size的各个全局数据,上述顶点与上述全局数据一一对应,上述全局数据亲密度图中的每条边连接具备亲密度的两个顶点,其中,上述亲密度顶点是指满足数据大小之和不大于cache line size,且满足在同一个执行总数大于执行总数预设值的基本块中被使用的两个全局数据所对应的两个顶点,上述亲密度顶点的亲密度大小等于上述亲密度顶点对应的两个全局数据所在的基本块的执行总数。
建立单元,用于建立一个成员为空的新组。
第一选取单元,用于根据当前全局数据亲密图,选取亲密度最大的两个全局数据作为上述新组的成员;
由于全局数据亲密图中包含所有亲密度顶点的亲密度大小,因此,第一选取单元根据当前全局数据亲密图,即可选取出亲密度最大的亲密度顶点对应的两个全局数据作为当前建立单元建立的新组中的成员。
第二选取单元,用于根据当前全局数据亲密图,将与上述新组的任一成员存在亲密度,且数据大小不大于M的所有全局数据纳入考虑范围,其中,上述M等于cache line size减去上述新组的成员的数据大小之和。
判断单元,用于判断上述第二选取单元选取纳入考虑范围的所有全局数据的数据大小之和是否大于上述M。
第一添加单元,用于当上述判断单元的判断结果为否时,将上述纳入考虑范围的所有全局数据作为上述新组的成员。
第三选取单元,用于当上述判断单元的判断结果为是时,从上述第二选取单元选取上述纳入考虑范围的所有全局数据中列出数据大小之和不大于上述M的所有全局数据组合;根据当前全局数据亲密图,从上述所有全局数据组合中选取亲密度之和最大的全局数据组合。
第二添加单元,用于将上述第三选取单元中选取的亲密度之和最大的全局数据组合内的所有全局数据作为上述新组的成员。
更新单元,用于:在上述第一选取单元触发时,从当前全局数据亲密图中删除上述第一选取单元选取的上述两个全局数据对应的两个顶点以及边;在上述第一添加单元触发时,从当前全局数据亲密图中删除上述第二选取单元纳入考虑范围的所有全局数据对应的顶点以及边;在上述第二添加单元触发时,从当前全局数据亲密图中删除上述第三选取单元选取的亲密度之和最大的全局数据组合内的所有全局数据所对应的顶点以及边。
在一种实现方式中,若当前进行地址分配的分组内的所有全局数据的数据大小之和小于cache line size,由于每个分组的全局数据段起始位置都与缓存行的起始位置对齐,这使得该缓存行将存在空闲的地址空间,因此,本发明实施例的全局数据地址分配装置600,还包括:
填充单元,用于在当前进行地址分配的分组内的所有全局数据的数据大小之和小于cache line size,且在地址分配单元602对上述当前进行地址分配的分组内的所有全局数据分配地址之后,在上述当前进行地址分配的分组所占用的缓存行中未被分配的其它地址空间填充数据。
需要说明的是,本发明实施例中的全局数据地址分配装置600可以如上述方法实施例中的全局数据地址分配装置,可以用于实现上述方法实施例中的全部技术方案,其各个功能模块的功能可以根据上述方法实施例中的方法具体实现,其具体实现过程可参照上述实施例中的相关描述,此处不再赘述。
本发明实施例还提供一种计算机存储介质,其中,该计算机存储介质存储有程序,该程序执行包括上述方法实施例中记载的部分或全部布置。
下面对本发明实施中的另一种全局数据地址分配装置进行描述,请参与图7,本发明实施例中的全局数据地址分配装置700包括:
输入装置701、输出装置702、存储器703以及处理器704(全局数据地址分配装置700中的处理器704的数量可以是一个或者多个,图7以一个处理器为例)。在本发明的一些实施例中,输入装置701、输出装置702、存储器703以及处理器704可以通过总线或其它方式连接,如图7所示以通过总线连接为例。
其中,处理器704执行如下步骤:
对源程序中的全局数据进行分组,其中,同一分组内的所有全局数据满足如下条件:同一分组内的所有全局数据在同一个基本块中被使用,同一分组内的所有全局数据的数据大小之和不大于计算机系统的缓存行大小,上述同一个基本块的执行总数大于执行总数预设值。
为分组得到的每个分组内的全局数据分配地址,使同一分组的全局数据分配在同一缓存行中,且使每个分组的全局数据段起始位置都与缓存行的起始位置对齐;当存在未分组的全局数据时,为上述未分组的全局数据分配地址。
在本发明实施例中,一个源程序可能包含一个或者多个源文件,一个全局数据大于一个函数范围,根据源程序的实际代码实现,一个全局数据的范围可以是位于同一源文件中的某几个函数或者所有函数,也可以是位于源程序的某几个源文件中的某几个函数或者所有函数,此处不作限定。本发明实施例中的BB为编译器对源程序进行代码变换过程中产生的一种结构,源程序被划分为数个BB,每个BB代表一段代码,这段代码只有一个入口和一个出口,一个BB可能包含一个或者多个全局数据,也可能不包含全局数据。
本发明实施例中的处理器704可以通过如下两种方式来获知源程序的各个基本块的执行总数:
在一种实现方式中,对源程序进行代码分析来得到各个基本块的执行总数。例如,一个for(1:100)循环的基本块,通过分析即可获知该基本块执行总数为100。
在另一个实现方式中,处理器704执行一次上述源程序;记录执行上述源程序的过程中,上述源程序的每个基本块被执行的次数,得到每个基本块的执行总数。在具体实现中,处理器704可以通过插入到每个基本块中的计数器记录每个基本块被执行的次数。
在一种实现方式中,处理器704通过如下方式对源程序中的全局数据进行分组:生成全局数据亲密度图,其中,上述全局数据亲密度图包含:顶点、边以及所有亲密度顶点的亲密度大小,其中,上述全局数据亲密度图中的各个顶点分别指示上述源程序中的数据大小不大于cache line size的各个全局数据,上述顶点与上述全局数据一一对应,上述全局数据亲密度图中的每条边连接具备亲密度的两个顶点,其中,上述亲密度顶点是指满足数据大小之和不大于cache line size,且满足在同一个执行总数大于执行总数预设值的基本块中被使用的两个全局数据所对应的两个顶点,上述亲密度顶点的亲密度大小等于上述亲密度顶点对应的两个全局数据所在的基本块的执行总数;建立一个成员为空的新组;根据当前全局数据亲密图,选取亲密度最大的两个全局数据作为上述新组的成员;从当前全局数据亲密图中删除选取的上述两个全局数据对应的两个顶点以及边,得到当前全局数据亲密图;根据当前全局数据亲密图,将与上述新组的任一成员存在亲密度,并且数据大小不大于M的所有全局数据纳入考虑范围,其中,上述M等于cache line size减去上述新组的成员的数据大小之和;判断上述纳入考虑范围的所有全局数据的数据大小之和是否大于上述M;当上述纳入考虑范围的所有全局数据的数据大小之和不大于上述M时,将上述纳入考虑范围的所有全局数据作为上述新组的成员,并从当前全局数据亲密图中删除上述纳入考虑范围的所有全局数据对应的顶点以及边,得到当前全局数据亲密图,重复执行上述建立一个成员为空的新组以及后续步骤,直至全局数据亲密图的顶点数为0;当上述纳入考虑范围的所有全局数据的数据大小之和大于上述M时,从上述纳入考虑范围的所有全局数据中列出数据大小之和不大于上述M的所有全局数据组合,根据当前全局数据亲密图,从上述所有全局数据组合中选取亲密度之和最大的全局数据组合,将上述亲密度之和最大的全局数据组合内的所有全局数据作为上述新组的成员,并从当前全局数据亲密图中删除上述亲密度之和最大的全局数据组合中的所有全局数据所对应的顶点以及边,得到当前全局数据亲密图,返回执行上述建立一个成员为空的新组以及后续步骤,直至全局数据亲密图的顶点数为0。
进一步,在当前进行地址分配的分组内的所有全局数据的数据大小之和小于cache line size,且在处理器704对上述当前进行地址分配的分组内的所有全局数据分配地址之后,处理器704在上述当前进行地址分配的分组所占用的缓存行中未被分配的其它地址空间填充数据。
需要说明的是,本发明实施例中的全局数据地址分配装置700可以如上述方法实施例中的全局数据地址分配装置,可以用于实现上述方法实施例中的全部技术方案,其各个功能模块的功能可以根据上述方法实施例中的方法具体实现,其具体实现过程可参照上述实施例中的相关描述,此处不再赘述。
需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本发明所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
本领域普通技术人员可以理解上述实施例中的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质例如可以包括:只读存储器、随机存储器、磁盘或光盘等。
以上对本发明所提供的一种全局数据的地址分配方法及相关装置进行了详细介绍,对于本领域的一般技术人员,依据本发明实施例的思想,在具体实施方式及应用范围上均会有改变之处,本说明书内容不应理解为对本发明的限制。
Claims (8)
1.一种全局数据的地址分配方法,其特征在于,包括:
对源程序中的全局数据进行分组,其中,同一分组内的所有全局数据满足如下条件:同一分组内的所有全局数据在同一个基本块中被使用,同一分组内的所有全局数据的数据大小之和不大于计算机系统的缓存行大小,所述同一个基本块的执行总数大于执行总数预设值;
为每个分组内的全局数据分配地址,使同一分组的全局数据分配在同一缓存行中,且使每个分组的全局数据段起始位置都与缓存行的起始位置对齐;
若存在未分组的全局数据,则为所述未分组的全局数据分配地址。
2.根据权利要求1所述的方法,其特征在于,
所述对源程序中的全局数据进行分组,包括:
生成全局数据亲密度图,其中,所述全局数据亲密度图包含:顶点、边以及所有顶点的亲密度大小,其中,所述全局数据亲密度图中的各个顶点分别指示所述源程序中的数据大小不大于所述缓存行大小的各个全局数据,所述顶点与所述全局数据一一对应,所述全局数据亲密度图中的每条边连接具备亲密度的两个顶点,其中,所述亲密度顶点是指满足数据大小之和不大于所述缓存行大小,且满足在同一个执行总数大于所述执行总数预设值的基本块中被使用的两个全局数据所对应的两个顶点,所述亲密度顶点的亲密度大小等于所述亲密度顶点对应的两个全局数据所在的基本块的执行总数;
建立一个成员为空的新组;
根据当前全局数据亲密图,选取亲密度最大的两个全局数据作为所述新组的成员;
从当前全局数据亲密图中删除选取的所述两个全局数据对应的两个顶点以及边,得到当前全局数据亲密图;
根据当前全局数据亲密图,将与所述新组的任一成员存在亲密度,并且数据大小不大于M的所有全局数据纳入考虑范围,其中,所述M等于所述缓存行大小减去所述新组的成员的数据大小之和;
判断所述纳入考虑范围的所有全局数据的数据大小之和是否大于所述M;
若所述纳入考虑范围的所有全局数据的数据大小之和不大于所述M,则,将所述纳入考虑范围的所有全局数据作为所述新组的成员,并从当前全局数据亲密图中删除所述纳入考虑范围的所有全局数据对应的顶点以及边,得到当前全局数据亲密图,返回执行所述建立一个成员为空的新组以及后续步骤,直至全局数据亲密图的顶点数为0;
若所述纳入考虑范围的所有全局数据的数据大小之和大于所述M,则,从所述纳入考虑范围的所有全局数据中列出数据大小之和不大于所述M的所有全局数据组合,根据当前全局数据亲密图,从所述所有全局数据组合中选取亲密度之和最大的全局数据组合,将所述亲密度之和最大的全局数据组合内的所有全局数据作为所述新组的成员,并从当前全局数据亲密图中删除所述亲密度之和最大的全局数据组合中的所有全局数据所对应的顶点以及边,得到当前全局数据亲密图,返回执行所述建立一个成员为空的新组以及后续步骤,直至全局数据亲密图的顶点数为0。
3.根据权利要求1或2所述的方法,其特征在于,
所述对源程序中的全局数据进行分组之前包括:
执行一次所述源程序;
记录执行所述源程序的过程中,所述源程序的每个基本块被执行的次数,得到每个基本块的执行总数。
4.根据权利要求1至2任一项所述的方法,其特征在于,
所述使每个分组的全局数据段起始位置都与缓存行的起始位置对齐,包括:
若当前进行地址分配的分组内的所有全局数据的数据大小之和小于所述缓存行大小,则在对所述当前进行地址分配的分组内的所有全局数据分配地址之后,在所述当前进行地址分配的分组所占用的缓存行中未被分配的其它地址空间填充数据。
5.一种全局数据地址分配装置,其特征在于,包括:
编译分组单元,用于对源程序中的全局数据进行分组,其中,同一分组内的所有全局数据满足如下条件:同一分组内的所有全局数据在同一个基本块中被使用,同一分组内的所有全局数据的数据大小之和不大于计算机系统的缓存行大小,所述同一个基本块的执行总数大于执行总数预设值;
地址分配单元,用于为所述编译分组单元分组得到的每个分组内的全局数据分配地址,使同一分组的全局数据分配在同一缓存行中,且使每个分组的全局数据段起始位置都与缓存行的起始位置对齐;当存在未分组的全局数据时,为所述未分组的全局数据分配地址。
6.根据权利要求5所述的全局数据地址分配装置,其特征在于,
所述编译分组单元包括:
生成单元,用于生成全局数据亲密度图,其中,所述全局数据亲密度图包含:顶点、边以及所有顶点的亲密度大小,其中,所述全局数据亲密度图中的各个顶点分别指示所述源程序中的数据大小不大于所述缓存行大小的各个全局数据,所述顶点与所述全局数据一一对应,所述全局数据亲密度图中的每条边连接具备亲密度的两个顶点,其中,所述亲密度顶点是指满足数据大小之和不大于所述缓存行大小,且满足在同一个执行总数大于所述执行总数预设值的基本块中被使用的两个全局数据所对应的两个顶点,所述亲密度顶点的亲密度大小等于所述亲密度顶点对应的两个全局数据所在的基本块的执行总数;
建立单元,用于建立一个成员为空的新组;
第一选取单元,用于根据当前全局数据亲密图,选取亲密度最大的两个全局数据作为所述新组的成员;
第二选取单元,用于根据当前全局数据亲密图,将与所述新组的任一成员存在亲密度,且数据大小不大于M的所有全局数据纳入考虑范围,其中,所述M等于所述缓存行大小减去所述新组的成员的数据大小之和;
判断单元,用于判断所述第二选取单元选取纳入考虑范围的所有全局数据的数据大小之和是否大于所述M;
第一添加单元,用于当所述判断单元的判断结果为否时,将所述纳入考虑范围的所有全局数据作为所述新组的成员;
第三选取单元,用于当所述判断单元的判断结果为是时,从所述第二选取单元选取所述纳入考虑范围的所有全局数据中列出数据大小之和不大于所述M的所有全局数据组合;根据当前全局数据亲密图,从所述所有全局数据组合中选取亲密度之和最大的全局数据组合;
第二添加单元,用于将所述第三选取单元中选取的亲密度之和最大的全局数据组合内的所有全局数据作为所述新组的成员;
更新单元,用于:在所述第一选取单元触发时,从当前全局数据亲密图中删除所述第一选取单元选取的所述两个全局数据对应的两个顶点以及边;在所述第一添加单元触发时,从当前全局数据亲密图中删除所述第二选取单元纳入考虑范围的所有全局数据对应的顶点以及边;在所述第二添加单元触发时,从当前全局数据亲密图中删除所述第三选取单元选取的亲密度之和最大的全局数据组合内的所有全局数据所对应的顶点以及边。
7.根据权利要求5或6所述的全局数据地址分配装置,其特征在于,
所述全局数据地址分配装置,还包括:
执行次数统计单元,用于执行一次所述源程序;记录执行所述源程序的过程中,所述源程序的每个基本块被执行的次数,得到每个基本块的执行总数。
8.根据权利要求5至6任一项所述的全局数据地址分配装置,
其特征在于,所述全局数据地址分配装置还包括:
填充单元,用于在当前进行地址分配的分组内的所有全局数据的数据大小之和小于所述缓存行大小,且在所述地址分配单元对所述当前进行地址分配的分组内的所有全局数据分配地址之后,在所述当前进行地址分配的分组所占用的缓存行中未被分配的其它地址空间填充数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210558814.8A CN103885886B (zh) | 2012-12-20 | 2012-12-20 | 一种全局数据的地址分配方法及相关装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210558814.8A CN103885886B (zh) | 2012-12-20 | 2012-12-20 | 一种全局数据的地址分配方法及相关装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103885886A CN103885886A (zh) | 2014-06-25 |
CN103885886B true CN103885886B (zh) | 2016-08-24 |
Family
ID=50954794
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210558814.8A Active CN103885886B (zh) | 2012-12-20 | 2012-12-20 | 一种全局数据的地址分配方法及相关装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103885886B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107943519B (zh) * | 2017-12-12 | 2018-12-11 | 清华大学 | 一种时序数据乱序操作处理方法和装置 |
CN111538677B (zh) * | 2020-04-26 | 2023-09-05 | 西安万像电子科技有限公司 | 数据处理方法及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6721775B1 (en) * | 1999-08-12 | 2004-04-13 | International Business Machines Corporation | Resource contention analysis employing time-ordered entries in a blocking queue and waiting queue |
CN1851671A (zh) * | 2005-07-01 | 2006-10-25 | 华为技术有限公司 | 一种节省全局变量内存空间的方法 |
CN101241444A (zh) * | 2008-02-21 | 2008-08-13 | 上海交通大学 | 用于动态二进制翻译的调试方法 |
-
2012
- 2012-12-20 CN CN201210558814.8A patent/CN103885886B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6721775B1 (en) * | 1999-08-12 | 2004-04-13 | International Business Machines Corporation | Resource contention analysis employing time-ordered entries in a blocking queue and waiting queue |
CN1851671A (zh) * | 2005-07-01 | 2006-10-25 | 华为技术有限公司 | 一种节省全局变量内存空间的方法 |
CN101241444A (zh) * | 2008-02-21 | 2008-08-13 | 上海交通大学 | 用于动态二进制翻译的调试方法 |
Non-Patent Citations (1)
Title |
---|
提高堆数据局部性的动态池分配技术;王振江等;《计算机学报》;20110430;第34卷(第4期);第665-675页 * |
Also Published As
Publication number | Publication date |
---|---|
CN103885886A (zh) | 2014-06-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6360188B1 (en) | Time-based modeling | |
US10146745B2 (en) | Integrated display of data metrics from different data sources | |
CN107480039A (zh) | 一种分布式存储系统的小文件读写性能测试方法及装置 | |
TW200820058A (en) | Enabling web analytics for interactive web applications | |
US20110231322A1 (en) | Automated rules-based rights resolution | |
US7478016B2 (en) | Block modeling input/output buffer | |
CN105989082A (zh) | 报表视图生成方法和装置 | |
CN103995908A (zh) | 一种数据导入方法及装置 | |
CN104881275A (zh) | 一种电子报表生成方法及装置 | |
US9015608B2 (en) | Regenerating a user interface area | |
US20070033570A1 (en) | Method and system for transforming a process flow | |
CN103348329A (zh) | 生成测试数据 | |
CN103489061A (zh) | 批量数据处理装置和批量数据处理方法 | |
WO2017143996A1 (zh) | 数据展示的方法与装置 | |
CN109669995A (zh) | 数据存储、质量计算方法、装置、存储介质及服务器 | |
CN103744831A (zh) | 一种多维度报表的编制方法及装置 | |
CN108089982A (zh) | 测试方法、装置、电子设备及计算机可读存储介质 | |
CN110414926A (zh) | 台账管理方法、装置及计算机可读存储介质 | |
CN103885886B (zh) | 一种全局数据的地址分配方法及相关装置 | |
CN1987775A (zh) | 用于对事件进行处理的方法和设备 | |
Atanasovski et al. | EDUCache simulator for teaching computer architecture and organization | |
CN109670011B (zh) | 一种多图源地图服务引擎 | |
CN106951273A (zh) | 一种动态配置生成业务工作台的方法和装置 | |
CN103312835B (zh) | 地址溯源方法和装置 | |
CN114610305B (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 |