IP Library › Granted Patent US 10,593,380
Granted Patent B1
US 10,593,380 · App. 15/840,717 · Granted Mar 17, 2020

Performance monitoring for storage-class memory

Inventors: Thomas A. Volpe (Austin, TX); Mark Anthony Banse (Austin, TX); Steven Scott Larson (Georgetown, TX); Douglas Lloyd Mainz (Cedar Park, TX)
Assignee: Amazon Technologies, Inc.
G11C7/22G06F11/3037G06F13/1668G06F17/18
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,593,380
App. No.
15/840,717
Granted
Mar 17, 2020
Kind
B1
Abstract

Disclosed herein are techniques for monitoring the performance of a storage-class memory (SCM). In some embodiments, a performance monitoring circuit at an interface between the SCM and a memory controller of the SCM receives transaction commands from the memory controller to the SCM, measures statistics associated with the transaction commands, and determines a utilization rate of the SCM based on the statistics. Based on the determined utilization rate of the SCM, future transaction requests can be optimized to improve the utilization rate of the SCM.

Claims (366)

1. A memory controller for a storage-class memory, the memory controller comprising:

a transaction order control circuit configured to:

receive transaction requests for reading from or writing to the storage-class memory; and

reorder the received transaction requests;

a command generation circuit configured to generate transaction commands to the storage-class memory for the reordered transaction requests; and

a performance monitoring circuit at an interface between the command generation circuit and the storage-class memory, wherein the performance monitoring circuit is configured to:

receive the transaction commands for the reordered transaction requests from the command generation circuit;

measure statistics associated with the transaction commands by measuring:

an active time period during which the statistics associated with the transaction commands are measured; and

a stall time period within the active period during which a corresponding transaction command for at least one transaction request received by the memory controller has not been sent to the storage-class memory and no transaction command is at the interface between the memory controller and the storage-class memory; and

determine a utilization rate of the storage-class memory based on the statistics.

2. The memory controller of claim 1 , wherein the transaction order control circuit is configured to reorder, based on the determined utilization rate of the storage-class memory, transaction requests received after the utilization rate is determined.

3. The memory controller of claim 1 , wherein the performance monitoring circuit comprises:

an active cycle counter configured to measure the active time period;

a stall cycle counter configured to measure the stall time period;

a read access counter configured to count a total number of read operations performed by the storage-class memory during the active time period; or

a write access counter configured to count a total number of write operations performed by the storage-class memory during the active time period.

4. The memory controller of claim 3 , wherein the utilization rate of the storage-class memory is determined by:

(the active time period−the stall time period)÷(the active time period)×100%;

(

the

⁢

⁢

total

⁢

⁢

number

⁢

⁢

of

⁢

⁢

read

⁢

⁢

operations

+

the

⁢

⁢

total

⁢

⁢

number

⁢

⁢

of

⁢

⁢

read

⁢

⁢

operations

)

×

T

command

active

⁢

⁢

time

⁢

⁢

period

×

100

⁢

%

;

⁢

or

(

the

⁢

⁢

total

⁢

⁢

number

⁢

⁢

of

⁢

⁢

read

⁢

⁢

operations

+

the

⁢

⁢

total

⁢

⁢

number

⁢

⁢

of

⁢

⁢

read

⁢

⁢

operations

)

×

T

command

(

the

⁢

⁢

total

⁢

⁢

number

⁢

⁢

of

⁢

⁢

read

⁢

⁢

operations

+

the

⁢

⁢

total

⁢

⁢

number

⁢

⁢

of

⁢

⁢

read

⁢

⁢

operations

)

×

T

command

+

the

⁢

⁢

stall

⁢

⁢

time

⁢

⁢

period

×

100

⁢

%

,

wherein T command is a time period of a transaction command.

5. A computer-implemented method, comprising:

receiving, at an interface between a memory controller and a storage-class memory (SCM), transaction commands from the memory controller to the storage-class memory, each of the transaction commands corresponding to an operation on the storage-class memory;

measuring statistics associated with the transaction commands by measuring:

an active time period during which the statistics associated with the transaction commands are measured; and

a stall time period within the active period during which a corresponding transaction command for at least one transaction request received by the memory controller has not been sent to the storage-class memory and no transaction command is at the interface between the memory controller and the storage-class memory; and

determining a utilization rate of the storage-class memory based on the statistics.

6. The computer-implemented method of claim 5 , wherein measuring the statistics associated with the transaction commands further comprises:

measuring a total number of read operations performed by the storage-class memory during the active time period; or

measuring a total number of write operations performed by the storage-class memory during the active time period.

7. The computer-implemented method of claim 5 , wherein measuring the stall time period comprises:

starting a clock counter at the beginning of the active time period;

counting, by the clock counter during the active time period, a number of clock cycles during which a transaction command for at least one transaction request received by the memory controller has not been sent to the storage-class memory but there is no transaction command at the interface between the memory controller and the storage-class memory;

