一種基于雙體內(nèi)存系統(tǒng)的大數(shù)據(jù)實時排序處理器的制造方法
【專利摘要】本發(fā)明涉及一種基于雙體內(nèi)存系統(tǒng)的大數(shù)據(jù)實時排序處理器,可有效解決現(xiàn)有排序算法時間復(fù)雜度、空間復(fù)雜度高的問題,技術(shù)方案是,由Intel64位或AMD64位或IntelIA64架構(gòu)的CPU和雙體內(nèi)存系統(tǒng)組成,CPU和雙體內(nèi)存系統(tǒng)間通過數(shù)據(jù)總線、地址總線和控制總線連接,本發(fā)明采用兩個獨立內(nèi)存體之間在一個內(nèi)存讀寫周期內(nèi)依次雙向批量傳輸相對應(yīng)地址的存儲單元的數(shù)據(jù)的方法,來改進(jìn)現(xiàn)有排序算法的速度瓶頸,保證了本發(fā)明的方法在n個元素的有序表中檢索任一數(shù)據(jù)時的算法時間復(fù)雜度均為O(logn)、排序和檢索算法的空間復(fù)雜度為O(n),能夠保證海量數(shù)據(jù)的排序和檢索響應(yīng)的實時性、以及在本方法的基礎(chǔ)上保證大數(shù)據(jù)的增加、刪除、修改操作的實時性,易操作,速度快。
【專利說明】一種基于雙體內(nèi)存系統(tǒng)的大數(shù)據(jù)實時排序處理器
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種基于雙體內(nèi)存系統(tǒng)的大數(shù)據(jù)實時排序處理器及采用基于雙體內(nèi)存系統(tǒng)的大數(shù)據(jù)實時排序處理器的實時排序檢索及增刪改的方法。
【背景技術(shù)】
[0002]目前,計算機數(shù)據(jù)處理領(lǐng)域使用的排序算法,由于受到現(xiàn)有的線性單體內(nèi)存結(jié)構(gòu)的制約,各種排序算法在海量和大數(shù)據(jù)面前都有時間復(fù)雜度高、空間復(fù)雜度高、響應(yīng)實時性差的缺點。如插入排序算法的速度瓶頸是找到要插入的存儲位置后,最壞情況下要將所有的元素依次后移,這就使得插入排序算法的時間效率很低;平衡二叉搜索樹在排序時由于其結(jié)構(gòu)的特點要維持各結(jié)點間的鏈接指針,同樣要增加空間復(fù)雜度和算法本身的復(fù)雜性。如何解決現(xiàn)有排序算法時間復(fù)雜度、空間復(fù)雜度高的問題,是本領(lǐng)域技術(shù)人員困擾已久的問題。
【發(fā)明內(nèi)容】
[0003]針對上述情況,為克服現(xiàn)有技術(shù)之缺陷,本發(fā)明之目的就是提供一種基于雙體內(nèi)存系統(tǒng)的大數(shù)據(jù)實時排序處理器,可有效解決現(xiàn)有排序算法時間復(fù)雜度、空間復(fù)雜度高的問題。
[0004]本發(fā)明解決的技術(shù)方案是,一種基于雙體內(nèi)存系統(tǒng)的大數(shù)據(jù)實時排序處理器,由Intel 64位或AMD 64位或Intel IA64架構(gòu)的CPU和雙體內(nèi)存系統(tǒng)組成,CPU和雙體內(nèi)存系統(tǒng)間通過數(shù)據(jù)總線、地址總線和控制總線連接;
所述的雙體內(nèi)存系統(tǒng)由內(nèi)存體I和內(nèi)存體2組成,內(nèi)存體I和內(nèi)存體2分別都有n+1個存儲單元,這些存儲單元的地址編號為0,I, 2,…,η ;
內(nèi)存體I的i號地址存儲單元和內(nèi)存體2的i號地址存儲單元之間在批量傳輸控制信號線CE的控制下由單向數(shù)據(jù)線分別聯(lián)通,i=0, I, 2,3,…η ;
內(nèi)存體2的i號地址存儲單元和內(nèi)存體I的i+Ι號地址存儲單元之間在批量傳輸控制信號線Cl的控制下由單向數(shù)據(jù)線分別聯(lián)通;
內(nèi)存體2的i+Ι號地址存儲單元和內(nèi)存體I的i號地址存儲單元之間在批量傳輸控制信號線CD的控制下由單向數(shù)據(jù)線分別聯(lián)通;
雙體內(nèi)存系統(tǒng)中內(nèi)存體I的各存儲單元的數(shù)據(jù)并行傳輸?shù)絻?nèi)存體2的相同地址的存儲單元中的實現(xiàn)方法是:內(nèi)存體I的i號地址存儲單元和內(nèi)存體2的i號地址存儲單元的數(shù)據(jù)線通過三態(tài)門連接,在批量傳輸控制信號線CE的統(tǒng)一控制下,實現(xiàn)將內(nèi)存體I的各存儲單元的數(shù)據(jù)在一個內(nèi)存讀寫周期內(nèi)并行傳輸?shù)絻?nèi)存體2的同一地址的存儲單元中;
雙體內(nèi)存系統(tǒng)中內(nèi)存體2的地址范圍是[i,i+m]的連續(xù)多個存儲單元的數(shù)據(jù)并行傳輸?shù)絻?nèi)存體I的相應(yīng)地址范圍是[i+1,i+m+1]的各存儲單元中的實現(xiàn)方法是:內(nèi)存體2的k號地址存儲單元和內(nèi)存體I的k+Ι號地址存儲單元的單向數(shù)據(jù)線通過三態(tài)門連接,在批量傳輸控制信號線Cl的統(tǒng)一控制下,實現(xiàn)將內(nèi)存體2的地址范圍[i,i+m]的各存儲單元的數(shù)據(jù)在一個內(nèi)存讀寫周期內(nèi)并行傳輸?shù)絻?nèi)存體I的地址范圍[i+1,i+m+1]的各存儲單元中;其中,m為非負(fù)整數(shù);k=i, i+Ι,…,i+m;
雙體內(nèi)存系統(tǒng)中內(nèi)存體2的地址范圍是[i+1,i+m+1]的連續(xù)多個存儲單元的數(shù)據(jù)并行傳輸?shù)絻?nèi)存體I的相應(yīng)地址范圍是[i,i+m]的各存儲單元中的實現(xiàn)方法是:內(nèi)存體2的k+1號地址存儲單元和內(nèi)存體I的k號地址存儲單元的單向數(shù)據(jù)線通過三態(tài)門連接,在批量傳輸控制信號線CD的統(tǒng)一控制下,實現(xiàn)將內(nèi)存體2的地址范圍[i+1,i+m+1]的各存儲單元的數(shù)據(jù)在一個內(nèi)存讀寫周期內(nèi)并行傳輸?shù)絻?nèi)存體I的地址范圍[i,i+m]的各存儲單元中;其中,m為非負(fù)整數(shù);k=i, i+Ι,…,i+m。
[0005]一種采用基于雙體內(nèi)存系統(tǒng)的大數(shù)據(jù)實時排序處理器的實時排序檢索及增刪改的方法,包括以下步驟:
1)排序算法所用的有序數(shù)據(jù)表SeqList=(a0, a1; a2,......, aj在內(nèi)存體I中采用順序存儲結(jié)構(gòu)存儲,數(shù)據(jù)以升序順序自低地址向聞地址存儲;ao, a1; a2,......表不有序數(shù)據(jù)表SeqList中的各個數(shù)據(jù)元素,這里aQ彡S1彡a2彡......< aL,即aQ, a” a2,......,?單調(diào)增加;該有序數(shù)據(jù)表SeqList的長度Len=L+l ;其中,L為非負(fù)整數(shù);
2)新插入數(shù)據(jù)c到內(nèi)存體I中的有序數(shù)據(jù)表SeqList時,首先采用二分查找算法,找到c元素的插入點存儲單元的地址mid ;
3)在批量傳輸控制信號線CE的統(tǒng)一控制下,實現(xiàn)將內(nèi)存體I的各存儲單元的數(shù)據(jù)在一個內(nèi)存讀寫周期內(nèi)并行傳輸?shù)絻?nèi)存體2的同一地址的存儲單元中;
4)在批量傳輸控制信號線Cl的統(tǒng)一控制下,實現(xiàn)將內(nèi)存體2的地址范圍是[mid,mid+m]的各存儲單元的數(shù)據(jù)在一個內(nèi)存讀寫周期內(nèi)并行傳輸?shù)絻?nèi)存體I的地址范圍是[mid+1, mid+m+1]的各存儲單元中;其中,m=L-mid;
5)在CPU的寫內(nèi)存單元指令控制下,將數(shù)據(jù)c插入到內(nèi)存體I的地址為mid的存儲單元中;
6)當(dāng)有新數(shù)據(jù)插入有序數(shù)據(jù)表時,重復(fù)利用步驟2)至5)的操作,即可完成新數(shù)據(jù)的插入排序;
7)當(dāng)需要在η個元素的有序數(shù)據(jù)表中檢索任一數(shù)據(jù)時,利用二分查找算法即可,保證該查找算法的時間復(fù)雜度為O(1gn);
8)當(dāng)需要在η個元素的有序數(shù)據(jù)表中修改任一數(shù)據(jù)時,首先利用二分查找算法找到該數(shù)據(jù)所在的存儲單元,按要求修改即可,保證該修改算法的時間復(fù)雜度為O(1gn);
9)當(dāng)需要在η個元素的有序數(shù)據(jù)表中刪除任一數(shù)據(jù)時,首先利用二分查找算法找到該數(shù)據(jù)所在的存儲單元的地址mid,利用權(quán)利要求1所述的“雙體內(nèi)存系統(tǒng)中內(nèi)存體I的各存儲單元的數(shù)據(jù)并行傳輸?shù)絻?nèi)存體2的相同地址的存儲單元中的實現(xiàn)方法”,在批量傳輸控制信號線CE的統(tǒng)一控制下,實現(xiàn)將內(nèi)存體I的各存儲單元的數(shù)據(jù)在一個內(nèi)存讀寫周期內(nèi)并行傳輸?shù)絻?nèi)存體2的同一地址的存儲單元中;然后,按照權(quán)利要求1所述的“雙體內(nèi)存系統(tǒng)中內(nèi)存體2的地址范圍是[i+1,i+m+1]的連續(xù)多個存儲單元的數(shù)據(jù)并行傳輸?shù)絻?nèi)存體I的相應(yīng)地址范圍是[i,i+m]的各存儲單元中的實現(xiàn)方法”,在批量傳輸控制信號線CD的統(tǒng)一控制下,實現(xiàn)將內(nèi)存體2的地址范圍[mid+1,Len-1]的各存儲單元的數(shù)據(jù)在一個內(nèi)存讀寫周期內(nèi)并行傳輸?shù)絻?nèi)存體I的地址范圍[mid,Len-2]的各存儲單元中,同時,將有序數(shù)據(jù)表SeqList的長度Len減I ;該刪除算法的時間復(fù)雜度為O(1gn)。
[0006]本發(fā)明采用兩個獨立內(nèi)存體之間在一個內(nèi)存讀寫周期內(nèi)依次雙向批量傳輸相對應(yīng)地址的存儲單元的數(shù)據(jù)的方法,來改進(jìn)現(xiàn)有排序算法的速度瓶頸,使得在η個有序數(shù)據(jù)中插入I個新數(shù)據(jù)時需要為其騰出存儲單元而后移數(shù)據(jù)的時間復(fù)雜度為0(1),從而保證了本發(fā)明的方法在η個元素的有序表中檢索任一數(shù)據(jù)時的算法時間復(fù)雜度均為O (1gn)、排序和檢索算法的空間復(fù)雜度為O (η),能夠保證海量數(shù)據(jù)的排序和檢索響應(yīng)的實時性、以及在本方法的基礎(chǔ)上保證大數(shù)據(jù)的增加、刪除、修改操作的實時性,易操作,速度快,有良好的社會和經(jīng)濟效益。
【專利附圖】
【附圖說明】
[0007]圖1為本發(fā)明的雙體內(nèi)存系統(tǒng)的組成架構(gòu)圖,其中a為批量傳輸控制信號線CE連接示意圖;b為批量傳輸控制信號線Cl連接示意圖;c為批量傳輸控制信號線CD連接示意圖。
[0008]圖2為本發(fā)明的內(nèi)存體I到內(nèi)存體2批量復(fù)制數(shù)據(jù)示意圖。
[0009]圖3為本發(fā)明的內(nèi)存體2到內(nèi)存體I批量復(fù)制數(shù)據(jù)前的示意圖。
[0010]圖4為本發(fā)明的內(nèi)存體2的[l,n]各存儲單元到內(nèi)存體I的[0,n_l]各存儲單元批量復(fù)制數(shù)據(jù)前的示意圖。
[0011]圖5為本發(fā)明的內(nèi)存體2到內(nèi)存體I批量復(fù)制數(shù)據(jù)后的示意圖。
[0012]圖6為本發(fā)明的新插入的數(shù)據(jù)c到內(nèi)存體I中的有序數(shù)據(jù)表的示意圖。
[0013]圖7為本發(fā)明的控制內(nèi)存體2的[i,i+m]各存儲單元的數(shù)據(jù)并行傳輸?shù)絻?nèi)存體I的[i+1,i+m+1]各存儲單元的示意圖。
[0014]圖8為本發(fā)明的控制內(nèi)存體2的[i+1,i+m+1]各存儲單元的數(shù)據(jù)并行傳輸?shù)絻?nèi)存體I的[i, i+m]各存儲單元的示意圖。
【具體實施方式】
[0015]以下結(jié)合附圖對本發(fā)明的【具體實施方式】作進(jìn)一步詳細(xì)說明。
[0016]由圖1-8給出,本發(fā)明由Intel 64位或AMD 64位或Intel IA64架構(gòu)的CPU和雙體內(nèi)存系統(tǒng)組成,CPU和雙體內(nèi)存系統(tǒng)間通過數(shù)據(jù)總線、地址總線和控制總線連接;
所述的雙體內(nèi)存系統(tǒng)由內(nèi)存體I和內(nèi)存體2組成,內(nèi)存體I和內(nèi)存體2分別都有n+1個存儲單元,這些存儲單元的地址編號為0,I, 2,…,η ;
內(nèi)存體I的i號地址存儲單元和內(nèi)存體2的i號地址存儲單元之間在批量傳輸控制信號線CE的控制下由單向數(shù)據(jù)線分別聯(lián)通,i=0, I, 2,3,-η ;
內(nèi)存體2的i號地址存儲單元和內(nèi)存體I的i+Ι號地址存儲單元之間在批量傳輸控制信號線Cl的控制下由單向數(shù)據(jù)線分別聯(lián)通;
內(nèi)存體2的i+Ι號地址存儲單元和內(nèi)存體I的i號地址存儲單元之間在批量傳輸控制信號線CD的控制下由單向數(shù)據(jù)線分別聯(lián)通;
雙體內(nèi)存系統(tǒng)中內(nèi)存體I的各存儲單元的數(shù)據(jù)并行傳輸?shù)絻?nèi)存體2的相同地址的存儲單元中的實現(xiàn)方法是:內(nèi)存體I的i號地址存儲單元和內(nèi)存體2的i號地址存儲單元的數(shù)據(jù)線通過三態(tài)門連接,在批量傳輸控制信號線CE的統(tǒng)一控制下,實現(xiàn)將內(nèi)存體I的各存儲單元的數(shù)據(jù)在一個內(nèi)存讀寫周期內(nèi)并行傳輸?shù)絻?nèi)存體2的同一地址的存儲單元中; 雙體內(nèi)存系統(tǒng)中內(nèi)存體2的地址范圍是[i,i+m]的連續(xù)多個存儲單元的數(shù)據(jù)并行傳輸?shù)絻?nèi)存體I的相應(yīng)地址范圍是[i+1,i+m+1]的各存儲單元中的實現(xiàn)方法是:內(nèi)存體2的k號地址存儲單元和內(nèi)存體I的k+Ι號地址存儲單元的單向數(shù)據(jù)線通過三態(tài)門連接,在批量傳輸控制信號線Cl的統(tǒng)一控制下,實現(xiàn)將內(nèi)存體2的地址范圍[i,i+m]的各存儲單元的數(shù)據(jù)在一個內(nèi)存讀寫周期內(nèi)并行傳輸?shù)絻?nèi)存體I的地址范圍[i+1,i+m+1]的各存儲單元中;其中,m為非負(fù)整數(shù);k=i, i+Ι,…,i+m;
雙體內(nèi)存系統(tǒng)中內(nèi)存體2的地址范圍是[i+1,i+m+1]的連續(xù)多個存儲單元的數(shù)據(jù)并行傳輸?shù)絻?nèi)存體I的相應(yīng)地址范圍是[i,i+m]的各存儲單元中的實現(xiàn)方法是:內(nèi)存體2的k+1號地址存儲單元和內(nèi)存體I的k號地址存儲單元的單向數(shù)據(jù)線通過三態(tài)門連接,在批量傳輸控制信號線CD的統(tǒng)一控制下,實現(xiàn)將內(nèi)存體2的地址范圍[i+1,i+m+1]的各存儲單元的數(shù)據(jù)在一個內(nèi)存讀寫周期內(nèi)并行傳輸?shù)絻?nèi)存體I的地址范圍[i,i+m]的各存儲單元中;其中,m為非負(fù)整數(shù);k=i, i+Ι,…,i+m。
[0017]所述的內(nèi)存體I和內(nèi)存體2均為線性編址的內(nèi)存儲器,由如型號為金士頓 Kingston 8GB DDR3 1333 (KVR1333D3N9/8G)或金士頓 16GB DDR3 1600 REGECC(KVR16R11D4/16)的SDRAM同步動態(tài)隨機存儲器構(gòu)成,不僅限于上述處列出的型號,凡是和此處列出的兼容的內(nèi)存儲器均可使用;所述的Intel 64位或AMD 64位或Intel IA64架構(gòu)的 CPU 為市售產(chǎn)品,如型號為 Intel Xeon X5670、Intel Xeon X7500、AMD Opteron2435 (6-Core) > AMD Opteron 6140 ( 8-Core )> AMD Opteron 6344 或6348 (12-Core)>PowerXCell 8i的CPU,不僅限于上述處列出的架構(gòu),凡是和此處列出的兼容的CPU均可使用;
所述的批量傳輸控制信號線CE、批量傳輸控制信號線Cl和批量傳輸控制信號線CD,均為雙體內(nèi)存系統(tǒng)中寬度為一位的信號線,其接受CPU發(fā)來的高電位/低電位控制信號,從而控制雙體內(nèi)存系統(tǒng)中內(nèi)存體I和內(nèi)存體2之間各對應(yīng)存儲單元間的一次性同時批量數(shù)據(jù)的傳輸;
所述的雙體內(nèi)存系統(tǒng)采用帶電熱插拔方式,使得數(shù)據(jù)量接近雙內(nèi)存體的容量時,可以帶電熱插來擴展內(nèi)存體的容量,以保證排序處理器不因擴充內(nèi)存容量而停機;
所述的雙體內(nèi)存系統(tǒng)也采用非易失性NVDMM內(nèi)存,通過電池或超級電容在斷電后維持運行、轉(zhuǎn)移數(shù)據(jù),以保證內(nèi)存中的數(shù)據(jù)在斷電后不丟失;
所述的批量傳輸控制信號線Cl和批量傳輸控制信號線CE在同一控制信號的控制下分段加電,以提高加到三態(tài)門控制端的電壓的穩(wěn)定性。
[0018]雙體內(nèi)存系統(tǒng)中內(nèi)存體2的地址范圍是[i,i+m]的連續(xù)多個存儲單元的數(shù)據(jù)并行傳輸?shù)絻?nèi)存體I的相應(yīng)地址范圍是[i+1,i+m+1]的各存儲單元中的詳細(xì)實現(xiàn)方法如圖7所示。圖7中,i取值為p+3,m取值為2,P為一非負(fù)整數(shù)。具體步驟如下:
1)初始時,Tdl?Td5均置0,它們控制的三態(tài)門TSGl?TSG5處于高阻狀態(tài),使得內(nèi)存體I和內(nèi)存體2相應(yīng)單元之間的數(shù)據(jù)線Datal?Data5均處于截止(不導(dǎo)通)狀態(tài);
2)T1?T5均置1,它們控制的三態(tài)門處于導(dǎo)通狀態(tài),使得控制線Cl的信號能自上而下傳輸;
3)在內(nèi)存體I中,因為新插入的數(shù)據(jù)c的內(nèi)存單元地址為Ρ+3,所以將Τ5置0,使其控制的三態(tài)門截止,從而截斷控制線Cl的信號向下傳輸; 4)Td3置I,從而使其控制的三態(tài)門TSG3導(dǎo)通,也使得TSG4、TSG5導(dǎo)通,使得內(nèi)存體2的[P+3,p+5]單元的數(shù)據(jù)批量傳輸?shù)接覀?cè)內(nèi)存體I的[p+4,p+6]各對應(yīng)單元中,實現(xiàn)內(nèi)存體I中[P+3,p+5]地址單元的數(shù)據(jù)批量同時后移從而為新插入的數(shù)據(jù)騰出地址為ρ+3的存儲單元。
[0019]雙體內(nèi)存系統(tǒng)中內(nèi)存體2的地址范圍是[i+1,i+m+1]的連續(xù)多個存儲單元的數(shù)據(jù)并行傳輸?shù)絻?nèi)存體I的相應(yīng)地址范圍是[i,i+m]的各存儲單元中的詳細(xì)實現(xiàn)方法如圖8所示.這里i取值為P+3,m取值為I。具體步驟如下:
1)初始時,Td2?Td5均置0,它們控制的三態(tài)門TS⑶2?TS⑶5處于高阻狀態(tài),使得內(nèi)存體I和內(nèi)存體2相應(yīng)單元之間的數(shù)據(jù)線Data2?Data5均處于截止(不導(dǎo)通)狀態(tài);
2)T1?T5均置1,它們控制的三態(tài)門處于導(dǎo)通狀態(tài),使得控制線Cl的信號能自上而下傳輸;
3)在內(nèi)存體I中,當(dāng)前有序線性表的最后一個元素是e,其存儲單元地址是Len-1(這里等于P+5),所以將T5置0,使其控制的三態(tài)門截止,從而截斷控制線⑶的信號向下傳輸;
4)在內(nèi)存體I中,因為要刪除的數(shù)據(jù)c的內(nèi)存單元地址為p+3,Td4置I,從而使其控制的三態(tài)門TS⑶4導(dǎo)通,也使得TS⑶5導(dǎo)通,使得內(nèi)存體2的[p+4,p+5]單元的數(shù)據(jù)批量傳輸?shù)接覀?cè)內(nèi)存體I的[p+3,p+4]各對應(yīng)單元中,實現(xiàn)內(nèi)存體I中[p+4,p+5]地址單元的數(shù)據(jù)批量同時前移從而實現(xiàn)刪除原地址P+3的存儲單元中的數(shù)據(jù)C,接著,須將當(dāng)前線性有序表的長度Len減I。
[0020]一種采用基于雙體內(nèi)存系統(tǒng)的大數(shù)據(jù)實時排序處理器的實時排序檢索及增刪改的方法,包括以下步驟:
1)排序算法所用的有序數(shù)據(jù)表SeqList=(a0, a1; a2,......, aj在內(nèi)存體I中采用順序存儲結(jié)構(gòu)存儲,數(shù)據(jù)以升序順序自低地址向聞地址存儲;ao, a1; a2,......表不有序數(shù)據(jù)表SeqList中的各個數(shù)據(jù)元素,這里aQ彡S1彡a2彡......< aL,即aQ, a” a2,......,?單調(diào)增加;該有序數(shù)據(jù)表SeqList的長度Len=L+l ;其中,L為非負(fù)整數(shù);
2)新插入數(shù)據(jù)c到內(nèi)存體I中的有序數(shù)據(jù)表SeqList時,首先采用二分查找算法,找到c元素的插入點存儲單元的地址mid ;
二分查找算法如下:
S1: low = O。
[0021]S2: high = SeqList.Length -1。
[0022]S3: mid = -1。
[0023]S4:當(dāng) high - low <= I 時,轉(zhuǎn) S8 執(zhí)行。
[0024]S5: mid = ((low + high) - (low + high) % 2) / 2。
[0025]S6:如果 c > SeqList [mid],則 low = mid + 1,否則 high = mid -1;
S7 --轉(zhuǎn)S4執(zhí)行;
S8:如果 c <= SeqList [low],則mid = low;否則,如果 c >= SeqList [high],則mid =high + 1,否則,mid = high。然后,結(jié)束,此時,所得到的mid的值就是c元素的插入點存儲單元的地址。
[0026]3)在批量傳輸控制信號線CE的統(tǒng)一控制下,實現(xiàn)將內(nèi)存體I的各存儲單元的數(shù)據(jù)在一個內(nèi)存讀寫周期內(nèi)并行傳輸?shù)絻?nèi)存體2的同一地址的存儲單元中; 4)在批量傳輸控制信號線Cl的統(tǒng)一控制下,實現(xiàn)將內(nèi)存體2的地址范圍是[mid,mid+m]的各存儲單元的數(shù)據(jù)在一個內(nèi)存讀寫周期內(nèi)并行傳輸?shù)絻?nèi)存體I的地址范圍是[mid+1, mid+m+1]的各存儲單元中;其中,m=L-mid;
5)在CPU的寫內(nèi)存單元指令控制下,將數(shù)據(jù)c插入到內(nèi)存體I的地址為mid的存儲單元中;
6)當(dāng)有新數(shù)據(jù)插入有序數(shù)據(jù)表時,重復(fù)利用步驟2)至5)的操作,即可完成新數(shù)據(jù)的插入排序;
7)當(dāng)需要檢索任一數(shù)據(jù)時,利用二分查找算法即可,保證該查找算法的時間復(fù)雜度為O(1gn);
8)當(dāng)需要修改任一數(shù)據(jù)時,首先利用二分查找算法找到該數(shù)據(jù)所在的存儲單元,按要求修改即可,保證該修改算法的時間復(fù)雜度為O(1gn);
9)當(dāng)需要刪除任一數(shù)據(jù)時,首先利用二分查找算法找到該數(shù)據(jù)所在的存儲單元的地址mid,利用權(quán)利要求1所述的“雙體內(nèi)存系統(tǒng)中內(nèi)存體I的各存儲單元的數(shù)據(jù)并行傳輸?shù)絻?nèi)存體2的相同地址的存儲單元中的實現(xiàn)方法”,在批量傳輸控制信號線CE的統(tǒng)一控制下,實現(xiàn)將內(nèi)存體I的各存儲單元的數(shù)據(jù)在一個內(nèi)存讀寫周期內(nèi)并行傳輸?shù)絻?nèi)存體2的同一地址的存儲單元中;然后,按照權(quán)利要求1所述的“雙體內(nèi)存系統(tǒng)中內(nèi)存體2的地址范圍是[i+1, i+m+1]的連續(xù)多個存儲單元的數(shù)據(jù)并行傳輸?shù)絻?nèi)存體I的相應(yīng)地址范圍是[i,i+m]的各存儲單元中的實現(xiàn)方法”,在批量傳輸控制信號線CD的統(tǒng)一控制下,實現(xiàn)將內(nèi)存體2的地址范圍[mid+1,Len-Ι]的各存儲單元的數(shù)據(jù)在一個內(nèi)存讀寫周期內(nèi)并行傳輸?shù)絻?nèi)存體I的地址范圍[mid,Len-2]的各存儲單元中,同時,將有序數(shù)據(jù)表SeqList的長度Len減I ;該刪除算法的時間復(fù)雜度為O(1gn)。
[0027]下面結(jié)合附圖對本發(fā)明的優(yōu)選實施例進(jìn)行詳細(xì)闡述,以使本發(fā)明的優(yōu)點和特征能更易于被本領(lǐng)域技術(shù)人員理解,從而對本發(fā)明的保護范圍做出更為清楚明確的界定。
[0028]為了通過實施例來說明本發(fā)明的基于雙體內(nèi)存系統(tǒng)的大數(shù)據(jù)實時排序處理器,我們假定該實施例中所用到的有序數(shù)據(jù)表初始為空表(空表即是不含任何數(shù)據(jù)元素的表,空表的長度為零),下面以有序數(shù)據(jù)表中已有5個元素(a,b,d,e, f),現(xiàn)要插入新元素c為例,、再刪除一個元素a,來說明本發(fā)明的【具體實施方式】。
[0029]本實施例基于雙體內(nèi)存系統(tǒng)的大數(shù)據(jù)實時排序處理器的實施步驟如下:
O首先通過二分查找算法找到c元素的插入點存儲單元的地址2。
[0030]2)如圖2所示,將內(nèi)存體I中地址為O至η之間的內(nèi)存單元的數(shù)據(jù)在批量傳輸控制信號線CE為高電位信號的控制下傳輸?shù)接覀?cè)內(nèi)存單元2的相同地址的內(nèi)存單元中。
[0031]3)在批量傳輸結(jié)束后,批量傳輸控制信號線CE恢復(fù)為低電位信號,使內(nèi)存體I和內(nèi)存體2各存儲單元之間的數(shù)據(jù)線處于高阻狀態(tài),實現(xiàn)各存儲單元之間的隔離。
[0032]4)如圖3和圖5所示,在下一個讀寫周期內(nèi),在批量傳輸控制信號線Cl為高電位信號的控制下,將右側(cè)內(nèi)存體2中地址為2至4之間的內(nèi)存單元的數(shù)據(jù)批量傳輸?shù)阶髠?cè)內(nèi)存體I中地址為3至5之間的內(nèi)存單元中,實現(xiàn)自插入點2后各存儲單元的數(shù)據(jù)一次性后移I位,為新插入的數(shù)據(jù)c騰出了地址為2的存儲單元。
[0033]5)在批量傳輸結(jié)束后,批量傳輸控制信號線Cl恢復(fù)為低電位信號,使內(nèi)存體I和內(nèi)存體2各存儲單元之間的數(shù)據(jù)線處于高阻狀態(tài),實現(xiàn)各存儲單元之間的隔離。
[0034]6)如圖6所示,將新數(shù)據(jù)c插入到地址為2的存儲單元中,實現(xiàn)插入排序。排序后的結(jié)果如圖6所示。
[0035]7) 2100的海量有序數(shù)據(jù)中插入一個新數(shù)據(jù)最多比較100次即可找到其插入位置,而需要為新插入數(shù)據(jù)騰出存儲單元的數(shù)據(jù)逐個依次后移的操作由于采用了本發(fā)明的雙體內(nèi)存實現(xiàn)了在一個內(nèi)存讀寫周期內(nèi)一次性批量后移,從而保證了在η個元素的有序數(shù)據(jù)表中插入一個新數(shù)據(jù)時的排序算法的時間復(fù)雜度為O(1gn)。
[0036]8)當(dāng)要刪除元素a時,先通過二分查找算法找到a元素的存儲單元的地址0,然后,如圖2所示,將內(nèi)存體I中地址為O至η之間的內(nèi)存單元的數(shù)據(jù)在批量傳輸控制信號線CE為高電位信號的控制下傳輸?shù)接覀?cè)內(nèi)存單元2的相同地址的內(nèi)存單元中;在批量傳輸結(jié)束后,批量傳輸控制信號線CE恢復(fù)為低電位信號,使內(nèi)存體I和內(nèi)存體2各存儲單元之間的數(shù)據(jù)線處于高阻狀態(tài),實現(xiàn)各存儲單元之間的隔離;
如圖4所示,在下一個讀寫周期內(nèi),在批量傳輸控制信號線CD為高電位信號的控制下,將右側(cè)內(nèi)存體2中地址為I至η之間的各內(nèi)存單元的數(shù)據(jù)批量傳輸?shù)阶髠?cè)內(nèi)存體I中地址為O至η-1之間的各存單元中,實現(xiàn)自刪除點O號地址存儲單元起的各存儲單元的數(shù)據(jù)一次性均前移I個存儲單元,實現(xiàn)了對元素a的刪除同時保持了剩余的數(shù)據(jù)之間有序;
在批量傳輸結(jié)束后,批量傳輸控制信號線CD恢復(fù)為低電位信號,使內(nèi)存體I和內(nèi)存體2各存儲單元之間的數(shù)據(jù)線處于高阻狀態(tài),實現(xiàn)各存儲單元之間的隔離。
[0037]與現(xiàn)有技術(shù)相比,本發(fā)明具有以下優(yōu)點:
第一,由于本發(fā)明采用了雙體內(nèi)存系統(tǒng)的主存儲器,徹底解決了目前計算機系統(tǒng)中所用的單體線性內(nèi)存結(jié)構(gòu)對功能的制約,解決了現(xiàn)有各排序算法的時間復(fù)雜度高、空間復(fù)雜度高以及響應(yīng)不及時的缺點,使得數(shù)據(jù)規(guī)模為η的海量和大數(shù)據(jù)的排序復(fù)雜度為0(1)、檢索的時間復(fù)雜度為O(1gn)、空間復(fù)雜度為0(η),保證了海量數(shù)據(jù)排序和檢索響應(yīng)的實時性,可以用到所有需要對數(shù)據(jù)進(jìn)行實時排序和檢索應(yīng)用的商用業(yè)務(wù)場合,應(yīng)用范圍廣;
第二,基于本發(fā)明的排序處理器實現(xiàn)的檢索方法,利用雙體內(nèi)存避免了平衡二叉搜索樹必須使用指針來保存各結(jié)點之間鏈接關(guān)系的復(fù)雜性,更進(jìn)一步使得本發(fā)明在大數(shù)據(jù)的排序、檢索、增加、刪除和修改等操作方面的算法更加簡單且易于實現(xiàn)。
[0038] 申請人:要指出的是,以上所述僅是本發(fā)明的優(yōu)選實施方式,本發(fā)明的保護范圍并不僅局限于上述實施例,凡屬于本發(fā)明思路下的技術(shù)方案均屬于本發(fā)明的保護范圍。應(yīng)當(dāng)指出,對于本【技術(shù)領(lǐng)域】的普通技術(shù)人員來說,在不脫離本發(fā)明原理前提下的若干改進(jìn)和變化,在本質(zhì)上與本申請技術(shù)方案相同,這些改進(jìn)和變化仍應(yīng)視為本發(fā)明的保護范圍。
【權(quán)利要求】
1.一種基于雙體內(nèi)存系統(tǒng)的大數(shù)據(jù)實時排序處理器,其特征在于,由Intel 64位或AMD 64位或Intel IA64架構(gòu)的CPU和雙體內(nèi)存系統(tǒng)組成,CPU和雙體內(nèi)存系統(tǒng)間通過數(shù)據(jù)總線、地址總線和控制總線連接; 所述的雙體內(nèi)存系統(tǒng)由內(nèi)存體I和內(nèi)存體2組成,內(nèi)存體I和內(nèi)存體2分別都有n+1個存儲單元,這些存儲單元的地址編號為O,I, 2,…,η ; 內(nèi)存體I的i號地址存儲單元和內(nèi)存體2的i號地址存儲單元之間在批量傳輸控制信號線CE的控制下由單向數(shù)據(jù)線分別聯(lián)通,i=0, I, 2,3,-η ; 內(nèi)存體2的i號地址存儲單元和內(nèi)存體I的i+Ι號地址存儲單元之間在批量傳輸控制信號線Cl的控制下由單向數(shù)據(jù)線分別聯(lián)通; 內(nèi)存體2的i+Ι號地址存儲單元和內(nèi)存體I的i號地址存儲單元之間在批量傳輸控制信號線CD的控制下由單向數(shù)據(jù)線分別聯(lián)通; 雙體內(nèi)存系統(tǒng)中內(nèi)存體I的各存儲單元的數(shù)據(jù)并行傳輸?shù)絻?nèi)存體2的相同地址的存儲單元中的實現(xiàn)方法是:內(nèi)存體I的i號地址存儲單元和內(nèi)存體2的i號地址存儲單元的數(shù)據(jù)線通過三態(tài)門連接,在批量傳輸控制信號線CE的統(tǒng)一控制下,實現(xiàn)將內(nèi)存體I的各存儲單元的數(shù)據(jù)在一個內(nèi)存讀寫周期內(nèi)并行傳輸?shù)絻?nèi)存體2的同一地址的存儲單元中; 雙體內(nèi)存系統(tǒng)中內(nèi)存體2的地址范圍是[i,i+m]的連續(xù)多個存儲單元的數(shù)據(jù)并行傳輸?shù)絻?nèi)存體I的相應(yīng)地址范圍是[i+1,i+m+1]的各存儲單元中的實現(xiàn)方法是:內(nèi)存體2的k號地址存儲單元和內(nèi)存體I的k+Ι號地址存儲單元的單向數(shù)據(jù)線通過三態(tài)門連接,在批量傳輸控制信號線Cl的統(tǒng)一控制下,實現(xiàn)將內(nèi)存體2的地址范圍[i,i+m]的各存儲單元的數(shù)據(jù)在一個內(nèi)存讀寫周期內(nèi)并行傳輸?shù)絻?nèi)存體I的地址范圍[i+1,i+m+1]的各存儲單元中;其中,m為非負(fù)整數(shù);k=i, i+Ι,…,i+m; 雙體內(nèi)存系統(tǒng)中內(nèi)存體2的地址范圍是[i+1,i+m+1]的連續(xù)多個存儲單元的數(shù)據(jù)并行傳輸?shù)絻?nèi)存體I的相應(yīng)地址范圍是[i,i+m]的各存儲單元中的實現(xiàn)方法是:內(nèi)存體2的k+1號地址存儲單元和內(nèi)存體I的k號地址存儲單元的單向數(shù)據(jù)線通過三態(tài)門連接,在批量傳輸控制信號線CD的統(tǒng)一控制下,實現(xiàn)將內(nèi)存體2的地址范圍[i+1,i+m+1]的各存儲單元的數(shù)據(jù)在一個內(nèi)存讀寫周期內(nèi)并行傳輸?shù)絻?nèi)存體I的地址范圍[i,i+m]的各存儲單元中;其中,m為非負(fù)整數(shù);k=i, i+Ι,…,i+m。
2.根據(jù)權(quán)利要求1所述的基于雙體內(nèi)存系統(tǒng)的大數(shù)據(jù)實時排序處理器,其特征在于,所述的內(nèi)存體I和內(nèi)存體2均為線性編址的內(nèi)存儲器。
3.根據(jù)權(quán)利要求1所述的基于雙體內(nèi)存系統(tǒng)的大數(shù)據(jù)實時排序處理器,其特征在于,所述的批量傳輸控制信號線Cl和批量傳輸控制信號線CE在同一控制信號的控制下分段加電,以提高加到三態(tài)門控制端的電壓的穩(wěn)定性。
4.一種采用權(quán)利要求1所述的基于雙體內(nèi)存系統(tǒng)的大數(shù)據(jù)實時排序處理器的實時排序檢索及增刪改的方法,其特征在于,包括以下步驟: 1)排序算法所用的有序數(shù)據(jù)表SeqList=(a0, a1; a2,......, aj在內(nèi)存體I中采用順序存儲結(jié)構(gòu)存儲,數(shù)據(jù)以升序順序自低地址向聞地址存儲;ao, a1; a2,......表不有序數(shù)據(jù)表SeqList中的各個數(shù)據(jù)元素,這里aQ彡S1彡a2彡......< aL,即aQ, a” a2,......,?單調(diào)增加;該有序數(shù)據(jù)表SeqList的長度Len=L+l ;其中,L為非負(fù)整數(shù); 2)新插入數(shù)據(jù)c到內(nèi)存體I中的有序數(shù)據(jù)表SeqList時,首先采用二分查找算法,找到C元素的插入點存儲單元的地址mid ; 3)在批量傳輸控制信號線CE的統(tǒng)一控制下,實現(xiàn)將內(nèi)存體I的各存儲單元的數(shù)據(jù)在一個內(nèi)存讀寫周期內(nèi)并行傳輸?shù)絻?nèi)存體2的同一地址的存儲單元中; 4)在批量傳輸控制信號線Cl的統(tǒng)一控制下,實現(xiàn)將內(nèi)存體2的地址范圍是[mid,mid+m]的各存儲單元的數(shù)據(jù)在一個內(nèi)存讀寫周期內(nèi)并行傳輸?shù)絻?nèi)存體I的地址范圍是[mid+1, mid+m+1]的各存儲單元中;其中,m=L-mid; 5)在CPU的寫內(nèi)存單元指令控制下,將數(shù)據(jù)c插入到內(nèi)存體I的地址為mid的存儲單元中; 6)當(dāng)有新數(shù)據(jù)插入有序數(shù)據(jù)表時,重復(fù)利用步驟2)至5)的操作,即可完成新數(shù)據(jù)的插入排序; 7)當(dāng)需要在η個元素的有序數(shù)據(jù)表中檢索任一數(shù)據(jù)時,利用二分查找算法即可,保證該查找算法的時間復(fù)雜度為O(1gn); 8)當(dāng)需要在η個元素的有序數(shù)據(jù)表中修改任一數(shù)據(jù)時,首先利用二分查找算法找到該數(shù)據(jù)所在的存儲單元,按要求修改即可,保證該修改算法的時間復(fù)雜度為O(1gn); 9)當(dāng)需要在η個元素的有序數(shù)據(jù)表中刪除任一數(shù)據(jù)時,首先利用二分查找算法找到該數(shù)據(jù)所在的存儲單元的地址mid,利用權(quán)利要求1所述的“雙體內(nèi)存系統(tǒng)中內(nèi)存體I的各存儲單元的數(shù)據(jù)并行傳輸?shù)絻?nèi)存體2的相同地址的存儲單元中的實現(xiàn)方法”,在批量傳輸控制信號線CE的統(tǒng)一控制下,實現(xiàn)將內(nèi)存體I的各存儲單元的數(shù)據(jù)在一個內(nèi)存讀寫周期內(nèi)并行傳輸?shù)絻?nèi)存體2的同一地址的存儲單元中;然后,按照權(quán)利要求1所述的“雙體內(nèi)存系統(tǒng)中內(nèi)存體2的地址范圍是[i+1,i+m+1]的連續(xù)多個存儲單元的數(shù)據(jù)并行傳輸?shù)絻?nèi)存體I的相應(yīng)地址范圍是[i,i+m]的各存儲單元中的實現(xiàn)方法”,在批量傳輸控制信號線CD的統(tǒng)一控制下,實現(xiàn)將內(nèi)存體2的地址范圍[mid+1,Len-1]的各存儲單元的數(shù)據(jù)在一個內(nèi)存讀寫周期內(nèi)并行傳輸?shù)絻?nèi)存體I的地址范圍[mid,Len-2]的各存儲單元中,同時,將有序數(shù)據(jù)表SeqList的長度Len減I ;該刪除算法的時間復(fù)雜度為O(1gn)。
【文檔編號】G06F13/16GK104199895SQ201410423394
【公開日】2014年12月10日 申請日期:2014年8月26日 優(yōu)先權(quán)日:2014年8月26日
【發(fā)明者】唐國良, 王紅霞, 劉寧, 王燕玲, 張銀麗, 朱紅磊, 李瑞昌, 趙春霞, 姜姍, 楊楓, 宋學(xué)坤, 王林景 申請人:河南中醫(yī)學(xué)院