IP Library Granted Patent US 8,856,464
Granted Patent B2
US 8,856,464 · App. 12/369,728 · Granted Oct 7, 2014

Systems for two-dimensional main memory including memory modules with read-writeable non-volatile memory devices

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 8,856,464
App. No.
12/369,728
Granted
Oct 7, 2014
Kind
B2
Abstract

In one embodiment of the invention, a system is disclosed including a master memory controller and a plurality of memory modules coupled to the master memory controller. Each memory module includes a plurality of read-writeable non-volatile memory devices in a plurality of memory slices to form a two-dimensional array of memory. Each memory slice in each memory module includes a slave memory controller coupled to the master memory controller. When the master memory controller issues a memory module request, it is partitioned into a slice request for each memory slice.

Claims (101)

1. A system including

a master memory controller,

a plurality of memory modules arranged into N rows by M columns of memory modules coupled to the master memory controller to form a two-dimensional memory array of Z memory slices over the M columns of memory modules,

wherein each memory module includes

a plurality of read-writeable non-volatile memory devices in a plurality of memory slices to form a portion of the two-dimensional memory array of Z memory slices,

wherein each of the plurality of memory slices in each memory module includes

a slave memory controller coupled to and between one or more of the plurality of read-writeable non-volatile memory devices and the master memory controller;

and

wherein the master memory controller forms a compound memory request comprising a plurality of slice requests that is partitioned into a slice request for each respective memory slice of the Z memory slices over the M columns of memory modules.

2. The system of claim 1 wherein

the compound memory request is a read request that expects a response of data thereto, and

the plurality of memory slices to generate a plurality of memory slice responses that are packed together to form a compound memory response to the compound memory request.

3. The system of claim 1 , wherein

each memory slice can access the plurality of read-writeable non-volatile memory devices autonomously to selectively access one or more read-writeable non-volatile memory devices and selectively access different memory locations in each.

4. The system of claim 1 wherein

a memory slice responds with known null data if its memory access operation is incomplete or if the memory slice does not participate in the compound memory request.

5. The system of claim 1 , wherein

the memory controller to pack a plurality of memory requests for the read-writeable non-volatile memory devices to form the compound memory request and

each slave memory controller to remap the addresses for the two-dimensional array into linear memory accesses into the read-writeable non-volatile memory devices in its respective memory slice.

6. The system of claim 3 , wherein

the address to each read-writeable non-volatile memory device differs in the memory slice.

7. The system of claim 3 , wherein

the master memory controller synchronously forms the compound memory request to randomly access blocks, one block per slice, across memory slices in the two-dimensional array over a memory channel;

the master memory controller synchronously receives a compound memory response including packed partial block responses from each memory slice, and

the master memory controller includes a two-dimensional transpositional buffer to store the partial block responses from each memory slice, and

the master memory controller to read data from the two dimensional transpositional buffer to concatenate the partial block responses into a full response from the respective memory slices for a system processor to increase data bandwidth over the memory channel.

8. The system of claim 7 , wherein

the partial block responses from each memory slice are stored row-wise into the two-dimensional transpositional buffer; and

the full response is read out from the two dimensional transpositional buffer column-wise to a system processor.

9. The system of claim 3 , wherein

the master memory controller includes a two-dimensional transpositional buffer to store data;

the master memory controller writes a plurality of blocks of data from a system processor associated with one or more memory requests into the two-dimensional transpositional buffer;

the two dimensional transpositional buffer to read out a plurality of blocks one block per slice across memory slices into the two-dimensional memory array over the memory channel; and

the master memory controller schedules a compound memory request to begin writing blocks of data over the memory channel one block per slice into random memory block locations within the respective memory slices of the two-dimensional memory array.

10. The system of claim 9 , wherein

the plurality of blocks of data from the system processor are stored column-wise into the two-dimensional transpositional buffer; and

blocks of data are read out from the two dimensional transpositional buffer row-wise into the two-dimensional memory array.

11. The system of claim 3 , wherein

the master memory controller includes command queues associated each memory slice to concatenate a plurality of memory requests from software applications into one compound memory request for one or more memory slices into the two-dimensional memory array.

12. The system of claim 11 , wherein

at least one memory slice of the two-dimensional memory array is not accessed by the compound memory request.

13. The system of claim 12 , wherein

the at least one memory slice not accessed responds with known null data.

14. The system of claim 1 , wherein

the compound memory request activates a plurality of memory modules in the two dimensional memory array.

15. The system of claim 14 , wherein

the compound memory request activates differing memory modules in the two dimensional memory array to perform the plurality of slice requests in the compound memory request.

16. A system comprising:

a processor,

a master memory controller coupled to the processor, the master memory controller including a two-dimensional transpositional buffer, the two-dimensional transpositional buffer to access partial block data;

a plurality of memory modules coupled to the master memory controller, each memory module including a plurality of read-writeable non-volatile memory devices in a plurality of memory slices to form a two-dimensional memory array of a plurality of memory slices over two or more columns of memory modules, wherein each memory slice in each memory module includes

a slave memory controller coupled to and between the master memory controller and one or more of the plurality of read-writeable non-volatile memory devices in each memory module; and

wherein the master memory controller forms a compound memory request comprising a plurality of slice requests that is partitioned into a slice request for each respective memory slice of the plurality of memory slices, and

the two-dimensional transpositional buffer transposes data between a column-wise access with the processor and a row-wise access with the plurality of memory slices in the two-dimensional memory array.

17. The system of claim 16 , wherein

each memory slice can access the plurality of read-writeable non-volatile memory devices autonomously to selectively access one or more read-writeable non-volatile memory devices and selectively access different memory locations in each.

18. The system of claim 17 , wherein

a read request is issued by the processor to the master memory controller,

the master memory controller synchronously makes a compound memory request to randomly access blocks, one block per slice, across memory slices in the two-dimensional array over the memory channel;

the master memory controller synchronously receives a compound memory response including packed partial block data responses from each memory slice and stores them in the two dimensional transpositional buffer, and

the master memory controller to read data from the two dimensional transpositional buffer to concatenate the partial block data responses into a full response from the respective memory slices for the processor.

19. The system of claim 18 , wherein

the partial block responses from each memory slice are stored row-wise into the two-dimensional transpositional buffer; and

the full response is read out from the two dimensional transpositional buffer column-wise to the processor.

20. The system of claim 17 , wherein

a write request with full write data is issued by the processor to the master memory controller,

the master memory controller synchronously makes a compound memory request to randomly access blocks one block per slice across memory slices in the two-dimensional array over the memory channel; and

the master memory controller synchronously issues packed partial block data to each memory slice.

21. The system of claim 20 , wherein

the full write data from the processor is written column-wise into the two dimensional transpositional buffer; and

the packed partial block data for each memory slice is read out row-wise from the two-dimensional transpositional buffer.

22. The system of claim 16 , wherein

the compound memory request activates a plurality of memory modules in the two dimensional memory array.

23. The system of claim 22 , wherein

the compound memory request activates differing memory modules in the two dimensional memory array to perform the plurality of slice requests in the compound memory request.

24. A system comprising:

a plurality of memory modules arranged into a plurality of columns and a plurality of rows to form a two-dimensional memory array of a plurality of memory slices over the plurality of columns of memory modules, each memory module including a plurality of read-writeable non-volatile memory devices to form a portion of the plurality of memory slices, wherein each memory slice in each memory module further includes

a slave memory controller coupled to the plurality of read-writeable non-volatile memory devices of the memory module;

a master memory controller coupled to each slave memory controller of the plurality of memory modules, the master memory controller forms a compound memory request comprising a plurality of slice requests for each respective memory slice of the plurality of memory slices;

a processor coupled to the master memory controller, the processor to generate the plurality of slice requests; and

wherein the master memory controller includes a two-dimensional transpositional buffer coupled between the processor and the plurality of memory modules, the two-dimensional transpositional buffer to provide row by row data access to the two-dimensional memory array of the plurality of memory slices and to provide column by column data access to the processor.

25. The system of claim 24 , wherein the two-dimensional transpositional buffer provides data access to partial blocks of data.

26. The system of claim 24 , wherein

the master memory controller further includes

a memory request buffer coupled to the processor, the memory request buffer to buffer memory requests from the processor, and

a request aggregator coupled to the memory request buffer, the request aggregator to aggregate a plurality of memory requests in the memory request buffer to form the compound memory request of the plurality of slice requests for each respective memory slice of the plurality of memory slices.

27. The system of claim 24 , wherein

the master memory controller further includes

a plurality of command queues respectively associated with each memory slice, the plurality of command queues to concatenate a plurality of memory requests from one or more software applications into one compound memory request for one or more memory slices in the two-dimensional memory array.

28. The system of claim 24 , wherein

the two-dimensional transpositional buffer stores data;

the master memory controller writes a plurality of blocks of data from the processor associated with one or more memory requests into the two-dimensional transpositional buffer;

the two dimensional transpositional buffer reads out a plurality of blocks one block per slice across the plurality of memory slices into the two-dimensional memory array over a memory channel; and

the master memory controller schedules a compound memory request to begin writing blocks of data over the memory channel, one block per slice, into random memory block locations within the respective memory slices of the two-dimensional memory array.

29. The system of claim 28 , wherein

the plurality of blocks of data from the processor are stored column-wise into the two-dimensional transpositional buffer; and

the blocks of data are read out from the two dimensional transpositional buffer row-wise into the two-dimensional memory array.

30. The system of claim 24 , wherein

the compound memory request activates a plurality of memory modules in the two dimensional memory array.

31. The system of claim 30 , wherein

the compound memory request activates differing memory modules in the two dimensional memory array to perform the plurality of slice requests in the compound memory request.

Assignments (12)
SECURITY AGREEMENT (SUPPLEMENTAL) Recorded Nov 14, 2024
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 069411/0208 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 11, 2024
From: SANDISK TECHNOLOGIES, INC.
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 069168/0273 →
PATENT COLLATERAL AGREEMENT Recorded Aug 23, 2024
From: SANDISK TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS THE AGENT
Reel/Frame 068762/0494 →
CHANGE OF NAME Recorded Jun 27, 2024
From: SANDISK TECHNOLOGIES, INC.
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 067982/0032 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 29, 2024
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 067567/0682 →
PATENT COLLATERAL AGREEMENT - DDTL LOAN AGREEMENT Recorded Aug 21, 2023
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 067045/0156 →
PATENT COLLATERAL AGREEMENT - A&R LOAN AGREEMENT Recorded Aug 21, 2023
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 064715/0001 →
RELEASE OF SECURITY INTEREST AT REEL 053926 FRAME 0446 Recorded Feb 8, 2022
From: JPMORGAN CHASE BANK, N.A.
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 058966/0321 →
SECURITY INTEREST Recorded Sep 29, 2020
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS AGENT
Reel/Frame 053926/0446 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 9, 2020
From: VIRIDENT SYSTEMS, LLC
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 053180/0472 →
CHANGE OF NAME Recorded Jan 30, 2019
From: VIRIDENT SYSTEMS, INC
To: VIRIDENT SYSTEMS, LLC
Reel/Frame 048196/0580 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 14, 2009
From: KARAMCHETI, VIJAY; GANAPATHY, KUMAR
To: VIRIDENT SYSTEMS, INC.
Reel/Frame 022687/0413 →