Patentable/Patents/US-12572328-B2
US-12572328-B2

List search

PublishedMarch 10, 2026
Assigneenot available in USPTO data we have
Inventorsnot available in USPTO data we have
Technical Abstract

A memory stores an item list in first words and second words such that each first word stores a first portion of two different list items and each second word stores a second portion of the two different list items. Control logic is configured to compare a first portion of a search item to the first portion of each list item in each first word; in response to the first portion of the search item matching a first portion in a first word, determine the first word is a matching first word; compare a second portion of the search item to the second portion of each list item stored in each second word corresponding to each matching first word; and in response to the second portion of the search item matching a second portion of a list item in a second word, determine the search item matches the list item.

Patent Claims

Legal claims defining the scope of protection, as filed with the USPTO.

1

. A system comprising:

2

. The system of, wherein the first portion of each list item comprises a lower half of each list item and the second portion of each list item comprises an upper half of each list item.

3

. The system of, wherein the second words are stored in the memory immediately following the first words.

4

. The system of, wherein the item list comprises an unsorted item list.

5

. The system of, wherein the control logic comprises a processor.

6

. The system of, wherein the control logic comprises two comparators.

7

. The system of, wherein the item list comprises a list of Bluetooth addresses.

8

. A system comprising: a memory storing an item list in at least first words and second words corresponding to the first words such that each first word stores a first portion of each of at least two different list items and each corresponding second word stores a second portion of each of the at least two different list items; and control logic communicatively coupled to the memory, the control logic configured to: receive a search item; split the search item into at least a first portion and a second portion; compare the first portion of the search item to each first portion of each list item in each first word; in response to the first portion of the search item matching a first portion in a first word, determine the first word is a matching first word;

9

. The system of, wherein the memory stores the item list in at least first words, second words corresponding to the first words, and third words corresponding to the second words such that each first word stores the first portion of each of at least three different list items, each corresponding second word stores the second portion of each of the at least three different list items, and each corresponding third word stores a third portion of each of the at least three different list items, and wherein the control logic is further configured to: split the search item into at least the first portion, the second portion, and a third portion; in response to the second portion of the search item matching a second portion in a second word, determine the second word as a matching second word; compare the third portion of the search item to each third portion of each list item stored in each third word corresponding to each matching second word; and in response to at least the third portion of the search item matching a third portion of a list item in a third word, determine the search item matches the list item.

10

. The system of, wherein the memory stores the item list in at least first words, second words corresponding to the first words, third words corresponding to the second words, and fourth words corresponding to the third words such that each first word stores the first portion of each of at least four different list items, each corresponding second word stores the second portion of each of the at least four different list items, each corresponding third word stores a third portion of each of the at least four different list items, and each corresponding fourth word stores a fourth portion of each of the at least four different list items, and wherein the control logic is further configured to: split the search item into at least the first portion, the second portion, the third portion, and a fourth portion; in response to the third portion of the search item matching a third portion in a third word, determine the third word is a matching third word; compare the fourth portion of the search item to each fourth portion of each list item stored in each fourth word corresponding to each matching third word; and in response to at least the fourth portion of the search item matching a fourth portion of a list item in a fourth word, determine the search item matches the list item.

11

. The system of, wherein the second words are stored in the memory immediately following the first words.

12

. The system of, wherein the item list comprises an unsorted item list.

13

. The system of, wherein the control logic comprises a processor.

14

. The system of, wherein the control logic comprises at least two comparators.

15

. The system of, wherein the item list comprises a list of Bluetooth addresses.

16

. A method comprising: storing an item list in at least first words and second words corresponding to the first words in a memory such that each first word stores a first portion of each of at least two different list items and each corresponding second word stores a second portion of each of the at least two different list items; receiving a search item; splitting the search item into at least a first portion and a second portion; comparing the first portion of the search item to each first portion of each list item in each first word; in response to the first portion of the search item matching a first portion in a first word, determining the first word is a matching first word; comparing the second portion of the search item to each second portion of each list item stored in each second word corresponding to each matching first word; and in response to at least the second portion of the search item matching a second portion of a list item in a second word, determining the search item matches the list item.

17

. The method of, wherein storing the item list comprises storing the item list in at least first words, second words corresponding to the first words, and third words corresponding to the second words in the memory such that each first word stores the first portion of each of at least three different list items, each corresponding second word stores the Title LIST SEARCH second portion of each of the at least three different list items, and each corresponding third word stores a third portion of each of the at least three different list items, and wherein splitting the search item comprises splitting the search item into at least the first portion, the second portion, and a third portion, the method further comprising: in response to the second portion of the search item matching a second portion in a second word, determining the second word is a matching second word; comparing the third portion of the search item to each third portion of each list item stored in each third word corresponding to each matching second word; and in response to at least the third portion of the search item matching a third portion of a list item in a third word, determining the search item matches the list item.

