IP Library › Granted Patent US 11,237,902
Granted Patent B2
US 11,237,902 · App. 16/354,231 · Granted Feb 1, 2022

Systems and methods for an ECC architecture with memory mapping

Inventors: Xiaoming Zhu (San Jose, CA); Jie Chen (Milpitas, CA); Bo Fu (Cupertino, CA); Zining Wu (Los Altos, CA)
Assignee: Innogrit Technologies Co., Ltd.
G06F11/1068G06F11/3034G06F12/0246
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 11,237,902
App. No.
16/354,231
Granted
Feb 1, 2022
Kind
B2
Abstract

Systems, apparatus and methods are provided for providing an error correction code (ECC) architecture with flexible memory mapping. An apparatus may include an error correction code (ECC) engine, a multi-channel interface for one or more non-volatile storage devices, a memory including a plurality of memory units, a storage containing a plurality of mapping entries to indicate allocation status of the plurality of memory units and a memory mapping manager. The plurality of memory units may be coupled to the ECC engine and the multi-channel interface. The memory mapping manager may be configured to control allocation of the plurality of memory units and set allocation status in the plurality of mapping entries.

Claims (81)

1. An apparatus, comprising:

a multi-channel interface for one or more non-volatile storage devices; and

an error correction code (ECC) processor comprising:

an ECC engine comprising at least one ECC encoder and at least one ECC decoder;

a memory coupled to the ECC engine and the multi-channel interface, the memory comprising a plurality of memory units;

a storage containing a plurality of mapping entries to have entry values indicating allocation status of the plurality of memory units among a plurality of channels of the multi-channel interface;

a memory mapping manager configured to control allocation of the plurality of memory units among the plurality of channels of the multi-channel interface and set allocation status in the plurality of mapping entries;

an encoding task control;

a decoding task control; and

a quality of service (QoS) monitor configured to determine memory mapping update, wherein the encoding task control is configured to control write task(s) and provide a first set of one or more memory units of the plurality of memory units to the at least one encoder and the multi-channel interface to accomplish the write task(s), and the decoding task control is configured to control read task(s) and provide a second set of one or more memory units of the plurality of memory units to the at least one decoder and the multi-channel interface to accomplish the read task(s), and

wherein the Qos monitor is configured to determine memory mapping update based on one or more criteria selected from a group including: a total number of pending read tasks, a total number of pending write tasks, next expected task from the one or more non-volatile storage devices, pending retry tasks, idle channel, 4K random read, traffic congestion, and sequential write.

2. The apparatus of claim 1 , wherein the memory mapping manager is further configured to:

receive a memory request for a read or write task for a channel;

check an overall memory usage and a memory usage for the channel;

determine that the memory request needs immediate execution and a memory unit of the plurality of memory units is available;

allocate the memory unit to that channel;

update a memory mapping entry corresponding to the memory unit; and

issue the memory unit to the encoding or decoding task control.

3. The apparatus of claim 1 , wherein the memory mapping manager is further configured to:

receive a memory release request from the encoding or decoding task control for an already allocated memory unit;

clear a memory mapping entry corresponding to the already allocated memory unit; and

update an overall memory availability.

4. The apparatus of claim 1 , wherein a memory mapping entry of the plurality of memory mapping entries contains a first field indicating a cross channel status, a second field indicating an operation mode and a third field indicating a channel.

5. The apparatus of claim 4 , wherein the cross channel status indicates whether a codeword in a corresponding memory unit is stored in one channel or multiple channels of the one or more non-volatile storage devices.

6. The apparatus of claim 5 , wherein the third field indicates a virtual channel that comprises two or more channels when the codeword in the corresponding memory unit is stored in multiple channels.

7. The apparatus of claim 1 , wherein the ECC processor further comprises an active status storage that stores active status for each of the plurality of memory units, wherein the memory mapping manager is further configured to allocate a memory unit of the plurality of memory units based on an active status of the memory unit.

8. The apparatus of claim 1 , wherein the ECC engine includes a first ECC decoder and a second ECC decoder, and the memory mapping manager is further configured to dynamically map a memory unit allocated to the first ECC decoder to the second ECC decoder by setting a corresponding memory mapping entry.

9. An apparatus, comprising:

a multi-channel interface for one or more non-volatile storage devices; and

an error correction code (ECC) processor comprising:

an ECC engine comprising at least one ECC encoder and at least one ECC decoder;

a memory coupled to the ECC engine and the multi-channel interface, the memory comprising a plurality of memory units;

a storage containing a plurality of mapping entries to have entry values indicating allocation status of the plurality of memory units among a plurality of channels of the multi-channel interface;

a memory mapping manager configured to control allocation of the plurality of memory units among the plurality of channels of the multi-channel interface and set allocation status in the plurality of mapping entries;

an encoding task control;

a decoding task control; and

a quality of service (QoS) monitor configured to determine memory mapping update, wherein the encoding task control is configured to control write task(s) and provide a first set of one or more memory units of the plurality of memory units to the at least one encoder and the multi-channel interface to accomplish the write task(s), and the decoding task control is configured to control read task(s) and provide a second set of one or more memory units of the plurality of memory units to the at least one decoder and the multi-channel interface to accomplish the read task(s), and

wherein the memory mapping manager is further configured to:

receive a memory request for a read or write task for a channel;

