IP Library Granted Patent US 9,898,362
Granted Patent B2
US 9,898,362 · App. 15/093,342 · Granted Feb 20, 2018

Multi-channel RAM with ECC for partial writes

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 9,898,362
App. No.
15/093,342
Granted
Feb 20, 2018
Kind
B2
Abstract

Systems, methods, circuits and computer-readable mediums for multi-channel RAM system with error-correcting code (ECC) protection for partial writes are provided. In one aspect, a method includes accessing a plurality of bursts of partial data units from a plurality of respective bus ports, forming a plurality of memory addresses for a plurality of memory channels by interleaving addresses from the plurality of bus ports, and performing read-modify-write (RMW) error-correcting code (ECC) processes to write partial data units from the plurality of bursts into memory portions corresponding to the formed memory addresses in the plurality of memory channels.

Claims (97)

1. A non-transitory computer-readable storage medium having instructions stored thereon which, when executed by one or more processors, cause the one or more processors to perform operations comprising:

accessing a plurality of bursts of partial data units from a plurality of respective bus ports;

forming a plurality of memory addresses for a plurality of memory channels by interleaving addresses from the plurality of bus ports, wherein the interleaving of the addresses comprises:

providing a first address from a first bus port of the plurality of bus ports to a first memory channel of the plurality of memory channels to form a first memory address,

providing a second address from a second bus port of the plurality of bus ports to the first memory channel to form a second memory address,

providing a third address from the first bus port to a second memory channel of the plurality of memory channels to form a third memory address, and

providing a fourth address from the second bus port to the second memory channel to form a fourth memory address; and

writing partial data units from the plurality of bursts into memory portions corresponding to the formed memory addresses in the plurality of memory channels.

2. The computer-readable storage medium of claim 1 , wherein the third address is sequential to the first address for the first bus port, and the fourth address is sequential to the second address for the second bus port, and

wherein the first and second memory addresses are sequential in the first memory channel, and the third and fourth memory addresses are sequential in the second memory channel.

3. The computer-readable storage medium of claim 1 , wherein writing partial data units comprises performing read-modify-write (RMW) error-correcting code (ECC) processes by:

reading a first data unit from the first memory channel;

in a first cycle:

performing a first RMW ECC process to write a first partial data unit of a first burst of the plurality of bursts together with a portion of the first data unit into a first memory portion corresponding to the first memory address of the first memory channel,

reading a second data unit from the first memory channel,

reading a third data unit from the second memory channel; and

in a second cycle sequential to the first cycle:

performing a second RMW ECC process to write a second partial data unit of a second burst of the plurality of bursts together with a portion of the second data unit into a second memory portion corresponding to the second memory address of the first memory channel, and

performing a third RMW ECC process to write a third partial data unit of the first burst together with a portion of the third data unit into a third memory portion corresponding to the third memory address of the second memory channel, the third partial data unit being sequential to the first partial data unit in the first burst.

4. The computer-readable storage medium of claim 3 , wherein the operations further comprise:

in the second cycle,

reading a fourth data unit from the second memory channel, and

reading a fifth data unit from a third memory channel of the plurality of memory channels; and

in a third cycle sequential to the second cycle,

performing a fourth RMW ECC process to write a fourth partial data unit of the second burst together with a portion of the fourth data unit into a fourth memory portion corresponding to the fourth memory address of the second memory channel, the fourth partial data unit being sequential to the second partial data unit in the second burst, the fourth memory address being provided by using a fourth address from the second bus port, the fourth address being sequential to the second address for the second bus port, the fourth memory address being sequential to the third memory address in the second memory channel, and

performing a fifth RMW ECC process to write a fifth partial data unit of the first burst together with a portion of the fifth data unit into a fifth memory portion corresponding to a fifth memory address of the third memory channel, the fifth partial data unit being sequential to the third partial data unit in the first burst, the fifth memory address being provided by using a fifth address from the first bus port, the fifth address being sequential to the third address for the first bus port.