18

. The method of, wherein storing the item list comprises storing the item list in at least first words, second words corresponding to the first words, third words corresponding to the second words, and fourth words corresponding to the third words in the memory such that each first word stores the first portion of each of at least four different list items, each corresponding second word stores the second portion of each of the at least four different list items, each corresponding third word stores the third portion of each of the at least four different list items, and each corresponding fourth word stores a fourth portion of each of the at least four different list items, and wherein splitting the search item comprises splitting the search item into at least the first portion, the second portion, the third portion, and a fourth portion, the method further comprising: in response to the third portion of the search item matching a third portion in a third word, determining the third word is a matching third word; comparing the fourth portion of the search item to each fourth portion of each list item stored in each fourth word corresponding to each matching third word; and in response to at least the fourth portion of the search item matching a fourth portion of a list item in a fourth word, determining the search item matches the list item.

19

. The method of, wherein the item list comprises an unsorted item list.

20

. The method of, wherein the item list comprises a list of Bluetooth addresses.

Detailed Description

Complete technical specification and implementation details from the patent document.

This Non-Provisional patent application claims the benefit of the filing date of U.S. Provisional Patent Application Ser. No. 63/585,185, filed Sep. 25, 2023, which is herein incorporated by reference.

Searching an unsorted list or array including unique values may be a time consuming task. A linear search requires serially looking through each entry in the unsorted list to find a matching entry. A binary search is not possible since the list is unsorted. A hash-based search requires a hash function, extra memory for a hash table, a rehashing approach, and additional data structures.

For these and other reasons, a need exists for the present invention.

Some examples of the present disclosure relate to a system. The system includes a memory and control logic communicatively coupled to the memory. The memory stores an item list in first words and second words corresponding to the first words such that each first word stores a first portion of each of two different list items and each corresponding second word stores a second portion of each of the two different list items. The control logic is configured to compare a first portion of a search item to the first portion of each list item in each first word. The control logic is configured to, in response to the first portion of the search item matching a first portion in a first word, determine the first word is a matching first word. The control logic is configured to compare a second portion of the search item to the second portion of each list item stored in each second word corresponding to each matching first word. The control logic is configured to in response to the second portion of the search item matching a second portion of a list item in a second word, determine the search item matches the list item.

Other examples of the present disclosure relate to a system. The system includes a memory and control logic communicatively coupled to the memory. The memory stores an item list in at least first words and second words corresponding to the first words such that each first word stores a first portion of each of at least two different list items and each corresponding second word stores a second portion of each of the at least two different list items. The control logic is configured to receive a search item and split the search item into at least a first portion and a second portion. The control logic is configured to compare the first portion of the search item to each first portion of each list item in each first word. The control logic is configured to, in response to the first portion of the search item matching a first portion in a first word, determine the first word is a matching first word. The control logic is configured to compare the second portion of the search item to each second portion of each list item stored in each second word corresponding to each matching first word. The control logic is configured to in response to at least the second portion of the search item matching a second portion of a list item in a second word, determine the search item matches the list item.

Yet other examples of the present disclosure relate to a method. The method includes storing an item list in at least first words and second words corresponding to the first words in a memory such that each first word stores a first portion of each of at least two different list items and each corresponding second word stores a second portion of each of the at least two different list items. The method includes receiving a search item and splitting the search item into at least a first portion and a second portion. The method includes comparing the first portion of the search item to each first portion of each list item in each first word. The method includes, in response to the first portion of the search item matching a first portion in a first word, determining the first word is a matching first word. The method includes comparing the second portion of the search item to each second portion of each list item stored in each second word corresponding to each matching first word. The method includes, in response to at least the second portion of the search item matching a second portion of a list item in a second word, determining the search item matches the list item.

In the following detailed description, reference is made to the accompanying drawings which form a part hereof, and in which is shown by way of illustration specific examples in which the disclosure may be practiced. It is to be understood that other examples may be utilized and structural or logical changes may be made without departing from the scope of the present disclosure. The following detailed description, therefore, is not to be taken in a limiting sense, and the scope of the present disclosure is defined by the appended claims. It is to be understood that features of the various examples described herein may be combined, in part or whole, with each other, unless specifically noted otherwise.

is a block diagram illustrating one example of an item list stored in a memory. Memorystores the item list including items 0 to N−1 in wordsto, respectively, where “N” is any suitable number of items. Each word (or row) of memorymay be defined as the width of the memory sub-system (e.g., 16 bit, 32 bit, 48 bit, 64 bit, etc.) such that each item 0 to N−1 is stored within one word (or row) of memory. The item list may be unsorted and may include any suitable data, such as Bluetooth addresses. Memorymay include any suitable machine-readable storage medium, for example, a random access memory (RAM), an electrically-erasable programmable read-only memory (EEPROM), a storage drive, an optical disc, and the like.

