IP Library Granted Patent US 7,698,473
Granted Patent B2
US 7,698,473 · App. 11/029,891 · Granted Apr 13, 2010

Methods and apparatus for list transfers using DMA transfers in a multi-processor system

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,698,473
App. No.
11/029,891
Granted
Apr 13, 2010
Kind
B2
Abstract

Methods and apparatus provide for transferring a plurality of data blocks between a shared memory and a local memory of a processor in response to a single DMA command issued by the processor to a direct memory access controller (DMAC), wherein the processor is capable of operative communication with the shared memory and the DMAC is operatively coupled to the local memory.

Claims (41)

1. An apparatus, comprising:

a plurality of parallel processors, each capable of operative communication with a shared memory, each processor including a local memory that is adapted for execution of instructions therein, and each processor including a direct memory access controller (DMAC) coupled to the local memory of such processor and each DMAC operating to facilitate transfer of a plurality of data blocks between the shared memory and the local memory of such processor in response to a single, respective DMA command issued by such processor, wherein:

each of the plurality of data blocks includes a respective number of data words, the respective number being equal to a respective, specified data block size,

the single DMA command of a given transfer does not include any specified data block size information for any of the plurality of data blocks,

each processor is operable to establish a list within the local memory thereof including a plurality of entries, each entry being identified by a respective one of the DMA commands, each entry having at least a starting address of a block of data to be transferred and a size of the data block to be transferred in response to such DMA command, and at least some of the entries of the list being linked such that the DMAC is operable to use one entry in the list to locate another entry in the list, and

the DMAC is operable to use the starting address and the size specified in each entry identified by a respective one of the DMA commands to identify a corresponding data block for transfer, and to transfer such data block, between the shared memory and the local memory of the at least one processor.

2. The apparatus of claim 1 , wherein the entries of the list include at least one of forward and backward pointers to establish links between the entries.

3. The apparatus of claim 1 , wherein the DMA command is adapted to specify that the plurality of data blocks are to be copied from the shared memory to the local memory of a given one of the plurality of processors.

4. The apparatus of claim 3 , wherein the DMA command is adapted to specify that the plurality of data blocks are to be copied from discontiguous areas of the shared memory to contiguous areas of the local memory of the given one of the plurality of processors.

5. The apparatus of claim 3 , wherein the DMAC is adapted to respond to the DMA command by copying the plurality of data blocks from discontiguous areas of the shared memory to contiguous areas of the local memory of the given one of the plurality of processors.

6. The apparatus of claim 1 , wherein the DMA command is adapted to specify that the plurality of data blocks are to be copied from the local memory of the given one of the plurality of processors to the shared memory.

7. The apparatus of claim 6 , wherein the DMA command is adapted to specify that the plurality of data blocks are to be copied from contiguous areas of the local memory of the given one of the plurality of processors to discontiguous areas of the shared memory.

8. The apparatus of claim 6 , wherein the DMAC is adapted to respond to the DMA command by copying the plurality of data blocks from contiguous areas of the local memory of the given one of the plurality of processors to discontiguous areas of the shared memory.

9. The apparatus of claim 1 , wherein the local memory of each of the plurality of processors is not a hardware cache memory.

10. The apparatus of claim 1 , further comprising a main processor operatively coupled to the plurality of processors, capable of being coupled to the shared memory, and operable to manage the plurality of processors.

11. The apparatus of claim 1 , wherein the processors, the local memories, and the DMACs are disposed on a common semiconductor substrate.

12. The apparatus of claim 1 , further comprising the shared memory coupled to the processors over a bus.

13. The apparatus of claim 1 , wherein the processors, the associated local memories, the DMACs and the shared memory are disposed on a common semiconductor substrate.

14. An apparatus, comprising:

a plurality of parallel processors capable of operative communication with a shared memory, each processor including: a local memory that is not a hardware cache memory and is adapted for execution of instructions therein, and a direct memory access controller (DMAC) coupled to the local memory of the processor; and

a main processor operatively coupled to the processors, capable of being coupled to the shared memory, and operable to manage the plurality of processors, wherein

