# US 11,029,859 B2 · Credit based command scheduling

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

- Number: US 11,029,859 B2
- Document ID: US11029859B2
- Status: Granted
- Kind: B2
- Application number: 15/684,076
- Filed: 2017-08-23
- Published: 2019-02-28
- Granted: 2021-06-08
- Earliest claimed: 2017-08-23
- Assignees: Toshiba Memory Corporation
- Applicants: Toshiba Memory Corporation
- Inventors: Julien Margetts; Hyoun Kwon Jeong; Jonghyeon Kim
- Web page: https://patentgrep.com/patent/US11029859B2

## CPC

- G06F 3/0625: {Power saving in storage systems}
- G06F 1/3225: of memory devices
- G06F 1/3275: {Power saving in memory, e.g. RAM, cache}
- G06F 1/329: by task scheduling
- G06F 3/0659: {Command handling arrangements, e.g. command buffers, queues, command scheduling}
- G06F 3/0688: {Non-volatile semiconductor memory arrays}
- G06F 13/1668: {Details of memory controller}
- G06F 13/20: for access to input/output bus
- G06F 13/4068: {Electrical coupling}
- 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 memory system includes a memory controller having a bank command scheduler implemented in a hardware logic block and a power budget controller including a power budget register and a credit register. The hardware logic block is able to determine a command in a queue to be transmitted to a memory bank over a channel, estimate a power consumption value for the command, and query the power budget controller to determine if the power consumption value is within a threshold. If the power consumption value is within the threshold, the hardware logic block receives a grant response from the power budget controller, adds the power consumption value to the credit register value, transmits the command over the channel, and transmits a signal to the power budget controller indicating that the command has been executed and that the power consumption value should be subtracted from the credit register value.

## Claims

### Claim 1

A memory system comprising:
a memory controller having:
a bank command scheduler implemented in a hardware logic block, and
a power budget controller including a budget register and a credit register;
a memory bank having an I/O bus; and
a channel connecting the I/O bus to the memory controller, the channel configured to transmit data between the memory bank and the memory controller and to transmit a command from the memory controller to the memory bank,
wherein the hardware logic block is configured to:
determine a first command in a queue to be transmitted to the memory bank;
estimate a first power consumption value for the first command;
query the power budget controller to determine if the first power consumption value satisfies a threshold;
if the first power consumption value satisfies the threshold:
transmit the first command to the memory bank over the channel; and
transmit a signal to the power budget controller indicating that the first command has been executed; and
if the first power consumption value does not satisfy the threshold:
begin a timer associated with an idle time of the first command;
determine a second command in the queue to be transmitted to the memory bank prior to the first command; and
when the timed idle time of the first command exceeds an idle time threshold, assign a priority status to the first command, the priority status stopping granting permission to other commands to be transmitted until the first power consumption value satisfies the threshold.

### Claim 2 (depends on 1)

The memory system of claim 1, wherein by querying the power budget controller to determine if the first power consumption value satisfies a threshold comprises comparing the first power consumption value to a difference between the credit register and the budget register.

### Claim 3 (depends on 1)

The memory system of claim 1, wherein if the first power consumption value does not satisfy the threshold, the hardware logic block is configured to:
estimate a second power consumption value for the second command;
query the power budget controller to determine if the second power consumption value satisfies the threshold; and
if the second power consumption value satisfies the threshold:
transmit the second command to the memory bank over the channel prior to the first command.

### Claim 4 (depends on 1)

The memory system of claim 1, wherein if the first power consumption value does not satisfy the threshold, the hardware logic block is configured to wait until the first power consumption value satisfies the threshold.

### Claim 5 (depends on 1)

The memory system of claim 1, wherein the first command comprises a first phase and a second phase, and wherein the hardware logic block is configured to:
estimate a third power consumption value for the first phase;
query the power budget controller to determine if the third power consumption value for the first phase satisfies the threshold; and
transmit the first phase to the memory bank over the channel.

### Claim 6 (depends on 5)

The memory system of claim 5, wherein the first command is a read command, the first phase is a cell sensing phase, and the second phase is an I/O switching phase.

### Claim 7 (depends on 5)

The memory system of claim 5, wherein the first command is a program command, the first phase is an I/O switching phase, and the second phase is a cell program phase.

### Claim 8 (depends on 1)

The memory system of claim 1, wherein the hardware logic block is configured to estimate a first power consumption value for the first command by accessing a register of estimated power consumption values for a given command.

### Claim 9 (depends on 1)

