一種用以建構人工智能計算機的平行硬件搜索系統的制作方法
【專利摘要】本發明將現有計算機搭配一種平行硬件搜索系統,用以建構大眾負擔得起的人工智能計算機。這樣的計算機可被視為一種圖靈機,使用執行人工智能的邏輯推理方式來取代傳統計算機依序處理程序指令的方式。本發明提供的平行硬件搜索系統采用平行化及硬件化的虛擬B樹搜索、階層分頁與哈希等技術來處理大量數據。此系統已被成功地建立在一張PCIE適配卡上,主要包含:一顆Xilinx的Kintex7FPGA芯片及兩個DDR3內存模塊。FPGA芯片中包含:32個32位處理器單元、一個PCIE控制器、一個搜索/刪除/插入控制器、兩個DRAM控制器。
【專利說明】一種用以建構人工智能計算機的平行硬件搜索系統
【技術領域】
[0001]本發明涉及一種平行硬件搜索系統,特別涉及一種用以建構人工智能計算機的平行硬件搜索系統。
【背景技術】
[0002]在喬姆斯基階層(Chomsky hierarchy)的定義中,目前使用于計算器的語言文法被定義為無關上下文(context-free),而圖靈機(Turing Machine)則被定義為最高階的文法。不同于現今計算器依序處理程序指令的方式,PROLOG語言每一步驟都需要搜索和處理horn clause (rule或fact),以用于執行人工智能的邏輯推理,因此,搜索成為這種語言最大的瓶頸。
[0003]20世紀80年代,日本政府提出第五代計算機研究計劃,PROLOG被用作這個計劃的主要語言。在2011年,IBM的超級計算器“WATSON”已經被證明比人類更聰明。云端計算技術被用來解決PROLOG的搜索問題。WATSON在網絡上包含了將近3000臺服務器,蘋果計算機公司的Siri則將此技術進一步應用于日常生活,唯有跨國大企業才有能力擁有如此龐大又昂貴的計算器系統。機器人技術近年來有很好的進展。然而,設計一個大眾負擔得起的人工智能計算機系統,以促進機器人產業仍然是一個具有挑戰性的任務。
【發明內容】
[0004]本發明提供了一種用以建構人工智能計算機的平行硬件搜索系統,用于解決PROLOG的搜索問題。
[0005]本發明提供的用以建構人工智能計算機的平行硬件搜索系統,包括:
[0006]若干個處理器單元(PU),假設處理器單元的個數為m,連接m個BRAM單元及一跨處理器單元邏輯電路(Inter Processing Unit Logic),處理器單元用于處理與其有連接關系的BRAM單元的數據,跨處理器單元邏輯電路用于實現處理器單元之間的邏輯連接功倉泛;
[0007]—個PCIE接口控制器,用以連接用以建構人工智能計算機的平行硬件搜索系統及一外部計算機,并接收外部計算機發出的指令;
[0008]一個搜索/刪除/插入控制器,用以連接處理器單元及BRAM單元,接收外部計算機的指令進行搜索/刪除/插入運算;其中,m個BRAM單元連接外部的若干個DRAM控制器,并接收來自若干個DRAM控制器的數據。
[0009]進一步的,本發明提供的用以建構人工智能計算機的平行硬件搜索系統用于建構人工智能計算機。
[0010]進一步的,本發明提供的用以建構人工智能計算機的平行硬件搜索系統通過一界面與一計算機連接,用以建構人工智能計算機的平行硬件搜索系統運作時,使計算機語言文法從無關上下文(Context Free)層次提升至圖靈機(Turing Machine)層次。
[0011]進一步的,本發明提供的用以建構人工智能計算機的平行硬件搜索系統使用階層分頁(Hierarchical Page Table)結構處理大量記錄(record),大量記錄被劃分為若干個資料頁以縮減每頁中的記錄數量,并減少高速內存(cache)的大小以及傳輸和處理每一頁的時間,并增加DRAM或通用內存的單元數以增加數據傳輸速率。
[0012]進一步的,本發明提供的用以建構人工智能計算機的平行硬件搜索系統從BRAM單元到DRAM單元或由DRAM單元到BRAM單元中執行五種不同的運算,五種不同的運算包括:搜索、刪除、插入、傳輸數據,并以平行處理的方式進行,與處理器單元的總數量無關。
[0013]進一步的,本發明提供的用以建構人工智能計算機的平行硬件搜索系統通過搜索的方式進行刪除和插入運算,若干個處理器單元在記錄數量相對小的數據頁中平行執行左移或右移動作,并保持頁內所有記錄的排序和完美一致性。
[0014]進一步的,本發明提供的用以建構人工智能計算機的平行硬件搜索系統使用哈希技術,將大型的階層分頁分割成若干個小型的階層分頁,以增加搜索效能并使哈希桶(HASHBUCKET)內每頁的資料量大小一致。
[0015]進一步的,本發明提供的用以建構人工智能計算機的平行硬件搜索系統處理的記錄需具有不同于該頁其他記錄的搜索值,多個對象有相同的搜索值時,其中一對象指針指向一個包含復數個指針的數組對象,數據對象通過該數組一一被讀取。
[0016]進一步的,本發明提供的用以建構人工智能計算機的平行硬件搜索系統使用四個無符號數(Unsigned number)公式仿真虛擬B樹結構,四個無符號數公式分別為一第一公式,一第二公式,一第三公式及一第四公式,四個無符號數公式由DLB推導而來,DLB為搜索范圍的下限位置減一的位置,假設處理器單元總數為2k,其中k為一整數,除法使處理器單元位置左移,四個無符號數公式在一個時鐘周期之內處理完成,其中,四個無符號數公式分別表示如下:
[0017]第一公式:由DLB尋找休息狀態處理器單元的索引值,公式為:
[0018]RPindex=mod (DLB, m);
[0019]第二公式:Pindex為m個處理器單元被指定的由I至m的固定索引值,其代表路徑值由虛擬B樹的層別為奇數或偶數決定,計算公式為:
[0020]PATH=RPindex-Pindex (當 LEVEL 值為奇數時);
[0021]PATH=Pindex-PPindex (當 LEVEL 值為偶數時);
[0022]第三公式:搜索范圍切割成m-Ι個大小相同的數據區塊,BlockSize為數據區塊的大小,每一個數據區塊中最大位置的計算公式為:
[0023]locat1n=dlb + PATH*B1ckSize;
[0024]第四公式:取出已知位置所代表的搜索值,并與標準值比較,RecordSize為頁中記錄的大小,搜索值的物理地址公式為:
[0025]PAddress=LOCAT1N*RecordSize/m。
[0026]進一步的,本發明提供的用以建構人工智能計算機的平行硬件搜索系統中的搜尋方法在至多L=1gnrlN個數據搜尋循環內完成該頁數據的搜尋,其中,處理器單元的個數為m,而N為此頁中記錄的個數,搜索由B樹結構的最上層LEVEL=L開始執行循環的步驟進行數據搜尋,此時DLB的初始值設定為0,搜索范圍在每一層不斷被縮減成原來范圍的I/(m-Ι),一直找到最底層LEVEL=I時即完成搜索,每一循環執行包括以下步驟:
[0027](I)、每一處理器單元用第一公式算出虛擬B樹中此層休息狀態處理器單元的索引值;
[0028](2)、每一處理器單元用第二公式算出虛擬B樹中此層其代表的路徑值,休息狀態處理器單元的路徑值=0,其余m-Ι個工作狀態處理器單元的代表路徑值分別為I至m-Ι ;
[0029](3)、虛擬B樹中此層的搜索范圍被m-Ι個工作狀態處理器單元切割成m_l個數據區塊,每一工作狀態處理器單元用第三公式算出在虛擬B樹中其數據區塊中最大位置值,處理器單元由此位置的記錄找到用以比較的搜索值;
[0030](4)、每一工作狀態處理器單元用第四公式將上步驟的位置值轉換成搜索值在內存的物理地址;
[0031](5)、工作狀態處理器單元取出已知位置所代表的搜索值,并與標準值比較;及
[0032](6)、跨處理器單元邏輯電路得知搜索值介于其中兩個工作處理器單元之間,且搜索值較小的處理器單元的位置設定為下次循環的DLB值,將此DLB值廣播至所有處理器單元,然后進入下一個循環的數據搜尋。
[0033]于本發明的平行硬件搜索系統的實施例中,使用32個處理器單元(PU)進行搜索,這些主要任務是執行四個數學公式來完成虛擬B-樹搜尋。階層分頁結構被用以有效地實現大容量數據搜索,如圖1所示,大型數據分割成許多窗體結構的頁(page),且每頁的大小不超過312筆記錄,因此搜尋一頁的比較數不超過二,階層分頁結構之階層數為三時,由上層至下層取出3頁搜索,搜索316 (=0.8875X 19)筆記錄需要6個比較數。如果再結合哈希技術且哈希共有314個桶(buckets),則平均比較數是2。目前的計算器使用二進制搜索法(binary search),6個比較數只能搜索63 (=26_1)筆記錄。本發明的主要搜索硬件模塊已成功地建立在Xilinx的Kintex7芯片中,有效地解決PROLOG的搜索問題,因此計算器語言文法從無關上下文升級到圖靈機。
[0034]本發明解決了 PROLOG語言長期存在的搜索問題。由于PROLOG語言具備了圖靈機完整的特性,因此插入本發明的平行硬件搜索系統適配卡的計算機具備人工智能功能,可被視為一種圖靈機。數學上可證明,對任何處理器單元總數量,本發明的方法全部可以真正地平行處理。
【專利附圖】
【附圖說明】
[0035]為了詳細地了解本發明上述的參考特性,可參考實施例來獲得,其某些實施例繪示在附加圖中。然而,需要注意的是,附加圖僅繪示本發明典型的實施例,且因此其并不會限制其范圍,本發明可容許其他等效的實施例。
[0036]圖1為本發明一實施例中使用階層分頁結構來處理大量數據的示意圖;
[0037]圖2為本發明一實施例中包含平行硬件搜索系統的計算機架構的示意圖;
[0038]圖3為本發明一實施例中平行硬件搜索系統分配961筆記錄給32個處理器單元的不意圖;
[0039]圖4為用數學公式在圖4的數據進行搜索時所推演出的虛擬B樹的示意圖;
[0040]圖5為本發明一實施例中平行硬件搜索系統使用32個處理器單元進行搜索的時序不意圖。
[0041]附圖標記說明:02_平行硬件搜索系統;021_處理器單元(PU) ;022_跨處理器單元邏輯電路;023-DRAM單元;024-BRAM 單元((FPGA 中的 DUAL PORT RAM)單元);025_PCIE控制單元;026-個人計算機(PC) ;027-搜索/刪除/插入控制器;028-DRAM控制單元。
【具體實施方式】
[0042]于一實施例中,本發明的搜索系統使用階層分頁結構以有效地實現大容量數據的搜索。本發明中,可完全使用純硬件來實現搜索操作,四種數學公式被用來仿真虛擬的B-樹結構,而每一個公式都可在一個時鐘周期內執行完成。
[0043]本發明的搜索硬件模塊,成功地建立在Xilinx的Kintex7芯片中,硬件模塊包含32個處理器單元(PU)、一個PCIE控制器、一個搜索/刪除/插入控制器、兩個DRAM控制器,而每一個處理器單元一次可以處理32個數據位,這種架構可有效的解決PROLOG的搜索問題,因此,目前計算器的主要語言文法可從無關上下文的層次提升到圖靈機的層次。
[0044]首先參考圖1,圖1為本發明的實施例中使用階層分頁結構來處理大量數據的示意圖。由圖1可知,處理器單元總數為m=32,且一個處理器單元必須進入休息狀態,本發明的方法中的每一頁的最大記錄數為961 (=31*31)。因此,搜索一頁不會超過兩個比較數。每筆記錄包含一個搜索值的區段和對象指針(object pointer)區段。搜索值的大小可以達到一百多bytes。
[0045]圖2為本發明的實施例中包含平行硬件搜索系統的計算機架構示意圖。此實施例中包含平行硬件搜索系統02,其中,各個處理器單元021通過跨處理器單元邏輯電路022相互連接溝通,每一頁的數據通過本發明平行硬件搜索系統02的DRAM控制單元028被儲存在圖2中的DRAM單元023。在圖2中,BRAM為FPGA芯片中提供的DUAL PORT RAM內存可存取32個數據位,于各個BRAM單元024 (BRAMpBRAM2……BRAM32)中,頁的記錄可以被儲存在DRAM,或從DRAM取出頁中的記錄,然后分發到32個BRAM單元024以進行搜尋、刪除、插入運算,而且增加DRAM單元數可加快頁的傳輸時間。
[0046]通過PCIE (可用USB或SATA)控制單元025,個人計算機(PC) 026可從硬盤將一頁數據傳送到BRAM單元024,也可收集或修改在BRAM單位的該頁數據。個人計算機026可以經由PCIE控制單元025下指令給搜索/刪除/插入控制器027及DRAM控制單元028,依指令執行5種不同的運算:搜索、刪除、插入、傳輸數據,從BRAM到DRAM、或由DRAM到BRAM。
[0047]圖3為本發明的一實施例中平行硬件搜索系統依排序大小的順序分配961筆記錄給32個處理器單元的示意圖。記錄的位置(locat1n)被用來代表每一筆記錄,這個位置是根據記錄的搜索值在頁中排序后產生的名次。在每列中的記錄被儲存在與每一個處理器單元有連接關系的BRAM單元。圖4為用四個無符號數的公式在圖3的數據結構進行搜索時所推演出來的虛擬B樹的示意圖。如果處理器單元數為2k,其中k是整數,因此除法可以使用左移位來實現,每一個公式可以因此在一個時鐘周期之內處理完成。
[0048]處理器單元的指針用Pindex來表示,32個處理器單元的Pindex值為從I到32,并且PUtl被視為TO32。于本發明中,用已知位置即可算出負責此筆記錄的處理器單元的Pindex值,其公式為:Pindex=mod(LOCAT1N, m)。最初的搜索范圍是從位置I到位置961,因此下界中的位置被定義為LowerBound=I,并且上界的位置被定義為UpperBound=961, DLB被定義為LowerBound-Ι且處理此筆記錄的處理器單元將進入休息狀態,休息狀態的處理器單元其指數被定義為RPindeX=mod(DLB,m)。在樹結構的每一個層(LEVEL)中,搜索范圍被劃分成m-Ι個數據區塊(Block),數據區塊的大小定義為BlockSize =BlockSize= (m-1) level^1,其中 LEVEL 為樹結構的層別。當 LEVEL=2 時,BlockSize 為 31。當 LEVEL=I 時,BlockSize為I。所有BlockSize的值已被預先儲存在系統中。
[0049]如圖4所示,搜索開始時最上層為LEVEL=2,所以BlockSize為31,而DLB的初始值被指定為0,由此可知PU32進入休息狀態,PU31-PU1的PATH值分別為1-31,其LOCAT1N值分別為31,62,…,961。搜索值與標準值(criteria)相比后,跨處理器單元邏輯電路可得知標準值是介于PU26的L0CAT10N=186和PU25的L0CAT10N=217之間,因此,下次循環的DLB值為較小的LOCAT1N值,所以DLB=186且PU26將進入休息狀態。接著,進行搜索B樹的最底層(LEVEL=I)且BlockSize為1,搜索范圍縮減成原來范圍的1/31,即范圍為L0CAT10N187-217,PU26以外的31個處理器單元再搜索一次就可得知結果,并將其對象指針儲存于緩存器D04。
[0050]圖5為本發明一實施例中平行硬件搜索系統使用32個處理器單元進行搜索頁中961筆記錄的時序示意圖。于本實施例中,處理器單元需要做兩次比較,而且記錄長度(Record Size)為四個32位,其中搜索值長度為三個32位,對象指針長度為一個32位。當start=’I’時搜索開始,并在start=’O’時完成,共需要兩個循環。這個時序圖是用Xilinx的軟件ISE Design Suite仿真硬件描述語言得到的結果,虛擬樹的第二層的搜索步驟詳細描述如下:
[0051]步驟一:在state=S0, LEVEL=2, BlockSize=31, DLB=O,由 RPindex=mod (DLB, m)找到進入休息狀態處理器單元的索引值RPindex=O ;
[0052]步驟二:在state=Sl,每一個處理器單元代表的路徑的計算公式為:
[0053]PATH=RPindex - Pindex (如果 LEVEL 為奇數);
[0054]PATH=Pindex - Ppindex (如果 LEVEL 為偶數);
[0055]休息狀態處理器單元的路徑值=0。其余m-Ι個工作狀態處理器單元其代表路徑值分別為I至m-1;
[0056]步驟三:在state=S2,虛擬B樹中此層的搜索范圍被m-Ι個工作狀態處理器單元切割成m-Ι個數據區塊,每一個處理器單元計算其代表的區塊中的最大位置值,計算公式為:L0CAT10N=DLB+PATH*BlockSize ;
[0057]步驟四:在state=S3,將上步驟的位置值轉換成搜索值在內存的物理地址(PAddress):PAddress=L0CAT10N*RecordSize/m ;
[0058]步驟五:在state=S4, PAddress的值送到BRAM地址緩存器;
[0059]步驟六:在state=S5,BRAM讀取數據需要一個時鐘延遲;
[0060]步驟七:在state=S6,每一處理器單元將3個32位搜索值與標準值相比;
[0061]步驟八:在state=S7,如果有一個處理器單元發現其搜索值與標準值相同,其32位的對象指針,將被存放到緩存器D04且結束搜索運算,否則,儲存O (null)表示未發現指標;
[0062]步驟九:在state=S8,跨處理器單兀邏輯電路(Inter Processing Unit Logic)得知搜索值介于其中兩個工作處理器單元之間,且搜索值較小的處理器單元的位置設定為下循環的DLB值;
[0063]步驟十:在state=S9,DLB被廣播到所有的處理器單元,然后返回下個循環;
[0064]執行下一層相似的十個步驟,搜索就可完成并將其對象指針:“63636969”儲存于緩存器D04。
[0065]于本發明中,假設某頁有N筆記錄,處理刪除時,先用搜索找到刪除記錄的位置:L0CAT10N=N,然后記錄從1+1到N左移一次。如果一筆新記錄要插入此位置,需要確定此記錄有不同的搜索值,然后所有記錄從N到I右移一次。最后計算機將這個記錄送到位置I,這兩種運算可以使用32個處理器單元來平行處理。于本發明中,每一筆在該頁的記錄需具有不同于其他記錄的搜索值。在某些情況下,多個對象可能有相同的檢索值,這時,本發明中的對象指針指向的對象為一個包含幾個指針的數組,然后,這些對象可以通過數組--被取出來。
[0066]請參考圖1,于圖1的數據中,使用本發明的方法搜索0.8875X 109( = 316)筆記錄需要6個比較數。目前的計算器使用二進制搜索法(binary search), 6個比較數只能搜索63( = 26-1)筆記錄。本發明的方法結合哈希技術,此哈希共有314個桶(buckets),在最好的情況下,需I個比較數來搜索0.8875X 19筆記錄。在最壞的情況下需要6個比較數。平均比較數是2。本發明的方法用純硬件搜索,因此處理每一個比較都比現在的計算器更快且更可靠。
[0067]在圖3中處理器單元數目為32,此頁的窗體被用來建構圖4中具有兩層的虛擬B-樹第一層的節點。很明顯地可看出,每一個處理器單元處理的記錄都存在于它自己的BRAM單元。第一層的31個節點的邊緣記錄則被用來建構第二層的節點。很明顯所有B-樹結構的節點中,每一個處理器單元都處理它自己的BRAM單元的記錄。如果處理器單元總數是任何值,近似圖3中的窗體可建構形成近似圖4的虛擬B-樹結構且具有多層,在第一層的節點,此層中的每一個處理器單元處理的記錄皆存在于其自己的BRAM單元。假設在第i層每一個處理器單元處理的記錄在其自己的BRAM單元是正確的,可以很容易地證明,在第i+Ι層中,每一個處理器單元處理的記錄皆在其自己的BRAM單元之中,因為所有的第i+Ι層節點,全部由第i層節點的邊緣記錄形成,因此,在數學上可證明,對任何處理器單元總數量,本發明的方法全部可以真正地進行平行處理。
[0068]本發明解決了 PROLOG語言長期存在的搜索問題。由于PROLOG語言具備了圖靈機完整的特性,因此插入本發明的平行硬件搜索系統適配卡的計算機具備人工智能功能,可被視為一種圖靈機。
[0069]雖然前文系針對本發明的實施例,但在不偏離本發明的基本范圍下可設計出其它及另外的實施例,本發明的范圍由權利要求限定的范圍所界定。
【權利要求】
1.一種用以建構人工智能計算機的平行硬件搜索系統,其特征在于,包括: 若干個處理器單元,假設處理器單元的個數為m,連接m個BRAM單元及一跨處理器單元邏輯電路,處理器單元用于處理與其有連接關系的BRAM單元的數據,跨處理器單元邏輯電路用于實現處理器單元之間的邏輯連接功能; 一個PCIE接口控制器,用以連接所述用以建構人工智能計算機的平行硬件搜索系統及一外部計算機,并接收所述外部計算機發出的指令; 一個搜索/刪除/插入控制器,用以連接所述處理器單元及所述BRAM單元,接收所述外部計算機的指令進行搜索/刪除/插入運算;其中,所述m個BRAM單元連接外部的若干個DRAM控制器,并接收來自所述若干個DRAM控制器的數據。
2.根據權利要求1所述的用以建構人工智能計算機的平行硬件搜索系統,其特征在于,所述用以建構人工智能計算機的平行硬件搜索系統用于建構人工智能計算機。
3.根據權利要求1所述的用以建構人工智能計算機的平行硬件搜索系統,其特征在于,所述用以建構人工智能計算機的平行硬件搜索系統通過一界面與一計算機連接,用以建構人工智能計算機的平行硬件搜索系統運作時,使計算機語言文法從無關上下文層次提升至圖靈機層次。
4.根據權利要求1所述的用以建構人工智能計算機的平行硬件搜索系統,其特征在于,所述用以建構人工智能計算機的平行硬件搜索系統使用階層分頁結構處理大量記錄,大量記錄被劃分為若干個資料頁以縮減每頁中的記錄數量,并減少高速內存的大小以及傳輸和處理每一頁的時間,并增加DRAM或通用內存的單元數以增加數據傳輸速率。
5.根據權利要求1所述的用以建構人工智能計算機的平行硬件搜索系統,其特征在于,所述用以建構人工智能計算機的平行硬件搜索系統從所述BRAM單元到所述DRAM單元或由所述DRAM單元到所述BRAM單元中執行五種不同的運算,五種不同的運算包括:搜索、刪除、插入、傳輸數據,并以平行處理的方式進行,與處理器單元的總數量無關。
6.根據權利要求1所述的用以建構人工智能計算機的平行硬件搜索系統,其特征在于,所述用以建構人工智能計算機的平行硬件搜索系統通過搜索的方式進行刪除和插入運算,若干個處理器單元在記錄數量相對小的數據頁中平行執行左移或右移動作,并保持頁內所有記錄的排序和完美一致性。
7.根據權利要求1所述的用以建構人工智能計算機的平行硬件搜索系統,其特征在于,所述用以建構人工智能計算機的平行硬件搜索系統使用哈希技術,將大型的階層分頁分割成若干個小型的階層分頁,以增加搜索效能并使哈希桶內每頁的資料量大小一致。
8.根據權利要求1所述的用以建構人工智能計算機的平行硬件搜索系統,其特征在于,所述用以建構人工智能計算機的平行硬件搜索系統處理的記錄需具有不同于該頁其他記錄的搜索值,多個對象有相同的搜索值時,其中一對象指針指向一個包含復數個指針的數組對象,數據對象通過該數組一一被讀取。
9.根據權利要求1所述的用以建構人工智能計算機的平行硬件搜索系統,其特征在于,所述用以建構人工智能計算機的平行硬件搜索系統使用四個無符號數公式仿真虛擬B樹結構,所述四個無符號數公式分別為一第一公式,一第二公式,一第三公式及一第四公式,所述四個無符號數公式由DLB推導而來,DLB為搜索范圍的下限位置減一的位置,假設處理器單元總數為2k,其中k為一整數,除法使處理器單元位置左移,所述四個無符號數公式在一個時鐘周期之內處理完成,其中,所述四個無符號數公式分別表示如下: 第一公式:由DLB尋找休息狀態處理器單元的索引值,公式為:
RPindex=mod(DLB, m); 第二公式:Pindex為m個處理器單元被指定的由I至m的固定索引值,其代表路徑值由虛擬B樹的層別為奇數或偶數決定,計算公式為: PATH=RPindex-Pindex (當 LEVEL 值為奇數時); PATH=Pindex-PPindex (當 LEVEL 值為偶數時); 第三公式:搜索范圍切割成m-Ι個大小相同的數據區塊,BlockSize為數據區塊的大小,每一個數據區塊中最大位置的計算公式為:
L0CAT10N=DLB + PATH*BlockSize; 第四公式:取出已知位置所代表的搜索值,并與標準值比較,RecordSize為頁中記錄的大小,搜索值的物理地址公式為:
PAddress=LOCAT1N*RecordSize/m。
10.根據權利要求1所述的用以建構人工智能計算機的平行硬件搜索系統,其特征在于,所述搜尋方法在至多L=1gnriN個數據搜尋循環內完成該頁數據的搜尋,其中,處理器單元的個數為m,而N為此頁中記錄的個數,搜索由B樹結構的最上層LEVEL=L開始執行循環的步驟進行數據搜尋,此時DLB的初始值設定為0,搜索范圍在每一層不斷被縮減成原來范圍的l/(m-l),一直找到最底層LEVEL=I時即完成搜索,每一循環執行包括以下步驟: (1)、每一處理器單元用第一公式算出虛擬B樹中此層休息狀態處理器單元的索引值; (2)、每一處理器單元用第二公式算出虛擬B樹中此層其代表的路徑值,休息狀態處理器單元的路徑值=0,其余m-Ι個工作狀態處理器單元的代表路徑值分別為I至m-Ι ; (3)、虛擬B樹中此層的搜索范圍被m-1個工作狀態處理器單元切割成m-Ι個數據區塊,每一工作狀態處理器單元用第三公式算出在虛擬B樹中其數據區塊中最大位置值,處理器單元由此位置的記錄找到用以比較的搜索值; (4)、每一工作狀態處理器單元用第四公式將上步驟的位置值轉換成搜索值在內存的物理地址; (5)、工作狀態處理器單元取出已知位置所代表的搜索值,并與標準值比較'及 (6)、跨處理器單元邏輯電路得知搜索值介于其中兩個工作處理器單元之間,且搜索值較小的處理器單元的位置設定為下次循環的DLB值,將此DLB值廣播至所有處理器單元,然后進入下一個循環的數據搜尋。
【文檔編號】G06F17/30GK104516939SQ201310504610
【公開日】2015年4月15日 申請日期:2013年10月23日 優先權日:2013年10月4日
【發明者】許文龍 申請人:高霆科技股份有限公司