IP Library › Granted Patent US 11,237,729
Granted Patent B1
US 11,237,729 · App. 17/068,955 · Granted Feb 1, 2022

Fast bus inversion for non-volatile memory

Inventors: Debasish Dwibedy (Karnataka, IN); A Harihara Sravan (Karnataka, IN); Nihal Singla (Karnataka, IN); Muralikrishna Balaga (Karnataka, IN)
Assignee: SANDISK TECHNOLOGIES LLC
G06F3/061G06F3/0655G06F3/0679
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 11,237,729
App. No.
17/068,955
Granted
Feb 1, 2022
Kind
B1
Abstract

An inversion encoder is configured to receive a plurality of bytes of data for parallel output to a data bus; determine, in parallel, Hamming distances of neighboring pairs of bytes of the received plurality of bytes of data; for each neighboring pair of bytes of the received plurality of bytes, determine, in parallel, for each of the neighboring pairs of bytes, whether a respective Hamming distance satisfies a majority function; if a respective Hamming distance for a particular pair of bytes of the neighboring pairs of bytes satisfies the majority function: set an inversion bit for a second byte of the particular pair of bytes to be the opposite of an inversion bit for a first byte of the particular pair of bytes; invert, or forgo inverting, the second byte based on the inversion bit for the second byte; and provide the second byte for output to the data bus.

Claims (101)

1. A data storage system, comprising:

a storage medium including a plurality of memory cells;

a storage controller in communication with the storage medium;

electrical interface circuitry configured to pass data on a data bus disposed between the storage medium and the storage controller; and

an inversion encoder coupled to the electrical interface circuitry, the inversion encoder including circuitry configured to:

receive a plurality of bytes of data for parallel output to the data bus;

determine, in parallel, Hamming distances of neighboring pairs of bytes of the received plurality of bytes of data;

for each neighboring pair of bytes of the received plurality of bytes:

determine, in parallel, for each of the neighboring pairs of bytes, whether a respective Hamming distance satisfies a majority function;

in accordance with a determination that a respective Hamming distance for a particular pair of bytes of the neighboring pairs of bytes satisfies the majority function, set an inversion bit for a second byte of the particular pair of bytes to be the opposite of an inversion bit for a first byte of the particular pair of bytes; and

in accordance with a determination that a respective Hamming distance for a particular pair of bytes of the neighboring pairs of bytes does not satisfy the majority function, set an inversion bit for a second byte of the particular pair of bytes to be equal to an inversion bit for a first byte of the particular pair of bytes;

invert, or forgo inverting, the second byte based on the inversion bit for the second byte; and

provide the inverted or non-inverted second byte for output to the data bus.

2. The data storage system of claim 1 , wherein the inversion encoder is configured to:

determine Hamming distances of neighboring pairs of the received bytes of data by determining, in parallel:

a first Hamming distance between a first of the received bytes of data and a second of the received bytes of data; and

a second Hamming distance between the second of the received bytes of data and a third of the received bytes of data.

3. The data storage system of claim 2 , wherein the inversion encoder is configured to:

determine the first Hamming distance by:

comparing respective bit pairs of the first of the received bytes of data and the second of the received bytes of data; and

determining, based on the comparing, how many of the respective bit pairs have differing values; and

determine that the first Hamming distance satisfies the majority function if at least a majority of the respective bit pairs have differing values.

4. The data storage system of claim 1 , wherein:

the received plurality of bytes of data comprises P bytes of data, where P is at least eight; and

the inversion encoder is configured to set inversion bits for each byte of the P bytes of data using combinational circuitry comprising N logical stages, where N is less than P.

5. The data storage system of claim 4 , wherein:

N is less than or equal to P/2; and

each of the N logical stages comprises one or more exclusive or (XOR) gates.

6. The data storage system of claim 4 , wherein:

P is equal to 10;

N is equal to 4; and

each of the N logical stages comprises between 3 and 7 exclusive or (XOR) gates.

7. A data storage system, comprising:

a storage medium including a plurality of memory cells;

a storage controller in communication with the storage medium;

electrical interface circuitry configured to pass data on a data bus disposed between the storage medium and the storage controller; and

an inversion encoder coupled to the electrical interface circuitry, the inversion encoder including:

data receiving circuitry configured to receive a plurality of bytes of data for parallel output to the data bus;

a first multiplexer controlled by a first selection setting;

transition detection circuitry configured to, based on the first selection setting: (i) signal bit pair transitions for consecutive neighboring bytes of the plurality of bytes of data, or (ii) pass the received plurality of bytes of data without signaling bit pair transitions;

majority function circuitry configured to determine whether (i) a number of signaled bit pair transitions constitutes a majority of bit pairs for each of the consecutive neighboring bytes, or (ii) whether a number of bits equaling 1 or a number of bits equaling 0 constitutes a majority of bits for each of the received plurality of bytes;

inversion bit generation circuitry configured to set a preliminary inversion bit for each of the received plurality of bytes based on the majority function determinations;

a second multiplexer controlled by the first selection setting, wherein the second multiplexer is configured to, based on the first selection setting, set a respective output inversion bit for each of the received plurality of bytes to: (i) respective preliminary inversion bits for corresponding bytes of the received plurality of bytes, or (ii) respective outputs of the majority function circuitry for corresponding bytes of the received plurality of bytes; and

output generation circuitry configured to pass respective bytes of the received plurality of bytes to the output bus in accordance with corresponding respective output inversion bits as set by the second multiplexer.

