Locked raid memory devices
Methods, memory devices, and systems for utilizing DDR5 DRAM dice without SEC parity bits, while still providing chipkill protection and RAS performance are described. The disclosed devices utilize a solution based upon locked RAID (LRAID) which omits the on-die SEC bits but retains RAS protections including chipkill protections. The system achieves this protection by replacing the Reed-Solomon parity bits with RAID parity bits, CRC bits, end-to-end SEC bits, and an end-to-end CRC. The SEC protection is enabled, in some examples, by a memory controller, such as by an on-ASIC memory controller making this an on-ASIC SEC rather than an on-die SEC.
1 . A memory system, comprising:
A memory device, the memory device having a plurality of dice, a first set of two or more of the plurality of dice storing user data without single error correction bits and a second set of one or more of the plurality of dice storing parity bits, each of the parity bits storing a value corresponding to a parity function applied to data at a same bit position on each of the dice in the first set of the plurality of dice, the second set of the one or more of the plurality of dice storing cyclic redundancy check (CRC) data;
a controller, the controller configured to perform operations comprising:
reading user data from the memory device;
performing a CRC check on the user data;
determining whether the CRC check passed or failed;
responsive to a determination that the CRC check failed, utilizing the parity bits to correct the user data and providing the corrected user data to a host; and
responsive to a determination that the CRC has not failed, providing the user data to the host.
2 . The memory system of claim 1 , wherein the second set of the one or more of the plurality of dice includes a plurality of metadata bits.
3 . The memory system of claim 1 , wherein the second set of the one or more of the plurality of dice includes single error correction code (SEC) data, and wherein the controller is further configured to perform operations comprising:
prior to performing the CRC check, decoding the data using the SEC data, and wherein the CRC check and the utilizing the parity bits is done to the decoded data.
4 . The memory system of claim 3 , wherein the controller is further configured to perform operations comprising:
responsive to a determination that the CRC check failed, for each die in the first set, attempting to correct data of that die using the parity bits and performing a CRC check on the corrected data, and responsive to a determination that no single-die correction using the parity bits results in a passed CRC check, performing the following operations without first decoding the data using the SEC data:
performing a CRC check on the user data;
determining whether the CRC check passed or failed;
responsive to a determination that the CRC check failed, utilizing the parity bits to correct the user data and providing the corrected user data to the host; and
responsive to a determination that the CRC has not failed, providing the user data to the host.
5 . The memory system of claim 3 , wherein the SEC is a bounded SEC.
6 . The memory system of claim 3 , wherein the second set of the one or more of the plurality of dice includes end-to-end CRC data that is computed from the user data and metadata, and wherein the controller is further configured to perform operations comprising:
prior to sending the data to the host, verifying integrity of the data using the end-to-end CRC data.
7 . The memory system of claim 1 , wherein the operations of reading the data are performed responsive to receiving a request from the host over a cache-coherent memory-semantic interconnect interface.
8 . The memory system of claim 1 , wherein the first set of two or more of the plurality of dice storing user data comprises 8 dice, and the second set of one or more of the plurality of dice comprises two dice, a first dice storing the parity bits and a second dice storing CRC data, SEC data, end-to-end CRC data, and metadata.
9 . The memory system of claim 8 , wherein the CRC data is 32 bits, the SEC data is 10 bits, the end-to-end CRC data is 14 bits, and the metadata is 8 bits.
10 . The memory system of claim 1 , wherein the memory device is a DDR5 memory device.
11 . A method for storing data, the method comprising:
using a controller of a memory device to perform operations, the memory device having a plurality of dice, a first set of two or more of the plurality of dice storing user data without single error correction bits and a second set of one or more of the plurality of dice storing parity bits, each of the parity bits storing a value corresponding to a parity function applied to data at a same bit position on each of the dice in the first set of the plurality of dice, the second set of the one or more of the plurality of dice storing cyclic redundancy check (CRC) data, the operations comprising:
reading user data from the memory device;
performing a CRC check on the user data;
determining whether the CRC check passed or failed;
responsive to a determination that the CRC check failed, utilizing the parity bits to correct the user data and providing the corrected user data to a host; and
responsive to a determination that the CRC has not failed, providing the user data to the host.
12 . The method of claim 11 , wherein the second set of the one or more of the plurality of dice includes a plurality of metadata bits.
13 . The method of claim 11 , wherein the second set of the one or more of the plurality of dice includes single error correction code (SEC) data, and wherein the controller is further configured to perform operations comprising:
prior to performing the CRC check, decoding the data using the SEC data, and wherein the CRC check and the utilizing the parity bits is done to the decoded data.
14 . The method of claim 13 , wherein the controller is further configured to perform operations comprising:
responsive to a determination that the CRC check failed, for each die in the first set, attempting to correct data of that die using the parity bits and performing a CRC check on the corrected data, and responsive to a determination that no single-die correction using the parity bits results in a passed CRC check, performing the following operations without first decoding the data using the SEC data:
performing a CRC check on the user data;
determining whether the CRC check passed or failed;
responsive to a determination that the CRC check failed, utilizing the parity bits to correct the user data and providing the corrected user data to the host; and
responsive to a determination that the CRC has not failed, providing the user data to the host.
15 . The method of claim 13 , wherein the SEC is a bounded SEC.
16 . The method of claim 13 , wherein the second set of the one or more of the plurality of dice includes end-to-end CRC data, and wherein the controller is further configured to perform operations comprising:
prior to sending the data to the host, decoding the data using the end-to-end CRC data.
17 . The method of claim 11 , wherein the operations of reading the data are performed responsive to receiving a request from the host over a cache-coherent memory-semantic interconnect interface.
18 . The method of claim 11 , wherein the first set of two or more of the plurality of dice storing user data comprises 8 dice, and the second set of one or more of the plurality of dice comprises two dice, a first dice storing the parity bits and a second dice storing CRC data, SEC data, end-to-end CRC data, and metadata.
19 . The method of claim 18 , wherein the CRC data is 32 bits, the SEC data is 10 bits, the end-to-end CRC data is 14 bits, and the metadata is 8 bits.
20 . The method of claim 11 , wherein the memory device is a DDR5 memory device.