System and method for encoding data to reduce power and time required to write the encoded data to a flash memory
First Claim
1. A method for encoding binary bits for writing to a non-volatile memory device, said method comprising the steps of:
- selecting a plurality of packets of the bits, each of the packets comprising X binary bits;
determining the number of bits of said X binary bits in each of the packets which have a first value and the number of bits of said X binary bits in said each of the packets which have a second value, by accumulating data indicative of the number of bits in each of a number of subsets of said each of the packets which have the first value; and
for each of the packets, encoding said X binary bits to a first set of values when the number of bits of said first value exceeds the number of bits of said second value, and encoding said X binary bits to a second set of values when the number of bits of said second value exceeds the number of bits of said first value.
5 Assignments
0 Petitions
Accused Products
Abstract
A method and system in which X-bit packets of bits (where X is an integer) are encoded to generate X-bit packets of encoded bits for writing to erased cells of a flash memory array, where less power is consumed to write a bit having a first value to an erased cell than to write a bit having a second value to the cell. Preferably, a count signal is generated for each packet of raw bits indicating the number of bits of the packet having the first (or second) value, the count signal is processed to generate a control signal which determines an encoding for the packet, and the raw bits of the packet are encoded according to a scheme determined by the control signal. In some embodiments, each erased cell is indicative of the binary value "1", the count signal is compared to a reference value (indicative of X/2) to generate a control signal determining whether the packet should undergo polarity inversion, and the packet is inverted (or not inverted) depending on the value of the control signal. In alternative embodiments, a count signal is generated for each packet of bits to be written to erased cells of an array (where the count signal indicates the number of bits in the packet having a particular value), and each packet is encoded in a manner determined by the corresponding count signal to reduce the power needed to write the encoded bits to the erased cells. Preferably, flag bits indicative of the encoding of each packet are generated, and the flag bits (as well as the encoded packets) are stored in cells of the flash memory array.
111 Citations
52 Claims
-
1. A method for encoding binary bits for writing to a non-volatile memory device, said method comprising the steps of:
-
selecting a plurality of packets of the bits, each of the packets comprising X binary bits; determining the number of bits of said X binary bits in each of the packets which have a first value and the number of bits of said X binary bits in said each of the packets which have a second value, by accumulating data indicative of the number of bits in each of a number of subsets of said each of the packets which have the first value; and for each of the packets, encoding said X binary bits to a first set of values when the number of bits of said first value exceeds the number of bits of said second value, and encoding said X binary bits to a second set of values when the number of bits of said second value exceeds the number of bits of said first value.
-
-
2. A method of programming a non-volatile memory device, comprising the steps of:
-
providing a plurality of packets of bits, each of said packets comprising X number of binary bits; for each of the packets, determining the number of binary bits representative of a first value and the number of binary bits representative of a second value, by accumulating data indicative of the number of binary bits in each of a number of subsets of said each of the packets which are representative of the first value; and for each of the packets, selecting an encoding state from at least two possible encoding states, said encoding state selected to require less power for programming, said encoding state selected in reference to the determined number of binary bits in said each of the packets which are representative of the first value and the second value; and programming at least a portion of said non-volatile memory device in accordance with said selected encoding state for said each of the packets.
-
-
3. A method for encoding binary bits to be written to erased cells of an array of flash memory cells, said method including the steps of:
-
(a) processing X-bit packets of the bits to generate count signals, wherein a count signal is generated for each of the packets by accumulating data indicative of the number of bits which have a first value in each of a number of subsets of said each of the packets, each said count signal is indicative of how many bits of the corresponding one of the packets have the first value, and X is an integer; and (b) encoding the packets to generate X-bit encoded packets of encoded binary bits, by performing a first encoding operation on each of the packets whose count signal satisfies a first criterion and a second encoding operation on each of the packets whose count signal satisfies a second criterion but does not satisfy the first criterion, so that each of the encoded packets consists of P encoded bits having the first value and Q encoded bits having a second value, where P and Q are integers satisfying X=P+Q, and P is not less than Q. - View Dependent Claims (4, 5, 6, 7, 8)
-
-
9. A method for encoding binary bits to be written to erased cells of an array of flash memory cells, said method including the steps of:
-
(a) storing a number of X-bit packets of the bits in a buffer memory, where X is an integer; (b) reading each of the packets from the buffer memory and generating a packet count signal from data indicative of the number of bits which have a first one of a first value and a second value in each of at least two subsets of said each of the packets, said packet count signal being indicative of how many bits of said each of the packets have said first one of the first value and the second value; (c) comparing each said packet count signal to a reference value, to determine each of the packets whose packet count signal is greater than the reference value and to determine each of the packets whose packet count signal is not greater than the reference value; (d) performing a first encoding operation on each of the packets whose packet count signal is greater than the reference value to generate an X-bit encoded packet of encoded binary bits for said each of the packets; and (e) performing a second encoding operation on each of the packets whose packet count signal is not greater than the reference value to generate an X-bit encoded packet of encoded binary bits for said each of the packets, whereby steps (d) and (e) together accomplish generation of a set of encoded packets. - View Dependent Claims (10, 11, 12, 13, 14, 15, 16)
-
-
17. A method for encoding binary bits to be written to erased cells of an array of flash memory cells, wherein each of the flash memory cells is capable of storing a binary bit, said method including the steps of:
-
(a) generating count signals from packets of the bits, wherein the count signals include a count signal for each of the packets indicative of how many bits of each of the packets have a selected binary value, and wherein the count signal for each of the packets is generated from data indicative of the number of bits in each of at least two subsets of each of the packets which have said selected binary value; and (b) performing an encoding operation on each of the packets to generate an encoded packet of binary bits for each of the packets, wherein each said encoding operation is determined by the count signal for each of the packets. - View Dependent Claims (18)
-
-
19. A method for controlling a flash memory system, wherein the system includes an array of flash memory cells and circuitry which erases selected blocks of the cells and writes packets of binary bits to erased ones of the cells, wherein the system consumes less power to write a binary bit having a first value to an erased one of the cells than to write a binary bit having a second value to said erased one of the cells, said method including the steps of:
-
(a) determining how many of the bits in each of the packets of bits have a first one of said first value and said second value by generating data indicative of the number of bits in each of at least two subsets of said each of the packets which have said first one of the first value and the second value, and generating count data indicative of said determination; and (b) generating an encoded packet of binary bits from each of the packets, wherein each said encoded packet has a selected one of two polarities based on the count data indicative of the determination of how many of the bits in each of the packets have the first one of said first value and said second value. - View Dependent Claims (20, 21, 22, 23)
-
-
24. A memory system, including:
-
an array of flash memory cells, wherein the system consumes less power to write a binary bit having a first value to an erased one of said cells than to write a binary bit having a second value to said erased one of the cells; and encoding circuitry coupled to receive X-bit packets of binary bits and configured to generate X-bit packets of encoded binary bits from the X-bit packets of binary bits, such that each of the packets of encoded binary bits consists of P encoded binary bits having the first value and Q encoded binary bits having the second value, where X, P, and Q are integers satisfying X=P+Q, and P is not less than Q, wherein the encoding circuitry includes; count generation circuitry coupled to receive the packets and configured to generate count signals, wherein a count signal is generated for each of the packets by accumulating data indicative of the number of bits which have a first one of the first value and the second value in each of a number of subsets of each of the packets, and each said count signal is indicative of how many bits of the corresponding one of the packets have a first one of the first value and the second value; a processor coupled to receive the count signals and configured to generate a first control signal for each of the count signals which satisfies a first criterion and a second control signal for each of the count signals which satisfies a second criterion; and packet encoding circuitry coupled to receive each said first control signal and each said second control signal and configured to encode the packets in response to each said first control signal and each said second control signal, wherein the packet encoding circuitry performs a first encoding operation on each of the packets represented by said first control signal and a second encoding operation on each of the packets represented by said second control signal. - View Dependent Claims (25, 26, 27)
-
-
28. A memory system, including:
-
an array of flash memory cells, wherein the system consumes less power to write a bit having a first value to an erased one of said cells than to write a bit having a second value to said erased one of the cells; a buffer memory which stores a number of X-bit packets of binary bits, where X is an integer; a control engine which asserts a sequence of control signals in response to a command and a sequence of status signals, wherein the control engine is configured to generate a first one of the control signals in response to a first one of the status signals; a conversion circuit connected to the buffer memory which receives a sequence of subsets of each of the packets and generates a count signal for each of the subsets indicative of how many binary bits of said each of the subsets have a first one of said first value and said second value; and logic circuitry which operates in a first mode in response to a second one of the control signals in which it receives each said count signal for one of the packets and generates therefrom a packet count signal indicative of how many binary bits of said one of the packets have said first one of said first value and said second value, wherein the logic circuitry operates in a second mode in response to a third one of the control signals in which it compares the packet count signal to a reference value, generates said first one of the status signals as a result of the comparison, and asserts said first one of the status signals to the control engine, and wherein the logic circuitry operates in a third mode in response to the first one of the control signals in which it performs a first encoding operation on said one of the packets thereby generating an X-bit packet of encoded binary bits. - View Dependent Claims (29, 30, 31, 32, 33, 34, 35)
-
-
36. A memory system, including:
-
an array of flash memory cells, each of the cells being capable of storing a binary bit; count generation circuitry which receives packets of binary bits and generates count signals therefrom, wherein the count generation circuitry generates for each of said packets a count signal indicative of how many binary bits of said each of the packets have a selected value by accumulating data indicative of the number of bits which have the selected value in each of a number of subsets of said each of the packets; encoding circuitry which receives each of the packets of binary bits and performs an encoding operation on said each of the packets of binary bits to generate a packet of encoded binary bits, wherein the encoding operation is determined by the count signal for said each of the packets of binary bits; a control engine which asserts a sequence of control signals in response to a command; and interface circuitry, connected to the array and the encoding circuitry, which writes each said packet of encoded binary bits to erased flash memory cells of the array in response to at least one of the control signals from the control engine. - View Dependent Claims (37, 38)
-
-
39. A controller for a flash memory system, wherein the system includes an array of flash memory cells and circuitry configured to erase selected blocks of the cells and to write packets of bits to erased ones of the cells, wherein the system consumes less power to write a bit having a first value to an erased one of the cells than to write a bit having a second value to said erased one of the cells, said controller including:
-
a first circuit coupled to receive the packets of bits and configured to determine how many of the bits in each of said packets of bits have a first one of the first value and the second value by accumulating data indicative of the number of bits which have the first one of the first value and the second value in each of a number of subsets of said each of the packets, and to generate count data indicative of said determination; and a second circuit coupled to receive the packets of bits and configured to generate a packet of encoded bits from each of said packets of bits, wherein each said packet of encoded bits has a selected one of two polarities based on the count data indicative of the determination of how many of the bits in said each of the packets of bits have the first one of said first value and said second value. - View Dependent Claims (40, 41, 42, 43, 44)
-
-
45. A count generation circuit for use in a flash memory system, wherein the system includes an array of flash memory cells and circuitry configured to erase selected blocks of the cells and write packets of bits to erased ones of the cells, wherein the system consumes less power to write a bit having a first value to an erased one of the cells than to write a bit having a second value to said erased one of the cells, said count generation circuit including:
-
a converter circuit configured to operate in a first mode in which it receives a sequence of subsets of bits of the packets and asserts count data in response to each of the subsets, wherein the count data for said each of the subsets is indicative of how many of the bits in said each of the subsets have a first one of said first value and said second value; and a count circuit which processes the count data for all the subsets of one of the packets, thereby generating packet count data indicative of how many of the bits in said one of the packets have said first one of said first value and said second value. - View Dependent Claims (46, 47, 48, 49, 50, 51, 52)
-
Specification