is a block diagram illustrating another example of a list stored in a memory. In this example, each item 0 to N−1 in the list is split into a first portiontoand a second portionto, respectively. In this example, if the item list includes an odd number of items N, a dummy (e.g., blank) item may be added to the list such that item N−1 is a dummy item. Memorystores the item list including items 0 to N−1 in first wordstoand second wordstocorresponding to the first words (e.g., second wordcorresponds to first word, second wordcorresponds to first word, etc.). In some examples, the second wordstoare stored in the memoryimmediately following the first wordsto. Each first wordtostores the first portiontoof each of two different list items. For example, wordof memorystores the first portionof item 0 in a first part (e.g., lower half) of the word and the first portionof item 1 in a second part (e.g., upper half) of the word, wordof memorystores the first portionof item 2 in the first part of the word and the first portionof item 3 in the second part of the word, etc., and wordof memorystores the first portionof item N−2 in the first part of the word and the first portionof item N−1 in the second part of the word.

Each second wordtostores the second portiontoof each of two different list items. For example, wordof memorystores the second portionof item 0 in the first part of the word and the second portionof item 1 in the second part of the word, wordof memorystores the second portionof item 2 in the first part of the word and the second portionof item 3 in the second part of the word, etc., and wordof memorystores the second portionof item N−2 in the first part of the word and the second portionof item N−1 in the second part of the word.

By storing the first portions of each item 0 to N−1 in first wordstoand the second portions of each item 0 to N−1 in second wordsto, the time to search the item list stored in memorymay be substantially reduced compared to the time to search the same item list stored in memoryofas will be further described below with reference to. In some examples, the time to search the item list stored in memorymay be improved by a factor of N by comparing a portion of a search item value to corresponding portions of multiple list items simultaneously instead of comparing each individual list item value to a single complete search item value. The time to search the item list is improved by a factor of N since most of the comparisons will fail and the remaining portion(s) of the search item value will not have to be compared.

is a block diagram illustrating another example of a list stored in a memory. In this example, each item 0 to N−1 in the list is split into a first portionto, a second portionto, and a third portionto, respectively. While not all first portionsto, second portionsto, and a third portionstoare specifically labeled in, it will be apparent that each first portionto, second portionto, and third portiontocorresponds to a first portion of items 0 to N−1, a second portion of items 0 to N−1, and a third portion of items 0 to N−1, respectively. In this example, if the item list includes a number of items N that is not divisible by 3, one or two dummy (e.g., blank) items (e.g., item N−1, item N−2) may be added to the list such that the number of items N is divisible by 3.

Memorystores the item list including items 0 to N−1 in first wordsto, second wordstocorresponding to the first words, and third wordstocorresponding to the second words and corresponding to the first words. In some examples, the second wordstoare stored in the memoryimmediately following the first wordsto, and the third wordstoare stored in the memoryimmediately following the second wordsto. For example, third wordand second wordcorrespond to first word, third wordand second wordcorrespond to first word, etc. Each first wordtostores the first portiontoof each of three different list items. For example, wordof memorystores the first portionof item 0 in a first part (e.g., lower third) of the word, the first portionof item 1 in a second part (e.g., middle third) of the word, and the first portionof item 2 in a third part (e.g., upper third) of the word; wordof memorystores the first portionof item 3 in the first part of the word, the first portionof item 4 in the second part of the word, and the first portionof item 5 in the third part of the word; etc.; and wordof memorystores the first portionof item N−3 in the first part of the word, the first portionof item N−2 in the second part of the word, and the first portionof item N−1 in the third part of the word.

Each second wordtostores the second portiontoof each of three different list items. For example, wordof memorystores the second portionof item 0 in the first part of the word, the second portionof item 1 in the second part of the word, and the second portionof item 2 in the third part of the word; wordof memorystores the second portionof item 3 in the first part of the word, the second portionof item 4 in the second part of the word, and the second portionof item 5 in the third part of the word; etc.; and wordof memorystores the second portionof item N−3 in the first part of the word, the second portionof item N−2 in the second part of the word, and second portionof item N−1 in the third part of the word.

Each third wordtostores the third portiontoof each of three different list items. For example, wordof memorystores the third portionof item 0 in the first part of the word, the third portionof item 1 in the second part of the word, and the third portionof item 2 in the third part of the word; wordof memorystores the third portionof item 3 in the first part of the word, the third portionof item 4 in the second part of the word, and the third portionof item 5 in the third part of the word; etc.; and wordof memorystores the third portionof item N−3 in the first part of the word, the second portionof item N−2 in the second part of the word, and second portionof item N−1 in the third part of the word.

