IP Library Granted Patent US 12,306,714
Granted Patent B2
US 12,306,714 · App. 18/313,686 · Granted May 20, 2025

Data memory emulation in flash memory

Inventor: Jawad Benhammadi (Pont de Claix, FR)
Assignee: STMicroelectronics (Alps) SAS
G06F11/1068G06F12/0246G06F13/1668
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,306,714
App. No.
18/313,686
Granted
May 20, 2025
Kind
B2
Abstract

In accordance with an embodiment, a method includes: performing a first write operation comprising writing a first data packet to a first portion of a first line of a flash memory; and performing a second write operation comprising writing a second data packet to a second portion of the first line of the flash memory, wherein the first line comprises the first data packet and the second data packet after performing the first write operation and the second write operation.

Claims (55)

1. A method comprising:

performing a first write operation comprising writing a first data packet to a first portion of a first line of a flash memory, wherein the first line of the flash memory comprises a first number of memory cells; and

performing a second write operation comprising writing a second data packet to a second portion of the first line of the flash memory, wherein the first line comprises the first data packet and the second data packet after performing the first write operation and the second write operation, wherein the first portion and the second portion of the first line of the flash memory together comprise a second number of the memory cells less than the first number of memory cells, the first portion and the second portion of the first line of the flash memory together have an access granularity of at least the second number, and the second portion of the first line of the flash memory is in an unprogrammed state prior to performing the second write operation.

2. The method of claim 1 , wherein:

performing the first write operation further comprises writing a first error correction code associated with the first data packet to a third portion of the first line of the flash memory; and

performing the second write operation further comprises writing a second error correction code associated with the second data packet to a fourth portion of the first line of the flash memory.

3. The method of claim 1 , wherein:

the first data packet comprises a first data value and a first virtual address associated with the first data value; and

the second data packet comprises a second data value and a second virtual address associated with the second data value.

4. The method of claim 3 , wherein the first virtual address is different from the second virtual address.

5. The method of claim 3 , wherein the first virtual address is the same as the second virtual address.

6. The method of claim 3 , wherein:

the first data packet further comprises a first packet integrity verification code; and

the second data packet further comprises a second packet integrity verification code.

7. The method of claim 3 , further comprising reading a current data value associated with the first virtual address from the flash memory, reading comprising:

identifying a most recently stored data packet comprising the first virtual address in the flash memory; and

outputting a data value of the identified data packet as the current data value.

8. The method of claim 7 , further comprising verifying an error correction code associated with the data value of the identified data packet before outputting the data value.

9. The method of claim 1 , further including performing a third write operation comprising:

writing a code value to a first portion of a second line of the flash memory, wherein the second line of the flash memory comprises a same number of memory cells as the first line of the flash memory; and

writing a third error correction code to a second portion of the second line, wherein a bit-length of the code value is equal to or greater than a combined bit-length of the first and second data packets.

10. A system comprising:

a flash memory controller configured to be coupled to a flash memory having a first line of flash memory comprising a first number of memory cells, wherein the flash memory controller is configured to:

perform a first write operation comprising writing a first data packet to a first portion of the first line of the flash memory; and

perform a second write operation comprising writing a second data packet to a second portion of the first line of the flash memory, wherein the first line comprises the first data packet and the second data packet after performing the first write operation and the second write operation, wherein the first portion and the second portion of the first line of the flash memory together comprise a second number of the memory cells less than the first number of memory cells, the first portion and the second portion of the first line of the flash memory together have an access granularity of at least the second number, and the second portion of the first line of the flash memory is in an unprogrammed state prior to performing the second write operation.

11. The system of claim 10 , wherein:

performing the first write operation further comprises writing a first error correction code associated with the first data packet to a third portion of the first line of the flash memory; and

performing the second write operation further comprises writing a second error correction code associated with the second data packet to a fourth portion of the first line of the flash memory.

12. The system of claim 10 , wherein:

the first data packet comprises a first data value and a first virtual address associated with the first data value; and

the second data packet comprises a second data value and a second virtual address associated with the second data value.

13. The system of claim 12 , further comprising a read buffer configured to be coupled to the flash memory, wherein the flash memory controller is further configured to read a current data value associated with the first virtual address from the flash memory by:

identifying a most recently stored data packet comprising the first virtual address in the flash memory;

transferring a data value of the identified data packet to the read buffer; and

outputting the data value of the identified data packet as the current data value.

14. The system of claim 13 , wherein the flash memory controller is further configured to verify an error correction code associated with the data value of the identified data packet before outputting the data value.

15. The system of claim 10 , wherein the flash memory controller is further configured to perform a third write operation comprising:

writing a code value to a first portion of a second line of the flash memory, wherein the second line of the flash memory comprises a same number of memory cells as the first line of the flash memory; and

writing a third error correction code to a second portion of the second line, wherein a bit-length of the code value is equal to or greater than a combined bit-length of the first and second data packets.

16. The system of claim 15 , wherein:

the first line is a part of a data storage zone of the flash memory;

the second line is a part of a code storage zone of the flash memory; and

the system further comprises at least one non-volatile register configured to store at least one value indicating which lines of the flash memory form at least a portion of the data storage zone and indicating which lines of the flash memory form at least a portion of the code storage zone.

17. The system of claim 16 , wherein:

the first line is associated with both a first data storage address, and a first code storage address different from the first data storage address; and

the first write operation and the second write operation each further comprises:

receiving, by the flash memory controller, the first data storage address, and

mapping, by the flash memory controller, the first data storage address to a physical address of the first line of the flash memory.

18. The system of claim 17 , wherein the flash memory controller is further configured to:

receive a first write command associated with the first write operation, wherein the first write command comprises the first data packet and the first data storage address; and

verify, based on one or more parameters stored in the at least one non-volatile register, that the first line of the flash memory is configured to be a part of the data storage zone.

19. The system of claim 10 , further comprising the flash memory.

20. A method of reading flash memory comprising a first data packet including a first data value and a first virtual address written to a first portion of a first line of the flash memory, a second data packet including a second data value and a second virtual address written to a second portion of the first line of the flash memory, wherein the first line of the flash memory comprises memory cells, the method comprising:

identifying a most recently stored data packet comprising the first virtual address in the flash memory; and

outputting a data value of the identified data packet as a current data value.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 8, 2023
From: BENHAMMADI, JAWAD
To: STMICROELECTRONICS (ALPS) SAS
Reel/Frame 063566/0709 →
Priority Claims (1)
FR 2205050 · May 25, 2022 · national
Continuity (1)
Related Publication 20230385149A1 · Nov 30, 2023
References Cited (10)
US 6851013B1 · Larsen · 2005 [cited by examiner]
US 8156276B2 · Morein · 2012 [cited by examiner]
US 8443263B2 · Selinger · 2013 [cited by examiner]
US 9059745B2 · Yuan · 2015 [cited by examiner]
US 10250390B1 · Gray · 2019 [cited by examiner]
US 11567831B2 · Laurent · 2023 [cited by examiner]
US 11650945B2 · Wu · 2023 [cited by examiner]
US 11756643B2 · Jang · 2023 [cited by examiner]
US 20150039805A1 · Backhausen et al. · 2015 [cited by applicant]
US 20180314627A1 · Orme et al. · 2018 [cited by applicant]