基于增量式闭合序列挖掘的高速缓存数据预取方法

文档序号:6460409阅读:139来源:国知局
专利名称:基于增量式闭合序列挖掘的高速缓存数据预取方法
技术领域
本发明涉及高速缓存数据预取技术,尤其是涉及一种基于增量式闭合序列 挖掘的高速缓存数据预取方法。
技术背景近年来,为了减少处理器等待读取数据的时间,提出了使用高速缓存的技 术。采用高速缓存的系统芯片的相关部分如图l所示,该系统芯片包括处理器、 高速缓存、高速缓存预取模块、内存,系统总线。其中处理器从高速缓存中读 取数据并进行计算以及向高速缓存预取模块发送预取数据的控制信息;高速缓 存中保存的是处理器将要使用的数据;高速缓存预取模块用于从系统内存读取 处理器即将使用的数据,并将数据传输到高速缓存;内存中保存着各种数据; 系统芯片总线连接所述高数缓存预取模块和内存,并传递各种控制信息。为提高高速缓存的效率(提高命中率),在高速缓存未命中发生之前,需要 高速缓存预取模块进行数据预加载(pre-load)(或预取(pre-fetch)),即把将要使用 的数据预先填充到高速缓存中。存在几种公知的数据预取技术。 一种是顺序预 取,即预取地址空间的下一顺序行。另一种是分支预测技术,使用分支目标缓 存器,当一个高速缓存行被引用时,它的相关联的分支目标地址是预取的良好 候选者。这些公知的数据预取技术,都采用简单的预取模式,高速缓存的命中率不 高,预取没有利用数据块之间的语义联系,不具有智能性。因此,在高数缓存 预取模块中引入语义模式,充分挖掘数据块之间的语义联系,提高高速缓存的 命屮率是十分有必要的。序列模式挖掘是数据挖掘中的一项重要任务.其目的是在给定的序列数据 库中挖掘出所有的满足最小支持度要求的频繁序列,以产生相应的规则或模 式.这类模式有着广泛的应用,如分析顾客的购物习惯、Web页面的访问顺序、 DNA序列等等。而频繁闭合序列拥有与完全频繁序列集相同的表达能力,却有 着更加简洁的形式和少得多的数量,充分减少了结果集的冗余度。将闭合序列挖掘引入高速缓存的数据预取模块中,通过对存储数据存取系 列挖掘出相应的频繁闭合序列,产生数据预取的规则,从而使得数据块之间具 有语义联系,数据预取智能化,这是有实际意义的。UIUC的Zhenmin等使用闭合序列模式挖掘算法Clospan的变种CMiner挖掘存储系统的数据存取序列的数 据相关性,明显地提高了 1/0平均响应时间。CMiner挖掘方法是针对静态数据 库进行的,不能针对实时的环境进行挖掘,而存储数据的存取序列是动态更新 的,特点是变化幅度小,频率高,因此需要一种更加高效的实时闭合序此列挖 掘方法来满足需求。 发明内容本发明的目的在于提供一种基于增量式闭合序列挖掘的高速缓存数据预取方法。本发明解决其技术问题所采用的技术方案是1. 用于存储系统的高速缓存数据预取模块中的数据预取步骤中的,通过采 集CPU向内存请求的数据存取序列,将其转换为序列输入数据库,采用增量式 闭合序列挖掘算法挖掘频繁闭合序列,提取出高速缓存数据预取规则,用于指 导高速缓存的数据预取,提高高速缓存的命中率;(1) 采集CPU访问内存存取序列实时记录CPU请求访问的文件系统中的 逻辑块号组成的序列,每一个文件系统的逻辑块号为序列中的一个项目;(2) 预处理处理步骤(l)得到的CPU访问内存存取序列,将步骤(l)得到的 CPU访问内存存取序列划分为固定长度的序列,此序列为一个窗口,此序列长 度为窗U大小, 一个窗口作为一条输入序列,存入输入序列数据库中;(3) 训练对步骤(2)得到的序列输入数据库采用增量式的闭合序列挖掘方法 进行挖掘得到频繁闭合序列集合,每当步骤(2)有新的输入序列时,在己有的闭 合序列挖掘的结果基础上,结合新增输入序列,增量式挖掘新的频繁闭合序列 模式集合;(4) 规则生成对步骤(3)得到的频繁闭合序列进行分解得到所蕴含的所有规 则,并通过规则评估函数对规则进行评估,去除不符合要求的规则,最后得到 高效的用于高速缓存数据预取的指导规则。2. 步骤(2)设置一个计数器,初始值为零,步骤(l)每采集一个项目,计数器 增加1,当计数器值等于窗口大小时,把步骤(l)采集得到的序列作为一条记录存 入序列输入数据库中,并清除步骤(l)的记录。计数器重置为0,取下一条存入序 列输入数据库的记录,如此循环下去;3. 步骤(3)对步骤(2)得到的序列输入数据库,简称为SDB采用增量式的闭合 序列挖掘方法进行挖掘得到频繁闭合序列集合的具体步骤如下(A)设置最小支持阈值的初始值,最小支持阈值简称为min—sup, TreeOld为空,TreeNew为空。TreeOld和TreeNew为闭合序列树,TreeOld为上一次挖掘 的闭合序列树,TreeNew存储本次挖掘结果的闭合序列树,闭合序列树是一课 多叉树,树节点ni是三元组^项目ii,支持值supi,子节点列表>,代表了构成 某个闭合序列前缀的一个项目;ii表示对应的项目,当支持值supi>0则代表一 个闭合序列的结尾项目,supi表示相应的支持值,对应的闭合序列为从根节点到 此节点的路径;每个节点都有一个以项目值为索引的哈希表指向其孩子节点, n0= <£,-1,...>表示根节点;(B) 计算SDB基于min_sup,长度为1的频繁序列,记为l-sequence;(C) 计算步骤(B)得到的l-sequence的伪投影数据库, 一个l-s叫uence记为 fl,其伪投影数据库记为SDB、(D) 如果步骤(B)得到的所有的1-sequence都处理完了,结束,否则取步骤(B) 得到的一个未处理的fl,判断此时TreeOld是否有效,如果有效并且fl仅被旧 输入串数据库所包含,不被新增输入串所包含,继续执行,否则执行步骤(F);(E) 如果以fl为路径的节点在TreeOld中存在,将该节点从TreeOld中摘下, 加入到TreeNew中,把该fl标记为已处理,返回步骤(D);(F) 使用频繁闭合序列挖掘算法Bide中的BackScan算法考察fl是否被其他 已经挖掘的序列所包含,如果不包含,继续执行,如果包含了,无需冗余挖掘, 把fl标记为已处理,返回步骤(D);(G)创建新的闭合序列树节点Pnode, Pnode.i=fl,Pnode.supi=-l,这里的 是计算机程序设计中的赋值符号,使用Bide算法中的backward extension check 方法计算fl的BEI值;(H) 此时记fl为Sp,记SDBa为Sp_SDB,记Pnode为pparent,记treenew为 pparent_parent。 pparent表示上次迭代的树节点,pparent_parent表示更上一次迭 代的树节点;(I) 计算Sp—SDB基于min—sup的本地频繁项集合,记为LFI; (J)计算LFI中本地频繁项中支持度等于Sp支持度的个数,记为FEI; (K)如果LFI中所有的本地频繁项都已经处理过了,执行步骤(P),否则取LFI中的一个未处理的本地频繁项Li,将Sp和Li连接,记为Spj,计算Sp—i的 对于Sp一SDB的伪投影数据库,记为SDBSp-i;(L)判断此时TreeOld是否有效,如果有效并且Sp_i仅被旧输入串数据库所 包含,不被新增输入串所包含,继续执行,否则执行步骤(N);(M)如果以Sp一i为路径的节点在TreeOld中存在,将该节点从TreeOld中摘下,加入到pparent中。把Sp—i对应本地频繁项Li标记未处理过,返回步骤(K);(N)使用频繁闭合序列挖掘算法Bide中的BackScan算法考察Sp—i是否有其 他序列包含它,如果不包含,继续执行,如果包含了,无需冗余挖掘,把Sp一i 对应本地频繁项Li标记未处理过,返回步骤(K);(O)创建新的闭合序列树节点Pnodenew, Pnodenew.i=Sp—i,使用Bide算法中 的backward extension check方法计算Sp—i的BEI值。令Sp的值等于Sp_i, Sp—SDB的值等于SDBSp-i, pparent_parent的值等于pparent, pparent的值等于 Pnodenew,返回步骤(I);(P)如果BEI和FEI都为零并且pparent的孩子节点非空,说明pparent是频 繁闭合序列的一个项目,令pparent.supi=Sp的支持值,把pparent加到 pparent_parent节点下。返回步骤(D);4.步骤(4)对步骤(3)得到的频繁闭合序列进行分解得到所蕴含的所有规则, 当规则评估函数值大于最小可信值时,此规则为有效规则,用于指导高速缓存 数据预取。本发明是一种基于增量式闭合序列挖掘的高速缓存数据预取方法,相对于 己有的CMiner挖掘存储系统闭合序列挖掘方法,具有的明显的特点和优点在于 能根据实时环境的变化,增量式的对输入序列进行挖掘。无需维护大量候选 闭合序列,从而节省大量运行空间。提高了高速缓存的命中率有了 12%-25%的 提高。本发明具有普适性,易于广泛应用于序列输入串数据库是动态更新的, 变化幅度小,频率高的实时环境中。


