CN101561766A - 一种支持多核帮助线程的低开销的块同步方法 - Google Patents
一种支持多核帮助线程的低开销的块同步方法 Download PDFInfo
- Publication number
- CN101561766A CN101561766A CNA2009100856020A CN200910085602A CN101561766A CN 101561766 A CN101561766 A CN 101561766A CN A2009100856020 A CNA2009100856020 A CN A2009100856020A CN 200910085602 A CN200910085602 A CN 200910085602A CN 101561766 A CN101561766 A CN 101561766A
- Authority
- CN
- China
- Prior art keywords
- thread
- looking ahead
- computational threads
- assisting
- changeed
- 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
Images
Abstract
本发明涉及一种支持多核帮助线程的低开销的块同步方法,属于多核计算机技术领域。本发明在共享缓存的多核架构基础上,针对多核应用中非规则数据缺失的问题,通过为预取帮助线程引入提前量和低开销的块同步以及循环控制的机制,降低了计算线程执行的数据缺失,减少了共享缓存的污染,提高了计算线程的执行性能,实现了异核协同的非规则数据推送。本发明可广泛应用于未来多核编译器优化及数据库性能优化。
Description
技术领域
本发明涉及一种支持多核帮助线程的低开销的块同步方法,属于多核计算机技术领域。
背景技术
片上多核处理器(Chip Multi-Processor)技术是将多个计算内核有机集成在一个处理器芯片中,利用多线程技术,提高应用程序的并行执行性能的一项技术。依据Amdahl定律,程序并行执行的性能最终是由其串行部分执行的性能所决定的,而串行部分中长延迟访存引发的开销严重地影响着应用程序的性能。
通常,片上多核处理器架构具有共享的二级缓存(Level 2 Cache)或最后一级缓存(Last level Cache)。传统硬件预取技术可对应用程序中的规则数据(如规则数组)进行预取,并提前送至共享缓存中,当应用程序的当前计算线程访问到这些规则数据时,往往在共享缓存中就会访问到所需数据,而不用再进行存储器访问。然而,对地址不连续的非规则数据(如非规则链表、数组的非规则访问),由于访问数据地址的不连续性,传统硬件预取技术就无法准确获取到预取数据的地址信息,因此它不会有预取效果。这种情况下,预取帮助线程的方法被提出。该方法为计算线程抽取其预取帮助线程,并通过使用空闲核,使预取帮助线程动态保持在计算线程之前访问数据,以使该数据在被计算线程访问之前被及时推送到共享缓存之中,以提高串行代码执行性能。
编译器或程序员可为应用程序生成计算线程和预取帮助线程,预取帮助线程在一个计算核中运行,计算线程在另一个计算核中运行,计算线程所需要的非规则数据可被预取帮助线程推送到共享缓存中。通常,计算线程与预取帮助线程间需要协同,以防止预取帮助线程执行的太快,造成预取的数据过早,出现需要用时可能已被缓存替换算法所替换的情况;也要防止预取帮助线程太慢,计算线程已访问过,使得预取数据已无用的情况。计算线程需要知道其预取帮助线程的执行情况,反之,预取帮助线程也需要知道其计算线程的执行情况。为了确定对方的运行位置,在计算线程和预取帮助线程中需要加入同步操作。目前的传统同步方法,在不考虑线程调度的代价下,对于每一次数据访问,预取帮助线程都会与计算线程进行一次同步,这种精确同步方式带来了严重的同步开销,并且有可能抵消预取帮助线程在降低非规则的数据缺失和减小长延迟访存上的性能获益,使得计算线程的执行性能无法得以提高。
发明内容
本发明的目的是为克服上述问题,针对非规则数据预取而提出一种支持多核帮助线程的低开销的块同步方法。其基本思想是:在共享缓存的多核架构基础上,针对多核应用中非规则数据缺失的问题,通过为预取帮助线程引入提前量和低开销的块同步机制,达到降低计算线程执行时的数据缺失、减少预取帮助线程与计算线程同步的开销,提高计算线程执行性能的目的。本发明可广泛应用于多核编译器优化及数据库性能优化等。
为了解释我们方法所涉及的步骤中有关的术语含义,首先给出这些技术术语的定义:
定义1:当前预取位置
在一个计算线程代码中,将当前需要进行预取的非规则数据的地址称为当前预取位置;
定义2:当前预取位置的计算工作量
在一个计算线程代码中,将当前预取位置和下一个预取位置间的代码执行时间称为当前预取位置的计算工作量。其中,如果这个时间为0,属于没有计算工作量的情况;如果这个时间很小,如小于几十个时钟周期,属于少计算工作量的情况;
定义3:计算线程的计算分片
在一个计算线程中,将含有大量非规则数据缺失的代码区域称为计算线程的计算分片;
定义4:共享缓存缺失的数据流
对一个计算线程的计算分片,如果它连续地大量引发了共享缓存的数据缺失,用miss1,miss2,…,missN代表缺失数据的地址,则称从miss1到missN形成的地址流所对应的数据访问序列为共享缓存缺失的数据流。
定义5:历史地址信息
在计算线程或帮助预取线程中,为了使其相关指针进行高效地跳转,需要部分记住那些跳转指针的地址,我们把这些保留的地址就称为历史地址信息。具体来说,对一个链表需要保存(链表长度/k)个指针(小数部分需要进位取整),即头指针,第k+1个指针,第2k+1个指针等,另外数组的下标也可看作这种情况的特例。这里,k为一个正整数,可通过下面具体实现步骤里的步骤一求得。
本发明的一种支持多核帮助线程的低开销块同步方法的整体框架设计流程如图1所示,具体实现步骤如下:
步骤一、构造预取帮助线程的提前量
在上述相关术语定义的基础上,构造预取帮助线程的提前量。基本思想是:在预取非规则数据时,借助已有的历史地址信息,动态保持预取帮助线程的预取工作指针总提前于计算线程的当前工作指针k个位置,这样,无论在计算线程和预取帮助线程是处于开始或同步状态时,预取帮助线程可动态保持在计算线程之前访问数据,并使该数据能在被计算线程访问之前被及时推送到共享缓存之中。其主要构造步骤如下:
第(1)步:在计算线程中,对当前预取位置的计算工作量进行估算,如果属于没有计算工作量或少计算工作量的情况,转第(2)步,否则转第(4)步;
第(2)步:为保证预取帮助线程领先于计算线程Δt时间,在计算线程的当前预取位置,找到提前Δt代码计算量的位置,并在预取帮助线程代码中调整当前预取工作指针提前于计算线程的当前工作指针k个位置(对于数组的下标调整为这个下标值加k;对于链表,预取工作指针调整为当前链表指针后的第k个指针);这里Δt和k有下式关系:
Δt=f(k)=k*MissPenalty+c0
其中:k代表一个正整数,可依据Δt的估计值或测量值来确定;
MissPenalty代表一次长延迟访存的开销;
c0代表一个设定的常数值;
第(3)步:当计算线程本次数据推送的分片结束,转第(4)步;当同步时,转第(2)步;
第(4)步:结束。
步骤二、选择低开销的块同步机制
在步骤一构造预取帮助线程的提前量基础上,步骤二选择一种低开销的块同步机制。
该低开销的块同步机制分为两种情况,可依据测试情况选择其中之一:
a.双计数器的块同步机制
低开销的块同步机制的基本思想是:块同步机制将计算线程中引发共享缓存缺失的数据访问流,按先后顺序划分为若干块,每个块的大小依据应用实例的选择测试效果情况来设定具体值;并且同步操作仅仅发生在块的边界,以减小同步的精度来降低同步代价;预取帮助线程的提前量及其动态的保持可由步骤二来完成,对于每一个块用pushsize表示块的大小,计算线程和预取帮助线程都拥有自己的计数器,当它们每访问共享缓存缺失数据流中的一项数据,就会对其计数器加1,当计数器的数值达到pushsize时,其线程间必须进行同步,如果另一线程没有与其达到同一进度,此线程必须被阻塞并等待直到另一线程与之同步。块同步机制的操作步骤由计算线程的计算分片操作步骤和预取帮助线程的操作步骤组成:
①计算线程的计算分片具体操作步骤如下:
第(1)步:开始;
第(2)步:计数器置0,计算线程与预取帮助线程开始协作;
第(3)步:读数据,计数器加1,执行计算;
第(4)步:如果计算分片结束,转第(6)步;
第(5)步:如果计数器值大于pushsize,转第(2)步,否则转第(3)步;
第(6)步:结束。
②预取帮助线程的具体操作步骤如下:
第(1)步:开始;
第(2)步:计数器置0,计算线程与预取帮助线程开始协作;
第(3)步:如果是同步的开始,按帮助预取线程调整提前量后的当前工作指针推送预取数据,否则按帮助预取线程新的当前工作指针推送预取数据,计数器加1;
第(4)步:如果计算结束,转第(6)步;
第(5)步:如果计数器值大于pushsize,转第(2)步,否则转第(3)步;
第(6)步:结束。
b.单计数器的块同步机制
单计数器的块同步机制的基本思想是:计算线程不会被同步所阻塞,也没有加入额外的同步操作,只有预取帮助线程拥有一个计数器,当计数器的值达到pushsize,预取帮助线程会将推送数据的指针与计算线程设为相同,预取帮助线程的提前量及其动态的保持可由步骤一来完成。单计数器的块同步机制的操作步骤,由计算线程的计算分片操作步骤和预取帮助线程的操作步骤组成:
①计算线程的计算分片具体操作步骤如下:
第(1)步:开始;
第(2)步:计算线程与预取帮助线程开始协作;
第(3)步:读数据,执行计算;
第(4)步:如果计算分片结束,转第(5)步,否则转第(3)步;
第(5)步:结束。
②预取帮助线程的具体操作步骤如下:
第(1)步:开始;
第(2)步:计算线程与预取帮助线程开始协作;
第(3)步:计数器置0,获取计算线程的当前工作指针;
第(4)步:如果是同步的开始,按帮助预取线程调整提前量后的当前工作指针推送预取数据,否则按帮助预取线程新的当前工作指针推送预取数据,计数器加1;
第(5)步:如果计算结束,转第(7)步;
第(6)步:如果计数器值大于pushsize,转第(3)步,否则转第(4)步;
第(7)步:结束。
单计数器的块同步机制可克服双计数器的块同步机制在同步点阻塞的特殊情况,它保障了计算线程的可持续运行能力。双计数器的块同步机制与单计数器的块同步机制可在具体应用环境、应用程序中测试后,择优使用。
有益效果:
①本发明采用低开销的可选择的块同步机制,它包括双计数器的块同步和单计数器的块同步,有效的减少了传统精确同步机制所造成的同步开销。与每次预取都需要同步的传统精确同步方式来说,有着不可比拟的低开销特点:选择适合的Pushsize值,可有效平衡过大的pushsize导致的缓存污染,也可有效平衡过小pushsize带来的同步开销,有效地提高了计算线程的执行性能。单计数器的块同步机制可克服双计数器的块同步机制在同步点阻塞的特殊情况,它保障了计算线程的可持续运行能力。这两种机制可在具体应用环境和应用程序中测试后,择优使用。
②为预取帮助线程引入了提前量,使得在计算线程的当前工作位置中,无论有无足够的计算工作,都能让低开销的块同步机制得到有效地执行。提前量构造方法可动态保持预取帮助线程的工作指针总提前于计算线程的当前指针K个计算工作量,它是低开销的双计数器的块同步和单计数器的块同步机制的实现基础。在较少计算量的情况下,它具有计算线程和预取帮助线程两者仍可进行交迭计算的特点。
附图说明
图1为本发明的整体框架设计流程图;
具体实施方式
根据上述技术方案,下面结合实施例对本发明进行详细说明。
以下面简单程序为例,在头文件ldsHeader.h中添加ADDSCALE变量,通过改变该变量的值来控制链表中每个结点的计算工作量,链表结点的计算为:
while(iterator){
temp=iterator->i_data;
while(i++<ADDSCALE){
temp+=1;
}
res+=temp;
i=0;
iterator=iterator->next;
}
通过不断改变ADDSCALE的值来调节计算工作量,从ADDSCALE为0时开始,每次ADDSCALE的值增加5,这样我们有ADDSCALE为0,5,10,15,20等。
结合上述举例,给出相关术语的定义如下:
定义1:当前预取位置
在一个计算线程代码中,将当前需要进行预取的非规则数据的地址称为当前预取位置;
通过以下代码计算当前预取位置:
temp=iterator->i_data;
定义2:当前预取位置的计算工作量
在一个计算线程代码中,将当前预取位置和下一个预取位置间的代码执行时间称为当前预取位置的计算工作量。其中,如果这个时间为0,属于没有计算工作量的情况;如果这个时间很小,如小于几十个时钟周期,属于少计算工作量的情况;
通过以下代码计算当前预取位置的计算工作量:
while(i++<ADDSCALE){
temp+=1;
}
res+=temp;
i=0;
定义3:计算线程的计算分片
在一个计算线程中,将含有大量非规则数据缺失的代码区域称为计算线程的计算分片;
通过以下代码计算当前预取位置的计算线程的计算分片:
while(iterator){
temp=iterator->i_data;
while(i++<ADDSCALE){
temp+=1;
}
res+=temp;
i=0;
iterator=iterator->next;
}
定义4:共享缓存缺失的数据流
对一个计算线程的计算分片,如果它连续地大量引发了共享缓存的数据缺失,用miss1,miss2,…,missN代表缺失数据的地址,则称从miss1到missN形成的地址流所对应的数据访问序列为共享缓存缺失的数据流。
上述程序中的iterator,iterator->next等所指数据即为共享缓存缺失的数据流。
定义5:历史地址信息
在计算线程或帮助预取线程中,为了使其相关指针进行高效地跳转,需要部分记住那些跳转指针的地址,我们把这些保留的地址就称为历史地址信息。对本例中的iterator链表,如果链表长度=10000,k=20,需要保存500个指针,即头指针,第21个指针,第41个指针等。
步骤一、构造预取帮助线程的提前量
第(1)步:在计算线程中,对当前预取位置的工作量进行估算,如果ADDSCALE为0或5或10,这属于几乎完全没有计算工作量或较少计算工作量的情况,转第(2)步;否则,如果ADDSCALE为15或20,转第(4)步;
第(2)步:为保证预取帮助线程领先于计算线程Δt时间,在计算线程的当前预取位置,找到提前Δt代码计算量的位置,并在预取帮助线程代码中调整当前预取工作指针提前于计算线程的当前工作指针k个位置;
当Δt=6000,MissPenalty=300时钟周期,c0=0时:
k=Δt/MissPenalty=6000/300=20
第(3)步:当计算线程本次数据推送的分片结束,转第(4)步,当需要同步时,转第(2)步;
第(4)步:结束。
步骤二、低开销的可选择的块同步机制
a.以main计算线程一个计算分片P1为例,其预取帮助线程为push,构造其双计数器的块同步机制过程为:
①main计算线程的计算分片P1具体操作步骤如下:
第(1)步:开始main;
第(2)步:计数器counter置0,sem_post(&main),sem_wait(&push),main计算线程与push预取帮助线程开始协作;
第(3)步:读数据,计数器counter加1,执行计算;
第(4)步:如果main计算分片P1结束,转第(6)步;
第(5)步:如果计数器counter值大于pushsize,转第(2)步,否则转第(3)步;
第(6)步:结束。
②push预取帮助线程的具体操作步骤如下:
第(1)步:开始push;
第(2)步:计数器push_counter置0,sem_post(&push),sem_wait(&main),push线程与main线程开始协作;
第(3)步:如果是同步的开始,按push帮助预取线程调整提前量后的当前工作指针推送预取数据,否则按帮助预取线程push新的当前工作指针推送预取数据,计数器push_counter加1;
第(4)步:如果push计算结束,转第(6)步;
第(5)步:如果计数器push_counter值大于pushsize,转第(2)步,否则转第(3)步;
第(6)步:结束。
b.以main计算线程一个计算分片P2为例,其预取帮助线程为push。构造其单计数器的块同步机制过程为:
①main计算线程的计算分片P2具体操作步骤如下:
第(1)步:开始main;
第(2)步:sem_post(&main),sem_wait(&push),main计算线程与push预取帮助线程开始协作;
第(3)步:读数据,执行计算;
第(4)步:如果main计算分片P2结束,转第(5)步,否则转第(3)步;
第(5)步:结束。
②push预取帮助线程的具体操作步骤如下:
第(1)步:开始push;
第(2)步:sem_post(&push),sem_wait(&main),push线程与main线程开始协作;
第(3)步:计数器push_counter置0,获取main线程的当前工作指针;
第(4)步:如果是同步的开始,按push帮助预取线程调整提前量后的当前工作指针推送预取数据,否则按帮助预取线程push新的当前工作指针推送预取数据,计数器push_counter加1;
第(5)步:如果push计算结束,转第(7)步;
第(6)步:如果计数器push_counter值大于pushsize,转第(3)步,否则转第(4)步;
第(7)步:结束。
上述举例的综合测试结果如下:
ADDSCALE 0(k=20, 5(k=20, 10(k=20, 15(k=0, 20(k=0,
(规模变量) pushsize=600) pushsize=600) pushsize=600) pushsize=600) pushsize=600)
无预取帮助线程 120.175 121.627 135.234 153.057 171.058
的执行时间
有预取帮助线程 80.117 82.474 89.839 118.076 117.697
的执行时间
(本发明方法)
通过测试结果可以看到使用本发明方法,程序的执行时间明显缩短。
Claims (4)
1.一种支持多核帮助线程的低开销的块同步方法,其特征在于其基本思想是在共享缓存的多核架构基础上,针对多核应用中非规则数据缺失的问题,通过为预取帮助线程引入提前量和低开销的块同步机制,达到降低计算线程执行时的数据缺失、减少预取帮助线程与计算线程同步的开销,提高计算线程执行性能的目的;具体实现步骤如下:
步骤一、构造预取帮助线程的提前量
在预取非规则数据时,借助历史地址信息,动态保持预取帮助线程的预取工作指针总提前于计算线程的当前工作指针k个位置,这样,无论在计算线程和预取帮助线程是处于开始或同步状态时,预取帮助线程可动态保持在计算线程之前访问数据,并使该数据能在被计算线程访问之前被及时推送到共享缓存之中;
步骤二、选择低开销的块同步机制
在步骤一构造预取帮助线程的提前量基础上,步骤二选择一种低开销的块同步机制;
该低开销的块同步机制分为两种情况,可依据测试情况择优选择其中之一:
a.双计数器的块同步机制
块同步机制将计算线程中引发共享缓存缺失的数据访问流,按先后顺序划分为若干块,每个块的大小依据应用实例的选择测试效果情况来设定具体值;并且同步操作仅仅发生在块的边界,以减小同步的精度来降低同步代价;预取帮助线程的提前量及其动态的保持可由步骤一来完成,对于每一个块用pushsize表示块的大小,计算线程和预取帮助线程都拥有自己的计数器,当它们每访问共享缓存缺失数据流中的一项数据,就会对其计数器加1,当计数器的数值达到pushsize时,其线程间必须进行同步,如果另一线程没有与其达到同一进度,此线程必须被阻塞并等待直到另一线程与之同步;
b.单计数器的块同步机制
计算线程不会被同步所阻塞,也没有加入额外的同步操作,只有预取帮助线程拥有一个计数器,当计数器的值达到pushsize,预取帮助线程会将推送数据的指针与计算线程设为相同,预取帮助线程的提前量及其动态的保持可由步骤一来完成。
2.根据权利要求1所述的一种支持多核帮助线程的低开销的块同步方法,其特征在于步骤一中构造预取帮助线程的提前量步骤为:
第(1)步:在计算线程中,对当前预取位置的计算工作量进行估算,如果属于没有计算工作量或少计算工作量的情况,转第(2)步,否则转第(4)步;
第(2)步:为保证预取帮助线程领先于计算线程Δt时间,在计算线程的当前预取位置,找到提前Δt代码计算量的位置,并在预取帮助线程代码中调整当前预取工作指针提前于计算线程的当前工作指针k个位置(对于数组的下标调整为这个下标值加k;对于链表,预取工作指针调整为当前链表指针后的第k个指针);这里Δt和k有下式关系:
Δt=f(k)=k*MissPenalty+c0
其中:k代表一个正整数,可依据Δt的估计值或测量值来确定;
MissPenalty代表一次长延迟访存的开销;
c0代表一个设定的常数值;
第(3)步:当计算线程本次数据推送的分片结束,转第(4)步;当同步时,转第(2)步;
第(4)步:结束。
3.根据权利要求1所述的一种支持多核帮助线程的低开销的块同步方法,其特征在于步骤二选择低开销的块同步机制中,双计数器的块同步机制由计算线程的计算分片操作步骤和预取帮助线程的操作步骤组成:
①计算线程的计算分片具体操作步骤如下:
第(1)步:开始;
第(2)步:计数器置0,计算线程与预取帮助线程开始协作;
第(3)步:读数据,计数器加1,执行计算;
第(4)步:如果计算分片结束,转第(6)步;
第(5)步:如果计数器值大于pushsize,转第(2)步,否则转第(3)步;
第(6)步:结束;
②预取帮助线程的具体操作步骤如下:
第(1)步:开始;
第(2)步:计数器置0,计算线程与预取帮助线程开始协作;
第(3)步:如果是同步的开始,按帮助预取线程调整提前量后的当前工作指针推送预取数据,否则按帮助预取线程新的当前工作指针推送预取数据,计数器加1;
第(4)步:如果计算结束,转第(6)步;
第(5)步:如果计数器值大于pushsize,转第(2)步,否则转第(3)步;
第(6)步:结束。
4.根据权利要求1所述的一种支持多核帮助线程的低开销的块同步方法,其特征在于步骤二选择低开销的块同步机制中,单计数器的块同步机制由计算线程的计算分片操作步骤和预取帮助线程的操作步骤组成:
①计算线程的计算分片具体操作步骤如下:
第(1)步:开始;
第(2)步:计算线程与预取帮助线程开始协作;
第(3)步:读数据,执行计算;
第(4)步:如果计算分片结束,转第(5)步,否则转第(3)步;
第(5)步:结束;
②预取帮助线程的具体操作步骤如下:
第(1)步:开始;
第(2)步:计算线程与预取帮助线程开始协作;
第(3)步:计数器置0,获取计算线程的当前工作指针;
第(4)步:如果是同步的开始,按帮助预取线程调整提前量后的当前工作指针推送预取数据,否则按帮助预取线程新的当前工作指针推送预取数据,计数器加1;
第(5)步:如果计算结束,转第(7)步;
第(6)步:如果计数器值大于pushsize,转第(3)步,否则转第(4)步;
第(7)步:结束。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009100856020A CN101561766B (zh) | 2009-05-26 | 2009-05-26 | 一种支持多核帮助线程的低开销的块同步方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009100856020A CN101561766B (zh) | 2009-05-26 | 2009-05-26 | 一种支持多核帮助线程的低开销的块同步方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101561766A true CN101561766A (zh) | 2009-10-21 |
CN101561766B CN101561766B (zh) | 2011-06-15 |
Family
ID=41220578
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2009100856020A Expired - Fee Related CN101561766B (zh) | 2009-05-26 | 2009-05-26 | 一种支持多核帮助线程的低开销的块同步方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101561766B (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101807144A (zh) * | 2010-03-17 | 2010-08-18 | 上海大学 | 一种前瞻多线程并行执行优化方法 |
CN102334104A (zh) * | 2011-08-15 | 2012-01-25 | 华为技术有限公司 | 一种基于多核系统的同步处理方法及装置 |
CN104981787A (zh) * | 2013-03-05 | 2015-10-14 | 国际商业机器公司 | 具有母核和侦察核的芯片的数据预取 |
CN105893319A (zh) * | 2014-12-12 | 2016-08-24 | 上海芯豪微电子有限公司 | 一种多车道/多核系统和方法 |
CN106776047A (zh) * | 2017-01-19 | 2017-05-31 | 郑州轻工业学院 | 面向非规则数据密集应用的群组式线程预取方法 |
CN108874690A (zh) * | 2017-05-16 | 2018-11-23 | 龙芯中科技术有限公司 | 数据预取的实现方法和处理器 |
CN114817087A (zh) * | 2022-05-12 | 2022-07-29 | 郑州轻工业大学 | 基于缓存失效行为的预取距离自适应调整方法及装置 |
-
2009
- 2009-05-26 CN CN2009100856020A patent/CN101561766B/zh not_active Expired - Fee Related
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101807144B (zh) * | 2010-03-17 | 2014-05-14 | 上海大学 | 一种前瞻多线程并行执行优化方法 |
CN101807144A (zh) * | 2010-03-17 | 2010-08-18 | 上海大学 | 一种前瞻多线程并行执行优化方法 |
CN102334104A (zh) * | 2011-08-15 | 2012-01-25 | 华为技术有限公司 | 一种基于多核系统的同步处理方法及装置 |
CN102334104B (zh) * | 2011-08-15 | 2013-09-11 | 华为技术有限公司 | 一种基于多核系统的同步处理方法及装置 |
US9424101B2 (en) | 2011-08-15 | 2016-08-23 | Huawei Technologies Co., Ltd. | Method and apparatus for synchronous processing based on multi-core system |
CN104981787B (zh) * | 2013-03-05 | 2017-11-17 | 国际商业机器公司 | 具有母核和侦察核的芯片的数据预取 |
CN104981787A (zh) * | 2013-03-05 | 2015-10-14 | 国际商业机器公司 | 具有母核和侦察核的芯片的数据预取 |
CN105893319A (zh) * | 2014-12-12 | 2016-08-24 | 上海芯豪微电子有限公司 | 一种多车道/多核系统和方法 |
CN106776047A (zh) * | 2017-01-19 | 2017-05-31 | 郑州轻工业学院 | 面向非规则数据密集应用的群组式线程预取方法 |
CN106776047B (zh) * | 2017-01-19 | 2019-08-02 | 郑州轻工业学院 | 面向非规则数据密集应用的群组式线程预取方法 |
CN108874690A (zh) * | 2017-05-16 | 2018-11-23 | 龙芯中科技术有限公司 | 数据预取的实现方法和处理器 |
CN114817087A (zh) * | 2022-05-12 | 2022-07-29 | 郑州轻工业大学 | 基于缓存失效行为的预取距离自适应调整方法及装置 |
CN114817087B (zh) * | 2022-05-12 | 2022-11-11 | 郑州轻工业大学 | 基于缓存失效行为的预取距离自适应调整方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN101561766B (zh) | 2011-06-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101561766B (zh) | 一种支持多核帮助线程的低开销的块同步方法 | |
US9477533B2 (en) | Progress meters in parallel computing | |
Suleman et al. | Feedback-driven threading: power-efficient and high-performance execution of multi-threaded workloads on CMPs | |
Narula et al. | Phase Reconciliation for Contended {In-Memory} Transactions | |
Ebrahimi et al. | Parallel application memory scheduling | |
Lucas et al. | How a single chip causes massive power bills GPUSimPow: A GPGPU power simulator | |
Wu et al. | Using performance-power modeling to improve energy efficiency of HPC applications | |
US9619290B2 (en) | Hardware and runtime coordinated load balancing for parallel applications | |
Meng et al. | A performance study for iterative stencil loops on GPUs with ghost zone optimizations | |
CN105159654B (zh) | 基于多线程并行的完整性度量散列算法优化方法 | |
Dao et al. | A performance model for GPUs with caches | |
Chen et al. | Hybrid analytical modeling of pending cache hits, data prefetching, and MSHRs | |
CN104657219A (zh) | 一种用于异构众核系统下的应用程序线程数动态调整方法 | |
CN102662638A (zh) | 一种支持帮助线程预取距离参数的阈值边界选取方法 | |
Cieslewicz et al. | Parallel buffers for chip multiprocessors | |
Wang et al. | Three-level performance optimization for heterogeneous systems based on software prefetching under power constraints | |
Wang et al. | Energy optimization by software prefetching for task granularity in GPU-based embedded systems | |
Li et al. | GbA: A graph‐based thread partition approach in speculative multithreading | |
CN105930209B (zh) | 一种自适应的帮助线程预取质量控制方法 | |
CN106776047B (zh) | 面向非规则数据密集应用的群组式线程预取方法 | |
Luo et al. | Parallel data sharing in cache: Theory, measurement and analysis | |
Gellert et al. | A multicore architecture with selective load value prediction | |
Moeng et al. | Weighted-tuple synchronization for parallel architecture simulators | |
Wang et al. | Design and Analysis of a Minimum Time Buckets Synchronization Algorithm for Parallel and Distributed Simulation | |
Do et al. | Power efficient hardware transactional memory: Dynamic issue of transactions |
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 | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20110615 Termination date: 20120526 |