Local data compaction for integrated memory assembly
An integrated memory assembly comprises a memory die and a control die bonded to the memory die. The memory die includes a memory structure of non-volatile memory cells. The control die is configured to program user data to and read user data from the memory die in response to commands from a memory controller. To utilize space more efficiently on the memory die, the control die compacts fragmented data on the memory die.
1. A method, comprising:
a control die that is bonded to a memory die receiving a data compaction command, a source block address, a destination block address and a validity map from a memory controller via a communication pathway between the control die and the memory controller, the memory die comprises non-volatile memory cells;
the control die performing a sensing operation on the memory die to sense a first set of data from a source block corresponding to the source block address without being instructed by the memory controller of the address of the first set of data;
based on the validity map, the control die choosing valid fragments of the first set of data and storing the chosen valid fragments of the first set of data on the control die;
the control die performing a sensing operation on the memory die to sense a second set of data from the source block without being instructed by the memory controller of the address of the second set of data;
based on the validity map, the control die choosing valid fragments of the second set of data and storing the chosen valid fragments of the second set of data on the control die;
the control die combining one or more of the valid fragments of the first set of data and one or more of the valid fragments of the second set of data to form a compacted set of data; and
the control die programming the compacted set of data to a destination block corresponding to the destination block address.
2. The method of claim 1 , further comprising:
the control die decoding the valid fragments of the first set of data to reduce errors in the valid fragments of the first set of data without transferring the valid fragments of the first set of data to the memory controller.
3. The method of claim 1 , further comprising:
the control die determining a measure of error for the valid fragments of the first set of data, the control die combining one or more of the valid fragments of the first set of data and one or more of the valid fragments of the second set of data to form the compacted set of data and programming the compacted set of data without decoding and re-encoding the valid fragments of the first set of data if the measure of error is less than a first threshold; and
the control die decoding the valid fragments of the first set of data to reduce errors in the valid fragments of the first set of data and re-encoding the valid fragments of the first set of data prior to the combining if the measure of error is greater than the first threshold.
4. The method of claim 1 , further comprising:
the control die determining a measure of error for the valid fragments of the first set of data, the control die combining one or more of the valid fragments of the first set of data and one or more of the valid fragments of the second set of data to form the compacted set of data and programming the compacted set of data without decoding and re-encoding the valid fragments of the first set of data if the measure of error is less than a first threshold;
the control die decoding the valid fragments of the first set of data to reduce errors in the valid fragments of the first set of data and re-encoding the valid fragments of the first set of data prior to the combining if the measure of error is greater than the first threshold and less than a second threshold; and
the control die transferring the valid fragments of the first set of data to the memory controller for the memory controller to decode the valid fragments of the first set of data and receiving the re-encoded valid fragments of first set of data with a smaller number of errors from the memory controller prior to the combining if the measure of error is greater than the second threshold.
5. The method of claim 4 , wherein:
the measure of error is syndrome weight.
6. The method of claim 1 , further comprising:
the control circuit storing the compacted set of data on the control die prior to the programming of the compacted set of data to the destination block.
7. The method of claim 1 , wherein:
the first set of data, the second set of data and the compacted set of data are pages of data that comprise fragments.
8. The method of claim 1 , wherein:
the compacted set of data comprises all valid data with no gaps of invalid data.
9. The method of claim 1 , further comprising:
the control circuit die fetching the validity map from the memory die.
10. The method of claim 1 , further comprising:
the control circuit receiving from the memory controller an indication of a location in the non-volatile memory cells of the validity map; and
the control circuit die fetching the validity map from the location in the non-volatile memory cells.
11. A method, comprising:
a control die that is directly connected to a memory die receiving a data compaction command, the memory die comprises a memory structure of non-volatile memory cells;
the control die receiving an indication of a source section of the memory structure on the memory die;
the control die performing a sensing operation on the memory die to sense a first set of data from the source section of the memory structure on the memory die;
the control die choosing valid portions of the first set of data and storing the chosen valid portions of the first set of data on the control die;
the control die performing a sensing operation on the memory die to sense a second set of data from the source section of the memory structure on the memory die;
the control die choosing valid portions of the second set of data and storing the chosen valid portions of the second set of data on the control die;
the control die combining valid portions of the first set of data with valid portions of the second set of data to form a compacted set of data; and
the control die programming the compacted set of data to a destination block.
12. The method of claim 11 , further comprising:
the control die decoding at least a portion of the first set of data to reduce errors in the first set of data without transferring the first set of data to the memory controller.
13. The method of claim 11 , further comprising:
the control die determining a measure of error for the valid portions of the first set of data, the control die combining valid portions of the first set of data with valid portions of the second set of data to form the compacted set of data and programming the compacted set of data without decoding and re-encoding the valid portions of the first set of data if the measure of error is less than a first threshold; and
the control die decoding the valid portions of the first set of data to reduce errors in the valid portions of the first set of data and re-encoding the valid portions of the first set of data prior to the combining if the measure of error is greater than the first threshold.
14. The method of claim 13 , wherein:
the measure of error is syndrome weight.
15. The method of claim 11 , further comprising:
the control die determining a measure of error for the valid portions of the first set of data, the control die combining valid portions of the first set of data with valid portions of the second set of data to form the compacted set of data and programming the compacted set of data without decoding and re-encoding the valid portions of the first set of data if the measure of error is less than a first threshold;
the control die decoding the valid portions of the first set of data to reduce errors in the valid portions of the first set of data and re-encoding the valid portions of the first set of data prior to the combining if the measure of error is greater than the first threshold and less than a second threshold; and
the control die transferring the valid portions of the first set of data to the memory controller for the memory controller to decode the valid portions of the first set of data and receiving the re-encoded valid portions of the first set of data with a smaller number of errors from the memory controller prior to the combining if the measure of error is greater than the second threshold.
16. The method of claim 11 , wherein:
the first set of data, the second set of data and the compacted set of data are pages of data that comprise fragments;
the control die choosing valid portions of the first set of data and choosing valid portions of the second set of data comprises the control die choosing valid fragments from the first set of data and choosing valid fragments from the second set of data; and
the control die combining valid portions of the first set of data with valid portions of the second set of data comprises adding the chosen valid fragments from the first set of data to the chosen valid fragments from the second set of data to form a new page of data as the compacted set of data.
17. A method, comprising:
a memory controller sending a compaction command to a control die of an integrated memory assembly, the integrated memory assembly is separate from and in communication with the memory controller, the integrated memory assembly comprises a memory die that includes a three dimensional memory structure of non-volatile memory cells and the control die bonded to the memory die, the control die has a first interface for communicating with the memory controller and a second interface for communicating with the memory die, the second interface is wider than the first interface;
the memory controller sending an indication of a source section of the non-volatile memory cells to the control die;
the control die reading pages of data from the source section in response to the compaction command, the pages of data read have gaps in valid data;
the control die choosing valid data from the pages of data read;
the control die assembling the chosen valid data to form a new page of data that does not contain gaps in valid data; and
the control die programming the new page of data that does not contain gaps in valid data into a destination section of the non-volatile memory cells without transferring the new page to the memory controller.
18. The method of claim 17 , wherein the source section is a source block of the non-volatile memory cells, the method further comprising:
the memory controller identifying that the source block needs compaction based on validity map, the validity map indicates which fragments of the source block are valid; and
the control die using the validity map to choose the valid data from the pages of data read.
19. The method of claim 18 , further comprising:
the memory controller accessing the validity map from the three dimensional memory structure of non-volatile memory cells on the memory die via the control die.
20. The method of claim 17 , wherein:
the control die choosing valid data from the pages of data read based comprises the control die choosing valid fragments from the pages of data read; and
the control die assembling the chosen valid data to form the new page of data comprises adding the chosen valid fragments to the new page.