Methods and apparatus for synchronizing data access to a local memory in a multi-processor system
First Claim
Patent Images
1. An apparatus, comprising:
- a plurality of parallel processors capable of operative communication with a shared memory;
a local memory operatively coupled to a first of the processors such that data may be transferred between the shared memory and the local memory for execution of one or more programs therein;
a memory interface circuit, including a Direct Memory Access Controller (DMAC) operable to facilitate data transfers into and out of the local memory of the first processor over a first data transfer path;
a channel interface circuit operable to facilitate data transfers into and out of the local memory of the first processor from and to others of the processors over a second data transfer path;
a synchronization queue having a respective synchronization flag for each initiated data transfer into the local memory; and
a storage circuit,wherein the memory interface circuit is operable to;
copy a first value of the respective synchronization flag associated with a first data transfer into the storage circuit in response to a first recover synchronization request, the first data transfer being facilitated by the DMAC circuit over the first data transfer path into at least a first location in the local memory of the first processor,change the first value within the storage circuit in response to completion of the first data transfer into the local memory, andproduce a first synchronization signal when the first value indicates that the first data transfer into the local memory has been completed, the first synchronization signal indicating that a data transfer from the at least first location in the local memory of the first processor over the second data transfer path using the channel interface circuit would result in valid data being read.
3 Assignments
0 Petitions
Accused Products
Abstract
Methods and apparatus provide for receiving a request from an initiating device to initiate a data transfer into a local memory for execution of one or more programs therein, the local memory being operatively coupled to a first of a plurality of parallel processors capable of operative communication with a shared memory; facilitating the data transfer into the local memory; and producing a synchronization signal indicating that the data transfer into the local memory has been completed.
17 Citations
49 Claims
-
1. An apparatus, comprising:
-
a plurality of parallel processors capable of operative communication with a shared memory; a local memory operatively coupled to a first of the processors such that data may be transferred between the shared memory and the local memory for execution of one or more programs therein; a memory interface circuit, including a Direct Memory Access Controller (DMAC) operable to facilitate data transfers into and out of the local memory of the first processor over a first data transfer path; a channel interface circuit operable to facilitate data transfers into and out of the local memory of the first processor from and to others of the processors over a second data transfer path; a synchronization queue having a respective synchronization flag for each initiated data transfer into the local memory; and a storage circuit, wherein the memory interface circuit is operable to; copy a first value of the respective synchronization flag associated with a first data transfer into the storage circuit in response to a first recover synchronization request, the first data transfer being facilitated by the DMAC circuit over the first data transfer path into at least a first location in the local memory of the first processor, change the first value within the storage circuit in response to completion of the first data transfer into the local memory, and produce a first synchronization signal when the first value indicates that the first data transfer into the local memory has been completed, the first synchronization signal indicating that a data transfer from the at least first location in the local memory of the first processor over the second data transfer path using the channel interface circuit would result in valid data being read. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14)
-
-
15. An apparatus, comprising:
-
a plurality of parallel processors capable of operative communication with a shared memory; a plurality of local memories, each being operatively coupled to a respective one of the processors such that data may be transferred between the shared memory and the local memory for execution of one or more programs therein; a plurality of memory interface circuits, each including a Direct Memory Access Controller (DMAC) operable to facilitate data transfers into and out of a respective one of the local memories over a respective first data transfer path; a plurality of channel interface circuits, each operable to facilitate data transfers into and out of a respective one of the local memories from and to others of the processors over a respective second data transfer path; a plurality of synchronization queues, each having a respective synchronization flag for each initiated data transfer into a respective one of the local memories, and a storage circuit, wherein each of the memory interface circuits is operable to; copy a first value of the respective synchronization flags associated with a first data transfer into the respective storage circuit in response to a first recover synchronization request, the first data transfer being facilitated by the respective DMAC circuit over the respective first data transfer path into at least a first location in the respective local memory change the first value within the respective storage circuit in response to completion of the first data transfer into the respective local memory, and produce a first synchronization signal when the first value indicates that the first data transfer into the respective local memory has been completed, the first synchronization signal indicating that a data transfer from the at least first location in the respective local memory over the respective second data transfer path using the respective channel interface circuit would result in valid data being read. - View Dependent Claims (22)
-
-
16. An apparatus, comprising:
-
a plurality of parallel processors capable of operative communication with a shared memory; a local memory operatively coupled to a first of the processors such that data may be transferred between the shared memory and the local memory for execution of one or more programs therein; a memory interface circuit, including a Direct Memory Access Controller (DMAC) operable to facilitate data transfers into and out of the local memory of the first processor over a first data transfer path; a channel interface circuit operable to facilitate data transfers into and out of the local memory of the first processor from and to others of the processors over a second data transfer path; a synchronization queue having a respective synchronization flag for each initiated data transfer into the local memory; and a storage circuit, wherein the memory interface circuit is operable to; copy a first value of the respective synchronization flag associated with a first data transfer into the storage circuit in response to a first recover synchronization request, the first data transfer being facilitated by the DMAC circuit over the first data transfer path into at least a first location in the local memory of the first processor, change the first value within the storage circuit in response to completion of the first data transfer into the local memory, and produce a first synchronization signal in response to a recover synchronization request by a second one of the processors and when the first value indicates that the first data transfer into the local memory has been completed, the first synchronization signal indicating that a data transfer from the at least first location in the local memory of the first processor over the second data transfer path using the channel interface circuit would result in valid data being read. - View Dependent Claims (17, 18, 19, 20, 21)
-
-
23. An apparatus, comprising:
-
a plurality of parallel processors capable of operative communication with a shared memory; a local memory operatively coupled to a first of the processors such that data may be transferred between the shared memory and the local memory for execution of one or more programs therein; a memory interface circuit, including a Direct Memory Access Controller (DMAC) operable to facilitate data transfers into and out of the local memory of the first processor over a first data transfer path; a channel interface circuit operable to facilitate data transfers into and out of the local memory of the first processor from and to others of the processors over a second data transfer path; a synchronization queue having a respective synchronization flag for each initiated data transfer into the local memory; and a storage circuit, wherein the memory interface circuit is operable to; copy a first set of the values of the respective synchronization flags associated with a first set of data transfers into the storage circuit in response to a first recover synchronization request, the first set of data transfers being facilitated by the DMAC circuit over the first data transfer path into at least first locations in the local memory of the first processor, change the first set of values within the storage circuit in response to respective completions of the respective data transfers into the local memory, and produce a first synchronization signal when the first set of values indicates that the first set of data transfers into the local memory has been completed, the first synchronization signal indicating that data transfers from the at least first locations in the local memory of the first processor over the second data transfer path using the channel interface circuit would result in valid data being read. - View Dependent Claims (24, 25)
-
-
26. An apparatus, comprising:
-
a plurality of parallel processors capable of operative communication with a shared memory; a local memory operatively coupled to a first of the processors such that data may be transferred between the shared memory and the local memory for execution of one or more programs therein; a memory interface circuit, including a Direct Memory Access Controller (DMAC) operable to facilitate data transfers into and out of the local memory of the first processor over a first data transfer path; a channel interface circuit operable to facilitate data transfers into and out of the local memory of the first processor from and to others of the processors over a second data transfer path; a synchronization queue having a respective synchronization flag for each initiated data transfer into the local memory; and a storage circuit, wherein the memory interface circuit is operable to; copy a value of the respective synchronization flags associated with a data transfer into the storage circuit in response to a recover synchronization request by at least one of the first processor and a second one of the processors, the data transfer being facilitated by the DMAC circuit over the first data transfer path into at least a first location in the local memory of the first processor, change the value within the storage circuit in response to completion of the data transfer into the local memory, and produce a synchronization signal indicating that the data transfer into the local memory has been completed in response to the value indicating that the data transfer into the local memory has been completed, the synchronization signal indicating that a data transfer from the at least first location in the local memory of the first processor over the second data transfer path using the channel interface circuit would result in valid data being read, wherein the at least one of the first and second processors is operable to issue the recover synchronization request in response to initiation of the data transfer to the local memory by an external device in operative communication with the apparatus through a communication network. - View Dependent Claims (27, 28, 29, 30)
-
-
31. A method, comprising:
-
receiving a request from an initiating device to initiate a data transfer into a local memory for execution of one or more programs therein, the local memory being operatively coupled to a first of a plurality of parallel processors capable of operative communication with a shared memory; facilitating the data transfer into the local memory over a first data transfer path using a memory interface circuit, including a Direct Memory Access Controller (DMAC); facilitating data transfers into and out of the local memory of the first processor from and to others of the processors over a second data transfer path using a channel interface circuit; copying a value of a respective synchronization flag associated with the data transfer from a synchronization queue, having a respective synchronization flag for each initiated data transfer into the local memory, into a storage circuit in response to a first recover synchronization request, the data transfer being facilitated by the DMAC circuit over the first data path into at least a first location in the local memory of the first processor; changing the value within the storage circuit in response to completion of the data transfer into the local memory; and producing a synchronization signal when the value indicates that the data transfer into the local memory has been completed, the synchronization signal indicating that a data transfer from the at least first location in the local memory of the first processor over the second data transfer path using the channel interface circuit would result in valid data being read. - View Dependent Claims (32, 33, 34, 35, 36, 37)
-
-
38. A method, comprising:
-
receiving a request from an initiating device to initiate a data transfer into a local memory for execution of one or more programs therein, the local memory being operatively coupled to a first of a plurality of parallel processors capable of operative communication with a shared memory; facilitating the data transfer into the local memory over a first data transfer path using a memory interface circuit, including a Direct Memory Access Controller (DMAC); facilitating data transfers into and out of the local memory of the first processor from and to others of the processors over a second data transfer path using a channel interface circuit; receiving a notification signal at a second one of the plurality of processors from the initiating device indicating that the data transfer to the local memory has been initiated; issuing a recover synchronization request from the second processor for a synchronization signal such that the second processor may receive notification that the data transfer into the local memory has been completed; copying a value of a respective synchronization flag associated with the data transfer from a synchronization queue, having a respective synchronization flag for each initiated data transfer into the local memory, into a storage circuit in response to the recover synchronization request, the data transfer being facilitated by the DMAC circuit over the first data path into at least a first location in the local memory of the first processor; changing the value within the storage circuit in response to completion of the data transfer into the local memory; and producing the synchronization signal when the value indicates the data transfer into the local memory has been completed, the synchronization signal indicating that a data transfer from the at least first location in the local memory of the first processor over the second data transfer path using the channel interface circuit would result in valid data being read. - View Dependent Claims (39)
-
-
40. A method, comprising:
-
receiving a request from an external device to initiate a data transfer into a local memory for execution of one or more programs therein, the local memory being operatively coupled to a first of a plurality of parallel processors capable of operative communication with a shared memory, the external device being in operative communication with the parallel processors through a communication network; receiving a notification signal at one of the first processor and a second one of the plurality of processors from the external device indicating that the data transfer to the local memory has been initiated; issuing a recover synchronization request from one of the first and second processors for a synchronization signal such that the one of the first and second processors may receive notification that the data transfer into the local memory has been completed; copying a value of a respective synchronization flag associated with the data transfer from a synchronization queue, having a respective synchronization flag for each initiated data transfer into the local memory, into a storage circuit in response to the recover synchronization request, the data transfer being facilitated by a Direct Memory Access Controller (DMAC) circuit over a first data path into at least a first location in the local memory of the first processor; changing the value within the storage circuit in response to completion of the data transfer into the local memory; and producing the synchronization signal when the value indicates that the data transfer into the local memory has been completed, the synchronization signal indicating that a data transfer from the at least first location in the local memory of the first processor over a second data transfer path using a channel interface circuit would result in valid data being read. - View Dependent Claims (41, 42)
-
-
43. A method, comprising:
-
receiving a plurality of requests from one or more initiating devices, each request initiating a data transfer into a local memory for execution of one or more programs therein, the local memory being operatively coupled to a first of a plurality of parallel processors capable of operative communication with a shared memory; copying a first set of values of respective synchronization flags associated with a first set of the data transfers from a synchronization queue, having a respective synchronization flag for each initiated data transfer into the local memory, into a storage circuit in response to one or more recover synchronization request for a synchronization signal, the first set of data transfers being into the local memory over a first data transfer path using a memory interface circuit, including a Direct Memory Access Controller (DMAC); changing the first set of values within the storage circuit in response to completion of the first set of data transfers into the local memory; and producing a synchronization signal indicating that the first set of data transfers into the local memory has been completed, the synchronization signal indicating that data transfers from the local memory of the first processor over a second data transfer path using a channel interface circuit would result in valid data being read.
-
-
44. A storage medium containing a software program, the software program being operable to cause a processor to execute actions including:
-
receiving a request from an initiating device to initiate a data transfer into a local memory for execution of one or more programs therein, the local memory being operatively coupled to a first of a plurality of parallel processors capable of operative communication with a shared memory; facilitating the data transfer into the local memory over a first data transfer path using a memory interface circuit, including a Direct Memory Access Controller (DMAC); facilitating data transfers into and out of the local memory of the first processor from and to others of the processors over a second data transfer path using a channel interface circuit; copying a value of a respective synchronization flag associated with the data transfer from a synchronization queue, having a respective synchronization flag for each initiated data transfer into the local memory, into a storage circuit in response to one or more recover synchronization request for a synchronization signal the data transfer being facilitated by the DMAC circuit over the first data path into at least a first location in the local memory of the first processor; changing the value within the storage circuit in response to completion of the data transfer into the local memory; and producing a synchronization signal when the value indicates that the data transfer into the local memory has been completed, the synchronization signal indicating that a data transfer from the at least first location in the local memory of the first processor over the second data transfer path using the channel interface circuit would result in valid data being read.
-
-
45. A storage medium containing a software program, the software program being operable to cause a processor to execute actions including:
-
receiving a request from an external device to initiate a data transfer into a local memory for execution of one or more programs therein, the local memory being operatively coupled to a first of a plurality of parallel processors capable of operative communication with a shared memory, the external device being in operative communication with the parallel processors through a communication network; receiving a notification signal at one of the first processor and a second one of the plurality of processors from the external device indicating that the data transfer to the local memory has been initiated; issuing a recover synchronization request from one of the first and second processors for a synchronization signal such that the one of the first and second processors may receive notification that the data transfer into the local memory has been completed; copying a value of a respective synchronization flag associated with the data transfer from a synchronization queue, having a respective synchronization flag for each initiated data transfer into the local memory, into a storage circuit in response to the recover synchronization request, the data transfer being facilitated by a Direct Memory Access Controller (DMAC) circuit over a first data path into at least a first location in the local memory of the first processor; changing the value within the storage circuit in response to completion of the data transfer into the local memory; and producing the synchronization signal when the value indicates that the data transfer into the local memory has been completed, the synchronization signal indicating that a data transfer from the at least first location in the local memory of the first processor over a second data transfer path using a channel interface circuit would result in valid data being read.
-
-
46. An apparatus, comprising:
-
a shared memory; a plurality of parallel processors capable of operative communication with the shared memory, each processor including a processor core unit and a memory controller unit; a plurality of local memories, each being disposed in a respective one of the processor core units such that data may be transferred between the shared memory and the respective local memories for execution of one or more programs therein; a plurality of memory interface circuits, each being disposed in a respective one of the processor core units, and each being operable to facilitate data transfers into and out of a respective one of the local memories over a respective first data transfer path; a plurality of Direct Memory Access Controller (DMAC) controllers, each being disposed in a respective one of the memory controller units, operatively coupled to a respective one of the memory interface circuits, and operable to facilitate data transfers between a respective one of the local memories and the shared memory and/or one or more others of the local memories of others of the plurality of parallel processors, a plurality of channel interface circuits, each being disposed in a respective one of the processor core units, and each operable to facilitate data transfers into and out of a respective one of the local memories from and to others of the plurality of parallel processors over a respective second data transfer path; a plurality of synchronization queues, each being disposed in a respective one of the processor core units, each having a respective synchronization flag for each initiated data transfer into a respective one of the local memories; a plurality of storage circuits, each being disposed in a respective one of the processor core units and operatively coupled to a respective one of the plurality of synchronization queues; and a managing processor operatively coupled to the shared memory and the plurality of parallel processors, and operating to issue a first recover synchronization request directly or indirectly to a first one of the memory interface circuits of a first one of the plurality of parallel processors in response to a data transfer initiating device sending a write data notification to the managing processor indicating a first data transfer into a first one of the local memories over the respective first data transfer path of the first one of the plurality of parallel processors; wherein the first memory interface circuit is operable to; copy a first value of the respective synchronization flag, associated with the first data transfer, into a first of the storage circuits of the first one of the plurality of parallel processors in response to the first recover synchronization request, change the first value within the first storage circuit in response to completion of the first data transfer into the first local memory, and produce a first synchronization signal when the first value indicates that the first data transfer into the first local memory has been completed, the first synchronization signal indicating that a data transfer from the first local memory of the first of the plurality of processors over the second data transfer path using the channel interface circuit would result in valid data being read. - View Dependent Claims (47, 48, 49)
-
Specification