# US 10,310,746 B2 · Method, associated memory device and controller thereof for performing dynamic resource management

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

- Number: US 10,310,746 B2
- Document ID: US10310746B2
- Status: Granted
- Kind: B2
- Application number: 15/859,701
- Filed: 2018-01-01
- Published: 2019-02-14
- Granted: 2019-06-04
- Earliest claimed: 2017-08-08
- Assignees: Silicon Motion, Inc.
- Applicants: Silicon Motion Inc.
- Inventors: Che-Wei Hsu; Hsin-Hsiang Tseng
- Web page: https://patentgrep.com/patent/US10310746B2

## CPC

- G06F 3/0613: {in relation to throughput}
- 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]}
- Y02D 10/00: Energy efficient computing, e.g. low power processors, power management or thermal management
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- Y02D: CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE

## Abstract

A method for performing dynamic resource management in a memory device, the memory device, and a controller thereof are provided. The memory device includes a non-volatile (NV) memory, and the NV memory includes a plurality of NV memory elements. The method may include: storing a plurality of sets of physical region descriptor (PRD) information related to a plurality of host commands, respectively, and storing a plurality of intermediate PRDs respectively corresponding to the plurality of sets of PRD information into a first queue; obtaining an intermediate PRD of the plurality of intermediate PRDs from the first queue, and storing the intermediate PRD into a second queue; sending a command to the NV memory according to the intermediate PRD in the second queue to access data; and when an operation of accessing the data is successful, releasing the intermediate PRD from the second queue to the first queue.

## Claims

### Claim 1

A method for performing dynamic resource management in a memory device, the memory device comprising a non-volatile (NV) memory, the NV memory comprising a plurality of NV memory elements, and the method comprising:
storing a plurality of sets of physical region descriptor (PRD) information related to a plurality of host commands, respectively, and storing a plurality of intermediate PRDs respectively corresponding to the plurality of sets of PRD information into a first queue, wherein the plurality of host commands are received from outside the memory device, and any of the plurality of intermediate PRDs comprises an identifier (ID) of a set in the plurality of sets of PRD information;
obtaining an intermediate PRD of the plurality of intermediate PRDs from the first queue, and storing the intermediate PRD into a second queue;
sending a command to the NV memory according to the intermediate PRD in the second queue, to access data in at least one NV memory element of the plurality of NV memory elements; and
when an operation of accessing the data is successful, releasing the intermediate PRD from the second queue to the first queue.

### Claim 2 (depends on 1)

The method of claim 1, wherein a plurality of PRDs stored in the first queue represents a first layer of queued PRDs to be processed; and a plurality of PRDs stored in the second queue represents a second layer of queued PRDs being processed.

### Claim 3 (depends on 2)

The method of claim 2, further comprising:
utilizing a first pointer and a second pointer to indicate a head part and a tail part of a sequence of the first layer of queued PRDs, respectively.

### Claim 4 (depends on 2)

The method of claim 2, wherein before the intermediate PRD is moved from the first queue to the second queue, the intermediate PRD is one of the first layer of queued PRDs; and when the intermediate PRD is moved from the first queue to the second queue, the intermediate PRD is removed from the first layer of queued PRDs.

### Claim 5 (depends on 4)

The method of claim 4, further comprising:
utilizing a first pointer and a second pointer to indicate a head part and a tail part of a sequence of the first layer of queued PRDs, respectively, wherein before the intermediate PRD is moved from the first queue, the intermediate PRD is located at the tail part of the sequence; and
when the intermediate PRD is moved from the first queue, moving the second pointer to indicate a latest location of the tail part of the sequence.

### Claim 6 (depends on 2)

The method of claim 2, further comprising:
utilizing a first pointer and a second pointer to indicate a head part and a tail part of a sequence of the second layer of queued PRDs, respectively.

### Claim 7 (depends on 2)

The method of claim 2, wherein before the intermediate PRD is moved from the first queue into the second queue, the intermediate PRD has not become one of the second layer of queued PRDs; and after the intermediate PRD is moved from the first queue into the second queue, the intermediate PRD becomes one of the second layer of queued PRDs.

### Claim 8 (depends on 2)

The method of claim 2, further comprising:
checking whether an amount of queued PRDs for accessing a same NV memory element within the plurality of NV memory elements within the second layer of queued PRDs reaches a predetermined amount threshold; and
when the amount of the queued PRDs for accessing the same NV memory element reaches the predetermined amount threshold, moving at least one queued PRD within the queued PRDs to a tail part of a sequence of the second layer of queued PRDs, to postpone at least one access operation of the at least one queued PRD.

### Claim 9 (depends on 2)

The method of claim 2, wherein the plurality of host commands are received from a host device external to the memory device; and the method further comprises:
triggering the host device to read the data, wherein after the host device reads the data, a set of PRD information corresponding to the intermediate PRD becomes invalid information.

### Claim 10 (depends on 1)

