Method and apparatus for maximizing memory throughput
First Claim
1. A method comprising:
- mapping together in a predetermined order a number of memory accesses including memory reads and memory writes of multiple cell operations within a network switch so as to implement a desired sequence of the cell operations, which sequence accounts for data dependencies among the cell operations, the memory accesses being associated with cell move, cell arrival and cell departure operations, each having one or more memory get and/or put operations associated therewith; and
performing said desired sequence of the cell operations.
2 Assignments
0 Petitions
Accused Products
Abstract
A method of executing a sequence of multiple dependent operations, each operation including a memory read and a memory write involves overlapping memory accesses of the operations by grouping together memory reads and memory writes of multiple operations and preserving a desired sequence of the operations using a circuit external to a memory through which the memory accesses are performed. The operations may be updates to one or more linked lists. In one embodiment, the step of overlapping memory accesses may be performed by grouping together memory accesses according to ATM cell arrivals or departures. In this embodiment, the operations are associated with ATM cell arrivals or departures and may be gets or puts. Each get and put operation may be characterized by a number of atomic memory operations to update one or more linked lists. To perform the operations a circuit a having an address processor, a data processor coupled to the address processor and to the external memory, and a prefetch buffer coupled to the external memory, the address processor and to the data processor is provided. The address processor generates memory addresses for the operations according to the step of overlapping memory accesses. The atomic memory operations are grouped so that all of the memory read operations associated with the dependent operations are performed before all of the memory write operations associated with the dependent operations are performed.
-
Citations
32 Claims
-
1. A method comprising:
-
mapping together in a predetermined order a number of memory accesses including memory reads and memory writes of multiple cell operations within a network switch so as to implement a desired sequence of the cell operations, which sequence accounts for data dependencies among the cell operations, the memory accesses being associated with cell move, cell arrival and cell departure operations, each having one or more memory get and/or put operations associated therewith; and
performing said desired sequence of the cell operations. - View Dependent Claims (2, 3, 4)
-
-
5. A method comprising:
-
performing one or more update operations on a plurality of linked list pointers to produce a set of updated linked list pointers, the update operations being performed in response to update requests and comprising a series of dequeuing operations followed by a series of enqueuing operations, all of the dequeuing operations being performed prior to any of the enqueuing operations being performed; and
storing said updated linked list pointers in a memory. - View Dependent Claims (6, 7)
reading a plurality of head pointers, tail pointers and intermediate pointers from the memory;
storing the plurality of head pointers, tail pointers and intermediate pointers in a cache circuit; and
updating the plurality of head pointers, tail pointers and intermediate pointers to reflect the results of the cell operations specified by the update requests.
-
-
8. A digital switch, comprising:
-
a memory;
one or more linked lists of pointers stored in the memory, the pointers corresponding to memory locations of associated data; and
a caching circuit coupled to the memory and configured to (a) receive one or more of the linked lists of pointers in response to a linked list update request, the linked list update request indicating an operation involving the data, (b) to generate updated linked lists of pointers according to the update request, and (c) to generate the updated linked lists of pointers by performing out-of-order update operations wherein all dequeuing operations are performed before any enqueuing operations are performed. - View Dependent Claims (9, 10, 11)
a buffer adapted to receive the linked lists of pointers from the memory;
an address processor coupled to the buffer and adapted to receive the update request, the address processor configured to generate read and write addresses for accessing the memory according to the update request; and
a data processor coupled to the buffer and configured to perform the out-of-order update operations according to the update request.
-
-
11. A digital switch as in claim 10 wherein the data processor stores intermediate results of the update operations in the buffer.
-
12. A digital switch comprising:
-
means for mapping together in a predetermined order a number of memory accesses including memory reads and memory writes of multiple cell operations so as to implement a desired sequence of the cell operations, which sequence accounts for data dependencies among the cell operations, the memory accesses being associated with cell move, cell arrival and cell departure operations, each having one or more memory get and/or put operations associated therewith; and
means for performing said desired sequence of the cell operations. - View Dependent Claims (13, 14, 15)
-
-
16. A digital switch comprising:
-
means for performing one or more update operations on a plurality of linked list pointers to produce a set of updated linked list pointers, the update operations being performed in response to update requests and comprising a series of dequeuing operations followed by a series of enqueuing operations, all of the dequeuing operations being performed prior to any of the enqueuing operations being performed; and
means for storing said updated linked list pointers in a memory. - View Dependent Claims (17, 18)
means for reading a plurality of head pointers, tail pointers and intermediate pointers from the memory;
means for storing the plurality of head pointers, tail pointers and intermediate pointers in a cache circuit; and
means for updating the plurality of head pointers, tail pointers and intermediate pointers to reflect the results of the cell operations specified by the update requests.
-
-
19. A computer readable medium containing executable instructions which, when executed in a processing system, cause the system to perform a method comprising:
-
mapping together in a predetermined order a number of memory accesses including memory reads and memory writes of multiple cell operations within a network switch so as to implement a desired sequence of the cell operations, which sequence accounts for data dependencies among the cell operations, the memory accesses being associated with cell move, cell arrival and cell departure operations, each having one or more memory get and/or put operations associated therewith; and
performing said desired sequence of the cell operations. - View Dependent Claims (20, 21, 22)
-
-
23. A computer readable medium containing executable instructions which, when executed in a processing system, cause the system to perform a method comprising:
-
performing one or more update operations on a plurality of linked list pointers to produce a set of updated linked list pointers, the update operations being performed in response to update requests and comprising a series of dequeuing operations followed by a series of enqueuing operations, all of the dequeuing operations being performed prior to any of the enqueuing operations being performed; and
storing said updated linked list pointers in a memory. - View Dependent Claims (24, 25)
reading a plurality of head pointers, tail pointers and intermediate pointers from the memory;
storing the plurality of head pointers, tail pointers and intermediate pointers in a cache circuit; and
updating the plurality of head pointers, tail pointers and intermediate pointers to reflect the results of the cell operations specified by the update requests.
-
-
26. A digital switch comprising:
-
a memory; and
a processor coupled to the memory and configured to map together in a predetermined order a number of memory accesses including memory reads and memory writes of multiple cell operations so as to implement a desired sequence of the cell operations, which sequence accounts for data dependencies among the cell operations, the memory accesses being associated with cell move, cell arrival and cell departure operations, each having one or more memory get and/or put operations associated therewith, and to perform said desired sequence of the cell operations. - View Dependent Claims (27, 28, 29)
-
-
30. A digital switch comprising:
-
a memory; and
a processor coupled to the memory and configured to perform one or more update operations on a plurality of linked list pointers to produce a set of updated linked list pointers, the update operations being performed in response to update requests and comprising a series of dequeuing operations followed by a series of enqueuing operations, all of the dequeuing operations being performed prior to any of the enqueuing operations being performed, and to store said updated linked list pointers in a memory. - View Dependent Claims (31, 32)
read a plurality of head pointers, tail pointers and intermediate pointers from the memory;
store the plurality of head pointers, tail pointers and intermediate pointers in a cache circuit; and
update the plurality of head pointers, tail pointers and intermediate pointers to reflect the results of the cell operations specified by the update requests.
-
Specification