本發(fā)明涉及數(shù)據(jù)檢索技術(shù)領(lǐng)域,尤其涉及一種數(shù)據(jù)查找方法。
背景技術(shù):
計(jì)算機(jī)的硬件系統(tǒng)主要由CPU、存儲(chǔ)器、輸入輸出控制系統(tǒng)和各種外部設(shè)備組成。CPU是對(duì)信息進(jìn)行高速運(yùn)算處理的主要部件,其處理速度可達(dá)每秒幾億次以上操作,為了保證CPU可以迅速取得可處理數(shù)據(jù),所以在CPU內(nèi)部設(shè)有CPU緩存,用于與內(nèi)存交互。內(nèi)存主要用于儲(chǔ)存一些臨時(shí)文件,具有快速交互的特點(diǎn)。而硬盤(pán)具有斷電后也可以保存數(shù)據(jù)的特點(diǎn),所以其對(duì)數(shù)據(jù)的讀取和保存速度慢于內(nèi)存。
在大數(shù)據(jù)時(shí)代,系統(tǒng)進(jìn)行數(shù)據(jù)檢索一般是海量數(shù)據(jù)(萬(wàn)億字節(jié)級(jí)別,103倍于GB)。當(dāng)CPU在CPU緩存中無(wú)法查找到所需的數(shù)據(jù),則需要到內(nèi)存中重新加載數(shù)據(jù);當(dāng)內(nèi)存中也無(wú)法查找到所需的數(shù)據(jù),則需要到硬盤(pán)中查找,由此產(chǎn)生的數(shù)據(jù)交換行為是數(shù)據(jù)查找運(yùn)算速度的瓶頸之一。因此,CPU緩存與內(nèi)存間的數(shù)據(jù)交互、內(nèi)存與硬盤(pán)間的數(shù)據(jù)交互,極大的限制了CPU計(jì)算速度的發(fā)揮。
現(xiàn)有技術(shù)中,為了克服內(nèi)存與硬盤(pán)的交互速度上來(lái)帶的效能損失,采用了增加內(nèi)存數(shù)量或?qū)⒁徊糠纸M件放置于內(nèi)存上的方式來(lái)克服。但是由于算法問(wèn)題,目前,沒(méi)有很好的克服緩存與內(nèi)存間數(shù)據(jù)交互的問(wèn)題。本發(fā)明提供一種數(shù)據(jù)查找方法,克服CPU緩存容量有限的情況下很難一次加載全部數(shù)據(jù),因此需要多次從內(nèi)存讀取,進(jìn)而導(dǎo)致數(shù)據(jù)查找速度慢的問(wèn)題。
技術(shù)實(shí)現(xiàn)要素:
鑒于上述的分析,本發(fā)明旨在提供一種數(shù)據(jù)查找方法,用以解決現(xiàn)有方法需要多次從內(nèi)存讀取,進(jìn)而導(dǎo)致數(shù)據(jù)查找速度慢的問(wèn)題。
本發(fā)明的目的主要是通過(guò)以下技術(shù)方案實(shí)現(xiàn)的:
提供一種數(shù)據(jù)查找方法,所述數(shù)據(jù)采用分形樹(shù)原理來(lái)組織數(shù)據(jù)存儲(chǔ),方法包括以下步驟:
步驟S1.CPU接收數(shù)據(jù)讀取請(qǐng)求;
步驟S2.CPU在Cache Line中查找所請(qǐng)求的數(shù)據(jù);若在Cache line中命中,則讀取數(shù)據(jù),并查找結(jié)束;若在Cache Line中沒(méi)有命中,則通過(guò)數(shù)值比較,確定數(shù)據(jù)在CPU Cache中的取值空間位置,并進(jìn)行下一步;
步驟S3.根據(jù)CPU Cache中的取值空間位置,到CPU Cache中分形樹(shù)的相應(yīng)區(qū)間上,查找數(shù)據(jù);若在CPU Cache中命中,則讀取數(shù)據(jù),并查找結(jié)束;若在CPU Cache中沒(méi)有命中,則經(jīng)過(guò)數(shù)值比較,確定數(shù)據(jù)在內(nèi)存中的取值空間位置,并進(jìn)行下一步;
步驟S4.根據(jù)內(nèi)存中的取值空間位置,在內(nèi)存中分形樹(shù)的相應(yīng)區(qū)間中查找;若在內(nèi)存中命中,則讀取命中數(shù)據(jù),并查找結(jié)束;若在內(nèi)存中未命中,則進(jìn)一步到硬盤(pán)中進(jìn)行查找。
其中,所述采用分形樹(shù)原理來(lái)組織數(shù)據(jù)存儲(chǔ)是:
從第n+1個(gè)數(shù)開(kāi)始,以n+1為間距、等距選取的n個(gè)數(shù);以該n個(gè)數(shù)據(jù)組成根節(jié)點(diǎn),n個(gè)數(shù)將數(shù)軸劃分為n+1個(gè)取值空間,根節(jié)點(diǎn)的每個(gè)子節(jié)點(diǎn)對(duì)應(yīng)一個(gè)取值空間,將其余數(shù)放在對(duì)應(yīng)取值空間的節(jié)點(diǎn)中,且等距離、有序排列,以此建立一級(jí)分形樹(shù),該一級(jí)分形樹(shù)能覆蓋m=(n+1)2-1個(gè)值;再以一級(jí)分形樹(shù)中的m個(gè)數(shù)作為一組,采用上述方法建立二級(jí)分形樹(shù),并以此擴(kuò)展,建立第n級(jí)分形樹(shù);
選擇滿足Cache Line、CPU Cache及內(nèi)存存儲(chǔ)大小的對(duì)應(yīng)級(jí)別的分形樹(shù),分別存儲(chǔ)到Cache Line、CPU Cache及內(nèi)存中。
優(yōu)選地,所述根據(jù)Cache Line的存儲(chǔ)大小確定分形樹(shù)的基本節(jié)點(diǎn)中的數(shù)據(jù)數(shù)量。
優(yōu)選地,所述CPU Cache中的數(shù)據(jù)查找是逐級(jí)進(jìn)行的。
優(yōu)選地,所述在內(nèi)存中的數(shù)據(jù)查找也是逐級(jí)進(jìn)行的。
具體地,所述確定數(shù)據(jù)在CPU Cache或內(nèi)存中的可能存儲(chǔ)位置是指:確定所請(qǐng)求的數(shù)據(jù)在更高一級(jí)分形樹(shù)中的可能存儲(chǔ)位置。
具體地,CPU Cache中加載的分形樹(shù)的級(jí)別數(shù)是根據(jù)Cache Line中分形樹(shù)基本節(jié)點(diǎn)中的數(shù)據(jù)量、以及CPU Cache存儲(chǔ)量來(lái)決定。
本發(fā)明還提供一種制品,包括存儲(chǔ)指令的非暫態(tài)機(jī)器可讀介質(zhì),如果由機(jī)器執(zhí)行所述指令,所述指令用于使所述機(jī)器執(zhí)行上述方法。
本發(fā)明有益效果如下:采用分形樹(shù)原理存儲(chǔ)和查找數(shù)據(jù),在數(shù)據(jù)查找和存儲(chǔ)過(guò)程中,數(shù)據(jù)本身既作為數(shù)值存儲(chǔ),也起到了索引的作用。在數(shù)據(jù)比較時(shí),能進(jìn)一步確定數(shù)據(jù)在下一級(jí)分形樹(shù)中的位置,進(jìn)而能準(zhǔn)確的抓取所請(qǐng)求查找的數(shù)據(jù)及其周邊的數(shù)據(jù),實(shí)現(xiàn)了減少緩存和內(nèi)存之間的數(shù)據(jù)交互次數(shù)的目的,提高CPU處理速度。
本發(fā)明的其他特征和優(yōu)點(diǎn)將在隨后的說(shuō)明書(shū)中闡述,并且,部分的從說(shuō)明書(shū)中變得顯而易見(jiàn),或者通過(guò)實(shí)施本發(fā)明而了解。本發(fā)明的目的和其他優(yōu)點(diǎn)可通過(guò)在所寫(xiě)的說(shuō)明書(shū)、權(quán)利要求書(shū)、以及附圖中所特別指出的結(jié)構(gòu)來(lái)實(shí)現(xiàn)和獲得。
附圖說(shuō)明
附圖僅用于示出具體實(shí)施例的目的,而并不認(rèn)為是對(duì)本發(fā)明的限制,在整個(gè)附圖中,相同的參考符號(hào)表示相同的部件。
圖1為以3個(gè)數(shù)為一組建立一級(jí)分形樹(shù)的示例;
圖2示出了本發(fā)明數(shù)據(jù)查找的順序。
具體實(shí)施方式
下面結(jié)合附圖來(lái)具體描述本發(fā)明的優(yōu)選實(shí)施例,其中,附圖構(gòu)成本申請(qǐng)一部分,并與本發(fā)明的實(shí)施例一起用于闡釋本發(fā)明的原理。
根據(jù)本發(fā)明的一個(gè)具體實(shí)施例,公開(kāi)了一種數(shù)據(jù)查找方法,其中計(jì)算機(jī)中的數(shù)據(jù)采用分形樹(shù)原理進(jìn)行數(shù)據(jù)存儲(chǔ)。所述分形樹(shù)原理是:
假設(shè)以n個(gè)數(shù)據(jù)為一組,根據(jù)分行樹(shù)原理,建立數(shù)據(jù)之間的存儲(chǔ)關(guān)系。該n個(gè)有序樹(shù)將取值空間劃分成n+1個(gè),根據(jù)分形理論,建立一級(jí)分形樹(shù),該一級(jí)分形樹(shù)能覆蓋m=(n+1)2-1個(gè)值,分為m/n個(gè)組。其中,由n個(gè)數(shù)據(jù)組成的根節(jié)點(diǎn),即基本節(jié)點(diǎn),是從取第n+1個(gè)數(shù)開(kāi)始,以n+1為間距、等距選取的n個(gè)數(shù)。n個(gè)數(shù)將數(shù)軸劃分為n+1個(gè)取值空間。每個(gè)子節(jié)點(diǎn)對(duì)應(yīng)一個(gè)取值空間。其余數(shù)放在對(duì)應(yīng)取值空間的節(jié)點(diǎn)中,且等距離、有序排列。其中,若缺數(shù)則相應(yīng)位置為空。
進(jìn)一步的,以上述m個(gè)數(shù)為一組,根據(jù)分形理論,建立二級(jí)分形樹(shù),該二級(jí)分形樹(shù)可以覆蓋k=(m+1)2-1個(gè)數(shù),分為k/m組。
以此類(lèi)推,按照上述規(guī)則,分形樹(shù)可以進(jìn)一步向上擴(kuò)展為更高級(jí)別的分形樹(shù)。
上述n個(gè)數(shù)據(jù),可以作為一級(jí)分形數(shù)進(jìn)一步向下細(xì)化,作為以個(gè)數(shù)為一組所建立起的前一級(jí)分形樹(shù)的全部取值。以此類(lèi)推,進(jìn)一步細(xì)化,直到每組中數(shù)的個(gè)數(shù)到1為止。
計(jì)算機(jī)中的數(shù)據(jù)以上述分形樹(shù)原理建立數(shù)據(jù)存儲(chǔ),每一個(gè)節(jié)點(diǎn)內(nèi)部的數(shù)據(jù)既是本級(jí)分形樹(shù)的節(jié)點(diǎn),又是前一級(jí)分形樹(shù)覆蓋的數(shù)據(jù);節(jié)點(diǎn)內(nèi)部的數(shù)據(jù)不僅作為數(shù)據(jù)本身的存儲(chǔ)位置,數(shù)據(jù)本身還作為索引,通過(guò)數(shù)據(jù)大小比較能指示待查找的數(shù)據(jù)的存儲(chǔ)位置。根據(jù)數(shù)據(jù)大小比較,能夠確定數(shù)據(jù)的查找方向,進(jìn)而找到數(shù)據(jù)的存儲(chǔ)位置,起到了索引的目的。優(yōu)選的,數(shù)據(jù)以深度優(yōu)先進(jìn)行遍歷。
以下用實(shí)例進(jìn)行原理說(shuō)明:
以n取3為例,3個(gè)有序數(shù)數(shù)為一組建立一級(jí)分形樹(shù),可以覆蓋1~15這15個(gè)數(shù),具體分為5組。根節(jié)點(diǎn)(即基本節(jié)點(diǎn))中從第4個(gè)數(shù)(即4開(kāi)始),以4為間距,選取的4、8、12這3個(gè)數(shù),這3個(gè)數(shù)將取值空間劃分成4個(gè),具體是x<4,4<x<8,8<x<12,12<x。其余數(shù)按照取值空間,放入對(duì)應(yīng)取值空間的節(jié)點(diǎn)中。
表1示出了覆蓋的15個(gè)數(shù)的排列、組織和分組情況,分組分別記為h0、h1、h2、h3、h4。具體建立的分形樹(shù)如圖1。
表1分形樹(shù)示例
該15個(gè)數(shù)可以繼續(xù)向上擴(kuò)展:具體以該15個(gè)數(shù)為一組,建立二級(jí)分形樹(shù),進(jìn)一步能覆蓋255個(gè)數(shù),這255個(gè)數(shù)具體可以分為17組。
上述3個(gè)有序數(shù),可以向下細(xì)化,每一組中的3個(gè)數(shù)可以繼續(xù)采用上述分形原理再進(jìn)行分組,直到每組中數(shù)的個(gè)數(shù)到1為止。
基于上述分形樹(shù)原理存儲(chǔ)的數(shù)據(jù),數(shù)據(jù)查找是一個(gè)遞歸過(guò)程(如圖2)。首先,在第0組中查找,如果第0組中找到,則返回,完成搜索。如果沒(méi)有找到,則通過(guò)數(shù)值比較,定位出所要查找的數(shù)據(jù)位于哪一個(gè)取值空間,進(jìn)而得出該取值空間的組號(hào),到該編號(hào)所對(duì)應(yīng)的組中繼續(xù)查找。每組中所有的數(shù)值依然可以使用分形理論進(jìn)行下一次分形,當(dāng)組中只有一個(gè)元素時(shí),則直接比較組內(nèi)唯一元素和所要查找的數(shù)據(jù),如若相等則返回。
本實(shí)施例是以應(yīng)用于CPU的數(shù)據(jù)查找為例,基于上述分形樹(shù)的數(shù)據(jù)存儲(chǔ)方法進(jìn)行數(shù)據(jù)查找的方法示例。實(shí)施例具體采用CPU的最小緩存單位(Cache Line)為16data(64b),CPU Cache(CPU緩存)為128×103data(512kb),查找的數(shù)據(jù)范圍約7.0×109data(約28GB)為例進(jìn)行說(shuō)明。其中,data和字節(jié)轉(zhuǎn)換為1:4即1data=4byte。
實(shí)施例中,約7.0×109data(約28GB)的計(jì)算機(jī)數(shù)據(jù)均采用分形樹(shù)原理來(lái)組織數(shù)據(jù)存儲(chǔ),以Cache Line的16data為分形樹(shù)的基本節(jié)點(diǎn),則建立的各級(jí)分形樹(shù)覆蓋的數(shù)據(jù)如下:
(16+1)2-1=288data=1152b 一級(jí)分形樹(shù)
(288+1)2-1=83520data≈330kb 二級(jí)分形樹(shù)
(83520+1)2-1=6975590400data≈28GB 三級(jí)分形樹(shù)
選擇滿足Cache Line、CPU Cache及內(nèi)存存儲(chǔ)大小的對(duì)應(yīng)級(jí)別的分形樹(shù),分別存儲(chǔ)到Cache Line、CPU Cache及內(nèi)存中。故一級(jí)分形樹(shù)存儲(chǔ)在Cache Line中,二級(jí)分形樹(shù)存儲(chǔ)在CPU Cache中,三級(jí)分形樹(shù)存儲(chǔ)在內(nèi)存中。
數(shù)據(jù)查找方法,具體包括以下步驟:
步驟S1.CPU接收數(shù)據(jù)讀取請(qǐng)求。
步驟S2.CPU在Cache line中查找所請(qǐng)求的數(shù)據(jù);判斷是否在Cache line中命中,若在Cache line中命中,則CPU直接在Cache line中讀取數(shù)據(jù),供CPU使用,查找結(jié)束;若在Cache Line中沒(méi)有命中,則通過(guò)數(shù)值比較,確定數(shù)據(jù)在CPU Cache中的可能存儲(chǔ)位置,并進(jìn)行下一步。
本實(shí)施例CPU的最小緩存單位(Cache Line)為16data,因此以16個(gè)有序數(shù)作為一組,作為分形樹(shù)的基本節(jié)點(diǎn),但本發(fā)明并不局限于將分形樹(shù)的基本節(jié)點(diǎn)限定在16個(gè)數(shù)上,僅以16個(gè)數(shù)為例。上述Cache Line中加載的就是分形樹(shù)基本節(jié)點(diǎn)中的這一組16個(gè)有序數(shù)。若在Cache Line中加載的分形樹(shù)基本節(jié)點(diǎn)中沒(méi)有命中,則將請(qǐng)求的數(shù)據(jù)與Cache Line中的數(shù)據(jù)進(jìn)行比較,根據(jù)分形樹(shù)的存儲(chǔ)原理,確定所請(qǐng)求的數(shù)據(jù)位于Cache Line中哪兩個(gè)數(shù)據(jù)中間,進(jìn)而確定了所請(qǐng)求的數(shù)據(jù)在第一級(jí)分形樹(shù)中的取值空間位置,即確定了所請(qǐng)求的數(shù)據(jù)在CPU Cache中的可能存儲(chǔ)位置。
步驟S3.根據(jù)上一步驟中確定的可能存儲(chǔ)位置,到CPU Cache中分形樹(shù)的相應(yīng)位置上,查找所請(qǐng)求的數(shù)據(jù);若在CPU Cache中命中,則讀取數(shù)據(jù),以供CPU使用,查找結(jié)束;若在CPU Cache中沒(méi)有命中,則將所請(qǐng)求的數(shù)與CPU Cache中的數(shù)進(jìn)行數(shù)值大小比較,確定所請(qǐng)求的數(shù)所處的取值空間,進(jìn)而確定數(shù)據(jù)在內(nèi)存中的取值空間位置,即可能存儲(chǔ)位置,并進(jìn)行下一步。
具體的,CPU Cache中的數(shù)據(jù)查找是逐級(jí)進(jìn)行的,即首先根據(jù)可能存儲(chǔ)位置到上述基本節(jié)點(diǎn)組成的一級(jí)分形樹(shù)中查找,若命中則讀取數(shù)據(jù),若未命中,則通過(guò)數(shù)值比較,確定請(qǐng)求的數(shù)據(jù)在下一級(jí)分形樹(shù)(二級(jí)分形樹(shù))中的可能位置,再到下一級(jí)分形樹(shù)(二級(jí)分形樹(shù))中進(jìn)行查找,直到逐級(jí)查找到CPU Cache中加載的最高級(jí)分形樹(shù)后,仍未命中,則再通過(guò)數(shù)值比較,確定所請(qǐng)求的數(shù)據(jù)在內(nèi)存中更高一級(jí)分形樹(shù)中的可能存儲(chǔ)位置。
需要說(shuō)明的是,CPU Cache中加載的分形樹(shù)的級(jí)別可以根據(jù)Cache Line中存儲(chǔ)的分形樹(shù)基本節(jié)點(diǎn)中的數(shù)據(jù)量、以及CPU Cache存儲(chǔ)量來(lái)決定的。優(yōu)選的,以Cache Line的存儲(chǔ)量和CPU Cache的存儲(chǔ)量來(lái)共同決定。
實(shí)施例的具體示例如下,以Cache Line中的16個(gè)有序數(shù)作為分形樹(shù)的基本節(jié)點(diǎn),由其組成的一級(jí)分形樹(shù)能覆蓋(16+1)2-1=288個(gè)數(shù)據(jù)(288data);再以這288個(gè)數(shù)據(jù)作為一組,向上擴(kuò)展,組成二級(jí)分形樹(shù),能覆蓋(288+1)2-1=83520個(gè)數(shù)據(jù)(data),約等于8.3×103data(即8.3Kdata)。如果以這83520個(gè)數(shù)據(jù)作為一組,進(jìn)一步向上擴(kuò)展,組成三級(jí)分形樹(shù),該三級(jí)分形樹(shù)能覆蓋(83520+1)2-1=6975590400個(gè)數(shù)據(jù)(data),約28GB。
根據(jù)本實(shí)施例的CPU Cache的大小為512kb,根據(jù)1:4的換算關(guān)系,能存儲(chǔ)128×103data??梢?jiàn),CPU Cache中僅能加載二級(jí)分形樹(shù)所覆蓋的全部數(shù)據(jù),無(wú)法容納下三級(jí)分形樹(shù)所覆蓋的全部數(shù)據(jù)。因此,根據(jù)CPU Cache存儲(chǔ)量大小,選擇二級(jí)分形樹(shù)作為CPU Cache加載的最高級(jí)別分形樹(shù),CPU Cache中加載的二級(jí)分形樹(shù)覆蓋約8.3×103data。當(dāng)然,如果分形樹(shù)基本節(jié)點(diǎn)中的數(shù)據(jù)量不是16,而選擇其他數(shù)據(jù)量,則CPU Cache中加載的分形樹(shù)的最高級(jí)別也會(huì)相應(yīng)變化。
步驟S4.根據(jù)上一步中確定的可能存儲(chǔ)位置,在內(nèi)存中對(duì)應(yīng)分形樹(shù)位置中查找;若在內(nèi)存中命中,則讀取命中數(shù)據(jù),以供CPU使用,查找結(jié)束;若在內(nèi)存中未命中,則進(jìn)一步到硬盤(pán)中進(jìn)行查找。
在內(nèi)存中的數(shù)據(jù)查找也是逐級(jí)進(jìn)行的。即根據(jù)步驟S3中確定的存儲(chǔ)位置,首先到相比于CPU Cache中最高級(jí)分形樹(shù)更高一級(jí)別的分形樹(shù)中查找,若命中則讀取數(shù)據(jù),若未命中,則通過(guò)數(shù)值比較,確定請(qǐng)求的數(shù)據(jù)在下一級(jí)分形樹(shù)中的可能位置,并以此類(lèi)推。在本實(shí)施例中,最高到三級(jí)分形樹(shù)即可查找到對(duì)應(yīng)數(shù)據(jù),因此無(wú)需到四級(jí)分形樹(shù)中進(jìn)行查找。
根據(jù)本實(shí)施例的設(shè)計(jì),二級(jí)分形樹(shù)覆蓋的數(shù)據(jù)加載到CPU Cache中,三級(jí)分形樹(shù)覆蓋的數(shù)據(jù)加載到內(nèi)存中。本步驟在內(nèi)存中的,根據(jù)步驟S3中確定的位置,三級(jí)分形樹(shù)中進(jìn)行查找。
優(yōu)選的,假如CPU具有二級(jí)緩存,則所述方法按照一級(jí)緩存、二級(jí)緩存、內(nèi)存、硬盤(pán)的查找次序。
本發(fā)明所公開(kāi)的數(shù)據(jù)查找方法以用于計(jì)算機(jī)中緩存數(shù)據(jù)存儲(chǔ)、檢索方式的改進(jìn)方面為例。計(jì)算機(jī)的CPU在要讀取某一數(shù)據(jù)是,會(huì)先從Cache Line,再到CPU Cache中查找需要的數(shù)據(jù)。如果找到了則直接執(zhí)行,找不到的話則從內(nèi)存中找。當(dāng)需要從內(nèi)存中調(diào)取數(shù)據(jù)的情況發(fā)生時(shí),則發(fā)生了一次的Page Miss。由于CPU Cache的運(yùn)行速度比內(nèi)存快得多,故緩存的作用就是幫助硬件更快地運(yùn)行。而Page Miss越多就意味著要更多進(jìn)行內(nèi)存的讀取。這會(huì)顯著的降低計(jì)算機(jī)的運(yùn)算速度。采用本發(fā)明公開(kāi)的數(shù)據(jù)查找方法,通過(guò)分形原理存儲(chǔ)數(shù)據(jù)并查找數(shù)據(jù),能顯著降低Page Miss發(fā)生的次數(shù),提高CPU運(yùn)算速度,進(jìn)而提升計(jì)算機(jī)的運(yùn)算速度。但本發(fā)明不限于此,更廣泛的能用于CPU,GPU,F(xiàn)PGA,ASIC等所有基于馮諾依曼架構(gòu)計(jì)算單元。
實(shí)施例以Cache Line的大小為16data,CPU Cache大小為128×103data為例,當(dāng)搜索一個(gè)包含6.98×109data的內(nèi)存時(shí),在Cache Line中加載分形樹(shù)的基本節(jié)點(diǎn)中的16個(gè)數(shù)據(jù),CPU Cache中加載二級(jí)分形樹(shù)所包含的數(shù)據(jù),內(nèi)存中加載的數(shù)據(jù)包含在三級(jí)分形樹(shù)覆蓋的數(shù)據(jù)范圍內(nèi),則出現(xiàn)Page Miss的次數(shù)最多為1次,即需要到內(nèi)存中查找數(shù)據(jù)的詞數(shù)最多為1次。在同樣的情況下,采用線性二項(xiàng)樹(shù)的數(shù)據(jù)查找方法,則最多需要14次Page Miss。綜上例子所述,采用本發(fā)明的方法查找6.98×109data、約28G的數(shù)據(jù),最多發(fā)生1次Page Miss。
綜上所述,本發(fā)明實(shí)施例提供了一種數(shù)據(jù)查找方法,采用分形樹(shù)原理存儲(chǔ)和查找數(shù)據(jù),在數(shù)據(jù)查找和存儲(chǔ)過(guò)程中,引入了由數(shù)據(jù)取值空間確定數(shù)據(jù)存儲(chǔ)位置的想法,數(shù)據(jù)本身既作為數(shù)值存儲(chǔ),也起到了索引的作用。在數(shù)據(jù)比較時(shí),能進(jìn)一步確定數(shù)據(jù)在下一級(jí)分形樹(shù)中的位置,進(jìn)而能準(zhǔn)確的抓取所請(qǐng)求查找的數(shù)據(jù)及其周邊的數(shù)據(jù),如此能減少緩存和內(nèi)存之間的數(shù)據(jù)交互次數(shù),提高CPU處理速度。
本領(lǐng)域技術(shù)人員可以理解,實(shí)現(xiàn)上述實(shí)施例方法的全部或部分流程,可以通過(guò)計(jì)算機(jī)程序來(lái)指令相關(guān)的硬件來(lái)完成,所述的程序可存儲(chǔ)于計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中。其中,所述計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)為磁盤(pán)、光盤(pán)、只讀存儲(chǔ)記憶體或隨機(jī)存儲(chǔ)記憶體等。
某些操作可由硬件組件執(zhí)行,或者可具體化在機(jī)器可執(zhí)行或電路可執(zhí)行指令中,這些操作可用于使得和/或者導(dǎo)致機(jī)器、電路或硬件組件(例如,處理器、處理器的部分、電路等)利用執(zhí)行操作的指令被編程。也可以可選地由硬件和軟件的組合來(lái)執(zhí)行這些操作。處理器、機(jī)器、電路、或硬件可包括可用于執(zhí)行和/或處理指令且響應(yīng)于該指令存儲(chǔ)結(jié)果的專(zhuān)用或特定電路或者其他邏輯(例如,潛在地與固件和/或軟件組合的硬件)。
一些實(shí)施例包括制品(例如,計(jì)算機(jī)程序產(chǎn)品),該制品包括機(jī)器可讀介質(zhì)。該介質(zhì)可包括以機(jī)器可讀的形式提供(例如,存儲(chǔ))信息的機(jī)制。機(jī)器可讀介質(zhì)可提供指令或指令序列或者可在該機(jī)器可讀介質(zhì)上存儲(chǔ)了指令或指令序列,如果和/或當(dāng)由機(jī)器執(zhí)行該指令或指令序列,該指令或指令序列用于使該機(jī)器執(zhí)行和/或?qū)е略摍C(jī)器執(zhí)行本文中所公開(kāi)的一種或多種操作、方法、或技術(shù)。該機(jī)器可讀介質(zhì)可存儲(chǔ)或以其他方式提供執(zhí)行本發(fā)明的一個(gè)或多個(gè)實(shí)施例中所公開(kāi)方法的指令。
在一些實(shí)施例中,該機(jī)器可讀介質(zhì)可包括有形的和/或非暫態(tài)的機(jī)器可讀存儲(chǔ)介質(zhì)。例如,有形的和/或非暫態(tài)機(jī)器可讀存儲(chǔ)介質(zhì)可包括:軟盤(pán)、光存儲(chǔ)介質(zhì)、光盤(pán)、光學(xué)數(shù)據(jù)存儲(chǔ)設(shè)備、CD-ROM、磁盤(pán)、磁光盤(pán)、只讀存儲(chǔ)器(ROM)、可編程ROM(PROM)、可擦除可編程ROM(EPROM)、電可擦除可編程ROM(EEPROM)、隨機(jī)存取存儲(chǔ)器(RAM)、靜態(tài)RAM(SRAM)、動(dòng)態(tài)RAM(DRAM)、閃存、相變化存儲(chǔ)器、相變化數(shù)據(jù)存儲(chǔ)材料、非易失性存儲(chǔ)器、非易失性數(shù)據(jù)存儲(chǔ)設(shè)備、非暫態(tài)存儲(chǔ)器、或暫態(tài)數(shù)據(jù)存儲(chǔ)設(shè)備等。
合適機(jī)器的示例包括但不限于,CPU,GPU,F(xiàn)PGA,ASIC等所有基于馮諾依曼架構(gòu)計(jì)算單元。合適的機(jī)器的另一些示例包括,包含處理器、指令處理裝置、數(shù)字邏輯電路或集成電路的計(jì)算設(shè)備或其他電子設(shè)備。此類(lèi)計(jì)算設(shè)備和電子設(shè)備的示例包括但不限于,臺(tái)式計(jì)算機(jī)、膝上型計(jì)算機(jī)、筆記本計(jì)算機(jī)、平板計(jì)算機(jī)、上網(wǎng)本、智能電話、蜂窩電話、服務(wù)器、網(wǎng)絡(luò)設(shè)備(例如,路由器)、移動(dòng)網(wǎng)絡(luò)設(shè)備(MID)、媒體播放器、智能電視、上網(wǎng)機(jī)、機(jī)頂盒和視頻游戲控制器。
以上所述,僅為本發(fā)明較佳的具體實(shí)施方式,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到的變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。