5. The computer-readable storage medium of claim 3 , wherein the operations further comprise:

prior to the first cycle,

registering the read first data unit into a first read buffer coupled to the first memory channel,

registering the first partial data unit of the first burst into a first write buffer for the first memory channel, and

registering the second partial data unit of the second burst into a second write buffer for the first memory channel; and

in the first cycle,

registering the read second data unit into the first read buffer,

registering the third partial data unit of the first burst into a third write buffer for the second memory channel, and

registering a fourth partial data unit of the second burst into a fourth write buffer for the second memory channel.

6. The computer-readable storage medium of claim 1 , wherein writing partial data units comprises performing RMW ECC processes by:

passing a data unit from a memory channel of the plurality of memory channels through an ECC decoder for detecting and correcting bit error in the data unit;

combining a partial data unit of a burst of the plurality of bursts and a portion of the data unit into a new data unit;

passing the new data unit through an ECC encoder for encoding the new data unit; and

writing the encoded new data unit into a memory portion corresponding to a memory address of the memory channel.

7. The computer-readable storage medium of claim 1 , wherein the operations further comprise:

receiving concurrently a plurality of requests together with the plurality of bursts from the plurality of respective bus ports, two or more requests of the plurality of requests concurrently requesting to write respective two or more bursts to the first memory channel,

selecting a first burst of the plurality of bursts by arbitrating among the respective two or more bursts to determine that the first burst has the highest priority to access the first memory channel.

8. The computer-readable storage medium of claim 7 , wherein the operations further comprise:

after the first partial data unit is written into the first address of the first memory channel, arbitrating among the respective two or more bursts to determine that a second burst has the highest priority to access the first memory channel.

9. The computer-readable storage medium of claim 1 , wherein a partial data unit from the plurality of bursts is associated with a multi-byte word with at least 32 bits, and

wherein writing partial data units comprises performing RMW ECC processes, and the RMW ECC processes include a multi-byte ECC with at least 32 bits.

10. The computer-readable storage medium of claim 1 , wherein the plurality of memory channels is included in a synchronous random-access memory (RAM).

11. The computer-readable storage medium of claim 1 , wherein a number of the plurality of memory channels is twice as large as a number of the plurality of bus ports.

12. A device comprising:

a memory controller coupled to a plurality of bus ports and a plurality of memory channels and configured to:

access a plurality of bursts of partial data units from a plurality of respective bus ports;

form a plurality of memory addresses for a plurality of memory channels by interleaving addresses from the plurality of bus ports, wherein the interleaving of the addresses comprises:

providing a first address from a first bus port of the plurality of bus ports to a first memory channel of the plurality of memory channels to form a first memory address,

providing a second address from a second bus port of the plurality of bus ports to the first memory channel to form a second memory address,

providing a third address from the first bus port to a second memory channel of the plurality of memory channels to form a third memory address, and

providing a fourth address from the second bus port to the second memory channel to form a fourth memory address; and

write partial data units from the plurality of bursts into memory portions corresponding to the formed memory addresses in the plurality of memory channels.

13. The device of claim 12 , wherein the third address is sequential to the first address for the first bus port, and the fourth address is sequential to the second address for the second bus port, and

wherein the first and second memory addresses are sequential in the first memory channel, and the third and fourth memory addresses are sequential in the second memory channel.

14. The device of claim 12 , wherein the writing of partial data units comprises performing read-modify-write (RMW) error-correcting code (ECC) processes by:

reading a first data unit from the first memory channel;

in a first cycle:

performing a first RMW ECC process to write a first partial data unit of a first burst of the plurality of bursts together with a portion of the first data unit into a first memory portion corresponding to the first memory address of the first memory channel,

reading a second data unit from the first memory channel,

reading a third data unit from the second memory channel; and

in a second cycle sequential to the first cycle:

performing a second RMW ECC process to write a second partial data unit of a second burst of the plurality of bursts together with a portion of the second data unit into a second memory portion corresponding to the second memory address of the first memory channel, and

