IP Library Granted Patent US 9,767,051
Granted Patent B2
US 9,767,051 · App. 14/679,527 · Granted Sep 19, 2017

Scalable, parameterizable, and script-generatable buffer manager architecture

Inventors: Michael Ou (Newark, CA); Jerry Wang (Hayward, CA); Meng Kun Lee (Cupertino, CA)
Assignee: Tidal Systems, Inc.
G06F13/1642G06F13/1605G06F13/1657G06F13/1673G06F13/4243Y02B60/1228Y02B60/1235
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,767,051
App. No.
14/679,527
Granted
Sep 19, 2017
Kind
B2
Abstract

A buffer manager is generated by executing a script with respect to a buffer architecture template and a configuration file specifying parameters for the buffer such as, for example, number of memory banks, width of memory banks, depth of memory banks, and client bridge FIFO depth. The script converts the buffer architecture template into a hardware description language (HDL) description of a buffer manager having the parameters. Client bridges accumulate requests for memory banks in FIFO that is provided to a buffer manager upon the client bridge being granted arbitration. Accesses of memory banks may be performed one at a time in consecutive clock cycles in a pipelined manner. Client bridges and the buffer manager may operate in different clock domains. The clock frequency of the buffer manager may be increased or decreased according to requests from client devices.

Claims (58)

1. A method for generating a buffer specification comprising:

receiving, by a computer system, a buffer template defining a buffer manager architecture;

receiving, by the computer system, a configuration file defining at least one of a number of memory banks, a memory bank width, a number of clients, and a client buffer depth;

executing, by the computer system, a script with respect to the buffer template and configuration file, the script outputting a hardware description language (HDL) file defining instructions for generating a buffer having the buffer manager architecture configured to have the at least one of the number of memory banks, the memory bank width, the number of clients, and the client buffer depth of the configuration file;

forming a slot in memory of the computer system, assigned to the configuration file, for storage of the buffer specification created by execution of the HDL file, the slot configured to include a variable number of micro-slots;

mapping, via a memory bank manager, an external slot address to a plurality of micro-slot addresses corresponding to a plurality of physical locations within the at least one of the number of memory banks; and

translating, via the memory bank manager, requests referencing the external slot address to the plurality of micro-slot addresses.

2. The method of claim 1 , wherein the buffer manager architecture includes HDL code defining:

the memory bank manager configured to receive requests and arbitrate and execute requests with respect to a plurality of memory banks; and

a client bridge definition, defining an input, an accumulation register configured to store requests from the input, and a client bridge state controller programmed to receive an arbitration assignment from the memory bank manager, and, in response to receiving the arbitration assignment, output requests stored in the accumulation register to the memory bank manager.

3. The method of claim 2 , wherein:

the configuration file includes the number of clients; and

executing the script with respect to the buffer template and configuration file comprises including in the HDL file instructions for generating a plurality of client bridges having the client bridge definition, the plurality of client bridges corresponding to the number of clients in the configuration file.

4. The method of claim 1 , wherein the method further comprises:

performing, via the memory bank manager, pipelined access of a plurality of memory banks for each request received from the client bridge whereby an address included in the request is accessed consecutively, from one memory bank of the plurality of memory banks per clock cycle until the address is accessed for each memory bank of the plurality of memory banks.

5. The method of claim 1 , wherein the method further comprises:

performing, via the memory bank manager, arbitration assignment among a plurality of client bridges according to a round robin algorithm.

6. The method of claim 1 , wherein the method further comprises:

initiating, via the memory bank manager, pipelined access of a plurality of memory banks once per clock cycle such that multiple pipelined accesses of the plurality of memory banks are performed simultaneously.

7. The method of claim 1 , wherein the method further comprises:

configuring the memory bank manager to belong to a first clock domain; and

configuring a plurality of client bridges to belong to one or more second clock domains different from the first clock domain.

8. The method of claim 1 , wherein the method further comprises:

including a clock rate manager configured to increase a frequency of a first clock domain in response to a first loading of the plurality of memory banks and decrease the frequency of the first clock domain in response to a second loading of the plurality of memory banks, the second loading being less than the first loading.

9. The method of claim 8 , wherein the clock rate manager includes:

a masking stage configured to output a bandwidth signal for each client bridge of the plurality of client bridges, the bandwidth signal for each client bridge of the plurality of client bridges that is currently processing requests being a bandwidth requirement for the each client bridge, the bandwidth signal for each client bridge of the plurality of client bridges that is not currently processing requests being zero; and

a block rate selection stage that selects the frequency of the first clock domain according to the bandwidth signals from the masking stage.

10. The method of claim 1 , wherein the configuration file defines all of the number of memory banks, the memory bank width, the number of clients, and the client buffer depth.

11. A buffer comprising:

a memory bank manager configured to receive requests from a plurality of clients and arbitrate and execute requests with respect to a plurality of memory banks;

a plurality of client bridges, each client bridge defining an input, an accumulation register configured to store requests from the input, and a client bridge state controller programmed to receive an arbitration assignment from the memory bank manager, and, in response to receiving the arbitration assignment, output requests stored in the accumulation register to the memory bank manager; and

wherein the memory bank manager is further configured to:

map an external slot address to a variable number of micro-slot addresses corresponding to physical locations within the plurality of memory banks; and