check an overall memory usage and a memory usage for the channel;

determine that the memory request needs immediate execution and a memory unit of the plurality of memory units is available;

allocate the memory unit to that channel;

update a memory mapping entry corresponding to the memory unit; and

issue the memory unit to the encoding or decoding task control.

10. The apparatus of claim 9 , wherein the Qos monitor is configured to determine memory mapping update based on one or more criteria selected from a group including: a total number of pending read tasks, a total number of pending write tasks, next expected task from the one or more non-volatile storage devices, pending retry tasks, idle channel, 4K random read, traffic congestion, and sequential write.

11. The apparatus of claim 9 , wherein the memory mapping manager is further configured to:

receive a memory release request from the encoding or decoding task control for an already allocated memory unit;

clear a memory mapping entry corresponding to the already allocated memory unit; and

update an overall memory availability.

12. The apparatus of claim 9 , wherein a memory mapping entry of the plurality of memory mapping entries contains a first field indicating a cross channel status, a second field indicating an operation mode and a third field indicating a channel.

13. The apparatus of claim 12 , wherein the cross channel status indicates whether a codeword in a corresponding memory unit is stored in one channel or multiple channels of the one or more non-volatile storage devices.

14. The apparatus of claim 13 , wherein the third field indicates a virtual channel that comprises two or more channels when the codeword in the corresponding memory unit is stored in multiple channels.

15. The apparatus of claim 9 , wherein the ECC processor further comprises an active status storage that stores active status for each of the plurality of memory units, wherein the memory mapping manager is further configured to allocate a memory unit of the plurality of memory units based on an active status of the memory unit.

16. The apparatus of claim 9 , wherein the ECC engine includes a first ECC decoder and a second ECC decoder, and the memory mapping manager is further configured to dynamically map a memory unit allocated to the first ECC decoder to the second ECC decoder by setting a corresponding memory mapping entry.

17. An apparatus, comprising:

a multi-channel interface for one or more non-volatile storage devices; and

an error correction code (ECC) processor comprising:

an ECC engine comprising at least one ECC encoder and at least one ECC decoder;

a memory coupled to the ECC engine and the multi-channel interface, the memory comprising a plurality of memory units;

a storage containing a plurality of mapping entries to have entry values indicating allocation status of the plurality of memory units among a plurality of channels of the multi-channel interface;

a memory mapping manager configured to control allocation of the plurality of memory units among the plurality of channels of the multi-channel interface and set allocation status in the plurality of mapping entries;

an encoding task control;

a decoding task control; and

a quality of service (QoS) monitor configured to determine memory mapping update, wherein the encoding task control is configured to control write task(s) and provide a first set of one or more memory units of the plurality of memory units to the at least one encoder and the multi-channel interface to accomplish the write task(s), and the decoding task control is configured to control read task(s) and provide a second set of one or more memory units of the plurality of memory units to the at least one decoder and the multi-channel interface to accomplish the read task(s), and

wherein the memory mapping manager is further configured to:

receive a memory release request from the encoding or decoding task control for an already allocated memory unit;

clear a memory mapping entry corresponding to the already allocated memory unit; and

update an overall memory availability.

18. The apparatus of claim 17 , wherein the Qos monitor is configured to determine memory mapping update based on one or more criteria selected from a group including: a total number of pending read tasks, a total number of pending write tasks, next expected task from the one or more non-volatile storage devices, pending retry tasks, idle channel, 4K random read, traffic congestion, and sequential write.

19. The apparatus of claim 17 , wherein the memory mapping manager is further configured to:

receive a memory request for a read or write task for a channel;

check an overall memory usage and a memory usage for the channel;

determine that the memory request needs immediate execution and a memory unit of the plurality of memory units is available;

allocate the memory unit to that channel;

update a memory mapping entry corresponding to the memory unit; and

issue the memory unit to the encoding or decoding task control.

20. The apparatus of claim 17 , wherein a memory mapping entry of the plurality of memory mapping entries contains a first field indicating a cross channel status, a second field indicating an operation mode and a third field indicating a channel.

21. The apparatus of claim 20 , wherein the cross channel status indicates whether a codeword in a corresponding memory unit is stored in one channel or multiple channels of the one or more non-volatile storage devices.

22. The apparatus of claim 21 , wherein the third field indicates a virtual channel that comprises two or more channels when the codeword in the corresponding memory unit is stored in multiple channels.

23. The apparatus of claim 17 , wherein the ECC processor further comprises an active status storage that stores active status for each of the plurality of memory units, wherein the memory mapping manager is further configured to allocate a memory unit of the plurality of memory units based on an active status of the memory unit.

24. The apparatus of claim 17 , wherein the ECC engine includes a first ECC decoder and a second ECC decoder, and the memory mapping manager is further configured to dynamically map a memory unit allocated to the first ECC decoder to the second ECC decoder by setting a corresponding memory mapping entry.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 7, 2020
From: NYQUIST SEMICONDUCTOR LIMITED
To: INNOGRIT TECHNOLOGIES CO., LTD.
Reel/Frame 052333/0496 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 15, 2019
From: ZHU, XIAOMING; CHEN, JIE; FU, BO; WU, ZINING
To: NYQUIST SEMICONDUCTOR LIMITED
Reel/Frame 048613/0913 →
Continuity (1)
Related Publication 20200293397A1 · Sep 17, 2020