TWI727185B - 鏈結串列搜索裝置及方法 - Google Patents
鏈結串列搜索裝置及方法 Download PDFInfo
- Publication number
- TWI727185B TWI727185B TW107123751A TW107123751A TWI727185B TW I727185 B TWI727185 B TW I727185B TW 107123751 A TW107123751 A TW 107123751A TW 107123751 A TW107123751 A TW 107123751A TW I727185 B TWI727185 B TW I727185B
- Authority
- TW
- Taiwan
- Prior art keywords
- search
- link
- node
- processing unit
- configuration register
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
Abstract
本發明提出一種鏈結串列搜索裝置,包含:記憶體、鏈結串列搜索引擎及處理單元。記憶體儲存鏈結串列。鏈結串列搜索引擎搜索鏈結串列的內容直到搜索成功或搜索失敗為止,及產生搜索結果。處理單元寫入鏈結串列的內容至記憶體,驅動鏈結串列搜索引擎開始鏈結串列的搜索作業,並且從鏈結串列搜索引擎取得搜索結果。
Description
本發明涉及計算機裝置,尤指一種鏈結串列搜索裝置及方法。
鏈結串列是一種資料結構,包含多個節點,集合起來成為一個串列。這是一種資料單元的線性集合,而它的順序並不是記憶體中的實際擺放順序,反而,每個單元會指向自己的下一個單元。通常,每個節點包含資料及指向序列中下個節點的參考位置(也就是鏈結)。這樣的結構允許有效率地在序列中任意位置插入或移除元件。傳統上,鏈結串列的搜索是由中央處理單元執行,而中央處理單元又通常是計算機系統的核心。減少使用中央處理單元搜索鏈結串列中的資料可提升系統的整體效能。因此,本發明提出一種鏈結串列搜索裝置及方法,使用專用硬體來取代中央處理單元進行鏈結串列中的資料搜索,提升計算機系統的整體效能。
有鑑於此,如何減輕或消除上述相關領域的缺失,實為有待解決的問題。
本說明書提供一種鏈結串列搜索裝置的實施例,其包含:記憶體、鏈結串列搜索引擎及處理單元。記憶體儲存鏈結串列。鏈結串列搜索引擎搜索鏈結串列的內容直到搜索成功或搜索失敗為止,及產生一搜索結果。處理單元寫入鏈結串列的內容至記憶體,驅動鏈結串列搜索引擎開始鏈結串列的搜索作業,並且從鏈結串列搜索引擎取得搜索結果。
本說明書另提供一種鏈結串列搜索方法的實施例,由鏈結串列搜索引擎執行,其包含:從配置寄存器取得由處理單元設定的鏈結串列的起始節點的記憶體位址,以及搜索值;反覆執行一迴圈,用以從起始節點開始依序取得並處理鏈結串列中的多個節點,直到搜索成功或搜索失敗為止;當搜索成功時,儲存搜索結果及搜索成功的資訊,使得處理單元取得搜索結果及搜索成功的資訊;以及當搜索失敗時,儲存搜索失敗的資訊,使得處理單元取得搜索失敗的資訊。
上述實施例的優點之一,通過處理單元及鏈結串列搜索引擎間的協同合作,鏈結串列的搜索作業可與其他任務並行處理,提升電子裝置的整體效能。
本發明的其他優點將搭配以下的說明和圖式進行更詳細的解說。
110:處理單元
130:記憶體
131:鏈結串列
150:鏈結串列搜索引擎
170:配置寄存器
S210~S270:方法步驟
300~390:節點
410:實體儲存對照表
430:實體位置資訊
430-0:實體區塊編號
430-1:主頁面的起始單元編號
450:實體區塊
451:主頁面
500、600、700:鏈結串列搜索引擎
520、720:讀取電路
530、750:FIFO緩衝區
540、740:比較器
550、560、730、760:寫入電路
590:結果寄存器
610_1、610_2:捷徑寄存器
630:多工器
710:搜索紀錄
790:結果紀錄
EN1~EN4:致能訊號
SE:選擇訊號
圖1為依據本發明實施例的鏈結串列搜索裝置方塊圖。
圖2為依據本發明實施例的鏈結串列搜索的方法流程圖。
圖3為依據本發明實施例的鏈結串列示意圖。
圖4為依據本發明實施例的實體儲存對照示意圖。
圖5至7為依據本發明實施例的鏈結串列搜索引擎的方塊圖。
以下說明為完成發明的較佳實現方式,其目的在於描述本發明的基本精神,但並不用以限定本發明。實際的發明內容必須參考之後的權利要求範圍。
必須了解的是,使用於本說明書中的”包含”、”包括”等詞,用以表示存在特定的技術特徵、數值、方法步驟、作業處理、元件以及/或組件,但並不排除可加上更多的技術特徵、數值、方法步驟、作業處理、元件、組件,或以上的任意組合。
於權利要求中使用如”第一”、"第二"、"第三"等詞是用來修飾權利要求中的元件,並非用來表示之間具有優先順序,前置關係,或者
是一個元件先於另一個元件,或者是執行方法步驟時的時間先後順序,僅用來區別具有相同名字的元件。
參考圖1。鏈結串列搜索裝置可包含處理單元110、記憶體130及鏈結串列搜索引擎150。鏈結串列搜索裝置可實施於NAND快閃記憶裝置,或其他電子裝置,用以提供更有效率的邏輯實體位置轉換等功能。處理單元110可使用多種方式實施,例如使用通用硬體,如單一處理器、具平行處理能力的多處理器、圖形處理器、輕簡型通用目的處理器(lightweight general-purpose processor)或其他具運算能力的處理器,並且在執行指令(instructions)、宏碼(macrocode)或微碼(microcode)時,提供邏輯實體位置轉換的功能。記憶體130可為動態隨機存取記憶體(dynamic random access memory,DRAM)、靜態隨機存取記憶體(static random access memory,SRAM)或其他類型的揮發性記憶體(volatile memory)。需注意的是,以下所述處理單元110的動作或作業為執行特定韌體時完成,為求簡潔不再贅述。處理單元110耦接記憶體130,寫入鏈結串列131的內容至記憶體130。由於鏈結串列131的搜索會耗費一段時間,實施例的鏈結串列搜索裝置使用鏈結串列搜索引擎150完成搜索作業,避免消耗處理單元110的運算能力。鏈結串列搜索引擎150為專屬硬體,耦接記憶體130,用以搜索鏈結串列131的內容直到搜索成功或搜索失敗為止,並產生搜索結果。搜索結果可儲存於記憶體130中的事先分配區域,或者是專屬的寄存器(未顯示於圖1)。此外,為了讓鏈結串列搜索引擎150可於多樣的鏈結串列131中搜索資料,鏈結串列搜索裝置可提供配置寄存器(configuration register)170,用以儲存鏈結串列131中每個節點的資料結構、欲搜索的第一個節點的記憶體位址、搜索方向及欲搜索的值等資訊。配置寄存器170可整合到鏈結串列搜索引擎150中,本發明並不因此受限。處理單元110耦接配置寄存器170,可透過設定配置寄存器170通知鏈結
串列搜索引擎150如何搜索鏈結串列131的內容。處理單元110寫入鏈結串列131的內容後,驅動鏈結串列搜索引擎150開始鏈結串列131的搜索作業,並且從鏈結串列搜索引擎150取得搜索結果。
參考圖2。此方法由鏈結串列搜索引擎150執行。鏈結串列搜索引擎150從配置寄存器170取得欲搜索的第一個節點(又可稱為起始節點)的記憶體位址及欲搜索的值(步驟S210)。接著,鏈結串列搜索引擎150反覆執行一個迴圈(步驟S230、S250及S270),用以從起始節點開始依序取得並處理鏈結串列131中的節點,直到搜索成功(步驟S230中”是”的路徑)或搜索失敗(步驟S250中”是”的路徑)為止。於每個回合從記憶體130取得第一個或下一個節點後(步驟S210或S270),判斷取得節點中是否包含處理單元110欲搜索的值(步驟S230)。若搜索成功(步驟S230中“是“的路徑),則鏈結串列搜索引擎150儲存搜索結果及搜索成功的資訊,使得處理單元110可取得搜索結果及搜索成功的資訊(步驟S240),搜索結果可包含搜索到節點的記憶體位址、對應結果及搜索次數等資訊。若搜索失敗(步驟S230中“否“的路徑),判斷此節點是否為最後一個節點(步驟S250)。若已經到達最後一個節點(步驟S250中“是“的路徑),則鏈結串列搜索引擎150儲存搜索失敗的資訊,使得處理單元110可取得搜索失敗的資訊(步驟S260)。若尚未到達最後一個節點(步驟S250中“否“的路徑),則鏈結串列搜索引擎150依據此節點的下一節點位址從記憶體130讀取下一個節點的內容(步驟S270)。鏈結串列中每一節點的內容,以及搭配不同的硬體電路的搜索細節,將描述如後。
需注意的是,所屬技術領域具有通常知識者可修改圖2,用以讓鏈結串列的搜索從最後一個節點(又可稱為起始節點)開始向前搜索,直到搜索成功或搜索失敗為止。
於一些實施例,當鏈結串列搜索引擎150搜索鏈結串列131期間,處理
單元110可並行處理其他任務(tasks)並且於一段時間後訪問記憶體130或專屬寄存器以嘗試取得搜索結果。當記憶體130還沒有結果時,處理單元110可先轉去處理其他任務,並於下一段時間後再做檢查。於另一些實施例,鏈結串列搜索引擎150搜索完成後,可發出訊號(如中斷訊號)給處理單元110,使得處理單元110可開始取得搜索結果。於更另一些實施例,鏈結串列搜索引擎150搜索完成後,可透過設定狀態寄存器(status register,未顯示於圖1)通知處理單元110有關搜索結果的訊息。處理單元110可週期性訪問狀態寄存器,並且於狀態寄存器被設定時,取得搜索結果。通過處理單元110及鏈結串列搜索引擎150間的協同合作,鏈結串列131的搜索作業可與其他任務並行處理,提升電子裝置的整體效能。也就是說,鏈結串列搜索引擎150搜索鏈結串列131內容的期間,處理單元110並行地執行任務。
由於NAND快閃記憶裝置並非隨機存取裝置,為了提升寫入的效率,主裝置(未顯示於圖1)可提供至少一個長度的連續性資料,例如128K位元組的資料,使得快閃記憶裝置可以有效率的並行作業方式將資料寫入其中的數個儲存子單元。當成功寫入一個邏輯位置的使用者資料後,快閃記憶裝置更新暫存於記憶體130的臨時實體儲存對照表(temporary storage mapping table)中此邏輯位置及寫入實體位置的對應關係資訊。此外,於成功寫入預定數量的邏輯位置的的使用者資料後,依據暫存的臨時實體儲存對照表的內容更新非揮發性的快閃記憶單元(未顯示於圖1)儲存的實體儲存對照表(storage mapping table,又稱為H2F Host-to-Flash表)。參考圖4。實體儲存對照表410依照順序儲存相應於每一邏輯位置的實體位置資訊。實體儲存對照表410所需的空間從64M到1G位元組不等。邏輯位置可以邏輯區塊位址(Logical Block Address LBA)表示,每一個LBA對應到一個固定大小的實體儲存空間,例如512位元組
(Bytes)。舉例來說,實體儲存對照表410依序儲存從LBA0至LBA65535的實體位置資訊。數個連續邏輯位置(例如LBA0至LBA7)的資料可形成一個主頁面(host page)。實體位置資訊430可以四個位元組表示:前二個位元組430-0紀錄實體區塊編號(physical block number);後二個位元組430-1紀錄單元編號(unit number)。例如,相應於邏輯位置LBA2的實體位置資訊430可指向實體區塊450中的一個實體區域451。位元組430-0紀錄實體區塊450的編號,位元組430-1紀錄實體區域451的單元編號。
由於NAND快閃記憶裝置常從主裝置接收到一定順序的主頁面讀取請求,鏈結串列搜索裝置可用以加快這些主頁面的邏輯實體位置轉換。參考圖3。鏈結串列131可包含10個節點300至390,每個節點可儲存長字組(long word)的資料,也就是16個位元組的資料。於每個節點,第0至3位元組儲存指向前一個節點的記憶體位址(又稱為前一節點位址),第4至7位元組儲存指向下一個節點的記憶體位址(又稱為下一節點位址),第8至11位元組儲存主頁面編號,第12至15位元組儲存相應的實體位置資訊。前一節點位址可儲存虛假值(NULL值,例如0xFFFFFFFF)用以指出此節點為鏈結串列的第一個節點,下一節點位址可儲存虛假值用以指出此節點為鏈結串列的最後一個節點。例如,節點300及390分別為鏈結串列的第一個及最後一個節點。節點300的起始位址為0x00000000,節點310的起始位址為0x00000010,依此類推。節點300的下一節點位址指向記憶體位址0x00000010(也就是節點310的起始位址),節點310的下一節點位址指向記憶體位址0x00000020(也就是節點320的起始位址),依此類推。節點390的前一節點位址指向記憶體位址0x00000080(也就是節點380的起始位址),節點380的前一節點位址指向記憶體位址0x00000070(也就是節點370的起始位址),依此類推。節點300儲存的主頁面標號為0x00000033且相應的實體位置資訊為變
數PA0,節點310儲存的主頁面標號為0x00000044且相應的實體位置資訊為變數PA1,依此類推,變數PA0至PA9的值由處理單元110填寫。雖然本發明的實施例將鏈結串列131的節點300至390依據記憶體130的位址順序性安排以方便於閱讀,但是,經過數次的插入及刪除後,節點300至390的順序通常不相符於記憶體130的位址順序。
圖5至7為依據本發明實施例的鏈結串列搜索引擎的方塊圖,用以實現如圖2所述的鏈結串列搜索方法。
參考圖5。鏈結串列搜索引擎500可包含配置寄存器170、讀取電路(reading circuit)520、FIFO緩衝區(FIFO buffer)530、比較器540、寫入電路(writing circuits)550及560、以及結果寄存器(result register)590。處理單元110可設定配置寄存器170,用以儲存第一個節點的起始位址、每個節點的資料結構資訊(例如,前一節點位址的偏移量(offset)、下一節點位址的偏移量、比較資料的偏移量及對應結果的偏移量等),搜索值及搜索方向。當處理單元110致能鏈結串列搜索引擎500時,讀取電路520可依據配置寄存器170的內容從鏈結串列131讀取第一個節點的下或前一節點位址、比較資料及對應結果,並輸出比較資料及對應結果至FIFO緩衝區530。此外,讀取電路520可將第一個節點的起始位址輸出至FIFO緩衝區530。比較器540比較配置寄存器170的搜索值及FIFO緩衝區530的比較資料,當二者不同時,輸出致能訊號EN1給讀取電路520,用以驅動讀取電路520從鏈結串列131讀取下一節點的內容。讀取電路520可判斷是否還有任何節點尚未處理,例如,下或前一節點位址是否不是虛假值。如果是,讀取電路520可依據配置寄存器170的內容及下或前一節點位址從鏈結串列131讀取下或前一個節點的如上所述內容,以及將如上所述的內容的一部份輸出至FIFO緩衝區530。如果不是,讀取電路520輸出致能訊號EN3給寫入電路560,驅動寫入電路560儲存搜索失敗的資訊至結果寄存器590。當比較器540判斷配置寄存器
170的搜索值與FIFO緩衝區530的比較資料相同時,輸出致能訊號EN2給寫入電路550,驅動寫入電路550儲存FIFO緩衝區530的對應結果及目前搜索節點的起始位址,以及搜索成功的資訊至結果寄存器590。例如,結果寄存器590的第0至3位元組儲存搜索到的對應結果,第4至7位元組儲存目前搜索節點的起始位址,及第8位元組儲存搜索成功或失敗的資訊。當搜索成功時,第8位元組可設為1;反之,設為0。
為了讓處理單元110最佳化鏈結串列131中節點的擺放順序,於一些實施例,鏈結串列搜索引擎500可包含計數器580,耦接比較器540及寫入電路550,於每次搜索作業開始時初始為0。每次比較配置寄存器170的搜索值及FIFO緩衝區530的比較資料時,比較器540將計數器580累加1。當比較器540判斷配置寄存器170的搜索值及FIFO緩衝區530的比較資料相同時,驅動寫入電路550儲存計數器580的值至結果寄存器590。例如,結果寄存器590的第9位元組儲存計數器的值。
每個節點的比較資料可包含複合資料(compound data),例如,包含二種以上不同類型的資料。於一些實施例,處理單元110可設定配置寄存器170,以使用4個位元組儲存遮罩(mask)。比較器540可將FIFO緩衝區530的比較資料與配置寄存器170的遮罩進行邏輯及運算(logic AND)以產生遮罩後比較資料,接著判斷配置寄存器170的搜索值及遮罩後比較資料是否相同。如果是,比較器540驅動寫入電路550儲存FIFO緩衝區530的對應結果及目前搜索節點的起始位址,以及搜索成功的資訊至結果寄存器590。例如,如圖3所示的主頁面編號的前二位元組為T1表的編號,而後二位元組為T7表的編號。當配置寄存器170的搜索值為T1表的編號時,處理單元110可儲存遮罩0xFFFF0000至配置寄存器170,使得比較器540可忽略主頁面編號的後二位元組(也就是T7表的編號)。當配置寄存器170的搜
索值為T7表的編號時,處理單元110可儲存遮罩0x0000FFFF至配置寄存器170,使得比較器540可忽略主頁面編號的前二位元組(也就是T1表的編號)。
每個節點的比較資料可包含不需要比較的位元,例如,最高有效位(Most Significant Bit)。於一些實施例,處理單元110可設定配置寄存器170,用以使用1個位元組儲存忽略位元的資訊,例如,0x1F代表比較資料的第31位元可忽略。比較器540可依據忽略位元的資訊產生遮罩,將FIFO緩衝區530的比較資料與此遮罩進行邏輯及運算,接著判斷配置寄存器170的搜索值及遮罩後比較資料是否相同。如果是,比較器540驅動寫入電路550儲存FIFO緩衝區530的對應結果及目前搜索節點的起始位址,以及搜索成功的資訊至結果寄存器590。例如,當忽略位元為第31位元時,遮罩為0x7FFFFFFF。
參考圖3的鏈結串列131。假設配置寄存器170的第0至3位元組儲存第一個節點的起始位址為0x00000000,第4至7位元組儲存搜索值0x00000077,第8位元組儲存搜索方向為向前搜索,第9至12位元組分別儲存每個節點的前一節點位址的偏移量為0x00、下一位址節點的偏移量為0x04、資料的偏移量0x08及對應結果的偏移量為0x0C,其中的偏移量以位元組為單位。當處理單元110致能鏈結串列搜索引擎500後,比較器540於節點340發現搜索值0x00000077,驅動寫入電路550儲存FIFO緩衝區530的對應結果[PA4]、節點340的起始位址0x40、以及搜索成功的資訊至結果寄存器590。此外,比較器540可更趨動寫入電路550儲存計數器的值(也就是5)至結果寄存器590。
參考圖6。由於韌體可能有二組以上常用的配置設定,鏈結串列搜索引擎600可更包含捷徑寄存器610_1及610_2,用以讓處理單元110預先分別儲存二組配置設定至捷徑寄存器610_1及610_2,其中每組配置設定可包含鏈結串列131的一起始節點的記憶體位址、搜索值
以及每一該節點的資料結構資訊。每組配置設定可更包含如上所述的遮罩或忽略位元的資訊。鏈結串列搜索引擎600另包含多工器(multiplexer)630,其輸入端耦接至捷徑寄存器610_1及610_2的輸出,其輸出端耦接至配置寄存器170的輸入。處理單元110可輸出選擇訊號SE給多工器630,用以將捷徑寄存器610_1及610_2中之一者耦接至配置寄存器170,使得配置寄存器170可儲存耦接捷徑寄存器中的配置設定。雖然圖6的實施例只包含二個捷徑寄存器,所屬技術領域具有通常知識者可修改鏈結串列搜索引擎600,用以包含更多的捷徑寄存器,本發明並不因此受限。圖6中其他元件的結構、功能及作業細節可參考圖5的描述,為求簡潔不再贅述。
參考圖7。為了讓並行作業更有效率,鏈結串列搜索引擎700可提供多筆搜索的能力,讓處理單元110一次提供多個搜索值後便可轉去處理其他的任務,有利處理單元110安排鏈結串列131的搜索及其他任務,最佳化系統的整體效能。處理單元110可於記憶體130分配一塊固定區域,用以儲存多筆搜索紀錄710,以及讓鏈結串列搜索引擎700寫入結果紀錄790。每筆搜索紀錄包含開始旗標及搜索值,開始旗標用以通知鏈結串列搜索引擎700是否可以開始搜索鏈結串列131。每筆結果紀錄790關聯於一筆搜索紀錄710,包含結束旗標、結果旗標、搜索次數以及搜索到節點的記憶體位址,結束旗標及結果旗標用以分別通知處理單元110此搜索值的搜索是否已結束以及是否已搜索到。搜索紀錄710及結果紀錄790可整合在一起,便於存取。
讀取電路720可檢查是否存在一筆開始旗標為1(代表可以開始搜索)且結束旗標為0(代表尚未搜索結束)的紀錄。一旦發現符合條件的紀錄,讀取電路720將此紀錄的搜索值儲存至配置寄存器170。讀取電路520的作業可參考圖5的相關說明,為求簡潔不再贅述。當讀取電路520發現沒有任何節點可以搜索時,輸出致能訊號EN3給寫入
電路730,驅動寫入電路730儲存搜索值及搜索失敗的資訊至FIFO緩衝區750。寫入電路730可更儲存鏈結串列131的節點數目至FIFO緩衝區750,作為搜索次數。當比較器740判斷配置寄存器170的搜索值及FIFO緩衝區530的比較資料相同時,將FIFO緩衝區530的對應結果、目前節點的起始位址,及搜索成功的資訊儲存至FIFO緩衝區750。比較器740可更包含計數器,於搜索開始前初始為0。每次比較配置寄存器170的搜索值與FIFO緩衝區530的比較資料時,計數器累加1。當比較器740判斷配置寄存器170的搜索值及FIFO緩衝區530的比較資料相同時,更儲存計數器的值至FIFO緩衝區750,作為搜索次數。當資料進入FIFO緩衝區750時,寫入電路760將FIFO緩衝區750的內容寫入結果紀錄790,並且輸出致能訊號EN4至讀取電路720,用以讀取下一筆搜索紀錄710。
以下搭配圖3的鏈結串列131,舉幾個實例說明鏈結串列搜索引擎700的運作。搜索紀錄710及結果紀錄790可整合成一張表,初始如表1所示:
每筆記錄可使用13個位元組儲存資料,其中,1個位元組紀錄開始旗標Start[4](第4位元)及結束旗標Done[0](第0位元),4個位元組紀錄搜索值Pattern[31:0](所有位元),4個位元組紀錄結果旗
標Result[31](第31位元)及搜索次數Effort[30:0](第0至30位元),4個位元組紀錄搜索到節點的記憶體位址Address[31:0](所有位元)。開始旗標可視為致能鏈結串列搜索引擎700的訊號。初始時,處理單元110寫入四個搜索值0x000000AA、0x00000044、0x00000052及0x00000055,並將前二個搜索值的開始旗標設為1。
接著,鏈結串列搜索引擎700於鏈結串列131的節點370搜索到值0x000000AA,更新結果如表2所示:
寫入電路760在第一筆紀錄中將結束旗標Done[0]設為1,將結果旗標Result[31]設為1,將搜索次數Effort[30:0]設為8,將搜索到節點的記憶體位址Address[31:0]設為0x00000070。
接著,鏈結串列搜索引擎700於鏈結串列131的節點310搜索到值0x00000044,但搜索不到值0x00000052。然後,鏈結串列搜索引擎700於鏈結串列131的節點320搜索到值0x00000055。以上結果更新如表4所示:
所屬技術領域具有通常知識者可將圖5至圖7的鏈結串列搜索引擎500至700結合成一個鏈結串列搜索引擎,並且除了寄存器以外的每個元件都共享一個模式訊號。處理單元110透過模式訊號可將鏈結串列搜索引擎配置成如圖5至圖7中之一者。
雖然圖1、5~7中包含了以上描述的元件,但不排除在不違反發明的精神下,使用更多其他的附加元件,已達成更佳的技術效果。此外,雖然圖2的流程圖採用指定的順序來執行,但是在不違反發明精神的情況下,熟習此技藝人士可以在達到相同效果的前提下,修改這些步驟間的順序,所以,本發明並不侷限於僅使用如上所述的順序。此外,熟習此技藝人士亦可以將若干步驟整合為一個步驟,或者是除了這些步驟外,循序或平行地執行更多步驟,本發明亦不因此而侷限。
雖然本發明使用以上實施例進行說明,但需要注意的是,這些描述並非用以限縮本發明。相反地,此發明涵蓋了熟習此技藝人士顯而易見的修改與相似設置。所以,申請權利要求範圍須以最寬廣的方式解釋來包含所有顯而易見的修改與相似設置。
110:處理單元
130:記憶體
131:鏈結串列
150:鏈結串列搜索引擎
170:配置寄存器
Claims (18)
- 一種鏈結串列搜索裝置,包含:一記憶體,儲存一鏈結串列;一鏈結串列搜索引擎,耦接於該記憶體,為專屬硬體,用以搜索該鏈結串列的內容直到搜索成功或搜索失敗為止,及產生一搜索結果;以及一處理單元,耦接於該記憶體及該鏈結串列搜索引擎,用以寫入該鏈結串列的內容至該記憶體,驅動該鏈結串列搜索引擎開始該鏈結串列的搜索作業,並且從該鏈結串列搜索引擎取得該搜索結果,其中,該鏈結串列搜索引擎搜索該鏈結串列內容的期間,該處理單元並行地執行一任務,並週期性地檢查該鏈結串列搜索引擎是否搜索完畢。
- 如請求項1所述的鏈結串列搜索裝置,包含:一配置寄存器,耦接於該處理單元及該鏈結串列搜索引擎;其中,該鏈結串列包含多個節點,每一該節點包含一下或前一節點位址、一比較資料及一對應結果,其中,該處理單元設定該配置寄存器,用以儲存該鏈結串列的一起始節點的記憶體位址、一搜索值以及每一該節點的資料結構資訊,其中,該鏈結串列搜索引擎根據該配置寄存器的內容搜索該鏈結串列。
- 如請求項2所述的鏈結串列搜索裝置,其中,每一該節點的資料結構資訊包含該下或前一節點位址的偏移量、該比較資料的偏移量 及該對應結果的偏移量。
- 如請求項1所述的鏈結串列搜索裝置,其中,該鏈結串列包含多個節點,每一該節點包含一下或前一節點位址、一比較資料及一對應結果,該比較資料包含一實體儲存對照表的一主頁面編號,以及該對應結果包含該實體儲存對照表的一實體位置。
- 如請求項1所述的鏈結串列搜索裝置,其中,該鏈結串列包含多個節點,以及該鏈結串列搜索引擎包含:一第一寫入電路;一第二寫入電路;一配置寄存器,其中該處理單元設定該配置寄存器,用以儲存該鏈結串列的一起始節點的記憶體位址、一搜索值以及每一該節點的資料結構資訊;一第一讀取電路,耦接該配置寄存器及該第一寫入電路,用以根據該配置寄存器的內容依序讀取該連結串列中的該節點,並且當讀取不到該鏈結串列的任何節點時,驅動該第一寫入電路用以儲存搜索失敗的資訊,使得該處理單元取得該搜索失敗的資訊;以及一比較器,耦接該配置寄存器、該讀取電路及該第二寫入電路,用以當判斷該配置寄存器的該搜索值與的該節點中之一者的一比較資料相同時,驅動該第二寫入電路用以儲存該搜索到節點的一起始位址及一對應結果,以及搜索成功的資訊,使得該處理單元取得該搜索到節點的該起始位址及該對應結果,以及該搜索成功的資訊。
- 如請求項5所述的鏈結串列搜索裝置,其中,當該比較器判斷該 配置寄存器的該搜索值與的該節點中之一者的該比較資料不同時,驅動該第一讀取電路讀取該連結串列中的下或前一節點。
- 如請求項5所述的鏈結串列搜索裝置,其中,該鏈結串列搜索引擎包含:一計數器,耦接該比較器及該第二寫入電路,於每次搜索作業開始時初始為0,其中,每次比較該配置寄存器的該搜索值及該節點中之一者的該比較資料時,該比較器將該計數器累加1,以及當判斷該配置寄存器的該搜索值與的該節點中之一者的一比較資料相同時,該比較器驅動該第二寫入電路儲存該計數器的值,使得該處理單元取得該計數器的值。
- 如請求項5所述的鏈結串列搜索裝置,其中,該處理單元設定該配置寄存器,用以儲存一遮罩,其中該比較器將每一該節點的該比較資料與該遮罩進行一邏輯及運算以產生一遮罩後比較資料,當判斷該遮罩後比較資料與該搜索值相同時,驅動該第二寫入電路用以儲存該搜索到節點的該起始位址及該對應結果,以及該搜索成功的資訊。
- 如請求項5所述的鏈結串列搜索裝置,其中,該處理單元設定該配置寄存器,用以儲存忽略位元的資訊,其中該比較器依據該忽略位元的資訊產生一遮罩,將每一該節點的該比較資料與該遮罩進行一邏輯及運算以產生一遮罩後比較資料,當判斷該遮罩後比較資料與該搜索值相同時,驅動該第二寫入電路用以儲存該搜索到節點的該起始位址及該對應結果,以及該搜索成功的資訊。
- 如請求項5所述的鏈結串列搜索裝置,其中,該第一寫入電路儲存該搜索到節點的該起始位址及該對應結果,以及該搜索成功的資訊至一結果寄存器。
- 如請求項5所述的鏈結串列搜索裝置,其中,該鏈結串列搜索引擎包含:一第一捷徑寄存器,儲存一第一組配置設定;一第二捷徑寄存器,儲存一第二組配置設定;以及一多工器,耦接該第一捷徑寄存器、該第二捷徑寄存器及該配置寄存器,其中,該處理器輸出選擇訊號給該多工器,用以將該第一捷徑寄存器及該第二捷徑寄存器中之一者耦接至該配置寄存器,使得該配置寄存器儲存該耦接捷徑寄存器中的該組配置設定。
- 如請求項5所述的鏈結串列搜索裝置,其中,該記憶體儲存多筆搜索紀錄,以及該鏈結串列搜索引擎包含:一第二讀取電路,耦接該配置寄存器,用以讀取該搜索紀錄中指出可以開始搜索但尚未搜索結束的搜索值,儲存該指出搜索值至該配置寄存器。
- 如請求項12所述的鏈結串列搜索裝置,其中,該處理單元提供該搜索紀錄中的該搜索值。
- 如請求項12所述的鏈結串列搜索裝置,其中,該第一寫入電路儲存該搜索到節點的該起始位址及該對應結果,以及該搜索成功的資訊至該記憶體中相應於該指出搜索值的一結果紀錄。
- 一種鏈結串列搜索方法,由一鏈結串列搜索引擎執行,包含:從一配置寄存器取得由一處理單元設定的一鏈結串列的一起始節點的記憶體位址,以及一搜索值;反覆執行一迴圈,用以從該起始節點開始依序取得並處理該鏈結串列中的多個節點,直到搜索成功或搜索失敗為止;當搜索成功時,儲存一搜索結果及搜索成功的資訊,使得該處理單元取得該搜索結果及該搜索成功的資訊;以及當搜索失敗時,儲存搜索失敗的資訊,使得該處理單元取得該搜索失敗的資訊,其中,該鏈結串列搜索引擎為專屬硬體,包含該配置寄存器,其中,該鏈結串列搜索引擎搜索該鏈結串列內容的期間,該處理單元並行地執行一任務,並週期性地檢查該鏈結串列搜索引擎是否搜索完畢。
- 如請求項15所述的鏈結串列搜索方法,其中,該鏈結串列包含多個節點,每一該節點包含一下或前一節點位址、一比較資料及一對應結果。
- 如請求項16所述的鏈結串列搜索方法,其中,該比較資料包含一實體儲存對照表的一主頁面編號,以及該對應結果包含該實體儲存對照表的一實體位置。
- 如請求項15所述的鏈結串列搜索方法,其中,該鏈結串列包含多個節點,該配置寄存器儲存每一該節點的資料結構資訊,並且該鏈結串列中的每一該節點的內容的取得是依據該資料結構資訊。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW107123751A TWI727185B (zh) | 2018-07-09 | 2018-07-09 | 鏈結串列搜索裝置及方法 |
CN201811194779.XA CN110704330B (zh) | 2018-07-09 | 2018-10-15 | 数据存取控制装置及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW107123751A TWI727185B (zh) | 2018-07-09 | 2018-07-09 | 鏈結串列搜索裝置及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202006565A TW202006565A (zh) | 2020-02-01 |
TWI727185B true TWI727185B (zh) | 2021-05-11 |
Family
ID=69192604
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW107123751A TWI727185B (zh) | 2018-07-09 | 2018-07-09 | 鏈結串列搜索裝置及方法 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN110704330B (zh) |
TW (1) | TWI727185B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113448487A (zh) * | 2020-03-25 | 2021-09-28 | 慧荣科技股份有限公司 | 写入闪存管理表的计算机可读取存储介质、方法及装置 |
CN113495850B (zh) * | 2020-04-08 | 2024-02-09 | 慧荣科技股份有限公司 | 管理垃圾回收程序的方法、装置及计算机可读取存储介质 |
TWI756854B (zh) * | 2020-04-27 | 2022-03-01 | 慧榮科技股份有限公司 | 管理資料儲存的方法及裝置以及電腦程式產品 |
CN113742255B (zh) * | 2021-08-26 | 2023-08-08 | 合肥康芯威存储技术有限公司 | 一种无效标记命令的处理方法、系统及数据存储设备 |
CN114327277A (zh) * | 2021-12-29 | 2022-04-12 | 深圳华电通讯有限公司 | 垃圾回收的异常处理方法、装置、计算机设备及存储介质 |
CN116361346B (zh) * | 2023-06-02 | 2023-08-08 | 山东浪潮科学研究院有限公司 | 基于掩码计算的数据表解析方法、装置、设备及存储介质 |
CN116383098B (zh) * | 2023-06-05 | 2023-09-12 | 成都佰维存储科技有限公司 | 地址索引方法、装置、可读存储介质及电子设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6067547A (en) * | 1997-08-12 | 2000-05-23 | Microsoft Corporation | Hash table expansion and contraction for use with internal searching |
CN1145881C (zh) * | 1997-06-30 | 2004-04-14 | 太阳微系统有限公司 | 管理链接表数据结构的方法和装置 |
TW201617885A (zh) * | 2014-11-14 | 2016-05-16 | 凱為公司 | 使用統一頁面表走查器快取記憶體來對tlb轉換進行快取記憶體 |
US9942169B1 (en) * | 2014-12-02 | 2018-04-10 | Adtran, Inc. | Systems and methods for efficiently searching for stored data |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100449708B1 (ko) * | 2001-11-16 | 2004-09-22 | 삼성전자주식회사 | 플래시 메모리 관리방법 |
DE112011102487T5 (de) * | 2010-07-27 | 2013-05-29 | International Business Machines Corporation | Zuordnen von logischen zu physischen Adressen in Halbleiterspeichereinheiten aufweisenden Speichersystemen |
US8417914B2 (en) * | 2011-01-06 | 2013-04-09 | Micron Technology, Inc. | Memory address translation |
KR20140057454A (ko) * | 2012-11-02 | 2014-05-13 | 삼성전자주식회사 | 비휘발성 메모리 장치 및 이와 통신하는 호스트 장치 |
KR101979735B1 (ko) * | 2012-11-02 | 2019-05-17 | 삼성전자 주식회사 | 비휘발성 메모리 시스템 및 이와 통신하는 호스트 |
CN107291625B (zh) * | 2017-06-19 | 2020-06-09 | 济南浪潮高新科技投资发展有限公司 | 一种用于Nand Flash的指针式逻辑地址映射表实现方法 |
-
2018
- 2018-07-09 TW TW107123751A patent/TWI727185B/zh active
- 2018-10-15 CN CN201811194779.XA patent/CN110704330B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1145881C (zh) * | 1997-06-30 | 2004-04-14 | 太阳微系统有限公司 | 管理链接表数据结构的方法和装置 |
US6067547A (en) * | 1997-08-12 | 2000-05-23 | Microsoft Corporation | Hash table expansion and contraction for use with internal searching |
TW201617885A (zh) * | 2014-11-14 | 2016-05-16 | 凱為公司 | 使用統一頁面表走查器快取記憶體來對tlb轉換進行快取記憶體 |
US9942169B1 (en) * | 2014-12-02 | 2018-04-10 | Adtran, Inc. | Systems and methods for efficiently searching for stored data |
Also Published As
Publication number | Publication date |
---|---|
CN110704330B (zh) | 2022-11-01 |
TW202006565A (zh) | 2020-02-01 |
CN110704330A (zh) | 2020-01-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI727185B (zh) | 鏈結串列搜索裝置及方法 | |
CN110765156A (zh) | 链表搜索装置及方法 | |
TWI417722B (zh) | 階層式不可改變的內容可定址的記憶體處理器 | |
US9385748B2 (en) | Parallel dictionary-based compression encoder | |
CN107608750B (zh) | 用于型式辨识的装置 | |
US8549271B1 (en) | Method, system, and computer readable medium for updating and utilizing the contents of a non-essential region of a memory device | |
US8572106B1 (en) | Memory management in a token stitcher for a content search system having pipelined engines | |
WO2020007288A1 (zh) | 管理内存数据及在内存中维护数据的方法和系统 | |
US10049035B1 (en) | Stream memory management unit (SMMU) | |
CN108268596B (zh) | 搜索存储在存储器中的数据的方法和系统 | |
US8935270B1 (en) | Content search system including multiple deterministic finite automaton engines having shared memory resources | |
US9507725B2 (en) | Store forwarding for data caches | |
WO2017107835A1 (zh) | 浏览器启动方法及装置 | |
WO2023093023A1 (zh) | 一种敏感词过滤方法及装置、存储介质 | |
WO2017215030A1 (zh) | 一种有查询功能的存储器及其查询方法 | |
US11023374B2 (en) | Apparatus and method and computer program product for controlling data access | |
US8700593B1 (en) | Content search system having pipelined engines and a token stitcher | |
CN117393046B (zh) | 一种空间转录组测序方法、系统、介质及设备 | |
CN1208894A (zh) | 数据处理装置 | |
WO2023028833A1 (zh) | 一种数据处理的方法、装置、设备、程序及介质 | |
CN113835927B (zh) | 一种指令执行方法、计算设备及存储介质 | |
WO2023246625A1 (zh) | 一种运行程序的方法及装置 | |
CN111722788B (zh) | 存储器装置以及存储器的存取方法 | |
WO2021129048A1 (zh) | 一种文件数据写入方法、装置、设备及存储介质 | |
US7596668B2 (en) | Method, system and program product for associating threads within non-related processes based on memory paging behaviors |