IP Library › Granted Patent US 12,197,349
Granted Patent B2
US 12,197,349 · App. 17/452,120 · Granted Jan 14, 2025

Command packets for the direct control of non-volatile memory channels within a solid state drive

Inventor: Jeffrey McVay (El Dorado Hills, CA)
Assignee: Micron Technology, Inc.
G06F13/1668G06F3/0613G06F3/0659G06F3/0679G06F13/4068G06F13/4282
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,197,349
App. No.
17/452,120
Granted
Jan 14, 2025
Kind
B2
Abstract

Apparatuses and methods for providing and interpreting command packets for direct control of memory channels are disclosed herein. An example apparatus includes flash memories configured into channels and a controller coupled to the flash memories. The controller receives packets and interpret the packets based at least on a first protocol, and determines whether any packets are linked based on a link identifier included in a block of each packet. The controller arranges the subset of packets based on an index included in the block of each packet of the subset of packets, and the subset of packets are arranged in order based on the respective indexes. A target flash memory and a target channel are determined by the controller based on flash memory and channel identifiers included in the block of each of the packet of the subset of packets.

Claims (31)

1. An apparatus comprising:

a plurality of flash memories;

a memory controller configured to receive, from a host controller, a plurality of packets and interpret each of the plurality of packets based on a first protocol, wherein the first protocol defines a first portion of each packet as protocol defined and a second portion of each packet as user-defined, wherein the memory controller is further configured to access one or more of the plurality of flash memories based on the user-defined portion of the plurality of packets, and wherein the user-defined portion of the plurality of packets is interpreted based on a second protocol different than the first protocol, and wherein the protocol defined portion includes a first command according to the first protocol and the user-defined portion includes a second command according to the second protocol, a control operand, and an I/O operand, wherein the control operand designates a type of command provided by the I/O operand.

2. The apparatus of claim 1 , wherein the first protocol is a Non-Volatile Memory Express (NVMe) protocol, and the second protocol is an Open NAND Flash Interface (ONFI) protocol.

3. The apparatus of claim 1 , wherein the user-defined portion further includes a link identifier, and wherein the memory controller is configured to determine if any of the plurality of packets are linked based on the link identifier.

4. The apparatus of claim 3 , wherein the user-defined portion further includes an index, and wherein the memory controller is configured to arrange the linked ones of the plurality of packets based on the index.

5. The apparatus of claim 1 , wherein first protocol defines a plurality of DWords in each packet, and wherein a first portion of the plurality of DWords are protocol defined and a second portion are user-defined.

6. The apparatus of claim 1 , wherein the memory controller is configured to identify a target one of the plurality of flash memories and a target channel based on identifiers in the user-defined portion of the plurality of packets.

7. The apparatus of claim 1 , wherein the memory controller is configured to provide data, address, and control signals to the target flash memory based on interpreting the user-defined portion of the plurality of packets with the second protocol.

8. A method comprising:

receiving a plurality of packets at a memory controller from a host controller;

interpreting each of the plurality of packets based on a first protocol, wherein the first protocol defines a first portion of each packet as protocol-defined and defines a second portion of each packet as user-defined;

interpreting the user-defined portion of the plurality of packets based on a second protocol different than the first protocol, wherein the protocol-defined portion includes a first command according to the first protocol and the user-defined portion includes a second command according to the second protocol, a control operand, and an I/O operand, wherein the control operand designates a type of command provided by the I/O operand; and

accessing one or more of a plurality of flash memories based on the interpreted user-defined portion of the plurality of packets.

9. The method of claim 8 , further comprising accessing the one or more of the plurality of flash memories based on physical address information in the user-defined portion.

10. The method of claim 8 , further comprising linking a subset of the plurality of packets based on a link identifier in the user-defined portion of the subset of the plurality of packets.

11. The method of claim 10 , further comprising:

determining if all of the subset of the plurality of packets have been received; and