By storing the first portions of each item 0 to N−1 in first wordsto, the second portions of each item 0 to N−1 in second wordsto, and the third portions of each item 0 to N−1 in third wordsto, the time to search the item list stored in memorymay be substantially reduced compared to the time to search the same item list stored in memoryofas will be further described below with reference to.

is a block diagram illustrating another example of a list stored in a memory. In this example, each item 0 to N−1 in the list is split into a first portionto, a second portionto, a third portionto, and a fourth portionto, respectively. While not all first portionsto, second portionsto, third portionsto, and fourth portionstoare specifically labeled in, it will be apparent that each first portionto, second portionto, third portionto, and fourth portiontocorresponds to a first portion of items 0 to N−1, a second portion of items 0 to N−1, a third portion of items 0 to N−1, and a fourth portion of item 0 to N−1, respectively. In this example, if the item list includes a number of items N that is not divisible by 4, one, two or three dummy (e.g., blank) items (e.g., item N−1, item N−2, item N−3) may be added to the list such that the number of items N is divisible by 4.

Memorystores the item list including items 0 to N−1 in first wordsto, second wordstocorresponding to the first words, third wordstocorresponding to the second words and corresponding to the first words, and fourth wordstocorresponding to the third words and corresponding to the first words and second words. In some examples, the second wordstoare stored in the memoryimmediately following the first wordsto, the third wordstoare stored in the memoryimmediately following the second wordsto, and the fourth wordstoare stored in the memoryimmediately following the third wordsto. Each first wordtostores the first portiontoof each of four different list items. For example, wordof memorystores the first portionof item 0 in a first part (e.g., lower quarter) of the word, the first portionof item 1 in a second part (e.g., middle-lower quarter) of the word, the first portionof item 2 in a third part (e.g., middle-upper quarter) of the word, and the first portionof item 3 in a fourth part (e.g., upper quarter) of the word; wordof memorystores the first portionof item 4 in the first part of the word, the first portionof item 5 in the second part of the word, the first portionof item 6 in the third part of the word, and the first portionof item 7 in the fourth part of the word; etc.; and wordof memorystores the first portionof item N−4 in the first part of the word, the first portionof item N−3 in the second part of the word, the first portionof item N−2 in the third part of the word, and the first portionOf item N−1 in the fourth part of the word.

Each second wordtostores the second portiontoof each of four different list items. For example, wordof memorystores the second portionof item 0 in the first part of the word, the second portionof item 1 in the second part of the word, the second portionof item 2 in the third part of the word, and the second portionof item 3 in the fourth part of the word; wordof memorystores the second portionof item 4 in the first part of the word, the second portionof item 5 in the second part of the word, the second portionof item 6 in the third part of the word, and the second portionof item 7 in the fourth part of the word; etc.; and wordof memorystores the second portionof item N−4 in the first part of the word, the second portionof item N−3 in the second part of the word, the second portionof item N−2 in the third part of the word, and the second portionof item N−1 in the fourth part of the word.

Each third wordtostores the third portiontoof each of four different list items. For example, wordof memorystores the third portionof item 0 in the first part of the word, the third portionof item 1 in the second part of the word, the third portionof item 2 in the third part of the word, and the third portionof item 3 in the fourth part of the word; word+1 of memorystores the third portionof item 4 in the first part of the word, the third portionof item 5 in the second part of the word, the third portionof item 6 in the third part of the word, and the third portionof item 7 in the fourth part of the word; etc.; and wordof memorystores the third portionof item N−4 in the first part of the word, the third portionof item N−3 in the second part of the word, the third portionof item N−2 in the third part of the word, and the third portionof item N−1 in the fourth part of the word.

Each fourth wordtostores the fourth portiontoof each of four different list items. For example, wordof memorystores the fourth portionof item 0 in the first part of the word, the fourth portionof item 1 in the second part of the word, the fourth portionof item 2 in the third part of the word, and the fourth portionof item 3 in the fourth part of the word; wordof memorystores the fourth portionof item 4 in the first part of the word, the fourth portionof item 5 in the second part of the word, the fourth portionof item 6 in the third part of the word, and the fourth portionof item 7 in the fourth part of the word; etc.; and wordof memorystores the fourth portionof item N−4 in the first part of the word, the fourth portionof item N−3 in the second part of the word, the fourth portionof item N−2 in the third part of the word, and the fourth portionof item N−1 in the fourth part of the word.

By storing the first portions of each item 0 to N−1 in first wordsto, the second portions of each item 0 to N−1 in second wordsto, the third portions of each item 0 to N−1 in third wordsto, and the fourth portions of each item 0 to N−1 in fourth wordsto, the time to search the item list stored in memorymay be substantially reduced compared to the time to search the same item list stored in memoryofas will be further described below with reference to.