The memory system of claim 1, wherein the hardware logic block is further configured to:
monitor an actual power over an I/O power rail and a cell power rail; and
transmit, to the power budget controller, a measured actual power over the I/O power rail and the cell power rail.

### Claim 10 (depends on 1)

The memory system of claim 1, wherein the power budget controller is configured to:
receive, from the hardware logic block, a first power consumption value;
compare the first power consumption value to a difference between the values stored in the power budget register and the credit register;
add the first power consumption value to the credit register;
transmit a grant response if the first power consumption value is less than the difference;
receive a status from the hardware logic block indicating that the first command has been executed; and
remove the first power consumption value from the credit register.

### Claim 11 (depends on 10)

The memory system of claim 10, wherein the power budget controller is further configured to determine if there is a priority command before adding the first power consumption value to the credit register and transmitting the grant response.

### Claim 12 (depends on 10)

The memory system of claim 10, wherein the power budget controller is further configured to
determine if a first phase of the first command can be transmitted in parallel with a previously transmitted command and have a combined power consumption value that satisfies a threshold; and
provide timing instructions to the hardware logic block for interleaving a first phase of the first command with the preceding command being executed.

### Claim 13 (depends on 1)

The memory system of claim 1, wherein the priority status further establishes execution of the first command after execution of a currently pending command.

### Claim 14

A method of transmitting commands based on a power consumption budget, the method comprising:
selecting, by a hardware logic block, a first command to send to a NAND bank over a channel;
selecting a first phase of the first command;
estimating a first power consumption value of the first phase;
comparing, at a power budget controller, the estimated first power consumption value to a difference between a value of a present power credit register and a value of a power budget register;
if the estimated first power consumption value is less than the difference:
adding the estimated first power consumption value to the value of the present power credit register;
transmitting the first phase of the first command to the NAND bank over the channel;
subtracting, after the first phase of the first command has executed, the estimated first power consumption value from the value of the present power credit register; and
if the estimated first power consumption value is more than, or equal to, the difference:
beginning a timer associated with an idle time of the first phase of the first command;
selecting a second command to send to the NAND bank over the channel prior to the first command; and
when the timed idle time exceeds an idle time threshold, assigning a priority status to the first phase of the first command, the priority status stopping granting permission to other commands to be transmitted until the first power consumption value is less than the difference.

### Claim 15 (depends on 14)

The method of claim 14, the method further comprising:
selecting a second phase of the first command;
estimating a second power consumption value of the second phase;
comparing, at a power budget controller, the estimated second power consumption value to a difference between a current value of the power credit register and the value of the power budget register;
if the estimated second power consumption value is less than the difference:
adding the estimated second power consumption value to the current value of the power credit register;
transmitting the second phase of the first command to the NAND bank over the channel; and
subtracting, after the second phase of the first command has executed, the estimated second power consumption value from the current value of the power credit register.

### Claim 16 (depends on 14)

The method of claim 14, the method further comprising:
selecting a second phase of the first command;
estimating a second power consumption value of the second phase;
comparing, at a power budget controller, the estimated second power consumption value to a difference between a current value of the power credit register and the value of the power budget register;
if the estimated second power consumption value is greater than the difference:
beginning a wait counter for the second phase of the first command; and
labeling the second phase of the first command as a priority command.

### Claim 17 (depends on 16)

The method of claim 16, the method further comprising:
waiting until the estimated second power consumption value is greater than a newly compared difference between the values stored in the power credit register and the power budget register; and
adding the estimated second power consumption value to the present power credit register;
transmitting the second phase of the first command to the NAND bank over the channel; and
subtracting, after the second phase of the first command has executed, the estimated second power consumption value from the value stored in the power credit register.

### Claim 18 (depends on 14)

The method of claim 14, wherein estimating a first power consumption value of the first phase comprises determining an estimated power consumption of an I/O switching command.

### Claim 19 (depends on 14)

The method of claim 14, wherein estimating a first power consumption value of the first phase comprises determining an estimated power consumption of a cell sensing command.

### Claim 20 (depends on 14)

The method of claim 14, the method further comprising:
determining that the second command does not have more than one phase;
estimating a third power consumption value of the second command;
comparing, at a power budget controller, the estimated third power consumption value to a difference between the current value of the power credit register including the added first power consumption value and the value of the power budget register; and
transmitting the second command to the NAND bank over the channel.

### Claim 21 (depends on 14)

The method of claim 14, wherein the priority status further establishes execution of the first phase of the first command after execution of currently pending command.