the DMAC of each processor is operable to facilitate transfer of a plurality of data blocks between the shared memory and the respective local memory of each such processor in response to a single DMA command issued by each such processor,

each of the plurality of data blocks includes a respective number of data words, the respective number being equal to a respective, specified data block size,

the single DMA command of a given transfer does not include any specified data block size information for any of the plurality of data blocks,

each processor is operable to establish a list within the local memory thereof including a plurality of entries, each entry being identified by a respective one of the DMA commands, each entry having at least a starting address of a block of data to be transferred and a size of the data block to be transferred in response to such DMA command, and at least some of the entries of the list being linked such that the DMAC is operable to use one entry in the list to locate another entry in the list, and

the DMAC is operable to use the starting address and the size specified in each entry identified by a respective one of the DMA commands to identify a corresponding data block for transfer, and to transfer such data block, between the shared memory and the local memory of the at least one processor.

15. The apparatus of claim 14 , further comprising a hardware cache memory associated with the main processor and operable cache data obtained from at least one of the shared memory and one or more of the local memories of the processors.

16. The apparatus of claim 14 , wherein the local memory of each of the plurality of processors is not a hardware cache memory.

17. A method, comprising:

establishing a list within a local memory of a given one of a plurality of processors, each list including a plurality of entries, each entry being identified by a respective DMA command, each entry having at least a starting address of a block of data to be transferred and a size of the data block to be transferred in response to such DMA command, and at least some of the entries of the list being linked; and

transferring a plurality of data blocks between a shared memory and a local memory of a given one of a plurality of parallel processors in response to a single DMA command issued by the given processor to a direct memory access controller (DMAC) of such processor, each of the plurality of data blocks including a respective number of data words, the respective number being equal to a respective, specified data block size, the single DMA command of a given transfer does not include any specified data block size information for any of the plurality of data blocks, the DMAC using the staffing address and the size specified in the entry identified by such single DMA command, and if linked using the staffing addresses and the sizes specified by such linked entries, to identify corresponding data blocks for the transfer, and to transfer such data blocks, between the shared memory and the local memory of the given processor.

18. The method of claim 17 , wherein the entries of the list include at least one of forward and backward pointers to establish links between the entries.

19. The method of claim 17 , wherein the DMA command is adapted to specify that the plurality of data blocks are to be copied from the shared memory to one of the local memories of the processors.

20. The method of claim 17 , further comprising copying the plurality of data blocks from discontiguous areas of the shared memory to contiguous areas of one of the local memories of the processors.

21. The method of claim 17 , wherein the DMA command is adapted to specify that the plurality of data blocks are to be copied from the local memory of the given processor to the shared memory thereof.

22. The method of claim 17 , further comprising copying the plurality of data blocks from contiguous areas of one of the local memories of the processors to discontiguous areas of the shared memory.

23. A storage medium containing a software program, the software program being operable to cause a processor to execute actions including:

establishing a list within a local memory of a given one of a plurality of processors, each list including a plurality of entries, each entry being identified by a respective DMA command, each entry having at least a staffing address of a block of data to be transferred and a size of the data block to be transferred in response to such DMA command, and at least some of the entries of the list being linked; and

transferring a plurality of data blocks between a shared memory and a local memory of a given one of a plurality of parallel processors in response to a single DMA command issued by the given processor to a direct memory access controller (DMAC) thereof, each of the plurality of data blocks including a respective number of data words, the respective number being equal to a respective, specified data block size, the single DMA command of a given transfer does not include any specified data block size information for any of the plurality of data blocks, the DMAC using the starting address and the size specified in the entry identified by such single DMA command, and if linked using the staffing addresses and the sizes specified by such linked entries, to identify corresponding data blocks for the transfer, and to transfer such data blocks, between the shared memory and the local memory of the given processor.

24. The storage medium of claim 23 , further comprising copying the plurality of data blocks from discontiguous areas of the shared memory to contiguous areas of one of the local memories of the processors.

25. The storage medium of claim 23 , further comprising copying the plurality of data blocks from contiguous areas of one of the local memories of the processors to discontiguous areas of the shared memory.

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 →