图1是高速缓存预取模块在系统中的位置示意图。 图2是本发明的流程示意图。图3是增量式频繁闭合序列挖掘CPU访问内存存取序列的流程示意图。 图4是实施例所生成的闭合序列树图。
具体实施方式
本发明的处理流程参见图2所示,是应用于图1中的高速缓存数据预取模块 中的数据预取步骤中的。首先通过采集CPU向内存请求的数据存取序列,将其 转换为序列输入数据库,然后采用增量式闭合序列挖掘算法挖掘频繁闭合序列, 提取出高速缓存数据预取规则,最后用于指导高速缓存的数据预取,从而提高 了高速缓存的命中率。下面结合图2介绍本发明的处理流程1.采集实时记录CPU请求访问的文件系统中的逻辑块号(例如FAT32为扇区所组成的簇)组成的序列,每一个文件系统的逻辑块号为序列中的一个项 目;例如实时采集到的 CPU 访问内存存取序列为 CAABCABCBDCABCEABBCA}。2. 预处理设置窗口大小为5,对图2中"采集"得到的CPU访问内存存 取序列,划分为一个个大小为5的窗口,并存入输入序列数据库中,此时输入 序列数据库中有四条记录,为(CAABC), {ABCBD}, {CABCE}, {ABBCA}。3. 训练对图2中"预处理"得到的序列输入数据库采用增量式的闭合序 列挖掘方法进行挖掘得到频繁闭合序列集合。每当图2中"预处理"有新的输 入序列时,在已有的闭合序列挖掘的结果基础上,结合新增输入序列,增量式 挖掘新的频繁闭合序列模式集合。下面结合图3具体介绍图2中的"训练",具 体步骤如下(A) 设置min_sup (最小支持阈值)的初始值为2, TreeOld为空,TreeNew 为空。TreeOld和TreeNew均为一棵闭合序列树,TreeOld为上一次挖掘的闭合 序列树,TreeNew存储本次挖掘结果的闭合序列树。闭合序列树是一课多叉树, 树节点ni是三元组<项目ii,支持值supi,子节点列表>,代表了构成某个闭合 序列前缀的一个项目;ii表示对应的项目,当支持值supi>0则代表一个闭合序 列的结尾项目,supi表示相应的支持值,对应的闭合序列为从根节点到此节点的 路径;每个节点都有一个以项目值为索引的哈希表指向其孩子节点,n0= <e, -1,...>表示根节点;如图4为一棵闭合序列树,图中的树节点n2,项目为A, 支持值为2,由于此树节点的支持值大于零,从根节点到n2的路径为n0nln2, 则对应的闭合序列为AA。(B) 计算SDB基于min—sup,长度为1的频繁序列(1-sequence)。 l-sequence(C) 计算步骤(B)得到的l-s叫uence的伪投影数据库, 一个l-sequence记 为fl,其伪投影数据库记为SDB、(D) 包含(Dl)和(D2)两个步骤,(Dl)如果步骤(B)得到的所有的l-sequence都处理完了,结束,否则执行(D2)。(D2)取步骤(B)得到的一个未处理的fl,判断此时TreeOld是否有效,如 果有效并且fl仅被旧输入串数据库所包含,不被新增输入串所包含,继续执行, 否则执行步骤(F)。(E) 如果以fl为路径的节点在TreeOld中存在,将该节点从TreeOld中摘下,加入到TreeNew中。把该fl标记为已处理,返回步骤(D)。(F) 使用频繁闭合序列挖掘算法Bide中的BackScan算法考察fl是否被其他 已经挖掘的序列所包含,如果不包含,继续执行,如果包含了,无需冗余挖掘, 把fl标记为已处理,返回步骤(D)。(G) 创建新的闭合序列树节点Pnode, Pnode.i-fl,Pnode.supi--l,使用Bide算 法中的backward extension check方法计算fl的BEI值。(H) 此时记fl为Sp,记SDBn为Sp_SDB,记Pnode为pparent,记treenew为 pparent_parent。 pparent表示上次迭f^的树节点,pparent_parent表示更上一次迭 代的树节点。(A) 计算Sp_SDB基于min_sup的本地频繁项集合,记为LFI。(B) 计算LFI中本地频繁项中支持度等于Sp支持度的个数,记为FEI。(C) 包含(Kl)和(K2)两个步骤,(Kl)如果LFI中所有的本地频繁项都已经处理过了,执行步骤(P),否 则执行(K2)。(K2)取LFI中的一个未处理的本地频繁项Li,将Sp和Li连接,记为Sp—i, 计算Sp一i的对于Sp—SDB的伪投影数据库,记为SDBSp-'。(D) 判断此时TreeOld是否有效,如果有效并且Sp一i仅被旧输入串数据库所包含,不被新增输入串所包含,继续执行,否则执行步骤(N)。(E) 如果以Sp一i为路径的节点在TreeOld中存在,将该节点从TreeOld中 摘下,加入到pparent中。把Sp—i对应本地频繁项Li标记未处理过,返回步骤(K)。(F) 使用频繁闭合序列挖掘算法Bide中的BackScan算法考察Sp—i是否有 其他序列包含它,如果不包含,继续执行,如果包含了,无需冗余挖掘,把Sp一i 对应本地频繁项Li标记未处理过,返回步骤(K)。(G) 创建新的闭合序列树节点Pnodenew, Pnodenew.i=Sp—i,使用Bide算法 中的backward extension check方法计算Sp—i的BEI值。令Sp的值等于Sp—i, Sp一SDB的值等于SDBSp-i, pparentjarent的值等于pparent, pparent的值等于 Pnodenew,返回步骤(1)。(H) 如果BEI和FEI都为零并且pparent的孩子节点非空,说明pparent是 频繁闭合序列的一个项目,令pparent.supi-Sp的支持值,把pparent加到 pparent—parent节点下。返回步骤(D)。经过上述步骤(A)到步骤(P)的计算之后,可得闭合序列树如图4所示。由图4可知频繁闭合序列集合为(AA:2,ABB:2,ABC:4,CA:3,CABC:2,CB:3)4.规则生成对图2中"训练"得到的频繁闭合序列进行分解得到所蕴含的 所有规则,并通过规则评估函数对规则进行评估,去除不符合要求的规则,最 后得到高效的用于高速缓存数据预取的指导规则。对于ABC频繁闭合序列,分 解为如下规则(A^B,A^C,B^C,AB+C)。对于A^B规则,其规则评估函数为 sup(B)/sup(力,其中sup(j)表示序列A的支持度为4, sup(S)表示序列B的支持度 也为4,贝ljsupOS)/sup(J)的值为100%。设置最小可信值为60%,则规则A^B评 估函数的值大于最小可信值,规则为有效规则,可用于指导高速缓存数据预取。 总之,本发明的试验实施的实施例是成功的,实现了发明目的。
权利要求
1.一种基于增量式闭合序列挖掘的高速缓存数据预取方法,其特征在于是用于存储系统的高速缓存数据预取模块中的数据预取步骤中的,通过采集CPU向内存请求的数据存取序列,将其转换为序列输入数据库,采用增量式闭合序列挖掘算法挖掘频繁闭合序列,提取出高速缓存数据预取规则,用于指导高速缓存的数据预取,提高高速缓存的命中率;(1)采集CPU访问内存存取序列实时记录CPU请求访问的文件系统中的逻辑块号组成的序列,每一个文件系统的逻辑块号为序列中的一个项目;(2)预处理处理步骤(1)得到的CPU访问内存存取序列,将步骤(1)得到的CPU访问内存存取序列划分为固定长度的序列,此序列为一个窗口,此序列长度为窗口大小,一个窗口作为一条输入序列,存入输入序列数据库中;(3)训练对步骤(2)得到的序列输入数据库采用增量式的闭合序列挖掘方法进行挖掘得到频繁闭合序列集合,每当步骤(2)有新的输入序列时,在已有的闭合序列挖掘的结果基础上,结合新增输入序列,增量式挖掘新的频繁闭合序列模式集合;(4)规则生成对步骤(3)得到的频繁闭合序列进行分解得到所蕴含的所有规则,并通过规则评估函数对规则进行评估,去除不符合要求的规则,最后得到高效的用于高速缓存数据预取的指导规则。
2. 根据权利要求1所述的一种基于增量式闭合序列挖掘的高速缓存数据预 取方法,其特征在于步骤(2)设置一个计数器,初始值为零,步骤(l)每采集一个项目,计数器增加l,当计数器值等于窗口大小时,把步骤(l)采集得到的序列作为一条记录存入序列输入数据库中,并清除步骤(i)的记录,计数器重置为o,取下一条存入序列输入数据库的记录,如此循环下去;
3. 根据权利要求1所述的一种基于增量式闭合序列挖掘的高速缓存数据预 取方法,其特征在于步骤(3)对步骤(2)得到的序列输入数据库,简称为SDB采 用增量式的闭合序列挖掘方法进行挖掘得到频繁闭合序列集合的具体步骤如下(A) 设置最小支持阈值的初始值,最小支持阈值简称为min—sup,设置TreeOld 为空,TreeNew为空,TreeOld和TreeNew均为一棵闭合序列树,TreeOId为上 一次挖掘的闭合序列树,TreeNew存储本次挖掘结果的闭合序列树;(B) 计算SDB基于min—sup,长度为1的频繁序列,记为l-s叫uence;(C) 计算步骤(B)得到的"sequence的伪投影数据库, 一个l-s叫uence记为 fl,其伪投影数据库记为SDB、(D) 如果步骤(B)得到的所有的l-sequence都处理完了,结束,否则取步骤(B) 得到的一个未处理的fl,判断此时TreeOld是否有效,如果有效并且fl仅被旧 输入串数据库所包含,不被新增输入串所包含,继续执行,否则执行步骤(F);(E) 如果以fl为路径的节点在TreeOld中存在,将该节点从TreeOld中摘下, 加入到TreeNew中,把该fl标记为已处理,返回步骤(D);(F) 使用频繁闭合序列挖掘算法Bide中的BackScan算法考察fl是否被其他 己经挖掘的序列所包含,如果不包含,继续执行,如果包含了,无需冗余挖掘, 把fl标记为已处理,返回步骤(D);(G)创建新的闭合序列树节点Pnode, Pnode.i=fl,Pnode,supi=-l,这里的"=" 是计算机程序设计中的赋值符号,使用Bide算法中的backward extension check 方法计算fl的BEI值;(H) 此时记fl为Sp,记SDBt'为Sp—SDB,记Pnode为pparent,记treenew为 pparent_parent, pparent表示上次迭代的树节点,pparent_parent表示更上一次迭 代的树节点;(I) 计算Sp_SDB基于min_sup的本地频繁项集合,记为LFI; (J)计算LFI中本地频繁项中支持度等于Sp支持度的个数,记为FEI; (K)如果LFI中所有的本地频繁项都已经处理过了,执行步骤(P),否则取LFI中的一个未处理的本地频繁项Li,将Sp和Li连接,记为Sp—i,计算Sp_i的 对于Sp_SDB的伪投影数据库,记为SDB^';(L)判断此时TreeOld是否有效,如果有效并且Spj仅被旧输入串数据库所 包含,不被新增输入串所包含,继续执行,否则执行步骤(N);(M)如果以Sp_i为路径的节点在TreeOld中存在,将该节点从TreeOld中摘 下,加入到pparent中,把Sp—i对应本地频繁项Li标记未处理过,返回步骤(K);(N)使用频繁闭合序列挖掘算法Bide中的BackScan算法考察Sp—i是否有其他序列包含它,如果不包含,继续执行,如果包含了,无需冗余挖掘,把Spj 对应本地频繁项Li标记未处理过,返回步骤(K);(O)创建新的闭合序列树节点Pnodenew, Pnodenew.i=Sp—i,使用Bide算法中 的backward extension check方法计算Sp—i的BEI值,令Sp的值等于Sp_i, Sp_SDB的信等于SDBSp-、 pparent_parent的值等于pparent, pparent的值等于 Pnodenew,返回步骤(I);(P)如果BEI和FEI都为零并且pparent的孩子节点非空,说明pparent是频 繁闭合序列的一个项目,令pparent.supi=Sp的支持值,把pparent加到 pparent_parent节点下,返回步骤(D);
4.根据权利要求1所述的一种基于增量式闭合序列挖掘的高速缓存数据预 取方法,其特征在于步骤(4)对步骤(3)得到的频繁闭合序列进行分解得到所蕴 含的所有规则,当规则评估函数值大于最小可信值时,此规则为有效规则,用 于指导高速缓存数据预取。
全文摘要
本发明公开了一种基于增量式闭合序列挖掘的高速缓存数据预取方法。通过收集中央处理器访问内存的数据存取序列,转换为序列输入数据库,采用增量式闭合序列挖掘算法挖掘频繁闭合序列,提取出高速缓存数据预取规则,用于指导高速缓存的数据预取,从而使数据块之间具有语义联系,数据预取智能化,提高了高速缓存的命中率。本发明能根据实时环境的变化,增量式的对输入序列进行挖掘。无需维护大量候选闭合序列,从而节省大量运行空间。提高了高速缓存的命中率有了12%-25%的提高。本发明具有普适性,易于广泛应用于序列输入串数据库是动态更新的,变化幅度小,频率高的实时环境中。
文档编号G06F12/08GK101266578SQ20081005985
公开日2008年9月17日 申请日期2008年2月22日 优先权日2008年2月22日
发明者李山亭, 铭 蔡, 刚 陈 申请人:浙江大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1