are block diagrams illustrating one example of a systemto perform a search operation on the list stored in the memoryof.illustrates systemin a first phase (e.g., phase 0) of the search operation. Systemincludes memorystoring a list as previously described and illustrated with reference toand control logic. Control logicis communicatively coupled to the memory. In some examples, control logicmay be implemented in hardware (e.g., registers, comparators, logic gates, an application specific integrated circuit (ASIC), a field-programmable gate array (FPGA), etc.), such as by a state machine as will be described below with reference to. In some examples, control logicmay be implemented by a processing system including a central processing unit (CPU), a processor, or a microprocessor, such as will be described below with reference to.

Control logicreceives a search item and splits the search item into a search item first portion and a search item second portion. Control logicis configured to compare the first portion of the search itemto the first portiontoof each list item 0 to N−1 in each first wordto. In some examples, control logicmay include a first comparatorand a second comparatorto simultaneously compare the search item first portionto the first portion of the list items stored in the first part and the second part of each word to obtain a first result atand a second result at, respectively, for each wordto. Control logicis configured to, in response to the first portion of the search item matching a first portion in a first wordto, determine the first word is a matching first word. When a first word is determined to be a matching first word, control logicmay store the address of the matching first word or other suitable indicator of the matching first word in a register or other suitable storage element. For example, in response to the search item first portionmatching the first portionf item 2 in first word, first wordis determined to be a matching first word, and some indication (e.g., address) of first wordis retained by control logic. Once each matching first wordtois determined, the first phase (e.g., phase 0) of the search operation is complete. If no first wordstoare determined to be matching first words, the search operation is complete and control logicreturns a search item not found result.

illustrates systemin a second phase (e.g., phase 1) of the search operation. In the second phase of the search operation, control logicis configured to compare the second portion of the search itemto the second portion of each list item 0 to N−1 stored in each second wordtocorresponding to each matching first word determined in the first phase of the search operation as described with reference to. For example, if first wordis the only matching first word, then only corresponding second wordis searched in the second phase. In some examples, control logicmay include the first comparatorand the second comparatorto simultaneously compare the search item second portionto the second portion of the list items stored in the first part and the second part of each second word corresponding to a matching first word to obtain a first result atand a second result at, respectively. Control logicis configured to, in response to the second portion of the search itemmatching a second portion of a list item in a second word corresponding to a matching first word, determine the search item matches the list item. For example, in response to the search item second portionmatching the second portionof item 2 in second word, item 2 is determined to match the search item. If no second wordstocorresponding to a matching first word include the second portion of the search item, the search operation is complete and control logicreturns a search item not found result.

Accordingly, the first phase of the search process may rule out two items for every word fetched from the memory. If the first portion of each list item does not match the first portion of the search item, the search will complete with N/2 words fetched from the memory. This is in contrast to searching the memoryof, where N words would be fetched from the memoryto complete the search. The probability of a partial match (e.g., where the first portion of the search item matches a list item but the second portion of the search item does not match the list item) depends on the width of the portions and the bit distribution. For example, for a width of 16 bits and a random bit distribution, the probability that either the first portion or the second portion of the search item matches a corresponding portion of a list item is 2/2{circumflex over ( )}16=1/32,768. For small lists (e.g., 128 items) the cumulative probability is quite small at 64/32,768 or roughly 0.2 percent. Therefore, the search may complete in N/2 memory fetches approximately 99.8 percent of the time. In addition to a faster search, less power may be consumed fetching data from the memory.

is a block diagram illustrating one example of a systemfor performing a search operation on the list stored in the memoryof. Whileillustrates systemin a first phase (e.g., phase 0) of the search operation, it will be apparent that systemis also applicable to a second phase (e.g., phase 1) and a third phase (e.g., phase 2) of the search operation similarly as described for the second phase of systemof. Systemincludes memorystoring a list as previously described and illustrated with reference toand control logic. Control logicis communicatively coupled to the memory. In some examples, control logicmay be implemented in hardware (e.g., registers, comparators, logic gates, an ASIC, a FPGA, etc.), such as by a state machine as will be described below with reference to. In some examples, control logicmay be implemented by a processing system including a CPU, a processor, or a microprocessor, such as will be described below with reference to.

Control logicreceives a search item and splits the search item into a search item first portion, a search item second portion, and a search item third portion. Control logicis configured to compare the first portion of the search itemto the first portiontoof each list item 0 to N−1 in each first wordto. In some examples, control logicmay include a first comparator, a second comparator, and a third comparatorto simultaneously compare the search item first portionto the first portion of the list items stored in the first part, the second part, and the third part of each wordtoto obtain a first result at, a second result at, and a third result at, respectively, for each wordto. Control logicis configured to, in response to the first portion of the search item matching a first portion in a first word, determine the first word is a matching first word. For example, in response to the search item first portionmatching the first portionof item 3 in first word, first wordis determined to be a matching first word. Once each matching first wordtois determined, the first phase (e.g., phase 0) of the search operation is complete. If no first wordstoare determined to be matching first words, the search operation is complete and control logicreturns a search item not found result.

