IP Library Granted Patent US 8,719,455
Granted Patent B2
US 8,719,455 · App. 12/824,674 · Granted May 6, 2014

DMA-based acceleration of command push buffer between host and target devices

Inventors: Eric O. Mejdrich (Woodinville, WA); Paul E. Schardt (Rochester, MN); Robert A. Shearer (Rochester, MN); Matthew R. Tubbs (Rochester, MN)
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,719,455
App. No.
12/824,674
Granted
May 6, 2014
Kind
B2
Abstract

Direct Memory Access (DMA) is used in connection with passing commands between a host device and a target device coupled via a push buffer. Commands passed to a push buffer by a host device may be accumulated by the host device prior to forwarding the commands to the push buffer, such that DMA may be used to collectively pass a block of commands to the push buffer. In addition, a host device may utilize DMA to pass command parameters for commands to a command buffer that is accessible by the target device but is separate from the push buffer, with the commands that are passed to the push buffer including pointers to the associated command parameters in the command buffer.

Claims (40)

1. A circuit arrangement, comprising:

a push buffer configured to store pending commands from a host device to be processed by a target device;

a host interface processor disposed in the target device and configured to retrieve pending commands from the push buffer and initiate processing of the commands by the target device;

control logic configured to accumulate a plurality of commands from the host device and perform a collective operation to store the accumulated plurality of commands in the push buffer, wherein the control logic includes Direct Memory Access (DMA) logic configured to write the accumulated plurality of commands to the push buffer when performing the collective operation; and

a command buffer configured to store parameter data for a first command from among the accumulated plurality of commands, wherein the control logic is configured to store, along with the first command in the push buffer, a pointer to the parameter data in the command buffer.

2. The circuit arrangement of claim 1 , wherein the push buffer comprises a circular queue including a plurality of entries and head and tail pointers pointing to selected entries in the push buffer, wherein the push buffer is resident in a shared memory accessible by the host and target devices, and wherein the control logic is resident in the host device and includes a device driver for the target device.

3. The circuit arrangement 1 , further comprising a plurality of processing cores coupled to one another via a network on chip architecture, wherein the target device comprises a graphics processing unit (GPU) implemented using a first portion of the plurality of processing cores and the host device comprises a central processing unit (CPU) implemented using a second portion of the plurality of processing cores, and wherein the GPU comprises a multithreaded software pipeline controlled by the host interface processor in response to commands from the host device.

4. The circuit arrangement of claim 1 , wherein the host interface processor is configured to sequentially and individually pull commands out of the push buffer and update a pointer in the push buffer as commands are pulled from the push buffer.

5. The circuit arrangement of claim 1 , wherein the control logic is configured to accumulate the plurality of commands in a block, and wherein the DMA logic is configured to write the block of accumulated plurality of commands to the push buffer.

6. The circuit arrangement of claim 1 , wherein the control logic is configured to update a pointer in the push buffer after storing the accumulated plurality of commands in the push buffer to notify the host interface processor of the addition of the plurality of commands to the push buffer.

7. The circuit arrangement of claim 1 , wherein the control logic includes Direct Memory Access (DMA) logic configured to write the parameter data for the first command in the command buffer.

8. The circuit arrangement of claim 1 , wherein the control logic is configured to accumulate commands into a fixed size block and perform the collective operation to store the accumulated commands in the push buffer only after substantially filling the fixed size block.

9. The circuit arrangement of claim 8 , wherein the control logic is configured to selectively terminate the accumulation of commands into the fixed size block prior to substantially filling the fixed size block in response to receiving a predetermined command requiring immediate attention by the host interface processor.

10. An integrated circuit device including the circuit arrangement of claim 1 .

11. A program product comprising a non-transitory computer readable medium and logic definition program code resident on the computer readable medium and defining the circuit arrangement of claim 1 .

12. A circuit arrangement, comprising:

a push buffer configured to store pending commands to be processed by a target device;

a host interface processor disposed in the target device and configured to retrieve pending commands from the push buffer and initiate processing of the commands by the target device;

a command buffer configured to store parameter data associated with a first command;

Direct Memory Access (DMA) logic configured to write the parameter data for the first command in the command buffer; and

control logic configured to store the first command in the push buffer by storing in the push buffer along with the first command a pointer to the parameter data in the command buffer.

13. The circuit arrangement of claim 12 , wherein the control logic is further configured to accumulate a plurality of commands from the host device and perform a collective operation to store the accumulated plurality of commands in the push buffer.

14. The circuit arrangement of claim 13 , wherein the control logic is configured to accumulate the plurality of commands in a block, and wherein the control logic includes second Direct Memory Access (DMA) logic configured to write the block of accumulated plurality of commands to the push buffer.

15. The circuit arrangement of claim 13 , wherein the control logic is configured to update a pointer in the push buffer after storing the accumulated plurality of commands in the push buffer to notify the host interface processor of the addition of the plurality of commands to the push buffer.

16. The circuit arrangement of claim 13 , wherein the control logic is configured to accumulate commands into a fixed size block and perform the collective operation to store the accumulated commands in the push buffer only after substantially filling the fixed size block.

17. The circuit arrangement of claim 16 , wherein the control logic is configured to selectively terminate the accumulation of commands into the fixed size block prior to substantially filling the fixed size block in response to receiving a predetermined command requiring immediate attention by the host interface processor.

18. A method of passing commands from a host device to a target device via a push buffer interposed therebetween, the method comprising:

accumulating a plurality of commands from the host device;

after accumulating the plurality of commands, performing a collective operation to store the accumulated plurality of commands in the push buffer using Direct Memory Access (DMA) logic to write the accumulated plurality of commands to the push buffer when performing the collective operation;

with a host interface processor disposed in the target device, retrieving commands from the push buffer and initiating processing of the commands by the target device;

storing parameter data for a first command from among the accumulated plurality of commands in a command buffer; and

storing, along with the first command in the push buffer, a pointer to the parameter data in the command buffer.

19. The method of claim 18 , wherein accumulating the plurality of commands includes accumulating the plurality of commands in a block, and wherein performing the collective operation includes using the DMA logic to write the block of accumulated plurality of commands to the push buffer.

20. The method of claim 18 , further comprising updating a pointer in the push buffer after storing the accumulated plurality of commands in the push buffer to notify the host interface processor of the addition of the plurality of commands to the push buffer.

21. The method of claim 18 , wherein accumulating the plurality of commands includes accumulating commands into a fixed size block, and wherein performing the collective operation to store the accumulated commands in the push buffer is performed only after substantially filling the fixed size block.

22. The method of claim 21 , further comprising selectively terminating the accumulation of commands into the fixed size block prior to substantially filling the fixed size block in response to receiving a predetermined command requiring immediate attention by the host interface processor.

23. A method of passing commands from a host device to a target device via a push buffer interposed therebetween, the method comprising:

with Direct Memory Access (DMA) logic, writing parameter data for a first command in a command buffer;

storing the first command in the push buffer, including storing in the push buffer along with the first command a pointer to the parameter data in the command buffer; and

with a host interface processor disposed in the target device, retrieving the first command from the push buffer and initiating processing of the first command by the target device.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 28, 2010
From: MEJDRICH, ERIC O.; SCHARDT, PAUL E.; SHEARER, ROBERT A.; TUBBS, MATTHEW R.
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 024603/0895 →
Continuity (1)
Related Publication 20110320724A1 · Dec 29, 2011