Disclosed herein is a controller architecture that pairs a controller with a NVM (non-volatile memory) storage system over a high-level, high speed interface such as PCIe. In one embodiment, the NVM storage system includes a bridge that communicates with the controller via the high-level interface, and controls the NVM via an interface (e.g., ONFI). The controller is provided a rich set of physical level of controls over individual elements of the NVM. In one embodiment, the controller is implemented in a higher powered processor that supports advanced functions such as mapping, garbage collection, wear leveling, etc. In one embodiment, the bridge is implemented in a lower powered processor and performs basic signal processing, channel management, basic error correction functions, etc. This labor division provides the controller physical control of the NVM over a fast, high-level interface, resulting in the controller managing the NVM at both the page and block level.
|
29. A non-volatile memory storage system, comprising:
an array of one or more solid-state storage devices; and
a bridge device coupled with the array, the bridge device comprising:
a first interface for communicating data access instructions to the array of one or more solid-state storage devices;
a second interface for receiving, from a controller, physical page-level data access commands; and
an xor parity accumulator;
wherein the bridge device is configured to: implement a first queue for receiving the data access commands from the controller, and execute an xor parity accumulator instruction embedded in at least one of the data access commands.
28. A non-volatile memory storage system, comprising:
an array of one or more solid-state storage devices; and
a bridge device coupled with the array, the bridge device comprising:
a first interface for communicating data access instructions to the array of one or more solid-state storage devices; and
a second interface for receiving, from a controller, physical page-level data access commands;
wherein the bridge device is configured to implement a first queue for receiving the data access commands from the controller and a second queue for receiving administrative commands, and
wherein at least one of the administrative commands is associated with operation of the first queue.
18. A method for handling data operations in a controller architecture comprising a controller device and a bridge device coupled with non-volatile memory storage, the method comprising performing the following in the controller device:
sending, via an interface connecting the controller device and the bridge device, a data access command to the bridge device, the data access command including physical address instructions associated with the command; and
in response to the bridge device accessing a data port on the controller device that is associated with the data access command, initiating configuration of a data path in the controller to prepare transfer of data related to the command.
9. A controller device for controlling data operations in a non-volatile storage module, the controller device comprising:
at least one data path;
an interface for communicating with a bridge device coupled with non-volatile memory storage; and
a processor configured to implement an address range in a memory comprising addresses for a plurality of data ports configured for data operations, the data ports being configured to be accessed by the bridge device, the accesses being related to data access commands sent by the controller device to the bridge device;
wherein the at least one data path of the controller device is triggered by an access of one of the data ports by the bridge device.
25. A method for handling data operations in a controller architecture comprising a controller device and a bridge device coupled with non-volatile memory storage, the method comprising performing the following in the bridge device:
receiving, via an interface connecting the controller device and the bridge device, a plurality of data access commands from the controller device, at least some of the data access commands including physical address instructions associated with the command, wherein each of the data access commands includes a priority indication;
selecting one of the commands for processing based on the priority indications in the data access commands and a current state of one or more data channels in the non-volatile memory storage; and
accessing a data port on the controller that is associated with the selected command to initiate transfer of data for the command.
1. A non-volatile memory storage system, comprising:
an array of one or more solid-state storage devices; and
a bridge device coupled with the array, the bridge device comprising:
a first interface for communicating data access instructions to the array of one or more solid-state storage devices; and
a second interface for receiving, from a controller, physical page-level data access commands;
wherein the bridge device is configured to:
implement a first queue for receiving the data access commands from the controller,
receive, in the first queue from the controller, data access commands with different priority indications, and
determine an order of processing the received data access commands to maximize concurrent execution of the commands in the array of one or more solid-state storage devices, the order being determined according to at least one of: (1) the priority indications and (2) a current state of activity in the array.
2. The non-volatile memory storage system of
3. The non-volatile memory storage system of
4. The non-volatile memory storage system of
6. The non-volatile memory storage system of
select, within the first queue, one of the data access commands from the controller for processing; and
access, a data port in the controller that is associated with the selected data access command, thereby causing a data path in the controller to initiate a transfer of data for the data access command.
7. The non-volatile memory storage system of
8. The non-volatile memory storage system of
10. The controller device of
11. The controller device of
12. The controller device of
13. The controller device of
a queue for receiving error messages from the bridge device;
a queue for receiving information messages from the bridge device; and
a queue for receiving command completion messages from the bridge device.
14. The controller device of
15. The controller device of
17. The controller device of
19. The method of
20. The method of
21. The method of
22. The method of
receiving, in the controller device from the bridge device, a completion message indicating completion of the data access command or an error message indicating an error encountered in executing the command.
24. The method of
in response to the bridge device sending data path program data, initiating, in accordance with the data path program data, configuration of a data path in the controller to prepare transfer of data related to the data access command, wherein the data path program data is previously sent by the controller device to the bridge device and is associated with the data access command.
26. The method of
reporting to the controller a status of an operation that was executed in the non-volatile memory storage in response to the selected data access command.
|
1. Technical Field
This disclosure relates to non-volatile storage systems, including but not limited to flash drives. More particularly, the disclosure relates to systems and methods for an enhanced controller architecture in solid state drives.
2. Description of the Related Art
Various types of controller architecture exist for controlling flash media. The Open NAND Flash Interface (ONFI) is a standard interface that specifies some common sets of commands that flash memory manufacturers should support. ONFI supports some low level rudimentary I/O operations that can include, for example, page write/read and block erase. However, effective flash media management often involves a number of high level and potentially process-intensive functions such as logical-to-physical mapping, garbage collection, and wear leveling. These functions are beyond the scope of ONFI and thus an effective controller architecture needs to address these needs while providing a high level of data throughput performance to the host.
Systems and methods that embody the various features of the invention will now be described with reference to the following drawings, in which:
While certain embodiments of the inventions are described, these embodiments are presented by way of example only, and are not intended to limit the scope of the inventions. 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 inventions.
Unlike the designs described above, the controller in this architecture is provided a rich set of physical level of controls over individual elements of the NVM (e.g., page level control) over a sophisticated and fast interface such as PCIe. It is observed that in many controller-bridge type designs that the bridge is typically implemented on a processor with reduced performance due to power concerns, while the controller typically is in an environment that faces less power concerns. If the processor intensive functionalities are shifted to the higher performing controller, then overall latency can be reduced. Thus, in some embodiments, the controller is typically implemented in a higher powered processor that can support the advanced NVM management functions. The bridge, on the other hand, is implemented in some embodiments in a lower powered processor to minimize energy usage of the overall NVM storage module/unit. As a result, the bridge may perform basic signal processing and channel management of the NVM, as well as some basic error correction functions and XOR parity accumulation. In some embodiments, the controller performs logical-to-physical address mapping, garbage collection, wear leveling, parity management (via control of the parity accumulator in the bridge), RAID striping, etc. This division of labor still provides the controller direct, physical (e.g., page-level) control of the NVM, resulting in the controller managing the NVM at both the page and block level over a fast, high level interface such as PCIe. The controller in one embodiment also manages other integrated services such as the XOR parity accumulator in the bridge.
In one embodiment, another advantage of the architecture's division of the management tasks relates to NVM industry trends. Physical management of the NVM is becoming increasingly important as the most common type of NVM, e.g., MLC (Multi-Level Cell) NAND, continues to evolve to provide higher capacity at the cost of reduced endurance. For example, today's MLC products with a 5,000 P/E-cycle endurance are being replaced with next-generation MLC products with a 1,500-2,000 P/E-cycle endurance. Commonly, the bridge designer is in the best position to understand the physical properties of the NVM and how best to extend its life by implementing various endurance enhancement/management functionalities. Because of this rapidly changing technological landscape, and because each individual NVM manufacturer may require different such endurance enhancement/management functionalities, these functionalities may constantly require fine-tuning to suit the diverse and ever-change varieties of NVM products. Thus, the architecture of some embodiments provides another advantage in its labor division by isolating these functions in the bridge and allowing the controller designer to focus on the high level data management functions. In other words, since the controller and the bridge have different design constraints and priorities, under the architecture each may be updated according to different schedules and manners without a complete redesign of the whole.
With the reduced latency provided by the design, the bridge may be paired with less expensive media. For example, the bridge may be paired with MLC NAND rather SLC (Single-Level Cell) NAND while still meeting performance metrics demanded by customers. In addition, in some embodiments the above described controller-bridge design can be adapted for use in a hybrid drive comprising flash memory and hard disk components. In those embodiments the controller, in addition to managing data accesses to the NVM through the bridge, would also manage data accesses to one or more hard drives. Additional features of this design will be further illustrated below with various drawings and descriptions of the embodiments of the invention.
II.A. Controller-Bridge Implementation
In one embodiment, the non-volatile storage system 120 includes a controller 130 and a NVM storage module 150. The controller 130 in one embodiment communicates with a bridge device 152 within the NVM storage module 150 via a high level interface such as PCIe (through bus logic/interface 140). PCIe is used in one embodiment as it defines a rich packet based routing and Quality of Service (QoS) infrastructure and provides a high speed interface. The controller may include a processor 136 to control data functions, and the core may be coupled with static memory 132 and dynamic memory 134. The controller 130 may also include a data path 138 for processing/transferring data related to data access commands from the host system 110. In one embodiment, the controller 130 is implemented on a SoC (System on Chip), though those skilled in the art will recognize that other hardware/firmware implementations are possible.
In one embodiment, the use of PCIe means that the address range assigned to a device function is used for packet routing both on the fabric and within the device. In one embodiment, the PCIe transaction layer delivers packets to an internal register interface that is read by firmware. Advanced devices often direct incoming packets to internal RAM or hardware acceleration modules.
The bridge device 152 in one embodiment comprises bus logic/interface 154 for communicating with the bus logic/interface 140 (on the controller 130) over the high level interface bus. On the other end of the bridge, the bridge device 152 includes a low level interface 158 such as ONFI for communicating with the NVM storage 160 (e.g., NAND), which may include a number of storage devices such as flash dies 162, 164, 166, and 168. Although ONFI is depicted in this embodiment, other suitable flash memory interfaces may be used. In another embodiment, the bridge may use a different interface such as Toggle or a proprietary interface to communicate with the NVM storage 160, or send direct commands to the storage.
II.B. Division of Labor
The advantages of dividing the NVM management functions were outlined above in Section II. In particular, the architecture reduces latency and addresses the various design constraints while allowing the controller and bridge designers to optimize their respective portions of the architecture. In one embodiment, the controller is responsible for block level management, parity stripe layout, garbage collection, wear leveling, handling read disturb and error recovery. The bridge device, in one embodiment, manages the raw NVM flash interface. It may also provide one or more of: command queuing, error correction, XOR parity accumulator, data protection, and enhances block endurance. The interface between the bridge and the controller in one embodiment is a lightweight PCIe-based data and management interface. The controller uses the interface control command to configure the bridge and data commands to access the NVM media.
It is also noted that the controller uses physical page addressing instead of a logical one that is common in existing controller-bridge designs. The bridge can identify the relationship between pages, blocks, planes, and dies. This gives the controller the greatest flexibility for creating RAID stripe layout, performing data moves, and handling bad blocks. These details are abstracted from the bridge. When using direct addressing, the controller simply provides a set of direct page addresses in the command header to the bridge. In one embodiment, the pages are not necessarily sequential or even in the same block. In most cases, the controller will access pages spread across multiple planes and multiple dies in order to maximize concurrent hardware access.
II.C. Hybrid Application
Some embodiments of the controller-bridge architecture can be adapted for other uses. For example,
The hybrid application illustrates an additional advantage of the controller architecture. A hybrid drive typically includes an SSD that has its own internal controller that has a mapping table to address the NVM within the SSD. While the HDD portion of the hybrid is typically addressed directly, the hybrid controller uses a special mapping table to determine whether data is in the SSD or the HDD. The use of this special mapping table along with the internal SSD mapping table introduces duplicate overhead in cases where data is accessed in the SSD portion of the hybrid, since there are two mapping tables and there is significant cost associated with maintaining each table.
In contrast, because the controller 130 in the present architecture manages the NVM at both the block and page levels and the magnetic media, it can provide uniformed address management across the flash and magnetic media in a single location. Hence there is no need to have the two tables noted above. This has the advantages of reducing duplicative table lookups and all the associated costs/complexities related to maintaining separate mapping tables. Direct page addressing is used in the unified mapping scheme.
In addition, in a hybrid application, the NVM could still provide effective performance enhancement even when it has a large amount of bad blocks (e.g., 50%). In one hybrid embodiment, the controller also has efficient address gap handling capability (on gaps caused by the bad blocks). In an alternative hybrid embodiment, the unified addressing scheme does not necessarily require a bridge to work with the controller. The controller can potentially use a raw NVM interface (e.g., ONFI) to access the NVM.
III.A. Command and Admin Queues—Bridge
In one embodiment, the controller sends data access commands to a command queue 262 in the bridge device. This is performed by the controller sending data command messages to the bridge (by writing to the command queue BAR (base address register)). In one embodiment, the command queue has room for sixteen messages, though the number of messages can vary in other embodiments. The command queue can be implemented in a number of ways. One option is full hardware automation where the controller simply writes to a fixed offset. Alternately it can be implemented in memory using a ring buffer or an array based linked list. In one embodiment, the implementation must allow for efficient insertion and notification with minimal bus traffic. In one embodiment, the controller knows the current queue depth based on the number of status responses the bridge has sent back (e.g., a message to the controller's completion queue indicating completion of a command). Note that the data commands are much smaller than the actual data. A given record slot in the queue is considered available once the bridge sends back a completion status or an error report.
In the embodiment shown in
III.B. Status Queues—Controller
On the controller side 210 are a set of data ports 214 at data addresses 212 and a number of status queues. In one embodiment, the status queues include an error queue 218, an information queue 222, and a command completion queue 226. These queues are responsible for receiving messages from the bridge regarding command processing, as well as current status of the bridge and the NVM. Additional details relating to the operation on these queues will be further described below in Sections V and VI.
III.C. Communications Between the Controller and the Bridge
Communications between the controller and the bridge are effected in one embodiment through a PCIe protocol stack 230 which includes a number of layers on both sides, including a transactional layer (232, 242), a data link layer (234, 240), and physical layer (236, 238). While PCIe is used in this disclosure to illustrate the operation of the controller and the bridge, other similar standards can be used as well.
The PCIe transaction layer assigns transmit credits based on how much room is left in its Virtual Channel (VC) buffer space. According to the PCIe specification, devices must implement VC0, though some devices implement additional VC to ensure high priority messages have dedicated resources. Packets are directed to the appropriated VC based on their Traffic Class (TC). The TC is also used to determine priority when packets are flowing over the PCIe fabric. Higher TC packets are generally given priority by the root complex, switches and end-devices.
In one embodiment, the controller is designed to operate using only VC0. In one embodiment, though the bridge may implement additional VC, it must be configurable so that it can operate in single VC mode. The messages communicated between the controller and the bridge will be better understood in view of the following brief description of the data processing flow. To service a read command from the host, the controller may first send a command message to the bridge's command queue. Once the bridge processes the command message, it will read the requested data from the NVM and send the read data back to a corresponding data port on the controller side. This action triggers the data path on the controller, which leads to the data being sent back to the host. Conversely, to service a write command from the host, the controller may first send a command message to the bridge's command queue. Once the bridge processes the command message, it will read from a corresponding data port on the controller side. This action triggers the data path on the controller, which leads to the write data being sent from a buffer in the controller to the bridge for writing to the NVM.
The controller in one embodiment communicates with the bridge using three message types of increasing priority: data to be written to the NVM for write commands (0), messages for the bridge's command queue (1), and messages for the bridge's admin queue (2). Those skilled in the art will recognize that different priorities may be assigned to these messages, and the messages could be combined into fewer types or divided into more types depending on the implementation. In one embodiment, under normal conditions, the controller sends a steady stream of data packets to the bridge.
In one embodiment, the bridge interacts with the controller using its own set of prioritized message types (listed here in increasing priority): data read from the NVM for read commands (0), messages for the controller's completion/info queues (1), and messages for the controller's error queue (2). Those skilled in the art will recognize that different priorities may be assigned to these messages, and the messages could be combined into fewer types or divided into more types depending on the implementation. As will be further described below, to facilitate fast processing of data access commands, a read or write by the bridge to a data port in the controller automatically triggers the data path in the controller. In one embodiment, it is not uncommon for the bridge to process several commands in parallel. In one embodiment, the bridge uses the completion queue 226 to notify the controller when commands have completed successfully. In additional, non-critical messages are sent to the info queue 222 while detailed error reports are sent to the error queue 218. In other embodiments, these queues may be combined into fewer queues (with different message types being distinguished by special flags or implied address values) or separated into more queues (e.g., different error queues for different types of error or different info queues for different types of information returned from the bridge).
In other embodiments where a different interface than PCIe is used, the PCIe protocol stack may be replaced with the appropriate stacks/layers of that interface. Those skilled in the art will recognized that other equivalent standardized interfaces (e.g., eMMC) may be adapted to replace PCIe. In other embodiments, a custom/proprietary interface may be used to handle communications between the controller and the bridge.
As shown in block 308, for a read command, the bridge obtains data from the NVM and writes to a corresponding data port 214 and for a write command, the bridge reads data from a corresponding data port 214 and writes to the NVM. In other embodiments, other less efficient variations are possible. For example, the controller may read and write the transactions, and the bridge may simply notify that attention is needed via an interrupt, etc.
In one embodiment, each command in the bridge command queue 262 has a tag. When the bridge is ready to start working on a command that involves a data transfer, it accesses the data port 214 that matched the command tag. In one embodiment, the data path in the controller has sixteen ports defined by two values in the bridge CSR: base address and port size. These two values are sufficient to derive the location of all sixteen ports. In other embodiments, a different number of ports and/or a different address derivation scheme may be used.
For example, when the bridge accesses a particular data port address in the controller (e.g., No. 0 of 15) defined by the associated PCIe address range, the controller will understand that this is for the command associated with that tag. Thus, there is no need for the bridge to separately send a command tag, which reduces overhead as each additional communication between the bridge and the controller adds to the overall latency. To accomplish this, in one embodiment the controller automatically decodes the address (split the upper bits), and loads the registers to trigger/prime the host data path for processing (initiating the automation). However, those skilled in the art will recognize implementations other than the above described implied tag implementation could be used. For example, the bridge could send an explicit command tag message to the controller to indicate the command the bridge is currently working on and which data port it intends to use. The priming of the data path would then be dependent on that explicit command tag message. In other embodiments, the command tags as described above need not be used. Generally, any command configuration data that enables the bridge and/or the controller to keep track of the data port and command correlation can be used.
Returning to
In another embodiment, instead of the implied command tag/data path trigger mechanism describe above, the controller-bridge could communicate in a controller-push model in which the controller sends data along with the commands to the bridge. The bridge would thus need a large volatile memory buffer capacity to hold the user data from the controller for the various commands in the bridge's command queue. This implementation could reduce latency but potentially increase the cost of bridge implementation as a large memory buffer will need to be added to the bridge. This also leads to increased power consumption by the bridge.
In one embodiment, the bridge supports a number of queues. The bridge in one embodiment has at least one command queue 262 and one control/admin queue 258, as shown in
In one embodiment, the command queue supports sophisticated queuing and out-of-order execution, while the admin queue is ordered. The various queues on both the controller and bridge sides can have a mixture of commands outstanding, and can be asynchronous. The mixture of commands is particularly notable in the bridge command queue as compared to the ONFI specifications. ONFI provides some basic queuing capability through its “read multiple” and “write multiple” commands. However, there can be no mixing of different types of commands. Moreover, commands are batch processed, which means that the commands must clear the queue completely before more commands can be accepted.
In contrast, the advanced queuing capability of the bridge can (1) accept mixed command types, (2) support out of order execution, and (3) allow the controller to send additional commands without having the queue(s) be cleared first. The bridge can also accept special commands from the controller to specify that a certain command be executed with high priority. The bridge manages several channels so it has the flexibility to re-order the commands it receives.
V.A. Command Ordering
The command queue may be implemented in one embodiment as a single queue handling commands with various types of priority indicated by queuing flags (e.g., “priority,” “ordered,” “unordered,” and “background”), or as several separate queues based on the queuing flags. Data commands may be unordered by default, and subject to ordering by the bridge in order to take advantage of hardware optimizations and media utilization. In one embodiment, “priority” and “ordered” flags are used by the controller to indicate deviation from that default.
If the commands A-D are write commands, the bridge may maximize concurrency by executing commands A, C, and D in parallel (A and B can't be executed in parallel). If the bridge has sufficient buffer space, it could also pull down the data from the controller for command B and work on the portion going to die 2. On the other hand, if the commands A-D are read commands, the bridge may maximize concurrency by executing commands A, C, and D in parallel. Though it can read the data on die 2 for command B, the bridge may be required to send the data to the controller in the order specified by the command header.
V.B. Background Priority
A unique feature in the queuing model is the implementation of a background priority in one embodiment. The background priority lets the bridge decide when to execute the command. In one embodiment, commands with the “background” flag are unordered and given the lowest priority. They may also be exempt from the command promotion timer requirement, which is a time value dictating a deadline by which a certain command should be executed. In one embodiment, although the order of command execution is left up to the bridge, a command cannot sit in the queue indefinitely. When the bridge is choosing between unordered commands on the pending list, it will give preference to commands that have expired promotion timers. The timeout value is set by the controller in the bridge control CSR field in one embodiment.
The bridge may work on these “background” commands when it has available resources. For example, background priority can be used for data retention and health scan tasks. As another example, the controller may send down a block erase command with the background flag set. The bridge will perform the erase operation when the target die is not needed for other commands in the queue. In one embodiment, the “ordered,” “priority,” and “background” flags are mutually exclusive. This background command feature is currently absent in in-band I/O interfaces (e.g., UFS, eMMC, SAS or SATA), as they do not support background long running tasks.
As previously shown in
In one embodiment, the controller sets the base address and size for each queue in the CSR. In one embodiment, there is no need to communicate the number of queue entries as both sides have sufficient information to derive this value. In one embodiment, the bridge needs to generate an error if the controller attempts to configure a queue with less than one entry.
In one embodiment, the bridge is configured to be required to write to the next valid slot and keep track of how many entries it has written. The address for each slot is derived from the start address and the maximum message size. Every queue entry is required in one embodiment to start on a valid boundary. In one embodiment, the messages are padded to the full record size as the act of writing the last double word (DW) is often used to trigger hardware automation.
The bridge may write multiple entries to one queue in a single operation. One embodiment implements a doorbell-mode, in which the controller does not act on the new entries until the bridge writes to the associated doorbell register with the count of records it has added. In an automation-mode, the controller generates its own signaling when one or more entries are added to the queue. The queue mode (automation or doorbell) may be configured in the CSR.
The controller side queues are sized to match the maximum number of potential entries in one embodiment. In general terms, these values are proportional to the bridge's command queue depth. Given that each command has a tag, the controller may not reuse a tag until it has received status and cleaned up the queue space.
VI.A. Completion Queue
Given that not all commands result in bus transfers, the controller expects to be notified when data and admin commands have completed successfully. Trying to embed the status in regular data path messages creates alignment issues and other edge cases. Instead, in one embodiment the bridge simply writes a completion notice to the completion queue on the controller side. Although other implementations are possible, in one embodiment it is sufficient to send a 32-bit Double Word (DW) where each bit is set to one to represent a command that has completed successfully. For example, where there are 16 slots each in the admin and command queues, the upper 16 bits of the DW can map to admin tags while the lower 16 bits can map to command tags. Though the bridge could send status promptly, system efficiency improves when multiple completion tags are combined. Given that each of these bridge queues is 16 deep in this example embodiment, the completion queue is guaranteed to be 32 entries deep. However, in other embodiments different queue depths for the two queues are possible, and the completion queue mechanism is adjusted accordingly.
VI.B. Info Queue
In one embodiment, the bridge can send general system/status information messages to the controller by writing to the info queue 222 (i.e., writing to the info queue address range 220). Health reports of the NVM, for example, are sent to this queue, and other messages are possible. In one embodiment, this queue is 16 entries deep. In one embodiment, the controller may not issue active or concurrent health scans if there are outstanding read commands. Active and concurrent health scans of the NVM are performed by the bridge at the direction of the controller. Active scans of the NVM are performed without returning of data while concurrent scans are performed concurrently with normal data access operations.
VI.C. Error Queue
In one embodiment, the bridge sends error messages to the controller error queue 218 by writing to the error queue address range 216. In one embodiment, this queue is 16 entries deep.
In one embodiment, the bridge includes a XOR parity accumulator that is managed by the controller, which makes the data path simpler in the controller. The controller manages the XOR parity accumulator through XOR parity accumulator commands. In one embodiment, the controller issues common control operation instructions/commands (e.g., embedded within read and write commands) such as: (1) clear before accumulate (operation: read, write), (2) accumulate parity in a buffer (operation: read, write), (3) write a parity buffer to a page in NAND (operation: write). In one embodiment, the instructions/commands are communicated in three bits in the data access command fields. To keep command size down, dedicated commands may be used for less common XOR parity accumulator operations such as: load a parity buffer from a page in NAND, read a parity buffer over the bus, load a parity buffer over the bus, and reset all the parity buffers.
In one embodiment, the bridge supports several power management commands. Returning to
The bridge may on its own implement an energy-credit based throttled policy according to an available number of credits presently available for command execution. In the alternative, the controller may implement the energy-credit based policy and the bridge is configured to support power commands issued by the controller based on that policy. One example policy allows the controller and/or the bridge to set a maximum number of concurrent operations and/or a time delay between operations such that the average power consumed stays under a threshold. Various types of energy-credit based policy are further described in co-pending application Ser. No. 13/216,177, entitled “Non-volatile Storage Subsystem With Energy-Based Performance Throttling,” filed on Aug. 23, 2011, the disclosure of which is hereby incorporated by reference. In another embodiment, the bridge is configured to report power consumption for various operations and allow the controller to set explicit limits through an exposed interface.
In another embodiment, unlike common bridge implementations, the bridge exposes the NAND level information that is typically available over an ONFI interface but hidden in other bridge-controller architectures, as many controllers in those architectures do not manage at the physical page level. Below are some example values that the controller can access:
Device manufacturer (ONFI Byte 32-43)
Device model (ONFI Byte 44-63)
JEDEC mfg ID (ONFI Byte 64)
Date code (ONFI Byte 65-66)
Data bytes per page (ONFI Byte 80-83)
Spare bytes per page (ONFI Byte 84-85)
Number of pages per block (ONFI Byte 92-95)
Number of blocks per die (ONFI Byte 96-99)
Number of die per Bridge (new)
Number of bits per cell (ONFI Byte 102)
Bad block max per die (ONFI Byte 103-104)
Block P/E endurance MLC (ONFI Byte 105-106)
Block P/E endurance SLC (new)
Number of planes (ONFI Byte 113)
Max page program time (usec) (ONFI Byte 133-134)
Max block erase time (usec) (ONFI Byte 135-136)
Max page read time (usec) (ONFI Byte 137-138)
Max multi-plane page read time (usec) (ONFI Byte 152-153)
In some embodiments, because the controller is in a unique position to manage the NVM at both the block and page levels, the exposure of these values are helpful in assisting the controller in its management of the NVM.
In one embodiment, the bridge also supports at least some configuration details listed below. At least some of these relate to the features described above:
In one embodiment, the bridge can support an SLC mode. That is, the controller can specify that certain portions of the MLC NAND operate as SLC. While this is an available option in ONFI, many common bridge implementations do not support this capability.
As used in this application, “non-volatile memory” typically refers to solid-state memory such as NAND flash. However, 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. As such, while certain internal operations are referred to which typically are associated with solid-state drives, such as “wear leveling” and “garbage collection,” analogous operations for hard drives can also take advantage of some embodiments of this disclosure. Solid-state memory may comprise a wide variety of technologies, such as 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), NAND memory, NOR memory, EEPROM, Ferroelectric Memory (FeRAM), or other discrete NVM (non-volatile memory) chips. The solid-state storage devices (e.g., dies) may be physically divided into planes, blocks, pages, and sectors, as is known in the art. Other forms of storage (e.g., battery backed-up volatile DRAM or SRAM devices, magnetic disk drives, etc.) may additionally or alternatively be used.
While certain embodiments of the inventions have been described, these embodiments have been presented by way of example only, and are not intended to limit the scope of the inventions. 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 inventions. The accompanying claims and their equivalents are intended to cover such forms or modifications as would fall within the scope and spirit of the inventions. For example, the various components illustrated in
Horn, Robert L., Jean, Sebastien A.
Patent | Priority | Assignee | Title |
10002085, | Nov 20 2014 | Samsung Electronics Co., Ltd. | Peripheral component interconnect (PCI) device and system including the PCI |
10013174, | Sep 30 2015 | Western Digital Technologies, Inc.; Western Digital Technologies, INC | Mapping system selection for data storage device |
10025712, | Mar 28 2011 | Western Digital Technologies, INC | Power-safe data management system |
10031607, | Aug 05 2011 | SMITH INTERFACE TECHNOLOGIES, LLC | System, method, and computer program product for a multi-pressure selection touch screen |
10048875, | Sep 21 2010 | PALISADE TECHNOLOGIES, LLP | System and method for managing access requests to a memory storage subsystem |
10055171, | Mar 15 2013 | Western Digital Technologies, Inc. | Compression and formatting of data for data storage systems |
10055345, | Oct 17 2012 | Western Digital Technologies, INC | Methods, devices and systems for solid state drive control |
10061696, | Mar 19 2014 | SanDisk Technologies, Inc | Partial garbage collection for fast error handling and optimized garbage collection for the invisible band |
10067688, | Jan 23 2015 | Qualcomm Incorporated | Storage resource management in virtualized environments |
10079048, | Mar 24 2009 | Western Digital Technologies, INC | Adjusting access of non-volatile semiconductor memory based on access time |
10120480, | Aug 05 2011 | SMITH INTERFACE TECHNOLOGIES, LLC | Application-specific pressure-sensitive touch screen system, method, and computer program product |
10126981, | Dec 14 2015 | PALISADE TECHNOLOGIES, LLP | Tiered storage using storage class memory |
10140067, | Dec 19 2013 | Western Digital Technologies, INC | Data management for data storage device with multiple types of non-volatile memory media |
10146353, | Aug 05 2011 | SMITH INTERFACE TECHNOLOGIES, LLC | Touch screen system, method, and computer program product |
10156921, | Aug 05 2011 | SMITH INTERFACE TECHNOLOGIES, LLC | Tri-state gesture-equipped touch screen system, method, and computer program product |
10162448, | Aug 05 2011 | SMITH INTERFACE TECHNOLOGIES, LLC | System, method, and computer program product for a pressure-sensitive touch screen for messages |
10203794, | Aug 05 2011 | SMITH INTERFACE TECHNOLOGIES, LLC | Pressure-sensitive home interface system, method, and computer program product |
10209806, | Aug 05 2011 | SMITH INTERFACE TECHNOLOGIES, LLC | Tri-state gesture-equipped touch screen system, method, and computer program product |
10209807, | Aug 05 2011 | SMITH INTERFACE TECHNOLOGIES, LLC | Pressure sensitive touch screen system, method, and computer program product for hyperlinks |
10209808, | Aug 05 2011 | SMITH INTERFACE TECHNOLOGIES, LLC | Pressure-based interface system, method, and computer program product with virtual display layers |
10209809, | Aug 05 2011 | SMITH INTERFACE TECHNOLOGIES, LLC | Pressure-sensitive touch screen system, method, and computer program product for objects |
10216574, | Oct 24 2012 | SanDisk Technologies, Inc | Adaptive error correction codes for data storage systems |
10222891, | Aug 05 2011 | SMITH INTERFACE TECHNOLOGIES, LLC | Setting interface system, method, and computer program product for a multi-pressure selection touch screen |
10222892, | Aug 05 2011 | SMITH INTERFACE TECHNOLOGIES, LLC | System, method, and computer program product for a multi-pressure selection touch screen |
10222893, | Aug 05 2011 | SMITH INTERFACE TECHNOLOGIES, LLC | Pressure-based touch screen system, method, and computer program product with virtual display layers |
10222894, | Aug 05 2011 | SMITH INTERFACE TECHNOLOGIES, LLC | System, method, and computer program product for a multi-pressure selection touch screen |
10222895, | Aug 05 2011 | SMITH INTERFACE TECHNOLOGIES, LLC | Pressure-based touch screen system, method, and computer program product with virtual display layers |
10254983, | Mar 15 2013 | SanDisk Technologies, Inc | Atomic write command support in a solid state drive |
10275086, | Aug 05 2011 | SMITH INTERFACE TECHNOLOGIES, LLC | Gesture-equipped touch screen system, method, and computer program product |
10275087, | Aug 05 2011 | SMITH INTERFACE TECHNOLOGIES, LLC | Devices, methods, and graphical user interfaces for manipulating user interface objects with visual and/or haptic feedback |
10289168, | Jun 07 2013 | Western Digital Technologies, INC | Component placement within a solid state drive |
10338736, | Aug 05 2011 | SMITH INTERFACE TECHNOLOGIES, LLC | Devices, methods, and graphical user interfaces for manipulating user interface objects with visual and/or haptic feedback |
10345961, | Aug 05 2011 | SMITH INTERFACE TECHNOLOGIES, LLC | Devices and methods for navigating between user interfaces |
10365758, | Aug 05 2011 | SMITH INTERFACE TECHNOLOGIES, LLC | Devices, methods, and graphical user interfaces for manipulating user interface objects with visual and/or haptic feedback |
10379755, | May 22 2012 | Western Digital Technologies, INC | System data storage mechanism providing coherency and segmented data loading |
10386960, | Aug 05 2011 | SMITH INTERFACE TECHNOLOGIES, LLC | Devices, methods, and graphical user interfaces for manipulating user interface objects with visual and/or haptic feedback |
10387303, | Aug 16 2016 | SanDisk Technologies, Inc | Non-volatile storage system with compute engine to accelerate big data applications |
10389381, | Mar 15 2013 | Western Digital Technologies, Inc. | System and method for dynamic scaling of LDPC decoder in a solid state drive |
10417123, | May 16 2013 | Western Digital Technologies, INC | Systems and methods for improving garbage collection and wear leveling performance in data storage systems |
10444998, | Oct 24 2013 | Western Digital Technologies, INC | Data storage device providing data maintenance services |
10459644, | Oct 28 2016 | SanDisk Technologies, Inc | Non-volatile storage system with integrated compute engine and optimized use of local fast memory |
10481809, | Sep 24 2015 | SanDisk Technologies, Inc | Read disturb compensation using weighted programming patterns |
10496535, | Mar 28 2011 | Western Digital Technologies, INC | Power-safe data management system |
10521047, | Aug 05 2011 | SMITH INTERFACE TECHNOLOGIES, LLC | Gesture-equipped touch screen system, method, and computer program product |
10534474, | Aug 05 2011 | SMITH INTERFACE TECHNOLOGIES, LLC | Gesture-equipped touch screen system, method, and computer program product |
10540039, | Aug 05 2011 | SMITH INTERFACE TECHNOLOGIES, LLC | Devices and methods for navigating between user interface |
10545819, | Mar 12 2013 | Western Digital Technologies, INC | Soft-decision input generation for data storage systems |
10551966, | Aug 05 2011 | SMITH INTERFACE TECHNOLOGIES, LLC | Gesture-equipped touch screen system, method, and computer program product |
10565123, | Apr 10 2017 | SanDisk Technologies, Inc | Hybrid logical to physical address translation for non-volatile storage devices with integrated compute module |
10592039, | Aug 05 2011 | SMITH INTERFACE TECHNOLOGIES, LLC | Gesture-equipped touch screen system, method, and computer program product for displaying multiple active applications |
10606396, | Aug 05 2011 | SMITH INTERFACE TECHNOLOGIES, LLC | Gesture-equipped touch screen methods for duration-based functions |
10642413, | Aug 05 2011 | SMITH INTERFACE TECHNOLOGIES, LLC | Gesture-equipped touch screen system, method, and computer program product |
10649571, | Aug 05 2011 | SMITH INTERFACE TECHNOLOGIES, LLC | Devices, methods, and graphical user interfaces for manipulating user interface objects with visual and/or haptic feedback |
10649578, | Aug 05 2011 | SMITH INTERFACE TECHNOLOGIES, LLC | Gesture-equipped touch screen system, method, and computer program product |
10649579, | Aug 05 2011 | SMITH INTERFACE TECHNOLOGIES, LLC | Devices, methods, and graphical user interfaces for manipulating user interface objects with visual and/or haptic feedback |
10649580, | Aug 05 2011 | SMITH INTERFACE TECHNOLOGIES, LLC | Devices, methods, and graphical use interfaces for manipulating user interface objects with visual and/or haptic feedback |
10649581, | Aug 05 2011 | SMITH INTERFACE TECHNOLOGIES, LLC | Devices, methods, and graphical user interfaces for manipulating user interface objects with visual and/or haptic feedback |
10649674, | May 03 2018 | SanDisk Technologies, Inc | Extended controller pre-initialization using boot partitions in solid state systems |
10656752, | Aug 05 2011 | SMITH INTERFACE TECHNOLOGIES, LLC | Gesture-equipped touch screen system, method, and computer program product |
10656753, | Aug 05 2011 | SMITH INTERFACE TECHNOLOGIES, LLC | Gesture-equipped touch screen system, method, and computer program product |
10656754, | Aug 05 2011 | SMITH INTERFACE TECHNOLOGIES, LLC | Devices and methods for navigating between user interfaces |
10656755, | Aug 05 2011 | SMITH INTERFACE TECHNOLOGIES, LLC | Gesture-equipped touch screen system, method, and computer program product |
10656756, | Aug 05 2011 | SMITH INTERFACE TECHNOLOGIES, LLC | Gesture-equipped touch screen system, method, and computer program product |
10656757, | Aug 05 2011 | SMITH INTERFACE TECHNOLOGIES, LLC | Gesture-equipped touch screen system, method, and computer program product |
10656758, | Aug 05 2011 | SMITH INTERFACE TECHNOLOGIES, LLC | Gesture-equipped touch screen system, method, and computer program product |
10656759, | Aug 05 2011 | SMITH INTERFACE TECHNOLOGIES, LLC | Devices, methods, and graphical user interfaces for manipulating user interface objects with visual and/or haptic feedback |
10664097, | Aug 05 2011 | SMITH INTERFACE TECHNOLOGIES, LLC | Devices, methods, and graphical user interfaces for manipulating user interface objects with visual and/or haptic feedback |
10671212, | Aug 05 2011 | SMITH INTERFACE TECHNOLOGIES, LLC | Gesture-equipped touch screen system, method, and computer program product |
10671213, | Aug 05 2011 | SMITH INTERFACE TECHNOLOGIES, LLC | Devices, methods, and graphical user interfaces for manipulating user interface objects with visual and/or haptic feedback |
10725581, | Aug 05 2011 | SMITH INTERFACE TECHNOLOGIES, LLC | Devices, methods and graphical user interfaces for manipulating user interface objects with visual and/or haptic feedback |
10740231, | Nov 20 2018 | SanDisk Technologies, Inc | Data access in data storage device including storage class memory |
10747443, | Apr 10 2015 | Samsung Electronics Co., Ltd. | Electronic system with storage management mechanism and method of operation thereof |
10761777, | Dec 14 2015 | PALISADE TECHNOLOGIES, LLP | Tiered storage using storage class memory |
10769062, | Oct 01 2018 | SanDisk Technologies, Inc | Fine granularity translation layer for data storage devices |
10782819, | Aug 05 2011 | SMITH INTERFACE TECHNOLOGIES, LLC | Gesture-equipped touch screen system, method, and computer program product |
10788931, | Aug 05 2011 | SMITH INTERFACE TECHNOLOGIES, LLC | Devices, methods, and graphical user interfaces for manipulating user interface objects with visual and/or haptic feedback |
10838542, | Aug 05 2011 | SMITH INTERFACE TECHNOLOGIES, LLC | Gesture-equipped touch screen system, method, and computer program product |
10936114, | Aug 05 2011 | SMITH INTERFACE TECHNOLOGIES, LLC | Gesture-equipped touch screen system, method, and computer program product |
10942656, | May 22 2012 | Western Digital Technologies, INC | System data storage mechanism providing coherency and segmented data loading |
10951233, | Mar 15 2013 | Western Digital Technologies, INC | System and method for decoding iterations and dynamic scaling |
10956071, | Oct 01 2018 | SanDisk Technologies, Inc | Container key value store for data storage devices |
10996787, | Aug 05 2011 | SMITH INTERFACE TECHNOLOGIES, LLC | Gesture-equipped touch screen system, method, and computer program product |
11016905, | Nov 13 2019 | SanDisk Technologies, Inc | Storage class memory access |
11061503, | Aug 05 2011 | SMITH INTERFACE TECHNOLOGIES, LLC | Devices, methods, and graphical user interfaces for manipulating user interface objects with visual and/or haptic feedback |
11074125, | Mar 12 2013 | Western Digital Technologies, INC | Data storage system and method for decoding data based on extrapolated flipped-bit data |
11169918, | Nov 20 2018 | SanDisk Technologies, Inc | Data access in data storage device including storage class memory |
11249921, | May 06 2020 | SanDisk Technologies, Inc | Page modification encoding and caching |
11269524, | Oct 07 2019 | Samsung Electronics Co., Ltd. | Methods and systems for managing data transfer between a UFS host and a UFS target |
11543974, | May 22 2012 | Western Digital Technologies, INC | System data storage mechanism providing coherency and segmented data loading |
11586565, | Oct 03 2016 | Samsung Electronics Co., Ltd. | Non-volatile storage system and data storage access protocol for non-volatile storage devices |
11630578, | Apr 10 2015 | Samsung Electronics Co., Ltd. | Electronic system with storage management mechanism and method of operation thereof |
11740727, | Aug 05 2011 | SMITH INTERFACE TECHNOLOGIES, LLC | Devices, methods, and graphical user interfaces for manipulating user interface objects with visual and/or haptic feedback |
11853105, | Mar 05 2018 | Samsung Electronics Co., Ltd. | SSD architecture for FPGA based acceleration |
11892957, | Mar 05 2018 | Samsung Electronics Co., Ltd. | SSD architecture for FPGA based acceleration |
12093258, | Dec 14 2020 | SAMSUNG ELECTRONICS CO , LTD ; Samsung Electronics Co., Ltd. | Storage device adapter to accelerate database temporary table processing |
8898373, | Jun 29 2011 | Western Digital Technologies, INC | System and method for improving wear-leveling performance in solid-state memory |
8917471, | Oct 29 2013 | Western Digital Technologies, INC | Power management for data storage device |
8930647, | Apr 06 2011 | P4TENTS1, LLC | Multiple class memory systems |
8935465, | Jun 16 2014 | SanDisk Technologies, Inc | System and method of communicating command data in a master-slave environment |
8954653, | Jun 26 2012 | Western Digital Technologies, INC | Mechanisms for efficient management of system data in data storage systems |
8954655, | Jan 14 2013 | SanDisk Technologies, Inc | Systems and methods of configuring a mode of operation in a solid-state memory |
8954694, | Nov 15 2012 | Western Digital Technologies, INC | Methods, data storage devices and systems for fragmented firmware table rebuild in a solid state drive |
8959284, | Jun 28 2010 | Western Digital Technologies, INC | Disk drive steering write data to write cache based on workload |
8959416, | Dec 16 2011 | Western Digital Technologies, INC | Memory defect management using signature identification |
8966205, | May 10 2012 | Western Digital Technologies, INC | System data management using garbage collection and hybrid self mapping |
8966339, | Dec 18 2012 | Western Digital Technologies, INC | Decoder supporting multiple code rates and code lengths for data storage systems |
8966343, | Aug 21 2012 | Western Digital Technologies, INC | Solid-state drive retention monitor using reference blocks |
8972655, | Jan 21 2013 | Western Digital Technolgies, Inc.; Western Digital Technologies, INC | Initialization of a storage device |
8972826, | Oct 24 2012 | SanDisk Technologies, Inc | Adaptive error correction codes for data storage systems |
8977804, | Nov 21 2011 | Western Digital Technologies, INC | Varying data redundancy in storage systems |
8984247, | May 10 2012 | Western Digital Technologies, INC | Storing and reconstructing mapping table data in a data storage system |
8990668, | Mar 14 2013 | Western Digital Technologies, INC | Decoding data stored in solid-state memory |
9007841, | Oct 24 2013 | Western Digital Technologies, INC | Programming scheme for improved voltage distribution in solid-state memory |
9007854, | Dec 09 2013 | Western Digital Technologies, INC | Method and system for optimized soft decoding in a data storage device |
9013920, | Apr 03 2013 | Western Digital Technologies, INC | Systems and methods of write precompensation to extend life of a solid-state memory |
9021168, | Sep 06 2011 | Western Digital Technologies, Inc. | Systems and methods for an enhanced controller architecture in data storage systems |
9021192, | Sep 21 2010 | Western Digital Technologies, Inc. | System and method for enhancing processing of memory access requests |
9021339, | Nov 29 2012 | Western Digital Technologies, INC | Data reliability schemes for data storage systems |
9026716, | May 12 2010 | Western Digital Technologies, Inc.; Western Digital Technologies, INC | System and method for managing garbage collection in solid-state memory |
9032271, | Dec 07 2012 | Western Digital Technologies, INC | System and method for lower page data recovery in a solid state drive |
9036283, | Jan 22 2014 | Western Digital Technologies, INC | Data storage device with selective write to a first storage media or a second storage media |
9042197, | Jul 23 2013 | Western Digital Technologies, INC | Power fail protection and recovery using low power states in a data storage device/system |
9053008, | Mar 26 2012 | Western Digital Technologies, Inc.; Western Digital Technologies, INC | Systems and methods for providing inline parameter service in data storage devices |
9058261, | Sep 06 2011 | Western Digital Technologies, Inc. | Systems and methods for detailed error reporting in data storage systems |
9058280, | Aug 13 2010 | Western Digital Technologies, Inc. | Hybrid drive migrating data from disk to non-volatile semiconductor memory based on accumulated access time |
9059736, | Dec 03 2012 | Western Digital Technologies, INC | Methods, solid state drive controllers and data storage devices having a runtime variable raid protection scheme |
9059742, | Mar 15 2013 | Western Digital Technologies, INC | System and method for dynamic scaling of LDPC decoder in a solid state drive |
9069475, | Oct 26 2010 | Western Digital Technologies, INC | Hybrid drive selectively spinning up disk when powered on |
9070379, | Aug 28 2013 | Western Digital Technologies, Inc. | Data migration for data storage device |
9081700, | May 16 2013 | Western Digital Technologies, INC | High performance read-modify-write system providing line-rate merging of dataframe segments in hardware |
9110835, | Mar 09 2011 | Western Digital Technologies, Inc. | System and method for improving a data redundancy scheme in a solid state subsystem with additional metadata |
9122625, | Dec 18 2012 | Western Digital Technologies, INC | Error correcting code encoder supporting multiple code rates and throughput speeds for data storage systems |
9123686, | Apr 12 2013 | Western Digital Technologies, INC | Thermal management for solid-state drive |
9141176, | Jul 29 2013 | Western Digital Technologies, Inc.; Western Digital Technologies, INC | Power management for data storage device |
9158546, | Apr 06 2011 | P4TENTS1, LLC | Computer program product for fetching from a first physical memory between an execution of a plurality of threads associated with a second physical memory |
9164679, | Apr 06 2011 | PATENTS1, LLC | System, method and computer program product for multi-thread operation involving first memory of a first memory class and second memory of a second memory class |
9164886, | Sep 21 2010 | PALISADE TECHNOLOGIES, LLP | System and method for multistage processing in a memory storage subsystem |
9170744, | Apr 06 2011 | P4TENTS1, LLC | Computer program product for controlling a flash/DRAM/embedded DRAM-equipped system |
9170932, | May 22 2012 | Western Digital Technologies, INC | System data storage mechanism providing coherency and segmented data loading |
9170938, | May 17 2013 | PALISADE TECHNOLOGIES, LLP | Method and system for atomically writing scattered information in a solid state storage device |
9176671, | Apr 06 2011 | P4TENTS1, LLC | Fetching data between thread execution in a flash/DRAM/embedded DRAM-equipped system |
9176859, | Jan 07 2009 | Western Digital Technologies, INC | Systems and methods for improving the performance of non-volatile memory operations |
9177638, | Nov 13 2012 | Western Digital Technologies, INC | Methods and devices for avoiding lower page corruption in data storage devices |
9182914, | Apr 06 2011 | P4TENTS1, LLC | System, method and computer program product for multi-thread operation involving first memory of a first memory class and second memory of a second memory class |
9182916, | Sep 17 2010 | Western Digital Technologies, INC | Non-volatile storage subsystem with energy-based performance throttling |
9189442, | Apr 06 2011 | P4TENTS1, LLC | Fetching data between thread execution in a flash/DRAM/embedded DRAM-equipped system |
9195293, | May 03 2013 | Western Digital Technologies, INC | User controlled data storage device power and performance settings |
9195395, | Apr 06 2011 | P4TENTS1, LLC | Flash/DRAM/embedded DRAM-equipped system and method |
9195530, | Sep 06 2011 | Western Digital Technologies, INC | Systems and methods for improved data management in data storage systems |
9208020, | Jun 26 2012 | Western Digital Technologies, Inc. | Efficient error handling mechanisms in data storage systems |
9208101, | Jun 26 2013 | Western Digital Technologies, Inc.; Western Digital Technologies, INC | Virtual NAND capacity extension in a hybrid drive |
9214963, | Dec 21 2012 | Western Digital Technologies, INC | Method and system for monitoring data channel to enable use of dynamically adjustable LDPC coding parameters in a data storage system |
9218279, | Mar 15 2013 | Western Digital Technologies, INC | Atomic write command support in a solid state drive |
9223507, | Apr 06 2011 | P4TENTS1, LLC | System, method and computer program product for fetching data between an execution of a plurality of threads |
9250994, | Feb 05 2014 | Western Digital Technologies, INC | Non-binary low-density parity check (LDPC) decoding using trellis maximization |
9263136, | Sep 04 2013 | Western Digital Technologies, INC | Data retention flags in solid-state drives |
9268487, | Mar 24 2014 | SanDisk Technologies, Inc | Method and apparatus for restricting writes to solid state memory when an end-of life condition is reached |
9268657, | Nov 21 2011 | Western Digital Technologies, Inc. | Varying data redundancy in storage systems |
9268701, | Nov 21 2011 | Western Digital Technologies, INC | Caching of data in data storage systems by managing the size of read and write cache based on a measurement of cache reliability |
9270296, | Nov 13 2013 | Western Digital Technologies, INC | Method and system for soft decoding through single read |
9274966, | Feb 20 2013 | Western Digital Technologies, Inc.; Western Digital Technologies, INC | Dynamically throttling host commands to disk drives |
9274978, | Jun 10 2013 | Western Digital Technologies, Inc.; Western Digital Technologies, INC | Migration of encrypted data for data storage systems |
9275741, | Sep 10 2014 | SanDisk Technologies, Inc | Temperature compensation management in solid-state memory |
9280200, | May 20 2013 | Western Digital Technologies, INC | Automatic peak current throttle of tiered storage elements |
9280472, | Mar 13 2013 | Western Digital Technologies, INC | Caching data in a high performance zone of a data storage system |
9286176, | Nov 08 2013 | Western Digital Technologies, INC | Selective skipping of blocks in an SSD |
9304560, | Jun 19 2013 | SanDisk Technologies, Inc | Backup power for reducing host current transients |
9304709, | Sep 06 2013 | Western Digital Technologies, INC | High performance system providing selective merging of dataframe segments in hardware |
9323467, | Oct 29 2013 | Western Digital Technologies, INC | Data storage device startup |
9330143, | Oct 24 2013 | Western Digital Technologies, INC | Data storage device supporting accelerated database operations |
9335950, | Mar 15 2013 | SanDisk Technologies, Inc | Multiple stream compression and formatting of data for data storage systems |
9337864, | Jan 29 2014 | Western Digital Technologies, INC | Non-binary LDPC decoder using binary subgroup processing |
9338927, | May 02 2013 | Western Digital Technologies, INC | Thermal interface material pad and method of forming the same |
9348520, | Mar 24 2014 | Western Digital Technologies, INC | Lifetime extension of non-volatile semiconductor memory for data storage device |
9348537, | Sep 10 2013 | Qualcomm Incorporated | Ascertaining command completion in flash memories |
9348741, | Dec 19 2011 | Western Digital Technologies, INC | Systems and methods for handling write data access requests in data storage devices |
9350391, | Mar 15 2013 | Western Digital Technologies, INC | System and method for dynamic scaling of LDPC decoder in a solid state drive |
9354955, | Mar 19 2014 | SanDisk Technologies, Inc | Partial garbage collection for fast error handling and optimized garbage collection for the invisible band |
9361044, | Mar 28 2011 | Western Digital Technologies, INC | Power-safe data management system |
9384088, | Feb 24 2014 | Western Digital Technologies, INC | Double writing map table entries in a data storage system to guard against silent corruption |
9405356, | Oct 21 2014 | Western Digital Technologies, INC | Temperature compensation in data storage device |
9405617, | Feb 11 2011 | SanDisk Technologies, Inc | System and method for data error recovery in a solid state subsystem |
9405675, | May 11 2010 | Western Digital Technologies, Inc. | System and method for managing execution of internal commands and host commands in a solid-state memory |
9417754, | Aug 05 2011 | SMITH INTERFACE TECHNOLOGIES, LLC | User interface system, method, and computer program product |
9418699, | Oct 09 2014 | Western Digital Technologies, Inc. | Management of sequentially written data |
9436630, | Jun 11 2013 | Western Digital Technologies, INC | Using dual phys to support multiple PCIe link widths |
9442668, | Aug 29 2013 | Western Digital Technologies, INC | Adaptive power management control with performance feedback |
9448738, | Mar 15 2013 | Western Digital Technologies, Inc. | Compression and formatting of data for data storage systems |
9448742, | Mar 27 2014 | Western Digital Technologies, INC | Communication between a host and a secondary storage device |
9454474, | Mar 05 2013 | Western Digital Technologies, INC | Methods, devices and systems for two stage power-on map rebuild with free space accounting in a solid state drive |
9472222, | May 16 2014 | Western Digital Technologies, INC | Vibration mitigation for a data storage device |
9477413, | Sep 21 2010 | PALISADE TECHNOLOGIES, LLP | System and method for managing access requests to a memory storage subsystem |
9489296, | Oct 17 2012 | Western Digital Technologies, INC | Methods, devices and systems for hardware-based garbage collection in solid state drives |
9495243, | Dec 18 2012 | Western Digital Technologies, Inc. | Error correcting code encoder supporting multiple code rates and throughput speeds for data storage systems |
9507523, | Oct 12 2012 | Western Digital Technologies, INC | Methods, devices and systems for variable size logical page management in a solid state drive |
9513831, | May 17 2013 | PALISADE TECHNOLOGIES, LLP | Method and system for atomically writing scattered information in a solid state storage device |
9529710, | Dec 06 2013 | Western Digital Technologies, INC | Interleaved channels in a solid-state drive |
9542287, | Sep 06 2011 | Western Digital Technologies, Inc. | Systems and methods for error injection in data storage systems |
9563366, | May 13 2014 | AIRBNB, INC | Using queues corresponding to attribute values associated with units of work and sub-units of the unit of work to select the units of work and their sub-units to process |
9564212, | May 06 2014 | SanDisk Technologies, Inc | Solid-state memory corruption mitigation |
9575669, | Dec 09 2014 | SanDisk Technologies, Inc | Programmable solid state drive controller and method for scheduling commands utilizing a data structure |
9575800, | May 13 2014 | International Business Machines Corporation | Using queues corresponding to attribute values and priorities associated with units of work and sub-units of the unit of work to select the units of work and their sub-units to process |
9583153, | Jun 28 2013 | SanDisk Technologies, Inc | Memory card placement within a solid state drive |
9594520, | Mar 15 2013 | SanDisk Technologies, Inc | Atomic write command support in a solid state drive |
9619317, | Dec 18 2012 | SanDisk Technologies, Inc | Decoder having early decoding termination detection |
9620220, | Sep 04 2013 | Western Digital Technologies, INC | Data retention flags in solid-state drives |
9620226, | Oct 30 2015 | SanDisk Technologies, Inc | Data retention charge loss and read disturb compensation in solid-state data storage systems |
9626118, | Jun 26 2012 | SanDisk Technologies, Inc | Efficient error handling mechanisms in data storage systems |
9641378, | Mar 12 2013 | Western Digital Technologies, INC | Adjustment of compression ratios for data storage |
9652379, | Sep 15 2010 | SanDisk Technologies, Inc | System and method for reducing contentions in solid-state memory access |
9665501, | Jun 18 2013 | Western Digital Technologies, INC | Self-encrypting data storage device supporting object-level encryption |
9668337, | Sep 08 2015 | SanDisk Technologies, Inc | Temperature management in data storage devices |
9672934, | Sep 10 2014 | SanDisk Technologies, Inc | Temperature compensation management in solid-state memory |
9690696, | May 14 2014 | Western Digital Technologies, INC | Lifetime extension of memory for data storage system |
9715465, | Oct 28 2014 | Samsung Electronics Co., Ltd. | Storage device and operating method of the same |
9727261, | Sep 24 2015 | SanDisk Technologies, Inc | Weighted programming patterns in solid-state data storage systems |
9740248, | Jun 07 2013 | Western Digital Technologies, INC | Component placement within a solid state drive |
9748974, | Jan 29 2014 | Western Digital Technologies, INC | Non-binary LDPC decoder using binary subgroup processing |
9753847, | Oct 27 2009 | Western Digital Technologies, INC | Non-volatile semiconductor memory segregating sequential, random, and system data to reduce garbage collection for page based mapping |
9760304, | Sep 06 2013 | Western Digital Technologies, INC | High performance system for selective merging of dataframe segments |
9785563, | Aug 13 2015 | Western Digital Technologies, Inc. | Read command processing for data storage system based on previous writes |
9817577, | Mar 05 2013 | Western Digital Technologies, INC | Methods, devices and systems for two stage power-on map rebuild with free space accounting in a solid state drive |
9823859, | Nov 06 2014 | Western Digital Technologies, INC | Mechanical shock mitigation for data storage |
9830257, | Jun 12 2013 | Western Digital Technologies, INC | Fast saving of data during power interruption in data storage systems |
9836232, | Sep 30 2015 | Western Digital Technologies, Inc. | Data storage device and method for using secondary non-volatile memory for temporary metadata storage |
9857995, | Mar 09 2015 | Western Digital Technologies, INC | Data storage device and method providing non-volatile memory buffer for real-time primary non-volatile memory protection |
9880594, | Apr 12 2013 | Western Digital Technologies, INC | Thermal management for solid-state drive |
9898406, | Nov 21 2011 | Western Digital Technologies, Inc. | Caching of data in data storage systems by managing the size of read and write cache based on a measurement of cache reliability |
9921879, | May 13 2014 | International Business Machines Corporation | Using queues corresponding to attribute values associated with units of work to select the units of work to process |
9948322, | May 16 2013 | Western Digital Technologies, INC | High performance read-modify-write system providing line-rate merging of dataframe segments in hardware |
9952939, | Dec 07 2012 | Western Digital Technologies, INC | System and method for lower page data recovery in a solid state drive |
9977612, | May 11 2012 | Western Digital Technologies, INC | System data management using garbage collection and logs |
9985652, | Mar 15 2013 | Western Digital Technologies, INC | System and method for dynamic scaling of LDPC decoder in a solid state drive |
Patent | Priority | Assignee | Title |
6148354, | Apr 05 1999 | Sandisk IL Ltd | Architecture for a universal serial bus-based PC flash disk |
6182248, | Apr 07 1998 | International Business Machines Corporation | Method and tool for computer bus fault isolation and recovery design verification |
6304984, | Sep 29 1998 | International Business Machines Corporation | Method and system for injecting errors to a device within a computer system |
6519718, | Feb 18 2000 | International Business Machines Corporation | Method and apparatus implementing error injection for PCI bridges |
6735661, | Jun 27 2000 | Invensas Corporation | Integrated circuit with flash memory including dedicated flash bus and flash bridge |
6785767, | Dec 26 2000 | SK HYNIX NAND PRODUCT SOLUTIONS CORP | Hybrid mass storage system and method with two different types of storage medium |
6988175, | Jun 30 2003 | Western Digital Israel Ltd | Flash memory management method that is resistant to data corruption by power loss |
7103684, | Dec 02 2003 | SUPER TALENT TECHNOLOGY, CORP | Single-chip USB controller reading power-on boot code from integrated flash memory for user storage |
7127549, | Feb 04 2004 | SanDisk Technologies, Inc | Disk acceleration using first and second storage devices |
7136973, | Feb 04 2004 | SanDisk Technologies, Inc | Dual media storage device |
7460394, | May 18 2006 | Polaris Innovations Limited | Phase change memory having temperature budget sensor |
7594135, | Dec 31 2003 | SanDisk Technologies, Inc | Flash memory system startup operation |
7623401, | Oct 06 2006 | Polaris Innovations Limited | Semiconductor device including multi-bit memory cells and a temperature budget sensor |
7631245, | Sep 26 2005 | INNOVATIVE MEMORY SYSTEMS, INC | NAND flash memory controller exporting a NAND interface |
7716411, | Jun 07 2006 | Microsoft Technology Licensing, LLC | Hybrid memory device with single interface |
7861038, | Jul 17 2007 | International Business Machines Corporation | Method and apparatus for managing data in a hybrid drive system |
7861122, | Jan 27 2006 | Apple Inc | Monitoring health of non-volatile memory |
7957173, | Oct 14 2008 | Mosaid Technologies Incorporated | Composite memory having a bridging device for connecting discrete memory devices to a system |
7962777, | Dec 31 2003 | SanDisk Technologies LLC | Flash memory system startup operation |
7970978, | May 27 2008 | HANGZHOU HUALAN MICROELECTRONICS CORPORATION | SSD with SATA and USB interfaces |
8065304, | Jun 11 2008 | International Business Machines Corporation | Using asymmetric memory |
8120969, | Dec 20 2006 | CAVIUM INTERNATIONAL; MARVELL ASIA PTE, LTD | Semi-volatile NAND flash memory |
8291295, | Sep 26 2005 | INNOVATIVE MEMORY SYSTEMS, INC | NAND flash memory controller exporting a NAND interface |
8315092, | Jan 27 2010 | SanDisk Technologies, Inc | Apparatus, system, and method for determining a read voltage threshold for solid-state storage media |
8341374, | Jul 08 2009 | Samsung Electronics Co., Ltd. | Solid state drive and related method of scheduling operations |
8443263, | Dec 30 2009 | SanDisk Technologies, Inc | Method and controller for performing a copy-back operation |
8447920, | Jun 29 2010 | SanDisk Technologies, Inc | System and method for managing data access in non-volatile memory |
20020053010, | |||
20030165076, | |||
20030172261, | |||
20050160217, | |||
20050223373, | |||
20050251617, | |||
20060248387, | |||
20070038901, | |||
20070180328, | |||
20070190328, | |||
20070220202, | |||
20070245092, | |||
20070288683, | |||
20070288692, | |||
20080040531, | |||
20080192928, | |||
20080215808, | |||
20080250270, | |||
20090013233, | |||
20090024793, | |||
20090037652, | |||
20090063730, | |||
20090150605, | |||
20090158124, | |||
20090172257, | |||
20090240873, | |||
20090282305, | |||
20090313411, | |||
20100023800, | |||
20100037012, | |||
20100088459, | |||
20100100675, | |||
20100122022, | |||
20100174851, | |||
20100180182, | |||
20100205517, | |||
20100217924, | |||
20100268874, | |||
20100281342, | |||
20100325352, | |||
20100327923, | |||
20110010491, | |||
20110035540, | |||
20110040924, | |||
20110041039, | |||
20110082985, | |||
20110107076, | |||
20110119442, | |||
20110138112, | |||
20110145489, | |||
20110238885, | |||
20110283049, | |||
20110283135, | |||
20110289267, | |||
20110320915, | |||
20120102263, | |||
20120131268, | |||
20120203951, | |||
20120221922, | |||
20120233380, | |||
20120260020, | |||
20120265926, | |||
20120324191, | |||
20130073785, | |||
20130132638, | |||
WO2011019596, |
Executed on | Assignor | Assignee | Conveyance | Frame | Reel | Doc |
Sep 06 2011 | Western Digital Technologies, Inc. | (assignment on the face of the patent) | / | |||
Sep 09 2011 | JEAN, SEBASTIEN A | Western Digital Technologies, INC | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 027024 | /0521 | |
Sep 30 2011 | HORN, ROBERT L | Western Digital Technologies, INC | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 027024 | /0521 | |
May 12 2016 | Western Digital Technologies, INC | JPMORGAN CHASE BANK, N A , AS COLLATERAL AGENT | SECURITY AGREEMENT | 038722 | /0229 | |
May 12 2016 | Western Digital Technologies, INC | U S BANK NATIONAL ASSOCIATION, AS COLLATERAL AGENT | SECURITY AGREEMENT | 038744 | /0281 | |
Feb 27 2018 | U S BANK NATIONAL ASSOCIATION, AS COLLATERAL AGENT | Western Digital Technologies, INC | RELEASE BY SECURED PARTY SEE DOCUMENT FOR DETAILS | 045501 | /0714 | |
Feb 03 2022 | JPMORGAN CHASE BANK, N A | Western Digital Technologies, INC | RELEASE OF SECURITY INTEREST AT REEL 038744 FRAME 0481 | 058982 | /0556 | |
Aug 18 2023 | Western Digital Technologies, INC | JPMORGAN CHASE BANK, N A | PATENT COLLATERAL AGREEMENT - A&R LOAN AGREEMENT | 064715 | /0001 | |
Aug 18 2023 | Western Digital Technologies, INC | JPMORGAN CHASE BANK, N A | PATENT COLLATERAL AGREEMENT - DDTL LOAN AGREEMENT | 067045 | /0156 |
Date | Maintenance Fee Events |
Sep 28 2017 | M1551: Payment of Maintenance Fee, 4th Year, Large Entity. |
Sep 22 2021 | M1552: Payment of Maintenance Fee, 8th Year, Large Entity. |
Date | Maintenance Schedule |
Apr 15 2017 | 4 years fee payment window open |
Oct 15 2017 | 6 months grace period start (w surcharge) |
Apr 15 2018 | patent expiry (for year 4) |
Apr 15 2020 | 2 years to revive unintentionally abandoned end. (for year 4) |
Apr 15 2021 | 8 years fee payment window open |
Oct 15 2021 | 6 months grace period start (w surcharge) |
Apr 15 2022 | patent expiry (for year 8) |
Apr 15 2024 | 2 years to revive unintentionally abandoned end. (for year 8) |
Apr 15 2025 | 12 years fee payment window open |
Oct 15 2025 | 6 months grace period start (w surcharge) |
Apr 15 2026 | patent expiry (for year 12) |
Apr 15 2028 | 2 years to revive unintentionally abandoned end. (for year 12) |