In a second phase (e.g., phase 1) of the search operation (not shown), control logicis configured to compare the second portion of the search item to the second portion of each list item 0 to N−1 stored in each second wordtocorresponding to each matching first word determined in the first phase of the search operation. Control logicis configured to, in response to the second portion of the search item matching a second portion in a second wordtocorresponding to a matching first word, determine the second word is a matching second word. If no second wordstoare determined to be matching second words, the search operation is complete and control logicreturns a search item not found result.

In a third phase (e.g., phase 2) of the search operation (not shown), control logicis configured to compare the third portion of the search item to the third portion of each list item 0 to N−1 stored in each third wordtocorresponding to each matching second word determined in the second phase of the search operation. Control logicis configured to, in response to the third portion of the search item matching a third portion in a third wordtocorresponding to a matching second word, determine the search item matches the list item. If no third wordstocorresponding to a matching second word include the third portion of the search item, the search operation is complete and control logicreturns a search item not found result.

is a block diagram illustrating one example of a systemfor performing a search operation on the list stored in the memoryof. Whileillustrates systemin a first phase (e.g., phase 0) of the search operation, it will be apparent that systemis also applicable to a second phase (e.g., phase 1), a third phase (e.g., phase 2), and a fourth phase (e.g., phase 3) of the search operation similarly as described for the second phase of systemin. Systemincludes memorystoring a list as previously described and illustrated with reference toand control logic. Control logicis communicatively coupled to the memory. In some examples, control logicmay be implemented in hardware (e.g., registers, comparators, logic gates, an ASIC, a FPGA, etc.), such as by a state machine as will be described below with reference to. In some examples, control logicmay be implemented by a processing system including a CPU, a processor, or a microprocessor, such as will be described below with reference to.

Control logicreceives a search item and splits the search item into a search item first portion, a search item second portion, a search item third portion, and a search item fourth portion. Control logicis configured to compare the first portion of the search itemto the first portiontoof each list item 0 to N−1 in each first wordto. In some examples, control logicmay include a first comparator, a second comparator, a third comparator, and a fourth comparatorto simultaneously compare the search item first portionto the first portion of the list items stored in the first part, the second part, the third part, and the fourth part of each wordtoto obtain a first result at, a second result at, a third result at, and a fourth result at, respectively, for each wordto. Control logicis configured to in response to the first portion of the search item matching a first portion in a first word, determine the first word is a matching first word. For example, in response to the search item first portionmatching the first portionof item 4 in first word, first wordis determined to be a matching first word. Once each matching first wordtois determined, the first phase (e.g., phase 0) of the search operation is complete. If no first wordstoare determined to be matching first words, the search operation is complete and control logicreturns a search item not found result.

In a second phase (e.g., phase 1) of the search operation (not shown), control logicis configured to compare the second portion of the search item to the second portion of each list item 0 to N−1 stored in each second wordtocorresponding to each matching first word determined in the first phase of the search operation. Control logicis configured to, in response to the second portion of the search item matching a second portion in a second wordtocorresponding to a matching first word, determine the second word is a matching second word. If no second wordstoare determined to be matching second words, the search operation is complete and control logicreturns a search item not found result.

In a third phase (e.g., phase 2) of the search operation (not shown), control logicis configured to compare the third portion of the search item to the third portion of each list item 0 to N−1 stored in each third wordtocorresponding to each matching second word determined in the second phase of the search operation. Control logicis configured to, in response to the third portion of the search item matching a third portion in a third wordtocorresponding to a matching second word, determine the third word is a matching third word. If no third wordstoare determined to be matching third words, the search operation is complete and control logicreturns a search item not found result.

In a fourth phase (e.g., phase 3) of the search operation (not shown), control logicis configured to compare the fourth portion of the search item to the fourth portion of each list item 0 to N−1 stored in each fourth wordtocorresponding to each matching third word determined in the third phase of the search operation. Control logicis configured to, in response to the fourth portion of the search item matching a fourth portion in a fourth wordtocorresponding to a matching second word, determine the search item matches the list item. If no fourth wordstocorresponding to a matching third word include the fourth portion of the search item, the search operation is complete and control logicreturns a search item not found result.

are flow diagrams illustrating one example of a methodfor performing a search operation. As illustrated inat, methodincludes storing an item list (e.g., items 0 to N−1) in at least first words (e.g.,tooftoof, ortoof) and second words (e.g.,tooftoof, ortoof) corresponding to the first words in a memory such that each first word stores a first portion (e.g.,to) of each of at least two different list items and each corresponding second word stores a second portion (e.g.,to) of each of the at least two different list items. In some examples, the item list includes an unsorted item list, such as a list of Bluetooth addresses.

At, methodincludes receiving a search item. At, methodincludes splitting the search item into at least a first portion (e.g.,of) and a second portion (e.g.,of). At, methodincludes comparing the first portion of the search item to each first portion of each list item in each first word. At, methodincludes in response to the first portion of the search item matching a first portion in a first word, determining the first word is a matching first word. At, methodincludes comparing the second portion of the search item to each second portion of each list item stored in each second word corresponding to each matching first word. At, methodincludes in response to at least the second portion of the search item matching a second portion of a list item in a second word, determining the search item matches the list item.

As illustrated inat, methodmay further include storing the item list in at least first words, second words corresponding to the first words, and third words (e.g.,tooftoof) corresponding to the second words in the memory such that each first word stores the first portion of each of at least three different list items, each corresponding second word stores the second portion of each of the at least three different list items, and each corresponding third word stores a third portion (e.g.,to) of each of the at least three different list items. At, methodmay further include splitting the search item into at least the first portion, the second portion, and a third portion. At, methodmay further include in response to the second portion of the search item matching a second portion in a second word, determining the second word is a matching second word. At, methodmay further include comparing the third portion of the search item to each third portion of each list item stored in each third word corresponding to each matching second word. At, methodmay further include in response to at least the third portion of the search item matching a third portion of a list item in a third word, determining the search item matches the list item.

As illustrated inat, methodmay further include storing the item list in at least first words, second words corresponding to the first words, third words corresponding to the second words, and fourth words (e.g.,toof) corresponding to the third words in the memory such that each first word stores the first portion of each of at least four different list items, each corresponding second word stores the second portion of each of the at least four different list items, each corresponding third word stores the third portion of each of the at least four different list items, and each corresponding fourth word stores a fourth portion (e.g.,to) of each of the at least four different list items. At, methodmay further include splitting the search item into at least the first portion, the second portion, the third portion, and a fourth portion. At, methodmay further include in response to the third portion of the search item matching a third portion in a third word, determining the third word is a matching third word. At, methodmay further include comparing the fourth portion of the search item to each fourth portion of each list item stored in each fourth word corresponding to each matching third word. At, methodmay further include in response to at least the fourth portion of the search item matching a fourth portion of a list item in a fourth word, determining the search item matches the list item.

is a block diagram illustrating one example of a state machinefor performing a search operation, such as the search operation illustrated in. State machineincludes a wait state, a split state, a phase 0 state, a not found state, a phase 1 state, and a found state. In wait state, state machinewaits for a search item to be received. For example, wait statemay wait for a search item to be written to a search item register or other suitable storage element. Once a search item is received, control passes to split state, which splits the search item into two portions. For example, split statemay split the search item into a first (e.g., lower half) portion of the search item and a second (e.g., upper half) portion of the search item. In some examples, the search item first portion may be stored in a first register or another suitable storage element and the search item second portion may be stored in a second register or another suitable storage element. With the search item split into two portions, control passes to phase 0 state.

Phase 0 statesearches for the search item first portion in a list (e.g., list of items 0 to N−1 stored in memoryof). For example, in phase 0 state, the search item first portion (e.g.,of) may be compared via comparators (e.g.,andof) to the first portion of each list item stored in each first word (e.g.,toof) of the memory. If the search item first portion is not found in the list, control passes to not found state, which returns a search item not found result. Control then returns to wait state. In response to finding the search item first portion in the list (e.g., in a first word of the memory), phase 0 stateindicates the row(s) of the list matching the search item first portion. For example, the address or another suitable indicator of each row of the list matching the search item first portion may be stored in a register or another suitable storage element. Control then passes to phase 1 state.

Phase 1 statesearches for the search item second portion in rows of the list corresponding to rows of the list matching the search item first portion (e.g., as indicated in phase 0 state). For example, in phase 1 state, the search item second portion (e.g.,of) may be compared via comparators (e.g.,andof) to the second portion of each list item stored in each second word (e.g.,toof) of the memory corresponding to a matching first word from phase 0 state. If the search item second portion is not found in the list, control passes to not found state, which returns a search item not found result. Control then returns to wait state. In response to finding the search item second portion in the list (e.g., in a corresponding second word of the memory), phase 1 stateindicates the search item second portion has been found and control passes to found state. Found statereturns a search item found result. Control then returns to wait stateto wait for another search item to search.

It will be apparent that state machinemay be expanded to perform the search operation described with reference toor methodofby adding additional phase states (e.g., a phase 2 state, a phase 3 state).

