# US 10,120,580 B2 · Method and design for dynamic management of descriptors for SGL operation

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 10,120,580 B2
- Document ID: US10120580B2
- Status: Granted
- Kind: B2
- Application number: 14/674,739
- Filed: 2015-03-31
- Published: 2016-10-06
- Granted: 2018-11-06
- Earliest claimed: 2015-03-31
- Assignees: Toshiba Memory Corporation
- Applicants: Toshiba Memory Corporation
- Inventors: Sancar Kunt Olcay
- Web page: https://patentgrep.com/patent/US10120580B2

## CPC

- G06F 3/061: {Improving I/O performance}
- G06F 3/068: {Hybrid storage device}
- G06F 13/161: {with latency improvement}
- G06F 13/1689: {Synchronisation and timing concerns (synchronisation on a memory bus G06F13/4234)}
- G06F 13/28: using burst mode transfer, e.g. direct memory access {DMA}, cycle steal (G06F13/32 takes precedence)
- G06F 3/0659: {Command handling arrangements, e.g. command buffers, queues, command scheduling}
- G06F 2213/2802: DMA using DMA transfer descriptors
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

In an example, a method of managing direct memory access (DMA) descriptors for commands to a non-volatile semiconductor storage device includes requesting DMA descriptors from the host system for each of a plurality of the commands stored in a command random access memory (RAM). The method further includes storing the DMA descriptors for each of the plurality of the commands in free descriptor regions in a descriptor RAM. The method further includes maintaining a dynamic descriptor list in the descriptor RAM for each of the plurality of commands, the dynamic descriptor list for each of the plurality of commands comprising occupied descriptor regions in the descriptor RAM having associated DMA descriptors.

## Claims

### Claim 1

A method of managing direct memory access (DMA) descriptors for a plurality of commands to a non-volatile semiconductor storage device, the method comprising:
requesting DMA descriptors from a host system for each of the plurality of commands stored in a command random access memory (RAM);
storing the DMA descriptors for each of the plurality of commands in free descriptor regions of a plurality of descriptor regions in a descriptor RAM of the non-volatile semiconductor storage device; and
maintaining a dynamic descriptor list in the descriptor RAM for each of the plurality of commands, the dynamic descriptor list for each of the plurality of commands comprising occupied descriptor regions of the plurality of descriptor regions in the descriptor RAM having associated DMA descriptors,
wherein at least one of the occupied descriptor regions includes multiple DMA descriptors and a single pointer to a next occupied descriptor region of the plurality of descriptor regions.

### Claim 2 (depends on 1)

The method of claim 1, wherein each dynamic descriptor list is a linked list having a head descriptor field and a tail descriptor field, and wherein each of the plurality of commands includes pointers to the head descriptor field and the tail descriptor field, respectively, in the associated dynamic descriptor list.

### Claim 3 (depends on 1)

The method of claim 1, wherein the DMA descriptors for each of the plurality of commands include data DMA descriptors and metadata DMA descriptors.

### Claim 4 (depends on 3)

The method of claim 3, wherein each dynamic descriptor list is a linked list having a head data descriptor field, a head metadata descriptor field, and a tail descriptor field, and wherein each of the plurality of commands includes pointers to the head data descriptor field, the head metadata descriptor field, and the tail descriptor field, respectively, in the associated dynamic descriptor list.

### Claim 5 (depends on 1)

The method of claim 1, wherein each occupied descriptor region further includes at least one type flag indicating a type of the multiple DMA descriptors, at least one valid flag indicating whether the multiple DMA descriptors are valid, and at least one consumed flag indicating whether the multiple DMA descriptors have been consumed.

### Claim 6 (depends on 5)

The method of claim 5, wherein the pointer to the next occupied descriptor region in each occupied descriptor region is separately addressable in the descriptor RAM from the remaining portion of each occupied descriptor region.

### Claim 7 (depends on 1)

The method of claim 1, wherein the DMA descriptors comprise descriptors in a scatter-gather list (SGL).

### Claim 8 (depends on 1)

