一种支持多核帮助线程的低开销的块同步方法技术

技术编号:3849110 阅读:340 留言:0更新日期:2012-04-11 18:40
本发明专利技术涉及一种支持多核帮助线程的低开销的块同步方法,属于多核计算机技术领域。本发明专利技术在共享缓存的多核架构基础上,针对多核应用中非规则数据缺失的问题,通过为预取帮助线程引入提前量和低开销的块同步以及循环控制的机制,降低了计算线程执行的数据缺失,减少了共享缓存的污染,提高了计算线程的执行性能,实现了异核协同的非规则数据推送。本发明专利技术可广泛应用于未来多核编译器优化及数据库性能优化。

【技术实现步骤摘要】

本专利技术涉及,属于多核计算 机

技术介绍
片上多核处理器(Chip Multi-Processor)技术是将多个计算内核有机集 成在一个处理器芯片中,利用多线程技术,提高应用程序的并行执行性能的一 项技术。依据Amdahl定律,程序并行执行的性能最终是由其串行部分执行的性 能所决定的,而串行部分中长延迟访存引发的开销严重地影响着应用程序的性 能。通常,片上多核处理器架构具有共享的二级缓存(Level 2 Cache)或最后 一级缓存(Last level Cache)。传统硬件预取技术可对应用程序中的规则数据 (如规则数组)进行预取,并提前送至共享缓存中,当应用程序的当前计算线 程访问到这些规则数据时,往往在共享缓存中就会访问到所需数据,而不用再 进行存储器访问。然而,对地址不连续的非规则数据(如非规则链表、数组的 非规则访问),由于访问数据地址的不连续性,传统硬件预取技术就无法准确获 取到预取数据的地址信息,因此它不会有预取效果。这种情况下,预取帮助线 程的方法被提出。该方法为计算线程抽取其预取帮助线程,并通过使用空闲核, 使预取帮助线程动态保持在计算线程之前访问数据,以使该数据在被计算线程 访问之前被及时推送到共享缓存之中,以提高串行代码执行性能。编译器或程序员可为应用程序生成计算线程和预取帮助线程,预取帮助线 程在一个计算核中运行,计算线程在另一个计算核中运行,计算线程所需要的 非规则数据可被预取帮助线程推送到共享缓存中。通常,计算线程与预取帮助 线程间需要协同,以防止预取帮助线程执行的太快,造成预取的数据过早,出 现需要用时可能已被缓存替换算法所替换的情况;也要防止预取帮助线程太慢, 计算线程已访问过,使得预取数据已无用的情况。计算线程需要知道其预取帮 助线程的执行情况,反之,预取帮助线程也需要知道其计算线程的执行情况。 为了确定对方的运行位置,在计算线程和预取帮助线程中需要加入同步操作。 目前的传统同步方法,在不考虑线程调度的代价下,对于每一次数据访问,预取帮助线程都会与计算线程进行一次同步,这种精确同步方式带来了严重的同 步开销,并且有可能抵消预取帮助线程在降低非规则的数据缺失和减小长延迟 访存上的性能获益,使得计算线程的执行性能无法得以提高。
技术实现思路
本专利技术的目的是为克服上述问题,针对非规则数据预取而提出一种支持多 核帮助线程的低开销的块同步方法。其基本思想是在共享缓存的多核架构基 础上,针对多核应用中非规则数据缺失的问题,通过为预取帮助线程引入提前 量和低开销的块同步机制,达到降低计算线程执行时的数据缺失、减少预取帮 助线程与计算线程同步的开销,提高计算线程执行性能的目的。本专利技术可广泛 应用于多核编译器优化及数据库性能优化等。为了解释我们方法所涉及的步骤中有关的术语含义,首先给出这些技术术 语的定义定义l:当前预取位置在一个计算线程代码中,将当前需要进行预取的非规则数据的地址称为当 前预取位置;定义2:当前预取位置的计算工作量在一个计算线程代码中,将当前预取位置和下一个预取位置间的代码执行 时间称为当前预取位置的计算工作量。其中,如果这个时间为O,属于没有计算 工作量的情况;如果这个时间很小,如小于几十个时钟周期,属于少计算工作 量的情况;定义3:计算线程的计算分片在一个计算线程中,将含有大量非规则数据缺失的代码区域称为计算线程 的计算分片;定义4:共享缓_存缺失的数据流对一个计算线程的计算分片,如果它连续地大量引发了共享缓存的数据缺 失,用missl, miss2,…,missN代表缺失数据的地址,则称从missl到missN形 成的地址流所对应的数据访问序列为共享缓存缺失的数据流。定义5:历史地址信息在计算线程或帮助预取线程中,为了使其相关指针进行高效地跳转,需要 部分记住那些跳转指针的地址,我们把这些保留的地址就称为历史地址信息。 具体来说,对一个链表需要保存(链表长度/k)个指针(小数部分需要进位取整),即头指针,第k+l个指针,第2k+l个指针等,另外数组的下标也可看作这种情况的特例。这里,k为一个正整数,可通过下面具体实现步骤里的步骤一求得。 本专利技术的一种支持多核帮助线程的低开销块同步方法的整体框架设计流程如图1所示,具体实现步骤如下步骤一、构造预取帮助线程的提前量在上述相关术语定义的基础上,构造预取帮助线程的提前量。基本思想是: 在预取非规则数据时,借助已有的历史地址信息,动态保持预取帮助线程的预取 工作指针总提前于计算线程的当前工作指针k个位置,这样,无论在计算线程和 预取帮助线程是处于开始或同步状态时,预取帮助线程可动态保持在计算线程 之前访问数据,并使该数据能在被计算线程访问之前被及时推送到共享缓存之 中。其主要构造步骤如下第(1)步在计算线程中,对当前预取位置的计算工作量进行估算,如果 属于没有计算工作量或少计算工作量的情况,转第(2)步,否则转第(4)步;第(2)步为保证预取帮助线程领先于计算线程At时间,在计算线程的 当前预取位置,找到提前At代码计算量的位置,并在预取帮助线程代码中调整 当前预取工作指针提前于计算线程的当前工作指针k个位置(对于数组的下标调 整为这个下标值加k ;对于链表,预取工作指针调整为当前链表指针后的第k个指 针);这里At和k有下式关系△ t=f (k) =k*MissPenalty+cO其中k代表一个正整数,可依据At的估计值或测量值来确定; MissPenalty代表一次长延迟访存的开销; c0代表一个设定的常数值;第(3)步当计算线程本次数据推送的分片结束,转第(4)步;当同步 时,转第(2)步;第(4)步结束。步骤二、选择低开销的块同步机制在步骤一构造预取帮助线程的提前量基础上,步骤二选择一种低开销的块 同步机制。该低开销的块同步机制分为两种情况,可依据测试情况选择其中之一a. 双计数器的块同步机制低开销的块同步机制的基本思想是块同步机制将计算线程中引发共享缓 存缺失的数据访问流,按先后顺序划分为若干块,每个块的大小依据应用实例 的选择测试效果情况来设定具体值;并且同步操作仅仅发生在块的边界,以减 小同步的精度来降低同步代价;预取帮助线程的提前量及其动态的保持可由步 骤二来完成,对于每一个块用pushsize表示块的大小,计算线程和预取帮助线 程都拥有自己的计数器,当它们每访问共享缓存缺失数据流中的一项数据,就 会对其计数器加l,当计数器的数值达到pushsize时,其线程间必须进行同步, 如果另一线程没有与其达到同一进度,此线程必须被阻塞并等待直到另一线程 与之同步。块同步机制的操作步骤由计算线程的计算分片操作步骤和预取帮助 线程的操作步骤组成① 计算线程的计算分片具体操作步骤如下-第(l)步开始;第(2)步计数器置O,计算线程与预取帮助线程开始协作; 第(3)步读数据,计数器加l,执行计算; 第(4)步如果计算分片结束,转第(6)步;第(5)步如果计数器值大于piishsize,转第(2)步,否则转第(3)步;第(6)步结束。② 预取帮助线程的具体操作步骤如下 第(l)步开始;第(2)步计数器置O,计算线程与预取帮助线程开始协作;第(3)步如果是同步的开始,按帮助预取线程调整提前量后的当前工作指针本文档来自技高网
...

