Flash memory organization
First Claim
Patent Images
1. A flash-memory system comprising:
- a plurality of blocks and a plurality of pages in each block, at least one page having 2N data memory locations and K spare memory locations;
wherein the at least one page is configured to have 2M user data sectors for storing user data, each data sector having 2N−
M+L memory locations therein,wherein error-correction code (ECC) data segments are related to and stored adjacent to the corresponding data sectors,wherein metadata is divided up and placed into the ECC data segments,wherein the spare memory locations include a remainder segment configured to be allocated to store additional ECC data or metadata,wherein M, N, L, and K are positive integers, N>
M, M≧
1, and 1≦
L<
2N−
M.
11 Assignments
0 Petitions
Accused Products
Abstract
A flash-memory system is organized into a plurality of blocks and a plurality of pages in each block, each page having 2N data locations and K spare locations. At least one page in the memory has 2M user data sectors and each sector has 2N-M+L locations therein. Because L is at least 1 but less than 2N-M, user data is stored in the spare memory locations. By storing user data in spare locations that were previously off-limits to user data, enterprise-sized sectors can be efficiently stored in flash memories with little wasted memory, thereby making flash-memory systems compatible with existing hard-drive storage systems in enterprise system applications.
-
Citations
23 Claims
-
1. A flash-memory system comprising:
-
a plurality of blocks and a plurality of pages in each block, at least one page having 2N data memory locations and K spare memory locations; wherein the at least one page is configured to have 2M user data sectors for storing user data, each data sector having 2N−
M+L memory locations therein,wherein error-correction code (ECC) data segments are related to and stored adjacent to the corresponding data sectors, wherein metadata is divided up and placed into the ECC data segments, wherein the spare memory locations include a remainder segment configured to be allocated to store additional ECC data or metadata, wherein M, N, L, and K are positive integers, N>
M, M≧
1, and 1≦
L<
2N−
M. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11)
-
-
12. A method of retaining user data in a memory system, the method comprising:
-
providing a flash-memory system organized into a plurality of blocks and a plurality of pages in each block, at least one of the pages having 2N data locations and K spare locations, the at least one page having 2M user data sectors therein, each sector having 2N-M+L locations therein, where M, N, L, and K are positive integers, N>
M, M≧
1, 1≦
L<
2N-M; andstoring user data in at least one of the 2M user data sectors; storing error-correction code (ECC) data segments adjacent to the corresponding data sectors; dividing metadata; placing the divided metadata into the ECC data segments; and allocating a remainder segment of the spare memory locations to store additional ECC data or metadata. - View Dependent Claims (13, 14, 15, 16, 17, 18, 19, 20, 21)
-
-
22. A method comprising:
-
providing a flash-memory system having a plurality of pages, at least one of the pages having 2N data locations and K spare locations; storing user data in at least one of 2M user data sectors in the at least one page, each of the sectors having 2N-M+L locations therein; calculating a error correction code (ECC) data segment for at least one of the user data sectors and storing the ECC data segment adjacent the corresponding user data sector; reading user data in a user data sector in at least one of the pages; reading the ECC data segment corresponding to the read user data sector; checking and, if required, correcting the read user data using the read ECC data segment; wherein M, N, L, and K are positive integers, N>
M, M≧
1, 1≦
L<
2N-M and wherein at least a portion of the at least one user data sector is stored in at least one of the spare locations in the at least one page;storing error-correction code (ECC) data segments adjacent to the corresponding data sectors; dividing metadata; placing the divided metadata into the ECC data segments; and allocating a remainder segment of the spare memory locations to store additional ECC data or metadata. - View Dependent Claims (23)
-
Specification