IP Library › Granted Patent US 8,037,213
Granted Patent B2
US 8,037,213 · App. 11/755,501 · Granted Oct 11, 2011

Replenishing data descriptors in a DMA injection FIFO buffer

Assignee: International Business Machines Corporation
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 8,037,213
App. No.
11/755,501
Granted
Oct 11, 2011
Kind
B2
Abstract

Methods, apparatus, and products are disclosed for replenishing data descriptors in a Direct Memory Access (‘DMA’) injection first-in-first-out (‘FIFO’) buffer that include: determining, by a messaging module on an origin compute node, whether a number of data descriptors in a DMA injection FIFO buffer exceeds a predetermined threshold, each data descriptor specifying an application message for transmission to a target compute node; queuing, by the messaging module, a plurality of new data descriptors in a pending descriptor queue if the number of the data descriptors in the DMA injection FIFO buffer exceeds the predetermined threshold; establishing, by the messaging module, interrupt criteria that specify when to replenish the injection FIFO buffer with the plurality of new data descriptors in the pending descriptor queue; and injecting, by the messaging module, the plurality of new data descriptors into the injection FIFO buffer in dependence upon the interrupt criteria.

Claims (69)

1. A method of replenishing data descriptors in a Direct Memory Access (‘DMA’) injection first-in-first-out (‘FIFO’) buffer, the method comprising:

determining, by a messaging module on an origin compute node, whether a number of data descriptors in a DMA injection FIFO buffer exceeds a predetermined threshold, each data descriptor specifying an application message for transmission to a target compute node;

queuing, by the messaging module, a plurality of new data descriptors in a pending descriptor queue if the number of the data descriptors in the DMA injection FIFO buffer exceeds the predetermined threshold;

establishing, by the messaging module, interrupt criteria that specify when to replenish the injection FIFO buffer with the plurality of new data descriptors in the pending descriptor queue, wherein establish interrupt criteria includes injecting a replenish descriptor in the injection FIFO buffer, the replenish descriptor specifying a DMA data transfer operation to notify the messaging module when to replenish the injection FIFO buffer with the plurality of new data descriptors in the pending descriptor queue; and

injecting, by the messaging module, the plurality of new data descriptors into the injection FIFO buffer in dependence upon the interrupt criteria.

2. The method of claim 1 wherein:

establishing, by the messaging module, interrupt criteria that specify when to replenish the injection FIFO buffer with the plurality of new data descriptors in the pending descriptor queue further comprises setting an interrupt timer; and

injecting, by the messaging module, the plurality of new data descriptors into the injection FIFO buffer in dependence upon the interrupt criteria further comprises injecting the plurality of new data descriptors into the injection FIFO buffer when the interrupt timer has expired.

3. The method of claim 1 wherein:

establishing, by the messaging module, interrupt criteria that specify when to replenish the injection FIFO buffer with the plurality of new data descriptors in the pending descriptor queue wherein the replenish descriptor is injected in the injection FIFO buffer for a local memory FIFO transfer, the replenish descriptor specifying a packet header for a replenish packet, the packet header specifying a DMA packet handler for notifying the messaging module to replenish the injection FIFO buffer with the plurality of new data descriptors;

the method further comprises:

sending, by a DMA engine on the origin compute node, the replenish packet to a local reception FIFO buffer using the local memory FIFO transfer, and

processing, by the DMA engine, the replenish packet using the DMA packet handler specified in the packet header of the replenish packet; and

injecting, by the messaging module, the plurality of new data descriptors into the injection FIFO buffer in dependence upon the interrupt criteria further comprises injecting the plurality of new data descriptors into the injection FIFO buffer in response to receiving the notification to replenish the injection FIFO buffer from the DMA engine.

4. The method of claim 1 wherein:

establishing, by the messaging module, interrupt criteria that specify when to replenish the injection FIFO buffer with the plurality of new data descriptors in the pending descriptor queue wherein the replenish descriptor is injected in the injection FIFO buffer for a local direct put operation, the replenish descriptor specifying a DMA counter;

the method further comprises processing, by a DMA engine on the origin compute node, the replenish descriptor, including performing the local direct put operation and decrementing the DMA counter as the local direct put operation is performed; and

injecting, by the messaging module, the plurality of new data descriptors into the injection FIFO buffer in dependence upon the interrupt criteria further comprises injecting the plurality of new data descriptors into the injection FIFO buffer in response to an interrupt indicating that the DMA counter has been decremented to a value of zero.

5. The method of claim 1 wherein:

establishing, by the messaging module, interrupt criteria that specify when to replenish the injection FIFO buffer with the plurality of new data descriptors in the pending descriptor queue wherein the replenish descriptor is injected in the injection FIFO buffer for a local direct put operation, the replenish descriptor specifying a location in interrupt-on-touch memory;

the method further comprises processing, by a DMA engine on the origin compute node, the replenish descriptor, including performing the local direct put operation; and

