# US 2021/0240641 A1 · NVMe SGL Bit Bucket Transfers

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

- Number: US 2021/0240641 A1
- Document ID: US20210240641A1
- Status: Published application
- Kind: A1
- Application number: 16/778,177
- Filed: 2020-01-31
- Published: 2021-08-05
- Earliest claimed: 2020-01-31
- Assignees: Western Digital Technologies, Inc.
- Applicants: Western Digital Technologies, Inc.
- Inventors: Shay BENISTY
- Web page: https://patentgrep.com/patent/US20210240641A1

## CPC

- G06F 13/1668: {Details of memory controller}
- G06F 3/0619: {in relation to data integrity, e.g. data losses, bit errors}
- G06F 3/0626: {Reducing size or complexity of storage systems}
- G06F 3/064: {Management of blocks}
- G06F 3/0647: {Migration mechanisms}
- G06F 3/0656: {Data buffering arrangements}
- G06F 3/0659: {Command handling arrangements, e.g. command buffers, queues, command scheduling}
- G06F 3/0679: {Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]}
- G06F 13/16: for access to memory bus (G06F13/28 takes precedence)
- G06F 13/4282: {on a serial bus, e.g. I2C bus, SPI bus (on daisy chain buses G06F13/4247)}
- G06F 2213/0026: PCI express
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Embodiments generally relate to handling of NVMe scatter gather list bit bucket transfers by a data storage device. The data storage device transfers the data associated with the bit bucket transfers to a host or to a controller memory buffer of the data storage device. The data storage device can transfer the data associated with the bit bucket transfers to the host by modifying transaction layer packets (TLPs) to indicate to the host to ignore the data payload of the TLPs.

## Claims

### Claim 1

A process of a device-to-host transfer of data using a scatter gather list (SGL) and including one or more bit bucket transfers, the process comprising:
receiving the transfer command of the data;
fetching a SGL descriptor associated with the data;
determining whether the SGL descriptor is a SGL bit bucket descriptor or a SGL data block descriptor;
generating a modified transaction layer packet (TLP) when the SGL descriptor is determined to be the SGL bit bucket descriptor, the modified TLP having an indication to a host to ignore a data payload of the modified TLP; and
transferring the modified TLP to the host.

### Claim 2 (depends on 1)

The process of claim 1, wherein the modified TLP indicates byte enables with cleared entries for a last byte enabled (BE) field and for a first BE field as the indication to the host to ignore the data payload of the modified TLP.

### Claim 3 (depends on 1)

The process of claim 1, wherein the modified TLP comprises a set entry for an EP bit as the indication to the host to ignore the data payload of the modified TLP.

### Claim 4 (depends on 1)

The process of claim 1, wherein the modified TLP comprises a replaced address to a host memory buffer of the host for an address field as the indication to the host to ignore the data payload of the modified TLP.

### Claim 5 (depends on 1)

The process of claim 1, further comprising transferring an unmodified TLP to the host when the SGL descriptor is determined to be the SGL data block descriptor.

### Claim 6 (depends on 1)

The process of claim 1, wherein the transfer command is a read command and wherein the modified TLP is a modified memory write request TLP.

### Claim 7 (depends on 6)

The process of claim 6, wherein the read command is a NVM Express read command and wherein the modified memory write request TLP is a Peripheral Component Interface Express modified memory write request TLP.

### Claim 8

A data storage device, comprising:
a host interface operable to interface with a host;
a non-volatile memory; and
a storage device controller, the storage device controller operable to:
receive a transfer command of a data written to non-volatile memory, the transfer command using a scatter gather list (SGL) and including one or more bit bucket transfers;
fetch an SGL descriptor associated with the data;
determine whether the SGL descriptor is a SGL bit bucket descriptor or a SGL data block descriptor;
generate a modified transaction layer packet (TLP) when the SGL descriptor is determined to be the SGL bit bucket descriptor, the modified TLP having an indication to the host to ignore a data payload of the modified TLP; and
transfer the modified TLP to the host.

### Claim 9 (depends on 8)

The data storage device of claim 8, wherein the modified TLP indicates byte enables with cleared entries for a last byte enabled (BE) field and for a first BE field as the indication to the host to ignore the data payload of the modified TLP.

### Claim 10 (depends on 8)

The data storage device of claim 8, wherein the modified TLP comprises a set entry for an EP bit as the indication to the host to ignore the data payload of the modified TLP.

### Claim 11 (depends on 8)

The data storage device of claim 8, wherein the modified TLP comprises a replaced address to a host memory buffer of the host for an address field as the indication to the host to ignore the data payload of the modified TLP.

### Claim 12 (depends on 8)

The data storage device of claim 8, wherein the storage device controller is further operable to transfer an unmodified TLP to the host when the SGL descriptor is determined to be the SGL data block descriptor.

### Claim 13 (depends on 8)

The data storage device of claim 8, wherein the transfer command is a read command and wherein the modified TLP is a modified memory write request TLP.

### Claim 14 (depends on 8)

The data storage device of claim 8, wherein the host interface is configured to operate under a Peripheral Component Interface Express (PCIe) interface protocol and wherein the data storage device is configured to communicate with the host under a NVM Express protocol over the PCIe interface protocol.

### Claim 15

A data storage device, comprising:
a host Peripheral Component Interface Express (PCIe) interface operable to interface with a device PCIe interface of a host;
a non-volatile memory; and
a NVM Express (NVMe) storage device controller means for transferring a data in response to a device-to-host transfer request using a scatter gather list (SGL) and involving one or more bit bucket transfers to a destination selected from a group consisting of a host memory buffer of the host, a controller memory buffer of the NVMe storage device controller means, and the device PCIe interface of the host, wherein the data comprises a modified memory write request transaction layer packet (TLP), and wherein the modified memory write request TLP comprises an indication to the host to ignore a data payload of the modified memory write request TLP.

### Claim 16 (depends on 15)

The data storage device of claim 15, wherein the NVMe storage device controller means is for transferring the data in response to the device-to-host transfer involving the one or more bit bucket transfers to the destination of the host memory buffer the host by transferring to the host the modified memory write request TLP with an replaced address to the host memory buffer for an address field.

### Claim 17 (depends on 15)

The data storage device of claim 15, wherein the NVMe storage device controller means is for transferring the data in response to the device-to-host transfer involving the one or more bit bucket transfers to the destination of the controller memory buffer of the NVMe storage device controller means.

### Claim 18 (depends on 15)

The data storage device of claim 15, wherein the NVMe storage device controller means is for transferring the data in response to the device-to-host transfer involving the one or more bit bucket transfers to the destination of the device PCIe interface of the host by transferring to the host the modified memory write request TLP with a zero-write byte enable.

### Claim 19 (depends on 15)

The data storage device of claim 15, wherein the NVMe storage device controller means is for transferring the data in response to the device-to-host transfer involving the one or more bit bucket transfers to the destination of the device PCIe interface of the host by transferring to the host a poisoned memory write request TLP.

### Claim 20 (depends on 15)

The data storage device of claim 15, wherein the NVMe storage device controller means is further for transferring the data in response to the device-to-host transfer involving one or more data block transfer by transferring to the host an unmodified memory write request TLP to a host memory of the host.
