Flash memory organization
AssigneeLSI Corporation
InventorsMichael Hicken, Timothy Swatosh, Martin Dell
Life of this patent
Estimating the term…
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.
Claims23
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.
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;
- and
- storing 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.
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.
Dependencies are inferred from the claim text.