injecting, by the messaging module, the plurality of new data descriptors into the injection FIFO buffer in dependence upon the interrupt criteria further comprises injecting the plurality of new data descriptors into the injection FIFO buffer in response to an interrupt indicating that the local direct put operation stored a value at the location in the interrupt-on-touch memory.

6. The method of claim 1 wherein the origin compute node and the target compute node are comprised in a parallel computer, the parallel computer comprising a plurality of compute nodes connected for data communications through a data communications network, the data communications network configured for point to point data communications.

7. An origin compute node replenishing data descriptors in a Direct Memory Access (‘DMA’) injection first-in-first-out (‘FIFO’) buffer, the compute node comprising a computer processor, a DMA controller having a DMA engine, and computer memory operatively coupled to the computer processor and the DMA controller, the computer memory having disposed within it computer program instructions:

determining, by a messaging module on an origin compute node, whether a number of data descriptors in a DMA injection FIFO buffer exceeds a predetermined threshold, each data descriptor specifying an application message for transmission to a target compute node;

queuing, by the messaging module, a plurality of new data descriptors in a pending descriptor queue if the number of the data descriptors in the DMA injection FIFO buffer exceeds the predetermined threshold;

establishing, by the messaging module, interrupt criteria that specify when to replenish the injection FIFO buffer with the plurality of new data descriptors in the pending descriptor queue, wherein establish interrupt criteria includes injecting a replenish descriptor in the injection FIFO buffer, the replenish descriptor specifying a DMA data transfer operation to notify the messaging module when to replenish the injection FIFO buffer with the plurality of new data descriptors in the pending descriptor queue; and

injecting, by the messaging module, the plurality of new data descriptors into the injection FIFO buffer in dependence upon the interrupt criteria.

8. The origin compute node of claim 7 wherein:

establishing, by the messaging module, interrupt criteria that specify when to replenish the injection FIFO buffer with the plurality of new data descriptors in the pending descriptor queue further comprises setting an interrupt timer; and

injecting, by the messaging module, the plurality of new data descriptors into the injection FIFO buffer in dependence upon the interrupt criteria further comprises injecting the plurality of new data descriptors into the injection FIFO buffer when the interrupt timer has expired.

9. The origin compute node of claim 7 wherein:

establishing, by the messaging module, interrupt criteria that specify when to replenish the injection FIFO buffer with the plurality of new data descriptors in the pending descriptor queue wherein the replenish descriptor is injected in the injection FIFO buffer for a local memory FIFO transfer, the replenish descriptor specifying a packet header for a replenish packet, the packet header specifying a DMA packet handler for notifying the messaging module to replenish the injection FIFO buffer with the plurality of new data descriptors;

the computer memory also has disposed within it computer program instructions:

sending, by a DMA engine on the origin compute node, the replenish packet to a local reception FIFO buffer using the local memory FIFO transfer, and

processing, by the DMA engine, the replenish packet using the DMA packet handler specified in the packet header of the replenish packet; and

injecting, by the messaging module, the plurality of new data descriptors into the injection FIFO buffer in dependence upon the interrupt criteria further comprises injecting the plurality of new data descriptors into the injection FIFO buffer in response to receiving the notification to replenish the injection FIFO buffer from the DMA engine.

10. The origin compute node of claim 7 wherein:

establishing, by the messaging module, interrupt criteria that specify when to replenish the injection FIFO buffer with the plurality of new data descriptors in the pending descriptor queue wherein the replenish descriptor is injected in the injection FIFO buffer for a local direct put operation, the replenish descriptor specifying a DMA counter;

the computer memory also has disposed within it computer program instructions processing, by a DMA engine on the origin compute node, the replenish descriptor, including performing the local direct put operation and decrementing the DMA counter as the local direct put operation is performed; and

injecting, by the messaging module, the plurality of new data descriptors into the injection FIFO buffer in dependence upon the interrupt criteria further comprises injecting the plurality of new data descriptors into the injection FIFO buffer in response to an interrupt indicating that the DMA counter has been decremented to a value of zero.

11. The origin compute node of claim 7 wherein:

establishing, by the messaging module, interrupt criteria that specify when to replenish the injection FIFO buffer with the plurality of new data descriptors in the pending descriptor queue wherein the replenish descriptor is injected in the injection FIFO buffer for a local direct put operation, the replenish descriptor specifying a location in interrupt-on-touch memory;

the computer memory also has disposed within it computer program instructions processing, by a DMA engine on the origin compute node, the replenish descriptor, including performing the local direct put operation; and

injecting, by the messaging module, the plurality of new data descriptors into the injection FIFO buffer in dependence upon the interrupt criteria further comprises injecting the plurality of new data descriptors into the injection FIFO buffer in response to an interrupt indicating that the local direct put operation stored a value at the location in the interrupt-on-touch memory.

12. The origin compute node of claim 7 wherein the origin compute node and the target compute node are comprised in a parallel computer, the parallel computer comprising a plurality of compute nodes connected for data communications through a data communications network, the data communications network configured for point to point data communications.