8. The data storage system of claim 7 , wherein the first selection setting configures the inversion encoder to encode:

(i) alternating current (AC) inversion data signals; or

(ii) direct current (DC) inversion data signals.

9. A method, of operating an inversion encoder of a data storage system, the method comprising:

receiving a plurality of bytes of data for parallel output to a data bus of the data storage system;

determining, in parallel, Hamming distances of neighboring pairs of bytes of the received plurality of bytes of data;

for each neighboring pair of bytes of the received plurality of bytes:

determining, in parallel, for each of the neighboring pairs of bytes, whether a respective Hamming distance satisfies a majority function;

in accordance with a determination that a respective Hamming distance for a particular pair of bytes of the neighboring pairs of bytes satisfies the majority function, setting an inversion bit for a second byte of the particular pair of bytes to be the opposite of an inversion bit for a first byte of the particular pair of bytes; and

in accordance with a determination that a respective Hamming distance for a particular pair of bytes of the neighboring pairs of bytes does not satisfy the majority function, setting an inversion bit for a second byte of the particular pair of bytes to be equal to an inversion bit for a first byte of the particular pair of bytes;

inverting, or forgoing inverting, the second byte based on the inversion bit for the second byte; and

providing the inverted or non-inverted second byte for output to the data bus.

10. The method of claim 9 , wherein determining Hamming distances of neighboring pairs of the received bytes of data comprises determining, in parallel:

a first Hamming distance between a first of the received bytes of data and a second of the received bytes of data; and

a second Hamming distance between the second of the received bytes of data and a third of the received bytes of data.

11. The method of claim 10 , wherein:

determining the first Hamming distance comprises:

comparing respective bit pairs of the first of the received bytes of data and the second of the received bytes of data; and

determining, based on the comparing, how many of the respective bit pairs have differing values; and

determining that the first Hamming distance satisfies the majority function comprises determining that at least a majority of the respective bit pairs have differing values.

12. The method of claim 9 , wherein:

the received plurality of bytes of data comprises P bytes of data, where P is at least eight; and

the method further comprises setting inversion bits for each byte of the P bytes of data using combinational circuitry comprising N logical stages, where N is less than P.

13. The method of claim 12 , wherein:

N is less than or equal to P/2; and

each of the N logical stages comprises one or more exclusive or (XOR) gates.

14. The method of claim 12 , wherein:

P is equal to 10;

N is equal to 4; and

each of the N logical stages comprises between 3 and 7 exclusive or (XOR) gates.

15. A data storage system, comprising:

means for receiving a plurality of bytes of data for parallel output to a data bus of the data storage system;

means for determining, in parallel, Hamming distances of neighboring pairs of bytes of the received plurality of bytes of data;

for each neighboring pair of bytes of the received plurality of bytes:

means for determining, in parallel, for each of the neighboring pairs of bytes, whether a respective Hamming distance satisfies a majority function;

in accordance with a determination that a respective Hamming distance for a particular pair of bytes of the neighboring pairs of bytes satisfies the majority function, setting an inversion bit for a second byte of the particular pair of bytes to be the opposite of an inversion bit for a first byte of the particular pair of bytes; and

in accordance with a determination that a respective Hamming distance for a particular pair of bytes of the neighboring pairs of bytes does not satisfy the majority function, setting an inversion bit for a second byte of the particular pair of bytes to be equal to an inversion bit for a first byte of the particular pair of bytes;

means for inverting, or forgoing inverting, the second byte based on the inversion bit for the second byte; and

means for providing the inverted or non-inverted second byte for output to the data bus.

16. The data storage system of claim 15 , wherein the means for determining Hamming distances of neighboring pairs of the received bytes of data comprise means for determining, in parallel:

a first Hamming distance between a first of the received bytes of data and a second of the received bytes of data; and

a second Hamming distance between the second of the received bytes of data and a third of the received bytes of data.

17. The data storage system of claim 15 , wherein:

the means for determining the first Hamming distance comprise:

means for comparing respective bit pairs of the first of the received bytes of data and the second of the received bytes of data; and

means for determining, based on the comparing, how many of the respective bit pairs have differing values; and

the means for determining that the first Hamming distance satisfies the majority function comprise means for determining that at least a majority of the respective bit pairs have differing values.

18. The data storage system of claim 15 , wherein:

the received plurality of bytes of data comprises P bytes of data, where P is at least eight; and

the data storage system further comprises means for setting inversion bits for each byte of the P bytes of data using combinational circuitry comprising N logical stages, where N is less than P.

19. The data storage system of claim 17 , wherein:

N is less than or equal to P/2; and

each of the N logical stages comprises one or more exclusive or (XOR) gates.

20. The data storage system of claim 17 , wherein:

P is equal to 10;

N is equal to 4; and

each of the N logical stages comprises between 3 and 7 exclusive or (XOR) gates.

Assignments (4)
PARTIAL RELEASE OF SECURITY INTERESTS Recorded Apr 25, 2025
From: JPMORGAN CHASE BANK, N.A., AS AGENT
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 071382/0001 →
SECURITY AGREEMENT Recorded Apr 25, 2025
From: SANDISK TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 071050/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 31, 2024
From: SANDISK TECHNOLOGIES LLC
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 069796/0423 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 22, 2020
From: DWIBEDY, DEBASISH; SINGLA, NIHAL; SRAVAN, A HARIHARA; BALAGA, MURALIKRISHNA
To: SANDISK TECHNOLOGIES LLC
Reel/Frame 054134/0272 →
Cited By (1)
US 12,737,138