CN101894048A - 一种基于阶段分析的缓存动态划分方法和系统 - Google Patents
一种基于阶段分析的缓存动态划分方法和系统 Download PDFInfo
- Publication number
- CN101894048A CN101894048A CN2010102128957A CN201010212895A CN101894048A CN 101894048 A CN101894048 A CN 101894048A CN 2010102128957 A CN2010102128957 A CN 2010102128957A CN 201010212895 A CN201010212895 A CN 201010212895A CN 101894048 A CN101894048 A CN 101894048A
- Authority
- CN
- China
- Prior art keywords
- search
- cache
- current
- phase
- module
- 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
本发明公开了一种基于phase分析的cache动态划分方法和系统,所述方法,包括下列步骤:启动决策进程,系统状态初始化为搜索状态并构建静态搜索树;启动应用程序进程;决策进程开始执行步骤100到300的循环,直至应用程序进程结束;划分决策模块读取采样数据,并根据采样数据识别出程序在当前时间片下运行的phase号,并更新历史记录;划分决策模块收集程序的当前phase在搜索集下各划分的性能数据,根据phase分析结果和系统状态确定下一时间片的Cache划分;当前时间片的决策过程结束,确定出下一时间片的Cache划分,再调用划分执行模块完成cache划分。
Description
技术领域
本发明涉及多核处理器中共享缓存的动态划分技术领域,特别是涉及一种基于阶段(phase)分析的缓存(cache)动态划分方法和系统。
背景技术
多核处理器是指单个芯片上集成多个处理器核的处理器。共享cache的多核处理器是指多个处理器核共享使用芯片上的cache。cache是一种芯片上的存储资源,用以缓存处理器最近使用的数据,由于cache容量有限,新数据会把旧数据替换出cache。在共享cache的多核处理器上,目前的替换策略不区分数据来源,各处理器核间的数据会相互替换,致使处理器核上同时运行的程序会相互干扰性能。Cache划分技术是指为同时运行的程序分配共享cache的不同的区域,以此来消除程序间在cache中的数据替换,消除程序间性能干扰,最大效率地发挥cache的作用。
Cache划分技术又分为硬件划分方法和软件划分方法两类。硬件划分方法是利用额外的硬件收集程序cache需求信息,由区分数据所有者的替换策略完成划分,这类方法目前都是基于模拟器上的研究,没有实用。软件划分方法是利用了操作系统的页着色技术将内存物理页按照其地址分成不同颜色的组,为不同进程(程序的动态执行体)分配不同颜色的页,由于共享cache以物理地址为索引,不同颜色物理页上的数据会存储到cache的不同区域,就达到了为不同程序划分cache的目的。软件划分方法在现有的操作系统和虚拟机上可以实现和应用。
Cache划分技术的核心在于在所有可能的划分方案中选出最优的划分方案和追求程序性能最大化。为了确定程序在各种Cache划分下的性能表现,基于页着色的软件划分方法需要试探性地运行各种划分,再从中选取性能较好的划分。我们定义划分空间为所有可能划分方案的集合,软件动态划分方法就是从划分空间里在线搜索最优的过程,即随着程序的运行不断试探,根据性能反馈不断调整搜索方向或缩小搜索范围,逐步逼近最优的Cache划分。软件动态划分方法以固定的时间间隔(后文称为“时间片”)为单位周期的试探划分、划分选优、再由当前最优制定执行下一步的搜索策略。
现有软件动态划分方法的搜索策略是不断试探相邻的Cache划分,然后比较性能,最优者作为下一次搜索的开始划分。但该软件动态划分方法存在下面两方面问题:
1.通过直接比较各时间片下程序的性能来确定Cache划分的优劣会产生误判问题。由于程序在运行期间的性能随时间变化的情况,不是随机、混乱的,而往往会表现出规律性,即在程序运行期间会经过一系列有序阶段(phase),在该阶段内程序的运行表现相似,阶段间差异明显,而且这些阶段会重复出现,这些阶段称之为phase。程序在phase切换时可能有性能变化,如果直接比较不同phase上时间片性能,将会将phase间的性能差异归因于Cache划分的不同,从而对Cache划分优劣产生误判,搜索就偏离最优划分,程序性能未能最大幅度提高;
2.当程序进入稳定的phase时,该软件动态划分方法仍然在试探搜索,这种情况下如果已搜索到最优Cache划分,就可以停止搜索,减少搜索带来的开销。
发明内容
本发明的目的在于提供一种基于phase分析的cache动态划分方法和系统,其能够明显提高系统的总体性能,节省大量开销。
为实现本发明的目的而提供的一种基于phase分析的Cache动态划分方法,包括下列步骤:
步骤000.启动决策进程,系统状态初始化为搜索状态并构建静态搜索树;启动应用程序进程;决策进程开始执行步骤100到300的循环,直至应用程序进程结束;
步骤100.划分决策模块读取采样数据,并根据采样数据识别出程序在当前时间片下运行的phase号,并更新历史记录;
步骤200,划分决策模块收集程序的当前phase在搜索集下各划分的性能数据,根据phase分析结果和系统状态确定下一时间片的Cache划分;
步骤300.当前时间片的决策过程结束,确定出下一时间片的Cache划分,再调用划分执行模块完成cache划分。
所述步骤000,包括下列步骤:
步骤:010.划分空间为[1,n],静态搜索树的根结点为(n/4,n/2,3n/4),搜索步长为n/4,开始构造子树,输入为中心点c、区域a[L,H]和步长s,其中中心点c即为根节点的3个划分,区域a为子树所含划分范围的上下界[L,H],将根结点3个划分的c、a和s信息加入未构造队列;
步骤020.判断未构造队列是否为空,若是,则结束构造;否则,执行步骤030.
步骤030.取出未构造队列的第一组构造信息:中心点c、区域a[L,H]和步长s,生成结点(l,c,h),若左右结点l和h超出区域则取区域边界L和H,否则l=c-s/2,h=c+s/2,s=s/2,若s=1则表示当前为叶子结点;否则将l,c,h的c、a和s加入未构造队列,返回步骤020。
所述搜索树是Cache划分空间的多级的树结构表示,树结点是有3个划分的搜索集,同时有3个子结点,分别对应3个搜索方向。
所述步骤100,包括下列步骤:
步骤110,性能采集模块周期采样时间片内的执行PC,采样周期为100万条指令;
步骤120,建立PC频率向量,并归一化;
步骤130,在phase的历史记录中查找和当前频率向量的曼哈顿距离最近的phase,若该最近曼哈顿距离小于相似度阈值,则判定当前时间片程序处于最近曼哈顿距离对应的phase;若大于相似度阈值,则判定在当前时间片程序进入新的phase,并分配新的phase编号和历史记录。
所述步骤200,包括下列步骤:
步骤210.判断系统状态;若为搜索状态,则执行步骤220;若为保持状态,则执行步骤250;
步骤220:若历史数据中已有当前phase在当前搜索集中各Cache划分下的性能,执行步骤230;否则执行步骤240;
步骤230:从当前phase在当前搜索集中各Cache划分下的性能中选出性能最优者作为当前最优Cache划分;
步骤240:若历史数据中没有全部的当前phase在当前搜索集中各Cache划分下的性能,则从当前搜索集中选出未搜索的Cache划分为下一时间片的Cache划分;
步骤250.当前为保持状态,若发现当前phase没有被搜索过而且出现频率已经超过热度阈值,执行步骤260;否则执行步骤270;
步骤260:为当前phase构造搜索树,下一时间片的Cache划分为该搜索树根结点上搜索集中离当前Cache划分最近的划分,并将系统状态设为搜索;
步骤270:继续保持状态,下一时间片的Cache划分仍为当前Cache划分。
在步骤230中,若当前搜索集在搜索树中处于叶子结点,则当前最优Cache划分为该phase的全局最优Cache划分,系统进入保持最优Cache划分的状态;否则将当前搜索集的当前最优Cache划分方向的子结点设为新的搜索集,并从新搜索集中选出离当前最优Cache划分最近的Cache划分为下一时间片的Cache划分。
所述步骤260,包括下列步骤:
步骤261.当前划分c,根结点搜索集(c-1,c,c+1),开始构造孩子结点,输入参数为开始点b,区域a[L,H]和搜索步长s,s的初始值为n/8,开始点为当前搜索集各划分,区域为子树对应的搜索范围,将根结点中的初始开始点c-1和c+1的b、a和s信息加入未构造队列;,开始点在当前节点中的位置决定其子节点的拓展方向,如c-1就向划分空间的右边扩展,扩展的距离就是步长,所以c-1扩展生成的子节点为(c-1-2s,c-1-s,c-1),c+1生成的扩展节点为(c+1,c+1+s,c+1+2s),扩展范围即区域a[L,H];
步骤262.若未构造队列为空,则结束构造;否则开始步骤263;
步骤263.取出未构造队列的第一个构造信息:开始点b、区域[L,H]和步长s,根据步长改变条件调整步长,若b在区域的右端,生成结点(b-2s,b-s,b),若在左端,生成(b,b+s,b+2s),若b在区域中间则生成(b-s,b,b+s),若s为1则表示叶子结点构造完成;否则将新生节点中非父节点的划分的b、a和s加入未构造队列,转到步骤262。
为实现本发明的目的还提供一种基于phase分析的Cache动态划分系统,所述系统,包括:初始化模块、划分决策模块、划分执行模块和性能采样模块,其中:
初始化模块,将系统状态初始化为搜索状态并构建静态搜索树;同时启动应用程序进程;并触发划分决策模块、划分执行模块和性能采样模块,直至应用程序进程结束;
划分决策模块,用于启动决策进程,收集程序的当前phase在搜索集下各划分的性能数据,在时间片结束时根据phase分析结果和系统状态确定下一时间片的Cache划分,其余时间都处于休眠状态;
所述划分执行模块,当前时间片的决策过程结束,确定出下一时间片的Cache划分,再调用划分执行模块完成cache划分;
性能采集模块,通过读取处理器硬件性能计数器,向决策模块提供性能数据和phase分析的输入。
所述初始化模块,包括:
搜索树初始化模块.划分空间为[1,n],静态搜索树的根结点为(n/4,n/2,3n/4),搜索步长为n/4,开始构造子树,输入为中心点c、区域a[L,H]和步长s,其中中心点c即为根节点的3个划分,区域a为子树所含划分范围的上下界[L,H],将根结点3个划分的c、a和s信息加入未构造队列;
判断模块.判断未构造队列是否为空,若是,则结束构造;否则,触发搜索树构造模块;
搜索树构造模块.取出未构造队列的第一组构造信息:中心点c、区域a[L,H]和步长s,生成结点(l,c,h),若左右结点l和h超出区域则取区域边界L和H,否则l=c-s/2,h=c+s/2,s=s/2,若s=1则表示当前为叶子结点;否则将l,c,h的c、a和s加入未构造队列,触发判断模块。
所述搜索树是Cache划分空间的多级的树结构表示,树结点是有3个划分的搜索集,同时有3个子结点,分别对应3个搜索方向。
所述性能采集模块,包括:
PC采样模块,周期采样时间片内的执行PC,采样周期为100万条指令;
向量归一化模块,建立PC频率向量,并归一化;
Phase识别模块,在phase的历史记录中查找和当前频率向量的曼哈顿距离最近的phase,若该最近曼哈顿距离小于相似度阈值,则判定当前时间片程序处于最近曼哈顿距离对应的phase;若大于相似度阈值,则判定在当前时间片程序进入新的phase,并分配新的phase编号和历史记录。
所述划分决策模块,包括:
状态判断模块.判断系统状态;若为搜索状态,则触发搜索模块;若为保持状态,则触发阈值判断模块;
搜索模块,搜索历史数据中是否已有当前phase在当前搜索集中各Cache划分下的性能,若有则触发选择模块;否则触发划分选择模块;
选择模块,从当前phase在当前搜索集中各Cache划分下的性能中选出性能最优者作为当前最优Cache划分;
划分选择模块,若历史数据中没有全部的当前phase在当前搜索集中各Cache划分下的性能,则从当前搜索集中选出未搜索的Cache划分为下一时间片的Cache划分;
阈值判断模块,当前为保持状态,若发现当前phase没有被搜索过而且出现频率已经超过热度阈值,触发构造模块;否则触发状态维持模块;
构造模块,为当前phase构造搜索树,下一时间片的Cache划分为该搜索树根结点上搜索集中离当前Cache划分最近的划分,并将系统状态设为搜索;
状态维持模块,继续保持状态,下一时间片的Cache划分仍为当前Cache划分。
在所述选择模块中,若当前搜索集在搜索树中处于叶子结点,则当前最优Cache划分为该phase的全局最优Cache划分,系统进入保持最优Cache划分的状态;否则将当前搜索集的当前最优Cache划分方向的子结点设为新的搜索集,并从新搜索集中选出离当前最优Cache划分最近的Cache划分为下一时间片的Cache划分。
所述构造模块,包括:
输入模块,当前划分c,根结点搜索集(c-1,c,c+1),开始构造孩子结点,输入参数为开始点b,区域a[L,H]和搜索步长s,s的初始值为n/8,开始点为当前搜索集各划分,区域为子树对应的搜索范围,将根结点中的初始开始点c-1和c+1的b、a和s信息加入未构造队列;,开始点在当前节点中的位置决定其子节点的拓展方向,如c-1就向划分空间的右边扩展,扩展的距离就是步长,所以c-1扩展生成的子节点为(c-1-2s,c-1-s,c-1),c+1生成的扩展节点为(c+1,c+1+s,c+1+2s),扩展范围即区域a[L,H];
空项判断模块,判断未构造队列是否为空,若是则结束构造;否则触发构造子模块;
构造子模块,取出未构造队列的第一个构造信息:开始点b、区域[L,H]和步长s,根据步长改变条件调整步长,若b在区域的右端,生成结点(b-2s,b-s,b),若在左端,生成(b,b+s,b+2s),若b在区域中间则生成(b-s,b,b+s),若s为1则表示叶子结点构造完成;否则将新生节点中非父节点的划分的b、a和s加入未构造队列,触发空项判断模块。
本发明的有益效果是:
1.使用本发明的基于phase分析的cache动态划分方法和系统相对于现有技术总体性能得到很大改进;
2.使用本发明的基于phase分析的cache动态划分方法和系统相对于现有技术减少的大部分开销。
附图说明
图1是本发明中决策系统的状态转换图;
图2A和图2B分别是本发明中初始搜索树和动态搜索树的示意图;
图3是本发明的基于phase分析的cache动态划分方法的步骤流程图;
图4是本发明中初始化搜索树的步骤流程图;
图5是本发明中对数据进行采样并识别phase的步骤流程图;
图6是本发明中根据phase分析结果和系统状态确定下一时间片的Cache划分的步骤流程图;
图7是本发明中为当前phase构造搜索树的步骤流程图;
图8是本发明的基于phase分析的cache动态划分系统的组成示意图;
图9是本发明的基于phase分析的cache动态划分系统的结构组成图;
图10是现有技术中dyn与本发明的phase的性能改进对比图;
图11是现有技术中dyn与本发明的phase两种方法在green类程序的迁移开销对比图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明的一种基于阶段(phase)分析的缓存(cache)动态划分方法和系统进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明的一种基于phase分析的cache动态划分方法和系统,通过识别程序运行中的各个phase,并搜索各phase的最优cache划分,即通过比较同一phase上对应的各cache划分的性能来确定该phase的最优cache划分,在确定了phase的最优cache划分后就停止搜索,操作系统保持最优cache划分的状态。其能够减少cache划分搜索中的误判,尽快搜索到最优cache划分,司时减少了不必要的搜索,降低了搜索带来的页迁移开销。
下面结合上述目标详细介绍本发明的一种基于phase分析的cache动态划分方法,所述方法涉及以下几方面内容:
1.Phase识别方法:本发明中使用处理器的性能计数器周期采样程序执行过的指令地址PC(program counter,用于记录指令地址的寄存器,用来指指令地址),每个时间片内的PC采样形成一个频率向量,各频率向量间的曼哈顿距离就代表各时间片内程序运行的相似度。如果两个时间片的频率向量间的曼哈顿距离小于相似度阈值,则判定这两个时间片的程序运行属于同一phase。主要有4个步骤:
步骤1:周期采样时间片内的执行PC,采样周期为100万条指令;
步骤2:建立PC频率向量,并归一化;
建立PC频率向量的方法是对时间片内采样到的每个PC,取PC中从第6位开始的5位为向量索引(不使用低5位是为了尽可能使同一基本块的指令映射到向量的同一位置),将该索引对应的向量元素的值加一;归一化就是将向量中每个元素设为其值除以时间片内PC总数,这样所有元素和为1.
步骤3:在phase的历史记录中查找和当前频率向量的曼哈顿距离最近的phase,若该最近曼哈顿距离小于相似度阈值,则判定当前时间片程序处于最近曼哈顿距离对应的phase;若大于相似度阈值,则判定在当前时间片程序进入新的phase,并分配新的phase编号和历史记录。
以下是phase识别过程的伪码描述:
1.SPCm=tm(pc0,pc1,...,pcn //sampled data from perfmon
2.for pci in SPCm:
SPVm[(pci>>5)&0x1f]++
for i in SPVm:
SPVm[i]/n
3.if(max{MD(SPVp,SPVm)|p in PHT}<SIMILARITY_THRESHOLD):
phase_idm=q,MD(SPvq,SPVm)==max{MD(SPVp,SPVm)|p in PHT}
4.else:
PHT(new_phase_id)=SPVm
phase_idm=new_phase_id++
其中,SPC(Sampled PC):采样PC
SPV(Sampled PC Vector):采样PC的频率向量
MD(Manhattan Distance):曼哈顿距离,
PHT(Phase history table):phase历史表,记录已识别的phase其对应SPV
SIMILARITY_THRESHOLD:相似度阈值
2.依据phase行为的决策机制:以双核处理器的cache划分过程为例,根据两道程序phase的行为,分为以下3种处置情况:
1)当两道程序在最近时间片都没有发生phase变化,即二者行为都处于稳定状态时,就同时对两道程序分别进行cache划分选优,但搜索方向由程序性能改进幅度大的程序确定,即选择性能改进幅度大的程序的cache划分作为当前的最优cache划分;
2)当只有一道程序在最近时间片中无phase变化,即该程序的行为处于稳定状态时,就对该程序进行划分选优,并从其最优cache划分的方向开始搜索。
3)当两道程序都处于不稳定阶段,即在最近时间片不断发生phase变化,则采取保守策略——不进行划分选优和新的搜索,以避免误判。
3.基于最优cache划分的状态转换机制:由于搜索时的划分改变有数据迁移的开销,这些开销会抵消程序在最优cache划分下运行的性能改进。在对程序进行phase识别后,对已确定出最优cache划分的phase,划分决策模块可以停止搜索,系统保持在最优cache划分下运行,直到发生phase变化。因此本发明的划分系统设有两个状态——搜索状态和保持状态,随着程序phase的变化系统在两个状态间切换。图1是本发明中决策系统的状态转换图,如图1所示,①到⑥是状态转换条件,具体是:①有phase变化,停止搜索;②无phase变化,进一步搜索;③已搜索到各程序当前phase的最优划分;④有phase变化:a、旧phase已有最优划分,切换至该划分;b、新phase的出现频率未超过热度阈值;⑤无phase变化,继续保持;⑥有程序进入新的稳定的phase或未确定最优划分的旧phase。在后面的划分算法中有相关的伪码描述。
4.树结构搜索集的构建方法:为了尽快搜索到一个phase的最优cache划分,本发明将双核处理器(仍以双核为例)的划分空间转变为多级的树结构——搜索树。树结点是有3个划分的搜索集,同时有3个子结点,分别对应3个搜索方向。搜索集代表了划分空间的搜索目标区域,子结点的搜索集进一步细分了父结点的搜索区域。搜索从树的根结点开始,自上而下地进行:当得到phase在搜索集内3个划分性能数据后,选其中最优者对应的搜索方向上的子结点为新的搜索集,搜索范围逐步缩小,直至叶子结点处确定出phase的最优Cache划分。这个过程类似于有序序列的折半查找,比顺序查找减少了比较次数。搜索树分成两类,一类是初始搜索树,指从划分空间的中点开始的搜索树,在程序开始运行时使用;一类是动态构建搜索树,指程序运行期间以当前划分为根结点构建的搜索树,用于对新出现的热phase开始进行最优Cache划分的搜索。图2A和图2B分别是本发明中初始搜索树和动态搜索树的示意图,如图2A和图2B所示,双核划分part1=(i,n-i),如,当n=16时,划分有part2=(2,14),part3=(3,13),part14=(14,2),划分空间为{parti|1<i<15},图中直接用数字表示划分,(2,3,4,5,6,7,8,9,10,11,12,13,14)。
下面描述了基于phase分析的cache动态划分方法的算法步骤。独立的划分决策进程,在每个时间片执行一次决策,直到应用程序结束后退出。具体方法是:在①处读取性能采样数据,例如:采样PC和程序A和B在某一时间片下的Cache划分,如果时间片没有结束,决策进程会在此处等待;②根据PC采样数据返回程序A、B上一时间片的phase号,并更新历史信息。③部分的if-else对应决策系统两个状态。当处于搜索状态时,若已收集到程序A或B的当前phase在搜索集下各划分的性能数据④(二者的行为情况可能不同,处理方法前面已经说明),就选取best_part,并由此确定下一搜索集⑥或转入保持状态⑤;当系统处于保持状态时,若发现当前phase(无论程序A或B)没有被搜索过而且出现频率已经超过热度阈值⑦,就构造搜索树,进入搜索状态。
所述基于phase分析的cache动态划分方法的算法伪码如下所示:
while 1:
if(apps process exit):
break
②phase_idm[A,B]=phase_analyze(SPCm)
③if(sys_stat==SEARCH_STAT):
④if(A or B is comparable):
best_part=j,PPM[j][phase_idm]=MAX{PPM[k][phase_idm]|k in current
_set}
⑤if(current_set is current_tree’s leaf):
#best_part has been the best partition in the current_set
BPM[phase_idm[A,B]]=best_part
sys_stat=HOLD_STAT
⑥else:
next_set=current_tree->next_level[best_part.pos],
pos={left,mid,right}
next_part=next_set[n],n is the nearest from best_part
else:
next_part=current_set->next_part
else:#sys_stat==HOLD_STAT
⑦if(phase_idm[A and B]had been searched):
next_part=BPM[phase_idm[A,B]]
⑦else if(frequency of phase_idm[A or B]>HOT_THRESHOLD
&& phase_idmnot been searched):
current_tree=new_tree(current_part)
sys_stat=SEARCH_STAT
其中,SPC(Sampled PC):采样PC
PPM(phase partition matrix):记录各phase在各划分下的性能
BPM(best partition matrix):记录两道程序各phase同时运行时的最优划分
其中:
系统状态(变量sys_stat):有两个值SEARCH_STAT和HOLD_STAT,分别表示搜索和保持状态,在搜索到当前phase的全局最优划分后,系统状态从SEARCH_STAT转换为HOLD_STAT;当出现未搜索的phase的热度(即出现频率)超过阈值则系统状态从HOLD_STAT转为SEARCH_STAT。
历史记录:包括phase号序列、phase的PC频率向量、phase的性能矩阵。
作为一种可实施方式,图3是本发明的基于phase分析的cache动态划分方法的步骤流程图,如图3所示,所述基于phase分析的cache动态划分方法,包括下列步骤:
步骤000.启动决策进程,系统状态初始化为搜索状态并构建静态搜索树,搜索集为搜索树的根结点;启动应用程序进程;决策进程开始执行步骤100到300的循环,直至应用程序进程结束;
图4是本发明中初始化搜索树的步骤流程图,如图4所示,所述步骤000,包括下列步骤:
步骤:010.划分空间为[1,n],静态搜索树的根节点为(n/4,n/2,3n/4),搜索步长为n/4,开始构造子树,输入为中心点c、区域a[L,H]和步长s,其中中心点c即为根节点的3个划分,区域a为子树所含划分范围的上下界[L,H],将根节点3个划分的c、a和s信息加入未构造队列。
区域a[L,H]上下界的确定方法:以节点(i,j,k)为例,中间划分j对应子树的区域为其左右邻居[i,k],左边划分i的区域的上界为其右邻j,下界分两种情况,若当前节点为根节点,下界为划分空间的下界,若不是根节点,下界取父亲节点的下界;右边划分k的边界类似,下界为其左邻,上界分两种情况,根节点取划分空间上界,非根节点去父亲节点的上界。
搜索树:是Cache划分空间的多级的树结构表示。树结点是有3个划分的搜索集,同时有3个子结点,分别对应3个搜索方向。对于双核处理器的划分part1=(i,n-i),如,当n=16时,划分有part2=(2,14),part3=(3,13),part14=(14,2),划分空间为{parti|1<i<15},图中直接用数字表示划分,(2,3,4,5,6,7,8,9,10,11,12,13,14)。搜索树的结点,即搜索集,就是3个有序的划分组,如(4,8,12)。
步骤020.判断未构造队列是否为空,若是,则结束构造;否则,执行步骤030.
步骤030.取出未构造队列的第一组构造信息:中心点c、区域a[L,H]和步长s,生成结点(l,c,h),若左右结点l和h超出区域则取区域边界L和H,否则l=c-s/2,h=c+s/2,s=s/2,若s=1则表示当前为叶子结点;否则将l,c,h的c、a和s加入未构造队列,返回步骤020。
例:当n为16,即cache分为16份,划分空间[1,16],静态搜索树的根结点为(4,8,12),搜索步长为4,开始构造子树,有3个子树,输入为中心点c为4、8、12,区域a[L,H]分别是中心点4的为[1,8],8的为[4,12],12的为[8,16],,将根结点3个划分的[c,a,s]信息加入未构造队列,则未构造队列目前为{[4,[1,8],4],[8,[4,12],4],[12,[8,16],4]};接下来从队列取第一个元素[4,[1,8],4]构造出树节点(2,4,6),即(4-4/2,4,4+4/2)再将步长减半,将2、4、6的c、a、s信息加入队列{[8,[4,12],4],[12,[8,16],4],[2,[1,4],2],[4,[2,6],2],[6,[4,8],2]};接下来队列元素的[8,[4,12],4],[12,[8,16],4]的处理类似;接着以[2,[1,4],2]为例,构造节点(1,2,3),即(2-2/2,2,2+2/2),再将步长减半,由步长为1可知该节点为树的叶子节点,所以它不会再有子节点加入未构造队列;这个例子生成的节点如图2A的树的最优分支(4,8,12)->(2,4,6)->(1,2,3),只是图2A的例子的最小划分为2,叶子节点是(2,2,3)。这是迭代的过程,直到未构造队列为空,即所有叶子节点都已生成,不会有新的未处理[c,a,s]。
步骤100.划分决策模块读取采样数据,并根据采样数据识别出程序在当前时间片下运行的phase号,并更新历史记录(和下文的历史信息对应);
如果时间片没有结束,决策进程会在此处等待。
图5是本发明中对数据进行采样并识别phase的步骤流程图,如图5所示,所述步骤100,包括下列步骤:
步骤110,性能采集模块周期采样时间片内的执行PC,采样周期为100万条指令;
步骤120,建立PC频率向量,并归一化;
频率向量大小设为32,取PC中从第6位开始的5位为向量索引(不使用低5位是为了尽可能使同一基本块的指令映射到向量的同一位置)。
步骤130,在phase的历史记录中查找和当前频率向量的曼哈顿距离最近的phase,若该最近曼哈顿距离小于相似度阈值,则判定当前时间片程序处于最近曼哈顿距离对应的phase;若大于相似度阈值,则判定在当前时间片程序进入新的phase,并分配新的phase编号和历史记录;
步骤200,划分决策模块收集程序的当前phase在搜索集下各划分的性能数据,根据phase分析结果和系统状态确定下一时间片的Cache划分;
图6是本发明中根据phase分析结果和系统状态确定下一时间片的Cache划分的步骤流程图,如图6所示,所述步骤200,包括下列步骤:
步骤210.判断系统状态;若为搜索状态,则执行步骤220;若为保持状态,则执行步骤250;
步骤220:若历史数据中已有当前phase在当前搜索集中各Cache划分下的性能,执行步骤230;否则执行步骤240;
步骤230:从当前phase在当前搜索集中各Cache划分下的性能中选出性能最优者作为当前最优Cache划分;
若当前搜索集在搜索树中处于叶子结点,则当前最优Cache划分为该phase的全局最优Cache划分,系统进入保持最优Cache划分的状态,即下一时间片的Cache划分为该最优Cache划分(若两道程序的最优Cache划分不一致,参见“2.依据phase行为的决策机制”处理原则);否则将当前搜索集的当前最优Cache划分方向的子结点设为新的搜索集,并从新搜索集中选出离当前最优Cache划分最近的Cache划分为下一时间片的Cache划分。(搜索集和搜索树的解释参见“4.树结构搜索集的构建方法”)
步骤240,若历史数据中没有全部的当前phase在当前搜索集中各Cache划分下的性能,则从当前搜索集中选出未搜索的Cache划分为下一时间片的Cache划分;
步骤250,当前为保持状态,若发现当前phase没有被搜索过而且出现频率已经超过热度阈值,执行步骤260;否则执行步骤270。
步骤260,为当前phase构造搜索树,下一时间片的Cache划分为该搜索树根结点上搜索集中离当前Cache划分最近的划分,并将系统状态设为搜索;
图7是本发明中为当前phase构造搜索树的步骤流程图,如图7所示,所述步骤260,包括下列步骤:
步骤261.当前划分c,根结点搜索集(c-1,c,c+1),开始构造孩子结点,输入参数为开始点b,区域a[L,H]和搜索步长s,s的初始值为n/8,开始点为当前搜索集各划分,区域为子树对应的搜索范围;将根结点中的初始开始点c-1和c+1的b、a和s信息加入未构造队列,开始点在当前节点中的位置决定其子节点的拓展方向,如c-1就向划分空间的右边扩展,扩展的距离就是步长,所以c-1扩展生成的子节点为(c-1-2s,c-1-s,c-1),c+1生成的扩展节点为(c+1,c+1+s,c+1+2s)。扩展范围即区域a[L,H]。
开始点的确定:当前节点中的不包含在父节点中的划分为开始点。
区域上下界的确定方法:以节点(i,j,k)为例,中间划分j对应子树的区域为其左右邻居[i,k],左边划分i的区域的上界为其右邻j,下界分两种情况,若当前节点为根节点,下界为划分空间的下界,若不是根节点,下界取父亲节点的下界;左边划分k的边界类似,下界为其左邻,上界分两种情况,根节点取划分空间上界,非根节点去父亲节点的上界。
步长改变条件:扩展步长根据开始点b在区域范围大小调整,分3种情况,当b在当前节点中间,若b+s和b-s分别不超出上、下边界则s不变,否则s减半;当b为当前节点左边,若b-2s不超过下界则s不变,否则减半;当b为当前节点右边,若b+2s不超过上界则s不变,否则减半。
步骤262.若未构造队列为空,则结束构造;否则开始步骤263;
步骤263.取出未构造队列的第一个构造信息:开始点b、区域[L,H]和步长s,根据步长改变条件调整步长,若b在区域的右端,生成结点(b-2s,b-s,b),若在左端,生成(b,b+s,b+2s),若b在区域中间则生成(b-s,b,b+s),若s为1则表示叶子结点构造完成;否则将新生节点中非父节点的划分的b、a和s加入未构造队列,转到步骤262;
步骤270:继续保持状态,下一时间片的Cache划分仍为当前Cache划分。
步骤300.当前时间片的决策过程结束,即确定出下一时间片的Cache划分,再调用划分执行模块完成cache划分。
相应于本发明的一种基于phase分析的cache动态划分方法,还提供一种基于phase分析的cache动态划分系统,图8是本发明的基于phase分析的cache动态划分系统的组成示意图,图9是本发明的基于phase分析的cache动态划分系统的结构组成图,如图8和图9所示,所述系统,包括:划分决策模块1、划分执行模块2和性能profiling模块3和初始化模块4,四个模块的功能和交互接口的示意图见图8。
划分决策模块1,执行划分算法,并运行在独立于应用程序的单独进程中。用于启动决策进程,收集程序的当前phase在搜索集下各划分的性能数据,在时间片结束时根据phase分析结果和系统状态确定下一时间片的Cache划分,其余时间都处于休眠状态。
所述划分决策模块1,包括:
状态判断模块11.判断系统状态;若为搜索状态,则触发搜索模块12;若为保持状态,则触发阈值判断模块15;
搜索模块12,搜索历史数据中是否已有当前phase在当前搜索集中各Cache划分下的性能,若有则触发选择模块13;否则触发划分选择模块14;
选择模块13,从当前phase在当前搜索集中各Cache划分下的性能中选出性能最优者作为当前最优Cache划分;
在所述选择模块13中,若当前搜索集在搜索树中处于叶子结点,则当前最优Cache划分为该phase的全局最优Cache划分,系统进入保持最优Cache划分的状态;否则将当前搜索集的当前最优Cache划分方向的子结点设为新的搜索集,并从新搜索集中选出离当前最优Cache划分最近的Cache划分为下一时间片的Cache划分。
划分选择模块14,若历史数据中没有全部的当前phase在当前搜索集中各Cache划分下的性能,则从当前搜索集中选出未搜索的Cache划分为下一时间片的Cache划分;
阈值判断模块15,当前为保持状态,若发现当前phase没有被搜索过而且出现频率已经超过热度阈值,触发构造模块16;否则触发状态维持模块17;
构造模块16,为当前phase构造搜索树,下一时间片的Cache划分为该搜索树根结点上搜索集中离当前Cache划分最近的划分,并将系统状态设为搜索;
所述构造模块16,包括:
输入模块161,当前划分c,根结点搜索集(c-1,c,c+1),开始构造孩子结点,输入参数为开始点b,区域a[L,H]和搜索步长s,s的初始值为n/8,开始点为当前搜索集各划分,区域为子树对应的搜索范围,将根结点中的初始开始点c-1和c+1的b、a和s信息加入未构造队列;,开始点在当前节点中的位置决定其子节点的拓展方向,如c-1就向划分空间的右边扩展,扩展的距离就是步长,所以c-1扩展生成的子节点为(c-1-2s,c-1-s,c-1),c+1生成的扩展节点为(c+1,c+1+s,c+1+2s),扩展范围即区域a[L,H];
空项判断模块162,判断未构造队列是否为空,若是则结束构造;否则触发构造子模块163;
构造子模块163,取出未构造队列的第一个构造信息:开始点b、区域[L,H]和步长s,根据步长改变条件调整步长,若b在区域的右端,生成结点(b-2s,b-s,b),若在左端,生成(b,b+s,b+2s),若b在区域中间则生成(b-s,b,b+s),若s为1则表示叶子结点构造完成;否则将新生节点中非父节点的划分的b、a和s加入未构造队列,触发空项判断模块162。
状态维持模块17,继续保持状态,下一时间片的Cache划分仍为当前Cache划分。
所述划分执行模块2,在linux内核的物理页分配和页迁移部分实现页着色功能,并对用户层提供划分的调用接口;当前时间片的决策过程结束,确定出下一时间片的Cache划分,再调用划分执行模块完成cache划分;
性能采样(profiling)模块3,通过读取处理器硬件性能计数器,向决策模块提供性能数据和phase分析的输入。
所述性能采集模块3,包括:
PC采样模块31,周期采样时间片内的执行PC,采样周期为100万条指令;
向量归一化模块32,建立PC频率向量,并归一化;
Phase识别模块33,在phase的历史记录中查找和当前频率向量的曼哈顿距离最近的phase,若该最近曼哈顿距离小于相似度阈值,则判定当前时间片程序处于最近曼哈顿距离对应的phase;若大于相似度阈值,则判定在当前时间片程序进入新的phase,并分配新的phase编号和历史记录。
初始化模块4,将系统状态初始化为搜索状态并构建静态搜索树;同时启动应用程序进程;并触发划分决策模块、划分执行模块和性能采样模块,直至应用程序进程结束;
所述初始化模块4,包括:
搜索树初始化模块41.划分空间为[1,n],静态搜索树的根结点为(n/4,n/2,3n/4),搜索步长为n/4,开始构造子树,输入为中心点c、区域a[L,H]和步长s,其中中心点c即为根节点的3个划分,区域a为子树所含划分范围的上下界[L,H],将根结点3个划分的c、a和s信息加入未构造队列;
判断模块42.判断未构造队列是否为空,若是,则结束构造;否则,触发搜索树构造模块43;
搜索树构造模块43.取出未构造队列的第一组构造信息:中心点c、区域a[L,H]和步长s,生成结点(l,c,h),若左右结点l和h超出区域则取区域边界L和H,否则l=c-s/2,h=c+s/2,s=s/2,若s=1则表示当前为叶子结点;否则将l,c,h的c、a和s加入未构造队列,触发判断模块42。
四个模块协同工作,组成一个动态的、反馈的自适应系统。
上述系统中的各模块实现的具体操作,在方法部分已经详细说明,在此不再一一赘述。
图10是现有技术中dyn与本发明的phase的性能改进对比图,如图10所示,使用本发明的方法在intel多核处理器的实机上完成的实验表明,本文的方法比现有动态方法在吞吐率、加权加速比和公平加速比上平均有1.7%、2.7%和2.8%的提高,个别程序组的改进高达4.4%、13%和6%。
图11是现有技术中dyn与本发明的phase两种方法在green类程序的迁移开销对比图,如图11所示,动态划分每次调整划分都需要将数据从旧页迁移到新页,我们用迁移页数和系统时间来考察这项开销。由于green类程序多为数据集大的浮点程序,每次划分调整涉及的物理页数目大,迁移的耗时也多。如附图3,swim和applu在dyn方法下迁移开销明显,系统时间占了快7%的运行时间,迁移页的数量也150万以上。由于phase方法在phase内部会转入保持状态,停止了划分调整,因而从迁移页数和系统时间上都大幅减少。使用phase方法后,swim和applu的系统时间降至运行时间的1.5%以下,页迁移数量也降到dyn方法时的1/6以下。
本发明的有益效果在于:
1.总体性能改进:使用本发明的方法在intel多核处理器的实机上完成的实验表明,本文的方法比现有动态方法在吞吐率、加权加速比和公平加速比上平均有1.7%、2.7%和2.8%的提高(如附图2),个别程序组的改进高达4.4%、13%和6%。
2.减少的开销:动态划分每次调整划分都需要将数据从旧页迁移到新页,我们用迁移页数和系统时间来考察这项开销。由于green类程序多为数据集大的浮点程序,每次划分调整涉及的物理页数目大,迁移的耗时也多。如附图3,swim和applu在dyn方法下迁移开销明显,系统时间占了快7%的运行时间,迁移页的数量也150万以上。由于phase方法在phase内部会转入保持状态,停止了划分调整,因而从迁移页数和系统时间上都大幅减少。使用phase方法后,swim和applu的系统时间降至运行时间的1.5%以下,页迁移数量也降到dyn方法时的1/6以下。
通过结合附图对本发明具体实施例的描述,本发明的其它方面及特征对本领域的技术人员而言是显而易见的。
以上对本发明的具体实施例进行了描述和说明,这些实施例应被认为其只是示例性的,并不用于对本发明进行限制,本发明应根据所附的权利要求进行解释。
Claims (14)
1.一种基于phase分析的Cache动态划分方法,其特征在于,包括下列步骤:
步骤000.启动决策进程,系统状态初始化为搜索状态并构建静态搜索树;启动应用程序进程;决策进程开始执行步骤100到300的循环,直至应用程序进程结束;
步骤100.划分决策模块读取采样数据,并根据采样数据识别出程序在当前时间片下运行的phase号,并更新历史记录;
步骤200,划分决策模块收集程序的当前phase在搜索集下各划分的性能数据,根据phase分析结果和系统状态确定下一时间片的Cache划分;
步骤300.当前时间片的决策过程结束,确定出下一时间片的Cache划分,再调用划分执行模块完成cache划分。
2.根据权利要求1所述的基于phase分析的Cache动态划分方法,其特征在于,所述步骤000,包括下列步骤:
步骤:010.划分空间为[1,n],静态搜索树的根结点为(n/4,n/2,3n/4),搜索步长为n/4,开始构造子树,输入为中心点c、区域a[L,H]和步长s,其中中心点c即为根节点的3个划分,区域a为子树所含划分范围的上下界[L,H],将根结点3个划分的c、a和s信息加入未构造队列;
步骤020.判断未构造队列是否为空,若是,则结束构造;否则,执行步骤030.
步骤030.取出未构造队列的第一组构造信息:中心点c、区域a[L,H]和步长s,生成结点(l,c,h),若左右结点l和h超出区域则取区域边界L和H,否则l=c-s/2,h=c+s/2,s=s/2,若s=1则表示当前为叶子结点;否则将l,c,h的c、a和s加入未构造队列,返回步骤020。
3.根据权利要求2所述的基于phase分析的Cache动态划分方法,其特征在于,所述搜索树是Cache划分空间的多级的树结构表示,树结点是有3个划分的搜索集,同时有3个子结点,分别对应3个搜索方向。
4.根据权利要求1所述的基于phase分析的Cache动态划分方法,其特征在于,所述步骤100,包括下列步骤:
步骤110,性能采集模块周期采样时间片内的执行PC,采样周期为100万条指令;
步骤120,建立PC频率向量,并归一化;
步骤130,在phase的历史记录中查找和当前频率向量的曼哈顿距离最近的phase,若该最近曼哈顿距离小于相似度阈值,则判定当前时间片程序处于最近曼哈顿距离对应的phase;若大于相似度阈值,则判定在当前时间片程序进入新的phase,并分配新的phase编号和历史记录。
5.根据权利要求1所述的基于phase分析的Cache动态划分方法,其特征在于,所述步骤200,包括下列步骤:
步骤210.判断系统状态;若为搜索状态,则执行步骤220;若为保持状态,则执行步骤250;
步骤220:若历史数据中已有当前phase在当前搜索集中各Cache划分下的性能,执行步骤230;否则执行步骤240;
步骤230:从当前phase在当前搜索集中各Cache划分下的性能中选出性能最优者作为当前最优Cache划分;
步骤240:若历史数据中没有全部的当前phase在当前搜索集中各Cache划分下的性能,则从当前搜索集中选出未搜索的Cache划分为下一时间片的Cache划分;
步骤250.当前为保持状态,若发现当前phase没有被搜索过而且出现频率已经超过热度阈值,执行步骤260;否则执行步骤270;
步骤260:为当前phase构造搜索树,下一时间片的Cache划分为该搜索树根结点上搜索集中离当前Cache划分最近的划分,并将系统状态设为搜索;
步骤270:继续保持状态,下一时间片的Cache划分仍为当前Cache划分。
6.根据权利要求5所述的基于phase分析的Cache动态划分方法,其特征在于,在步骤230中,若当前搜索集在搜索树中处于叶子结点,则当前最优Cache划分为该phase的全局最优Cache划分,系统进入保持最优Cache划分的状态;否则将当前搜索集的当前最优Cache划分方向的子结点设为新的搜索集,并从新搜索集中选出离当前最优Cache划分最近的Cache划分为下一时间片的Cache划分。
7.根据权利要求5所述的基于phase分析的Cache动态划分方法,其特征在于,所述步骤260,包括下列步骤:
步骤261.当前划分c,根结点搜索集(c-1,c,c+1),开始构造孩子结点,输入参数为开始点b,区域a[L,H]和搜索步长s,s的初始值为n/8,开始点为当前搜索集各划分,区域为子树对应的搜索范围;将根结点中的初始开始点c-1和c+1的b、a和s信息加入未构造队列,开始点在当前节点中的位置决定其子节点的拓展方向,如c-1就向划分空间的右边扩展,扩展的距离就是步长,所以c-1扩展生成的子节点为(c-1-2s,c-1-s,c-1),c+1生成的扩展节点为(c+1,c+1+s,c+1+2s),扩展范围即区域a[L,H];
步骤262.若未构造队列为空,则结束构造;否则开始步骤263;
步骤263.取出未构造队列的第一个构造信息:开始点b、区域[L,H]和步长s,根据步长改变条件调整步长,若b在区域的右端,生成结点(b-2s,b-s,b),若在左端,生成(b,b+s,b+2s),若b在区域中间则生成(b-s,b,b+s),若s为1则表示叶子结点构造完成;否则将新生节点中非父节点的划分的b、a和s加入未构造队列,转到步骤262。
8.一种基于phase分析的Cache动态划分系统,其特征在于,所述系统,包括:初始化模块、划分决策模块、划分执行模块和性能采样模块,其中:
初始化模块,将系统状态初始化为搜索状态并构建静态搜索树;同时启动应用程序进程;并触发划分决策模块、划分执行模块和性能采样模块,直至应用程序进程结束;
划分决策模块,用于启动决策进程,收集程序的当前phase在搜索集下各划分的性能数据,在时间片结束时根据phase分析结果和系统状态确定下一时间片的Cache划分,其余时间都处于休眠状态;
所述划分执行模块,当前时间片的决策过程结束,确定出下一时间片的Cache划分,再调用划分执行模块完成cache划分;
性能采集模块,通过读取处理器硬件性能计数器,向决策模块提供性能数据和phase分析的输入。
9.根据权利要求8所述的基于phase分析的Cache动态划分系统,其特征在于,所述初始化模块,包括:
搜索树初始化模块.划分空间为[1,n],静态搜索树的根结点为(n/4,n/2,3n/4),搜索步长为n/4,开始构造子树,输入为中心点c、区域a[L,H]和步长s,其中中心点c即为根节点的3个划分,区域a为子树所含划分范围的上下界[L,H],将根结点3个划分的c、a和s信息加入未构造队列;
判断模块.判断未构造队列是否为空,若是,则结束构造;否则,触发搜索树构造模块;
搜索树构造模块.取出未构造队列的第一组构造信息:中心点c、区域a[L,H]和步长s,生成结点(l,c,h),若左右结点l和h超出区域则取区域边界L和H,否则l=c-s/2,h=c+s/2,s=s/2,若s=1则表示当前为叶子结点;否则将l,c,h的c、a和s加入未构造队列,触发判断模块。
10.根据权利要求9所述的基于phase分析的Cache动态划分系统,其特征在于,所述搜索树是Cache划分空间的多级的树结构表示,树结点是有3个划分的搜索集,同时有3个子结点,分别对应3个搜索方向。
11.根据权利要求8所述的基于phase分析的Cache动态划分系统,其特征在于,所述性能采集模块,包括:
PC采样模块,周期采样时间片内的执行PC,采样周期为100万条指令;
向量归一化模块,建立PC频率向量,并归一化;
Phase识别模块,在phase的历史记录中查找和当前频率向量的曼哈顿距离最近的phase,若该最近曼哈顿距离小于相似度阈值,则判定当前时间片程序处于最近曼哈顿距离对应的phase;若大于相似度阈值,则判定在当前时间片程序进入新的phase,并分配新的phase编号和历史记录。
12.根据权利要求8所述的基于phase分析的Cache动态划分系统,其特征在于,所述划分决策模块,包括:
状态判断模块.判断系统状态;若为搜索状态,则触发搜索模块;若为保持状态,则触发阈值判断模块;
搜索模块,搜索历史数据中是否已有当前phase在当前搜索集中各Cache划分下的性能,若有则触发选择模块;否则触发划分选择模块;
选择模块,从当前phase在当前搜索集中各Cache划分下的性能中选出性能最优者作为当前最优Cache划分;
划分选择模块,若历史数据中没有全部的当前phase在当前搜索集中各Cache划分下的性能,则从当前搜索集中选出未搜索的Cache划分为下一时间片的Cache划分;
阈值判断模块,当前为保持状态,若发现当前phase没有被搜索过而且出现频率已经超过热度阈值,触发构造模块;否则触发状态维持模块;
构造模块,为当前phase构造搜索树,下一时间片的Cache划分为该搜索树根结点上搜索集中离当前Cache划分最近的划分,并将系统状态设为搜索;
状态维持模块,继续保持状态,下一时间片的Cache划分仍为当前Cache划分。
13.根据权利要求12所述的基于phase分析的Cache动态划分系统,其特征在于,在所述选择模块中,若当前搜索集在搜索树中处于叶子结点,则当前最优Cache划分为该phase的全局最优Cache划分,系统进入保持最优Cache划分的状态;否则将当前搜索集的当前最优Cache划分方向的子结点设为新的搜索集,并从新搜索集中选出离当前最优Cache划分最近的Cache划分为下一时间片的Cache划分。
14.根据权利要求12所述的基于phase分析的Cache动态划分系统,其特征在于,所述构造模块,包括:
输入模块,当前划分c,根结点搜索集(c-1,c,c+1),开始构造孩子结点,输入参数为开始点b,区域a[L,H]和搜索步长s,s的初始值为n/8,开始点为当前搜索集各划分,区域为子树对应的搜索范围,将根结点中的初始开始点c-1和c+1的b、a和s信息加入未构造队列;,开始点在当前节点中的位置决定其子节点的拓展方向,如c-1就向划分空间的右边扩展,扩展的距离就是步长,所以c-1扩展生成的子节点为(c-1-2s,c-1-s,c-1),c+1生成的扩展节点为(c+1,c+1+s,c+1+2s),扩展范围即区域a[L,H];
空项判断模块,判断未构造队列是否为空,若是则结束构造;否则触发构造子模块;
构造子模块,取出未构造队列的第一个构造信息:开始点b、区域[L,H]和步长s,根据步长改变条件调整步长,若b在区域的右端,生成结点(b-2s,b-s,b),若在左端,生成(b,b+s,b+2s),若b在区域中间则生成(b-s,b,b+s),若s为1则表示叶子结点构造完成;否则将新生节点中非父节点的划分的b、a和s加入未构造队列,触发空项判断模块。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2010102128957A CN101894048B (zh) | 2010-05-07 | 2010-06-28 | 一种基于阶段分析的缓存动态划分方法和系统 |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010165347.3 | 2010-05-07 | ||
CN201010165347 | 2010-05-07 | ||
CN2010102128957A CN101894048B (zh) | 2010-05-07 | 2010-06-28 | 一种基于阶段分析的缓存动态划分方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101894048A true CN101894048A (zh) | 2010-11-24 |
CN101894048B CN101894048B (zh) | 2012-11-14 |
Family
ID=43103244
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2010102128957A Active CN101894048B (zh) | 2010-05-07 | 2010-06-28 | 一种基于阶段分析的缓存动态划分方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101894048B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103631528A (zh) * | 2012-08-21 | 2014-03-12 | 苏州捷泰科信息技术有限公司 | 用固态硬盘作为缓存器的读写方法、系统及读写控制器 |
WO2015035901A1 (zh) * | 2013-09-10 | 2015-03-19 | 华为技术有限公司 | 程序性能干扰模型的确定方法及设备 |
CN107797941A (zh) * | 2016-09-06 | 2018-03-13 | 华为技术有限公司 | 针对查找树的缓存着色内存分配方法和装置 |
CN110532439A (zh) * | 2019-08-30 | 2019-12-03 | 中国科学院自动化研究所 | 基于树搜索的同顺序部门决策流程生成方法、系统、装置 |
CN110677190A (zh) * | 2019-10-09 | 2020-01-10 | 大连大学 | 一种天地一体化智能网络节点静态处理与缓存方法 |
CN112685156A (zh) * | 2020-12-28 | 2021-04-20 | 北京五八信息技术有限公司 | 任务执行方法、装置、电子设备和计算机可读介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6865647B2 (en) * | 2001-09-29 | 2005-03-08 | Hewlett-Packard Development Company, L.P. | Dynamic cache partitioning |
US20050071599A1 (en) * | 2003-09-30 | 2005-03-31 | Modha Dharmendra Shantilal | Storage system and method for dynamically allocating cache space among different workload classes |
CN1755652A (zh) * | 2004-09-30 | 2006-04-05 | 国际商业机器公司 | 用于高速缓存器顺序列表的动态尺寸确定的系统和方法 |
CN101395586A (zh) * | 2006-03-02 | 2009-03-25 | Nxp股份有限公司 | 基于任务的执行阶段动态调整高速缓存分区大小的方法和设备 |
-
2010
- 2010-06-28 CN CN2010102128957A patent/CN101894048B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6865647B2 (en) * | 2001-09-29 | 2005-03-08 | Hewlett-Packard Development Company, L.P. | Dynamic cache partitioning |
US20050071599A1 (en) * | 2003-09-30 | 2005-03-31 | Modha Dharmendra Shantilal | Storage system and method for dynamically allocating cache space among different workload classes |
CN1755652A (zh) * | 2004-09-30 | 2006-04-05 | 国际商业机器公司 | 用于高速缓存器顺序列表的动态尺寸确定的系统和方法 |
CN101395586A (zh) * | 2006-03-02 | 2009-03-25 | Nxp股份有限公司 | 基于任务的执行阶段动态调整高速缓存分区大小的方法和设备 |
Non-Patent Citations (1)
Title |
---|
《JOURNAL OF COMPUTER SCIENCE AND TECHNOLOGY》 20091130 Wei Mi 等 PARBLO: Page-Allocation-Based DRAM Row Buffer Locality Optimization 第1086页至第1097页 1-14 第24卷, 第6期 * |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103631528A (zh) * | 2012-08-21 | 2014-03-12 | 苏州捷泰科信息技术有限公司 | 用固态硬盘作为缓存器的读写方法、系统及读写控制器 |
CN103631528B (zh) * | 2012-08-21 | 2016-05-18 | 苏州捷泰科信息技术有限公司 | 用固态硬盘作为缓存器的读写方法、系统及读写控制器 |
WO2015035901A1 (zh) * | 2013-09-10 | 2015-03-19 | 华为技术有限公司 | 程序性能干扰模型的确定方法及设备 |
US10430312B2 (en) | 2013-09-10 | 2019-10-01 | Huawei Technologies Co., Ltd. | Method and device for determining program performance interference model |
CN107797941A (zh) * | 2016-09-06 | 2018-03-13 | 华为技术有限公司 | 针对查找树的缓存着色内存分配方法和装置 |
CN110532439A (zh) * | 2019-08-30 | 2019-12-03 | 中国科学院自动化研究所 | 基于树搜索的同顺序部门决策流程生成方法、系统、装置 |
CN110677190A (zh) * | 2019-10-09 | 2020-01-10 | 大连大学 | 一种天地一体化智能网络节点静态处理与缓存方法 |
CN112685156A (zh) * | 2020-12-28 | 2021-04-20 | 北京五八信息技术有限公司 | 任务执行方法、装置、电子设备和计算机可读介质 |
Also Published As
Publication number | Publication date |
---|---|
CN101894048B (zh) | 2012-11-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101894048B (zh) | 一种基于阶段分析的缓存动态划分方法和系统 | |
Zaki et al. | Parallel classification for data mining on shared-memory multiprocessors | |
Negrevergne et al. | Discovering closed frequent itemsets on multicore: Parallelizing computations and optimizing memory accesses | |
CN101799748B (zh) | 一种确定数据样本类别的方法及其系统 | |
CN101329676B (zh) | 一种数据并行抽取方法、装置和数据库系统 | |
Guralnik et al. | Parallel tree-projection-based sequence mining algorithms | |
CN104699464A (zh) | 一种基于依赖网格的指令级并行调度方法 | |
Barrientos et al. | Heap based k-nearest neighbor search on GPUs | |
Zhao et al. | Parallel support vector machines on multi-core and multiprocessor systems | |
Becuzzi et al. | Mining of Association Rules in Very Large Databases: A Structured Parallel Approach⋆ | |
CN101963907A (zh) | 一种计算机程序热点的动态剖析机制 | |
CN108334532A (zh) | 一种基于Spark的Eclat并行化方法、系统及装置 | |
Barrientos et al. | Range query processing in a multi-GPU environment | |
Francis et al. | A parallel partition for enhanced parallel quicksort | |
Tokoro et al. | An approach to microprogram optimization considering resource occupancy and instruction formats | |
Sun et al. | ParSSSE: An adaptive parallel state space search engine | |
Marconi et al. | A novel fast online placement algorithm on 2D partially reconfigurable devices | |
Marinescu et al. | Domain oriented analysis of PDE splitting algorithms | |
Kouki et al. | A load balanced distributed algorithm to solve the permutation flow shop problem using the grid | |
Jigang et al. | A hybrid branch-and-bound strategy for hardware/software partitioning | |
Hasanov et al. | High-level topology-oblivious optimization of MPI broadcast algorithms on extreme-scale platforms | |
Jimenez-Gonzalez et al. | Communication conscious radix sort | |
Jiang et al. | O (k) parallel algorithm for approximate string matching. | |
Galaktionov et al. | Matrix Clustering Algorithms for Vertical Partitioning Problem: an Initial Performance Study. | |
Billa et al. | Efficient frequent pattern mining algorithm based on node sets in cloud computing environment |
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 |