The method of claim 1, further comprising:
transferring associated DMA descriptors for a command to a back end of the controller; and
marking the associated DMA descriptors for the command as being consumed.

### Claim 9 (depends on 8)

The method of claim 8, further comprising:
freeing an occupied descriptor region in response to all DMA descriptors therein being marked as consumed.

### Claim 10 (depends on 8)

The method of claim 8, further comprising:
receiving an indication from the back end of the controller that the command is complete; and
freeing all occupied descriptor regions in the dynamic queue for the command.

### Claim 11

A controller for a non-volatile semiconductor storage device, comprising:
a command random access memory (RAM) configured to store a plurality of commands received from a host system;
a descriptor RAM; and
a processing system having a back end configured to process active commands and a front end configured to:
fetch DMA descriptors from the host system for each of the plurality of commands stored in the command RAM;
store the DMA descriptors for each of the plurality of commands in free descriptor regions of a plurality of descriptor regions in the descriptor RAM; and
maintain a dynamic descriptor list in the descriptor RAM for each of the plurality of commands, the dynamic descriptor list for each of the plurality of commands comprising occupied descriptor regions of the plurality of descriptor regions in the descriptor RAM having associated DMA descriptors,
wherein at least one of the occupied descriptor regions includes multiple DMA descriptors and a single pointer to a next occupied descriptor region of the plurality of descriptor regions.

### Claim 12 (depends on 11)

The controller of claim 11, wherein the front end comprises a data transfer unit configured to receive the commands from the host system and to request and receive the DMA descriptors from the host system.

### Claim 13 (depends on 11)

The controller of claim 11, wherein the back end includes a DMA transfer controller configured to consume the DMA descriptors in the descriptor RAM in response to performing commands in the command RAM.

### Claim 14 (depends on 11)

The controller of claim 11, wherein each dynamic descriptor list is a linked list having a head descriptor field and a tail descriptor field, and wherein each of the plurality of commands includes pointers to the head descriptor field and the tail descriptor field, respectively, in the associated dynamic descriptor list.

### Claim 15 (depends on 11)

The controller of claim 11, wherein the DMA descriptors for each of the plurality of commands include data DMA descriptors and metadata DMA descriptors.

### Claim 16 (depends on 15)

The controller of claim 15, wherein each dynamic descriptor list is a linked list having a head data descriptor field, a head metadata descriptor field, and a tail descriptor field, and wherein each of the plurality of commands includes pointers to the head data descriptor field, the head metadata descriptor field, and the tail descriptor field, respectively, in the associated dynamic descriptor list.

### Claim 17 (depends on 11)

The controller of claim 11, wherein each occupied descriptor region further includes at least one type flag indicating a type of the multiple DMA descriptors, at least one valid flag indicating whether the multiple DMA descriptors are valid, and at least one consumed flag indicating whether the multiple DMA descriptors have been consumed.

### Claim 18 (depends on 17)

The controller of claim 17, wherein the pointer to the next occupied descriptor region in each occupied descriptor region is separately addressable in the descriptor RAM from the remaining portion of each occupied descriptor region.

### Claim 19 (depends on 11)

The controller of claim 11, wherein the DMA descriptors comprise descriptors of a scatter-gather list (SGL).

### Claim 20

A non-transitory computer readable medium having stored thereon instructions that when executed by a processor cause the processor to perform a method of managing direct memory access (DMA) descriptors for a plurality of commands to a non-volatile semiconductor storage device, the method comprising:
requesting DMA descriptors from a host system for each of the plurality of commands stored in a command random access memory (RAM);
storing the DMA descriptors for each of the plurality of commands in free descriptor regions of a plurality of descriptor regions in a descriptor RAM of the non-volatile semiconductor storage device; and
maintaining a dynamic descriptor list in the descriptor RAM for each of the plurality of commands, the dynamic descriptor list for each of the plurality of commands comprising occupied descriptor regions of the plurality of descriptor regions in the descriptor RAM having associated DMA descriptors,
wherein at least one of the occupied descriptor regions includes multiple DMA descriptors and a single pointer to a next occupied descriptor region of the plurality of descriptor regions.