waiting until all of the subset of the plurality of packets have been received before accessing the one or more of the plurality of flash memories based on one or more commands included in the user-defined portions of the subset of the plurality of packets.

12. The method of claim 10 , further comprising ordering the subset of the plurality of packets based on an index in the user-defined portion of the subset of the plurality of packets.

13. The method of claim 8 , further comprising accessing the one or more of the plurality of flash memories based on user-defined commands in the user-defined portion of the plurality of packets.

14. The method of claim 8 , further comprising identifying a channel to access based on identifiers in the user-defined portion of the plurality of packets.

15. A method comprising:

receiving, using a first protocol, a plurality of packets at a front end of memory controller from a host controller, each of the plurality of packets including a plurality of DWords, wherein a first portion of the plurality of DWords are defined by the first protocol;

interpreting, with a back end interface of the memory controller, a second portion of the plurality of DWords based on a second protocol different than the first protocol, wherein the second portion are user-defined by the first protocol, and wherein the first portion includes a first command according to the first protocol and the second portion includes a second command according to the second protocol, a control operand, and an I/O operand, wherein the control operand designates a type of command provided by the I/O operand; and

providing control signals and operands to a flash memory based on the interpreted second protocol.

16. The method of claim 15 , further comprising linking at least some of the plurality of packets based on a link identifier in the second portion of the plurality of DWords.

17. The method of claim 16 , further comprising ordering the at least some of the plurality of packets based on an index.

18. The method of claim 16 , further comprising interpreting the linked at least some of the plurality of packets as a single command or a sequence of commands.

19. The method of claim 15 , wherein the first protocol is a Non-Volatile Memory Express (NVMe) protocol, and the second protocol is an Open NAND Flash Interface (ONFI) protocol.

20. The method of claim 15 , providing the control signals and operands along a target channel of a plurality of channels based on a channel identifier in the second portion of the plurality of DWords.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 25, 2021
From: MCVAY, JEFFREY
To: MICRON TECHNOLOGY, INC.
Reel/Frame 057899/0312 →
Continuity (3)
Continuation 16508155 · Jul 10, 2019
Continuation 14923269 · Oct 26, 2015
Related Publication 20220043761A1 · Feb 10, 2022
References Cited (21)
US 10467155B2 · Mcvay · 2019 [cited by applicant]
US 20080016269A1 · Chow et al. · 2008 [cited by applicant]
US 20080320155A1 · Ganapathy · 2008 [cited by examiner]
US 20100262738A1 · Swing · 2010 [cited by examiner]
US 20100262740A1 · Borchers et al. · 2010 [cited by applicant]
US 20130067137A1 · Molloy · 2013 [cited by applicant]
US 20130135007A1 · Surico et al. · 2013 [cited by applicant]
US 20140108714A1 · Lee et al. · 2014 [cited by applicant]
US 20140229659A1 · Jones · 2014 [cited by examiner]
US 20140281040A1 · Liu · 2014 [cited by applicant]
US 20140281151A1 · Yu · 2014 [cited by applicant]
US 20140372666A1 · Moioli · 2014 [cited by examiner]
US 20150169245A1 · Lassa · 2015 [cited by applicant]
US 20150261446A1 · Lee · 2015 [cited by examiner]
US 20160162202A1 · Singhai · 2016 [cited by examiner]
US 20160162416A1 · Boyd · 2016 [cited by examiner]
US 20160357698A1 · Huang · 2016 [cited by applicant]
US 20170116139A1 · Mcvay · 2017 [cited by applicant]
US 20170160929A1 · Ayandeh · 2017 [cited by applicant]
US 20190332555A1 · Mcvay · 2019 [cited by applicant]
U.S. Appl. No. 16/508,155 titled “Command Packets for the Direct Control of Non-Volatile Memory Channels Within a Solid State Drive” filed Jul. 10, 2019, pp. all pages of the application as filed. [cited by applicant]