translate requests referencing an external slot address to a variable number of micro-slots corresponding to a plurality of physical locations in at least one of the plurality of memory banks.

12. The buffer of claim 11 , wherein the memory bank manager is further configured to:

for each request received from the client bridge, perform pipelined access of the plurality of memory banks whereby an address included in the request is accessed consecutively, from one memory bank of the plurality of memory banks per clock cycle until the address is accessed for each memory bank of the plurality of memory banks.

13. The buffer of claim 11 , wherein the memory bank manager is further configured to:

perform arbitration assignment among the plurality of client bridges according to a round robin algorithm.

14. The buffer of claim 11 , wherein the memory bank manager is further configured to:

initiate pipelined access of the plurality of memory banks once per clock cycle such that multiple pipelined accesses of the plurality of memory banks are performed simultaneously.

15. The buffer of claim 11 , wherein the memory bank manager is further configured to:

belong to a first clock domain; and

the plurality of client bridges are configured to belong to one or more second clock domains different from the first clock domain.

16. The buffer of claim 11 , wherein the memory bank manager includes:

a clock rate manager configured to increase a frequency of the first clock domain in response to a first loading of the plurality of memory banks and decrease the frequency of the first clock domain in response to a second loading of the plurality of memory banks, the second loading being less than the first loading.

17. The buffer of claim 16 , wherein the clock rate manager includes:

a masking stage configured to output a bandwidth signal for each client bridge of the plurality of client bridges, the bandwidth signal for each client bridge of the plurality of client bridges that is currently processing requests being a bandwidth requirement for the each client bridge, the bandwidth signal for each client bridge of the plurality of client bridges that is not currently processing requests being zero; and

a block rate selection stage that selects the frequency of the first clock domain according to the bandwidth signals from the masking stage.

18. A method for generating a buffer specification comprising:

receiving, by a computer system, a buffer template defining a buffer manager architecture;

receiving, by the computer system, a configuration file defining at least one of a plurality of memory banks, a memory bank width, a number of clients, and a client buffer depth;

executing, by the computer system, a script with respect to the buffer template and configuration file, the script outputting a hardware description language (HDL) file defining instructions for generating a buffer having the buffer manager architecture configured to have the at least one of the plurality of memory banks, the memory bank width, the number of clients, and the client buffer depth of the configuration file; and

including a clock rate manager configured to increase a frequency of a first clock domain in response to a first loading of the plurality of memory banks and decrease the frequency of the first clock domain in response to a second loading of the plurality of memory banks, the second loading being less than the first loading.

19. A buffer comprising:

a memory bank manager configured to receive requests from a plurality of clients and arbitrate and execute requests with respect to a plurality of memory banks; and

a plurality of client bridges, each client bridge defining an input, an accumulation register configured to store requests from the input, and a client bridge state controller programmed to receive an arbitration assignment from the memory bank manager, and, in response to receiving the arbitration assignment, output requests stored in the accumulation register to the memory bank manager; and

wherein the memory bank manager includes:

a clock rate manager configured to increase a frequency of the first clock domain in response to a first loading of the plurality of memory banks and decrease the frequency of the first clock domain in response to a second loading of the plurality of memory banks, the second loading being less than the first loading.

Assignments (9)
RELEASE OF SECURITY INTEREST Recorded Nov 12, 2019
From: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
To: MICRON TECHNOLOGY, INC.; MICRON SEMICONDUCTOR PRODUCTS, INC.
Reel/Frame 051028/0001 →
RELEASE OF SECURITY INTEREST Recorded Oct 9, 2019
From: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
To: MICRON TECHNOLOGY, INC.
Reel/Frame 050937/0001 →
RELEASE OF SECURITY INTEREST Recorded Aug 23, 2018
From: U.S. BANK NATIONAL ASSOCIATION, AS COLLATERAL AGENT
To: MICRON TECHNOLOGY, INC.
Reel/Frame 047243/0001 →
SECURITY INTEREST Recorded Jul 13, 2018
From: MICRON TECHNOLOGY, INC.; MICRON SEMICONDUCTOR PRODUCTS, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 047540/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REPLACE ERRONEOUSLY FILED PATENT #7358718 WITH THE CORRECT PATENT #7358178 PREVIOUSLY RECORDED ON REEL 038669 FRAME 0001. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY INTEREST. Recorded Jun 8, 2017
From: MICRON TECHNOLOGY, INC.
To: U.S. BANK NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 043079/0001 →
PATENT SECURITY AGREEMENT Recorded Jun 2, 2016
From: MICRON TECHNOLOGY, INC.
To: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
Reel/Frame 038954/0001 →
SECURITY INTEREST Recorded May 12, 2016
From: MICRON TECHNOLOGY, INC.
To: U.S. BANK NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 038669/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE ASSIGNEE NAME PREVIOUSLY RECORDED AT REEL: 035341 FRAME: 0076. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Aug 27, 2015
From: OU, MICHAEL; WANG, JERRY; LEE, MENG KUN
To: TIDAL SYSTEMS, INC.
Reel/Frame 036501/0917 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 6, 2015
From: OU, MICHAEL; WANG, JERRY; LEE, MENG KUN
To: TIDAL SYSTEMS
Reel/Frame 035341/0076 →
Continuity (2)
Provisional Application 61975483 · Apr 4, 2014
Related Publication 20150286590A1 · Oct 8, 2015