performing a third RMW ECC process to write a third partial data unit of the first burst together with a portion of the third data unit into a third memory portion corresponding to the third memory address of the second memory channel, the third partial data unit being sequential to the first partial data unit in the first burst.

15. The device of claim 14 , wherein the memory controller is configured to:

prior to the first cycle,

register the read first data unit into a first read buffer coupled to the first memory channel,

register the first partial data unit of the first burst into a first write buffer for the first memory channel, and

register the second partial data unit of the second burst into a second write buffer for the first memory channel; and

in the first cycle,

register the read second data unit into the first read buffer,

register the third partial data unit of the first burst into a third write buffer for the second memory channel, and

register a fourth partial data unit of the second burst into a fourth write buffer for the second memory channel.

16. The device of claim 12 , wherein the writing of partial data units comprises performing RMW ECC processes by:

passing a data unit from a memory channel of the plurality of memory channels through an ECC decoder for detecting and correcting bit error in the data unit;

combining a partial data unit of a burst of the plurality of bursts and a portion of the data unit into a new data unit;

passing the new data unit through an ECC encoder for encoding the new data unit; and

writing the encoded new data unit into a memory portion corresponding to a memory address of the memory channel.

17. The device of claim 12 , wherein the memory controller is configured to:

receive concurrently a plurality of requests together with the plurality of bursts from the plurality of respective bus ports, two or more requests of the plurality of requests concurrently requesting to write respective two or more bursts to the first memory channel,

select a first burst of the plurality of bursts by arbitrating among the respective two or more bursts to determine that the first burst has the highest priority to access the first memory channel.

18. The device of claim 12 , wherein a partial data unit from the plurality of bursts is associated with a multi-byte word with at least 32 bits, and

wherein the writing of partial data units comprises performing RMW ECC processes, and the RMW ECC processes include a multi-byte ECC with at least 32 bits.

19. The device of claim 12 , wherein a number of the plurality of memory channels is twice as large as a number of the plurality of bus ports.

20. A method comprising:

accessing a plurality of bursts of partial data units from a plurality of respective bus ports;

forming a plurality of memory addresses for a plurality of memory channels by interleaving addresses from the plurality of bus ports, wherein the interleaving of the addresses comprises:

providing a first address from a first bus port of the plurality of bus ports to a first memory channel of the plurality of memory channels to form a first memory address,

providing a second address from a second bus port of the plurality of bus ports to the first memory channel to form a second memory address,

providing a third address from the first bus port to a second memory channel of the plurality of memory channels to form a third memory address, and

providing a fourth address from the second bus port to the second memory channel to form a fourth memory address; and

writing partial data units from the plurality of bursts into memory portions corresponding to the formed memory addresses in the plurality of memory channels.

