Flash sector seeding to reduce program times
First Claim
1. A computer program product comprising a computer readable storage medium having a computer readable program stored thereon, wherein the computer readable program, when executed on a computing device, causes the computing device to:
- initialize a non-volatile memory system comprising a plurality of non-volatile memory portions to be programmed with data values;
seed one of the plurality of non-volatile memory portions to form a seeded non-volatile memory portion such that writing a first set of data values to an unseeded non-volatile memory portion within the plurality of non-volatile memory portions results in a reduced programming time and writing a second set of data values to the seeded non-volatile memory portion results in a reduced programming time, wherein seeding one of the plurality of non-volatile memory portions comprises programming the one of the plurality of non-volatile memory portions with a binary seed value having at least one zero bit;
receive a data portion to be written to the non-volatile memory system;
identify one of the plurality of non-volatile memory portions to write the data portion to based on a number of ones to be converted to zeros for each data byte of the data portion; and
write the data portion to the identified one of the plurality of non-volatile memory portions, wherein writing the data portion comprises converting fewer than six ones to zeros for a given data byte of the data portion.
1 Assignment
0 Petitions
Accused Products
Abstract
A non-volatile flash memory comprises a plurality of non-volatile memories where a first non-volatile memory is pre-programmed (erased) with all ones, and at least a second non-volatile memory is pre-programmed with a seed value that takes advantage of the reduced programming time for less than six zeros. When writing (programming) a data byte, the memory system looks up the data byte in one or more seed tables to determine a portion of non-volatile memory to which the memory system may write the data byte with a reduced programming time. The memory system then records the location of the data byte in an address translation table so the data byte may be accessed.
81 Citations
17 Claims
-
1. A computer program product comprising a computer readable storage medium having a computer readable program stored thereon, wherein the computer readable program, when executed on a computing device, causes the computing device to:
-
initialize a non-volatile memory system comprising a plurality of non-volatile memory portions to be programmed with data values; seed one of the plurality of non-volatile memory portions to form a seeded non-volatile memory portion such that writing a first set of data values to an unseeded non-volatile memory portion within the plurality of non-volatile memory portions results in a reduced programming time and writing a second set of data values to the seeded non-volatile memory portion results in a reduced programming time, wherein seeding one of the plurality of non-volatile memory portions comprises programming the one of the plurality of non-volatile memory portions with a binary seed value having at least one zero bit; receive a data portion to be written to the non-volatile memory system; identify one of the plurality of non-volatile memory portions to write the data portion to based on a number of ones to be converted to zeros for each data byte of the data portion; and write the data portion to the identified one of the plurality of non-volatile memory portions, wherein writing the data portion comprises converting fewer than six ones to zeros for a given data byte of the data portion. - View Dependent Claims (2, 3, 4, 5, 6, 7)
-
-
8. A method, in a data processing system, for flash sector seeding, the method comprising:
-
initializing a non-volatile memory system comprising a plurality of non-volatile memory portions to be programmed with data values; seeding one of the plurality of non-volatile memory portions to form a seeded non-volatile memory portion such that writing a first set of data values to an unneeded non-volatile memory portion within the plurality of non-volatile memory portions results in a reduced programming time and writing a second set of data values to the seeded non-volatile memory portion results in a reduced programming time, wherein seeding one of the plurality of non-volatile memory portions comprises programming the one of the plurality of non-volatile memory portions with a binary seed value having at least one zero bit; receive a data portion to be written to the non-volatile memory system; identify one of the plurality of non-volatile memory portions to write the data portion to based on a number of ones to be converted to zeros for each data byte of the data portion; and write the data portion to the identified one of the plurality of non-volatile memory portions, wherein writing the data portion comprises converting fewer than six ones to zeros for a given data byte of the data portion. - View Dependent Claims (9, 10, 11, 12)
-
-
13. A memory system comprising:
-
a controller; a volatile memory; and a non-volatile memory, wherein the non-volatile memory is used to store data from the volatile memory; wherein the controller configured to; initialize a non-volatile memory system comprising a plurality of non-volatile memory portions to be programmed with data values; seed one of the plurality of non-volatile memory portions to form a seeded non-volatile memory portion such that writing a first set of data values to an unseeded non-volatile memory portion within the plurality of non-volatile memory portions results in a reduced programming time and writing a second set of data values to the seeded non-volatile memory portion results in a reduced programming time, wherein seeding one of the plurality of non-volatile memory portions comprises programming the one of the plurality of non-volatile memory portions with a binary seed value having at least one zero bit; receiving a data portion to be written to the non-volatile memory system; identifying one of the plurality of non-volatile memory portions to write the data portion to based on a number of ones to be converted to zeros for each data byte of the data portion; and writing the data portion to the identified one of the plurality of non-volatile memory portions, wherein writing the data portion comprises converting fewer than six ones to zeros for a given data byte of the data portion. - View Dependent Claims (14, 15, 16, 17)
-
Specification