A method and data processing system that supports pipelining of
Input/Output (I/O) DMA Write transactions. An I/O processor's operational
protocol is provided with a pair of instructions/commands that are
utilized to complete a DMA Write operation. The instructions are
DMA_Write_No_Data and DMA_Write_With_Data. DMA_Write_No_Data is an
address-only operation on the system bus that is utilized to acquire
ownership of a cache line that is to be written. The ownership of the
cache line is marked by a weak DMA state, which indicates that the cache
line is being held for writing to the memory, but that the cache line
cannot yet force a retry of snooped operations. When each preceding DMA
Write operation has completed or each corresponding DMA_Write_No_Data
operation has been placed in a DMA Exclusive state, then the weak DMA
state is changed to a DMA Exclusive state, which forces a retry of snooped
operations until the write transaction to memory is completed. In this
way, DMA Writes that are provided sequentially may be issued in a parallel
manner on the system bus and their corresponding DMA_Write_No_Data
operations may be completed in any order, but cannot be made DMA Exclusive
unless the above conditions are satisfied. Further, once a DMA Exclusive
state is acquired, a DMA_Write_With_Data may be issued for each of the
sequential DMA Write operations in the DMA Exclusive state. The
DMA_Write_With_Data may then be completed out-of-order with respect to
each other. However, the system processor is sent the completion messages
in the sequential order of the DMA Write operations, thus adhering to the
processor requirements for ordered operations while providing
fully-pipelined (parallel) execution of the DMA transactions.
Une méthode et un système de traitement de données qui soutient la canalisation de l'entrée-sortie (I/O) DMA écrivent des transactions. Le protocole opérationnel d'un processeur d'I/O est équipé de paire d'instructions/commands qui sont utilisés pour accomplir DMA écrivent l'opération. Les instructions sont DMA_Write_No_Data et DMA_Write_With_Data. DMA_Write_No_Data est adressent-seulement l'opération sur l'autobus de système qui est utilisé pour acquérir la propriété d'une ligne de cachette qui doit être écrite. La propriété de la ligne de cachette est marquée par un état faible de DMA, qui indique que la ligne de cachette est tenue pour écrire à la mémoire, mais que la ligne de cachette ne peut pas encore forcer une nouvelle tentative de snooped des opérations. Quand chaque DMA précédent écrivent l'opération a accompli ou chaque opération correspondante de DMA_Write_No_Data a été placée dans un état exclusif de DMA, alors l'état faible de DMA est changée en état exclusif de DMA, force dont une nouvelle tentative snooped des opérations jusqu'à ce que la transaction d'inscription à la mémoire soit accomplie. De cette façon, DMA écrit qui sont fournis séquentiellement peut être publié d'une façon parallèle sur l'autobus de système et leurs opérations correspondantes de DMA_Write_No_Data peuvent être accomplies dans n'importe quel ordre, mais ne peuvent pas être faites à exclusivité de DMA à moins que les conditions ci-dessus soient satisfaites. De plus, une fois qu'un état exclusif de DMA est acquis, un DMA_Write_With_Data peut être publié pour chacun de DMA séquentiel écrivent des opérations dans l'état d'exclusivité de DMA. Le DMA_Write_With_Data peut alors être out-of-order réalisé en ce qui concerne l'un l'autre. Cependant, le processeur de système est envoyé aux messages d'accomplissement dans l'ordre séquentiel de DMA écrivent des opérations, de ce fait adhérant aux conditions de processeur pour des opérations commandées tout en fournissant l'exécution (parallèle) plein-canalisée des transactions de DMA.