一種硬件實(shí)現(xiàn)hash鏈表的裝置的制造方法
【技術(shù)領(lǐng)域】
[0001 ] 本發(fā)明涉及數(shù)據(jù)的查找壓縮領(lǐng)域,尤其涉及一種硬件實(shí)現(xiàn)hash鏈表的裝置。
【背景技術(shù)】
[0002]查找是在大量的信息中尋找一個(gè)特定的信息元素,在計(jì)算機(jī)應(yīng)用中,查找是常用的基本運(yùn)算。查找效率依賴于查找功能的實(shí)現(xiàn)方式以及查找過程中所進(jìn)行的比較次數(shù)。理想情況下是不經(jīng)過任何比較,一次存取便能得到所需查找的數(shù)據(jù)。哈希表作為一種根據(jù)關(guān)鍵字直接進(jìn)行訪問的數(shù)據(jù)結(jié)構(gòu)被廣泛應(yīng)用于各種查找中。然而,很難找到一個(gè)哈希函數(shù)能保證對(duì)任意不同的關(guān)鍵字都產(chǎn)生不同的哈希值。因此,尋找高效解決沖突的方法從而降低沖突時(shí)執(zhí)行查詢的查找長(zhǎng)度,縮短查詢響應(yīng)時(shí)間成了關(guān)注的焦點(diǎn)。
[0003]哈希鏈表的應(yīng)用能夠提高查找效率,哈希鏈表是一種數(shù)據(jù)結(jié)構(gòu),表頭和節(jié)點(diǎn)的數(shù)據(jù)結(jié)構(gòu)不同,這樣在進(jìn)行表頭或者節(jié)點(diǎn)的刪除插入以及遍歷操作時(shí)可以采用統(tǒng)一操作。
[0004]目前實(shí)現(xiàn)hash鏈表的方式主要是利用C語(yǔ)言等高級(jí)語(yǔ)言來進(jìn)行軟件實(shí)現(xiàn),硬件實(shí)現(xiàn)與軟件實(shí)現(xiàn)相比,有更快的速度、更高的效率以及更好的穩(wěn)定性。
【發(fā)明內(nèi)容】
[0005]本發(fā)明所要解決的技術(shù)問題在于克服現(xiàn)有技術(shù)的不足,提供一種硬件實(shí)現(xiàn)哈希鏈表的裝置,可以實(shí)現(xiàn)哈希鏈表的插入刪除與遍歷查找,具有更快的速度、更高的效率和更好的穩(wěn)定性。
[0006]本發(fā)明具體采用以下技術(shù)方案解決上述技術(shù)問題:
一種硬件實(shí)現(xiàn)hash鏈表的裝置,包括FPGA控制邏輯部分、DRAMl表頭存儲(chǔ)部分和DRAM2節(jié)點(diǎn)數(shù)據(jù)存儲(chǔ)部分;
所述FPGA控制邏輯部分,用于關(guān)鍵碼值的接收、待插入的節(jié)點(diǎn)或表頭數(shù)據(jù)的接收、哈希值的運(yùn)算處理、表頭或節(jié)點(diǎn)的插入刪除與遍歷讀寫控制、隨機(jī)存儲(chǔ)芯片DRAMl的讀寫控制、隨機(jī)存儲(chǔ)芯片DRAM2的讀寫控制和表頭或節(jié)點(diǎn)數(shù)據(jù)的輸出控制;其包括串口接收模塊、串口發(fā)送模塊、波特率控制模塊、頂層控制模塊、哈希模塊、DRAM I控制模塊以及DRAM2控制豐旲塊;
所述DRAMl表頭存儲(chǔ)部分,用于對(duì)將關(guān)鍵碼值哈希運(yùn)算后得到的哈希值和與表頭匹配的首節(jié)點(diǎn)地址進(jìn)行存儲(chǔ),配合DRAMl控制模塊的讀寫操作;其包括一片隨機(jī)存儲(chǔ)芯片DRAMl ;
所述DRAM2節(jié)點(diǎn)數(shù)據(jù)存儲(chǔ)部分,用于將哈希鏈表的各個(gè)節(jié)點(diǎn)數(shù)據(jù)進(jìn)行存儲(chǔ),配合DRAM2控制模塊的讀寫操作;其包括一片隨機(jī)存儲(chǔ)芯片DRAM2 ;
FPGA控制邏輯部分通過片內(nèi)總線分別與隨機(jī)存儲(chǔ)芯片DRAMl、隨機(jī)存儲(chǔ)芯片DRAM2相連,實(shí)現(xiàn)地址與數(shù)據(jù)總線的分時(shí)復(fù)用,同一個(gè)總線周期內(nèi)兩個(gè)DRAM中僅有一個(gè)被讀寫;在FPGA內(nèi)部,串口接收模塊與串口發(fā)送模塊分別與波特率模塊實(shí)現(xiàn)雙向通信,以控制數(shù)據(jù)的接收與發(fā)送;頂層控制模塊與串口發(fā)送模塊實(shí)現(xiàn)雙向通信,以傳遞要輸出的數(shù)據(jù);頂層控制模塊與哈希模塊實(shí)現(xiàn)雙向通信,以接收經(jīng)過哈希模塊對(duì)關(guān)鍵碼值進(jìn)行計(jì)算得到的哈希值;頂層控制模塊與DRAMl控制模塊實(shí)現(xiàn)雙向通信,以控制隨機(jī)存儲(chǔ)芯片DRAMl的讀寫,同時(shí)協(xié)調(diào)與DRAM2控制模塊工作的順序;頂層控制模塊與DRAM2控制模塊實(shí)現(xiàn)雙向通信,以控制隨機(jī)存儲(chǔ)芯片DRAM2的讀寫,同時(shí)協(xié)調(diào)與DRAMl控制模塊的工作順序。
[0007]作為其中一個(gè)優(yōu)選方案:
所述串口接收模塊是一種控制串口接口接收數(shù)據(jù)的硬件邏輯,用來接收外部輸入的關(guān)鍵碼值和數(shù)據(jù)并將此關(guān)鍵碼值進(jìn)行處理后傳送給哈希模塊;
所述波特率控制模塊是一種產(chǎn)生波特率的硬件邏輯,其作用是控制數(shù)據(jù)傳輸?shù)乃俾?;所述串口發(fā)送模塊是一種控制串口接口發(fā)送數(shù)據(jù)的硬件邏輯,其作用是將頂層控制模塊傳送過來的數(shù)據(jù)經(jīng)過串口發(fā)送到上位機(jī)。
[0008]作為其中另一個(gè)優(yōu)選方案,所述哈希模塊是一種實(shí)現(xiàn)簡(jiǎn)單哈希函數(shù)運(yùn)算的硬件邏輯,用來對(duì)關(guān)鍵碼值進(jìn)行哈希運(yùn)算得到哈希值,然后將此哈希值和關(guān)鍵碼值傳送給頂層控制模塊。
[0009]作為本發(fā)明再一優(yōu)選方案:
所述頂層控制模塊是由有限狀態(tài)機(jī)實(shí)現(xiàn)的硬件邏輯,用于協(xié)調(diào)DRAMl控制模塊與DRAM2控制模塊的工作,接收處理哈希模塊傳送的哈希值,根據(jù)關(guān)鍵碼值的某些位來判斷數(shù)據(jù)處理模式,根據(jù)DRAMl控制模塊或DRAM2控制模塊的反饋信息來選擇下一周期要讀寫的存儲(chǔ)芯片;
所述DRAMl控制模塊是由有限狀態(tài)機(jī)實(shí)現(xiàn)的硬件邏輯,用于控制DRAMl芯片的讀寫操作,并受頂層控制模塊的管理,向頂層模塊傳送反饋信息;
所述DRAM2控制模塊是由有限狀態(tài)機(jī)實(shí)現(xiàn)的硬件邏輯,用于控制DRAM2芯片的讀寫操作,并受頂層控制模塊的管理,向頂層模塊傳送反饋信息。
[0010]與現(xiàn)有技術(shù)相比較,本發(fā)明采用了硬件描述語(yǔ)言來描述所需各項(xiàng)功能,并利用兩片DRAM芯片分別存儲(chǔ)表頭及節(jié)點(diǎn)數(shù)據(jù),利用FPGA進(jìn)行邏輯控制。FPGA可選型較豐富,可根據(jù)hash鏈表的規(guī)模要求來選擇合適的型號(hào)。FPGA與兩片DRAM芯片之間也可以實(shí)現(xiàn)快速通信,提高存取速度,具有較強(qiáng)的靈活性。本發(fā)明專利方案中,數(shù)據(jù)輸入輸出處理完全由硬件管理,相較于軟件,速度更快,效率更高,存取規(guī)??梢愿?。
【附圖說明】
[0011]圖1為本發(fā)明一種硬件實(shí)現(xiàn)hash鏈表的裝置的一種優(yōu)選結(jié)構(gòu);
圖2為本發(fā)明一種硬件實(shí)現(xiàn)hash鏈表的裝置數(shù)據(jù)接收的基本處理流程;
圖3為本發(fā)明一種硬件實(shí)現(xiàn)hash鏈表的裝置數(shù)據(jù)發(fā)送的基本處理流程;
圖4為本發(fā)明一種硬件實(shí)現(xiàn)hash鏈表的裝置對(duì)于節(jié)點(diǎn)插入的基本處理流程;
圖5為本發(fā)明一種硬件實(shí)現(xiàn)hash鏈表的裝置對(duì)于節(jié)點(diǎn)刪除的基本處理流程;
圖6為本發(fā)明一種硬件實(shí)現(xiàn)hash鏈表的裝置對(duì)于遍歷查找的基本處理流程。
【具體實(shí)施方式】
[0012]下面結(jié)合附圖對(duì)本發(fā)明的技術(shù)方案進(jìn)行詳細(xì)說明:
圖1顯示了本發(fā)明一種硬件實(shí)現(xiàn)hash鏈表的裝置的一個(gè)優(yōu)選實(shí)施例的基本結(jié)構(gòu)。該硬件實(shí)現(xiàn)hash鏈表的裝置包括FPGA控制邏輯部分、DRAMl表頭存儲(chǔ)部分和DRAM2節(jié)點(diǎn)數(shù)據(jù)存儲(chǔ)部分;其中,F(xiàn)PGA控制邏輯部分包括串口接收模塊、波特率控制模塊、串口發(fā)送模塊、哈希模塊、頂層控制模塊、DRAMl控制模塊和DRAM2控制模塊;DRAM1表頭存儲(chǔ)部分包括一片內(nèi)存芯片DRAMl ;DRAM2節(jié)點(diǎn)數(shù)據(jù)存儲(chǔ)部分包括一片內(nèi)存芯片DRAM2 ;
串口接收模塊、波特率控制模塊和串口發(fā)送模塊是用以控制串行通信接口 UART進(jìn)行數(shù)據(jù)的接收與發(fā)送,利用硬件描述語(yǔ)言來編寫實(shí)現(xiàn)并進(jìn)行封裝處理,串口接收模塊通過哈希模塊與頂層控制模塊雙向通信,以實(shí)現(xiàn)數(shù)據(jù)接收功能,串口發(fā)送模塊直接與頂層控制模塊雙向通信,以實(shí)現(xiàn)數(shù)據(jù)發(fā)送功能。波特率模塊用于控制波特率的產(chǎn)生,并與串口發(fā)送模塊和串口接收模塊雙向通信,以控制數(shù)據(jù)接收與發(fā)送的速率。
[0013]哈希模塊用于實(shí)現(xiàn)哈希運(yùn)算,利用硬件描述語(yǔ)言來編寫實(shí)現(xiàn)并進(jìn)行封裝處理,在串口接收模塊接收到外部傳入的關(guān)鍵碼值后,再傳送到哈希模塊,計(jì)算出哈希值,并將哈希值和關(guān)鍵碼值傳送給頂層控制模塊,哈希模塊與頂層控制模塊雙向通信。
[0014]頂層控制模塊分別與哈希模塊、DRAMl控制模塊和DRAM2控制模塊實(shí)現(xiàn)雙向通信,其作用在于,接收哈希模塊傳送的哈希值進(jìn)行分析處理,選擇數(shù)據(jù)處理模式(刪除、插入或遍歷查找),協(xié)調(diào)控制DRAMl控制模塊和DRAM2控制模塊的工作順序,保證同一時(shí)鐘周期兩片DRAM芯片僅有一個(gè)在讀寫。
[0015]DRAMl控制模塊用于控制DRAMl芯片的讀寫操作,并將反饋信息傳送給頂層模塊;DRAM2控制模塊用于控制DRA