IP Library Granted Patent US 7,739,452
Granted Patent B2
US 7,739,452 · App. 12/400,437 · Granted Jun 15, 2010

Method and apparatus for hardware enforced virtual sequentiality

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,739,452
App. No.
12/400,437
Granted
Jun 15, 2010
Kind
B2
Abstract

A mechanism receives memory reads and writes from a packet processing engine, each memory access having an associated packet identifier or sequence number. The mechanism is placed between a processing engine and a memory system such that write data is buffered and information based upon reads and writes is recorded. Memory read data is returned speculatively since the packet processing engine is processing packets in parallel and not necessarily in sequence. Information is maintained allowing the detection of a speculative read that was incorrect (i.e. a memory conflict). When a memory conflict is detected, a restart signal is generated and the information for the associated packet identifier or sequence number is flushed.

Claims (61)

1. A method, comprising:

receiving a memory read having a first associated sequence number;

receiving a memory write having a second associated sequence number;

determining that a memory conflict exists based on the first associated sequence number and the second associated sequence number; and

responsively restarting processing of data associated with the first associated sequence number.

2. The method of claim 1 , wherein receiving the memory read comprises:

recording a first address and the first associated sequence number in a read table;

searching a write table for a matching entry with an address matching the first address and a sequence number that is less than or equal to the first associated sequence number; and

responsive to finding the matching entry in the write table, retrieving data from the write table.

3. The method of claim 2 , further comprising:

responsive to not finding the matching entry in the write table, sending the memory read to a memory system.

4. The method of claim 2 , wherein receiving the memory write comprises:

recording a second address, the second associated sequence number, and write data in the write table.

5. The method of claim 4 , wherein determining that the memory conflict exists comprises:

searching the read table for an address matching the second address and a sequence number that is greater than the second associated sequence number.

6. The method of claim 5 , further comprising:

receiving a start command with a third associated sequence number; and

receiving a done command with a fourth associated sequence number.

7. The method of claim 6 , further comprising:

sending write data to a memory system upon receipt of the done command; and

responsively flushing the entries in the read table and the write table corresponding to the fourth associated sequence number.

8. The method of claim 1 , further comprising:

determining a prediction of the memory conflict; and

responsively applying a stall to a memory system.

9. The method of claim 8 , wherein determining the prediction of the memory conflict comprises:

receiving one or more memory reads;

determining one or more read addresses associated with the one or more memory reads;

receiving one or more memory writes;

determining one or more write addresses associated with the one or more memory writes; and

determining the prediction based on the one or more read addresses and the one or more write addresses.

10. The method of claim 8 , wherein the prediction comprises predicting a memory write; and

wherein responsively applying the stall comprises delaying at least one memory read until the predicted memory write occurs.

11. An controller, comprising:

means for receiving a memory read having a first associated sequence number;

means for receiving a memory write having a second associated sequence number;

means for determining that a memory conflict exists based on the first associated sequence number and the second associated sequence number; and

means for restarting processing of data associated with the first associated sequence number based on the determined memory conflict.

12. The controller of claim 11 , wherein the means for receiving the memory read comprise:

means for recording a first address and the first associated sequence number in a read table;

means for searching a write table for a matching entry with an address matching the first address and a sequence number less than or equal to the first associated sequence number; and

means for retrieving data from the write table, responsive to finding the matching entry in the write table.

13. The controller of claim 12 , further comprising:

means for sending the memory read to a memory system, responsive to not finding the matching entry in the write table.

14. The controller of claim 12 , wherein the means for receiving the memory write comprise:

means for recording a second address, the second associated sequence number, and write data in the write table.

15. The controller of claim 14 , wherein the means for determining that the memory conflict exists comprise:

means for searching the read table for an address that matches the second address and a sequence number that is greater than the second associated sequence number.

16. The controller of claim 15 , further comprising:

means for receiving a command, wherein the command is either a start command with a third associated sequence number, or a done command with a fourth associated sequence number.

17. The controller of claim 16 , further comprising:

means for sending write data to a memory system upon receipt of the done command; and

means for responsively flushing the entries in the read table and the write table corresponding to the fourth associated sequence number.

18. The controller of claim 11 , further comprising:

means for determining a prediction of the memory conflict; and

means for applying a stall to a memory system in response to predicting the memory conflict.

19. The controller of claim 18 , wherein the means for determining the prediction of the memory conflict comprise:

means for receiving one or more memory reads, each of the one or more memory reads comprising one or more read addresses;

means for receiving one or more memory writes, each of the one or more memory writes comprising one or more write addresses; and

means for determining the prediction based on the one or more read addresses and the one or more write addresses.

20. The controller of claim 18 , wherein the prediction of the memory conflict comprises predicting a memory write; and

wherein the means for applying the stall comprise means for delaying at least one memory read until the predicted memory write occurs.

Assignments (2)
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 Feb 19, 2010
From: MELVIN, STEPHEN
To: TEPLIN APPLICATION LIMITED LIABILITY COMPANY
Reel/Frame 023960/0293 →
Continuity (9)
Continuation 1193020200 · Oct 31, 2007
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
Related Publication 20090193216A1 · Jul 30, 2009