| US 7,613,850 B1 | ||
| System and method utilizing programmable ordering relation for direct memory access | ||
| Andreas Christian Doering, Adliswil (Switzerland); Patricia Maria Sagmeister, Adliswil (Switzerland); Jonathan Bruno Rohrer, Zug (Switzerland); Silvio Dragone, Adliswil (Switzerland); Rolf Clauberg, Gattikon (Switzerland); Florian Alexander Auernhammer, Adliswil (Switzerland); and Maria Gabrani, Thalwil (Switzerland) | ||
| Assigned to International Business Machines Corporation, Armonk, N.Y. (US) | ||
| Filed on Dec. 23, 2008, as Appl. No. 12/343,092. | ||
| Int. Cl. G06F 3/00 (2006.01) | ||
| U.S. Cl. 710—39 [710/36; 710/40; 710/41; 711/150; 711/151] | 2 Claims |

| 1. A computer system for controlling ordered memory operations according to a programmatically-configured ordering class protocol
to enable parallel memory access while maintaining ordered memory read responses, the system comprising:
a memory and/or cache memory including a memory/cache controller;
an I/O device for communicating memory access requests from system data sources, where each memory access request is associated
with a configured ordering class value; wherein the I/O device comprises at least one register for storing ordering class
values provided by the system data sources with the memory access requests; and
a memory controller I/O interface for processing each memory access request communicated through the I/O device to the memory
in coordination with the ordering class protocol, comprising:
an incoming request buffer for storing incoming memory access requests from the I/O device in a received order, wherein the
memory access requests include an ordering class value; and
a next request selector and ordering table with rules for implementing the ordering class protocol, wherein the next request
selector processes each stored memory access request based on its ordering class value, a rule from the table associated with
said ordering class value and a listing of ordering dependencies for the stored memory access requests to control timing of
communicating the memory access request to the connected memory.
|