IP Library › Granted Patent US 12,253,911
Granted Patent B2
US 12,253,911 · App. 17/534,944 · Granted Mar 18, 2025

Programmable and high-performance data scrambler for non-volatile memory controllers

Inventors: Xin Guo (San Jose, CA); Ravi Motwani (Fremont, CA); Donia Sebastian (Fair Oaks, CA); Aaron Lutzker (Walnut Creek, CA)
Assignee: Intel Corporation
G06F11/1068G06F3/0619G06F3/0623G06F3/0659G06F3/0679G06F7/588G06F11/0772
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 12,253,911
App. No.
17/534,944
Granted
Mar 18, 2025
Kind
B2
Abstract

Systems, apparatuses and methods may provide for technology that generates a first set of scrambler bits based on a destination page number associated with data, generates a second set of scrambler bits based on a programmable nonlinear function, and combines the first set of scrambler bits and the second set of scrambler bits into a scrambler seed. In one example, the technology also randomizes the data based on the scrambler seed to obtain outgoing randomized data and writes the outgoing randomized data to a non-volatile memory.

Claims (80)

1. A semiconductor apparatus comprising:

one or more substrates; and

logic coupled to the one or more substrates, wherein the logic is implemented at least partly in one or more of configurable or fixed-functionality hardware, the logic to:

generate a first set of scrambler bits based on a destination page number associated with data;

generate a second set of scrambler bits based on a programmable nonlinear function; and

combine the first set of scrambler bits and the second set of scrambler bits into a scrambler seed, wherein the scrambler seed is a single scrambler seed.

2. The semiconductor apparatus of claim 1 , wherein the logic is further to:

randomize the data based on the scrambler seed to obtain outgoing randomized data; and

write the outgoing randomized data to a non-volatile memory.

3. The semiconductor apparatus of claim 2 , wherein the logic is further to:

generate outgoing parity information based on the outgoing randomized data and the second set of scrambler bits;

write the first set of scrambler bits and the outgoing parity information to the non-volatile memory with the outgoing randomized data; and

withhold the second set of scrambler bits from the non-volatile memory.

4. The semiconductor apparatus of claim 2 , wherein the logic is further to:

read incoming randomized data, a first set of descrambler bits, and incoming parity information from the non-volatile memory;

generate a second set of descrambler bits based on the incoming parity information; and

combine the first set of descrambler bits and the second set of descrambler bits into a descrambler seed.

5. The semiconductor apparatus of claim 4 , wherein the logic is further to:

compare the descrambler seed to the scrambler seed;

generate an error notification if the descrambler seed does not match the scrambler seed; and

de-randomize the incoming randomized data based on the descrambler seed if the descrambler seed matches the scrambler seed.

6. A computing system comprising:

a non-volatile memory; and

a controller coupled to the non-volatile memory, wherein the controller includes logic implemented at least partly in one or more of configurable or fixed-functionality hardware, the logic to:

generate a first set of scrambler bits based on a destination page number associated with data,

generate a second set of scrambler bits based on a programmable nonlinear function, and

combine the first set of scrambler bits and the second set of scrambler bits into a scrambler seed, wherein the scrambler seed is a single scrambler seed.

7. The computing system of claim 6 , wherein the logic is further to:

randomize the data based on the scrambler seed to obtain outgoing randomized data, and

write the outgoing randomized data to the non-volatile memory.

8. The computing system of claim 7 , wherein the logic is further to:

generate outgoing parity information based on the outgoing randomized data and the second set of scrambler bits,

write the first set of scrambler bits and the outgoing parity information to the non-volatile memory with the outgoing randomized data, and

withhold the second set of scrambler bits from the non-volatile memory.

9. The computing system of claim 7 , wherein the logic is further to:

read incoming randomized data, a first set of descrambler bits, and incoming parity information from the non-volatile memory,

generate a second set of descrambler bits based on the incoming parity information, and

combine the first set of descrambler bits and the second set of descrambler bits into a descrambler seed.

10. The computing system of claim 9 , wherein the logic is further to:

compare the descrambler seed to the scrambler seed,

generate an error notification if the descrambler seed does not match the scrambler seed, and

de-randomize the incoming randomized data based on the descrambler seed if the descrambler seed matches the scrambler seed.