13. A computer program product for replenishing data descriptors in a Direct Memory Access (‘DMA’) injection first-in-first-out (‘FIFO’) buffer, the computer program product disposed upon a computer readable recordable medium, the computer program product comprising computer program instructions:

determining, by a messaging module on an origin compute node, whether a number of data descriptors in a DMA injection FIFO buffer exceeds a predetermined threshold, each data descriptor specifying an application message for transmission to a target compute node;

queuing, by the messaging module, a plurality of new data descriptors in a pending descriptor queue if the number of the data descriptors in the DMA injection FIFO buffer exceeds the predetermined threshold;

establishing, by the messaging module, interrupt criteria that specify when to replenish the injection FIFO buffer with the plurality of new data descriptors in the pending descriptor queue, wherein establish interrupt criteria includes injecting a replenish descriptor in the injection FIFO buffer, the replenish descriptor specifying a DMA data transfer operation to notify the messaging module when to replenish the injection FIFO buffer with the plurality of new data descriptors in the pending descriptor queue; and

injecting, by the messaging module, the plurality of new data descriptors into the injection FIFO buffer in dependence upon the interrupt criteria.

14. The computer program product of claim 13 wherein:

establishing, by the messaging module, interrupt criteria that specify when to replenish the injection FIFO buffer with the plurality of new data descriptors in the pending descriptor queue further comprises setting an interrupt timer; and

injecting, by the messaging module, the plurality of new data descriptors into the injection FIFO buffer in dependence upon the interrupt criteria further comprises injecting the plurality of new data descriptors into the injection FIFO buffer when the interrupt timer has expired.

15. The computer program product of claim 13 wherein:

establishing, by the messaging module, interrupt criteria that specify when to replenish the injection FIFO buffer with the plurality of new data descriptors in the pending descriptor queue wherein the replenish descriptor is injected in the injection FIFO buffer for a local memory FIFO transfer, the replenish descriptor specifying a packet header for a replenish packet, the packet header specifying a DMA packet handler for notifying the messaging module to replenish the injection FIFO buffer with the plurality of new data descriptors;

the computer program product further comprises computer program instructions:

sending, by a DMA engine on the origin compute node, the replenish packet to a local reception FIFO buffer using the local memory FIFO transfer, and

processing, by the DMA engine, the replenish packet using the DMA packet handler specified in the packet header of the replenish packet; and

injecting, by the messaging module, the plurality of new data descriptors into the injection FIFO buffer in dependence upon the interrupt criteria further comprises injecting the plurality of new data descriptors into the injection FIFO buffer in response to receiving the notification to replenish the injection FIFO buffer from the DMA engine.

16. The computer program product of claim 13 wherein:

establishing, by the messaging module, interrupt criteria that specify when to replenish the injection FIFO buffer with the plurality of new data descriptors in the pending descriptor queue wherein the replenish descriptor is injected in the injection FIFO buffer for a local direct put operation, the replenish descriptor specifying a DMA counter;

the computer program product further comprises computer program instructions processing, by a DMA engine on the origin compute node, the replenish descriptor, including performing the local direct put operation and decrementing the DMA counter as the local direct put operation is performed; and

injecting, by the messaging module, the plurality of new data descriptors into the injection FIFO buffer in dependence upon the interrupt criteria further comprises injecting the plurality of new data descriptors into the injection FIFO buffer in response to an interrupt indicating that the DMA counter has been decremented to a value of zero.

17. The computer program product of claim 13 wherein:

establishing, by the messaging module, interrupt criteria that specify when to replenish the injection FIFO buffer with the plurality of new data descriptors in the pending descriptor queue wherein the replenish descriptor is injected in the injection FIFO buffer for a local direct put operation, the replenish descriptor specifying a location in interrupt-on-touch memory;

the computer program product further comprises computer program instructions processing, by a DMA engine on the origin compute node, the replenish descriptor, including performing the local direct put operation; and

injecting, by the messaging module, the plurality of new data descriptors into the injection FIFO buffer in dependence upon the interrupt criteria further comprises injecting the plurality of new data descriptors into the injection FIFO buffer in response to an interrupt indicating that the local direct put operation stored a value at the location in the interrupt-on-touch memory.

18. The computer program product of claim 13 wherein the origin compute node and the target compute node are comprised in a parallel computer, the parallel computer comprising a plurality of compute nodes connected for data communications through a data communications network, the data communications network configured for point to point data communications.

Assignments (2)
CONFIRMATORY LICENSE Recorded Dec 27, 2007
From: INTERNATIONAL BUSINESS MACHINES CORP.
To: U.S. DEPARTMENT OF ENERGY
Reel/Frame 020308/0864 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 30, 2007
From: ARCHER, CHARLES J; BLOCKSOME, MICHAEL A; CERNOHOUS, BOB R; HEIDELBERGER, PHILIP; KUMAR, SAMEER; PARKER, JEFFREY J
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 019357/0242 →
Continuity (1)
Related Publication 20100268852A1 · Oct 21, 2010