A multi-processor system having a plurality of processors, the multi-processor system performing a processing based on execution codes generated by a program processing device, in which the program processing device inputs therein a parallel processing program with a thread description added thereto, partitions the program into threads, and generates the execution codes for the multi-processor system, the multi-processor system comprising, for each of a plurality of the processors:
- a storage unit;
- and
- a processing unit,
- the processing unit comprising:
- an inter-processor communication processing unit for performing control between the processors in a data flow machine-type data-driven control method;
- and
- an in-processor processing unit for performing control between the processors in a Neumann-type program-driven control method,
- the inter-processor communication processing unit performing a communication between the processors in synchronization with the in-processor processing unit, and detecting a communication data hazard between the processors, and
- the in-processor processing unit performing a processing based on the execution codes stored in the storage unit, and executing or suspending the execution codes according to a result of detecting the data hazard,
- wherein the storage unit stores therein a data communication port table for holding port information,
- the port information includes a data size, a data storage address, a transfer port ID each for performing an inter-processor communication of a direct access-type data, a pointer reference data, and a pointer data, and, additionally, port alias information for performing an inter-processor communication of the pointer reference data and the pointer data,
- the port alias information includes information on a pointer alias including a data size, a data storage address, and an alias ID for each of all data objects to be referenced by a pointer,
- if an inter-processor communication of a direct access-type data is performed,
- the inter-processor communication processing unit of a first processor on a transfer side obtaining the port information of the direct access-type data;
- identifying, using the data storage address in the port information, a data storage address of the direct access-type data stored in the storage unit of the first processor on the transfer side;
- and transferring a data having the identified data storage address and the transfer port ID to a second processor on a receive side, and
- the inter-processor communication processing unit of the second processor on the receive side identifying a data storage address of the received data, which is stored in the storage unit of the second processor on the receive side, using the received transfer port ID;
- and storing the received data into the identified data storage address,
- if an inter-processor communication of a pointer reference data is performed,
- the inter-processor communication processing unit of the first processor on the transfer side obtaining the port alias information of the pointer reference data;
- identifying a data storage address of a data object referenced by a pointer of the pointer reference data, stored in the storage unit of the first processor on the transfer side, using the port alias information;
- and transferring the transfer port ID, an alias ID of the pointer reference data, and all data objects referenced by the pointer, to the second processor on the receive side, and
- the inter-processor communication processing unit of the second processor on the receive side identifying a data storage address of each of the data objects, stored in the storage unit of the second processor on the receive side, using the received transfer port ID and the alias ID;
- and storing the received data objects into respective identified data storage addresses, and
- if an inter-processor communication of a pointer data is performed,
- the inter-processor communication processing unit of the first processor on the transfer side obtaining the port alias information of a pointer of interest;
- identifying a data storage address of a data object referenced by a pointer of the pointer data, and stored in the storage unit of the first processor on the transfer side, using the port alias information;
- and computing a pointer offset value by subtracting the data storage address from a value of the pointer;
- and transferring the transfer port ID, the alias ID of the pointer, and the pointer offset value to the second processor on the receive side, and
- the inter-processor communication processing unit of the second processor on the receive side identifying a data storage address of a data object stored in the storage unit of the second processor on the receive side, using the received transfer port ID and the alias ID;
- computing a pointer value, which is valid in the storage unit of the second processor on the receive side, by adding the data storage address to the received pointer offset value;
- and storing the pointer value into the storage unit of the second processor on the receive side.