Assignments (16)
RELEASE OF SECURITY INTEREST Recorded Mar 14, 2022
From: WELLS FARGO BANK, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
To: MICROCHIP TECHNOLOGY INCORPORATED; SILICON STORAGE TECHNOLOGY, INC.; ATMEL CORPORATION; MICROSEMI CORPORATION; MICROSEMI STORAGE SOLUTIONS, INC.
Reel/Frame 060894/0437 →
RELEASE OF SECURITY INTEREST Recorded Mar 11, 2022
From: WELLS FARGO BANK, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
To: MICROCHIP TECHNOLOGY INCORPORATED; SILICON STORAGE TECHNOLOGY, INC.; ATMEL CORPORATION; MICROSEMI CORPORATION; MICROSEMI STORAGE SOLUTIONS, INC.
Reel/Frame 059363/0001 →
RELEASE OF SECURITY INTEREST Recorded Mar 10, 2022
From: WELLS FARGO BANK, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
To: MICROCHIP TECHNOLOGY INCORPORATED; SILICON STORAGE TECHNOLOGY, INC.; ATMEL CORPORATION; MICROSEMI CORPORATION; MICROSEMI STORAGE SOLUTIONS, INC.
Reel/Frame 059863/0400 →
RELEASE OF SECURITY INTEREST Recorded Mar 9, 2022
From: WELLS FARGO BANK, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
To: MICROCHIP TECHNOLOGY INCORPORATED; SILICON STORAGE TECHNOLOGY, INC.; ATMEL CORPORATION; MICROSEMI CORPORATION; MICROSEMI STORAGE SOLUTIONS, INC.
Reel/Frame 059358/0001 →
RELEASE OF SECURITY INTEREST Recorded Feb 28, 2022
From: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT
To: ATMEL CORPORATION
Reel/Frame 059262/0105 →
RELEASE OF SECURITY INTEREST Recorded Feb 25, 2022
From: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT
To: MICROCHIP TECHNOLOGY INCORPORATED; SILICON STORAGE TECHNOLOGY, INC.; ATMEL CORPORATION; MICROSEMI CORPORATION; MICROSEMI STORAGE SOLUTIONS, INC.
Reel/Frame 059333/0222 →
SECURITY INTEREST Recorded Jun 4, 2021
From: MICROCHIP TECHNOLOGY INCORPORATED; SILICON STORAGE TECHNOLOGY, INC.; ATMEL CORPORATION; MICROSEMI CORPORATION; MICROSEMI STORAGE SOLUTIONS, INC.
To: WELLS FARGO BANK, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 057935/0474 →
SECURITY INTEREST Recorded Dec 24, 2020
From: MICROCHIP TECHNOLOGY INCORPORATED; SILICON STORAGE TECHNOLOGY, INC.; ATMEL CORPORATION; MICROSEMI CORPORATION; MICROSEMI STORAGE SOLUTIONS, INC.
To: WELLS FARGO BANK, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 055671/0612 →
SECURITY INTEREST Recorded Jun 5, 2020
From: MICROCHIP TECHNOLOGY INC.; SILICON STORAGE TECHNOLOGY, INC.; ATMEL CORPORATION; MICROSEMI CORPORATION; MICROSEMI STORAGE SOLUTIONS, INC.
To: WELLS FARGO BANK, NATIONAL ASSOCIATION
Reel/Frame 053468/0705 →
RELEASE OF SECURITY INTEREST Recorded May 30, 2020
From: JPMORGAN CHASE BANK, N.A, AS ADMINISTRATIVE AGENT
To: MICROCHIP TECHNOLOGY INC.; SILICON STORAGE TECHNOLOGY, INC.; ATMEL CORPORATION; MICROSEMI CORPORATION; MICROSEMI STORAGE SOLUTIONS, INC.
Reel/Frame 053466/0011 →
SECURITY INTEREST Recorded Apr 24, 2020
From: MICROCHIP TECHNOLOGY INC.; SILICON STORAGE TECHNOLOGY, INC.; ATMEL CORPORATION; MICROSEMI CORPORATION; MICROSEMI STORAGE SOLUTIONS, INC.
To: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 053311/0305 →
SECURITY INTEREST Recorded Sep 18, 2018
From: MICROCHIP TECHNOLOGY INCORPORATED; SILICON STORAGE TECHNOLOGY, INC.; ATMEL CORPORATION; MICROSEMI CORPORATION; MICROSEMI STORAGE SOLUTIONS, INC.
To: WELLS FARGO BANK, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 047103/0206 →
SECURITY INTEREST Recorded Jun 25, 2018
From: MICROCHIP TECHNOLOGY INCORPORATED; SILICON STORAGE TECHNOLOGY, INC.; ATMEL CORPORATION; MICROSEMI CORPORATION; MICROSEMI STORAGE SOLUTIONS, INC.
To: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 046426/0001 →
SECURITY INTEREST Recorded Feb 10, 2017
From: ATMEL CORPORATION
To: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 041715/0747 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 7, 2016
From: ATMEL ROUSSET S.A.S.
To: ATMEL CORPORATION
Reel/Frame 039662/0345 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 8, 2016
From: LUNADIER, FRANCK
To: ATMEL ROUSSET S.A.S.
Reel/Frame 038230/0920 →