專利名稱:基于增量式閉合序列挖掘的高速緩存數(shù)據(jù)預取方法
技術領域:
本發(fā)明涉及高速緩存數(shù)據(jù)預取技術,尤其是涉及一種基于增量式閉合序列 挖掘的高速緩存數(shù)據(jù)預取方法。
技術背景近年來,為了減少處理器等待讀取數(shù)據(jù)的時間,提出了使用高速緩存的技 術。采用高速緩存的系統(tǒng)芯片的相關部分如圖l所示,該系統(tǒng)芯片包括處理器、 高速緩存、高速緩存預取模塊、內(nèi)存,系統(tǒng)總線。其中處理器從高速緩存中讀 取數(shù)據(jù)并進行計算以及向高速緩存預取模塊發(fā)送預取數(shù)據(jù)的控制信息;高速緩 存中保存的是處理器將要使用的數(shù)據(jù);高速緩存預取模塊用于從系統(tǒng)內(nèi)存讀取 處理器即將使用的數(shù)據(jù),并將數(shù)據(jù)傳輸?shù)礁咚倬彺?;?nèi)存中保存著各種數(shù)據(jù); 系統(tǒng)芯片總線連接所述高數(shù)緩存預取模塊和內(nèi)存,并傳遞各種控制信息。為提高高速緩存的效率(提高命中率),在高速緩存未命中發(fā)生之前,需要 高速緩存預取模塊進行數(shù)據(jù)預加載(pre-load)(或預取(pre-fetch)),即把將要使用 的數(shù)據(jù)預先填充到高速緩存中。存在幾種公知的數(shù)據(jù)預取技術。 一種是順序預 取,即預取地址空間的下一順序行。另一種是分支預測技術,使用分支目標緩 存器,當一個高速緩存行被引用時,它的相關聯(lián)的分支目標地址是預取的良好 候選者。這些公知的數(shù)據(jù)預取技術,都采用簡單的預取模式,高速緩存的命中率不 高,預取沒有利用數(shù)據(jù)塊之間的語義聯(lián)系,不具有智能性。因此,在高數(shù)緩存 預取模塊中引入語義模式,充分挖掘數(shù)據(jù)塊之間的語義聯(lián)系,提高高速緩存的 命屮率是十分有必要的。序列模式挖掘是數(shù)據(jù)挖掘中的一項重要任務.其目的是在給定的序列數(shù)據(jù) 庫中挖掘出所有的滿足最小支持度要求的頻繁序列,以產(chǎn)生相應的規(guī)則或模 式.這類模式有著廣泛的應用,如分析顧客的購物習慣、Web頁面的訪問順序、 DNA序列等等。而頻繁閉合序列擁有與完全頻繁序列集相同的表達能力,卻有 著更加簡潔的形式和少得多的數(shù)量,充分減少了結(jié)果集的冗余度。將閉合序列挖掘引入高速緩存的數(shù)據(jù)預取模塊中,通過對存儲數(shù)據(jù)存取系 列挖掘出相應的頻繁閉合序列,產(chǎn)生數(shù)據(jù)預取的規(guī)則,從而使得數(shù)據(jù)塊之間具 有語義聯(lián)系,數(shù)據(jù)預取智能化,這是有實際意義的。UIUC的Zhenmin等使用閉合序列模式挖掘算法Clospan的變種CMiner挖掘存儲系統(tǒng)的數(shù)據(jù)存取序列的數(shù) 據(jù)相關性,明顯地提高了 1/0平均響應時間。CMiner挖掘方法是針對靜態(tài)數(shù)據(jù) 庫進行的,不能針對實時的環(huán)境進行挖掘,而存儲數(shù)據(jù)的存取序列是動態(tài)更新 的,特點是變化幅度小,頻率高,因此需要一種更加高效的實時閉合序此列挖 掘方法來滿足需求。 發(fā)明內(nèi)容本發(fā)明的目的在于提供一種基于增量式閉合序列挖掘的高速緩存數(shù)據(jù)預取方法。本發(fā)明解決其技術問題所采用的技術方案是1. 用于存儲系統(tǒng)的高速緩存數(shù)據(jù)預取模塊中的數(shù)據(jù)預取步驟中的,通過采 集CPU向內(nèi)存請求的數(shù)據(jù)存取序列,將其轉(zhuǎn)換為序列輸入數(shù)據(jù)庫,采用增量式 閉合序列挖掘算法挖掘頻繁閉合序列,提取出高速緩存數(shù)據(jù)預取規(guī)則,用于指 導高速緩存的數(shù)據(jù)預取,提高高速緩存的命中率;(1) 采集CPU訪問內(nèi)存存取序列實時記錄CPU請求訪問的文件系統(tǒng)中的 邏輯塊號組成的序列,每一個文件系統(tǒng)的邏輯塊號為序列中的一個項目;(2) 預處理處理步驟(l)得到的CPU訪問內(nèi)存存取序列,將步驟(l)得到的 CPU訪問內(nèi)存存取序列劃分為固定長度的序列,此序列為一個窗口,此序列長 度為窗U大小, 一個窗口作為一條輸入序列,存入輸入序列數(shù)據(jù)庫中;(3) 訓練對步驟(2)得到的序列輸入數(shù)據(jù)庫采用增量式的閉合序列挖掘方法 進行挖掘得到頻繁閉合序列集合,每當步驟(2)有新的輸入序列時,在己有的閉 合序列挖掘的結(jié)果基礎上,結(jié)合新增輸入序列,增量式挖掘新的頻繁閉合序列 模式集合;(4) 規(guī)則生成對步驟(3)得到的頻繁閉合序列進行分解得到所蘊含的所有規(guī) 則,并通過規(guī)則評估函數(shù)對規(guī)則進行評估,去除不符合要求的規(guī)則,最后得到 高效的用于高速緩存數(shù)據(jù)預取的指導規(guī)則。2. 步驟(2)設置一個計數(shù)器,初始值為零,步驟(l)每采集一個項目,計數(shù)器 增加1,當計數(shù)器值等于窗口大小時,把步驟(l)采集得到的序列作為一條記錄存 入序列輸入數(shù)據(jù)庫中,并清除步驟(l)的記錄。計數(shù)器重置為0,取下一條存入序 列輸入數(shù)據(jù)庫的記錄,如此循環(huán)下去;3. 步驟(3)對步驟(2)得到的序列輸入數(shù)據(jù)庫,簡稱為SDB采用增量式的閉合 序列挖掘方法進行挖掘得到頻繁閉合序列集合的具體步驟如下(A)設置最小支持閾值的初始值,最小支持閾值簡稱為min—sup, TreeOld為空,TreeNew為空。TreeOld和TreeNew為閉合序列樹,TreeOld為上一次挖掘 的閉合序列樹,TreeNew存儲本次挖掘結(jié)果的閉合序列樹,閉合序列樹是一課 多叉樹,樹節(jié)點ni是三元組^項目ii,支持值supi,子節(jié)點列表>,代表了構(gòu)成 某個閉合序列前綴的一個項目;ii表示對應的項目,當支持值supi>0則代表一 個閉合序列的結(jié)尾項目,supi表示相應的支持值,對應的閉合序列為從根節(jié)點到 此節(jié)點的路徑;每個節(jié)點都有一個以項目值為索引的哈希表指向其孩子節(jié)點, n0= <£,-1,...>表示根節(jié)點;(B) 計算SDB基于min_sup,長度為1的頻繁序列,記為l-sequence;(C) 計算步驟(B)得到的l-sequence的偽投影數(shù)據(jù)庫, 一個l-s叫uence記為 fl,其偽投影數(shù)據(jù)庫記為SDB、(D) 如果步驟(B)得到的所有的1-sequence都處理完了,結(jié)束,否則取步驟(B) 得到的一個未處理的fl,判斷此時TreeOld是否有效,如果有效并且fl僅被舊 輸入串數(shù)據(jù)庫所包含,不被新增輸入串所包含,繼續(xù)執(zhí)行,否則執(zhí)行步驟(F);(E) 如果以fl為路徑的節(jié)點在TreeOld中存在,將該節(jié)點從TreeOld中摘下, 加入到TreeNew中,把該fl標記為已處理,返回步驟(D);(F) 使用頻繁閉合序列挖掘算法Bide中的BackScan算法考察fl是否被其他 已經(jīng)挖掘的序列所包含,如果不包含,繼續(xù)執(zhí)行,如果包含了,無需冗余挖掘, 把fl標記為已處理,返回步驟(D);(G)創(chuàng)建新的閉合序列樹節(jié)點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表示上次迭代的樹節(jié)點,pparent_parent表示更上一次迭 代的樹節(jié)點;(I) 計算Sp—SDB基于min—sup的本地頻繁項集合,記為LFI; (J)計算LFI中本地頻繁項中支持度等于Sp支持度的個數(shù),記為FEI; (K)如果LFI中所有的本地頻繁項都已經(jīng)處理過了,執(zhí)行步驟(P),否則取LFI中的一個未處理的本地頻繁項Li,將Sp和Li連接,記為Spj,計算Sp—i的 對于Sp一SDB的偽投影數(shù)據(jù)庫,記為SDBSp-i;(L)判斷此時TreeOld是否有效,如果有效并且Sp_i僅被舊輸入串數(shù)據(jù)庫所 包含,不被新增輸入串所包含,繼續(xù)執(zhí)行,否則執(zhí)行步驟(N);(M)如果以Sp一i為路徑的節(jié)點在TreeOld中存在,將該節(jié)點從TreeOld中摘下,加入到pparent中。把Sp—i對應本地頻繁項Li標記未處理過,返回步驟(K);(N)使用頻繁閉合序列挖掘算法Bide中的BackScan算法考察Sp—i是否有其 他序列包含它,如果不包含,繼續(xù)執(zhí)行,如果包含了,無需冗余挖掘,把Sp一i 對應本地頻繁項Li標記未處理過,返回步驟(K);(O)創(chuàng)建新的閉合序列樹節(jié)點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的孩子節(jié)點非空,說明pparent是頻 繁閉合序列的一個項目,令pparent.supi=Sp的支持值,把pparent加到 pparent_parent節(jié)點下。返回步驟(D);4.步驟(4)對步驟(3)得到的頻繁閉合序列進行分解得到所蘊含的所有規(guī)則, 當規(guī)則評估函數(shù)值大于最小可信值時,此規(guī)則為有效規(guī)則,用于指導高速緩存 數(shù)據(jù)預取。本發(fā)明是一種基于增量式閉合序列挖掘的高速緩存數(shù)據(jù)預取方法,相對于 己有的CMiner挖掘存儲系統(tǒng)閉合序列挖掘方法,具有的明顯的特點和優(yōu)點在于 能根據(jù)實時環(huán)境的變化,增量式的對輸入序列進行挖掘。無需維護大量候選 閉合序列,從而節(jié)省大量運行空間。提高了高速緩存的命中率有了 12%-25%的 提高。本發(fā)明具有普適性,易于廣泛應用于序列輸入串數(shù)據(jù)庫是動態(tài)更新的, 變化幅度小,頻率高的實時環(huán)境中。
圖1是高速緩存預取模塊在系統(tǒng)中的位置示意圖。 圖2是本發(fā)明的流程示意圖。圖3是增量式頻繁閉合序列挖掘CPU訪問內(nèi)存存取序列的流程示意圖。 圖4是實施例所生成的閉合序列樹圖。
具體實施方式
本發(fā)明的處理流程參見圖2所示,是應用于圖1中的高速緩存數(shù)據(jù)預取模塊 中的數(shù)據(jù)預取步驟中的。首先通過采集CPU向內(nèi)存請求的數(shù)據(jù)存取序列,將其 轉(zhuǎn)換為序列輸入數(shù)據(jù)庫,然后采用增量式閉合序列挖掘算法挖掘頻繁閉合序列, 提取出高速緩存數(shù)據(jù)預取規(guī)則,最后用于指導高速緩存的數(shù)據(jù)預取,從而提高 了高速緩存的命中率。下面結(jié)合圖2介紹本發(fā)明的處理流程1.采集實時記錄CPU請求訪問的文件系統(tǒng)中的邏輯塊號(例如FAT32為扇區(qū)所組成的簇)組成的序列,每一個文件系統(tǒng)的邏輯塊號為序列中的一個項 目;例如實時采集到的 CPU 訪問內(nèi)存存取序列為 CAABCABCBDCABCEABBCA}。2. 預處理設置窗口大小為5,對圖2中"采集"得到的CPU訪問內(nèi)存存 取序列,劃分為一個個大小為5的窗口,并存入輸入序列數(shù)據(jù)庫中,此時輸入 序列數(shù)據(jù)庫中有四條記錄,為(CAABC), {ABCBD}, {CABCE}, {ABBCA}。3. 訓練對圖2中"預處理"得到的序列輸入數(shù)據(jù)庫采用增量式的閉合序 列挖掘方法進行挖掘得到頻繁閉合序列集合。每當圖2中"預處理"有新的輸 入序列時,在已有的閉合序列挖掘的結(jié)果基礎上,結(jié)合新增輸入序列,增量式 挖掘新的頻繁閉合序列模式集合。下面結(jié)合圖3具體介紹圖2中的"訓練",具 體步驟如下(A) 設置min_sup (最小支持閾值)的初始值為2, TreeOld為空,TreeNew 為空。TreeOld和TreeNew均為一棵閉合序列樹,TreeOld為上一次挖掘的閉合 序列樹,TreeNew存儲本次挖掘結(jié)果的閉合序列樹。閉合序列樹是一課多叉樹, 樹節(jié)點ni是三元組<項目ii,支持值supi,子節(jié)點列表>,代表了構(gòu)成某個閉合 序列前綴的一個項目;ii表示對應的項目,當支持值supi>0則代表一個閉合序 列的結(jié)尾項目,supi表示相應的支持值,對應的閉合序列為從根節(jié)點到此節(jié)點的 路徑;每個節(jié)點都有一個以項目值為索引的哈希表指向其孩子節(jié)點,n0= <e, -1,...>表示根節(jié)點;如圖4為一棵閉合序列樹,圖中的樹節(jié)點n2,項目為A, 支持值為2,由于此樹節(jié)點的支持值大于零,從根節(jié)點到n2的路徑為n0nln2, 則對應的閉合序列為AA。(B) 計算SDB基于min—sup,長度為1的頻繁序列(1-sequence)。 l-sequence(C) 計算步驟(B)得到的l-s叫uence的偽投影數(shù)據(jù)庫, 一個l-sequence記 為fl,其偽投影數(shù)據(jù)庫記為SDB、(D) 包含(Dl)和(D2)兩個步驟,(Dl)如果步驟(B)得到的所有的l-sequence都處理完了,結(jié)束,否則執(zhí)行(D2)。(D2)取步驟(B)得到的一個未處理的fl,判斷此時TreeOld是否有效,如 果有效并且fl僅被舊輸入串數(shù)據(jù)庫所包含,不被新增輸入串所包含,繼續(xù)執(zhí)行, 否則執(zhí)行步驟(F)。(E) 如果以fl為路徑的節(jié)點在TreeOld中存在,將該節(jié)點從TreeOld中摘下,加入到TreeNew中。把該fl標記為已處理,返回步驟(D)。(F) 使用頻繁閉合序列挖掘算法Bide中的BackScan算法考察fl是否被其他 已經(jīng)挖掘的序列所包含,如果不包含,繼續(xù)執(zhí)行,如果包含了,無需冗余挖掘, 把fl標記為已處理,返回步驟(D)。(G) 創(chuàng)建新的閉合序列樹節(jié)點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^的樹節(jié)點,pparent_parent表示更上一次迭 代的樹節(jié)點。(A) 計算Sp_SDB基于min_sup的本地頻繁項集合,記為LFI。(B) 計算LFI中本地頻繁項中支持度等于Sp支持度的個數(shù),記為FEI。(C) 包含(Kl)和(K2)兩個步驟,(Kl)如果LFI中所有的本地頻繁項都已經(jīng)處理過了,執(zhí)行步驟(P),否 則執(zhí)行(K2)。(K2)取LFI中的一個未處理的本地頻繁項Li,將Sp和Li連接,記為Sp—i, 計算Sp一i的對于Sp—SDB的偽投影數(shù)據(jù)庫,記為SDBSp-'。(D) 判斷此時TreeOld是否有效,如果有效并且Sp一i僅被舊輸入串數(shù)據(jù)庫所包含,不被新增輸入串所包含,繼續(xù)執(zhí)行,否則執(zhí)行步驟(N)。(E) 如果以Sp一i為路徑的節(jié)點在TreeOld中存在,將該節(jié)點從TreeOld中 摘下,加入到pparent中。把Sp—i對應本地頻繁項Li標記未處理過,返回步驟(K)。(F) 使用頻繁閉合序列挖掘算法Bide中的BackScan算法考察Sp—i是否有 其他序列包含它,如果不包含,繼續(xù)執(zhí)行,如果包含了,無需冗余挖掘,把Sp一i 對應本地頻繁項Li標記未處理過,返回步驟(K)。(G) 創(chuàng)建新的閉合序列樹節(jié)點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的孩子節(jié)點非空,說明pparent是 頻繁閉合序列的一個項目,令pparent.supi-Sp的支持值,把pparent加到 pparent—parent節(jié)點下。返回步驟(D)。經(jīng)過上述步驟(A)到步驟(P)的計算之后,可得閉合序列樹如圖4所示。由圖4可知頻繁閉合序列集合為(AA:2,ABB:2,ABC:4,CA:3,CABC:2,CB:3)4.規(guī)則生成對圖2中"訓練"得到的頻繁閉合序列進行分解得到所蘊含的 所有規(guī)則,并通過規(guī)則評估函數(shù)對規(guī)則進行評估,去除不符合要求的規(guī)則,最 后得到高效的用于高速緩存數(shù)據(jù)預取的指導規(guī)則。對于ABC頻繁閉合序列,分 解為如下規(guī)則(A^B,A^C,B^C,AB+C)。對于A^B規(guī)則,其規(guī)則評估函數(shù)為 sup(B)/sup(力,其中sup(j)表示序列A的支持度為4, sup(S)表示序列B的支持度 也為4,貝ljsupOS)/sup(J)的值為100%。設置最小可信值為60%,則規(guī)則A^B評 估函數(shù)的值大于最小可信值,規(guī)則為有效規(guī)則,可用于指導高速緩存數(shù)據(jù)預取。 總之,本發(fā)明的試驗實施的實施例是成功的,實現(xiàn)了發(fā)明目的。
權利要求
1.一種基于增量式閉合序列挖掘的高速緩存數(shù)據(jù)預取方法,其特征在于是用于存儲系統(tǒng)的高速緩存數(shù)據(jù)預取模塊中的數(shù)據(jù)預取步驟中的,通過采集CPU向內(nèi)存請求的數(shù)據(jù)存取序列,將其轉(zhuǎn)換為序列輸入數(shù)據(jù)庫,采用增量式閉合序列挖掘算法挖掘頻繁閉合序列,提取出高速緩存數(shù)據(jù)預取規(guī)則,用于指導高速緩存的數(shù)據(jù)預取,提高高速緩存的命中率;(1)采集CPU訪問內(nèi)存存取序列實時記錄CPU請求訪問的文件系統(tǒng)中的邏輯塊號組成的序列,每一個文件系統(tǒng)的邏輯塊號為序列中的一個項目;(2)預處理處理步驟(1)得到的CPU訪問內(nèi)存存取序列,將步驟(1)得到的CPU訪問內(nèi)存存取序列劃分為固定長度的序列,此序列為一個窗口,此序列長度為窗口大小,一個窗口作為一條輸入序列,存入輸入序列數(shù)據(jù)庫中;(3)訓練對步驟(2)得到的序列輸入數(shù)據(jù)庫采用增量式的閉合序列挖掘方法進行挖掘得到頻繁閉合序列集合,每當步驟(2)有新的輸入序列時,在已有的閉合序列挖掘的結(jié)果基礎上,結(jié)合新增輸入序列,增量式挖掘新的頻繁閉合序列模式集合;(4)規(guī)則生成對步驟(3)得到的頻繁閉合序列進行分解得到所蘊含的所有規(guī)則,并通過規(guī)則評估函數(shù)對規(guī)則進行評估,去除不符合要求的規(guī)則,最后得到高效的用于高速緩存數(shù)據(jù)預取的指導規(guī)則。
2. 根據(jù)權利要求1所述的一種基于增量式閉合序列挖掘的高速緩存數(shù)據(jù)預 取方法,其特征在于步驟(2)設置一個計數(shù)器,初始值為零,步驟(l)每采集一個項目,計數(shù)器增加l,當計數(shù)器值等于窗口大小時,把步驟(l)采集得到的序列作為一條記錄存入序列輸入數(shù)據(jù)庫中,并清除步驟(i)的記錄,計數(shù)器重置為o,取下一條存入序列輸入數(shù)據(jù)庫的記錄,如此循環(huán)下去;
3. 根據(jù)權利要求1所述的一種基于增量式閉合序列挖掘的高速緩存數(shù)據(jù)預 取方法,其特征在于步驟(3)對步驟(2)得到的序列輸入數(shù)據(jù)庫,簡稱為SDB采 用增量式的閉合序列挖掘方法進行挖掘得到頻繁閉合序列集合的具體步驟如下(A) 設置最小支持閾值的初始值,最小支持閾值簡稱為min—sup,設置TreeOld 為空,TreeNew為空,TreeOld和TreeNew均為一棵閉合序列樹,TreeOId為上 一次挖掘的閉合序列樹,TreeNew存儲本次挖掘結(jié)果的閉合序列樹;(B) 計算SDB基于min—sup,長度為1的頻繁序列,記為l-s叫uence;(C) 計算步驟(B)得到的"sequence的偽投影數(shù)據(jù)庫, 一個l-s叫uence記為 fl,其偽投影數(shù)據(jù)庫記為SDB、(D) 如果步驟(B)得到的所有的l-sequence都處理完了,結(jié)束,否則取步驟(B) 得到的一個未處理的fl,判斷此時TreeOld是否有效,如果有效并且fl僅被舊 輸入串數(shù)據(jù)庫所包含,不被新增輸入串所包含,繼續(xù)執(zhí)行,否則執(zhí)行步驟(F);(E) 如果以fl為路徑的節(jié)點在TreeOld中存在,將該節(jié)點從TreeOld中摘下, 加入到TreeNew中,把該fl標記為已處理,返回步驟(D);(F) 使用頻繁閉合序列挖掘算法Bide中的BackScan算法考察fl是否被其他 己經(jīng)挖掘的序列所包含,如果不包含,繼續(xù)執(zhí)行,如果包含了,無需冗余挖掘, 把fl標記為已處理,返回步驟(D);(G)創(chuàng)建新的閉合序列樹節(jié)點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表示上次迭代的樹節(jié)點,pparent_parent表示更上一次迭 代的樹節(jié)點;(I) 計算Sp_SDB基于min_sup的本地頻繁項集合,記為LFI; (J)計算LFI中本地頻繁項中支持度等于Sp支持度的個數(shù),記為FEI; (K)如果LFI中所有的本地頻繁項都已經(jīng)處理過了,執(zhí)行步驟(P),否則取LFI中的一個未處理的本地頻繁項Li,將Sp和Li連接,記為Sp—i,計算Sp_i的 對于Sp_SDB的偽投影數(shù)據(jù)庫,記為SDB^';(L)判斷此時TreeOld是否有效,如果有效并且Spj僅被舊輸入串數(shù)據(jù)庫所 包含,不被新增輸入串所包含,繼續(xù)執(zhí)行,否則執(zhí)行步驟(N);(M)如果以Sp_i為路徑的節(jié)點在TreeOld中存在,將該節(jié)點從TreeOld中摘 下,加入到pparent中,把Sp—i對應本地頻繁項Li標記未處理過,返回步驟(K);(N)使用頻繁閉合序列挖掘算法Bide中的BackScan算法考察Sp—i是否有其他序列包含它,如果不包含,繼續(xù)執(zhí)行,如果包含了,無需冗余挖掘,把Spj 對應本地頻繁項Li標記未處理過,返回步驟(K);(O)創(chuàng)建新的閉合序列樹節(jié)點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的孩子節(jié)點非空,說明pparent是頻 繁閉合序列的一個項目,令pparent.supi=Sp的支持值,把pparent加到 pparent_parent節(jié)點下,返回步驟(D);
4.根據(jù)權利要求1所述的一種基于增量式閉合序列挖掘的高速緩存數(shù)據(jù)預 取方法,其特征在于步驟(4)對步驟(3)得到的頻繁閉合序列進行分解得到所蘊 含的所有規(guī)則,當規(guī)則評估函數(shù)值大于最小可信值時,此規(guī)則為有效規(guī)則,用 于指導高速緩存數(shù)據(jù)預取。
全文摘要
本發(fā)明公開了一種基于增量式閉合序列挖掘的高速緩存數(shù)據(jù)預取方法。通過收集中央處理器訪問內(nèi)存的數(shù)據(jù)存取序列,轉(zhuǎn)換為序列輸入數(shù)據(jù)庫,采用增量式閉合序列挖掘算法挖掘頻繁閉合序列,提取出高速緩存數(shù)據(jù)預取規(guī)則,用于指導高速緩存的數(shù)據(jù)預取,從而使數(shù)據(jù)塊之間具有語義聯(lián)系,數(shù)據(jù)預取智能化,提高了高速緩存的命中率。本發(fā)明能根據(jù)實時環(huán)境的變化,增量式的對輸入序列進行挖掘。無需維護大量候選閉合序列,從而節(jié)省大量運行空間。提高了高速緩存的命中率有了12%-25%的提高。本發(fā)明具有普適性,易于廣泛應用于序列輸入串數(shù)據(jù)庫是動態(tài)更新的,變化幅度小,頻率高的實時環(huán)境中。
文檔編號G06F12/08GK101266578SQ20081005985
公開日2008年9月17日 申請日期2008年2月22日 優(yōu)先權日2008年2月22日
發(fā)明者李山亭, 銘 蔡, 剛 陳 申請人:浙江大學