The method of claim 1, wherein the plurality of sets of PRD information are parameters related to the plurality of host commands; and any set of PRD information within the plurality of sets of PRD information comprises a command ID, a logical block address (LBA) of target data, a data-transfer amount, and a command type.

### Claim 11

A memory device, comprising:
a non-volatile (NV) memory, arranged to store information, wherein the NV memory comprises a plurality of NV memory elements; and
a controller, coupled to the NV memory, the controller arranged to control operations of the memory device, wherein the controller comprises:
a multi-queue type physical region descriptor (PRD) storage module, arranged to store at least one PRD, wherein the multi-queue type PRD storage module comprises:
a PRD information register;
a first queue; and
a second queue; and
a processing circuit, arranged to control the controller according to a plurality of host commands from a host device, to allow the host device to access the NV memory via the controller, wherein:
the controller stores a plurality of sets of PRD information related to the plurality of host commands into the PRD information register, respectively, and stores a plurality of intermediate PRDs respectively corresponding to the plurality of sets of PRD information into the first queue, wherein any of the plurality of intermediate PRDs comprises an identifier (ID) of a set in the plurality of sets of PRD information;
the controller obtains an intermediate PRD of the plurality of intermediate PRDs from the first queue, and stores the intermediate PRD into the second queue;
the controller sends a command to the NV memory according to the intermediate PRD in the second queue, to access data in at least one NV memory element of the plurality of NV memory elements; and
when an operation of accessing the data is successful, the controller releases the intermediate PRD from the second queue to the first queue.

### Claim 12 (depends on 11)

The memory device of claim 11, wherein a plurality of PRDs stored in the first queue represents a first layer of queued PRDs to be processed; and a plurality of PRDs stored in the second queue represents a second layer of queued PRDs being processed.

### Claim 13 (depends on 12)

The memory device of claim 12, wherein the controller utilizes a first pointer and a second pointer to indicate a head part and a tail part of a sequence of the first layer of queued PRDs, respectively.

### Claim 14 (depends on 12)

The memory device of claim 12, wherein before the intermediate PRD is moved from the first queue to the second queue, the intermediate PRD is one of the first layer of queued PRDs; and after the intermediate PRD is moved from the first queue to the second queue, the intermediate PRD is removed from the first layer of queued PRDs.

### Claim 15 (depends on 14)

The memory device of claim 14, wherein the controller utilizes a first pointer and a second pointer to indicate a head part and a tail part of a sequence of the first layer of queued PRDs, respectively, wherein before the intermediate PRD is moved from the first queue, the intermediate PRD is located at the tail part of the sequence; and when the intermediate PRD is moved from the first queue, the controller moves the second pointer to indicate a latest location of the tail part of the sequence.

### Claim 16

A controller of a memory device, the memory device comprising the controller and a non-volatile (NV) memory, the NV memory comprising a plurality of NV memory elements, the controller comprising:
a multi-queue type physical region descriptor (PRD) storage module, arranged to store at least one PRD, wherein the multi-queue type PRD storage module comprises:
a PRD information register;
a first queue; and
a second queue; and
a processing circuit, arranged to control the controller according to a plurality of host commands from a host device, to allow the host device to access the NV memory via the controller, wherein:
the controller stores a plurality of sets of PRD information related to the plurality of host commands into the PRD information register, respectively, and stores a plurality of intermediate PRDs respectively corresponding to the plurality of sets of PRD information into the first queue, wherein any of the plurality of intermediate PRDs comprises an identifier (ID) of a set in the plurality of sets of PRD information;
the controller obtains an intermediate PRD of the plurality of intermediate PRDs from the first queue, and stores the intermediate PRD into the second queue;
the controller sends a command to the NV memory according to the intermediate PRD in the second queue, to access data in at least one NV memory element of the plurality of NV memory elements; and
when an operation of accessing the data is successful, the controller releases the intermediate PRD from the second queue to the first queue.

### Claim 17 (depends on 16)

The controller of claim 16, wherein a plurality of PRDs stored in the first queue represents a first layer of queued PRDs to be processed; and a plurality of PRDs stored in the second queue represents a second layer of queued PRDs being processed.

### Claim 18 (depends on 17)

The controller of claim 17, wherein the controller utilizes a first pointer and a second pointer to indicate a head part and a tail part of a sequence of the first layer of queued PRDs, respectively.

### Claim 19 (depends on 17)

The controller of claim 17, wherein before the intermediate PRD is moved from the first queue to the second queue, the intermediate PRD is one of the first layer of queued PRDs; and after the intermediate PRD is moved from the first queue to the second queue, the intermediate PRD is removed from the first layer of queued PRDs.

### Claim 20 (depends on 19)

The controller of claim 19, wherein the controller utilizes a first pointer and a second pointer to indicate a head part and a tail part of a sequence of the first layer of queued PRDs, respectively, wherein before the intermediate PRD is moved from the first queue, the intermediate PRD is located at the tail part of the sequence; and when the intermediate PRD is moved from the first queue, the controller moves the second pointer to indicate a latest location of the tail part of the sequence.
