Claims
- 1. A memory controller serving a plurality of clients for transferring data between a memory and said plurality of clients, each client of said plurality of clients transferring data for one or more contexts identified by a corresponding context code, said memory controller comprising:
a unified buffer adapted to store context identified write data and context identified read data organized by context; a write port adapted to receive context identified write data from said plurality of clients and store it in said unified buffer; a read port adapted to provide context identified read data to said plurality of clients from said unified buffer; a memory port adapted to transfer data between said memory and said unified buffer, wherein memory addresses of said data are related to the context of that data; control and status ports to coordinate the transfer of data between said memory controller and said plurality of clients; and control logic to allocate access to said memory port among said contexts of said plurality of clients.
- 2. The memory controller of claim 1 wherein said unified buffer is adapted to function as a plurality of circular double ported FIFO buffers.
- 3. The memory controller of claim 2 wherein each of said plurality of circular double ported FIFO buffers has an individually specified length.
- 4. The memory controller of claim 2 wherein said plurality of circular double ported FIFO buffers have a common length.
- 5. The memory controller of claim 1 wherein said memory addresses are generated by a unified address generator.
- 6. The memory controller of claim 1 wherein said write port receives said content identified write data in a time-division multiplexed manner and said read port provides said context identified read data in a time-division multiplexed manner.
- 7. The memory controller of claim 5 wherein said unified address generator incorporates initial context parameter registers adapted to receive initial context parameters from a host processor.
- 8. The memory controller of claim 7 wherein said unified address generator incorporates a first and a second counter and a look-aside store to store values of said counters based on a context-in-scope, said counters being loaded with a value supplied from said initial context parameters the first time a context becomes the context-in scope, said counters being subsequently loaded from said look-aside store when said context becomes the context-in-scope.
- 9. The memory controller of claim 8 wherein said initial context parameters include a base memory address.
- 10. The memory controller of claim 9 wherein said an output of said unified address generator is added to said base memory address.
- 11. The memory controller of claim 8 wherein said initial context parameters include a first count value and a second count value.
- 12. The memory controller of claim 8 wherein said initial context parameters include a pool size and a pool base address.
- 13. The memory controller of claim 8 wherein said initial context parameters include an address decrement indicator.
- 14. The memory controller of claim 8 wherein said output of said second counter is multiplied by a pitch parameter of said initial context parameters and said second counter is incremented each time said first counter reaches a terminal count.
- 15. A resource arbitration method for sharing a single resource among a plurality of buffers based on buffer-specific base thresholds, buffer-specific critical thresholds and a selection criterion, said method comprising:
for each buffer, testing whether said buffer has reached said buffer-specific base threshold; if said buffer has reached said buffer-specific base threshold, calculating a buffer-specific fullness parameter; selecting a buffer by comparing said plurality of buffer-specific fullness parameters to determine which buffer-specific fullness parameter matches said selection criterion; outputting a buffer identifier associated with said selected buffer as a resource requested indication; comparing said buffer-specific fullness parameter of said selected buffer against said buffer-specific critical threshold; and if said buffer-specific fullness parameter of said selected buffer is less than said buffer-specific critical threshold, generating a fault indication.
- 16. The method of claim 15 wherein said buffers are first-in-first-out buffers.
- 17. The method of claim 15 wherein said plurality of buffers are write buffers and said fullness parameter is the number of filled slots in each said buffer.
- 18. The method of claim 15 wherein said plurality of buffers are read buffers and said fullness parameter is the number of unfilled slots in each said buffer.
- 19. The method of claim 15 wherein said selection criteria is the maximum.
- 20. A unified address generator adapted to handle a plurality of contexts comprising:
a set of initial context parameter registers for each of said plurality of contexts; a unified address generation subsystem; a set of context working registers for each of said plurality of contexts, said context working registers operative to store a current state of a set of working registers by context each time a generated address changes; an input from a decision module that initiates a change from a prior context to a new context; and control logic operative in response to said input to store load the registers of said unified address generation subsystem from said context working registers of said new context.
- 21. The unified address generator of claim 20 wherein said context initial parameter registers are loaded by a processor interface.
- 22. The unified address generator of claim 20 wherein said context initial parameter registers contain values for a base address, an address increment value, a pool size, a pool base address, a first counter, a second counter and an line increment value.
- 23. The unified address generator of claim 20 further comprising an idle state, an armed state, and an operating state for each context of said plurality of contexts.
- 24. The unified address generator of claim 22 wherein a value derived from said pool size masks the high-order bits of each address generated and said pool base address value replaces said masked high-order bits of the generated address.
- 25. The unified address generator of claim 23 wherein said multiple contexts enter the armed state simultaneously.
- 26. A memory sequencer able to provide control signals to a memory wherein multiple contexts are associated with data transferring to memory, said memory sequencer comprising:
a control signal generator operative to cause a data from a source to be written to a memory and said memory to write data into a destination; a timing signal generator, operative to generate timing signals for controlling a memory transfer, said timing signals optimized for sequential accesses to memory; a state machine including a state suitable for changing context, said state provided to a memory address generator, said timing signal generator and said source of data; and an arbiter operative to recognize a requirement that a current memory transfer be interrupted and generate a signal to said state machine to change contexts.
REFERENCE TO RELATED APPLICATIONS
[0001] This patent application is a continuation in part of patent application Ser. No. 09/803,379 filed Mar. 9, 2001 and claims priority under 35 U.S.C. §120 to that application, which claims priority under 35 U.S.C. §119(e) to provisional patent application Ser. No. 60/188,377 filed Mar. 10, 2000. The disclosures of these applications are incorporated herein by reference.
Continuation in Parts (1)
|
Number |
Date |
Country |
Parent |
09803379 |
Mar 2001 |
US |
Child |
09874685 |
Jun 2001 |
US |