11. At least one non-transitory computer readable storage medium comprising a set of instructions, which when executed by a computing system, cause the computing system to:

generate a first set of scrambler bits based on a destination page number associated with data;

generate a second set of scrambler bits based on a programmable nonlinear function; and

combine the first set of scrambler bits and the second set of scrambler bits into a scrambler seed, wherein the scrambler seed is a single scrambler seed.

12. The at least one non-transitory computer readable storage medium of claim 11 , wherein the instructions, when executed, further cause the computing system to:

randomize the data based on the scrambler seed to obtain outgoing randomized data; and

write the outgoing randomized data to a non-volatile memory.

13. The at least one non-transitory computer readable storage medium of claim 12 , wherein the instructions, when executed, further cause the computing system to:

generate outgoing parity information based on the outgoing randomized data and the second set of scrambler bits;

write the first set of scrambler bits and the outgoing parity information to the non-volatile memory with the outgoing randomized data; and

withhold the second set of scrambler bits from the non-volatile memory.

14. The at least one non-transitory computer readable storage medium of claim 12 , wherein the instructions, when executed, further cause the computing system to:

read incoming randomized data, a first set of descrambler bits, and incoming parity information from the non-volatile memory;

generate a second set of descrambler bits based on the incoming parity information; and

combine the first set of descrambler bits and the second set of descrambler bits into a descrambler seed.

15. The at least one non-transitory computer readable storage medium of claim 14 , wherein the instructions, when executed, further cause the computing system to:

compare the descrambler seed to the scrambler seed;

generate an error notification if the descrambler seed does not match the scrambler seed; and

de-randomize the incoming randomized data based on the descrambler seed if the descrambler seed matches the scrambler seed.

16. A method comprising:

generating a first set of scrambler bits based on a destination page number associated with data;

generating a second set of scrambler bits based on a programmable nonlinear function; and

combining the first set of scrambler bits and the second set of scrambler bits into a scrambler seed, wherein the scrambler seed is a single scrambler seed.

17. The method of claim 16 , further including:

randomizing the data based on the scrambler seed to obtain outgoing randomized data; and

writing the outgoing randomized data to a non-volatile memory.

18. The method of claim 17 , further including:

generating outgoing parity information based on the outgoing randomized data and the second set of scrambler bits;

writing the first set of scrambler bits and the outgoing parity information to the non-volatile memory with the outgoing randomized data; and

withholding the second set of scrambler bits from the non-volatile memory.

19. The method of claim 17 , further including:

reading incoming randomized data, a first set of descrambler bits, and incoming parity information from the non-volatile memory;

generating a second set of descrambler bits based on the incoming parity information; and

combining the first set of descrambler bits and the second set of descrambler bits into a descrambler seed.

20. The method of claim 19 , further including:

comparing the descrambler seed to the scrambler seed;

generating an error notification if the descrambler seed does not match the scrambler seed; and

de-randomizing the incoming randomized data based on the descrambler seed if the descrambler seed matches the scrambler seed.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 17, 2025
From: INTEL CORPORATION
To: SK HYNIX NAND PRODUCT SOLUTIONS CORP. (DBA SOLIDIGM)
Reel/Frame 072792/0266 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 7, 2022
From: GUO, XIN; MOTWANI, RAVI; SEBASTIAN, DONIA; LUTZKER, AARON
To: INTEL CORPORATION
Reel/Frame 058586/0113 →
Continuity (1)
Related Publication 20220083419A1 · Mar 17, 2022
References Cited (9)
US 8261159B1 · Sommer · 2012 [cited by examiner]
US 20090323942A1 · Sharon · 2009 [cited by examiner]
US 20100070681A1 · Wan · 2010 [cited by examiner]
US 20120163605A1 · Sharon · 2012 [cited by examiner]
US 20160283320A1 · Motwani · 2016 [cited by examiner]
US 20200293696A1 · Motwani · 2020 [cited by examiner]
US 20210326490A1 · Zalivaka · 2021 [cited by examiner]
US 20220253224A1 · Khayat · 2022 [cited by examiner]
Wikipedia, “Disaggregated Storage”, <en.wikipedia.org/wiki/Diaggregated_storage>, retrieved Nov. 11, 2021, 3 pages. [cited by applicant]