# US 9,436,625 B2 · Approach for allocating virtual bank managers within a dynamic random access memory (DRAM) controller to physical banks within a DRAM

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

- Number: US 9,436,625 B2
- Document ID: US9436625B2
- Status: Granted
- Kind: B2
- Application number: 13/517,534
- Filed: 2012-06-13
- Published: 2013-12-19
- Granted: 2016-09-06
- Earliest claimed: 2012-06-13
- Assignees: NVIDIA Corporation
- Applicants: Shu-Yi Yu; Ram Gummadi; John H. Edmondson
- Inventors: Shu-Yi Yu; Ram Gummadi; John H. Edmondson
- Web page: https://patentgrep.com/patent/US9436625B2

## CPC

- G06F 13/1668: {Details of memory controller}
- G06F 12/0653: {with centralised address assignment}
- G06F 9/5077: {Logical partitioning of resources; Management or configuration of virtualized resources (specific details on emulation or internal functioning of virtual machines G06F9/455)}
- G06F 12/10: Address translation
- G06F 2212/1028: Power efficiency
- 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

Banks within a dynamic random access memory (DRAM) are managed with virtual bank managers. A DRAM controller receives a new memory access request to DRAM including a plurality of banks. If the request accesses a location in DRAM where no virtual bank manager includes parameters for the corresponding DRAM page, then a virtual bank manager is allocated to the physical bank associated with the DRAM page. The bank manager is initialized to include parameters needed by the DRAM controller to access the DRAM page. The memory access request is then processed using the parameters associated with the virtual bank manager. One advantage of the disclosed technique is that the banks of a DRAM module are controlled with fewer bank managers than in previous DRAM controller designs. As a result, less surface area on the DRAM controller circuit is dedicated to bank managers.

## Claims

### Claim 1

A computer-implemented method for allocating virtual bank managers within a dynamic random access memory (DRAM) controller, the method comprising:
receiving a first memory access request directed to a DRAM comprising a plurality of physical banks;
identifying a first physical bank within the plurality of physical banks that is associated with the first memory access request;
determining whether a first virtual bank manager included in a plurality of virtual bank managers that reside within the DRAM controller is available for allocation to the first physical bank;
if the first virtual bank manager is available, then:
allocating the first virtual bank manager to the first physical bank; and
associating the first virtual bank manager with the first memory access request; or
if the first virtual bank manager is not available, then:
waiting until the first virtual bank manager is available for allocation;
allocating the first virtual bank manager to the first physical bank; and
associating the first virtual bank manager with the first memory access request.

### Claim 2 (depends on 1)

The method of claim 1, further comprising:
retrieving one or more parameters from the first virtual bank manager; and
completing at least one phase of the first memory access request based on the one or more parameters.

### Claim 3 (depends on 1)

The method of claim 1, further comprising:
determining that the first memory access request has reached a final phase of execution; and
releasing the first virtual bank manager such that the first virtual bank manager is available for allocation to a second memory access request.

### Claim 4 (depends on 3)

The method of claim 3, further comprising:
receiving a second memory access request directed to the first physical bank; and
associating the first virtual bank manager with the second memory access request.

### Claim 5 (depends on 1)

The method of claim 1, further comprising initializing the first virtual bank manager with one or more timing parameters associated with the first physical bank.

### Claim 6 (depends on 5)

The method of claim 5, wherein the one or more timing parameters include at least one of a row active time and a pre-charge time.

### Claim 7 (depends on 1)

The method of claim 1, further comprising initializing the first virtual bank manager with one or more timing parameters associated with a first memory page associated with the first physical bank.

### Claim 8 (depends on 7)

The method of claim 7, further comprising:
receiving a second memory access request directed to the first memory page associated with the first physical bank; and
associating the first virtual bank manager with the second memory access request.

### Claim 9 (depends on 7)

The method of claim 7, further comprising:
receiving a second memory access request directed to a second memory page associated with the first physical bank;
determining whether a second virtual bank manager included in the plurality of virtual bank managers is available for allocation to the first physical bank;
if the second virtual bank manager is available, then:
allocating the second virtual bank manager to the first physical bank;
initializing the second virtual bank manager with one or more timing parameters associated with the second memory page associated with the first physical bank; and
associating the second virtual bank manager with the second memory access request; or
if the second virtual bank manager is not available, then:
waiting until the second virtual bank manager is available for allocation;
allocating the second virtual bank manager to the first physical bank;
initializing the second virtual bank manager with one or more timing parameters associated with the second memory page associated with the first physical bank; and
associating the second virtual bank manager with the second memory access request.

### Claim 10