is a block diagram illustrating one example of a processing systemfor performing a search operation. In some examples, processing systemmay perform the search operation described with reference to, oror methodof. Processing systemincludes a processorand a machine-readable storage medium. Processoris communicatively coupled to machine-readable storage mediumthrough a communication path. Although the following description refers to a single processor and a single machine-readable storage medium, the description may also apply to a system with multiple processors and multiple machine-readable storage mediums. In such examples, the data and instructions may be distributed (e.g., stored) across multiple machine-readable storage mediums and the instructions may be distributed (e.g., executed by) across multiple processors.

Processorincludes one (i.e., a single) central processing unit (CPU) or microprocessor or more than one (i.e., multiple) CPU or microprocessor, and/or other suitable hardware devices for retrieval and execution of instructions stored in machine-readable storage medium. Machine-readable storage mediummay include a data memoryand an instruction memory. Data memorymay store an item list, such as previously described with reference to, or. Processormay fetch, decode, and execute instructions-to perform a search of the item list.

Processormay fetch, decode, and execute instructionsto receive a search item. Processormay fetch, decode, and execute instructionsto split the search item. For example, processormay split the search item into two portions as described with reference to, three portions as described with reference to, or four portions as described with reference todepending upon how the item listis stored in the data memory.

Processormay fetch, decode, and execute instructionsto search the item list for the first portion in a first phase (i.e., phase 0) of the search. For example, processormay search for the search item first portion in first words of item list(where the first portion of at least two items of the list are stored in each first word) and determine which first words (if any) include a matching search item first portion. Processormay fetch, decode, and execute instructionsto search the item list for the search item second portion in a second phase (i.e., phase 1) of the search. For example, processormay search for the search item second portion in second words of item list(where the second portion of at least two items of the list are stored in each second word) corresponding to matching first words and determine which second words (if any) include a matching search item second portion.

If the items in item liststored in the memoryare split into two portions (e.g.,), instructionsare excluded. If the items in item liststored in the memoryare split into three portions (e.g.,) or four portions (e.g.,), processormay fetch, decode, and execute further instructionsto search the item list for additional portion(s) of the search item in additional phase(s) (i.e., phase 2, phase 3). For example, in response to the search item being split into three portions, in a phase 2, processormay search for the search item third portion in third words of item list(where the third portion of at least three items of the list are stored in each third word) corresponding to matching second words and determine which third words (if any) include a matching search item third portion. In response to the search item being split into four portions, in a phase 3, processormay further search for the search item fourth portion in fourth words of item list(where the fourth portion of at least four items of the list are stored in each fourth word) corresponding to matching third words and determine which fourth words (if any) include a matching search item fourth portion.

Processormay fetch, decode, and execute instructionsto return a result. For example, in response to the search item first portion not matching a first word in phase 0, processorreturns a search item not found result. In response to the search item second portion not matching a second word in phase 1, processorreturns a search item not found result. In response to the search item being split into two portions and in response to the search item second portion matching a second word in phase 1, processorreturns a search item found result. In response to the search item being split into three portions and in response to the search item third portion not matching a third word in phase 2, processorreturns a search item not found result. In response to the search item being split into three portions and in response to the search item third portion matching a third word in phase 2, processorreturns a search item found result. In response to the search item being split into four portions and in response to the search item fourth portion not matching a fourth word in phase 3, processorreturns a search item not found result. In response to the search item being split into four portions and in response to the search item fourth portion matching a fourth word in phase 3, processorreturns a search item found result.

As an alternative or in addition to retrieving and executing instructions, processormay include one (i.e., a single) electronic circuit or more than one (i.e., multiple) electronic circuit comprising a number of electronic components for performing the functionality of one of the instructions or more than one of the instructions in instruction memoryof machine-readable storage medium. With respect to the executable instruction representations (e.g., boxes) described and illustrated herein, it should be understood that part or all of the executable instructions and/or electronic circuits included within one box may, in alternate examples, be included in a different box illustrated in the figures or in a different box not shown.

Patent Metadata

Filing Date

Unknown

Publication Date

March 10, 2026

Inventors

Unknown

Want to explore more patents?

Browse 5M+ US patents with plain-English claim translations and AI-generated analysis.

Citation & reuse

Analysis on this page is generated by Patentable — an AI-powered patent intelligence platform. AI-generated summaries, explanations, and analysis may be reused with attribution and a visible link back to the canonical URL below. Patent abstracts and claims are USPTO public domain.

Cite as: Patentable. “List search” (US-12572328-B2). https://patentable.app/patents/US-12572328-B2

© 2026 Patentable. All rights reserved.

Patentable is a research and drafting-assistant tool, not a law firm, and does not provide legal advice. Documents we generate are drafts for review by a licensed patent attorney.

List search | Patentable