TW202305616A - 用於二進制搜尋的方法和系統 - Google Patents
用於二進制搜尋的方法和系統 Download PDFInfo
- Publication number
- TW202305616A TW202305616A TW110126500A TW110126500A TW202305616A TW 202305616 A TW202305616 A TW 202305616A TW 110126500 A TW110126500 A TW 110126500A TW 110126500 A TW110126500 A TW 110126500A TW 202305616 A TW202305616 A TW 202305616A
- Authority
- TW
- Taiwan
- Prior art keywords
- binary search
- storage device
- value
- search
- memory
- Prior art date
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本發明提供了一種二進制搜尋的方法和系統。該方法包括提供具有M個條目的儲存設備,每個條目存儲一個值;提供包括N個暫存器的索引暫存器暫存器,其中N個暫存器暫存器將存儲設備劃分為N-1、N或N+1個搜尋區域;其中M和N為整數且N<M;其中,當在儲存設備中搜尋目標值時,利用索引暫存器與目標值比較,即可確定目標值落在某相鄰的兩個暫存器之間,並在這兩個暫存器之間的儲存設備的位址進行搜尋。
Description
本發明涉及一種用於二進制搜尋的方法和系統,更具體地,涉及一種用於具有恆定最大響應時間的可擴展硬體二進制搜尋設計的方法和系統。
二進制搜尋,也稱為半區間搜尋、對數搜尋或二分截斷演算法。是一種搜尋演算法,其在已排序的數組中找到目標值的位置。二進制搜尋將目標值與數組的中間元素進行比較。如果中間元素正好是要搜尋的元素,則搜尋結束。如果搜尋目標值大於或者小於中間元素,則在陣列大於或小於中間元素的那一半區間中搜尋。並繼續搜尋剩餘的一半區間,再次取中間元素與目標值進行比較,並重複此操作直到找到目標值。如果搜尋範圍結束,則目標不在數組中。
請同時參考圖1A和圖1B,其說明了傳統的二分搜尋。
從圖A中可以看出,二分搜尋表存儲在記憶體中,即將進行二分搜尋。記憶體包括幾個位址,從#0、#1 到#15。每個位址存儲一個s值。例如,#0 存儲值 3,#4 存儲值 20,#13 存儲值 87。現在請求搜尋查詢。搜尋查詢請求搜尋記憶體中是否存在值 75。
參見圖1A,傳統的二分搜尋方法首先執行步驟1,包括以下子步驟:(1)讀取存儲在#7記憶體位址中的值; (2)#7中找到值47,確定47<75; (3)然後確定目標值沒有在#0~#6的範圍內,不需要進行搜尋,因為值是按順序存儲的,如圖1A所示。
傳統的二分搜尋進行到步驟2,該步驟還包括以下子步驟: (1)讀取存儲位址#11中存儲的值; (2)#11中找到值72,確定72<75; (3)然後確定沒有搜尋#8~#10的必要,因為值是按順序存儲的。
參見圖1B,傳統二分搜尋方法的步驟3,步驟3還執行以下子步驟:(1)讀取存儲在#13記憶體位址中的值; (2)#13中找到值87,確定87>75; (3)然後確定沒有搜尋#14~#15的必要,因為值是按順序存儲的。
傳統的二分搜尋最後進行到步驟4,該步驟還包括以下子步驟:(1)讀取存儲在#12記憶體位址中的值; (2) 發現記憶體位址#12中存有值80; (3)可以得出結論,75在記憶體中不存在。
因此,傳統的硬體二分搜尋設計存在一定的缺陷,例如通過硬體對錶項進行排序和插入需要復雜的邏輯電路設計和更多的執行時間。此外,對於一個有 M 個條目的表,二分搜尋的最大響應時間是 log
2M。而且,更大的表大小導致更大的最大響應時間。
更進一步,對於另一種傳統的BCAM,它提供了更短的搜尋時間,但是需要更大的電路面積,這導致更高的成本。
本發明涉及一種二進制搜尋方法,包括:提供具有 M 個條目的存儲設備,每個條目存儲一個值;提供包括N個暫存器的索引暫存器,其中N個暫存器將存儲設備劃分為N-1、N或N+1個搜尋區域;其中M和N為整數且N<M;其中,當在存儲設備中搜尋目標值時,確定目標值落在相鄰的兩個暫存器之間,只剩下兩個暫存器之間的存儲設備的位址進行搜尋。
較佳地,所述暫存器是從所述存儲設備的M個條目中提取的。
較佳地,所述存儲設備中存儲的值按從小到大的順序排列。
較佳地,所述存儲設備中存儲的值按從大到小的順序排列。
較佳地,所述排序由軟體進行。
本發明涉及一種二進制搜尋系統,包括:存儲設備,該存儲設備包括M個條目,每個條目存儲一個值;和索引暫存器,索引暫存器包括N個暫存器,N個暫存器將存儲設備劃分為N-1、N或N+1個搜尋區;其中M和N為整數且N<M;其中,當在記憶體中搜尋目標值時,確定目標值落在相鄰的兩個暫存器之間,只剩下兩個暫存器之間的記憶體位址進行搜尋。
較佳地,所述暫存器是從所述存儲設備的M個條目中提取的
較佳地,所述存儲設備中存儲的值按從小到大的順序排列。
較佳地,所述存儲設備中存儲的值按從大到小的順序排列。
較佳地,所述排序由軟體進行。
除非另外定義,否則本文使用的所有技術和科學術語具有與本公開所屬領域的技術人員通常理解的相同的含義。將進一步理解術語;例如在常用詞典中定義的那些,應被解釋為具有與其在相關技術和本公開的上下文中的含義一致的含義,並且除非明確如此定義,否則不會以理想化或過於正式的含義進行解釋在此處。
在整個說明書中對“一個實施例”或“一個實施例”的引用意味著結合該實施例描述的特定特徵、結構或特性被封包括在至少一個實施例中。因此,在本說明書各處出現的短語“在一個實施例中”或“在一個實施例中”不一定都指代相同的實施例。此外,特定特徵、結構或特性可以在一個或多個實施例中以任何合適的方式組合。
請參考圖2A-2C。圖2A-2C為本發明改進後的二分搜尋方法的示意圖。此外,本發明還可以理解為一種改進的二進制搜尋,在記憶體和暫存器中具有額外的二進制搜尋表。
如圖2A所示,多個值存儲在記憶體201中。記憶體201包括16個位址,編號從#0到#15。然而,記憶體中的位址數量不受限制。本領域普通技術人員可以將本發明的公開內容應用到具有更多位址的其他記憶體中。
回到圖2A,記憶體201的每個位址存儲一個值。例如,位址#0存儲值3,位址#6存儲值43,位址#14存儲值94。所描述和如圖所示的值僅用於示例目的,不應限製本發明的範圍發明。
每個值以從小到大的順序存儲。當這些值進入記憶體201時,可以通過軟體進行排序。但是,排序的方法對於本領域普通技術人員來說是公知的,在此不再贅述。
可以相應地修改排序。也就是說,每個值可以按照從大到小的順序排列,本發明仍然可以適用。
進一步如圖2A所示,還提供了索引暫存器202。索引暫存器202包括四個位址,即#0、#5、#10和#15。對於每個位址,值 3、值 31、值 67 和值 98 分別存儲在位址 #0、#5、#10 和 #15 中。接下來,請求進來。請求詢問值75是否存在於記憶體201中。索引暫存器202可以是任何形式。也就是說,索引暫存器202可以實現為軟體或硬體。
接下來參考圖2B,進一步說明了請求進來後的步驟1。對於步驟1,根據索引暫存器202中記錄的信息,可以發現75大於67且小於比98。即67 < 75 < 98。因此,位址#0 到#9 以及位址#10 和位址#15 可以排除搜尋,因為目標值75 落在67 之間(存儲在#10)和98(存儲在#15 中),使搜尋從位址#11 到位址#14 執行。從圖可以看出,在未經記憶體讀取的情況下,這種索引暫存器202有助於排除一半以上的位址。
接下來參考圖2C,其示出了步驟2和步驟3。在步驟2中,讀取存儲在位址#12中的值。發現值80存儲在位址#80中。由於值80大於目標值75,並且在每個存儲值按順序排列的前提下,很快就會發現不需要從位址#13到#14搜尋,因為存儲在兩個位址必須大於值 75。
本發明進一步進行到步驟3,接下來讀取存儲在記憶體位址#11中的值。然後發現位址#11中存儲的值為72。這樣的值72是目前沒有排除的最後一個值。然而,由於 72 不等於 75,因此可以得出結論,值 75 不存在於記憶體 201 中。
回到圖2C的步驟2,本領域普通技術人員可以相應地調整讀取其他位址中存儲的值(例如,可以不讀取#12中的值,而是可以讀取13中存儲的值)
接下來參考圖3,其提供了本發明的改進的二進制搜尋方法的一般說明。
假設記憶體301包括M個表項,編號為表項1、表項2……到表項M。每個表項中存儲有一個值,所有值按從小到大的順序排列。排序可以通過軟體的輔助來完成,由於排序的相關技術為本領域的常規技術,為方便起見,不再贅述。
可以相應地修改排序。也就是說,每個值可以按照從大到小的順序排列,本發明仍然可以適用。
再次參考圖3,提供了索引暫存器302。索引暫存器302包括N個區域,編號為Reg 1、Reg 2…到Reg N。這N個區域將二分搜尋表劃分為N+1個二分搜尋區域,標記為Binary Search Area 1、Binary Search Area 2… to Binary搜尋區域 N+1。
應用上述步驟,本發明改進的二分搜尋可以進一步減少計算資源。
因此,表格條目由軟體排序。在設置記憶體中具有 M 個條目的硬體二進制搜尋表的內容時,軟體還設置了額外的 N 個索引暫存器 (N<M),每個索引暫存器包含相同的 ([M/(N+1)]*K)'th 個表項,其中 K 的範圍從 1 到 N。
需要說明的是,N個區域是從記憶體的位址中提取的。例如,在圖中。如圖2A所示,索引暫存器202具有四個區域,分別從位址#0、位址#5、位址#10和位址#15中提取。
還需要說明的是,如果將記憶體的首尾位址都提取出來,則劃分的搜尋區域將下降到N-1個。如果提取了記憶體首尾位址中的一個,則分區搜尋區域為N。如果沒有提取記憶體首尾位址,則分區搜尋區域為N+1。
應用上述步驟,本發明改進的二分搜尋可以進一步減少計算資源。
因此,表格條目由軟體排序。在設置記憶體中具有 M 個條目的硬體二進制搜尋表的內容時,軟體還設置了額外的 N 個索引暫存器 (N<M),每個索引暫存器包含相同的([M/(N+1)]*K) 'th 個表項,其中 K 的範圍從 1 到 N。
需要說明的是,N個區域是從記憶體的位址中提取的。例如,在圖中。如圖2A所示,索引暫存器202具有四個區域,分別從位址#0、位址#5、位址#10和位址#15中提取。
還需要說明的是,如果將記憶體的首尾位址都提取出來,則劃分的搜尋區域將下降到N-1個。如果提取了記憶體首尾位址中的一個,則分區搜尋區域為N。如果沒有提取記憶體首尾位址,則分區搜尋區域為N+1。
通過索引暫存器中存儲的信息,記憶體中的目標二進制搜尋區域顯著減少,並且無論表大小有多大,搜尋區域的大小都是固定的。最大二分搜尋時間上限為 log
2((M-N)/(N+1))。
綜上所述,對於本發明,還可以進一步理解,在軟體的輔助下,無論硬體表的大小有多大,本發明的二分搜尋在記憶體上的最大搜尋時間上限都可以是固定的。
綜上所述,本發明的目的之一是,本發明控制二分搜尋的最大搜尋時間上限以適應性能要求。
此外,本發明可以應用於各種環境,例如所有硬體二分搜尋表設計,無論表大小有多大,透過軟體協助,限制其最大搜尋響應時間。
綜上所述,根據本發明,由軟體處理表單條目排序和插入額外的索引暫存器。這種設計降低了硬體複雜性。
進一步地,通過增加適當數量的索引暫存器,可以控制最大二分搜尋響應時間以滿足性能要求。不一定需要高成本的 BCAM 作為解決方案。
綜上所述,本發明具有一定的潛在應用和市場。例如,對於所有硬體二進制搜尋表設計,無論表大小有多大,都需要有限的最大響應時間。
綜上所述,本發明提供了一種具有固定最大響應時間的可擴展硬體二進制搜尋設計,其中表項排序和插入由軟體處理。此外,還增加了適量的索引暫存器來記錄記憶體的內容。使用索引暫存器,目標二進制搜尋區域只是表單的一小部分,搜尋區域大小保持不變,但可使整個搜尋表單大小增加。
可見本揭露在突破先前之技術下,確實已達到所欲增進之功效,且也非熟悉該項技藝者所易於思及,其所具之進步性、實用性,顯已符合專利之申請要件,爰依法提出專利申請。
以上所述僅為舉例性,而非為限制性者。其它任何未脫離本揭露之精神與範疇,而對其進行之等效修改或變更,均應該封包含於後附之申請專利範圍中。
201、301:記憶體
202、302:索引暫存器
圖1A-1B說明了傳統的二進制搜尋;
圖2A-2C說明了本發明的改進的二進制搜尋方法;和
圖3提供了本發明的改進的二進制搜尋方法的一般說明。
201:記憶體
202:索引暫存器
Claims (10)
- 一種二進制搜尋方法,包括: 提供具有 M 個條目的存儲設備,每個條目存儲一個值; 提供包括N個暫存器的索引暫存器,其中N個暫存器將存儲設備劃分為N-1、N或N+1個搜尋區域; 其中M和N為整數且N<M; 其中,當在存儲設備中搜尋目標值時,確定目標值落在相鄰的兩個暫存器之間,只在剩下兩個暫存器標示的記憶體位址之間進行搜尋。
- 如權利要求1所述的進行二分搜尋的方法,其特徵在於,所述暫存器是從所述存儲設備的M個條目中提取的。
- 如權利要求1所述的進行二分搜尋的方法,其特徵在於,所述存儲設備中存儲的值按從小到大的順序排列。
- 如權利要求1所述的進行二分搜尋的方法,其特徵在於,所述存儲設備中存儲的值按從大到小的順序排列。
- 如權利要求2所述的二分搜尋方法,其特徵在於,所述排序由軟體進行。
- 一種二進制搜尋系統,包括: 存儲設備,該存儲設備包括M個條目,每個條目存儲一個值;和 索引暫存器,索引暫存器包括N個暫存器,N個暫存器將存儲設備劃分為N-1、N或N+1個搜尋區; 其中M和N為整數且N<M; 其中,當在記憶體中搜尋目標值時,確定目標值落在相鄰的兩個暫存器之間,只在剩下兩個暫存器標示的記憶體位址進行搜尋。
- 如權利要求6所述的二分搜尋系統,其特徵在於,所述暫存器是從所述存儲設備的M個條目中提取的。
- 如權利要求6所述的二分搜尋系統,其特徵在於,所述存儲設備中存儲的值按從小到大的順序排列。
- 如權利要求6所述的進行二分搜尋的方法,其特徵在於,所述存儲設備中存儲的值按從大到小的順序排列。
- 如權利要求7所述的二分搜尋系統,其特徵在於,所述排序由軟體進行。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW110126500A TWI836239B (zh) | 2021-07-19 | 2021-07-19 | 用於二分搜尋的方法和系統 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW110126500A TWI836239B (zh) | 2021-07-19 | 2021-07-19 | 用於二分搜尋的方法和系統 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202305616A true TW202305616A (zh) | 2023-02-01 |
TWI836239B TWI836239B (zh) | 2024-03-21 |
Family
ID=86661349
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW110126500A TWI836239B (zh) | 2021-07-19 | 2021-07-19 | 用於二分搜尋的方法和系統 |
Country Status (1)
Country | Link |
---|---|
TW (1) | TWI836239B (zh) |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3611316A (en) * | 1969-12-24 | 1971-10-05 | Ibm | Indirect indexed searching and sorting |
DE102016108081A1 (de) * | 2016-05-02 | 2017-11-02 | Denso Corporation | Mikroprozessor mit Zusatz-Befehlen für Binärsuche und zugehöriges Suchverfahren |
US20180173631A1 (en) * | 2016-12-21 | 2018-06-21 | Qualcomm Incorporated | Prefetch mechanisms with non-equal magnitude stride |
CN106708749B (zh) * | 2016-12-23 | 2019-08-23 | 量子云未来(北京)信息科技有限公司 | 一种数据查找方法 |
GB2575877B (en) * | 2018-07-27 | 2021-06-09 | Advanced Risc Mach Ltd | Memory protection unit using memory protection table stored in memory system |
US11636197B2 (en) * | 2018-11-15 | 2023-04-25 | Webroot, Inc. | Selective import/export address table filtering |
-
2021
- 2021-07-19 TW TW110126500A patent/TWI836239B/zh active
Also Published As
Publication number | Publication date |
---|---|
TWI836239B (zh) | 2024-03-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9639458B2 (en) | Reducing memory accesses for enhanced in-memory parallel operations | |
US6903953B2 (en) | Content addressable memory with cascaded array | |
US7694068B1 (en) | Re-entrant processing in a content addressable memory | |
KR102706808B1 (ko) | 중첩된 범위들을 갖는 명령들에 대한 병렬 오버랩 관리 | |
CN113157689A (zh) | 数据索引方法、装置及电子设备 | |
TW202305616A (zh) | 用於二進制搜尋的方法和系統 | |
US7451267B1 (en) | Method and apparatus for learn and related operations in network search engine | |
CN111694513A (zh) | 包括循环指令存储器队列的存储器器件和方法 | |
US11636153B2 (en) | Storage of tree data structures | |
US11449275B2 (en) | Method and system for binary search | |
US11362672B2 (en) | Inline decompression | |
US11086852B2 (en) | Hardware-assisted multi-table database with shared memory footprint | |
CN113127488A (zh) | 数据查询方法、装置、电子装置和存储介质 | |
US9824105B2 (en) | Adaptive probabilistic indexing with skip lists | |
TWI854298B (zh) | 記憶體查找裝置及方法 | |
US11914587B2 (en) | Systems and methods for key-based indexing in storage devices | |
US20240086312A1 (en) | Memory searching device and method | |
US11687592B2 (en) | Storage of tree data structures | |
KR102723995B1 (ko) | 저-지역성 데이터를 고-지역성 데이터로 효율적으로 변환하기 위한 시스템 및 방법 | |
JP3052877B2 (ja) | ディスクアレイ装置 | |
JP3238939B2 (ja) | ソート処理装置 | |
JPS6134626A (ja) | 外部分布分類を実行する方法 | |
JP2507399B2 (ja) | デ―タベ―ス装置 | |
CN116756187A (zh) | 数据索引方法及其相关设备 | |
CN118227614A (zh) | 一种支持变长值的键值存储表项管理方法及系统 |