IP Library Granted Patent US 7,487,304
Granted Patent B1
US 7,487,304 · App. 11/930,203 · Granted Feb 3, 2009

Packet processor memory interface with active packet list

Assignee: Teplin Application Limited
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 7,487,304
App. No.
11/930,203
Granted
Feb 3, 2009
Kind
B1
Abstract

A mechanism receives start and done commands containing packet identifiers or sequence numbers from a packet processing engine for packets for which processing is being started and for which processing has completed respectively. Upon receiving a packet start command, an entry in an active packet list is created. Upon receiving a packet done command, the active packet list is updated. The oldest done packet in the active list is retired by flushing buffered write information to a memory system. The active packet list can be used in conjunction with a system supporting speculative reads and conflict detection. In some embodiments the packet start command is inferred from a read command containing a packet identifier or sequence number.

Claims (41)

1. An apparatus coupled to a packet processing engine and a memory subsystem comprising:

a storage element storing a plurality of packet identifiers and packet status information;

circuitry for adding a packet identifier and packet status information to said storage element upon receipt of a packet start command;

circuitry for updating said packet status information upon receiving a packet done command; and

circuitry for retiring a packet wherein a flush command containing a packet identifier is sent to a write buffer.

2. The apparatus of claim 1 wherein said packet identifiers are packet sequence numbers indicating the order of arrival of packets at said packet processing engine.

3. The apparatus of claim 1 wherein the oldest packet for which packet processing has finished is retired.

4. The apparatus of claim 1 wherein said packet start command is inferred from a read command containing a packet identifier.

5. The apparatus of claim 1 further comprising:

a write table comprising said write buffer, wherein said write table receives said flush command and writes buffered data to said memory subsystem based upon said packet identifier.

6. The apparatus of claim 1 further comprising:

a first data storage element storing information based upon a memory read;

a second data storage element storing information based upon a memory write;

read processing logic coupled to said first data storage element and said second data storage element, wherein said first data storage element is modified based on said memory read and said second data storage element is searched based on said memory read; and

write processing and conflict detection logic coupled to said first data storage element and said second data storage element, wherein said second data storage element is modified based on said memory write and said second data storage element is searched based on said memory read.

7. The apparatus of claim 1 wherein said read processing logic returns speculative read data to the packet processing engine responsive to said memory read and wherein said write processing and conflict detection logic makes a determination whether a memory conflict exists between said memory read and said memory write.

8. The apparatus of claim 1 wherein said packet processing engine is a multithreaded processor that processes multiple packets in parallel.

9. The apparatus of claim 1 wherein said packet processing engine is a multiprocessor that processes multiple packets in parallel.

10. A method of maintaining an active packet list in a packet processor, the method comprising:

receiving a packet start command comprising a first packet identifier and adding said first packet identifier and packet status information to a storage element;

receiving a packet done command comprising a second packet identifier and updating packet status information associated with said second packet identifier in said storage element; and

retiring a packet by sending a flush command containing a third packet identifier to a write buffer.

11. The method of claim 10 wherein said first packet identifier, said second packet identifier and said third packet identifier are packet sequence numbers indicating the order of arrival of packets at said packet processing engine.

12. The method of claim 10 wherein said retiring retires the oldest packet for which packet processing has finished.

13. The method of claim 10 wherein said packet start command is inferred from a read command comprising said first packet identifier.

14. The method of claim 10 further comprising:

receiving said flush command by a write table comprising said write buffer; and

writing buffered data to a memory system based upon said third packet identifier.

15. The method of claim 10 further comprising:

receiving a memory read from said packet processing engine;

storing information based upon said memory read into a first data storage element;

searching a second data storage element using information based on said memory read;

receiving a memory write from said packet processing engine;

storing information based on said memory write into said second data storage element; and

searching said first data storage element using information based on said memory write.

16. The method of claim 15 further comprising:

returning speculative read data to the packet processing engine responsive to said memory read;

determining if said speculative read data is incorrect; and

signaling a restart to said packet processing engine if said speculative read data is incorrect.

17. The method of claim 10 wherein said packet processor is a multithreaded processor that processes multiple packets in parallel.

18. The method of claim 10 wherein said packet processor is a multiprocessor that processes multiple packets in parallel.

Assignments (3)
MERGER Recorded Dec 30, 2015
From: TEPLIN APPLICATION LIMITED LIABILITY COMPANY
To: F. POSZAT HU, L.L.C.
Reel/Frame 037387/0264 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 2, 2008
From: MELVIN, STEPHEN
To: TEPLIN APPLICATION LIMITED LIABILITY COMPANY
Reel/Frame 020783/0780 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 2, 2008
From: MELVIN, STEPHEN
To: TEPLIN APPLICATION LIMITED
Reel/Frame 020582/0432 →
Continuity (7)
Continuation 1153089500 · Sep 11, 2006
Continuation 1130637500 · Dec 26, 2005
Continuation 1006534000 · Oct 6, 2002
Provisional Application 6034778100 · Oct 23, 2001
Provisional Application 6033907700 · Oct 30, 2001
Provisional Application 6034821700 · Nov 9, 2001
Provisional Application 6033242500 · Nov 16, 2001