IP Library Granted Patent US 7,243,200
Granted Patent B2
US 7,243,200 · App. 10/891,772 · Granted Jul 10, 2007

Establishing command order in an out of order DMA command queue

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 7,243,200
App. No.
10/891,772
Granted
Jul 10, 2007
Kind
B2
Abstract

A method, an apparatus, and a computer program are provided for controlling memory access. Direct Memory Access (DMA) units have become commonplace in a number of bus architectures. However, managing limited system resources has become a challenge with multiple DMA units. In order to mange the multitude of commands generated and preserve dependencies, embedded flags in commands or a barrier command are used. These operations then can control the order in which commands are executed so as to preserve dependencies.

Claims (50)

1. An apparatus for controlling memory access, comprising:

at least one processor, wherein the processor further comprises:

the ability to issue commands including a barrier command; and

an ability to embed a flag into an issued command;

a plurality of communication ports, wherein a plurality of commands are input by the at least one processor through at least a first communication channel of a plurality of communication channels;

a tag queue, wherein the tag queue assigns a tag number to each issued command to generate a plurality of tagged commands, wherein each tagged command is associated with the assigned tag number;

a command queue for storing the tagged commands, wherein the command queue further comprises an ability to sort the tagged commands; and

wherein the barrier command prevents execution of any of the tagged commands issued after the barrier command.

2. The apparatus of claim 1 , wherein the apparatus further comprises intermediate logic, wherein the intermediate logic at least transfers at least one tagged command from the command queue to at least a second communication channel.

3. The apparatus of claim 2 , wherein the apparatus further comprises a plurality of data buffers, wherein the plurality of data buffers are at least configured to be couple to at least a memory.

4. The apparatus of claim 3 , wherein the plurality of data buffers are at least configured to be coupled to the second communication channel.

5. The apparatus of claim 1 , wherein the tag numbers allow the tagged commands to be grouped, thereby forming a plurality of tag groups.

6. The apparatus of claim 5 , wherein the processor is configured to embed a fence flag into an issued command, and wherein the fence flag requires that all commands within a tag group including the command with the embedded fence flag and issued prior to the command with the embedded fence flag be completed prior to the execution of the command with the embedded fence flag.

7. The apparatus of claim 5 , wherein the processor is configured to embed a barrier flag into an issued command, and wherein the barrier flag requires that all commands within a tag group including the command with the embedded barrier flag and issued prior to the command with the embedded barrier flag be completed prior to the execution of any command issued after the command with the embedded barrier flag.

8. A method for controlling memory access, comprising:

receiving a first command from a processor to a control module to perform a memory operation;

embedding an flag in the first command to generate an embedded flag;

tagging the first command with a tag number;

queuing the first command in a command list;

ordering the command list at least based on an entry sequence into the control module and at least based on the embedded flags; and

executing the command list in order of the ordering.

9. The method of claim 8 , wherein the method further comprises associating commands with same tag number into a tag group.

10. The method of claim 9 , wherein the flag further comprises a fence flag to prevent execution of at least one command with an embedded fence flag in a first tag group issued until all commands issued prior to the at least one command with an embedded fence flag are executed.

11. The method of claim 8 , wherein the flag further comprises a barrier flag to prevent execution of any subsequent commands issued after at least one command embedded the barrier flag.

12. A method for controlling memory access, comprising:

receiving a plurality of commands from a processor, wherein each command performs a memory operation;

assigning a tag number to each of the commands;

using the tag numbers to assign each of the commands to one of a plurality of tag groups;

queuing the commands in a command list;

issuing a barrier command to prevent execution of any commands issued after the barrier command, regardless of tag group;

ordering the command list; and

executing the command list according to the ordering.

13. A computer program product for controlling memory access, the computer program product having a medium with a computer program embodied thereon, the computer program comprising:

computer program code for receiving a first command from a processor to a control module to perform a memory operation;

computer program code for embedding an flag in the first command to generate an embedded flag;

computer program code for tagging the first command with a tag number;

computer program code for computer program code for queuing the first command in a command list;

computer program code for ordering the command list based on an entry sequence into the control module and embedded flags; and

computer program code for executing the command list in order of the ordering.

14. The computer program product of claim 13 , wherein the method further comprises computer program code for associating commands with same tag number into a tag group.

15. The computer program product of claim 14 , wherein the flag further comprises a fence flag to prevent execution of at least one command with an embedded fence flag in a first tag group issued until all commands issued prior to the at least one command with an embedded fence flag are executed.

16. The computer program product of claim 13 , wherein the flag further comprises a barrier flag to prevent execution of any subsequent commands issued after at least one command embedded the barrier flag.

17. A computer program product for controlling memory access, the computer program product having a medium with a computer program embodied thereon, the computer program comprising:

computer program code for receiving a plurality of commands from a processor, wherein each command performs a memory operation;

computer program code for assigning a tag number to each of the commands;

computer program code for using the tag numbers to assign each of the commands to one of a plurality of tag groups;

computer program code for queuing the commands in a command list;

computer program code for issuing a barrier command to prevent execution of any commands issued after the barrier command, regardless of tag group;

computer program code for ordering the command list; and

computer program code for executing the command list according to the ordering.

Assignments (3)
CHANGE OF NAME Recorded Oct 13, 2016
From: SONY COMPUTER ENTERTAINMENT INC.
To: SONY INTERACTIVE ENTERTAINMENT INC.
Reel/Frame 040350/0891 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 27, 2011
From: SONY NETWORK ENTERTAINMENT PLATFORM INC.
To: SONY COMPUTER ENTERTAINMENT INC.
Reel/Frame 027449/0640 →
CHANGE OF NAME Recorded Dec 26, 2011
From: SONY COMPUTER ENTERTAINMENT INC.
To: SONY NETWORK ENTERTAINMENT PLATFORM INC.
Reel/Frame 027449/0001 →