IP Library › Granted Patent US 9,274,985
Granted Patent B2
US 9,274,985 · App. 13/517,534 · Granted Mar 1, 2016

Approach for allocating virtual bank managers within a dynamic random access memory (DRAM) controller to physical banks within a DRAM

Inventors: Shu-Yi Yu (Sunnyvale, CA); Ram Gummadi (San Jose, CA); John H. Edmondson (Arlington, MA)
Assignee: NVIDIA Corporation
G06F13/1668G06F12/0653G06F9/5077G06F12/10G06F12/109G06F2212/1028Y02B60/1225
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 9,274,985
App. No.
13/517,534
Granted
Mar 1, 2016
Kind
B2
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 (104)

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.

2. 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.

3. 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.

4. 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.

5. 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.

6. 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.

7. The method of claim 6 , 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.

8. The method of claim 6 , 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.

9. A subsystem for allocating virtual bank managers within a dynamic random access memory (DRAM) controller, comprising:

a DRAM controller 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 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.

10. The subsystem of claim 9 , wherein the DRAM controller 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.

11. The subsystem of claim 9 , wherein the DRAM controller 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.

12. The subsystem of claim 11 , wherein the DRAM controller 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.

13. The subsystem of claim 9 , wherein the DRAM controller 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.

14. The subsystem of claim 9 , wherein the DRAM controller 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.

15. The subsystem of claim 14 , wherein the DRAM controller 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.

16. The subsystem of claim 14 , wherein the DRAM controller 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.

17. A computing device, comprising:

a subsystem for allocating virtual bank managers within a dynamic random access memory (DRAM) controller, comprising a DRAM controller 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 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.

18. The computing device of claim 17 , wherein the DRAM controller 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.

19. The computing device of claim 18 , wherein the DRAM controller 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.

20. The computing device of claim 18 , wherein the DRAM controller 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.

21. 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.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 13, 2012
From: YU, SHU-YI; GUMMADI, RAM; EDMONDSON, JOHN
To: NVIDIA CORPORATION
Reel/Frame 028371/0385 →
Continuity (1)
Related Publication 20130339592A1 · Dec 19, 2013