Method and apparatus for implementing a relaxed ordering model in a computer system
First Claim
1. An apparatus for imposing relaxed ordering on a stream of read and write transactions from an input/output (I/O) device, the transactions indicating whether relaxed or strict ordering is to be applied, the apparatus comprising:
- means for assigning epochs to at least some of the transactions in the stream, such that the receipt of a first relaxed order write transaction in the stream constitutes the start of a given epoch and the receipt of one or more strict order transactions constitutes the conclusion of the given epoch;
means for determining when relaxed order write transactions have reached a commit state in accordance with a predefined consistency model; and
means, responsive to the determining means, for inhibiting retirement of a strict order transaction assigned to the given epoch until all of the relaxed order write transactions assigned to the given epoch have reached the commit state.
2 Assignments
0 Petitions
Accused Products
Abstract
An ordering engine is configured to implement a relaxed ordering consistency model for a stream of I/O transactions initiated in a computer system. The ordering engine examines the relaxed ordering attribute of the transactions in the stream to distinguish payload transactions, which may be processed out of order, from control transaction which must be processed in strict order. The engine preferably organizes the stream of transactions into epochs, where the receipt of a first relaxed order write operation in the stream constitutes the start of an epoch and the receipt of a first strict order operation in the stream constitutes the conclusion of the epoch. The engine is configured to delay the completion of the strict order operation constituting the conclusion of the epoch until all payload write operations issued during the epoch have committed.
97 Citations
26 Claims
-
1. An apparatus for imposing relaxed ordering on a stream of read and write transactions from an input/output (I/O) device, the transactions indicating whether relaxed or strict ordering is to be applied, the apparatus comprising:
-
means for assigning epochs to at least some of the transactions in the stream, such that the receipt of a first relaxed order write transaction in the stream constitutes the start of a given epoch and the receipt of one or more strict order transactions constitutes the conclusion of the given epoch;
means for determining when relaxed order write transactions have reached a commit state in accordance with a predefined consistency model; and
means, responsive to the determining means, for inhibiting retirement of a strict order transaction assigned to the given epoch until all of the relaxed order write transactions assigned to the given epoch have reached the commit state. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8)
-
-
9. A system in communicating relationship with an I/O device and a computer memory system, the I/O device configured to issue a stream of memory reference operations, including read and write operations, and to specify the application of relaxed or strict ordering to the memory reference operations, the memory system having an ordering point configured to return commit signals to the system in response to memory reference operations becoming committed, the system comprising:
-
a relaxed ordering controller;
an epoch identifier (ID) generator operatively coupled to the relaxed ordering engine and configured to produce epoch ID values; and
one or more payload commit pending counters operatively coupled to the relaxed ordering engine, wherein, the relaxed ordering engine organizes the stream of memory reference operations from the I/O device into epochs, such that the receipt of a first relaxed order write operation in the stream constitutes the start of an epoch and the receipt of a first strict order operation in the stream constitutes the conclusion of the epoch, upon the start of each epoch, directs the epoch ID generator to produce an epoch ID value for the respective epoch, and assigns a selected payload commit pending counter to the epoch ID value, associates the respective epoch ID value with all relaxed order write operations issued during the epoch, increments the selected payload commit pending counter in response to each relaxed order write operation issued during the epoch, decrements the selected payload commit pending counter in response to receiving a commit signal corresponding to a relaxed order write operation associated with the respective epoch ID, and delays completion of the strict order operation constituting the conclusion of the epoch until the selected payload commit pending counter reaches zero, thereby confirming that all relaxed order write operations issued during the epoch have committed. - View Dependent Claims (10, 11, 12, 13, 14, 15, 16, 17, 18, 19)
-
-
20. A method for imposing relaxed ordering on a stream of memory reference operations issued by an input/output (I/O) device, including read and write operations, the operations indicating whether relaxed or strict ordering is to be applied, a computer memory system having an ordering point issues commit signals in response to memory reference operations becoming committed, the method comprising the steps of:
-
organizing the stream of memory reference operations into epochs, such that the receipt of a first relaxed order write operation in the stream constitutes the start of an epoch and the receipt of a first strict order operation in the stream constitutes the conclusion of the epoch;
upon the start of each epoch, producing an epoch ID value for the respective epoch, and assigning a payload commit pending counter to the epoch ID value;
associating the respective epoch ID value with all relaxed order write operations issued during the epoch;
incrementing the payload commit pending counter in response to each relaxed order write operation issued during the epoch;
decrementing the payload commit pending counter in response to receiving a commit signal corresponding to a relaxed order write operation associated with the respective epoch ID; and
delaying completion of the strict order operation constituting the conclusion of the epoch until the selected payload commit pending counter reaches zero, thereby confirming that all relaxed order write operations issued during the epoch have committed. - View Dependent Claims (21, 22, 23, 24, 25, 26)
-
Specification