IP Library Granted Patent US 8,799,607
Granted Patent B2
US 8,799,607 · App. 13/080,944 · Granted Aug 5, 2014

Memory controller and method for accessing a plurality of non-volatile memory arrays

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,799,607
App. No.
13/080,944
Granted
Aug 5, 2014
Kind
B2
Abstract

A memory controller ( 16 ) is used in a system ( 10 ) having a main memory ( 22 ) and a set of non-volatile memories ( 26, 32, 38, 44 ). Each non-volatile memory comprises a plurality of sectors (S 0 -S 28 ), pages, or other memory unit types. A command is received to write data to the set of non-volatile memories ( 26, 32, 38, 44 ). Within the data is identified a grouping of the data that is for writing to sectors in the set of non-volatile memories in which each non-volatile memory of the set of non-volatile memories is to be written and each sector to be written has a corresponding location to be written in all of the other non-volatile memories. Corresponding locations are locations that are in the same location in the sequential order. The grouping of data is written into the set of the non-volatile memories to result in the writing in the non-volatile memories occurring contemporaneously.

Claims (47)

1. In a system having a memory controller for accessing a main memory and a set of non-volatile memories, wherein each non-volatile memory of the set of non-volatile memories comprises a plurality of sectors in locations having a sequential order, wherein there is a predetermined number, K, of non-volatile memories in the set of non-volatile memories having a predetermined order beginning with a first non-volatile memory and ending with a last non-volatile memory, a method of operating the memory controller, comprising:

receiving a first command to write data from the main memory to the set of non-volatile memories, wherein the first command indicates a total number of sectors, N, into which the data is to be written;

when N is greater than K, and N is not an integer multiple of K,

identifying within the data a first grouping of the data that includes data corresponding to an integer multiple of K sectors,

identifying within the data a second grouping of remaining data that includes data not included in the first grouping of the data, and

generating a second command and at least one additional command from the first command, wherein the second command is to write the first grouping of data, and the at least one additional command is to write the second grouping of data;

executing the second command by writing the first grouping of data contemporaneously to sectors in each non-volatile memory of the set of non-volatile memories; and

executing the at least one additional command by writing the second grouping of data into the set of the non-volatile memories.

2. The method of claim 1 wherein the step of identifying within the data the first grouping of data comprises determining if there is a portion of data for writing into the first non-volatile memory.

3. The method of claim 1 , further comprising executing the at least one additional command a time exclusive from a time of executing the second command.

4. The method of claim 1 , wherein at least part of the remaining data is written to at least one sector having a location prior in sequence to the sectors into which the first grouping of data is written.

5. The method of claim 1 , wherein at least part of the remaining data is written to at least one sector having a location subsequent in sequence to the sectors into which the first grouping of data is written.

6. The method of claim 1 , wherein the step of identifying the first grouping of the data comprises:

determining if a beginning of the data to be written is for writing into the first non-volatile memory; and

if the beginning of the data to be written is for writing into the first non-volatile memory, determining if the number of different sectors to be written is greater than or equal to the number of non-volatile memories in the set of non-volatile memories;

wherein, if the number of different sectors to be written is an integer multiple of the number of non-volatile memories in the set of non-volatile memories, then the data is the first grouping of data.

7. The method of claim 6 , wherein the step of identifying the second grouping of the remaining data further comprises:

if the number of different sectors to be written exceeds an integer multiple of the number of non-volatile memories in the set of non-volatile memories by an amount less than the number of non-volatile memories, then identifying the portion of the data that exceeds the integer multiple as belonging to the second grouping of data.

8. The method of claim 7 , wherein the step of identifying the first grouping of data further comprises:

if the beginning of the data to be written is not for writing into the first non-volatile memory, determining that any of the data to be written is to be written into the first non-volatile memory; and

if any of the data to be written is to be written into the first non-volatile memory, determining that the data to be written into the first non-volatile memory is at a location in which all of the non-volatile memories are to be written; and

if the data to be written in the first non-volatile memory is not at a location in which all of the non-volatile memories are to be written, waiting, not exceeding a predetermined time, for a command to write additional data to the set of non-volatile memories before executing the at least one additional command.

9. A method for accessing a number, K, of non-volatile memories, each of the non-volatile memories having a plurality of sectors, the method comprising:

receiving a first command to access the plurality of non-volatile memories for a data transfer of a predetermined number, N, of sectors;

determining whether N is an integer multiple of K;

