US20160246831A1 - Data storage device supporting accelerated database operations - Google Patents
Data storage device supporting accelerated database operations Download PDFInfo
- Publication number
- US20160246831A1 US20160246831A1 US15/144,370 US201615144370A US2016246831A1 US 20160246831 A1 US20160246831 A1 US 20160246831A1 US 201615144370 A US201615144370 A US 201615144370A US 2016246831 A1 US2016246831 A1 US 2016246831A1
- Authority
- US
- United States
- Prior art keywords
- storage device
- data
- data storage
- memory
- query
- 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.)
- Abandoned
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/2272—Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/2455—Query execution
- G06F16/24553—Query execution of query operations
-
- G06F17/30336—
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/1847—File system types specifically adapted to static storage, e.g. adapted to flash memory or SSD
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/21—Design, administration or maintenance of databases
- G06F16/217—Database tuning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/2455—Query execution
- G06F16/24553—Query execution of query operations
- G06F16/24561—Intermediate data storage techniques for performance improvement
-
- G06F17/30306—
-
- G06F17/30501—
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
- G06F3/0605—Improving or facilitating administration, e.g. storage management by facilitating the interaction with a user or administrator
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0662—Virtualisation aspects
- G06F3/0665—Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/15—Use in a specific computing environment
- G06F2212/152—Virtualized environment, e.g. logically partitioned system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/21—Employing a record carrier using a specific recording technology
- G06F2212/214—Solid state disk
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
- G06F2212/652—Page size control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
- G06F2212/657—Virtual address space management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7202—Allocation control and policies
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
- Y10S707/99933—Query processing, i.e. searching
Definitions
- This disclosure relates to non-volatile data storage devices and methods for accelerating data operations in such devices.
- Database operations are often performed in an environment where speed of execution is of great importance. Common operations such as returning query results and indexing are often I/O-intensive and consume much data bandwidth between a host system (e.g., computing device) and a data storage device at which such operations are executed.
- host system e.g., computing device
- FIG. 1A illustrates an example data storage device according to one embodiment of the invention.
- FIG. 1B illustrates an example database operation acceleration method according to one embodiment of the invention.
- FIG. 2 shows the internal data layout of the data storage device according to one embodiment.
- FIGS. 3A and 3B are block diagrams showing example layouts of database elements according to one embodiment.
- FIGS. 4A and 4B are flow diagrams showing how a filtered read operation may be executed according to one embodiment.
- FIG. 5 is a flow diagram showing how an indexing operation may be executed according to one embodiment.
- Some embodiments of this disclosure are directed to a data storage device (e.g., solid-state drive (SSD)) that is configured to accelerate database operations.
- the data storage device supports a variable sized logical page whose size can be customized to match the individual data units (e.g., tuples) within a database data structure.
- certain database operations can be accelerated as certain data may be skipped by logical address range(s) to reduce the number of data read out of the storage media and transferred to the host, which results in more efficient database operations.
- FIG. 1A illustrates an example data storage device 120 according to one embodiment of the invention.
- a data storage device 120 e.g., solid state drive, hybrid drive, etc.
- a non-volatile solid-state memory 140 which comprises one or more units of storage, such as blocks of storage.
- FIG. 1A illustrates an example where the blocks are identified as block “A” 142 through block “N.” While a single non-volatile solid-state memory 140 is illustrated for convenience, the storage device may include multiple of such memories.
- Each block of the non-volatile solid-state memory 140 comprises a plurality of flash pages (F-pages). For example, block A 142 of FIG.
- each “F-page” is a smallest grouping of memory cells in the nonvolatile solid-state memory 140 that can be programmed in a single operation or as a unit.
- a magnetic rotating media and/or other non-volatile memory such as MRAM and/or phase change memory may be used.
- the controller 130 can receive data and/or storage access commands from a storage interface 112 (e.g., a device driver) in a host system 110 .
- Storage access commands communicated by the storage interface 112 can include write and read commands issued by the host system 110 .
- the commands can specify a logical block address in the data storage device 120 , and the controller 130 can execute the received commands in the non-volatile solid-state memory 140 .
- data may be stored in magnetic media storage component (not shown in FIG. 1A ) in addition to the non-volatile solid-state memory 140 .
- the data storage device 120 can store data received from the host system 110 so that the data storage device 120 can act as memory storage for the host system 110 .
- the controller 130 can implement a logical interface.
- the logical interface can present to the host system 110 the storage device's memory as a set of logical addresses (e.g., contiguous address) where data can be stored.
- the controller 130 can map logical addresses to various physical memory addresses in the non-volatile solid-state memory 140 and/or other memory module(s).
- the controller 130 includes storage device hardware and firmware 148 and a memory for database operation code/firmware 150 .
- the storage device hardware and firmware 148 is/are used to control data operations within the data storage device.
- the database operation code/firmware in memory 150 is configurable by the host, and can be executed in its own dedicated processor (not shown in FIG. 1A ). Those queries are executed against data stored in the non-volatile solid-state memory 140 . Data related to the queries are temporarily stored in a query processing buffer 160 and results are returned to the host system 110 via a host response buffer 162 . Additional details related to how the components interact are provided below. It is noted that these components may be arranged differently in various embodiments. They may be omitted, combined, or separated into further sub-components. Also, components 148 , 150 , 160 , and 162 may be integrated into a single processor package or implemented as various discrete components in communication with one another.
- FIG. 1B illustrates an example database operation acceleration method according to one embodiment.
- the controller 130 is configured to perform the flow shown in FIG. 1B .
- the controller is configured to load instructions/code into the memory 150 .
- the instructions/code may be from a host system.
- the controller is configured to execute instructions in the memory 150 .
- a dedicated processor may be used to handle the executions to provide further acceleration.
- the controller is configured to cause data to be read from the solid-state memory 140 into the query processing buffer 160 .
- the controller is configured to determine whether the data match a database query specified by the instructions.
- the controller is configured to perform a database operation based on the query match determination.
- one or more actions in blocks 172 - 176 may be triggered as a result of executing the instructions.
- the database operation performed may include, for example, one or more of: (1) returning data matching the query to the host system 110 ; (2) adding an indication to an index when the data matches the query; (3) modifying the data matching the query and writing the modified data back to the solid-state memory.
- FIG. 2 shows the internal data layout of the data storage device according to one embodiment.
- logical pages (L-Pages) 212 of variable size are stored across various error correction pages (E-Page 210 ), which are themselves physical sub-division of physical flash pages F-Pages 208 .
- E-Page 210 error correction pages
- there is one E-Page per F-Page i.e., the F-Pages are not sub-divided.
- the L-Pages may cross the underlying physical boundaries of the E-Pages, F-Pages, as well as the boundaries of the dies/blocks/units within the non-volatile solid-state memory 140 (as shown by boundary 217 ).
- L-Pages may be distributed across multiple E-Pages.
- an E-Page 210 may have a data portion 214 protected by an ECC portion 216 .
- compression may be used to further change the size of the L-Page as written to the non-volatile solid-state memory.
- the size of the logical page is configured to be equal to the size of a tuple of the database, or an integer multiple of it. Due to this flexibility in the logical page size, a database administrator, when designing/configuring the database, can create a matching correlation between the stored data and the access index. For example, as shown in FIG. 3A , if one tuple takes 2 logical pages, in order to read tuple 7, read logical block addresses (LBAs) 14 and 15 would be read. Having the data indexed based on logical address provides many advantages, including eliminating the overhead of partitioning by the host system's operating system (OS) and allowing the use of all available storage.
- OS operating system
- the logical page and database data alignment may allow for selective skipping of certain logical page ranges in query operations (for example, during the execution of the action in the block 172 in FIG. 1B ).
- the data record is set up so that the logical page boundaries are aligned with individual fields of a database record. For example, if a user is interested in accessing just the name and address fields, targeted reads can be executed to read L-Page 0 and L-Page 1. It can be appreciated that the example shown in FIG. 3B shows one record and that the same principle can be extended to the case when reading many different records.
- the index to certain fields can be accessed by a modulo operation on the logical address.
- the database performance can be substantially improved over conventional approaches in which all data is read and then matching results are filtered and provided.
- the logical page address can be accessed based on formula and/or condition. For example, different database users may have different access privileges. One user may only have access to the name, address, and phone fields. So for that user, a logic may be formulated such that his query would be blocked from accessing L-Page 3, N+3, 2N+3, etc., as well as L-Page 4, N+4, 2N+4, etc.
- N is the number of fields in the record.
- Another user who has a higher access privilege may access additional fields such as social security number and account number, and a formula based on different logic can be used to allow that access.
- the different queries as a result of the different access privileges are efficiently handled when the fields are aligned with the logical page boundaries, allowing the data storage device to perform the filtering that is common to many database operations at the storage device's logical address level.
- the data storage device includes a dedicated buffer for query processing, e.g., the query processing buffer 160 shown in FIG. 1 , or “QPB.”
- the QPB is a part of a data path and is capable to hold one logical page.
- the data storage device includes a buffer to hold a response to the host query, e.g., the host response buffer 162 shown in FIG. 1 , or “HRB.”
- the size of the buffer in one embodiment is an integer multiple of the logical page size but can be different depending on the configuration.
- the data storage device includes a dedicated processor to execute host-provided code (xenocode, or XC).
- xenocode shall have as minimum read access to the query processing buffer 160 and read/write access to the host response buffer 162 .
- the data storage device includes a code memory for the xenocode (XC memory or XCM), as shown in element 150 of FIG. 1 .
- the size of XCM may be sized to be large enough to execute queries.
- the data storage device has a set of control registers (XCR) allowing the storage device's hardware and firmware (e.g., 148 in FIG.
- a “watchdog” function is provided such that the execution of the xenocode is monitored for hung or timed-out condition so that the device's hardware/firmware can reset the execution of the xenocode and prevent the entire storage device from hanging and timing out.
- the data storage device is configured to provide to the host information about XC type, size of the XCM and HRB, XCR configuration, and execution timing. This information can be provided electronically or in the product documentation.
- the data storage device may be filled with relational database tuples in accordance with the description above.
- FIGS. 4A and 4B shows how a filtered read may be executed.
- FIG. 4A shows some of the initialization that takes place in anticipation of the query execution.
- the host system requests configuration information from the data storage device. The information may be related to various settings including xenocode set up information.
- the data storage device responds with the requested configuration information, including details such as XC type, XCM size, QPB and HRB mapping, execution time, etc.
- the host system sends a command (e.g., a vendor specific command (VSC)) to load the xenocode for execution.
- a command e.g., a vendor specific command (VSC)
- the xenocode could have been previously sent by the host system for storage in the XCM or the solid-state memory of the data storage device. This allows for maximum flexibility by the host to configure/alter the xenocode as needed, while offering the benefits of optimized query execution that is localized with the data storage. In one embodiment, hardware may be used to further speed up these operations.
- the data storage device receives the command, starts preparation for the execution of the xenocode, and confirms readiness to the host system. The preparation work may include filling up the XCM with a given image, clearing up the HRB etc.
- the host system sends a command (e.g., VSC) to start the operation (e.g., in this case, XC-filtered read with a set of logical pages).
- a command e.g., VSC
- FIG. 4B shows a part of the flow of the filtered read operation.
- FIG. 4B shows the actions performed for every logical page in the set.
- the data storage device reads the next logical page into the query processing buffer.
- the data storage device releases the reset of the xenocode. The reset is related to the watchdog monitor to ensure that the code executes properly and does not result in a hung condition.
- the watchdog if the xenocode takes too long to execute, the watchdog resets the xenocode.
- the logical page is considered to not match the query.
- the data storage device may internally read all the database tuples, but only matching records are transferred to the host. This localized processing reduces the amount of data transfer and thus increases data throughput.
- the processing can further be coupled and/or supplemented with the storage device's hardware acceleration to deliver even better improvement.
- this filtered read operation may be performed in addition to the filtered reads based on logical addresses as previously described.
- an indexing operation may take place as follows.
- the host system and the data storage device may perform some initialization operations.
- the host system sends a command (e.g., VSC) to create xenocode-assisted subset of logical pages with a set of logical pages.
- VSC command
- the process flows for each logical page in the set is shown in FIG. 5 .
- the data storage device reads the next logical page to the query processing buffer in block 500 .
- the data storage device releases the reset of the xenocode.
- the code in the xenocode memory is executed.
- the xenocode writes to the host response buffer the logical page number (e.g., XCR.Page), in block 506 .
- the logical page number e.g., XCR.Page
- the logical page may also optionally be sent to the host system. In one embodiment, if the xenocode takes too long to execute, the watchdog resets the xenocode. In such case, the logical page is considered to not match the query.
- the data storage device After the set is completed, the data storage device sends to the host system the content of the HRB, giving the host system the results of the index operation.
- the xenocode may provide more sophisticated operations, such as calculating average values, or doing other statistical analysis.
- the data storage device may provide configurable watchdog timing to better match xenocode execution with expected traffic.
- the data storage device can go beyond read-only access to the data content.
- the xenocode can provide read-modify-write operations if necessary.
- the data storage device may implement this functionality by supporting write access to the query processing buffer by the xenocode, and providing the ability to write the modified logical page back to the solid-state memory.
- the xenocode for example, may be configured to read out a page matching certain value, perform some operation, and write the modified page back to the solid-state memory. This can be done without data transfer between the host system and the data storage device and without requiring the host system's processing power to perform such operations.
- the non-volatile solid-state memory array can be implemented using NAND flash memory devices.
- Other types of solid-state memory devices can alternatively be used, such as array of flash integrated circuits, Chalcogenide RAM (C-RAM), Phase Change Memory (PC-RAM or PRAM), Programmable Metallization Cell RAM (PMC-RAM or PMCm), Ovonic Unified Memory (OUM), Resistance RAM (RRAM), NOR memory, EEPROM, Ferroelectric Memory (FeRAM), Magnetoresistive RAM (MRAM), other discrete NVM (non-volatile solid-state memory) chips, or any combination thereof
- the non-volatile solid-state memory array preferably includes multi-level cell (MLC) devices having multi-level cells capable of storing more than a single bit of information, although single-level cell (SLC) memory devices or a combination of SLC and MLC devices may be used.
- MLC multi-level cell
- the data storage device 120 can include other memory modules, such as one or more magnetic memory modules.
- the systems and methods of this disclosure may also be useful in more conventional hard drives and hybrid drives including both solid-state and hard drive components.
- certain hard disk drive employing magnetic recording technology may employ the data addressing and processing schemes described above.
Abstract
Disclosed herein are data storage device embodiments for accelerating database operations and associated methods. In one embodiment, the data storage device includes a controller; an array of one or more solid-state memory storage devices; a first memory for storing processor executable instructions associated with database operations; and a second memory for storing data related to the database operations; wherein the controller is configured to execute the instructions to: cause data to be read from the solid-state memory storage devices into the second memory; determine whether the data match a query specified by the instructions; and perform a database operation based on the query match determination.
Description
- This application is a continuation of U.S. patent application Ser. No. 14/133,302, filed on Dec. 18, 2013, entitled “Data Storage Device Supporting Accelerated Database Operations,” which claims the benefit of U.S. provisional application No. 61/895,263 (Docket. No. T6519.P), filed Oct. 24, 2013, entitled “Data Storage Device Supporting Accelerated Database Operations,” the disclosures of which are hereby incorporated by reference in their entirety.
- This application is related to U.S. application Ser. No. 14/673,392 (Docket No. T6519.X1), filed on Mar. 30, 2015, entitled “Data Storage Device Providing Maintenance Services.”
- 1. Technical Field
- This disclosure relates to non-volatile data storage devices and methods for accelerating data operations in such devices.
- 2. Description of the Related Art
- Database operations are often performed in an environment where speed of execution is of great importance. Common operations such as returning query results and indexing are often I/O-intensive and consume much data bandwidth between a host system (e.g., computing device) and a data storage device at which such operations are executed.
- Systems and methods that embody the various features of the various embodiments of the invention will now be described with reference to the following drawings, in which:
-
FIG. 1A illustrates an example data storage device according to one embodiment of the invention. -
FIG. 1B illustrates an example database operation acceleration method according to one embodiment of the invention. -
FIG. 2 shows the internal data layout of the data storage device according to one embodiment. -
FIGS. 3A and 3B are block diagrams showing example layouts of database elements according to one embodiment. -
FIGS. 4A and 4B are flow diagrams showing how a filtered read operation may be executed according to one embodiment. -
FIG. 5 is a flow diagram showing how an indexing operation may be executed according to one embodiment. - Some embodiments of this disclosure are directed to a data storage device (e.g., solid-state drive (SSD)) that is configured to accelerate database operations. In an embodiment, the data storage device supports a variable sized logical page whose size can be customized to match the individual data units (e.g., tuples) within a database data structure. As a result, certain database operations can be accelerated as certain data may be skipped by logical address range(s) to reduce the number of data read out of the storage media and transferred to the host, which results in more efficient database operations.
- While certain embodiments of the disclosure are described, these embodiments are presented by way of example only, and are not intended to limit the scope of the disclosure. Indeed, the novel methods and systems described herein may be embodied in a variety of other forms. Furthermore, various omissions, substitutions and changes in the form of the methods and systems described herein may be made without departing from the spirit of the disclosure.
-
FIG. 1A illustrates an exampledata storage device 120 according to one embodiment of the invention. As is shown, a data storage device 120 (e.g., solid state drive, hybrid drive, etc.) includes acontroller 130 and a non-volatile solid-state memory 140, which comprises one or more units of storage, such as blocks of storage.FIG. 1A illustrates an example where the blocks are identified as block “A” 142 through block “N.” While a single non-volatile solid-state memory 140 is illustrated for convenience, the storage device may include multiple of such memories. Each block of the non-volatile solid-state memory 140 comprises a plurality of flash pages (F-pages). For example, blockA 142 ofFIG. 1A includes a plurality of F-pages, identified as F-pages A 143, B, through N. In some embodiments, each “F-page” is a smallest grouping of memory cells in the nonvolatile solid-state memory 140 that can be programmed in a single operation or as a unit. In lieu of or in addition to the non-volatile solid-state memory 140, a magnetic rotating media and/or other non-volatile memory such as MRAM and/or phase change memory may be used. - The
controller 130 can receive data and/or storage access commands from a storage interface 112 (e.g., a device driver) in ahost system 110. Storage access commands communicated by thestorage interface 112 can include write and read commands issued by thehost system 110. The commands can specify a logical block address in thedata storage device 120, and thecontroller 130 can execute the received commands in the non-volatile solid-state memory 140. In a hybrid hard drive, data may be stored in magnetic media storage component (not shown inFIG. 1A ) in addition to the non-volatile solid-state memory 140. - The
data storage device 120 can store data received from thehost system 110 so that thedata storage device 120 can act as memory storage for thehost system 110. To facilitate this function, thecontroller 130 can implement a logical interface. The logical interface can present to thehost system 110 the storage device's memory as a set of logical addresses (e.g., contiguous address) where data can be stored. Internally, thecontroller 130 can map logical addresses to various physical memory addresses in the non-volatile solid-state memory 140 and/or other memory module(s). - In one embodiment, the
controller 130 includes storage device hardware andfirmware 148 and a memory for database operation code/firmware 150. The storage device hardware andfirmware 148 is/are used to control data operations within the data storage device. In one embodiment, the database operation code/firmware inmemory 150 is configurable by the host, and can be executed in its own dedicated processor (not shown inFIG. 1A ). Those queries are executed against data stored in the non-volatile solid-state memory 140. Data related to the queries are temporarily stored in aquery processing buffer 160 and results are returned to thehost system 110 via ahost response buffer 162. Additional details related to how the components interact are provided below. It is noted that these components may be arranged differently in various embodiments. They may be omitted, combined, or separated into further sub-components. Also,components -
FIG. 1B illustrates an example database operation acceleration method according to one embodiment. In one embodiment, thecontroller 130 is configured to perform the flow shown inFIG. 1B . Atblock 168, the controller is configured to load instructions/code into thememory 150. The instructions/code may be from a host system. Atblock 170, the controller is configured to execute instructions in thememory 150. In one embodiment, a dedicated processor may be used to handle the executions to provide further acceleration. Atblock 172, the controller is configured to cause data to be read from the solid-state memory 140 into thequery processing buffer 160. Atblock 174, the controller is configured to determine whether the data match a database query specified by the instructions. Atblock 176, the controller is configured to perform a database operation based on the query match determination. In one embodiment, one or more actions in blocks 172-176 may be triggered as a result of executing the instructions. As will be explained further below, the database operation performed may include, for example, one or more of: (1) returning data matching the query to thehost system 110; (2) adding an indication to an index when the data matches the query; (3) modifying the data matching the query and writing the modified data back to the solid-state memory. -
FIG. 2 shows the internal data layout of the data storage device according to one embodiment. As shown, logical pages (L-Pages) 212 of variable size are stored across various error correction pages (E-Page 210), which are themselves physical sub-division of physical flash pages F-Pages 208. In some embodiments, there is one E-Page per F-Page, i.e., the F-Pages are not sub-divided. The L-Pages may cross the underlying physical boundaries of the E-Pages, F-Pages, as well as the boundaries of the dies/blocks/units within the non-volatile solid-state memory 140 (as shown by boundary 217). For example, as shown, L-Pages may be distributed across multiple E-Pages. In an example implementation, an E-Page 210 may have adata portion 214 protected by anECC portion 216. In some implementations, compression may be used to further change the size of the L-Page as written to the non-volatile solid-state memory. - In one embodiment, the size of the logical page is configured to be equal to the size of a tuple of the database, or an integer multiple of it. Due to this flexibility in the logical page size, a database administrator, when designing/configuring the database, can create a matching correlation between the stored data and the access index. For example, as shown in
FIG. 3A , if one tuple takes 2 logical pages, in order to readtuple 7, read logical block addresses (LBAs) 14 and 15 would be read. Having the data indexed based on logical address provides many advantages, including eliminating the overhead of partitioning by the host system's operating system (OS) and allowing the use of all available storage. - In addition, the logical page and database data alignment may allow for selective skipping of certain logical page ranges in query operations (for example, during the execution of the action in the
block 172 inFIG. 1B ). For example, inFIG. 3B , the data record is set up so that the logical page boundaries are aligned with individual fields of a database record. For example, if a user is interested in accessing just the name and address fields, targeted reads can be executed to read L-Page 0 and L-Page 1. It can be appreciated that the example shown inFIG. 3B shows one record and that the same principle can be extended to the case when reading many different records. Following this example further, because of the field and logical address alignment, the index to certain fields can be accessed by a modulo operation on the logical address. By allowing the skipping of certain logical address(es) in the preconfigured logical page arrangement, the database performance can be substantially improved over conventional approaches in which all data is read and then matching results are filtered and provided. In addition, the logical page address can be accessed based on formula and/or condition. For example, different database users may have different access privileges. One user may only have access to the name, address, and phone fields. So for that user, a logic may be formulated such that his query would be blocked from accessing L-Page 3, N+3, 2N+3, etc., as well as L-Page 4, N+4, 2N+4, etc. where N is the number of fields in the record. Another user who has a higher access privilege may access additional fields such as social security number and account number, and a formula based on different logic can be used to allow that access. The different queries as a result of the different access privileges are efficiently handled when the fields are aligned with the logical page boundaries, allowing the data storage device to perform the filtering that is common to many database operations at the storage device's logical address level. - In one embodiment, the data storage device includes a dedicated buffer for query processing, e.g., the
query processing buffer 160 shown inFIG. 1 , or “QPB.” In one embodiment, the QPB is a part of a data path and is capable to hold one logical page. - In addition, in one embodiment, the data storage device includes a buffer to hold a response to the host query, e.g., the
host response buffer 162 shown inFIG. 1 , or “HRB.” The size of the buffer in one embodiment is an integer multiple of the logical page size but can be different depending on the configuration. - In addition, in one embodiment, the data storage device includes a dedicated processor to execute host-provided code (xenocode, or XC). In one embodiment, xenocode shall have as minimum read access to the
query processing buffer 160 and read/write access to thehost response buffer 162. In one embodiment, the data storage device includes a code memory for the xenocode (XC memory or XCM), as shown inelement 150 ofFIG. 1 . The size of XCM may be sized to be large enough to execute queries. In addition, in one embodiment, the data storage device has a set of control registers (XCR) allowing the storage device's hardware and firmware (e.g., 148 inFIG. 1 ) to communicate with the xenocode and providing hardware mechanisms to reset and un-reset the xenocode. In one embodiment, a “watchdog” function is provided such that the execution of the xenocode is monitored for hung or timed-out condition so that the device's hardware/firmware can reset the execution of the xenocode and prevent the entire storage device from hanging and timing out. - In one embodiment, the data storage device is configured to provide to the host information about XC type, size of the XCM and HRB, XCR configuration, and execution timing. This information can be provided electronically or in the product documentation.
- In one embodiment, the data storage device may be filled with relational database tuples in accordance with the description above.
FIGS. 4A and 4B shows how a filtered read may be executed.FIG. 4A shows some of the initialization that takes place in anticipation of the query execution. Inblock 400, the host system requests configuration information from the data storage device. The information may be related to various settings including xenocode set up information. Inblock 402, the data storage device responds with the requested configuration information, including details such as XC type, XCM size, QPB and HRB mapping, execution time, etc. Inblock 404, the host system sends a command (e.g., a vendor specific command (VSC)) to load the xenocode for execution. The xenocode could have been previously sent by the host system for storage in the XCM or the solid-state memory of the data storage device. This allows for maximum flexibility by the host to configure/alter the xenocode as needed, while offering the benefits of optimized query execution that is localized with the data storage. In one embodiment, hardware may be used to further speed up these operations. Inblock 406, the data storage device receives the command, starts preparation for the execution of the xenocode, and confirms readiness to the host system. The preparation work may include filling up the XCM with a given image, clearing up the HRB etc. Inblock 408, the host system sends a command (e.g., VSC) to start the operation (e.g., in this case, XC-filtered read with a set of logical pages). -
FIG. 4B shows a part of the flow of the filtered read operation.FIG. 4B shows the actions performed for every logical page in the set. Inblock 420, the data storage device reads the next logical page into the query processing buffer. Inblock 422, the data storage device releases the reset of the xenocode. The reset is related to the watchdog monitor to ensure that the code executes properly and does not result in a hung condition. Then inblock 424, the code in the xenocode memory is executed. If the query result is successful, the xenocode writes an indication to the xenocode register (e.g., XCR.Good=1), inblock 426. In one embodiment, when xenocode execution is completed, it writes a completion indication in the xenocode register (e.g., XCR.Done=1). This causes the data storage device to send the logical page to the host system (e.g., via the host response buffer) and reset xenocode (block 428). In one embodiment, if the xenocode takes too long to execute, the watchdog resets the xenocode. The logical page is considered to not match the query. As a result of the execution inFIGS. 4A and 4B , the data storage device may internally read all the database tuples, but only matching records are transferred to the host. This localized processing reduces the amount of data transfer and thus increases data throughput. The processing can further be coupled and/or supplemented with the storage device's hardware acceleration to deliver even better improvement. In one implementation, this filtered read operation may be performed in addition to the filtered reads based on logical addresses as previously described. - In one embodiment, an indexing operation may take place as follows. Much like
FIG. 4A , the host system and the data storage device may perform some initialization operations. Once the initialization is completed, in one embodiment the host system sends a command (e.g., VSC) to create xenocode-assisted subset of logical pages with a set of logical pages. The process flows for each logical page in the set is shown inFIG. 5 . The data storage device reads the next logical page to the query processing buffer inblock 500. Inblock 502, the data storage device releases the reset of the xenocode. Then inblock 504, the code in the xenocode memory is executed. If the query result is successful, the xenocode writes to the host response buffer the logical page number (e.g., XCR.Page), inblock 506. In one embodiment, when xenocode execution is completed, it writes a completion indication in the xenocde register (e.g., XCR.Done=1). This causes the data storage device to reset xenocode (block 508). The logical page may also optionally be sent to the host system. In one embodiment, if the xenocode takes too long to execute, the watchdog resets the xenocode. In such case, the logical page is considered to not match the query. After the set is completed, the data storage device sends to the host system the content of the HRB, giving the host system the results of the index operation. In one embodiment, instead of, or in addition to, returning set of the matching pages, the xenocode may provide more sophisticated operations, such as calculating average values, or doing other statistical analysis. - In one embodiment, the data storage device may provide configurable watchdog timing to better match xenocode execution with expected traffic.
- In one embodiment, the data storage device can go beyond read-only access to the data content. For example, the xenocode can provide read-modify-write operations if necessary. The data storage device may implement this functionality by supporting write access to the query processing buffer by the xenocode, and providing the ability to write the modified logical page back to the solid-state memory. The xenocode, for example, may be configured to read out a page matching certain value, perform some operation, and write the modified page back to the solid-state memory. This can be done without data transfer between the host system and the data storage device and without requiring the host system's processing power to perform such operations.
- Those skilled in the art will appreciate that in some embodiments, other approaches and methods can be used. For example, the non-volatile solid-state memory array can be implemented using NAND flash memory devices. Other types of solid-state memory devices can alternatively be used, such as array of flash integrated circuits, Chalcogenide RAM (C-RAM), Phase Change Memory (PC-RAM or PRAM), Programmable Metallization Cell RAM (PMC-RAM or PMCm), Ovonic Unified Memory (OUM), Resistance RAM (RRAM), NOR memory, EEPROM, Ferroelectric Memory (FeRAM), Magnetoresistive RAM (MRAM), other discrete NVM (non-volatile solid-state memory) chips, or any combination thereof In one embodiment, the non-volatile solid-state memory array preferably includes multi-level cell (MLC) devices having multi-level cells capable of storing more than a single bit of information, although single-level cell (SLC) memory devices or a combination of SLC and MLC devices may be used. In one embodiment, the
data storage device 120 can include other memory modules, such as one or more magnetic memory modules. In addition, the systems and methods of this disclosure may also be useful in more conventional hard drives and hybrid drives including both solid-state and hard drive components. For example, certain hard disk drive employing magnetic recording technology may employ the data addressing and processing schemes described above. - While certain embodiments of the disclosure have been described, these embodiments have been presented by way of example only, and are not intended to limit the scope of the disclosure. Indeed, the novel methods and systems described herein may be embodied in a variety of other forms. Furthermore, various omissions, substitutions and changes in the form of the methods and systems described herein may be made without departing from the spirit of the disclosure. The accompanying claims and their equivalents are intended to cover such forms or modifications as would fall within the scope and spirit of the disclosure. For example, the various components described may be implemented as software and/or firmware on a processor, ASIC/FPGA, or dedicated hardware. For example, those skilled in the art will appreciate that in some embodiments, the actual steps taken in the processes of some embodiments may differ from those shown in the figures. Depending on the embodiment, certain of the steps described in the example above may be removed, others may be added, and the sequence of steps may be altered and/or performed in parallel. Also, the features and attributes of the specific embodiments disclosed above may be combined in different ways to form additional embodiments, all of which fall within the scope of the present disclosure. Although the present disclosure provides certain preferred embodiments and applications, other embodiments that are apparent to those of ordinary skill in the art, including embodiments which do not provide all of the features and advantages set forth herein, are also within the scope of this disclosure. Accordingly, the scope of the present disclosure is intended to be defined only by reference to the appended claims.
Claims (16)
1. A non-volatile data storage device, comprising:
a controller; and
an array of one or more solid-state memory storage devices, wherein the array of one or more solid-state memory storage devices is configured to:
store a plurality of logical pages in one or more solid-state memory storage devices, each of the plurality of logical pages configured to correspond with an individual data field of a database record; and
store a plurality of database records comprising a plurality of data fields, wherein data stored in each of the plurality of data fields are indexable based on a plurality of logical addresses corresponding to the plurality of logical pages.
2. The non-volatile data storage device of claim 1 , wherein the controller is further configured to perform a query-related database operation by selectively skipping reading of the logical pages.
3. The non-volatile data storage device of claim 2 , wherein the selectively skipping is based on logic associated with user data access privilege.
4. The non-volatile data storage device of claim 2 , wherein the selectively skipping is performed by a modulo operation on a logical address associated with one or more of the logical pages.
5. The method of claim 2 , wherein the selectively skipping is based on logic associated with a query.
6. The non-volatile data storage device of claim 1 , comprising:
a first memory for storing processor executable instructions associated with a database operation;
a second memory for storing data related to the database operations;
wherein the controller is configured to execute the instructions, the instructions causing the controller to:
cause data to be read from the solid-state memory storage devices into the second memory;
determine whether the data match a query specified by the instructions; and
perform a database operation based on the query match determination.
7. The non-volatile data storage device of claim 6 , wherein the controller comprises a processor dedicated to execute the instructions.
8. The non-volatile data storage device of claim 6 , wherein the instructions are received from a host system coupled to the data storage device.
9. A method of performing data operation in a non-volatile data storage device comprising an array of one or more solid-state memory storage devices, the method comprising:
storing a plurality of logical pages in one or more solid-state memory storage devices, each of the plurality of logical pages configured to correspond with an individual data field of a database record; and
storing a plurality of database records comprising a plurality of data fields, wherein data stored in each of the plurality of data fields are indexable based on a plurality of logical addresses corresponding to the plurality of logical pages.
10. The method of claim 9 , further comprising: performing a query-related database operation by selectively skipping reading of the logical pages.
11. The method of claim 10 , wherein the selectively skipping is based on logic associated with user data access privilege.
12. The method of claim 10 , wherein the selectively skipping is based on logic associated with a query.
13. The method of claim 10 , wherein the selectively skipping is performed by a modulo operation on a logical address associated with one or more of the logical pages.
14. The method of claim 9 , wherein, the non-volatile data storage device further a first memory, and a second memory, the method comprising:
reading data from the solid-state memory storage devices of the non-volatile data storage device into the second memory;
determining whether the data match a query specified; and
performing a database operation based on the query match determination, wherein:
the first memory is configured to store processor executable instructions associated with database operations and the query is specified by the instructions; and
the second memory is configured to store data related to the database operations.
15. The method of claim 14 , wherein the instructions are executed in a dedicated processor.
16. The method of claim 14 , wherein the instructions are received from a host system coupled to the data storage device.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/144,370 US20160246831A1 (en) | 2013-10-24 | 2016-05-02 | Data storage device supporting accelerated database operations |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201361895263P | 2013-10-24 | 2013-10-24 | |
US14/133,302 US9330143B2 (en) | 2013-10-24 | 2013-12-18 | Data storage device supporting accelerated database operations |
US15/144,370 US20160246831A1 (en) | 2013-10-24 | 2016-05-02 | Data storage device supporting accelerated database operations |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US14/133,302 Continuation US9330143B2 (en) | 2013-10-24 | 2013-12-18 | Data storage device supporting accelerated database operations |
Publications (1)
Publication Number | Publication Date |
---|---|
US20160246831A1 true US20160246831A1 (en) | 2016-08-25 |
Family
ID=52993587
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US14/133,302 Active 2034-06-26 US9330143B2 (en) | 2013-10-24 | 2013-12-18 | Data storage device supporting accelerated database operations |
US15/144,370 Abandoned US20160246831A1 (en) | 2013-10-24 | 2016-05-02 | Data storage device supporting accelerated database operations |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US14/133,302 Active 2034-06-26 US9330143B2 (en) | 2013-10-24 | 2013-12-18 | Data storage device supporting accelerated database operations |
Country Status (5)
Country | Link |
---|---|
US (2) | US9330143B2 (en) |
EP (1) | EP3061008B1 (en) |
KR (1) | KR101680531B1 (en) |
CN (1) | CN105683953B (en) |
WO (1) | WO2015061629A1 (en) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020147807A1 (en) | 2019-01-18 | 2020-07-23 | Huawei Technologies Co., Ltd. | Bucketizing data into buckets for processing by code modules |
US11079958B2 (en) * | 2019-04-12 | 2021-08-03 | Intel Corporation | Apparatus, system and method for offloading data transfer operations between source and destination storage devices to a hardware accelerator |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9330143B2 (en) * | 2013-10-24 | 2016-05-03 | Western Digital Technologies, Inc. | Data storage device supporting accelerated database operations |
US10444998B1 (en) | 2013-10-24 | 2019-10-15 | Western Digital Technologies, Inc. | Data storage device providing data maintenance services |
US10387303B2 (en) | 2016-08-16 | 2019-08-20 | Western Digital Technologies, Inc. | Non-volatile storage system with compute engine to accelerate big data applications |
US10459644B2 (en) | 2016-10-28 | 2019-10-29 | Western Digital Techologies, Inc. | Non-volatile storage system with integrated compute engine and optimized use of local fast memory |
US11010431B2 (en) | 2016-12-30 | 2021-05-18 | Samsung Electronics Co., Ltd. | Method and apparatus for supporting machine learning algorithms and data pattern matching in ethernet SSD |
US10565123B2 (en) | 2017-04-10 | 2020-02-18 | Western Digital Technologies, Inc. | Hybrid logical to physical address translation for non-volatile storage devices with integrated compute module |
US10649674B2 (en) * | 2018-05-03 | 2020-05-12 | Western Digital Technologies, Inc. | Extended controller pre-initialization using boot partitions in solid state systems |
US11204715B1 (en) * | 2018-09-25 | 2021-12-21 | Amazon Technologies, Inc. | Derived data generation and storage |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6446062B1 (en) * | 1999-12-23 | 2002-09-03 | Bull Hn Information Systems Inc. | Method and apparatus for improving the performance of a generated code cache search operation through the use of static key values |
US20070204128A1 (en) * | 2003-09-10 | 2007-08-30 | Super Talent Electronics Inc. | Two-Level RAM Lookup Table for Block and Page Allocation and Wear-Leveling in Limited-Write Flash-Memories |
US20100287327A1 (en) * | 2009-05-06 | 2010-11-11 | Via Telecom, Inc. | Computing systems and methods for managing flash memory device |
US20120179869A1 (en) * | 2006-12-06 | 2012-07-12 | Fusion-Io, Inc. | Apparatus, system, and method for data storage using progressive raid |
US20130179753A1 (en) * | 2006-12-06 | 2013-07-11 | Fusion-Io, Inc. | Systems and methods for adaptive data storage |
US20130205183A1 (en) * | 2006-12-06 | 2013-08-08 | Fusion-Io, Inc. | Systems and methods for adaptive error-correction coding |
US20130282953A1 (en) * | 2012-03-02 | 2013-10-24 | Fusion-Io, Inc. | Systems and methods for referencing data on a storage medium |
US20140358876A1 (en) * | 2013-05-29 | 2014-12-04 | International Business Machines Corporation | Managing a multi-version database |
US20150039573A1 (en) * | 2013-07-31 | 2015-02-05 | International Business Machines Corporation | Compressing a multi-version database |
US9330143B2 (en) * | 2013-10-24 | 2016-05-03 | Western Digital Technologies, Inc. | Data storage device supporting accelerated database operations |
US9740439B2 (en) * | 2011-12-23 | 2017-08-22 | International Business Machines Corporation | Solid-state storage management |
Family Cites Families (98)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6070170A (en) * | 1997-10-01 | 2000-05-30 | International Business Machines Corporation | Non-blocking drain method and apparatus used to reorganize data in a database |
US6401185B1 (en) * | 1999-05-27 | 2002-06-04 | Oracle Corp. | Method and apparatus for accessing paged objects using a fast division technique |
US6728705B2 (en) * | 2000-09-01 | 2004-04-27 | Disney Enterprises, Inc. | System and method for selecting content for displaying over the internet based upon some user input |
US7162467B2 (en) | 2001-02-22 | 2007-01-09 | Greenplum, Inc. | Systems and methods for managing distributed database resources |
JP2003044230A (en) * | 2001-05-23 | 2003-02-14 | Hitachi Ltd | Storage system |
US6549977B1 (en) | 2001-05-23 | 2003-04-15 | 3Ware, Inc. | Use of deferred write completion interrupts to increase the performance of disk operations |
US7055015B2 (en) * | 2002-02-25 | 2006-05-30 | Ricoh Company, Ltd. | Information processing apparatus in which processes can reduce overhead of memory access and efficiently share memory |
JPWO2004025475A1 (en) | 2002-09-10 | 2006-01-12 | 玉津 雅晴 | Database reorganization system and database |
US6856556B1 (en) | 2003-04-03 | 2005-02-15 | Siliconsystems, Inc. | Storage subsystem with embedded circuit for protecting against anomalies in power signal from host |
US7219264B2 (en) * | 2003-05-09 | 2007-05-15 | Tekelec | Methods and systems for preserving dynamic random access memory contents responsive to hung processor condition |
US7502256B2 (en) | 2004-11-30 | 2009-03-10 | Siliconsystems, Inc. | Systems and methods for reducing unauthorized data recovery from solid-state storage devices |
US7698185B2 (en) | 2005-04-28 | 2010-04-13 | Loylogic, Inc. | Methods and systems for generating dynamic reward currency values |
US7653778B2 (en) | 2006-05-08 | 2010-01-26 | Siliconsystems, Inc. | Systems and methods for measuring the useful life of solid-state storage devices |
US8108692B1 (en) | 2006-06-27 | 2012-01-31 | Siliconsystems, Inc. | Solid-state storage subsystem security solution |
US7765373B1 (en) | 2006-06-27 | 2010-07-27 | Siliconsystems, Inc. | System for controlling use of a solid-state storage subsystem |
US7447807B1 (en) | 2006-06-30 | 2008-11-04 | Siliconsystems, Inc. | Systems and methods for storing data in segments of a storage subsystem |
US7509441B1 (en) | 2006-06-30 | 2009-03-24 | Siliconsystems, Inc. | Systems and methods for segmenting and protecting a storage subsystem |
US7685194B2 (en) * | 2006-08-31 | 2010-03-23 | Microsoft Corporation | Fine-grained access control in a database by preventing information leakage and removing redundancy |
US8161227B1 (en) | 2006-10-30 | 2012-04-17 | Siliconsystems, Inc. | Storage subsystem capable of programming field-programmable devices of a target computer system |
US20080140918A1 (en) * | 2006-12-11 | 2008-06-12 | Pantas Sutardja | Hybrid non-volatile solid state memory system |
US9153337B2 (en) * | 2006-12-11 | 2015-10-06 | Marvell World Trade Ltd. | Fatigue management system and method for hybrid nonvolatile solid state memory system |
US8549236B2 (en) | 2006-12-15 | 2013-10-01 | Siliconsystems, Inc. | Storage subsystem with multiple non-volatile memory arrays to protect against data losses |
US7596643B2 (en) | 2007-02-07 | 2009-09-29 | Siliconsystems, Inc. | Storage subsystem with configurable buffer |
US7685337B2 (en) | 2007-05-24 | 2010-03-23 | Siliconsystems, Inc. | Solid state storage subsystem for embedded applications |
US7685338B2 (en) | 2007-05-24 | 2010-03-23 | Siliconsystems, Inc. | Solid state storage subsystem for embedded applications |
US7685374B2 (en) | 2007-07-26 | 2010-03-23 | Siliconsystems, Inc. | Multi-interface and multi-bus structured solid-state storage subsystem |
US8095851B2 (en) | 2007-09-06 | 2012-01-10 | Siliconsystems, Inc. | Storage subsystem capable of adjusting ECC settings based on monitored conditions |
US8078918B2 (en) | 2008-02-07 | 2011-12-13 | Siliconsystems, Inc. | Solid state storage subsystem that maintains and provides access to data reflective of a failure risk |
US7962792B2 (en) | 2008-02-11 | 2011-06-14 | Siliconsystems, Inc. | Interface for enabling a host computer to retrieve device monitor data from a solid state storage subsystem |
EP2124174A1 (en) * | 2008-05-19 | 2009-11-25 | Accenture Global Services GmbH | Service exception resolution framework |
US7733712B1 (en) | 2008-05-20 | 2010-06-08 | Siliconsystems, Inc. | Storage subsystem with embedded circuit for protecting against anomalies in power signal from host |
US8583835B1 (en) | 2008-08-06 | 2013-11-12 | Siliconsystems, Inc. | Command portal for executing non-standard storage subsystem commands |
US8375151B1 (en) | 2009-02-12 | 2013-02-12 | Siliconsystems, Inc. | Command portal for securely communicating and executing non-standard storage subsystem commands |
US9176859B2 (en) | 2009-01-07 | 2015-11-03 | Siliconsystems, Inc. | Systems and methods for improving the performance of non-volatile memory operations |
US8090899B1 (en) | 2009-03-04 | 2012-01-03 | Western Digital Technologies, Inc. | Solid state drive power safe wear-leveling |
US10079048B2 (en) | 2009-03-24 | 2018-09-18 | Western Digital Technologies, Inc. | Adjusting access of non-volatile semiconductor memory based on access time |
US8243525B1 (en) | 2009-09-30 | 2012-08-14 | Western Digital Technologies, Inc. | Refreshing non-volatile semiconductor memory by reading without rewriting |
US8254172B1 (en) | 2009-09-30 | 2012-08-28 | Western Digital Technologies, Inc. | Wear leveling non-volatile semiconductor memory based on erase times and program times |
US9753847B2 (en) | 2009-10-27 | 2017-09-05 | Western Digital Technologies, Inc. | Non-volatile semiconductor memory segregating sequential, random, and system data to reduce garbage collection for page based mapping |
US8135903B1 (en) | 2009-10-30 | 2012-03-13 | Western Digital Technologies, Inc. | Non-volatile semiconductor memory compressing data to improve performance |
US8261012B2 (en) | 2009-10-30 | 2012-09-04 | Western Digital Technologies, Inc. | Non-volatile semiconductor memory comprising power fail circuitry for flushing write data in response to a power fail signal |
US8397107B1 (en) | 2009-12-11 | 2013-03-12 | Western Digital Technologies, Inc. | Data storage device employing data path protection using both LBA and PBA |
US8443167B1 (en) | 2009-12-16 | 2013-05-14 | Western Digital Technologies, Inc. | Data storage device employing a run-length mapping table and a single address mapping table |
US8316176B1 (en) | 2010-02-17 | 2012-11-20 | Western Digital Technologies, Inc. | Non-volatile semiconductor memory segregating sequential data during garbage collection to reduce write amplification |
US8407449B1 (en) | 2010-02-26 | 2013-03-26 | Western Digital Technologies, Inc. | Non-volatile semiconductor memory storing an inverse map for rebuilding a translation table |
US8725931B1 (en) | 2010-03-26 | 2014-05-13 | Western Digital Technologies, Inc. | System and method for managing the execution of memory commands in a solid-state memory |
US8713066B1 (en) | 2010-03-29 | 2014-04-29 | Western Digital Technologies, Inc. | Managing wear leveling and garbage collection operations in a solid-state memory using linked lists |
US8782327B1 (en) | 2010-05-11 | 2014-07-15 | Western Digital Technologies, Inc. | System and method for managing execution of internal commands and host commands in a solid-state memory |
US9026716B2 (en) | 2010-05-12 | 2015-05-05 | Western Digital Technologies, Inc. | System and method for managing garbage collection in solid-state memory |
WO2011150346A2 (en) | 2010-05-28 | 2011-12-01 | Laurich Lawrence A | Accelerator system for use with secure data storage |
US8341339B1 (en) | 2010-06-14 | 2012-12-25 | Western Digital Technologies, Inc. | Hybrid drive garbage collecting a non-volatile semiconductor memory by migrating valid data to a disk |
US8612669B1 (en) | 2010-06-28 | 2013-12-17 | Western Digital Technologies, Inc. | System and method for performing data retention in solid-state memory using copy commands and validity and usage data |
US8447920B1 (en) | 2010-06-29 | 2013-05-21 | Western Digital Technologies, Inc. | System and method for managing data access in non-volatile memory |
US8521972B1 (en) | 2010-06-30 | 2013-08-27 | Western Digital Technologies, Inc. | System and method for optimizing garbage collection in data storage |
US8639872B1 (en) | 2010-08-13 | 2014-01-28 | Western Digital Technologies, Inc. | Hybrid drive comprising write cache spanning non-volatile semiconductor memory and disk |
US8775720B1 (en) | 2010-08-31 | 2014-07-08 | Western Digital Technologies, Inc. | Hybrid drive balancing execution times for non-volatile semiconductor memory and disk |
US8638602B1 (en) | 2010-09-10 | 2014-01-28 | Western Digital Technologies, Inc. | Background selection of voltage reference values for performing memory read operations |
US8769190B1 (en) | 2010-09-15 | 2014-07-01 | Western Digital Technologies, Inc. | System and method for reducing contentions in solid-state memory access |
US8788779B1 (en) | 2010-09-17 | 2014-07-22 | Western Digital Technologies, Inc. | Non-volatile storage subsystem with energy-based performance throttling |
US8612804B1 (en) | 2010-09-30 | 2013-12-17 | Western Digital Technologies, Inc. | System and method for improving wear-leveling performance in solid-state memory |
US8601313B1 (en) | 2010-12-13 | 2013-12-03 | Western Digital Technologies, Inc. | System and method for a data reliability scheme in a solid state memory |
US8601311B2 (en) | 2010-12-14 | 2013-12-03 | Western Digital Technologies, Inc. | System and method for using over-provisioned data capacity to maintain a data redundancy scheme in a solid state memory |
US8615681B2 (en) | 2010-12-14 | 2013-12-24 | Western Digital Technologies, Inc. | System and method for maintaining a data redundancy scheme in a solid state memory in the event of a power loss |
US9183307B2 (en) * | 2010-12-15 | 2015-11-10 | Facebook, Inc. | Comment ordering system |
US8458435B1 (en) | 2010-12-20 | 2013-06-04 | Western Digital Technologies, Inc. | Sequential write thread detection |
US8392635B2 (en) | 2010-12-22 | 2013-03-05 | Western Digital Technologies, Inc. | Selectively enabling a host transfer interrupt |
US8683113B2 (en) | 2011-02-04 | 2014-03-25 | Western Digital Technologies, Inc. | Concurrently searching multiple devices of a non-volatile semiconductor memory |
US8700950B1 (en) | 2011-02-11 | 2014-04-15 | Western Digital Technologies, Inc. | System and method for data error recovery in a solid state subsystem |
CN102651007A (en) | 2011-02-28 | 2012-08-29 | 国际商业机器公司 | Method and device for managing database indexes |
US8700951B1 (en) | 2011-03-09 | 2014-04-15 | Western Digital Technologies, Inc. | System and method for improving a data redundancy scheme in a solid state subsystem with additional metadata |
US9563555B2 (en) * | 2011-03-18 | 2017-02-07 | Sandisk Technologies Llc | Systems and methods for storage allocation |
US8769232B2 (en) | 2011-04-06 | 2014-07-01 | Western Digital Technologies, Inc. | Non-volatile semiconductor memory module enabling out of order host command chunk media access |
US8751728B1 (en) | 2011-04-29 | 2014-06-10 | Western Digital Technologies, Inc. | Storage system bus transfer optimization |
US8862804B2 (en) | 2011-04-29 | 2014-10-14 | Western Digital Technologies, Inc. | System and method for improved parity determination within a data redundancy scheme in a solid state memory |
US9021178B2 (en) | 2011-05-02 | 2015-04-28 | Western Digital Technologies, Inc. | High performance path for command processing |
US8503237B1 (en) | 2011-05-18 | 2013-08-06 | Western Digital Technologies, Inc. | System and method for data recovery in a solid state storage device |
US8793429B1 (en) | 2011-06-03 | 2014-07-29 | Western Digital Technologies, Inc. | Solid-state drive with reduced power up time |
US8719531B2 (en) | 2011-06-14 | 2014-05-06 | Western Digital Technologies, Inc. | System and method for performing data retention that incorporates environmental conditions |
US8572130B2 (en) * | 2011-06-27 | 2013-10-29 | Sap Ag | Replacement policy for resource container |
US8423722B1 (en) | 2011-08-26 | 2013-04-16 | Western Digital Technologies, Inc. | System and method for high performance command processing in solid state drives |
US8700834B2 (en) | 2011-09-06 | 2014-04-15 | Western Digital Technologies, Inc. | Systems and methods for an enhanced controller architecture in data storage systems |
US8707104B1 (en) | 2011-09-06 | 2014-04-22 | Western Digital Technologies, Inc. | Systems and methods for error injection in data storage systems |
US8713357B1 (en) | 2011-09-06 | 2014-04-29 | Western Digital Technologies, Inc. | Systems and methods for detailed error reporting in data storage systems |
US8977803B2 (en) | 2011-11-21 | 2015-03-10 | Western Digital Technologies, Inc. | Disk drive data caching using a multi-tiered memory |
US8724422B1 (en) | 2012-02-29 | 2014-05-13 | Western Digital Technologies, Inc. | System and method for charging back-up charge storage element for data storage device using spindle phase switching elements |
US9003224B2 (en) | 2012-04-25 | 2015-04-07 | Western Digital Technologies, Inc. | Managing unreliable memory in data storage systems |
US8788778B1 (en) | 2012-06-04 | 2014-07-22 | Western Digital Technologies, Inc. | Garbage collection based on the inactivity level of stored data |
US8966343B2 (en) | 2012-08-21 | 2015-02-24 | Western Digital Technologies, Inc. | Solid-state drive retention monitor using reference blocks |
US8788880B1 (en) | 2012-08-22 | 2014-07-22 | Western Digital Technologies, Inc. | Efficient retry mechanism for solid-state memory failures |
US9268682B2 (en) | 2012-10-05 | 2016-02-23 | Skyera, Llc | Methods, devices and systems for physical-to-logical mapping in solid state drives |
US8972826B2 (en) | 2012-10-24 | 2015-03-03 | Western Digital Technologies, Inc. | Adaptive error correction codes for data storage systems |
US9177638B2 (en) | 2012-11-13 | 2015-11-03 | Western Digital Technologies, Inc. | Methods and devices for avoiding lower page corruption in data storage devices |
US8954694B2 (en) | 2012-11-15 | 2015-02-10 | Western Digital Technologies, Inc. | Methods, data storage devices and systems for fragmented firmware table rebuild in a solid state drive |
US9021339B2 (en) | 2012-11-29 | 2015-04-28 | Western Digital Technologies, Inc. | Data reliability schemes for data storage systems |
US9059736B2 (en) | 2012-12-03 | 2015-06-16 | Western Digital Technologies, Inc. | Methods, solid state drive controllers and data storage devices having a runtime variable raid protection scheme |
US20140223255A1 (en) | 2012-12-18 | 2014-08-07 | Western Digital Technologies, Inc. | Decoder having early decoding termination detection |
US9430376B2 (en) | 2012-12-26 | 2016-08-30 | Western Digital Technologies, Inc. | Priority-based garbage collection for data storage systems |
US9652376B2 (en) * | 2013-01-28 | 2017-05-16 | Radian Memory Systems, Inc. | Cooperative flash memory control |
-
2013
- 2013-12-18 US US14/133,302 patent/US9330143B2/en active Active
-
2014
- 2014-10-23 EP EP14855008.0A patent/EP3061008B1/en active Active
- 2014-10-23 KR KR1020167013474A patent/KR101680531B1/en active IP Right Grant
- 2014-10-23 CN CN201480058389.3A patent/CN105683953B/en active Active
- 2014-10-23 WO PCT/US2014/062066 patent/WO2015061629A1/en active Application Filing
-
2016
- 2016-05-02 US US15/144,370 patent/US20160246831A1/en not_active Abandoned
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6446062B1 (en) * | 1999-12-23 | 2002-09-03 | Bull Hn Information Systems Inc. | Method and apparatus for improving the performance of a generated code cache search operation through the use of static key values |
US20070204128A1 (en) * | 2003-09-10 | 2007-08-30 | Super Talent Electronics Inc. | Two-Level RAM Lookup Table for Block and Page Allocation and Wear-Leveling in Limited-Write Flash-Memories |
US20120179869A1 (en) * | 2006-12-06 | 2012-07-12 | Fusion-Io, Inc. | Apparatus, system, and method for data storage using progressive raid |
US20130179753A1 (en) * | 2006-12-06 | 2013-07-11 | Fusion-Io, Inc. | Systems and methods for adaptive data storage |
US20130205183A1 (en) * | 2006-12-06 | 2013-08-08 | Fusion-Io, Inc. | Systems and methods for adaptive error-correction coding |
US20100287327A1 (en) * | 2009-05-06 | 2010-11-11 | Via Telecom, Inc. | Computing systems and methods for managing flash memory device |
US9740439B2 (en) * | 2011-12-23 | 2017-08-22 | International Business Machines Corporation | Solid-state storage management |
US20130282953A1 (en) * | 2012-03-02 | 2013-10-24 | Fusion-Io, Inc. | Systems and methods for referencing data on a storage medium |
US20140358876A1 (en) * | 2013-05-29 | 2014-12-04 | International Business Machines Corporation | Managing a multi-version database |
US20150039573A1 (en) * | 2013-07-31 | 2015-02-05 | International Business Machines Corporation | Compressing a multi-version database |
US9330143B2 (en) * | 2013-10-24 | 2016-05-03 | Western Digital Technologies, Inc. | Data storage device supporting accelerated database operations |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020147807A1 (en) | 2019-01-18 | 2020-07-23 | Huawei Technologies Co., Ltd. | Bucketizing data into buckets for processing by code modules |
EP3903215A4 (en) * | 2019-01-18 | 2022-04-13 | Huawei Technologies Co., Ltd. | Bucketizing data into buckets for processing by code modules |
US11079958B2 (en) * | 2019-04-12 | 2021-08-03 | Intel Corporation | Apparatus, system and method for offloading data transfer operations between source and destination storage devices to a hardware accelerator |
US11604594B2 (en) | 2019-04-12 | 2023-03-14 | Intel Corporation | Apparatus, system and method for offloading data transfer operations between source and destination storage devices to a hardware accelerator |
Also Published As
Publication number | Publication date |
---|---|
US20150120770A1 (en) | 2015-04-30 |
CN105683953A (en) | 2016-06-15 |
EP3061008A4 (en) | 2017-05-03 |
EP3061008A1 (en) | 2016-08-31 |
US9330143B2 (en) | 2016-05-03 |
EP3061008B1 (en) | 2018-11-21 |
KR101680531B1 (en) | 2016-11-28 |
CN105683953B (en) | 2017-11-10 |
KR20160066051A (en) | 2016-06-09 |
WO2015061629A1 (en) | 2015-04-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9330143B2 (en) | Data storage device supporting accelerated database operations | |
US10572169B2 (en) | Scheduling scheme(s) for a multi-die storage device | |
CN110447009B (en) | System and method for adaptive command acquisition aggregation | |
US10496281B2 (en) | Data storage device, data processing system and method of operation | |
US10359953B2 (en) | Method and apparatus for offloading data processing to hybrid storage devices | |
CN110073323B (en) | System and method for speculatively executing commands using controller memory buffers | |
US10534546B2 (en) | Storage system having an adaptive workload-based command processing clock | |
US10776268B2 (en) | Priority addresses for storage cache management | |
US10114743B2 (en) | Memory erase management | |
CN107980126B (en) | Method for scheduling multi-die storage device, data storage device and apparatus | |
US10635350B2 (en) | Task tail abort for queued storage tasks | |
WO2020231476A1 (en) | Storage system and method for preventing head-of-line blocking in a completion path | |
US10379781B2 (en) | Storage system and method for improved command flow | |
KR20220050177A (en) | 3-tier hierarchical memory system | |
US20180041411A1 (en) | Method and System for Interactive Aggregation and Visualization of Storage System Operations | |
US10095433B1 (en) | Out-of-order data transfer mechanisms for data storage systems | |
US10474391B2 (en) | Storage system and method for executing file-based firmware commands and collecting response data | |
US11086804B2 (en) | Storage system and method for reducing read-retry duration | |
US20210181980A1 (en) | Storage System and Method for Improving Utilization of a Communication Channel between a Host and the Storage System | |
US10810016B2 (en) | Operating methods of computing devices comprising storage devices including nonvolatile memory devices, buffer memories and controllers | |
US11487449B2 (en) | Data storage device and method for enabling higher lane utilization in run time via device hints on workload patterns | |
US11544107B2 (en) | Storage system and method for multiprotocol handling | |
US10444998B1 (en) | Data storage device providing data maintenance services |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: WESTERN DIGITAL TECHNOLOGIES, INC., CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:OBUKHOV, DMITRY S.;BOMBET, MARC A.;SIGNING DATES FROM 20140714 TO 20140725;REEL/FRAME:040408/0493 |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: FINAL REJECTION MAILED |
|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION |