US11126624B2 - Trie search engine - Google Patents
Trie search engine Download PDFInfo
- Publication number
- US11126624B2 US11126624B2 US16/004,782 US201816004782A US11126624B2 US 11126624 B2 US11126624 B2 US 11126624B2 US 201816004782 A US201816004782 A US 201816004782A US 11126624 B2 US11126624 B2 US 11126624B2
- Authority
- US
- United States
- Prior art keywords
- lba
- trie
- data
- mapping
- translation layer
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active, expires
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
- G06F16/24534—Query rewriting; Transformation
- G06F16/24542—Plan optimisation
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/31—Indexing; Data structures therefor; Storage structures
- G06F16/316—Indexing structures
- G06F16/322—Trees
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2246—Trees, e.g. B+trees
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/95—Retrieval from the web
- G06F16/951—Indexing; Web crawling techniques
Definitions
- Embodiments of the present disclosure generally relates to searching a database in a data storage device. More specifically, this disclosure relates to a method for searching databases using a trie search algorithm.
- Non-volatile storage or persistent media is provided by a variety of devices, most commonly, by solid state drives (SSDs). SSDs store data using non-volatile solid state electronic circuits without using movable mechanical parts. To read or write information to the memory cells of an SSD, a software application or operating system specifies a location for the data to be stored. For NAND flash SSDs, information is stored in blocks, which are erased an entire block at a time. Each block is made up of a plurality of pages, which are read or written an entire page at a time.
- LBA logical block addressing
- a method of searching a database includes executing a trie search algorithm on a first portion of data in the database, returning a tag narrowing a location of the first portion of data to optimize the database, and performing a directed search of the optimized database by executing the trie search algorithm again on the optimized database, wherein the trie search algorithm is an information retrieval data structure using a M-ary tree where each node consists of a M-positional vector of pointers.
- a method of accessing data from a data storage device includes receiving, from a host device, an access request directed at a LBA, selecting a first portion of the LBA, performing a trie mapping of LBA's of a flash translation layer of the data storage device, wherein the flash translation layer includes a data address translation table, matching incremented first portions of the LBA to the trie mapping of a region of the flash translation layer, identifying a first region of interest in the flash translation layer where the LBA is located, narrowing a search of the LBA to the first region of interest, and returning a status signal to the data storage device indicating the results of the trie mapping.
- a data storage device has a volatile memory with a first flash translation layer, where the flash translation layer includes a data address translation table, and a trie mapping of LBA regions of the first flash translation layer, and a non-volatile memory array comprising one or more memory devices.
- the data storage device also includes a controller coupled to the volatile memory and coupled to the non-volatile memory, the controller having one or more processors operable to increment through portions of a received LBA and match incremented portions of the received LBA to the trie mapping.
- the data storage device also includes means for accessing data from the data storage device using a trie search algorithm.
- a storage device having a controller with one or more processors configured to execute a trie search algorithm, where the trie search algorithm searches for LBA's in a flash translation layer, and where the flash translation layer includes a data address translation table.
- the storage device also includes a RAM array configured to store results from the trie search algorithm, a trie state machine, a LBA register, an input demultiplexer electrically coupled to the LBA register, and an output demultiplexer electrically coupled to the RAM array and the trie state machine, where the device generates an output signal that includes a state of the trie search algorithm.
- a method of writing data to a trie mapping table includes initializing a region in a memory device with one or more ranges of LBA's of interest, selecting which LBA ranges are to be searched for matches, searching the region based on the LBA ranges, identifying all full matches, partial matches, and no matches for each entry of the LBA ranges, and storing the LBA ranges and the results of the search into a trie mapping table of a memory device.
- FIG. 1 is a schematic block diagram illustrating a data storage device employing a trie search algorithm, according to one embodiment.
- FIG. 2 is a flowchart illustrating a method of searching a database using trie mapping of LBA's, according to one embodiment.
- FIG. 3 is a schematic block diagram of a storage device controller employing a trie state machine to perform a directed fast search on a database in a RAM array, according to one embodiment.
- FIG. 4 is an example flash translation layer showing a table of LBA's organized into a plurality of regions as used by the trie mapping method of FIG. 2 , according to one embodiment.
- FIG. 5 is an example trie mapping data table as stored in RAM containing results of a directed search, according to one embodiment.
- This disclosure includes a method of searching a database that includes executing a trie search algorithm on a first portion of data in the database, returning a tag narrowing a location of the first portion of data to optimize the database, and performing a directed search of the optimized database by executing the trie search algorithm again on the optimized database, wherein the trie search algorithm is an information retrieval data structure using a M-ary tree where each node consists of a M-positional vector of pointers.
- FIG. 1 is a schematic block diagram illustrating a storage system 100 with a data storage device 102 coupled to a host device 104 , where the data storage device 102 has a controller 114 that runs a trie search algorithm, according to one embodiment.
- the host device 104 may include any of a wide range of devices, including but not limited to computer servers, network attached storage (NAS) units, desktop computers, notebook (i.e., laptop) computers, tablet computers, set-top boxes, telephone handsets such as so-called “smart” phones, so-called “smart” pads, televisions, cameras, display devices, digital media players, video gaming consoles, video streaming device, automobiles (control systems, navigation system, autonomous driving system, etc.), and the like.
- the host device 104 may utilize non-volatile memory devices included in the data storage device 102 to store and retrieve data.
- the triefecta or “trie” search algorithm is a data structure that allows for a fast search and data retrieval over a large areas of memory. Trie searches are used to implement the abstract data type (ADT), where basic operations, such as search, insert, and delete can be performed. Further, a trie search can be used for encoding and compression of text.
- ADT abstract data type
- the trie search algorithm is commonly used in databases, as well as in networking technologies.
- the data storage device 102 can take any suitable form. As illustrated in FIG. 1 , the data storage device 102 can take the form of an embedded mass storage device, such as an eSD/eMMC embedded flash drive, embedded in the host device 104 . In other embodiments, the data storage device 102 may be a removable mass storage device, such as, but not limited to, a handheld, removable memory device, such as a memory card (e.g., a Secure Digital (SD) card, a micro Secure Digital (micro-SD) card or a MultiMedia Card (MMC)), or a universal serial bus (USB) device. Other embodiments are possible and are not limited by the examples disclosed herein.
- SD Secure Digital
- micro-SD micro Secure Digital
- MMC MultiMedia Card
- USB universal serial bus
- the data storage device 102 may include non-volatile memory (NVM) array 116 , which may include a plurality of memory devices 140 aA- 140 nN (collectively, “memory devices 140 ”). Each of the memory devices 140 may be configured to store and/or retrieve data. In one embodiment, the memory device 140 may receive data and a message from the controller 114 that instructs the memory device 140 to store the data. Similarly, the memory device 140 may receive a message from controller 114 that instructs the memory device 140 to retrieve data. In some examples, each memory device 140 may be referred to as a die. In some examples, a single physical chip may include a plurality of dies (i.e., a plurality of memory devices 140 aA- 140 nN).
- each memory device 140 may be configured to store large amounts of data, such as 128 MB, 256 MB, 512 MB, 1 GB, 2 GB, 4 GB, 8 GB, 16 GB, 32 GB, 64 GB, 128 GB, 256 GB, 512 GB, 1 TB, or more data.
- the memory devices 140 may include any type of non-volatile memory devices.
- memory devices 140 include, but are not limited to, NAND memory, NOR memory, phase-change memory (PCM), resistive random-access memory (ReRAM), magnetoresistive random-access memory (MRAM), ferroelectric random-access memory (F-RAM), holographic memory, magnetic media (including shingle magnetic recording), optical disks, floppy disks, electrically programmable read only memories (EPROM), electrically erasable programmable read only memories (EEPROM), and other solid-state memories.
- PCM phase-change memory
- ReRAM resistive random-access memory
- MRAM magnetoresistive random-access memory
- F-RAM ferroelectric random-access memory
- holographic memory magnetic media (including shingle magnetic recording), optical disks, floppy disks, electrically programmable read only memories (EPROM), electrically erasable programmable read only memories (EEPROM), and other solid-state memories.
- the data storage device 102 may also include a volatile memory 120 , which may be used by the controller 114 to temporarily store information.
- controller 114 may use volatile memory 120 as a cache. For instance, controller 114 may store cached information in volatile memory 120 until the cached information is written to the memory device 140 .
- volatile memory 120 include, but are not limited to, random-access memory (RAM), dynamic random access memory (DRAM), static RAM (SRAM), and synchronous dynamic RAM (SDRAM (e.g., DDR1, DDR2, DDR3, DDR3L, LPDDR3, DDR4, and the like)).
- RAM random-access memory
- DRAM dynamic random access memory
- SRAM static RAM
- SDRAM synchronous dynamic RAM
- volatile memory 120 may be shared between multiple processors, where each processor may use a discrete portion of volatile memory 120 .
- each processor may use separate volatile memories 120 .
- the controller 114 may contain one or more processors 130 a - 130 n .
- the processors 130 a - 130 n may be cores of a multi-core processor.
- the term processor 130 refers to processors 130 a - 130 n of the controller 114 of the data storage device 102 , although in some embodiments, the techniques described herein may be performed by a general purpose processor, such as a host processor, for example, executing control code.
- the controller 114 may manage one or more operations of the data storage device 102 . For instance, controller 114 may manage the reading of data from and/or the writing of data to one or more memory devices 140 .
- the host device 104 may generate a request, such as a read or write request, for one or more LBA addresses or LBA range, to the data storage device 102 .
- the controller 114 may use volatile memory 120 to store a logical-to-physical (or virtual-to-physical) data address translation table or database, referred to as a flash translation layer (FTL) 150 .
- FTL 150 may include entries that include a logical data address and a corresponding physical data address.
- FTL 150 may include an index that encodes the respective logical data address of each entry in the logical-to-physical data address translation table (e.g.: the FTL 150 ).
- the FTL 150 may reside in several memory devices 140 at the same time.
- Host device 104 may refer to a unit of data using the logical data address, and controller 114 may utilize physical data addresses to direct writing of data to, and reading of data from, memory device 140 .
- controller 114 may consolidate multiple logical data addresses into a logical data address container. For one of the logical data addresses in the logical data address container, controller 114 may fully specify a physical data address corresponding to the logical data address. By fully specifying the physical data address, controller 114 may specify all location attributes such that the physical data address points to a precise location of memory devices 140 (e.g., a precise memory device 140 , a precise block, a precise page, and the like). For the remainder of the logical data addresses in the logical data address container, controller 114 may partially specify the respective physical data address corresponding to each logical data address. The partially-specified physical data addresses may include less information than a fully-specified physical data address. By partially specifying the respective physical data addresses, controller 114 may specify sufficient address information so that, in combination with the fully-specified physical data address of the one logical data address, the respective physical data addresses are fully specified.
- Controller 114 may also cause FTL 150 to be stored in the NVM array 116 , such as one of memory devices 140 , and optionally cached to volatile memory 120 for faster access and response to received memory commands. Due to data write processes, such as garbage collection of memory devices 140 comprising NAND flash memory, FTL 150 is constantly updated due to changes in the stored data.
- Embodiments of the disclosure utilize a trie mapping 160 of FTL 150 for rapid lookup of a received data access request of a LBA or LBA range on one of a plurality of regions of FTL 150 .
- the trie mapping 160 may be initialized in volatile memory 120 .
- FIG. 2 is a flowchart illustrating a method 200 of searching a database using trie mapping of LBA's, according to one embodiment.
- Method 200 is described in reference to data storage device 102 of FIG. 1 , but other data storage systems are possible.
- One or more blocks of the method 200 may be performed by controller 114 executing machine-executable instructions in a non-transitory machine-readable medium stored, such as firmware stored in NVM array 116 or read-only memory (ROM) of data storage device 102 .
- Method 200 discloses a process of performing a directed fast search to match a LBA or LBA range to a region of the FTL 150 by a trie search engine.
- the method 200 begins at block 202 , where data storage device 102 receives an access request of a LBA or LBA range, such as reading or writing data or marking data for deletion.
- controller 114 selects a portion of the LBA to be compared to the trie mapping 160 .
- controller 114 executes the trie search algorithm and matches the portion of the LBA to the trie mapping 160 initialized in volatile memory 120 .
- the process proceeds back to block 204 where another portion of the LBA is incremented and, at block 206 , controller 114 matches the next portion of the LBA to the trie mapping 160 .
- the method 200 continues to block 210 where additional searching is performed on the identified region of FTL 150 without searching all individual entries of the FTL 150 , thus constituting a narrowed search.
- the method 200 may proceed in a single cycle. In other embodiments, the method 200 proceeds for a limited number of cycles until a region of FTL 150 is identified or stopped due to no matches, or due to a lack of remaining entries in the trie mapping 160 .
- FIG. 3 is a schematic block diagram of a data storage device controller running a trie search engine 300 to perform a directed fast search on a database in a RAM array, according to one embodiment.
- the trie search engine 300 is configured to perform the process illustrated in method 200 of FIG. 2 , but other configurations are possible.
- the trie search engine 300 may be integrated with controller 114 of storage device 102 of FIG. 1 .
- the trie search engine 300 is made of hardware components, but other embodiments are possible, including running the trie search engine 300 in firmware, or running the trie search engine as executable software on the controller 114 .
- the trie search engine 300 performs a recursive search on LBA's in the FLT 150 , where the trie search engine 300 calls on itself during execution of the trie search algorithm. Yet other embodiments are possible and are not limited by the examples disclosed herein.
- the trie search engine 300 includes a trie state machine 302 managing a multiplexer (MUX) 303 with a 3-bit control signal 317 for selecting which nibble of a 32 bit address is to be searched.
- the MUX 303 receives inputs from a LBA register 304 , such as an advanced peripheral bus (APB) register having low complexity and low power usage.
- APB advanced peripheral bus
- the trie state machine 302 instructs MUX 303 to allow a portion of the LBA to be searched and matched to a pre-configured RAM 306 containing a trie mapping 310 to be searched.
- the trie state machine 302 searches the trie mapping 310 in one or a limited number of cycles in a process of incrementing through portions of the LBA and of sequencing through trie mapping 310 as disclosed in the method 200 of FIG. 2 .
- Searching the trie mapping 310 returns a 7 bit tag 314 outputted to a status register 308 , such as an APB register, indicating how to handle the LBA.
- the tag 314 may provide a region of the FTL 150 (of FIG. 1 ) that the LBA falls in to narrow the scope of subsequent searches that are performed on the FTL 150 by the trie search engine 300 .
- the trie search engine 300 also includes a write to LBA register signal 318 that is generated by the controller 114 and is sent to the trie state machine 302 whenever the LBA register 304 is updated with fresh data.
- the write to LBA register signal 318 is used by the trie state machine 302 to reset the trie state machine 302 to a known state as new data is being processed by the trie search engine 300 .
- the trie search engine 300 may avoid the problem of searching and comparing a LBA to every entry of the FTL 150 by conducting a directed search.
- Embodiments of the trie search engine 300 may initialize the trie mapping 310 in RAM 306 so that the trie state machine 302 may rapidly sequence through the RAM 306 for an output of a region in which the LBA falls on in the FTL 150 .
- matches may be found prior to reaching the end of the LBA vector. For example, for a LBA of 32 bits, not all 32 bits are required to be searched and matched in the trie mapping 310 .
- the trie search engine 300 returns the tag 314 for the region a LBA, or LBA range, falls on in the FTL 150 for a duration lasting between one and eight cycles.
- a 32 bit LBA is placed in the LBA register 304 .
- the LBA address is divided into eight nibbles of four bits each.
- the trie state machine 302 selects one of the nibbles by issuing the control signal 317 and uses the nibble with an address from RAM 306 to indicate an 11 bit trie RAM address using 4 bits for the nibble and 7 bits for the RAM page.
- the output of RAM 306 is used in the next cycle of incrementing through portions of LBA.
- the RAM 306 output e.g.: the tag 314
- the status register 308 identifying how the LBA should be handled, such as a region of the FTL 150 in which the LBA falls.
- another output of the RAM 306 (a match/no-match signal 316 made of 2 bits) is sent through the trie state machine 302 and to the status register 308 .
- the trie state machine 302 generates a state value 312 (value) and sends the state 312 to the status register 308 .
- the trie state machine 302 uses the match/no-match signal 316 to signal the controller 114 to continue or stop incrementing through portions of the LBA.
- the trie state machine 302 uses a 7 bit page address provided by RAM 306 with the next incremented nibble of the LBA on LBA register 304 until a match is found, until no match is found, or a partial match is found in the trie mapping 310 . Therefore, the method 200 can be completed between one cycle (i.e., using one nibble) and eight cycles (i.e., incrementing through all eight nibbles of the LBA address).
- the RAM 306 may be a 2K ⁇ 9 bit wide RAM with an output of 2 bits for the match/no-match signal 316 and 7 bits for the page location (e.g.: tag 314 ).
- the RAM 306 may be sized to support searching and matching of any desired number of LBA regions of a FTL 150 .
- a status read signal 320 is output through the status register 308 and sent to the controller 114 for further action. Based on the value of the status read signal 320 , the controller 114 can decide to continue the trie search engine 300 or stop the process entirely.
- FIG. 4 is one example of a FLT 400 showing a table of LBA's organized into a plurality of regions as used by the trie mapping method 200 of FIG. 2 , according to one embodiment.
- the LBAs may be organized in any number of regions of the FTL 150 .
- Example FTL 400 includes several LBA regions of interest numbered 402 , 404 , 406 , 408 , 410 , 412 , 414 , 416 , and 418 .
- the example FLT 400 also includes a LBA start address 420 , a LBA end address 422 , and a range of address 424 to match on with the trie mapping 160 of FIG. 1 .
- FIG. 4 discloses one embodiment of the FTL 150 of FIG. 1 , and other embodiments are possible.
- FIG. 5 is an example trie mapping data table 500 (example trie mapping) as stored in RAM 306 (of FIG. 3 ) containing results of a directed search, according to one embodiment.
- the example trie mapping 500 includes multiple row entries 530 , 532 , 534 , 536 , 538 , 540 , 542 , 544 , 546 , 548 , 550 , 552 , 554 , 556 , 558 , 560 and multiple page columns 502 , 504 , 506 , 508 , 510 , 512 , 514 , 516 , 518 , 520 , 522 , 524 .
- FIG. 5 example trie mapping data table 500 (example trie mapping) as stored in RAM 306 (of FIG. 3 ) containing results of a directed search, according to one embodiment.
- the example trie mapping 500 includes multiple row entries 530 , 532 , 534 , 536 , 538 , 540
- RAM 306 is organized as pages 0-11 502 , 504 , 506 , 508 , 510 , 512 , 514 , 516 , 518 , 520 , 522 , 524 .
- Each page has 16 entries, and RAM 306 is initialized with 192 entries.
- the first symbol in each entry is a portion of the LBA address matched within the specific page. Then, each entry either has the term “Cont”, “Match”, or “No Match.”
- the term “Cont” in an entry indicates to the trie state machine 302 to continue to the page indicated on the last number of the entry.
- the term “Match” in an entry indicates to the LBA falls in the FTL 150 region indicated on the last number of the entry.
- the term “No Match’ in an entry indicates to the trie state machine 302 that the LBA does not match any regions of the FTL.
- the 7 bit page address or tag 314 of the RAM 306 entries indicates the next page of sixteen entries to be accessed, while the 2 bit match/no-match signal 316 indicates to the trie state machine 302 whether to increment through another portion of the LBA address, return the tag 314 for the region to match, or that no match is found in the example trie mapping 400 .
- the following example of matching a LBA is described in reference to FIGS. 3, 4, and 5 , but other search engines, FTL 150 regions and trie mappings 160 are possible.
- a LBA of symbols 2E4123 is written on LBA register 304 of trie search engine 300 for memory addressing.
- the trie state machine 302 selects the first symbol of “2” from the LBA 2E4123 and searches for a match on page 0 ( 502 of FIG. 5 ) of trie mapping 310 for the symbol “2”.
- the symbol “2’ is found on the entry “2 Cont 1” 534 (of FIG. 5 ) on page 0 502 .
- a status of “Continue” is outputted to trie state machine 302 to increment the next portion of the LBA address 2E4123 returning the symbol “E” from mux 303 for a second cycle.
- the “1” in the entry “2 Cont 1” 534 of the first cycle provides the RAM 306 data address of page 1 504 in conjunction with searching for symbol “E”.
- the symbol “E” is found on entry “E Cont 5” 558 on page 1 504 .
- a status of “Continue” is outputted to trie state machine 302 to increment the next portion of the LBA address 2E4123, returning the symbol “4” from mux 303 for a third cycle.
- the “5” in the entry “E Cont 5” 558 of the second cycle provides the RAM 306 data address of page 5 512 in conjunction with searching for symbol “4”.
- the symbol “4” is found on entry “4 Match 3 ” 538 of page 5 512 .
- a status of “Match” is outputted to trie state machine 302 and cycling or incrementing through the LBA stops.
- the region three is then outputted to status register 308 . Therefore, the location of LBA 2E4123 is narrowed to region three out of nine total regions.
- the matching of LBA's is greatly reduced since not all entries of a FTL 150 need to be searched and matched for memory addressing.
- FIG. 5 is only one embodiment that uses the example trie mapping 400 organized in the RAM 306 to provide a directed search.
- FIGS. 4 and 5 are described in reference to the trie search engine 300 of FIG. 3 , but other configurations are possible.
- the trie search engine 300 disclosed in FIGS. 2-5 operates as follows.
- the process of operating the trie search engine 300 begins with the data storage device 102 receiving an access request from a host device 104 of a LBA (or LBA range).
- the request may include reading/writing data or marking data for deletion.
- the LBA regions of interest 402 , 404 , 406 , 408 , 410 , 412 , 414 , 416 , 418 each disclose a range of LBA's.
- LBA region of interest 402 includes a LBA with a start address of 27000 to an end address of 29FFFF.
- the controller 114 selects which one of the 32 bit LBA's is loaded into the LBA register 304 .
- each LBA is made of 8 4-bit nibbles.
- the trie search engine 300 processes one nibble at a time, with the trie state machine 302 selecting which 4-bit nibble is loaded into the MUX 303 to be compared to the trie mapping 160 .
- the trie state machine 302 selects which of the 8 nibbles is to be used based on the 3-bit control signals 317 sent from the trie state machine 302 to the MUX 303 .
- the controller executes the trie search engine 300 in an effort to match the nibble selected earlier to the trie mapping region of the FTL stored in the RAM 306 .
- the trie search engine then compares the nibble to the FTL to determine if any portion of the LBA matches an entry in the FTL.
- the trie search engine is operated repeatedly until a match is found, or until the full range of LBA's have been searched. For each LBA, each search requires up to 8 cycles to search all eight nibbles that make up one LBA.
- the search in the FTL is correspondingly narrowed, and the trie search engine 300 is rerun until all LBA regions of interest 402 , 404 , 406 , 408 , 410 , 412 , 414 , 416 , 418 are searched and matches identified.
- the RAM 306 generates the match/no-match signal 316 and sends it to the trie state machine 302 .
- the RAM 306 also generates the tag 314 with which LBA range to search for next. Both the state signal 312 and the tag 314 are sent to the Status register 320 to the sent to the controller 114 . Across multiple cycles, the trie sear engine 300 cycles through each nibble of all of the LBA's of interest and sends the state 312 of the present search and the next address to the controller 114 for further action.
- This disclosure includes a method of searching a database that includes executing a trie search algorithm on a first portion of data in the database, returning a tag narrowing a location of the first portion of data to optimize the database, and performing a directed search of the optimized database by executing the trie search algorithm again on the optimized database, wherein the trie search algorithm is an information retrieval data structure using a M-ary tree where each node consists of a M-positional vector of pointers.
- the method may also include where the data is a range of LBA's.
- the method also includes where the trie search algorithm includes a recursive search operation configured to search ranges of LBA's.
- the method also includes where the tag indicates a full match, a partial match, or no match of the data being searched.
- the method also includes where the data includes at least one of a write-protect region of the database, enhanced user data, and logical-to-physical address translation data.
- This disclosure also includes a method of accessing data from a data storage device that includes receiving, from a host device, an access request directed at a LBA, selecting a first portion of the LBA, performing a trie mapping of LBA's of a flash translation layer of the data storage device, wherein the flash translation layer includes a data address translation table, matching incremented first portions of the LBA to the trie mapping of a region of the flash translation layer, identifying a first region of interest in the flash translation layer where the LBA is located, narrowing a search of the LBA to the first region of interest, and returning a status signal to the data storage device indicating the results of the trie mapping.
- the method may also include where the method is run multiple cycles until the first region of interest in the flash translation layer is identified.
- the method may also include selecting a second portion of the LBA and rerunning the method if the first region of interest of the flash translation layer is not identified.
- the method may also include a trie mapping of LBA's of a second region of interest of the flash translation layer.
- the disclosure also includes a data storage device having a volatile memory with a first flash translation layer, where the flash translation layer includes a data address translation table, and a trie mapping of logical block address regions of the first flash translation layer, and a non-volatile memory array comprising one or more memory devices.
- the data storage device also includes a controller coupled to the volatile memory and coupled to the non-volatile memory, the controller having one or more processors operable to increment through portions of a received LBA and match incremented portions of the received LBA to the trie mapping.
- the data storage device also includes means for accessing data from the data storage device using a trie search algorithm.
- the data storage device may also include where at least one memory device contains a second flash translation layer.
- the data storage device may also include where the first flash translation layer includes data entries of LBA's and a corresponding physical data address.
- the data storage device may also include where the first flash translation layer includes an index that encodes LBA's of each entry.
- the data storage device may also include where the controller consolidates multiple LBA's into a LBA container, where the controller fully specifies a physical data address corresponding to the LBA.
- the data storage device may also include where a copy of the first flash translation layer is stored in the one or more memory devices.
- the disclosure also includes a storage device having a controller with one or more processors configured to execute a trie search algorithm, where the trie search algorithm searches for LBA's in a flash translation layer, and where the flash translation layer includes a data address translation table.
- the storage device also includes a RAM array configured to store results from the trie search algorithm, a trie state machine, a LBA register, an input demultiplexer electrically coupled to the LBA register, and an output demultiplexer electrically coupled to the RAM array and the trie state machine, where the device generates an output signal that includes a state of the trie search algorithm.
- the storage device may also include where the state is one of a full match, a partial match, or no match.
- the storage device may also include where a trie mapping database is stored in the RAM array.
- the storage device may also include where the device stops searching upon reaching a full match prior to reaching the end of a LBA vector.
- the storage device may also include where the RAM array is sized to support searching and matching of any number of LBA regions of the flash translation layer.
- the disclosure also includes a method of writing data to a trie mapping table that includes initializing a region in a memory device with one or more ranges of LBA's of interest, selecting which LBA ranges are to be searched for matches, searching the region based on the LBA ranges, identifying all full matches, partial matches, and no matches for each entry of the LBA ranges, and storing the LBA ranges and the results of the search into a trie mapping table of a memory device.
- the method may also include where the trie mapping table is stored in non-volatile memory of a storage device.
- the method may also include searching the region of memory again whenever data is written to the trie mapping table.
- the method may also include returning a tag to the controller indicating a region number where a full match occurred.
- the method may also include updating a status register with a LBA and match data associated with that LBA.
- the above described method of operation provide for improved speed while accessing data from data storage devices. With improved speed, the method also uses less power, thus also reducing power usage. Specifically, the method allows for the controller of a data storage device to fully or partially match LBA's to a trie mapping and using the full or partial match to further narrow a subsequent search of LBA's. Thus stated, the methods and devices disclosed herein improve performance of data storage devices and associated searches and retrieval of data.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Operations Research (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
Description
Claims (8)
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US16/004,782 US11126624B2 (en) | 2017-06-12 | 2018-06-11 | Trie search engine |
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US201762518267P | 2017-06-12 | 2017-06-12 | |
| US16/004,782 US11126624B2 (en) | 2017-06-12 | 2018-06-11 | Trie search engine |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| US20180357280A1 US20180357280A1 (en) | 2018-12-13 |
| US11126624B2 true US11126624B2 (en) | 2021-09-21 |
Family
ID=64564099
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| US16/004,782 Active 2039-07-04 US11126624B2 (en) | 2017-06-12 | 2018-06-11 | Trie search engine |
Country Status (1)
| Country | Link |
|---|---|
| US (1) | US11126624B2 (en) |
Families Citing this family (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US11308141B2 (en) * | 2018-12-26 | 2022-04-19 | Yahoo Assets Llc | Template generation using directed acyclic word graphs |
| CN110795463B (en) * | 2019-06-27 | 2023-08-08 | 浙江大学 | Mass time series data visualization method for transient analysis of power system |
| US11537326B2 (en) * | 2020-09-10 | 2022-12-27 | Western Digital Technologies, Inc. | Relocation flow using CbA technology |
Citations (13)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20040010752A1 (en) * | 2002-07-09 | 2004-01-15 | Lucent Technologies Inc. | System and method for filtering XML documents with XPath expressions |
| US6763348B2 (en) * | 2000-10-27 | 2004-07-13 | 3Com Corporation | Method and apparatus for searching databases employing a trie search structure |
| US7249149B1 (en) * | 1999-08-10 | 2007-07-24 | Washington University | Tree bitmap data structures and their use in performing lookup operations |
| US7251663B1 (en) * | 2004-04-30 | 2007-07-31 | Network Appliance, Inc. | Method and apparatus for determining if stored memory range overlaps key memory ranges where the memory address space is organized in a tree form and partition elements for storing key memory ranges |
| US7308459B2 (en) * | 2002-12-12 | 2007-12-11 | Microsoft Corporation | System and method for using a compressed trie to estimate like predicates |
| US7328275B1 (en) * | 2000-05-30 | 2008-02-05 | Perttunen Cary D | Wirelessly retrieving and locally caching child and sibling items in a browsing session |
| US7564841B2 (en) * | 2004-03-05 | 2009-07-21 | Samsung Electronics Co., Ltd. | Apparatus and method for performing forwarding table searches using consecutive symbols tables |
| US9329991B2 (en) * | 2013-01-22 | 2016-05-03 | Seagate Technology Llc | Translation layer partitioned between host and controller |
| US9378304B2 (en) * | 2013-01-16 | 2016-06-28 | Google Inc. | Searchable, mutable data structure |
| US20170123705A1 (en) | 2015-10-30 | 2017-05-04 | Sandisk Technologies Inc. | Convertible Leaf Memory Mapping |
| US10204142B2 (en) * | 2010-12-29 | 2019-02-12 | Microsoft Technology Licensing, Llc | Progressive spatial searching using augmented structures |
| US10552058B1 (en) * | 2015-07-17 | 2020-02-04 | Radian Memory Systems, Inc. | Techniques for delegating data processing to a cooperative memory controller |
| US10642748B1 (en) * | 2014-09-09 | 2020-05-05 | Radian Memory Systems, Inc. | Memory controller for flash memory with zones configured on die bounaries and with separate spare management per zone |
-
2018
- 2018-06-11 US US16/004,782 patent/US11126624B2/en active Active
Patent Citations (13)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US7249149B1 (en) * | 1999-08-10 | 2007-07-24 | Washington University | Tree bitmap data structures and their use in performing lookup operations |
| US7328275B1 (en) * | 2000-05-30 | 2008-02-05 | Perttunen Cary D | Wirelessly retrieving and locally caching child and sibling items in a browsing session |
| US6763348B2 (en) * | 2000-10-27 | 2004-07-13 | 3Com Corporation | Method and apparatus for searching databases employing a trie search structure |
| US20040010752A1 (en) * | 2002-07-09 | 2004-01-15 | Lucent Technologies Inc. | System and method for filtering XML documents with XPath expressions |
| US7308459B2 (en) * | 2002-12-12 | 2007-12-11 | Microsoft Corporation | System and method for using a compressed trie to estimate like predicates |
| US7564841B2 (en) * | 2004-03-05 | 2009-07-21 | Samsung Electronics Co., Ltd. | Apparatus and method for performing forwarding table searches using consecutive symbols tables |
| US7251663B1 (en) * | 2004-04-30 | 2007-07-31 | Network Appliance, Inc. | Method and apparatus for determining if stored memory range overlaps key memory ranges where the memory address space is organized in a tree form and partition elements for storing key memory ranges |
| US10204142B2 (en) * | 2010-12-29 | 2019-02-12 | Microsoft Technology Licensing, Llc | Progressive spatial searching using augmented structures |
| US9378304B2 (en) * | 2013-01-16 | 2016-06-28 | Google Inc. | Searchable, mutable data structure |
| US9329991B2 (en) * | 2013-01-22 | 2016-05-03 | Seagate Technology Llc | Translation layer partitioned between host and controller |
| US10642748B1 (en) * | 2014-09-09 | 2020-05-05 | Radian Memory Systems, Inc. | Memory controller for flash memory with zones configured on die bounaries and with separate spare management per zone |
| US10552058B1 (en) * | 2015-07-17 | 2020-02-04 | Radian Memory Systems, Inc. | Techniques for delegating data processing to a cooperative memory controller |
| US20170123705A1 (en) | 2015-10-30 | 2017-05-04 | Sandisk Technologies Inc. | Convertible Leaf Memory Mapping |
Also Published As
| Publication number | Publication date |
|---|---|
| US20180357280A1 (en) | 2018-12-13 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US11055230B2 (en) | Logical to physical mapping | |
| US11232041B2 (en) | Memory addressing | |
| EP3539005B1 (en) | Data relocation in hybrid memory | |
| US10496334B2 (en) | Solid state drive using two-level indirection architecture | |
| US11513723B2 (en) | Read handling in zoned namespace devices | |
| US11194737B2 (en) | Storage device, controller and method for operating the controller for pattern determination | |
| US20130151759A1 (en) | Storage device and operating method eliminating duplicate data storage | |
| US11210226B2 (en) | Data storage device and method for first processing core to determine that second processing core has completed loading portion of logical-to-physical mapping table thereof | |
| CN111052096A (en) | cache line data | |
| TW201715401A (en) | Data storage device and operating method thereof | |
| US9619165B1 (en) | Convertible leaf memory mapping | |
| US12045483B2 (en) | Storage device including indirect access module, method of operating the same, and method of operating storage system including the same | |
| US11126624B2 (en) | Trie search engine | |
| US12260122B2 (en) | Storage controller providing status information of zone region, method of operating the same, and method of operating electronic device having the same | |
| US11113205B2 (en) | Die addressing using a reduced size translation table entry | |
| US20250348430A1 (en) | Memory controller, memory system managing logical-to-physical mapping table, method, and storage medium thereof | |
| US11269534B2 (en) | Data storage device and non-volatile memory control method | |
| US11657000B2 (en) | Controller and memory system including the same | |
| CN110968525B (en) | FTL provided cache, optimization method and storage device thereof | |
| US12430034B2 (en) | Memory controller and memory system performing data search based on logical-to-physical mapping table |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| FEPP | Fee payment procedure |
Free format text: ENTITY STATUS SET TO UNDISCOUNTED (ORIGINAL EVENT CODE: BIG.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: DOCKETED NEW CASE - READY FOR EXAMINATION |
|
| AS | Assignment |
Owner name: WESTERN DIGITAL TECHNOLOGIES, INC., CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:BRIEF, DAVID C.;ARAD, ERAN;SIGNING DATES FROM 20170619 TO 20170627;REEL/FRAME:047158/0424 |
|
| AS | Assignment |
Owner name: JPMORGAN CHASE BANK, N.A., AS AGENT, ILLINOIS Free format text: SECURITY INTEREST;ASSIGNOR:WESTERN DIGITAL TECHNOLOGIES, INC.;REEL/FRAME:052915/0566 Effective date: 20200113 |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: NON FINAL ACTION MAILED |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: RESPONSE TO NON-FINAL OFFICE ACTION ENTERED AND FORWARDED TO EXAMINER |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: DOCKETED NEW CASE - READY FOR EXAMINATION |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: NOTICE OF ALLOWANCE MAILED -- APPLICATION RECEIVED IN OFFICE OF PUBLICATIONS |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: PUBLICATIONS -- ISSUE FEE PAYMENT RECEIVED |
|
| STCF | Information on status: patent grant |
Free format text: PATENTED CASE |
|
| AS | Assignment |
Owner name: WESTERN DIGITAL TECHNOLOGIES, INC., CALIFORNIA Free format text: RELEASE OF SECURITY INTEREST AT REEL 052915 FRAME 0566;ASSIGNOR:JPMORGAN CHASE BANK, N.A.;REEL/FRAME:059127/0001 Effective date: 20220203 |
|
| AS | Assignment |
Owner name: JPMORGAN CHASE BANK, N.A., ILLINOIS Free format text: PATENT COLLATERAL AGREEMENT - A&R LOAN AGREEMENT;ASSIGNOR:WESTERN DIGITAL TECHNOLOGIES, INC.;REEL/FRAME:064715/0001 Effective date: 20230818 Owner name: JPMORGAN CHASE BANK, N.A., ILLINOIS Free format text: PATENT COLLATERAL AGREEMENT - DDTL LOAN AGREEMENT;ASSIGNOR:WESTERN DIGITAL TECHNOLOGIES, INC.;REEL/FRAME:067045/0156 Effective date: 20230818 |
|
| AS | Assignment |
Owner name: SANDISK TECHNOLOGIES, INC., CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:WESTERN DIGITAL TECHNOLOGIES, INC.;REEL/FRAME:067567/0682 Effective date: 20240503 Owner name: SANDISK TECHNOLOGIES, INC., CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNOR'S INTEREST;ASSIGNOR:WESTERN DIGITAL TECHNOLOGIES, INC.;REEL/FRAME:067567/0682 Effective date: 20240503 |
|
| AS | Assignment |
Owner name: SANDISK TECHNOLOGIES, INC., CALIFORNIA Free format text: CHANGE OF NAME;ASSIGNOR:SANDISK TECHNOLOGIES, INC.;REEL/FRAME:067982/0032 Effective date: 20240621 |
|
| AS | Assignment |
Owner name: JPMORGAN CHASE BANK, N.A., AS THE AGENT, ILLINOIS Free format text: PATENT COLLATERAL AGREEMENT;ASSIGNOR:SANDISK TECHNOLOGIES, INC.;REEL/FRAME:068762/0494 Effective date: 20240820 |
|
| MAFP | Maintenance fee payment |
Free format text: PAYMENT OF MAINTENANCE FEE, 4TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1551); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY Year of fee payment: 4 |
|
| AS | Assignment |
Owner name: SANDISK TECHNOLOGIES, INC., CALIFORNIA Free format text: PARTIAL RELEASE OF SECURITY INTERESTS;ASSIGNOR:JPMORGAN CHASE BANK, N.A., AS AGENT;REEL/FRAME:071382/0001 Effective date: 20250424 Owner name: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT, ILLINOIS Free format text: SECURITY AGREEMENT;ASSIGNOR:SANDISK TECHNOLOGIES, INC.;REEL/FRAME:071050/0001 Effective date: 20250424 |