when N is not an integer multiple of K and N is greater than K, reorganizing the first command into a second and at least one additional command, wherein execution of the second command will result in the data transfer of an integer multiple of K first sectors of the predetermined number, N, of sectors to or from the plurality of non-volatile memories concurrently in parallel, and execution of the at least one additional command will result in the data transfer of remaining sectors not included in the first sectors; and

executing the second command and the at least one additional command.

10. The method of claim 9 , further comprising determining that the predetermined number of sectors is greater than or equal to the number, K, of non-volatile memories in the plurality of non-volatile memories.

11. The method of claim 9 , wherein receiving the first command to access the plurality of non-volatile memories for the data transfer further comprises the data transfer being a write operation of the plurality of non-volatile memories.

12. The method of claim 9 , wherein the at least one additional command includes a third command, and execution of the third command will result in the data transfer of data into one or more sectors in locations prior in sequence or subsequent in sequence to the first sectors.

13. The method of claim 12 , wherein the at least one additional command includes the third command and a fourth command, wherein execution of the third command will result in the data transfer of data into one or more sectors in locations prior in sequence to the first sectors, and execution of the fourth command will result in the data transfer of data into one or more sectors in locations subsequent in sequence to the first sectors.

14. A memory control system for use in a system having a main memory and a set of non-volatile memories, wherein each non-volatile memory of the set of non-volatile memories comprises a plurality of sectors in locations having a sequential order, wherein there is a predetermined number, K, of non-volatile memories in the set of non-volatile memories having a predetermined order beginning with a first non-volatile memory and ending with a last non-volatile memory, comprising:

memory means for receiving data from the main memory;

memory controller means for receiving a first command to write the data to the set of non-volatile memories, wherein the first command indicates a total number of sectors, N, into which the data is to be written;

identifying means for identifying, when N is greater than K, and N is not an integer multiple of K, a first grouping of the data that includes data corresponding to an integer multiple of K sectors, and identifying within the data a second grouping of remaining data that includes data not included in the first grouping of the data;

reorganizing means for reorganizing the first command into a second command and at least one additional command, wherein the second command is to write the first grouping of data, and the at least one additional command is to write the second grouping of data; and

writing means for executing the second command by writing the first grouping of data contemporaneously to sectors in each non-volatile memory of the set of non-volatile memories, and for executing the at least one additional command by writing the second grouping of data into the set of the non-volatile memories.

15. The memory control system of claim 14 , wherein the identifying means is further characterized as being for determining if there is a portion of data for writing into the first non-volatile memory.

16. The memory controller of claim 14 , wherein the writing means is further characterized as being for executing the at least one additional command at a time exclusive from at time of executing the second command.

17. The method of claim 1 , further comprising:

when N is less than K, executing the first command by writing the data sequentially to sectors in the set of non-volatile memories.

18. The method of claim 1 , further comprising:

when N is an integer multiple of K, executing the first command by writing the data contemporaneously to sectors in each non-volatile memory of the set of non-volatile memories.

19. The method of claim 18 , further comprising:

determining whether a first sector identified in the first command corresponds to a starting boundary for interleaving.

20. The method of claim 19 , wherein determining whether the first sector corresponds to the starting boundary for interleaving comprises:

determining whether the first sector corresponds to a sector in the first non-volatile memory.

