Claims
- 1. An apparatus comprising:
a memory bank configured to store data; and a memory controller configured to:
receive requests to read data stored within the memory bank, each request having a requested memory range and a priority according to when the request was received; and change the priority of a request when the request is directed towards a memory range that includes part of a memory range of another request.
- 2. The apparatus of claim 1, wherein the memory controller is further configured to:
receive requests to write data to the memory bank, the write requests having a requested memory range and data content; determine if a pending write request has a memory range which includes a memory range of a pending write request; and answer the pending read request with the data content of the pending write request when the pending write request has a memory range which includes the memory range of the pending read request.
- 3. The apparatus of claim 1, further comprising a free list manager, coupled to the memory controller, the free list manager storing a free list indicating ranges of memory in the memory bank that have not been allocated.
- 4. The apparatus of claim 1, wherein the free list indicates, for each of a plurality of data types, ranges of memory in the memory bank that have not been allocated and are configured to store the data type.
- 5. The apparatus of claim 1, wherein the memory stores a packet in a plurality of buffers.
- 6. A method of processing an instruction for data in a packet, the method comprising:
storing a plurality of encapsulation pointers, the encapsulation pointers associated with protocol layers and indicating offsets between a start point of the packet and start points of the protocol layers; and receiving an instruction, the instruction comprising a protocol layer and an offset relative to a start point of the protocol layer; adding the offset relative to the start point of the protocol layer to the encapsulation pointer associated with the protocol layer to determine an offset relative to the beginning of the packet.
- 7. The method of claim 6, wherein the instruction is a read instruction.
- 8. The method of claim 6, wherein the instruction is a write instruction.
- 9. The method of claim 6, further comprising:
maintaining a second set of encapsulation pointers, the second set of encapsulation pointers indicating offsets between a start point of the packet and start points of the protocol layers of a version of the packet that has been edited; wherein the instruction further comprises an indicator of whether the instruction is directed towards a version of the packet that has been edited.
- 10. The method of claim 6, further comprising:
maintaining a packet handle, the packet handle indicating a location in memory of the start point of the packet; and adding the offset relative to the beginning of the packet to the value of the location in memory of the start point of the packet to determine a location in memory for the instruction.
- 11. An apparatus for processing instructions for a packet, the apparatus comprising;
a packet context storing a plurality of encapsulation pointers, the encapsulation pointers associated with protocol layers and indicating offsets between a start point of the packet and start points of the protocol layers; and a packet processing controller configured to:
receive an instruction, the instruction comprising a protocol layer and an offset relative to a start point of the protocol layer; and add the offset relative to the start point of the protocol layer to the encapsulation pointer associated with the protocol layer to determine an offset relative to the beginning of the packet.
- 12. The apparatus of claim 11, wherein the instruction is a read instruction.
- 13. The apparatus of claim 11, wherein the instruction is a write instruction.
- 14. The apparatus of claim 11, wherein:
the packet context stores a packet handle, the packet handle indicating a location in memory of the start point of the packet; and the packet processing controller is configured to add the offset relative to the beginning of the packet to the value of the location in memory of the start point of the packet to determine a location in memory for the instruction.
- 15. An apparatus for processing packets, the apparatus comprising:
a memory storing a packet in a plurality of buffers; and a packet processing controller configured to:
store a packet handle for the packet, the packet handle indicating a location in the memory for a first buffer of the packet; receive an instruction for the packet, the instruction comprising an offset relative to the start point of the packet; determine whether a location in memory corresponding to the offset relative to the start point of the packet is stored in a first buffer of the packet; and add the offset relative to the start point of the packet to the value of the location in memory of the start point of the packet to determine a location in memory for the instruction when the location in memory corresponding to the offset relative to the beginning of the packet is stored in a first buffer of the packet.
- 16. The apparatus of claim 15, wherein the packet processing controller is further configured to:
determine a size of the first buffer; and determine that the location in memory corresponding to the offset relative to the start point of the packet is stored in a first buffer of the packet when the magnitude of the offset is smaller than the size of the first buffer.
- 17. The apparatus of claim 15, wherein the instruction is a read instruction.
- 18. The apparatus of claim 15, wherein the instruction is a write instruction.
CROSS REFERENCE TO RELATED APPLICATIONS
[0001] This application claims the benefit of U.S. Provisional Application No. 60/354,405, filed Feb. 4, 2002, which is hereby incorporated in its entirety by reference.
Provisional Applications (1)
|
Number |
Date |
Country |
|
60354405 |
Feb 2002 |
US |