【技术保护点】
一种支持多核帮助线程的低开销的块同步方法,其特征在于其基本思想是在共享缓存的多核架构基础上,针对多核应用中非规则数据缺失的问题,通过为预取帮助线程引入提前量和低开销的块同步机制,达到降低计算线程执行时的数据缺失、减少预取帮助线程与计算线程同步的开销,提高计算线程执行性能的目的;具体实现步骤如下: 步骤一、构造预取帮助线程的提前量 在预取非规则数据时,借助历史地址信息,动态保持预取帮助线程的预取工作指针总提前于计算线程的当前工作指针k个位置,这样,无论在计算线程和预 取帮助线程是处于开始或同步状态时,预取帮助线程可动态保持在计算线程之前访问数据,并使该数据能在被计算线程访问之前被及时推送到共享缓存之中; 步骤二、选择低开销的块同步机制 在步骤一构造预取帮助线程的提前量基础上,步骤二选择一种低 开销的块同步机制; 该低开销的块同步机制分为两种情况,可依据测试情况择优选择其中之一: a.双计数器的块同步机制 块同步机制将计算线程中引发共享缓存缺失的数据访问流,按先后顺序划分为若干块,每个块的大小依据应用实例的选择测 试效果情况来设定具体值;并且同步操作仅仅发生在块的边界,以减小同步的精度来降低同步代价;预取帮助线程的提前量及其动态的保持可由步骤一来完成,对于每一个块用pushsize表示块的大小,计算线程和预取帮助线程都拥有自己的计数器,当它们每访问共享缓存缺失数据流中的一项数据,就会对其计数器加1,当计数器的数值达到pushsize时,其线程间必须进行同步,如果另一线程没有与其达到同一进度,此线程必须被阻塞并等待直到另一线程与之同步; b.单计数器的块同步机制 计算线程不会 被同步所阻塞,也没有加入额外的同步操作,只有预取帮助线程拥有一个计数器,当计数器的值达到pushsize,预取帮助线程会将推送数据的指针与计算线程设为相同,预取帮助线程的提前量及其动态的保持可由步骤一来完成。...

【技术特征摘要】

【专利技术属性】
技术研发人员:古志民郑宁汉张轶黄艳唐洁刘昌定陈嘉周伟峰张博
申请(专利权)人:北京理工大学
类型:发明
国别省市:11[中国|北京]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1