A dynamic random access memory (DRAM) controller, comprising:
an arbitration unit;
a plurality of virtual bank managers coupled to the arbitration unit; and
a virtual bank allocation unit that is coupled to the arbitration unit and configured to perform the steps of:
receiving a first memory access request directed to a DRAM comprising a plurality of physical banks;
identifying a first physical bank within the plurality of physical banks that is associated with the first memory access request;
determining whether a first virtual bank manager included in the plurality of virtual bank managers is available for allocation to the first physical bank;
if the first virtual bank manager is available, then:
allocating the first virtual bank manager to the first physical bank; and
associating the first virtual bank manager with the first memory access request; or
if the first virtual bank manager is not available, then:
waiting until the first virtual bank manager is available for allocation;
allocating the first virtual bank manager to the first physical bank; and
associating the first virtual bank manager with the first memory access request.

### Claim 11 (depends on 10)

The DRAM controller of claim 10, wherein the virtual bank allocation unit is further configured to perform the steps of:
retrieving one or more parameters from the first virtual bank manager; and
completing at least one phase of the first memory access request based on the one or more parameters.

### Claim 12 (depends on 10)

The DRAM controller of claim 10, wherein the virtual bank allocation unit is further configured to perform the steps of:
determining that the first memory access request has reached a final phase of execution; and
releasing the first virtual bank manager such that the first virtual bank manager is available for allocation to a second memory access request.

### Claim 13 (depends on 10)

The DRAM controller of claim 10, wherein the virtual bank allocation unit is further configured to perform the steps of:
receiving a second memory access request directed to the first physical bank; and
associating the first virtual bank manager with the second memory access request.

### Claim 14 (depends on 10)

The DRAM controller of claim 10, wherein the virtual bank allocation unit is further configured to perform the step of initializing the first virtual bank manager with one or more timing parameters associated with the first physical bank.

### Claim 15 (depends on 10)

The DRAM controller of claim 10, wherein the virtual bank allocation unit is further configured to perform the step of initializing the first virtual bank manager with one or more timing parameters associated with a first memory page associated with the first physical bank.

### Claim 16 (depends on 10)

The DRAM controller of claim 10, wherein the virtual bank allocation unit is further configured to perform the steps of:
receiving a second memory access request directed to the first memory page associated with the first physical bank; and
associating the first virtual bank manager with the second memory access request.

### Claim 17 (depends on 9)

The DRAM controller of claim 9, wherein the virtual bank allocation unit is further configured to perform the steps of:
receiving a second memory access request directed to a second memory page associated with the first physical bank;
determining whether a second virtual bank manager included in the plurality of virtual bank managers is available for allocation to the first physical bank;
if the second virtual bank manager is available, then:
allocating the second virtual bank manager to the first physical bank;
initializing the second virtual bank manager with one or more timing parameters associated with the second memory page associated with the first physical bank; and
associating the second virtual bank manager with the second memory access request; or
if the second virtual bank manager is not available, then:
waiting until the second virtual bank manager is available for allocation;
allocating the second virtual bank manager to the first physical bank;
initializing the second virtual bank manager with one or more timing parameters associated with the second memory page associated with the first physical bank; and
associating the second virtual bank manager with the second memory access request.

### Claim 18

A parallel processor, comprising:
a processing array; and
at least one partition unit coupled to the processing array and including a memory controller, the memory controller having:
an arbitration unit,
a plurality of virtual bank managers coupled to the arbitration unit, and
a virtual bank allocation unit is coupled to the arbitration unit and configured to perform the steps of:
receiving a first memory access request directed to a dynamic random access memory (DRAM) comprising a plurality of physical banks;
identifying a first physical bank within the plurality of physical banks that is associated with the first memory access request;
determining that a first virtual bank manager included in the plurality of virtual bank managers is available for allocation to the first physical bank;
allocating the first virtual bank manager to the first physical bank; and
associating the first virtual bank manager with the first memory access request.

### Claim 19 (depends on 18)

The parallel processor of claim 18, wherein the virtual bank allocation unit is further configured to perform the step of initializing the first virtual bank manager with one or more timing parameters associated with a first memory page associated with the first physical bank.

### Claim 20 (depends on 18)

The parallel processor of claim 18, wherein the virtual bank allocation unit is further configured to perform the steps of:
receiving a second memory access request directed to the first memory page associated with the first physical bank; and
associating the first virtual bank manager with the second memory access request.

### Claim 21 (depends on 18)

The parallel processor of claim 18, wherein the virtual bank allocation unit is further configured to perform the steps of:
receiving a second memory access request directed to a second memory page associated with the first physical bank;
determining that a second virtual bank manager included in the plurality of virtual bank managers is available for allocation to the first physical bank;
allocating the second virtual bank manager to the first physical bank; and
associating the second virtual bank manager with the second memory access request.

### Claim 22 (depends on 21)

The parallel processor of claim 21, wherein the virtual bank allocation unit is further configured to perform the step of initializing the second virtual bank manager with one or more timing parameters associated with the second memory page associated with the first physical bank.
