TW202234249A - 連結串列搜尋方法與連結串列搜尋裝置 - Google Patents
連結串列搜尋方法與連結串列搜尋裝置 Download PDFInfo
- Publication number
- TW202234249A TW202234249A TW110105985A TW110105985A TW202234249A TW 202234249 A TW202234249 A TW 202234249A TW 110105985 A TW110105985 A TW 110105985A TW 110105985 A TW110105985 A TW 110105985A TW 202234249 A TW202234249 A TW 202234249A
- Authority
- TW
- Taiwan
- Prior art keywords
- node
- data
- memory
- field
- address
- 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/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9024—Graphs; Linked lists
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9027—Trees
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/906—Clustering; Classification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1041—Resource optimization
Abstract
一種連結串列搜尋方法,用以利用快取記憶體來搜尋連結串列,包含以下步驟:將連結串列寫入記憶體中,連結串列包含第一與第二節點,第一與第二節點皆具有資料與指標,且第一節點的指標指示第二節點的位址;將第一節點的資料寫入快取記憶體中的標籤記憶體中的第一欄位,並將第一節點的位址寫入快取記憶體中的資料記憶體中的第一欄位,標籤記憶體的第一欄位對應資料記憶體的第一欄位;將第二節點的資料寫入標籤記憶體中的第二欄位,並將第二節點的位址寫入資料記憶體中的第二欄位,標籤記憶體的第二欄位對應資料記憶體的第二欄位;及當根據第二節點的資料搜尋其在連結串列中的位址時,在標籤記憶體中搜尋第二節點的資料以直接得到第二節點的位址。
Description
本發明是關於一種資料搜尋方法,特別是關於一種連結串列搜尋方法與連結串列搜尋裝置。
連結串列包含了用以儲存資料的多個節點,其中每個節點中除了儲存資料外,更包含指標指示了下一個節點的位址。因連結串列具有上述特性,當增減節點時,連結串列僅需修改新增/刪除的節點前後的節點中的指標,而不需要改變原先已存在的節點在記憶體中的位置。因此,對於儲存動態資料來說,連結串列具有方便的操作優勢。然而,在尋找連結串列中的節點時,搜尋的工作必須依照節點中指標所建立的串列一個一個向下搜尋,當連結串列的節點越來越多時,上述搜尋的操作不僅消耗處理器更多的運算時間且耗電,造成效能低落。因此,要如何快速地在連結串列中搜尋到目標節點已成為本領域極欲解決的問題之一。
本發明揭露一種連結串列搜尋方法,用以利用]快取記憶體來搜尋連結串列。連結串列搜尋方法包含以下步驟:將連結串列寫入記憶體中,連結串列包含第一節點與第二節點,第一節點與第二節點皆具有資料與指標,且第一節點的指標指示第二節點的位址;將第一節點的資料寫入快取記憶體中的標籤記憶體中的第一欄位,並將第一節點的位址寫入快取記憶體中的資料記憶體中的第一欄位,標籤記憶體的第一欄位對應資料記憶體的第一欄位;將第二節點的資料寫入標籤記憶體中的第二欄位,並將第二節點的位址寫入資料記憶體中的第二欄位,標籤記憶體的第二欄位對應資料記憶體的第二欄位;及當根據第二節點的資料搜尋其在連結串列中的位址時,在標籤記憶體中搜尋第二節點的資料以直接得到第二節點的位址。
本發明揭露一種連結串列搜尋裝置,其包含記憶體、處理器、快取記憶體、寫入單元及搜尋單元。記憶體用以儲存連結串列,其中連結串列包含第一節點與第二節點。第一節點與第二節點皆具有資料與指標,且第一節點之指標指示第二節點的位址。處理器耦接記憶體,用以將連串列寫入記憶體中。寫入單元耦接處理器與一快取記憶體。快取記憶體包含標籤記憶體與資料記憶體。寫入單元用以分別將第一節點的資料與第二節點的資料寫入標籤記憶體中的第一欄位與第二欄位,並將第一節點的位址與第二節點的位址寫入資料記憶體中的第一欄位與第二欄位。搜尋單元耦接處理器以及快取記憶體,用以在當根據第二節點的資料搜尋第二節點在連結串列中的位址時,在標籤記憶體中搜尋第二節點的資料以直接得到第二節點的位址。
相較於習知技術,本發明的連結串列搜尋方法與裝置利用處理器外的快取記憶體來輔助連結串列的搜尋操作,以提昇使整體的搜尋速度。
圖1為依據本發明一些實施例,連結串列搜尋裝置10的示意圖。連結串列搜尋裝置10包含處理器100、記憶體200、快取(Cache)記憶體300、搜尋單元400與寫入單元500。如圖1所示,記憶體200、搜尋單元400與寫入單元500分別耦接處理器100,快取記憶體300耦接搜尋單元400與寫入單元500。在一些時實施例中,處理器100(例如中央處理器(central processing unit,CPU))包含其他快取記憶體。在一些實施例中,快取記憶體300為處理器100之外的一快取記憶體300,但不以此為限,本發明也可利用處理器內建的快取記憶體來操作為快取記憶體300。
處理器100用以在記憶體200中建立連結串列LL。請同時參考圖2。圖2下方的記憶體200中的連結串列LL包含節點N1、節點N2~節點Nn與節點N(n+1)等多個節點,各節點分別對應於資料D1~資料D(n+1)與指標P1~指標P(n+1)(每個節點分別對應一個資料以及一個指標)。處理器100用以將資料D1~資料D(n+1)分別寫入記憶體200中的位址A1~位址A(n+1),並將節點N1的指標P1指向節點N2的位址A2,以及將節點N2的指標P2指向節點N3的位址A3,其後之節點N3~節點Nn依此類推不再贅述,旨在使節點N1~N(n+1)依指向關係形成前述的連結串列LL。根據這樣的指向關係,若欲搜尋連結串列LL中某一個節點,例如節點N100時,習知的作法是利用處理器依照連結串列LL當中節點的順序在記憶體200中從節點N1開始,依序地搜尋,直到到達節點N100。而本發明實施例的連結串列搜尋裝置10可先利用寫入單元500將連結串列LL的節點的資料和位址寫入快取記憶體300中,當處理器100要搜尋記憶體200中連結串列LL中的某個節點時,連結串列搜尋裝置10利用搜尋單元400在快取記憶體300中尋找目標節點的資料,再對應地得到位址後,便可依據該位址讓處理器100對記憶體200中連結串列LL的該目標節點進行存取,此種搜尋操作可提升操作速度,並且降低功耗。細節說明於下。
圖2上方繪示的快取記憶體300當中包含作為標籤記憶體(tag RAM)310使用的區塊與作為資料記憶體(data RAM)320使用的區塊,但快取記憶體300中並非全數區塊皆用作標籤或資料記憶體使用。當處理器100在記憶體200中建立連結串列LL時,寫入單元500用以將資料D1~資料D(n+1)與位址A1~位址A(n+1)寫入快取記憶體300中。如圖2所示,寫入單元500將資料D1~資料(Dn+1)與位址A1~位址(An+1)分別寫入標籤記憶體310的區塊與資料記憶體320的區塊。
在一些實施例中,當處理器100新增一節點至連結串列LL中時,寫入單元500將新增節點的資料與位址寫入快取記憶體300的標籤記憶體310與資料記憶體320中。在一些實施例中,當處理器100從連結串列LL中刪除一節點時,寫入單元500刪除儲存在快取記憶體300中對應被刪除的節點的資料與位址。換言之,當處理器100對連結串列LL當中的節點進行增減時,寫入單元500亦在快取記憶體300中對應地增減新增或被刪除節點的資料與位址。
在一些實施例中,標籤記憶體310與資料記憶體320皆具有欄位R1、欄位R2~欄位Rm等多個欄位,標籤記憶體310的欄位R1、欄位R2~欄位Rm分別對應至資料記憶體320的欄位R1、欄位R2~欄位Rm(即,如圖2所示的列對應關係)。寫入單元500將資料D1~資料D(n+1)與位址A1~位址A(n+1)寫入標籤記憶體310的欄位R1、欄位R2~欄位Rm與資料記憶體320的欄位R1、欄位R2~欄位Rm中。例如,節點N1的資料D1與位址A1分別被寫入標籤記憶體310與資料記憶體320的欄位R1中,節點N2的資料D2與位址A2分別被寫入標籤記憶體310與資料記憶體320的欄位Ra中,及節點Nn的資料Dn與位址An分別被寫入標籤記憶體310與資料記憶體320的欄位Rm中。因此,節點N1、節點N2與節點Nn可分別對應至標籤記憶體310與資料記憶體320的欄位R1、欄位Ra與欄位Rm。應理解,圖2僅係示意圖,用以表示資料與位址的對應關係,標籤記憶體310的區塊與資料記憶體320的區塊於快取記憶體300當中的實體分布關係未必如圖所示。
當處理器100欲對節點Nn進行存取時,搜尋單元400用以搜尋快取記憶體300中對應節點Nn的欄位(即,如圖2所示的欄位Rm),以取得與節點Nn關聯的位址An,使處理器100可以依據位址An在記憶體200中對節點Nn進行存取。
詳細而言,在一些實施例中,處理器100將節點Nn的資料Dn傳輸給搜尋單元400,搜尋單元400在快取記憶體300中的標籤記憶體310中依序搜尋是否有符合資料Dn的欄位。在圖2的實施例中,搜尋單元400從欄位R1搜尋至欄位Rm時,比對標籤記憶體310的欄位Rm所儲存的資料與資料Dn相同,因此判斷比對成功。接著搜尋單元400從資料記憶體320的欄位Rm取得所儲存的位址An,並將取得的位址An傳輸給處理器100,使處理器可以依據位址An對節點Nn進行存取。
在一些實施例中,寫入單元500先將資料D1~資料D(n+1)分類,再將之寫入標籤記憶體310中。具體來說,以資料D1為例,寫入單元500將資料D1除上分類因子以取得一餘數,其中分類因子為大於1的正整數。接著,寫入單元500依據計算出的餘數選擇標籤記憶體310的欄位寫入。在一些實施例中,分類因子的值X等於籤記憶體310與資料記憶體320的欄位的數量(亦即m等於10,欄位Rm即為欄位R10)。因此,當寫入單元500在取餘數的時候,最多只會有X種餘數,且這些餘數可以一對一的分配至X個欄位中。例如,節點Nn的資料Dn為90,標籤記憶體310與資料記憶體320的欄位的數量為10,寫入單元500將90除上10以取得餘數為0。接著,寫入單元500將餘數0對應至標籤記憶體310與資料記憶體320的欄位Rm(R10),並且把為90的資料Dn寫入標籤記憶體310的欄位Rm中,及將節點Nn的的位址An寫入資料記憶體320的欄位Rm中。
在另一些實施例中,標籤記憶體310與資料記憶體320的欄位的數量為2的冪次方。如此一來,當寫入單元500對資料D1~D(n+1)取餘數時,僅需取資料D1~D(n+1)的最小有效位元(least significant bits,LSB)即為餘數,不需另做除法運算。例如,籤記憶體310與資料記憶體320的欄位的數量為32(2
5),寫入單元500取資料D1~D(n+1)的最後5的位元來做為餘數。
在一些實施例中,標籤記憶體310與資料記憶體320中的每個欄位僅能儲存一個節點的資料與位址。例如,當不同資料(例如資料D5與資料D7,圖2中未示,僅為舉例)具有相同餘數5時,寫入單元500在標籤記憶體310的欄位R5中使用資料D7將資料D5覆蓋,並在資料記憶體320的欄位R5中使用位址A7將位址A5覆蓋。
在一些實施例中,在搜尋節點N2時,處理器100將資料D2給予搜尋單元400,搜尋單元400接著將資料D2除上分類因子取餘數,接著再依據餘數去比對標籤記憶體310中對應的欄位Ra與資料D2。當資料D2與標籤記憶體310中對應的欄位Ra相等時,搜尋單元400取得資料記憶體320中欄位Ra所儲存的位址A2。處理器100再依據取得的位址A2對節點N2進行存取。
在一些實施例中,標籤記憶體310與資料記憶體320中的每個欄位可儲存多個節點的資料與位址。如圖3所示,快取記憶體300的標籤記憶體310與資料記憶體320的每個欄位的區塊包含4個組(set)S1~S4。在對應一個欄位的組中,每一個組S1~S4可分別儲存一個節點的資料與位址。換言之,標籤記憶體310與資料記憶體320的每個欄位可儲存4個節點的資料與位址。
在圖3的實施例中,當寫入單元500將節點N1~N(n+1)的資料D1~D(n+1)寫入標籤記憶體310時,寫入單元500將資料D1~D(n+1)除上分類因子以取餘數,再依據餘數對應的標籤記憶體310的欄位將資料D1~D(n+1)寫入標籤記憶體310與資料記憶體320當中。以圖3的實施例來解釋,資料D1~D(n+1)中具有餘數為3(除以10)的節點有3個(分別為73、03、63),其分別為被寫入標籤記憶體310的欄位R3的組S1、S2與S3,以及其位址(分別為0x3760、0x2040、0x4460)分別被寫入資料記憶體320的欄位R3的組S1、S2與S3。
請同時參考圖4。圖4為搜尋單元400在圖3所示的快取記憶體300中搜尋的操作示意圖。當處理器100欲對目標節點Nt(圖4中未示,僅為舉例)進行存取前,將目標節點Nt的目標資料Dt傳輸給搜尋單元400,使搜尋單元400依據目標資料Dt在快取記憶體300中取得目標節點Nt的目標位址At並將之傳輸給處理器100。處理器100再依據目標位址At在記憶體200中對目標節點Nt進行存取。
搜尋單元400包含比較器COM1~COM4、邏輯閘AND1~AND4及選擇器SE。比較器COM1~COM4用以接收處理器100傳輸來的目標資料Dt,以及分別耦接快取記憶體300的標籤記憶體310的組S1~S4。請同時參考圖3與圖4。例如,若目標資料Dt為節點Nn的資料Dn(如圖3所示,資料Dn的值為51)時,搜尋單元400對資料Dn(值為51)除上分類因子(欄數10)以取得餘數(值為1)。因此,搜尋單元400可比對目標資料Dt與標籤記憶體310中對應餘數為1的欄位R1的組S1~S4。比較器COM1~COM4分別用以比較目標資料Dt與標籤記憶體310中欄位R1的組S1~D4,並輸出比較結果至邏輯閘AND1~AND4。邏輯閘AND1~AND4分別對比較結果與資料記憶體中的欄位R1的組S1~S4進行及(AND)邏輯運算以輸出邏輯運算結果。選擇器SE1接著選擇邏輯閘AND1~AND4的邏輯運算結果中的一者輸出為目標位址At。
因為資料Dt與標籤記憶體310中欄位R1的組S3當中的值(Dn的值為51)相同,所以比較器COM3輸出比較結果指示比對成功(cache hit)。接著邏輯閘AND3對比較器COM3輸出的比較結果與資料記憶體320中欄位R1的組S3(位址An,其值為0x2560)進行AND邏輯運算以將位址An輸出為目標位址At並送至處理器100。
在一些實施例中,選擇器SE1由或閘(OR gate)實現。在另一些實施例中,選擇器SE1由多工器(MUX)實現。
上述搜尋單元400中之設置引為釋例之用途,本發明不限於此。例如,在其他實施例中,搜尋單元400由如示於圖5中的搜尋單元600取代。
請同時參考圖3與圖5。圖5為搜尋單元600在圖3所示的快取記憶體300中搜尋的操作示意圖。搜尋單元600包含比較器COM5~COM8、邏輯閘AND5~AND8、邏輯閘OR2、編碼器EN及選擇器SE2。比較器COM5~COM8用以接收處理器100傳輸來的目標資料Dt,以及分別耦接快取記憶體300的標籤記憶體310的組S1~S4。例如,若目標資料Dt為節點Nn的資料Dn(如圖3所示,資料Dn的值為51)時,搜尋單元600對資料Dn(值為51)除上分類因子(欄數10)以取得餘數(值為1)。因此,搜尋單元600可比對目標資料Dt與標籤記憶體310中對應餘數為1的欄位R1的組S1~S4。比較器COM5~COM8分別用以比較目標資料Dt與標籤記憶體310中欄位R1的組S1~S4,並輸出比較結果至邏輯閘AND5~AND8。在此實施例中,快取記憶體300的每一欄位中的每一組更包含有效指標記憶體,如圖5中所示的V1~V4。有效指標記憶體V1~V4用以指示其對應的組S1~S4是否有被寫入。例如,欄位R1的組S1被寫入,有效指標記憶體V1的值被更新為1。邏輯閘AND5~AND8分別對比較結果與對應的有效指標記憶體V1~V4進行及(AND)邏輯運算以輸出邏輯運算結果。邏輯閘OR接著對輸出的邏輯運算結果執行或(OR)邏輯運算。當邏輯閘AND5~AND8輸出的邏輯運算結果有比對成功者,邏輯閘OR用以輸出訊號CH指示比對成功(cache hit)。另一方面,編碼器EN對邏輯閘AND5~AND8輸出的邏輯運算結果進行編碼,並產生編碼訊號EC至選擇器SE2。編碼訊號EC用以指示在快取記憶體300的欄位R1中的哪一組(S1~S4)比對成功。選擇器SE2接著依據編碼訊號EC選擇資料記憶體320中的資料記憶體320對應的組(在此例中為組S3)輸出為目標位址At
上文的敘述簡要地提出了本發明某些實施例之特徵,而使得本發明所屬技術領域具有通常知識者能夠更全面地理解本發明內容的多種態樣。本發明所屬技術領域具有通常知識者當可明瞭,其可輕易地利用本發明內容作為基礎,來設計或更動其他製程與結構,以實現與此處該之實施方式相同的目的和/或達到相同的優點。本發明所屬技術領域具有通常知識者應當明白,這些均等的實施方式仍屬於本發明內容之精神與範圍,且其可進行各種變更、替代與更動,而不會悖離本發明內容之精神與範圍。
10:連結串列搜尋裝置
100:處理器
200:記憶體
300:快取記憶體
310:標籤記憶體
320:資料記憶體
400:搜尋單元
500:寫入單元
600:搜尋單元
A(n+1):位址
A1:位址
A2:位址
An:位址
AND1:邏輯閘
AND2:邏輯閘
AND3:邏輯閘
AND4:邏輯閘
AND5:邏輯閘
AND6:邏輯閘
AND7:邏輯閘
AND8:邏輯閘
At:目標位址
CH:訊號
COM1:比較器
COM2:比較器
COM3:比較器
COM4:比較器
COM5:比較器
COM6:比較器
COM7:比較器
COM8:比較器
D(n+1):資料
D1:資料
D2:資料
Dn:資料
Dt:目標資料
EC:編碼訊號
EN:編碼器
LL:連結串列
N(n+1):節點
N1:節點
N2:節點
Nn:節點
OR:邏輯閘
P(n+1):指標
P1:指標
P2:指標
Pn:指標
R1:欄位
R10:欄位
R2:欄位
R3:欄位
R4:欄位
R5:欄位
Ra:欄位
Rm:欄位
S1:組
S2:組
S3:組
S4:組
SE1:選擇器
SE2:選擇器
V1:有效指標記憶體
V2:有效指標記憶體
V3:有效指標記憶體
V4:有效指標記憶體
在閱讀了下文實施方式以及附隨圖式時,能夠最佳地理解本發明的多種態樣。應注意到,根據本領域的標準作業習慣,圖中的各種特徵並未依比例繪製。事實上,為了能夠清楚地進行描述,可能會刻意地放大或縮小某些特徵的尺寸。
圖1為本發明一些實施例中,連結串列搜尋裝置的示意圖。
圖2為本發明一些實施例中,連結串列在快取記憶體中的示意圖。
圖3為本發明其他些實施例中,連結串列在快取記憶體中的示意圖。
圖4為本發明一些實施例中,搜尋單元的操作示意圖。
圖5為本發明另一些實施例中,搜尋單元的操作示意圖。
10:連結串列搜尋裝置
100:處理器
200:記憶體
300:快取記憶體
400:搜尋單元
500:寫入單元
LL:連結串列
Claims (10)
- 一種連結串列搜尋方法,用以利用一快取記憶體來搜尋一連結串列,包含: 將該連結串列寫入一記憶體中,該連結串列包含一第一節點與一第二節點,該第一節點與該第二節點皆具有一資料與一指標,且該第一節點之該指標指示該第二節點的位址; 將該第一節點的資料寫入該快取記憶體中的一標籤記憶體中的一第一欄位,並將該第一節點的位址寫入該快取記憶體中的一資料記憶體中的一第一欄位,該標籤記憶體的該第一欄位對應該資料記憶體的該第一欄位; 將該第二節點的資料寫入該標籤記憶體中的一第二欄位,並將該第二節點的位址寫入該資料記憶體中的一第二欄位,該標籤記憶體的該第二欄位對應該資料記憶體的該第二欄位;及 當根據該第二節點的資料搜尋該第二節點在該連結串列中的位址時,在該標籤記憶體中搜尋該第二節點的資料以直接得到該第二節點的位址。
- 如請求項1中的連結串列搜尋方法,其中在該標籤記憶體中搜尋該第二節點的資料以直接得到該第二節點的位址包含: 依序比對該第二節點的資料與該標籤記憶體中的該第一欄位與該第二欄位是否相同;及 當該標籤記憶體中的該第二欄位與該第二節點的資料相同時,從該資料記憶體的該第二欄位取得該第二節點的位址。
- 如請求項2中的連結串列搜尋方法,其中在該標籤記憶體中搜尋該第二節點的資料以直接得到該第二節點的位址更包含: 依據該第二節點的位址,對該第二節點進行存取。
- 如請求項1中的連結串列搜尋方法,其中該連結串列更包含一第三節點,該第三節點具有一資料與一指標,且該第二節點之該指標指示該第三節點的位址,其中該連結串列搜尋方法更包含: 對該第一節點的資料除上一分類因子,以取得一第一餘數; 對該第二節點的資料除上該分類因子,以取得一第二餘數; 對該第三節點的資料除上該分類因子,以取得一第三餘數,其中該第一餘數不同於該第二餘數; 當該第一餘數與該第三餘數相等時,將該第三節點的資料寫入該標籤記憶體中的該第一欄位,並將該第三節點的位址寫入該資料記憶體中的該第一欄位; 當該第三餘數與該第二餘數相等時,將該第三節點的資料寫入該標籤記憶體中的該第二欄位,並將該第三節點的位址寫入該資料記憶體中的該第二欄位;及 當該第三餘數與該第一餘數及該第二餘數皆不相等時,將該第三節點的資料寫入該標籤記憶體中的一第三欄位,並將該第三節點的位址寫入該資料記憶體中的一第三欄位。
- 如請求項4中的連結串列搜尋方法,其中將該第三節點的資料寫入該標籤記憶體中的該第一欄位,並將該第三節點的位址寫入該資料記憶體中的該第一欄位包含: 在該標籤記憶體中的該第一欄位上,用該第三節點的資料覆蓋該第一節點的資料;及 在該資料記憶體中的該第一欄位上,用該第三節點的位址覆蓋該第一節點的位址。
- 如請求項4中的連結串列搜尋方法,其中將該第二節點的資料寫入該快取記憶體中的該標籤記憶體中的該第二欄位,並將該第二節點的位址寫入該快取記憶體中的該資料記憶體中的該第二欄位包含: 將該第二節點的資料寫入該快取記憶體中的該標籤記憶體中的該第二欄位的一第一區,並將該第二節點的位址寫入該快取記憶體中的該資料記憶體中的該第二欄位一第一區;其中將該第三節點的資料寫入該標籤記憶體中的該第二欄位,並將該第三節點的位址寫入該資料記憶體中的該第二欄位包含: 將該第三節點的資料寫入該快取記憶體中的該標籤記憶體中的該第二欄位的一第二區,並將該第一節點的位址寫入該快取記憶體中的該資料記憶體中的該第二欄位一第二區。
- 如請求項6中的連結串列搜尋方法,其中在該標籤記憶體中搜尋該第二節點的資料以直接得到該第二節點的位址包含: 比對該第二節點的資料與該標籤記憶體中的該第二欄位的該第一區與該第二區是否相同;及 當該標籤記憶體中的該第二欄位的該第一區與該第二節點的資料相同時,從得該資料記憶體的該第二欄位的該第一區取得該第二節點的位址。
- 如請求項4中的連結串列搜尋方法,其中該標籤記憶體與該資料記憶體的欄位的數量等於該分類因子的值。
- 如請求項1中的連結串列搜尋方法,更包含: 新增一第三節點至該連結串列中,該第三節點具有一資料;及 將該第三節點的資料寫入該標籤記憶體中的一第三欄位,並將該第三節點的位址寫入該資料記憶體中的一第三欄位。
- 一種連結串列搜尋裝置,包含 一記憶體,用以儲存一連結串列,該連結串列包含一第一節點與一第二節點,該第一節點與該第二節點皆具有一資料與一指標,且該第一節點之該指標指示該第二節點的位址; 一處理器,耦接該記憶體,用以將該連結串列寫入該記憶體中; 一寫入單元,耦接該處理器以及一快取記憶體,該快取記憶體包含一標籤記憶體與一資料記憶體,其中該寫入單元用以分別將該第一節點的資料與該第二節點的資料寫入該標籤記憶體中的一第一欄位與一第二欄位,並將該第一節點的位址與該第二節點的位址寫入該資料記憶體中的一第一欄位與一第二欄位;及 一搜尋單元,耦接該處理器以及該快取記憶體,用以在當根據該第二節點的資料搜尋該第二節點在該連結串列中的位址時,在該標籤記憶體中搜尋該第二節點的資料以直接得到該第二節點的位址。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW110105985A TWI774245B (zh) | 2021-02-20 | 2021-02-20 | 連結串列搜尋方法與連結串列搜尋裝置 |
US17/236,980 US11494305B2 (en) | 2021-02-20 | 2021-04-21 | Linked list searching method and linked list searching device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW110105985A TWI774245B (zh) | 2021-02-20 | 2021-02-20 | 連結串列搜尋方法與連結串列搜尋裝置 |
Publications (2)
Publication Number | Publication Date |
---|---|
TWI774245B TWI774245B (zh) | 2022-08-11 |
TW202234249A true TW202234249A (zh) | 2022-09-01 |
Family
ID=82900842
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW110105985A TWI774245B (zh) | 2021-02-20 | 2021-02-20 | 連結串列搜尋方法與連結串列搜尋裝置 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11494305B2 (zh) |
TW (1) | TWI774245B (zh) |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW556077B (en) * | 2001-06-05 | 2003-10-01 | Via Tech Inc | Controller for improving buffer management efficiency and the buffer management method |
TW580619B (en) * | 2002-04-03 | 2004-03-21 | Via Tech Inc | Buffer control device and the management method |
US7035988B1 (en) | 2003-03-17 | 2006-04-25 | Network Equipment Technologies, Inc. | Hardware implementation of an N-way dynamic linked list |
WO2008150927A2 (en) * | 2007-05-30 | 2008-12-11 | Schooner Information Technology | System including a fine-grained memory and a less-fine-grained memory |
US8219776B2 (en) * | 2009-09-23 | 2012-07-10 | Lsi Corporation | Logical-to-physical address translation for solid state disks |
US8788505B2 (en) * | 2011-04-27 | 2014-07-22 | Verisign, Inc | Systems and methods for a cache-sensitive index using partial keys |
US10055150B1 (en) * | 2014-04-17 | 2018-08-21 | Bitmicro Networks, Inc. | Writing volatile scattered memory metadata to flash device |
US10353822B2 (en) * | 2016-03-25 | 2019-07-16 | Home Box Office, Inc. | Cache map with sequential tracking for invalidation |
US10146438B1 (en) * | 2016-06-29 | 2018-12-04 | EMC IP Holding Company LLC | Additive library for data structures in a flash memory |
CN109992535B (zh) * | 2017-12-29 | 2024-01-30 | 华为技术有限公司 | 一种存储控制方法、装置和系统 |
US10853219B2 (en) * | 2019-04-30 | 2020-12-01 | Intel Corporation | Real-time input/output bandwidth estimation |
US11163699B2 (en) * | 2020-03-30 | 2021-11-02 | EMC IP Holding Company LLC | Managing least recently used cache using reduced memory footprint sequence container |
-
2021
- 2021-02-20 TW TW110105985A patent/TWI774245B/zh active
- 2021-04-21 US US17/236,980 patent/US11494305B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US11494305B2 (en) | 2022-11-08 |
TWI774245B (zh) | 2022-08-11 |
US20220269608A1 (en) | 2022-08-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR920005280B1 (ko) | 고속 캐쉬 시스템 | |
US4493026A (en) | Set associative sector cache | |
US11182304B2 (en) | Memory array page table walk | |
CA1180463A (en) | Method and apparatus for hashing cache addresses in a cached disk storage system | |
US3675215A (en) | Pseudo-random code implemented variable block-size storage mapping device and method | |
US5426750A (en) | Translation lookaside buffer apparatus and method with input/output entries, page table entries and page table pointers | |
EP3964967A1 (en) | Cache memory and method of using same | |
JPH03194632A (ja) | 変換予見にもとづくキャッシュアクセス | |
US20090094435A1 (en) | System and method for cache access prediction | |
US5241638A (en) | Dual cache memory | |
US6745291B1 (en) | High speed LRU line replacement system for cache memories | |
US7472227B2 (en) | Invalidating multiple address cache entries | |
US5218687A (en) | Method and apparatus for fast memory access in a computer system | |
US11258539B2 (en) | Technologies for performing encoding of data symbols for column read operations | |
US8880845B2 (en) | Memory system and operating method thereof | |
US20220317935A1 (en) | Key-value data storage system using content addressable memory | |
CN115269454A (zh) | 数据访问方法、电子设备和存储介质 | |
CN114637700A (zh) | 针对目标虚拟地址的地址转换方法、处理器及电子设备 | |
TWI774245B (zh) | 連結串列搜尋方法與連結串列搜尋裝置 | |
US5295253A (en) | Cache memory utilizing a two-phase synchronization signal for controlling saturation conditions of the cache | |
US20140013054A1 (en) | Storing data structures in cache | |
US5721863A (en) | Method and structure for accessing semi-associative cache memory using multiple memories to store different components of the address | |
CN114969022A (zh) | 链表搜索方法与链表搜索装置 | |
TW201824270A (zh) | 積體電路 | |
US20210294799A1 (en) | Sparse column-aware encodings for numeric data types |