Assignments (27)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 13, 2025
From: NXP USA, INC.
To: TAIWAN SEMICONDUCTOR MANUFACTURING COMPANY LIMITED
Reel/Frame 072889/0939 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 11759915 AND REPLACE IT WITH APPLICATION 11759935 PREVIOUSLY RECORDED ON REEL 040925 FRAME 0001. ASSIGNOR(S) HEREBY CONFIRMS THE RELEASE OF SECURITY INTEREST. Recorded Feb 17, 2020
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP, B.V. F/K/A FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 052917/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 11759915 AND REPLACE IT WITH APPLICATION 11759935 PREVIOUSLY RECORDED ON REEL 040928 FRAME 0001. ASSIGNOR(S) HEREBY CONFIRMS THE RELEASE OF SECURITY INTEREST. Recorded Jan 17, 2020
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP B.V.
Reel/Frame 052915/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 11759915 AND REPLACE IT WITH APPLICATION 11759935 PREVIOUSLY RECORDED ON REEL 037486 FRAME 0517. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS. Recorded Dec 10, 2019
From: CITIBANK, N.A.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 053547/0421 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 12298143 PREVIOUSLY RECORDED ON REEL 042985 FRAME 0001. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY AGREEMENT SUPPLEMENT. Recorded Oct 22, 2019
From: NXP B.V.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 051029/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 12298143 PREVIOUSLY RECORDED ON REEL 039361 FRAME 0212. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY AGREEMENT SUPPLEMENT. Recorded Oct 22, 2019
From: NXP B.V.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 051029/0387 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 12298143 PREVIOUSLY RECORDED ON REEL 038017 FRAME 0058. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY AGREEMENT SUPPLEMENT. Recorded Oct 22, 2019
From: NXP B.V.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 051030/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 12298143 PREVIOUSLY RECORDED ON REEL 042762 FRAME 0145. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY AGREEMENT SUPPLEMENT. Recorded Oct 22, 2019
From: NXP B.V.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 051145/0184 →
RELEASE OF SECURITY INTEREST Recorded Sep 10, 2019
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP B.V.
Reel/Frame 050745/0001 →
RELEASE OF SECURITY INTEREST Recorded Sep 10, 2019
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP B.V.
Reel/Frame 050744/0097 →
CORRECTIVE ASSIGNMENT TO CORRECT THE TO CORRECT THE APPLICATION NO. FROM 13,883,290 TO 13,833,290 PREVIOUSLY RECORDED ON REEL 041703 FRAME 0536. ASSIGNOR(S) HEREBY CONFIRMS THE THE ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS.. Recorded Feb 20, 2019
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: SHENZHEN XINGUODU TECHNOLOGY CO., LTD.
Reel/Frame 048734/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 12681366 PREVIOUSLY RECORDED ON REEL 038017 FRAME 0058. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY AGREEMENT SUPPLEMENT. Recorded May 9, 2017
From: NXP B.V.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 042985/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 12681366 PREVIOUSLY RECORDED ON REEL 039361 FRAME 0212. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY AGREEMENT SUPPLEMENT. Recorded May 9, 2017
From: NXP B.V.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 042762/0145 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE PATENTS 8108266 AND 8062324 AND REPLACE THEM WITH 6108266 AND 8060324 PREVIOUSLY RECORDED ON REEL 037518 FRAME 0292. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS. Recorded Feb 1, 2017
From: CITIBANK, N.A.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 041703/0536 →
CORRECTIVE ASSIGNMENT TO CORRECT THE NATURE OF CONVEYANCE PREVIOUSLY RECORDED AT REEL: 040652 FRAME: 0241. ASSIGNOR(S) HEREBY CONFIRMS THE MERGER AND CHANGE OF NAME. Recorded Jan 5, 2017
From: FREESCALE SEMICONDUCTOR, INC.
To: NXP USA, INC.
Reel/Frame 041260/0850 →
MERGER Recorded Nov 8, 2016
From: FREESCALE SEMICONDUCTOR, INC.
To: NXP USA, INC.
Reel/Frame 040652/0241 →
RELEASE OF SECURITY INTEREST Recorded Nov 7, 2016
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP B.V.
Reel/Frame 040928/0001 →
RELEASE OF SECURITY INTEREST Recorded Sep 21, 2016
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP, B.V., F/K/A FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 040925/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 12092129 PREVIOUSLY RECORDED ON REEL 038017 FRAME 0058. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY AGREEMENT SUPPLEMENT. Recorded Jul 14, 2016
From: NXP B.V.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 039361/0212 →
SUPPLEMENT TO THE SECURITY AGREEMENT Recorded Jun 16, 2016
From: FREESCALE SEMICONDUCTOR, INC.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 039138/0001 →
SECURITY AGREEMENT SUPPLEMENT Recorded Mar 7, 2016
From: NXP B.V.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 038017/0058 →
ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS Recorded Jan 13, 2016
From: CITIBANK, N.A.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 037518/0292 →
ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS Recorded Jan 12, 2016
From: CITIBANK, N.A.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 037486/0517 →
PATENT RELEASE Recorded Dec 21, 2015
From: CITIBANK, N.A., AS COLLATERAL AGENT
To: FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 037357/0334 →
PATENT RELEASE Recorded Dec 21, 2015
From: CITIBANK, N.A., AS COLLATERAL AGENT
To: FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 037357/0285 →
PATENT RELEASE Recorded Dec 21, 2015
From: CITIBANK, N.A., AS COLLATERAL AGENT
To: FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 037357/0387 →
SECURITY AGREEMENT Recorded Nov 6, 2013
From: FREESCALE SEMICONDUCTOR, INC.
To: CITIBANK, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 031591/0266 →