# US 10,768,816 B2 · Method and apparatus to manipulate customer data without using the host interface

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

- Number: US 10,768,816 B2
- Document ID: US10768816B2
- Status: Granted
- Kind: B2
- Application number: 15/959,875
- Filed: 2018-04-23
- Published: 2019-10-24
- Granted: 2020-09-08
- Earliest claimed: 2018-04-23
- Assignees: Western Digital Technologies, Inc.
- Applicants: Western Digital Technologies, Inc.
- Inventors: Mackenzie Roeser; Robert Hill
- Web page: https://patentgrep.com/patent/US10768816B2

## CPC

- G06F 3/0605: {by facilitating the interaction with a user or administrator}
- G06F 12/0246: {in block erasable memory, e.g. flash memory}
- G06F 3/0604: {Improving or facilitating administration, e.g. storage management}
- G06F 3/0656: {Data buffering arrangements}
- G06F 3/0658: {Controller construction 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 12/0223: {User address space allocation, e.g. contiguous or non contiguous base addressing}
- G06F 12/0875: with dedicated cache, e.g. instruction or stack
- G06F 2212/2022: Flash memory
- G06F 2212/222: Non-volatile memory
- G06F 2212/40: Specific encoding of data in memory or cache
- G06F 2212/7202: Allocation control and policies
- G11C 16/0483: {comprising cells having several storage transistors connected in series}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- G11C: STATIC STORES (semiconductor memory devices H10B)

## Abstract

A method is disclosed for changing data within a solid state drive without using a host interface, comprising issuing a write buffer command with a code to the solid state drive, receiving the code at the solid state drive, storing the code at the solid state drive, transmitting a command to run the code at the solid state drive, running the code with a processor in a virtual machine arranged within the solid state drive, wherein the running of the code alters data within the solid state drive and altering at least one memory arrangement in the solid state drive such that the memory arrangement records the altered data.

## Claims

### Claim 1

A method for changing data within a solid state drive without using a host interface, comprising:
issuing a write buffer command with a code to the solid state drive;
receiving the code at the solid state drive;
storing the code at the solid state drive;
transmitting a command to run the code at the solid state drive;
executing the code with a processor in a virtual machine arranged within the solid state drive, wherein the running of the code alters data within the solid state drive, and wherein the executing the code with the processor is performed in a background environment of the solid state drive; and
altering at least one memory arrangement in the solid state drive such that the memory arrangement records the altered data.

### Claim 2 (depends on 1)

The method according to claim 1, further comprising:
activating the solid state drive to retrieve the altered data within the solid state drive; and
transmitting the altered data to a host.

### Claim 3 (depends on 1)

The method according to claim 1, wherein the processor also controls solid state drive functions other than running the code.

### Claim 4 (depends on 1)

The method according to claim 1, wherein the storing the code at the solid state drive is in a buffer memory of the processor.

### Claim 5 (depends on 1)

The method according to claim 1, wherein the executing of the code to alter the data within the solid state drive is through a write command.

### Claim 6 (depends on 1)

The method according to claim 1, wherein the executing the code with the processor in the virtual machine comprises:
providing a fixed number of virtual registers.

### Claim 7 (depends on 1)

The method according to claim 1, wherein the executing the code with the processor in the virtual machine comprises:
providing a fixed number of logical based address slots.

### Claim 8 (depends on 1)

The method according to claim 1, wherein the executing the code with the processor in the virtual machine comprises:
providing an application programing interface to query drive characteristics.

### Claim 9 (depends on 8)

The method according to claim 8, wherein the query drive characteristics are one of a maximum number of logical based addresses, a drive format type, and a drive capacity.

### Claim 10 (depends on 1)

The method according to claim 1, the executing the code with the processor in the virtual machine further comprises:
executing a program to create an application programming interface to read logical based addresses from a media to a slot.

### Claim 11 (depends on 10)

The method according to claim 10, wherein the application programming interface is configured to further write data from the slot to the media.

### Claim 12 (depends on 1)

The method according to claim 1, wherein the executing the code with the processor in the virtual machine comprises:
executing a program to create an application programming interface to establish a unit attention on all initiators.

### Claim 13 (depends on 1)

The method according to claim 1, wherein the executing the code with the processor in the virtual machine comprises:
allotting an amount of memory within the solid state drive to a stack for processing.

### Claim 14

A method for changing data within a solid state drive without using a host interface, comprising:
issuing a write buffer command with a code to the solid state drive;
receiving the code at the solid state drive;
storing the code at the solid state drive;
transmitting a command to run the code at the solid state drive; executing the code with a processor in a virtual machine arranged within the solid state drive, wherein the running of the code alters data within the solid state drive, and wherein the executing the code with the processor in the virtual machine comprises providing a fixed number of virtual registers; and
altering at least one memory arrangement in the solid state drive such that the memory arrangement records the altered data.

### Claim 15 (depends on 14)

The method according to claim 14, further comprising:
activating the solid state drive to retrieve the altered data within the solid state drive; and
transmitting the altered data to a host.

### Claim 16 (depends on 14)

The method according to claim 14, wherein the processor also controls solid state drive functions other than running the code.

### Claim 17 (depends on 14)

The method according to claim 14, wherein the storing the code at the solid state drive is in a buffer memory of the processor.

### Claim 18

A method for changing data within a solid state drive without using a host interface, comprising:
issuing a write buffer command with a code to the solid state drive;
receiving the code at the solid state drive;
storing the code at the solid state drive;
transmitting a command to run the code at the solid state drive;
executing the code with a processor in a virtual machine arranged within the solid state drive, wherein the running of the code alters data within the solid state drive, and wherein the executing the code with the processor in the virtual machine comprises allotting an amount of memory within the solid state drive to a stack for processing; and
altering at least one memory arrangement in the solid state drive such that the memory arrangement records the altered data.

### Claim 19 (depends on 18)

The method according to claim 18, wherein the executing of the code to alter the data within the solid state drive is through a write command.

### Claim 20 (depends on 18)

The method according to claim 18, wherein the executing the code with the processor in the virtual machine comprises:
providing a fixed number of logical based address slots.

### Claim 21 (depends on 18)

The method according to claim 18, wherein the executing the code with the processor in the virtual machine comprises:
providing an application programing interface to query drive characteristics.

### Claim 22

A method for changing data within a solid state drive without using a host interface, comprising:
issuing a write buffer command with a code to the solid state drive;
receiving the code at the solid state drive;
storing the code at the solid state drive;
transmitting a command to run the code at the solid state drive;
executing the code with a processor in a virtual machine arranged within the solid state drive, wherein the running of the code alters data within the solid state drive, and wherein the executing the code with the processor in the virtual machine comprises executing a program to create an application programming interface to establish a unit attention on all initiators; and
altering at least one memory arrangement in the solid state drive such that the memory arrangement records the altered data.

### Claim 23 (depends on 22)

The method according to claim 22, wherein the executing the code with the processor in the virtual machine comprises:
providing an application programing interface to query drive characteristics, wherein the query drive characteristics are one of a maximum number of logical based addresses, a drive format type, and a drive capacity.

### Claim 24 (depends on 22)

The method according to claim 22, the executing the code with the processor in the virtual machine further comprises:
executing a program to create an application programming interface to read logical based addresses from a media to a slot.

### Claim 25 (depends on 24)

The method according to claim 24, wherein the application programming interface is configured to further write data from the slot to the media.