stopping the clock counter at the end of the active time period;

saving a counter value of the clock counter; and

resetting the clock counter.

8. The computer-implemented method of claim 6 , wherein the utilization rate of the storage-class memory is determined by:

(the active time period−the stall time period)÷(the active time period)×100%;

(

the

⁢

⁢

total

⁢

⁢

number

⁢

⁢

of

⁢

⁢

read

⁢

⁢

operations

+

the

⁢

⁢

total

⁢

⁢

number

⁢

⁢

of

⁢

⁢

read

⁢

⁢

operations

)

×

T

command

active

⁢

⁢

time

⁢

⁢

period

×

100

⁢

%

;

⁢

or

(

the

⁢

⁢

total

⁢

⁢

number

⁢

⁢

of

⁢

⁢

read

⁢

⁢

operations

+

the

⁢

⁢

total

⁢

⁢

number

⁢

⁢

of

⁢

⁢

read

⁢

⁢

operations

)

×

T

command

(

the

⁢

⁢

total

⁢

⁢

number

⁢

⁢

of

⁢

⁢

read

⁢

⁢

operations

+

the

⁢

⁢

total

⁢

⁢

number

⁢

⁢

of

⁢

⁢

read

⁢

⁢

operations

)

×

T

command

+

the

⁢

⁢

stall

⁢

⁢

time

⁢

⁢

period

×

100

⁢

%

,

wherein T command is a time period of a transaction command.

9. The computer-implemented method of claim 5 , wherein measuring the statistics associated with the transaction commands comprises:

measuring the statistics associated with the transaction commands during a time period specified by a timer.

10. The computer-implemented method of claim 5 , further comprising:

enabling, using a register, a performance monitoring circuit for measuring the statistics.

11. The computer-implemented method of claim 5 , further comprising:

receiving, after determining the utilization rate, transaction requests for reading from or writing to the storage-class memory; and

reordering the received transaction requests based on the determined utilization rate of the storage-class memory.

12. The computer-implemented method of claim 11 , wherein reordering the received transaction requests comprises:

performing two read or write transactions on different cells of a bank of the storage-class memory; and

programming the bank of the storage-class memory to persist data written to the bank.

13. The computer-implemented method of claim 11 , wherein reordering the received transaction requests comprises:

programming a bank of the storage-class memory to persist data written to the bank; and

performing, before the programming of the bank of the storage-class memory completes, a read or write transaction on a different bank of the storage-class memory.

14. The computer-implemented method of claim 11 , wherein reordering the received transaction requests comprises:

performing two write transactions on different cells of a first bank of the storage-class memory;

performing two write transactions on different cells of a second bank of the storage-class memory;

programming the first bank of the storage-class memory to persist data written to the first bank; and

programming, before the programming of the first bank of the storage-class memory completes, the second bank of the storage-class memory to persist data written to the second bank.

15. The computer-implemented method of claim 5 , further comprising:

receiving, after determining the utilization rate, transaction requests for reading from or writing to the storage-class memory; and

mapping the received transaction requests to SCM banks or SCM channels based on the determined utilization rate of the storage-class memory.

16. The computer-implemented method of claim 5 , further comprising:

reading, by a software application, the measured statistics or the determined utilization rate of the storage-class memory; and

determining, by the software application, an order of transaction requests to be sent to the storage-class memory based on the measured statistics or the determined utilization rate of the storage-class memory.

17. A memory controller for a storage-class memory (SCM), the memory controller comprising:

a performance monitoring circuit at an interface between the memory controller and the storage-class memory, wherein the performance monitoring circuit is configured to:

receive transaction commands from the memory controller to the storage-class memory, each of the transaction commands corresponding to an operation on the storage-class memory;

measure statistics associated with the transaction commands by measuring:

an active time period during which the statistics associated with the transaction commands are measured; and

a stall time period within the active period during which a corresponding transaction command for at least one transaction request received by the memory controller has not been sent to the storage-class memory and no transaction command is at the interface between the memory controller and the storage-class memory; and

determine a utilization rate of the storage-class memory based on the statistics.

18. The memory controller of claim 17 , wherein the performance monitoring circuit comprises:

a counter configured to measure:

the active time period;

the stall time period;

a total number of read operations performed by the storage-class memory during the active time period; or

a total number of write operations performed by the storage-class memory during the active time period; and

a counter control circuit configured to enable or disable the counter.

19. The memory controller of claim 17 , wherein the memory controller is coupled to two individually programmable SCM banks of the storage-class memory.

20. The memory controller of claim 19 , wherein each bank of the two individually programmable SCM banks comprises two individually addressable SCM cells.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 13, 2017
From: VOLPE, THOMAS A.; BANSE, MARK ANTHONY; LARSON, STEVEN SCOTT; MAINZ, DOUGLAS LLOYD
To: AMAZON TECHNOLOGIES, INC.
Reel/Frame 044388/0729 →
Cited By (3)
US 12,216,906 US 12,229,451 US 12,572,480