CN108132834A - 多级共享高速缓冲存储器架构下的任务分配方法和*** - Google Patents
多级共享高速缓冲存储器架构下的任务分配方法和*** Download PDFInfo
- Publication number
- CN108132834A CN108132834A CN201711298943.7A CN201711298943A CN108132834A CN 108132834 A CN108132834 A CN 108132834A CN 201711298943 A CN201711298943 A CN 201711298943A CN 108132834 A CN108132834 A CN 108132834A
- Authority
- CN
- China
- Prior art keywords
- sequence
- task
- program
- unit
- cache memory
- 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.)
- Granted
Links
Classifications
-
- 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
-
- 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明提供了一种多级共享高速缓冲存储器架构下的任务分配方法和***,属于多核/众核处理器任务分配领域。本发明引入footprint值与地址序列长度值的比值作为局部性参数,其并通过将程序局部性原理应用到程序分配中,有效的提高片上存储器的利用率从而提高***性能,且操作性良好。本发明通过枚举务分配方式,并寻找局部性参数最小的任务分配方式,并据此进行任务分配;或者通过最小化拥有相同共享Cache的程序簇之间的局部性差异,使任务分配局部性尽可能均匀,在牺牲少量精度的情况下,减少了寻找最佳任务分配方式的时间,提高了任务分配效率。
Description
技术领域
本发明属于多核/众核处理器任务分配领域,特别涉及一种多级共享高速缓冲存储器架构下的任务分配方法和***。
背景技术
随着半导体技术的发展,同时为了追求更高的处理器性能,越来越多的计算机核心(core)被集成到一个模具上。这些核心通常共享着高级别的高速缓冲存储器(cache),以此减少片外存储器访问带来的性能损耗。然而,随着核心数量的增长,并行计算任务对片上共享资源,特别是高速缓冲存储器的争夺日益加剧,这可能导致频繁的cache失效,降低并行处理的性能。由于不同的任务需要不同的共享资源,因此不同的并行任务组合将占用不同数量的共享高速缓存。所以,针对片上多处理器(CMP)的任务调度分配研究对提高片上存储器的利用率从而提高***性能具有重要意义。
对于多核/众核任务调度分配算法(task scheduling on multi-coreprocessors)的研究已有多年历史。现在主流的研究是real-time scheduling,可以大体分为以下三个方面:
全局调度(global scheduling):每个任务可以在任何可用的处理器上执行。全局调度中所有符合条件的任务都存储在一个单优先级有序队列中,全局调度程序选择队列中最高优先级任务分配处理器。全局调度相对于分区调度能很好地利用计算资源,并对定时误差有好的容忍性。全局调度更适合于开放式***,当任务集发生变化时,不需要运行任务分配算法。但同时使用这种方法和单处理器调度优化算法可能导致多处理器***中处理器利用率降低。
分区调度(partitioned scheduling)。每个任务预先分配给处理器,并且在运行时只能在这个特定的处理器上执行。分区调度不允许动态负载平衡,但拥有实现容易的好处。一旦***被划分成子***,单处理器实时调度和分析技术便可以应用到每个子***。但分区调度的挑战是如何将***工作负载分配给单个处理器,从而使得利用率最大化。同时分区调度使用每个处理器单独运行队列,而不是单个全局队列。对于大型***,操作单一全局队列的开销可能变得过高。
基于缓存感知调度(cache-aware scheduling)。多核体系结构通过使用共享缓存来提高平均性能,但来自不同核的共享缓存访问会互相干扰。要精确地预测每个任务的执行时间,需要考虑所有共同执行任务的相关信息,而这些任务组合又取决于任务调度。N.Guan提出了一种高速缓存分区任务分配方法,通过将缓存空间分区,使每个任务占有固定的缓存大小。但如果平均分配缓存空间,会对缓存需求大的任务不公平。本发明通过对任务进行局部性原理分析,能很好地解决这种不公平现象。
发明内容
本发明的目的在于提供一种多级共享高速缓冲存储器架构下的任务分配方法和***,其能够有效的提高片上存储器的利用率从而提高***性能,同时具有好的可操作性。
本发明是通过以下技术方案来实现:
一种多级共享高速缓冲存储器架构下的任务分配方法,其中,所述共享高速缓冲存储器均在同一层级且数量大于2,每个共享高速缓冲存储器均连接相同数量的核心,每个核心只能分配一个任务;该方法包括步骤:
1)提取任务数、与单个共享高速缓冲存储器相连的核心的数量、共享高速缓冲存储器的个数;每个任务对应一个程序,对于待分配的每一个程序通过离线分析计算对应的footprint值和地址序列长度值;
其中,任务数大于共享高速缓冲存储器的数量且不大于所有核心的数量;
2)计算任务分配方式数量,枚举所有任务分配方式,并计算每一种任务分配方式的局部性参数,选出局部性参数最小的任务分配方式作为最佳任务分配方式;
其中,局部性参数的计算方法为:在一种任务分配方式中,计算每一个共享高速缓冲存储器上的任务的局部性数据,并从所有的共享高速缓冲存储器上的任务的局部性数据中选出最大值作为该任务分配方式的局部性参数;共享高速缓冲存储器上的任务的局部性数据为:分配到该共享高速缓冲存储器所相连的所有核心的程序的footprint值之和与分配到该共享高速缓冲存储器所相连的所有核心的程序的地址序列长度值之和的比值;
3)根据最佳任务分配方式,向核心分配任务。
优选地,在步骤1)中,所述任务均是没有数据共享的程序,程序热点为循环。
优选地,所述footprint值为程序通过离线分析访问地址序列中的不同地址数量;所述地址序列长度值为程序通过离线分析访问地址序列中的所有地址数量。
优选地,在步骤1)中,所述离线分析的方法为:待分析的程序的循环热点部分运行至少连续两个完整的最外层循环迭代,记录访问的地址序列,根据访问的地址序列计算出footprint值和地址序列长度值。
一种多级共享高速缓冲存储器架构下的任务分配***,其中,所述分配***包括在同一层级且数量大于2的共享高速缓冲存储器,每个共享高速缓冲存储器均连接相同数量的核心,每个核心只能分配一个任务,该***还包括:
离线分析单元,用于计算和存储每个程度对应的footprint值和地址序列长度值;
任务分配计算单元,用于计算任务分配方式数量,枚举所有任务分配方式,并计算每一种任务分配方式的局部性参数,选出局部性参数最小的任务分配方式作为最佳任务分配方式;其中,局部性参数的计算方法为:在一种任务分配方式中,计算每一个共享高速缓冲存储器上的任务的局部性数据,并从所有的共享高速缓冲存储器上的任务的局部性数据中选出最大值作为该任务分配方式的局部性参数;共享高速缓冲存储器上的任务的局部性数据为:分配到该共享高速缓冲存储器所相连的所有核心的程序的footprint值之和与分配到该共享高速缓冲存储器所相连的所有核心的程序的地址序列长度值之和的比值;
分配单元,用于根据最佳任务分配方式向核心分配任务。
一种多级共享高速缓冲存储器架构下的任务分配方法,其中,所述共享高速缓冲存储器均在同一层级且数量大于2,每个共享高速缓冲存储器均连接相同数量的核心,每个核心只能分配一个任务,该方法包括步骤:
1)提取任务数、与单个共享高速缓冲存储器相连的核心的数量、共享高速缓冲存储器的个数;每个任务对应一个程序,对于待分配的每一个程序通过离线分析计算对应的footprint值和地址序列长度值;
其中,任务数大于共享高速缓冲存储器的数量且不大于所有核心的数量;
2A)计算每个程序的局部性参数,然后将程序按照程序的局部性参数的大小进行排序,得到排序序列,此时,每一个程序作为一个排序单位;
其中,程序的局部性参数为该程序的footprint值与地址序列长度值的比值;
2B)若排序单位的数量大于共享高速缓冲存储器的数量的2倍,则将位于排序序列两端的排序单位合并为一个子组;将剩余的排序序列的两端的排序单位合并为一个子组,如此重复直至所有排序单位均组成了子组,或者仅剩下一个排序单位;此时每个子组均作为一个新的排序单位,如果有剩余的排序单位,则剩余的排序单位作为一个新的排序单位;计算新的排序单位的局部性参数,并按照局部性参数大小将新的排序单位排列成新的排序序列;
重复如上步骤,直至排序序列中排序单位的数量大于共享高速缓冲存储器的数量而不大于共享高速缓冲存储器数量的2倍;
其中,排序单位的局部性参数为:组成排序单位的所有程序的footprint值之和与组成排序单位的所有程序的地址序列长度值之和的比值;
2C)若排序序列中排序单位的数量大于共享高速缓冲存储器的数量而不大于共享高速缓冲存储器数量的2倍,则:
将位于排序序列两端的排序单位合并为一个子组,剩余的排序序列形成新的排列序列;重复该步骤,直至子组的数量与新的排序序列中的排序单位的数量之和等于共享高速缓冲存储器的数量;
此时,最佳任务分配方式为:每个子组和新的排序序列中的排序单位均作为一个分配组,每个分配组对应一个共享高速缓冲存储器,每个分配组中的程序分别分配给连接到相应的共享高速缓冲存储器上的核心;
3)根据最佳任务分配方式,向核心分配任务。
优选地,所述任务均是没有数据共享的程序,程序热点为循环。
优选地,所述footprint值为程序通过离线分析访问地址序列中的不同地址数量;所述地址序列长度值为程序通过离线分析访问地址序列中的所有地址数量。
优选地,程序的footprint值与地址序列长度值的获取方式为:待分析的程序的循环热点部分运行至少连续两个完整的最外层循环迭代,记录访问的地址序列,根据访问的地址序列计算出footprint值和地址序列长度值。
优选地,所述分配***包括在同一层级且数量大于2的共享高速缓冲存储器,每个共享高速缓冲存储器均连接相同数量的核心,每个核心只能分配一个任务,其特征在于,还包括:离线分析单元、合并排序单元和分配单元;
离线分析单元,用于计算和存储每个程度对应的footprint值和地址序列长度值;
合并排序单元,用于计算每个程序的局部性参数,然后将程序按照程序的局部性参数的大小进行排序,得到排序序列,此时,每一个程序作为一个排序单位;其中,程序的局部性参数为该程序的footprint值与地址序列长度值的比值;
然后,若排序单位的数量大于共享高速缓冲存储器的数量的2倍,则将位于排序序列两端的排序单位合并为一个子组;将剩余的排序序列的两端的排序单位合并为一个子组,如此重复直至所有排序单位均组成了子组,或者仅剩下一个排序单位;此时每个子组均作为一个新的排序单位,如果有剩余的排序单位,则剩余的排序单位作为一个新的排序单位;计算新的排序单位的局部性参数,并按照局部性参数大小将新的排序单位排列成新的排序序列;重复如上步骤,直至排序序列中排序单位的数量大于高速缓冲存储器的数量而不大于共享高速缓冲存储器数量的2倍;其中,排序单位的局部性参数为:组成排序单位的所有程序的footprint值之和与组成排序单位的所有程序的地址序列长度值之和的比值;
若排序序列中排序单位的数量大于共享高速缓冲存储器的数量而不大于共享高速缓冲存储器数量的2倍,则:将位于排序序列两端的排序单位合并为一个子组,剩余的排序序列形成新的排列序列;重复该步骤,直至子组的数量与新的排序序列中的排序单位的数量之和等于共享高速缓冲存储器的数量;此时,最佳任务分配方式为:每个子组和新的排序序列中的排序单位均作为一个分配组,每个分配组对应一个共享高速缓冲存储器,每个分配组中的程序分别分配给连接到相应的共享高速缓冲存储器上的核心;
分配单元,用于根据最佳任务分配方式向核心分配任务。
与现有技术相比,本发明具有以下有益的技术效果:
本发明提供的一种多级共享cache架构下的任务分配方法和***,其通过将程序局部性原理应用到程序分配中,通过枚举务分配方式,并寻找局部性参数最小的任务分配方式,并据此进行任务分配,这保证了分配的精确性,能够有效的提高片上存储器的利用率从而提高***性能,其操作性良好。
进一步地,本发明将程序的循环热点部分运行至少连续两个个完整的最外层循环迭代,记录访问的地址序列,根据访问的地址序列计算出提取footprint(固定窗口内存占用量)值和地址序列长度值,并据此计算出程序的局部性参数;其选择数个外层循环迭代,来计算程序的局部性参数,大大改善了传统离线分析时间损耗大的缺点。
本发明提供的另一种多级共享cache架构下的任务分配的方法,其将程序局部性原理应用到程序分配中,通过最小化拥有相同共享Cache的程序簇之间的局部性差异,使任务分配局部性尽可能均匀,在牺牲少量精度的情况下,减少了寻找最佳任务分配方式的时间,提高了任务分配效率,能够有效的提高片上存储器的利用率从而提高***性能。该方法简单方便,可操作性好。
附图说明
图1为本发明实施例中用到的一种多级共享cache架构。
具体实施方式
下面结合具体的实施例对本发明做进一步的详细说明,所述是对本发明的解释而不是限定。
实施例1
一种多级共享cache架构下任务分配的方法,其中,所述共享cache均在同一层级且数量大于2,每个共享cache均连接相同数量的core,每个core只能分配一个任务。每个任务对应一个程序,程序之间没有数据共享,程序热点为循环。任务数大于共享cache的数量且不大于所有core的数量,即core在工作时没有超线程。
其中,该任务分配既可以是在同一个处理器中进行的,也可以在共享有cache的多个处理器之间进行。
该任务分配的方法包括步骤:
1)提取任务数、与单个共享cache相连的core的数量、共享cache的个数;每个任务对应一个程序,对于待分配的每一个程序通过离线分析计算对应的footprint值和地址序列长度值;
其中,所述footprint值为程序通过离线分析访问地址序列中的不同地址数量;所述地址序列长度值为程序通过离线分析访问地址序列中的所有地址数量;
其中,所述离线分析的方法为:待分析的程序的循环热点部分运行至少连续两个完整的最外层循环迭代,记录访问的地址序列,根据访问的地址序列计算出footprint值和地址序列长度值。
或者,程序的footprint值和地址序列长度值,是在程序应用之前预先通过离线分析获得的,并存储在计算机中,以便在任务分配时随时调用。
2)计算任务分配方式数量,枚举所有任务分配方式,并计算每一种任务分配方式的局部性参数,选出局部性参数最小的任务分配方式作为最佳任务分配方式;
其中,局部性参数的计算方法为:在一种任务分配方式中,计算每一个共享cache上的任务的局部性数据,并从所有的共享cache上的任务的局部性数据中选出最大值作为该任务分配方式的局部性参数;共享cache上的任务的局部性数据为:分配到该共享cache所相连的所有core的程序的footprint值之和与分配到该共享cache所相连的所有core的程序的地址序列长度值之和的比值;
3)根据最佳任务分配方式,向core分配任务。
实施例2
一种基于实施例1的多级共享cache架构下任务分配的方法,区别在于,步骤2)被替换为:2A)计算每个程序的局部性参数,然后将程序按照程序的局部性参数的大小进行排序,得到排序序列,此时,每一个程序作为一个排序单位;
其中,程序的局部性参数为该程序的footprint值与地址序列长度值的比值;
2B)若排序单位的数量大于共享cache的数量的2倍,则将位于排序序列两端的排序单位合并为一个子组;将剩余的排序序列的两端的排序单位合并为一个子组,如此重复直至所有排序单位均组成了子组,或者仅剩下一个排序单位;此时每个子组均作为一个新的排序单位,如果有剩余的排序单位,则剩余的排序单位作为一个新的排序单位;计算新的排序单位的局部性参数,并按照局部性参数大小将新的排序单位排列成新的排序序列;
重复如上步骤,直至排序序列中排序单位的数量大于共享cache的数量而不大于共享cache数量的2倍;
其中,排序单位的局部性参数为:组成排序单位的所有程序的footprint值之和与组成排序单位的所有程序的地址序列长度值之和的比值;
2C)若排序序列中排序单位的数量大于共享cache的数量而不大于共享cache数量的2倍,则:
将位于排序序列两端的排序单位合并为一个子组,剩余的排序序列形成新的排列序列;重复该步骤,直至子组的数量与新的排序序列中的排序单位的数量之和等于共享cache的数量;
此时,最佳任务分配方式为:每个子组和新的排序序列中的排序单位均作为一个分配组,每个分配组对应一个共享cache,每个分配组中的程序分别分配给连接到相应的共享cache上的core。
实施例3
一种多级共享cache架构下任务分配的方法,其中,任务分配时,对于要分配的每一个程序预先通过离线分析计算对应的footprint值以及地址序列长度值。第一种分配方法将所有任务进行全排列组合,枚举出所有任务分配方式,计算任务分配方式的局部性参数(footprint值/地址序列长度值)作为判别参数,并选取局部性参数最小的任务分配方式作为最佳任务分配方式。第二种算法直接计算每个任务的局部性参数(footprint值/地址序列长度值),通过局部性参数大小将任务均匀分开使得每个共享cache上的任务之间的局部性参数差值最小,这样得到的即为最佳任务分配方式。
根据所得到的最佳分配方式,向core分配任务。
所述任务均为没有数据共享且以循环为热点的程序。
所述footprint值为在给定地址序列内访问的不同地址数量。而地址序列长度值即为地址序列中所有的地址的个数。
所述第一种方法将多处理器中共享cache上的任务局部性参数(footprint值/地址序列长度值)最大的一个作为任务分配方式的的比较参数。
在第一种方法(枚举任务分配算法)中,组合的局部性参数的计算方法为:在一种组合中,计算每一个cache上的任务的局部性数据,并从所有的cache上的任务的局部性数据中选出最大值作为该组合的局部性参数;cache的局部性数据为:分配到该cache所相连的所有core的程序的footprint值之和与分配到该cache所相连的所有core的程序的地址序列长度值之和的比值;
例如,假设一个cache上连接有四个core,四个core上分别分配了程序A、程序B、程序C和程序D,则该cache局部性数据为:
其中,f(A)为footprint value of A,即A程序的footprint值;f(B)为footprintvalue of B,即B程序的footprint值;f(C)为footprint value of C,即C程序的footprint值;f(D)为footprint value of D,即D程序的footprint值.
其中,A(A)为address sequence length of A,即A程序的地址序列长度值;A(B)为address sequence length of B,即B程序的地址序列长度值;A(C)为address sequencelength of C,即C程序的地址序列长度值;A(D)为address sequence length of D,即D程序的地址序列长度值。
在第二种算法(快速并行任务分配算法)中,将最大局部性参数的任务和最小局部性参数的任务进行组合,这样的得到的分组之间的差距最小,即差异最小。
第一种方法通过将程序局部性原理应用到程序分配中,既保证了分配的精确性同时也大大改善了传统离线分析时间损耗大的缺点。第二种方法在第一种方法的基础上,在牺牲少量精度的情况下,进一步减少了离线分析的时间开销。
本发明的实例以多个程序(任务数目大于或等于核数)在多核处理器上运行为例。各个程序之间没有数据共享。在本实施例中,一个程序就是一个任务。
本发明提出的两种基于局部性度量的缓存感知任务分配算法,主要涉及两方面创新:第一,定义了“footprint/地址序列长度”为局部性度量参数,即局部性参数;第二,提出了两种基于上述参数的分配算法。
首先介绍如何离线获取程序的footprint值和地址序列长度值。
由于大多数程序,特别是科学和工程应用程序,时间大多花在嵌套循环代码上。本发明针对这一特性,使用循环代码局部性参数来表示整个程序的局部性参数。由于循环代码通常有规律性和周期性的特点,我们只需对连续的迭代的小部分进行采样(至少包括二个完整的外层循环迭代),而不是完整的迭代,就可以大致反映整个迭代的特点。本实施例选择最外层循环的3个完全连续迭代,来计算程序的局部性参数。
本实施例对于每个目标程序,记录3个连续的最外层迭代访问的地址序列。然后,计算序列中不同地址数量(即footprint值)和地址序列长度值。因为程序的地址序列长度值是不同的,所以本发明定义了一个“footprint值/地址序列长度值”的局部性参数来比较每个程序的局部性。该参数根据地址序列长度将footprint划分。考虑到循环迭代的规律性和周期性,本发明只需要计算以地址序列长度为窗口中的footprint值,而不是计算许多不同大小窗口的footprint值。
接着介绍两个分配算法。
1、枚举任务分配算法:
对于多个任务分配到多核处理器的情况,首先计算每个程序的footprint值和地址序列长度值,同时计算枚举分组的个数。将分组中的共享cache上的任务的局部性数据的最大值作为分组的局部性参数。选出局部性参数最小的分组作为最佳任务分配方案,进行任务分配。表1给出了枚举任务分配算法的具体执行步骤。
算法1枚举任务分配算法
例如,在一种验证例中,采用了如图1所示的多级共享cache架构,其中,共享cache的数量为2个,每个共享cache上的core均为四个;选择8个没有数据共享的程序,进行任务分配,则寻找最佳任务分配方式的方法如表2所示:
算法2枚举任务分配算法
利用枚举任务分配算法,首先计算得到总的组合数为35。然后针对每一组合计算对应的局部性参数FA,可以得到FA[1]…FA[35]。再对其进行排序得到之最小的FA[min]。min对应的组合即为选出的最佳任务分配方案。根据图1可以知晓,core1~core4共享左侧的共享cache,core5~core8共享右侧的共享cache;因此,对于一种组合,其局部性参数FA的计算方法为:假设喷配到core1~core8上的程序依次为程序1~程序8,则左侧的cache上任务的局部性数据为(程序1~程序4的footprint值之和)/(程序1~程序4的address值之和);右侧的cache上任务的局部性数据为(程序5~程序8的footprint值之和)/(程序5~程序8的address值之和);从左侧的cache上任务的局部性数据和右侧的cache上任务的局部性数据中选择最大值,作为该组合的局部性参数FA。
2、快速并行任务分配算法:
为了进一步优化枚举算法,本发明提出了一种更为可行的快速并行任务分配算法。通过最小化拥有相同共享Cache的程序簇之间的局部性差异,即使各共享Cache上的分配局部性尽可能均匀。
首先,计算每个程序的局部性参数,然后将程序按照程序的局部性参数的大小进行排序,得到排序序列,此时,每一个程序作为一个排序单位;
其中,程序的局部性参数为该程序的footprint值与地址序列长度值的比值;
然后,A)若排序单位的数量大于共享cache的数量的2倍,则将位于排序序列两端的排序单位合并为一个子组;将剩余的排序序列的两端的排序单位合并为一个子组,如此重复直至所有排序单位均组成了子组,或者仅剩下一个排序单位;此时每个子组均作为一个新的排序单位,如果有剩余的排序单位,则剩余的排序单位作为一个新的排序单位;计算新的排序单位的局部性参数,并按照局部性参数大小将新的排序单位排列成新的排序序列;
重复如上步骤,直至排序序列中排序单位的数量大于共享cache的数量而不大于共享cache数量的2倍;
其中,排序单位的局部性参数为:组成排序单位的所有程序的footprint值之和与组成排序单位的所有程序的地址序列长度值之和的比值;
B)若排序序列中排序单位的数量大于共享cache的数量而不大于共享cache数量的2倍,则:
将位于排序序列两端的排序单位合并为一个子组,剩余的排序序列形成新的排列序列;重复该步骤,直至子组的数量与新的排序序列中的排序单位的数量之和等于共享cache的数量;
此时,最佳任务分配方式为:每个子组和新的排序序列中的排序单位均作为一个分配组,每个分配组对应一个共享cache,每个分配组中的程序分别分配给连接到相应的共享cache上的core。
表3举例了一种应用快速并行任务分配算法寻找最佳任务分配方式的方法:
算法3快速并行任务分配算法
例如,在一种验证例中,采用了如图1所示的多级共享cache架构,其中,共享cache的数量为2个,每个共享cache上的core均为四个;选择8个没有数据共享的程序,进行任务分配,则寻找最佳任务分配方式的方法如表4所示:
算法4快速并行任务分配算法
利用快速并行任务分配算法,首先对8个任务的局部性参数FA值进行排序。然后,将具有最小局部参数的任务和具有最大局部参数的任务组成一个子组,将具有第二最小局部参数的任务和具有倒数第二大局部参数的任务组成一个子组,等等。我们计算每个子组的局部参数,然后由小到大的局部参数对所有子组进行排序。同样,第一子组和最后子组被合并成一个新子组,第二个子组和倒数第二个子组被合并到另一个子组中,等等。重复此过程,直到子组中的任务数等于共享相同缓存的核心数4。最后的到分组即为最佳分配方案。
假设8个程序的FA值从小到大为:FA[1]→FA[2]→FA[3]→FA[4]→FA[5]→FA[6]→FA[7]→FA[8]。接着合并子组可以的到(1,8),(2,7),(3,6),(4,5)四个子组。再计算子组的FA值并对其排序,重复上诉操作即可选出最优组合。
选用图1所示的架构,并选择8个不共享数据的程序进行任务分配方法验证,由于本发明提供的两种算法属于静态缓存感知分配,相关研究很少,所以我们主要和最优(optimal)、最差(worst)、平均(average)以及Linux自身分配进行了比较。
本发明在Xeon E5620服务器上进行了实验验证,实验结果展示在表5中,实验结果表明,本发明能够选择出较优的分组,相对Linux操作***的任务分配***有更好的表现,其中,性能体现按组合程序运行时间来评判的。表5中百分比指的就是时间的对比。正数表示提升,负数表示延迟。
Claims (10)
1.一种多级共享高速缓冲存储器架构下的任务分配方法,其中,所述共享高速缓冲存储器均在同一层级且数量大于2,每个共享高速缓冲存储器均连接相同数量的核心,每个核心只能分配一个任务,其特征在于,包括步骤:
1)提取任务数、与单个共享高速缓冲存储器相连的核心的数量、共享高速缓冲存储器的个数;每个任务对应一个程序,对于待分配的每一个程序通过离线分析计算对应的footprint值和地址序列长度值;
其中,任务数大于共享高速缓冲存储器的数量且不大于所有核心的数量;
2)计算任务分配方式数量,枚举所有任务分配方式,并计算每一种任务分配方式的局部性参数,选出局部性参数最小的任务分配方式作为最佳任务分配方式;
其中,局部性参数的计算方法为:在一种任务分配方式中,计算每一个共享高速缓冲存储器上的任务的局部性数据,并从所有的共享高速缓冲存储器上的任务的局部性数据中选出最大值作为该任务分配方式的局部性参数;共享高速缓冲存储器上的任务的局部性数据为:分配到该共享高速缓冲存储器所相连的所有核心的程序的footprint值之和与分配到该共享高速缓冲存储器所相连的所有核心的程序的地址序列长度值之和的比值;
3)根据最佳任务分配方式,向核心分配任务。
2.如权利要求1所述的任务分配方法,其特征在于,在步骤1)中,所述任务均是没有数据共享的程序,程序热点为循环。
3.如权利要求1所述的任务分配方法,其特征在于,所述footprint值为程序通过离线分析访问地址序列中的不同地址数量;所述地址序列长度值为程序通过离线分析访问地址序列中的所有地址数量。
4.如权利要求1所述的任务分配方法,其特征在于,在步骤1)中,所述离线分析的方法为:待分析的程序的循环热点部分运行至少连续两个完整的最外层循环迭代,记录访问的地址序列,根据访问的地址序列计算出footprint值和地址序列长度值。
5.一种多级共享高速缓冲存储器架构下的任务分配***,其中,所述分配***包括在同一层级且数量大于2的共享高速缓冲存储器,每个共享高速缓冲存储器均连接相同数量的核心,每个核心只能分配一个任务,其特征在于,还包括:
离线分析单元,用于计算和存储每个程度对应的footprint值和地址序列长度值;
任务分配计算单元,用于计算任务分配方式数量,枚举所有任务分配方式,并计算每一种任务分配方式的局部性参数,选出局部性参数最小的任务分配方式作为最佳任务分配方式;其中,局部性参数的计算方法为:在一种任务分配方式中,计算每一个共享高速缓冲存储器上的任务的局部性数据,并从所有的共享高速缓冲存储器上的任务的局部性数据中选出最大值作为该任务分配方式的局部性参数;共享高速缓冲存储器上的任务的局部性数据为:分配到该共享高速缓冲存储器所相连的所有核心的程序的footprint值之和与分配到该共享高速缓冲存储器所相连的所有核心的程序的地址序列长度值之和的比值;
分配单元,用于根据最佳任务分配方式向核心分配任务。
6.一种多级共享高速缓冲存储器架构下的任务分配方法,其中,所述共享高速缓冲存储器均在同一层级且数量大于2,每个共享高速缓冲存储器均连接相同数量的核心,每个核心只能分配一个任务,其特征在于,包括步骤:
1)提取任务数、与单个共享高速缓冲存储器相连的核心的数量、共享高速缓冲存储器的个数;每个任务对应一个程序,对于待分配的每一个程序通过离线分析计算对应的footprint值和地址序列长度值;
其中,任务数大于共享高速缓冲存储器的数量且不大于所有核心的数量;
2A)计算每个程序的局部性参数,然后将程序按照程序的局部性参数的大小进行排序,得到排序序列,此时,每一个程序作为一个排序单位;
其中,程序的局部性参数为该程序的footprint值与地址序列长度值的比值;
2B)若排序单位的数量大于共享高速缓冲存储器的数量的2倍,则将位于排序序列两端的排序单位合并为一个子组;将剩余的排序序列的两端的排序单位合并为一个子组,如此重复直至所有排序单位均组成了子组,或者仅剩下一个排序单位;此时每个子组均作为一个新的排序单位,如果有剩余的排序单位,则剩余的排序单位作为一个新的排序单位;计算新的排序单位的局部性参数,并按照局部性参数大小将新的排序单位排列成新的排序序列;
重复如上步骤,直至排序序列中排序单位的数量大于共享高速缓冲存储器的数量而不大于共享高速缓冲存储器数量的2倍;
其中,排序单位的局部性参数为:组成排序单位的所有程序的footprint值之和与组成排序单位的所有程序的地址序列长度值之和的比值;
2C)若排序序列中排序单位的数量大于共享高速缓冲存储器的数量而不大于共享高速缓冲存储器数量的2倍,则:
将位于排序序列两端的排序单位合并为一个子组,剩余的排序序列形成新的排列序列;重复该步骤,直至子组的数量与新的排序序列中的排序单位的数量之和等于共享高速缓冲存储器的数量;
此时,最佳任务分配方式为:每个子组和新的排序序列中的排序单位均作为一个分配组,每个分配组对应一个共享高速缓冲存储器,每个分配组中的程序分别分配给连接到相应的共享高速缓冲存储器上的核心;
3)根据最佳任务分配方式,向核心分配任务。
7.如权利要求6所述的任务分配方法,其特征在于,所述任务均是没有数据共享的程序,程序热点为循环。
8.如权利要求6所述的任务分配方法,其特征在于,所述footprint值为程序通过离线分析访问地址序列中的不同地址数量;所述地址序列长度值为程序通过离线分析访问地址序列中的所有地址数量。
9.如权利要求6所述的任务分配方法,其特征在于,程序的footprint值与地址序列长度值的获取方式为:待分析的程序的循环热点部分运行至少连续两个完整的最外层循环迭代,记录访问的地址序列,根据访问的地址序列计算出footprint值和地址序列长度值。
10.一种多级共享高速缓冲存储器架构下的任务分配***,其中,所述分配***包括在同一层级且数量大于2的共享高速缓冲存储器,每个共享高速缓冲存储器均连接相同数量的核心,每个核心只能分配一个任务,其特征在于,还包括:离线分析单元、合并排序单元和分配单元;
离线分析单元,用于计算和存储每个程度对应的footprint值和地址序列长度值;
合并排序单元,用于计算每个程序的局部性参数,然后将程序按照程序的局部性参数的大小进行排序,得到排序序列,此时,每一个程序作为一个排序单位;其中,程序的局部性参数为该程序的footprint值与地址序列长度值的比值;
然后,若排序单位的数量大于共享高速缓冲存储器的数量的2倍,则将位于排序序列两端的排序单位合并为一个子组;将剩余的排序序列的两端的排序单位合并为一个子组,如此重复直至所有排序单位均组成了子组,或者仅剩下一个排序单位;此时每个子组均作为一个新的排序单位,如果有剩余的排序单位,则剩余的排序单位作为一个新的排序单位;计算新的排序单位的局部性参数,并按照局部性参数大小将新的排序单位排列成新的排序序列;重复如上步骤,直至排序序列中排序单位的数量大于高速缓冲存储器的数量而不大于共享高速缓冲存储器数量的2倍;其中,排序单位的局部性参数为:组成排序单位的所有程序的footprint值之和与组成排序单位的所有程序的地址序列长度值之和的比值;
若排序序列中排序单位的数量大于共享高速缓冲存储器的数量而不大于共享高速缓冲存储器数量的2倍,则:将位于排序序列两端的排序单位合并为一个子组,剩余的排序序列形成新的排列序列;重复该步骤,直至子组的数量与新的排序序列中的排序单位的数量之和等于共享高速缓冲存储器的数量;此时,最佳任务分配方式为:每个子组和新的排序序列中的排序单位均作为一个分配组,每个分配组对应一个共享高速缓冲存储器,每个分配组中的程序分别分配给连接到相应的共享高速缓冲存储器上的核心;
分配单元,用于根据最佳任务分配方式向核心分配任务。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711298943.7A CN108132834B (zh) | 2017-12-08 | 2017-12-08 | 多级共享高速缓冲存储器架构下的任务分配方法和*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711298943.7A CN108132834B (zh) | 2017-12-08 | 2017-12-08 | 多级共享高速缓冲存储器架构下的任务分配方法和*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108132834A true CN108132834A (zh) | 2018-06-08 |
CN108132834B CN108132834B (zh) | 2020-08-18 |
Family
ID=62390169
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711298943.7A Active CN108132834B (zh) | 2017-12-08 | 2017-12-08 | 多级共享高速缓冲存储器架构下的任务分配方法和*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108132834B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110262884A (zh) * | 2019-06-20 | 2019-09-20 | 山东省计算中心(国家超级计算济南中心) | 一种基于申威众核处理器的核组内多程序多数据流分区并行的运行方法 |
CN110647390A (zh) * | 2019-09-20 | 2020-01-03 | 西安交通大学 | 一种多核***基于局部性量化的并行任务分配调度方法 |
CN112765086A (zh) * | 2020-12-30 | 2021-05-07 | 北京泽石科技有限公司 | 固态存储中一种基于cache一致性的软硬件交互方法 |
CN114546927A (zh) * | 2020-11-24 | 2022-05-27 | 北京灵汐科技有限公司 | 数据传输方法、核心、计算机可读介质、电子设备 |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101268445A (zh) * | 2005-09-21 | 2008-09-17 | 英特尔公司 | 用于分区的多处理器***的实时线程服务 |
CN103345451A (zh) * | 2013-07-18 | 2013-10-09 | 四川九成信息技术有限公司 | 一种在多核处理器中缓冲数据的方法 |
US20130326147A1 (en) * | 2011-12-29 | 2013-12-05 | Simon C. Steely, Jr. | Short circuit of probes in a chain |
CN103530187A (zh) * | 2006-03-27 | 2014-01-22 | 相干逻辑公司 | 为多处理器***设计程序 |
US20140189239A1 (en) * | 2012-12-28 | 2014-07-03 | Herbert H. Hum | Processors having virtually clustered cores and cache slices |
US20150331719A1 (en) * | 2013-05-13 | 2015-11-19 | Korea Advanced Institute Of Science And Technology | Apparatus and job scheduling method thereof |
US20160119125A1 (en) * | 2007-03-28 | 2016-04-28 | Intel Corporation | Flexible architecture and instruction for advanced encryption standard (aes) |
CN105868387A (zh) * | 2016-04-14 | 2016-08-17 | 江苏马上游科技股份有限公司 | 一种基于并行计算的离群数据挖掘方法 |
CN106354552A (zh) * | 2015-07-17 | 2017-01-25 | 宁波森浦融讯科技有限公司 | 并行计算任务分配方法和装置 |
US9639401B1 (en) * | 2014-05-08 | 2017-05-02 | Rockwell Collins, Inc. | Multicore adaptive scheduler |
CN104572501B (zh) * | 2015-01-08 | 2017-05-17 | 北京航空航天大学 | 一种基于访存踪迹局部性分析的多核环境下共享缓存优化方法 |
CN106990995A (zh) * | 2017-03-22 | 2017-07-28 | 西安交通大学 | 一种基于机器学习的循环分块大小选择方法 |
-
2017
- 2017-12-08 CN CN201711298943.7A patent/CN108132834B/zh active Active
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101268445A (zh) * | 2005-09-21 | 2008-09-17 | 英特尔公司 | 用于分区的多处理器***的实时线程服务 |
CN103530187A (zh) * | 2006-03-27 | 2014-01-22 | 相干逻辑公司 | 为多处理器***设计程序 |
US20160119125A1 (en) * | 2007-03-28 | 2016-04-28 | Intel Corporation | Flexible architecture and instruction for advanced encryption standard (aes) |
US20130326147A1 (en) * | 2011-12-29 | 2013-12-05 | Simon C. Steely, Jr. | Short circuit of probes in a chain |
US20140189239A1 (en) * | 2012-12-28 | 2014-07-03 | Herbert H. Hum | Processors having virtually clustered cores and cache slices |
US20150331719A1 (en) * | 2013-05-13 | 2015-11-19 | Korea Advanced Institute Of Science And Technology | Apparatus and job scheduling method thereof |
CN103345451A (zh) * | 2013-07-18 | 2013-10-09 | 四川九成信息技术有限公司 | 一种在多核处理器中缓冲数据的方法 |
US9639401B1 (en) * | 2014-05-08 | 2017-05-02 | Rockwell Collins, Inc. | Multicore adaptive scheduler |
CN104572501B (zh) * | 2015-01-08 | 2017-05-17 | 北京航空航天大学 | 一种基于访存踪迹局部性分析的多核环境下共享缓存优化方法 |
CN106354552A (zh) * | 2015-07-17 | 2017-01-25 | 宁波森浦融讯科技有限公司 | 并行计算任务分配方法和装置 |
CN105868387A (zh) * | 2016-04-14 | 2016-08-17 | 江苏马上游科技股份有限公司 | 一种基于并行计算的离群数据挖掘方法 |
CN106990995A (zh) * | 2017-03-22 | 2017-07-28 | 西安交通大学 | 一种基于机器学习的循环分块大小选择方法 |
Non-Patent Citations (4)
Title |
---|
TANG,XIAOYONG ET AL: "A shared cache-aware Task scheduling strategy for multi-core systems", 《ARTICLE IN JOURNAL OF INTELLIGENT AND FUZZY SYSTEMS》 * |
TENG-FENG YANG: "Cache-Aware Tash Scheduling on Multi-Core Architecture", 《PROCEEDINGS OF 2010 INTERNATIONAL SYMPOSIUM ON VLSI DESIGN, AUTOMATION AND TEST》 * |
YANGJIE CAO ET AL: "Scalable Hierarchical Scheduling for Malleable Parallel Jobs on Multiprocessor-based Systems", 《OAI:CITESEERX.PSU》 * |
刘孙等: "面向局部性和并行优化的循环分块技术", 《计算机研究与发展》 * |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110262884A (zh) * | 2019-06-20 | 2019-09-20 | 山东省计算中心(国家超级计算济南中心) | 一种基于申威众核处理器的核组内多程序多数据流分区并行的运行方法 |
CN110647390A (zh) * | 2019-09-20 | 2020-01-03 | 西安交通大学 | 一种多核***基于局部性量化的并行任务分配调度方法 |
CN110647390B (zh) * | 2019-09-20 | 2021-12-28 | 西安交通大学 | 一种多核***基于局部性量化的并行任务分配调度方法 |
CN114546927A (zh) * | 2020-11-24 | 2022-05-27 | 北京灵汐科技有限公司 | 数据传输方法、核心、计算机可读介质、电子设备 |
CN114546927B (zh) * | 2020-11-24 | 2023-08-08 | 北京灵汐科技有限公司 | 数据传输方法、核心、计算机可读介质、电子设备 |
CN112765086A (zh) * | 2020-12-30 | 2021-05-07 | 北京泽石科技有限公司 | 固态存储中一种基于cache一致性的软硬件交互方法 |
CN112765086B (zh) * | 2020-12-30 | 2023-09-08 | 北京泽石科技有限公司 | 固态存储中一种基于cache一致性的软硬件交互方法 |
Also Published As
Publication number | Publication date |
---|---|
CN108132834B (zh) | 2020-08-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Leis et al. | Morsel-driven parallelism: a NUMA-aware query evaluation framework for the many-core age | |
US8839259B2 (en) | Thread scheduling on multiprocessor systems | |
CN108132834A (zh) | 多级共享高速缓冲存储器架构下的任务分配方法和*** | |
US20070143759A1 (en) | Scheduling and partitioning tasks via architecture-aware feedback information | |
CN102231121B (zh) | 基于内存映射的大数据文件快速并行提取方法 | |
US10445344B2 (en) | Load balancing for large in-memory databases | |
CN106708626A (zh) | 一种面向低功耗的异构多核共享cache划分方法 | |
CN110647390B (zh) | 一种多核***基于局部性量化的并行任务分配调度方法 | |
CN113821311A (zh) | 任务执行方法及存储设备 | |
CN110874271B (zh) | 一种海量建筑图斑特征快速计算方法及*** | |
Xie et al. | Research on scheduling scheme for Hadoop clusters | |
Liu et al. | Rethinking memory management in modern operating system: Horizontal, vertical or random? | |
Zhang et al. | DIDO: Dynamic pipelines for in-memory key-value stores on coupled CPU-GPU architectures | |
Jeannot et al. | Communication and topology-aware load balancing in Charm++ with TreeMatch | |
CN103425536A (zh) | 一种面向分布式***性能测试的测试资源管理方法 | |
CN110502334A (zh) | 基于混合内存架构的带宽感知任务窃取方法、***及芯片 | |
Dominico et al. | An elastic multi-core allocation mechanism for database systems | |
Wang et al. | Iteration based collective I/O strategy for parallel I/O systems | |
CN116302327A (zh) | 资源调度方法及相关设备 | |
Park et al. | Towards optimal scheduling policy for heterogeneous memory architecture in many-core system | |
Pan et al. | CongraPlus: towards efficient processing of concurrent graph queries on NUMA machines | |
Hippold et al. | Task pool teams for implementing irregular algorithms on clusters of SMPs | |
Kim et al. | Exploration of a PIM design configuration for energy-efficient task offloading | |
CN116719643B (zh) | 一种优化三级缓存访问延迟的多核处理器调度方法及装置 | |
Kim et al. | FusionFlow: Accelerating Data Preprocessing for Machine Learning with CPU-GPU Cooperation |
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 |