Flash sector seeding to reduce program times
First Claim
1. A computer program product comprising a computer recordable medium having a computer readable program recorded 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, wherein initializing the non-volatile memory system comprises erasing the plurality of non-volatile memory portions to all one (1) bits; and
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, wherein identifying one of the plurality of non-volatile memory portions to write the data byte to comprises looking up the data portion in one or more seed tables, wherein each of the one or more seed tables associates a set of data byte values with a corresponding non-volatile memory portion such that writing each of the set of data byte values to the corresponding non-volatile memory portion comprises converting fewer than six ones to zeros; and
write the data portion to the identified one of the plurality of non-volatile memory portions such that writing the data portion comprises converting fewer than six ones to zeros for a given data byte of the data portion.
2 Assignments
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.
54 Citations
10 Claims
-
1. A computer program product comprising a computer recordable medium having a computer readable program recorded 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, wherein initializing the non-volatile memory system comprises erasing the plurality of non-volatile memory portions to all one (1) bits; and 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, wherein identifying one of the plurality of non-volatile memory portions to write the data byte to comprises looking up the data portion in one or more seed tables, wherein each of the one or more seed tables associates a set of data byte values with a corresponding non-volatile memory portion such that writing each of the set of data byte values to the corresponding non-volatile memory portion comprises converting fewer than six ones to zeros; and write the data portion to the identified one of the plurality of non-volatile memory portions such that 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. 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, wherein initializing the non-volatile memory system comprises erasing the plurality of non-volatile memory portions to all one (1) bits; and 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 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; 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, wherein identifying one of the plurality of non-volatile memory portions to write the data byte to comprises looking up the data portion in one or more seed tables, wherein each of the one or more seed tables associates a set of data byte values with a corresponding non-volatile memory portion such that writing each of the set of data byte values to the corresponding non-volatile memory portion comprises converting fewer than six ones to zeros; and writing the data portion to the identified one of the plurality of non-volatile memory portions such that writing the data portion comprises converting fewer than six ones to zeros for a given data byte of the data portion. - View Dependent Claims (7, 8)
-
-
9. 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 is configured to initialize a non-volatile memory system comprising a plurality of non-volatile memory portions to be programmed with data values, wherein initializing the non-volatile memory system comprises erasing the plurality of non-volatile memory portions to all one (1) bits; and wherein the controller is configured to 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; wherein the controller is configured to receive a data portion to be written to the non-volatile memory system; wherein the controller is configured to 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, wherein identifying one of the plurality of non-volatile memory portions to write the data byte to comprises looking up the data portion in one or more seed tables, wherein each of the one or more seed tables associates a set of data byte values with a corresponding non-volatile memory portion such that writing each of the set of data byte values to the corresponding non-volatile memory portion comprises converting fewer than six ones to zeros; and wherein the controller is configured to write the data portion to the identified one of the plurality of non-volatile memory portions such that writing the data portion comprises converting fewer than six ones to zeros for a given data byte of the data portion. - View Dependent Claims (10)
-
Specification