Newsgroups: comp.parallel
From: SEKI Hajime <seki@mikan.cc.matsuyama-u.ac.jp>
Subject: Data-driven SIMD machine that can operate in MIMD-like manner
Organization: Matsuyama University
Date: 23 Oct 1995 14:48:41 GMT
Message-ID: <46ga09$374@usenet.srv.cis.pitt.edu>

Data-driven SIMD machine that can operate in MIMD-like manner.
 
The following is the abstract of the system.

-------------------------------------
	From the hardware point of view, the system comprises a 
control processor (CP), and a plurality of processor elements (PEs) 
connected mutually through a packet transmission network (PTN); 
each PE has a control unit (CU) which is designed to process 
instructions issued by the CP in the SIMD manner, and a data-driven 
processing unit (DPU) which is designed to perform arithmetic/logic 
operations and data transfers to destination PEs through the PTN in 
a data-driven manner; the system is so structured that the CP 
broadcasts instructions to the CU in each PE to set the DPU contents 
that are to be performed in the data-driven manner; and operations 
in the DPU based on the data-driven manner are performed in parallel 
with setting of the DPU.
	The system may be so structured that the DPU in each PE has 
a means for performing arithmetic/logic operations defined by a 
program statement arranged in reverse Polish notation in the data-
driven manner and a means for sending a packet including a variable 
identifier and its corresponding variable data to the DPU in the 
destination PE when the corresponding variable data is obtained.
	The DPU comprises an associative data memory (ADM) which has 
cells each of which is designed to accommodate a variable identifier 
and a data, and which has an associative function for comparing a 
variable identifier transferred externally with variable identifiers 
each of which is accommodated in one of the cells of the associative 
data memory, and writing a data transferred together with the variable 
identifier transferred externally in each cell of the associative 
data memory matched by comparison,  a stack memory (SM),  an 
instruction memory (IM) having cells each of which is designed to 
accommodate contents of an operation, and an operation unit (OU) for 
performing arithmetic/logic operations;  and the DPU is so structured 
that the contents of the calculation defined by a program statement 
is set to be performed in the data-driven manner, transformed into a 
set of individual operations whose contents are written in the IM, 
and whose operand data are to be accommodated in the ADM, by 
manipulating the SM each time a program element which composes the 
program statement is conveyed from the CU to the DPU,  and that when 
an IM cell in which an operation is specified whose operand data are 
fully prepared in the ADM is detected, the operation is performed. 
(For details of DPU, please refer to Seki US Patent No. 5,333,320)
	The system may work in a manner analogous to the MIMD manner. 
Namely, the CP broadcasts instructions causing the CU in each PE, 
where instructions for setting the DPU and/or contents that are to be 
set are stored in its local memory, to process some members of the 
group consisting of the instructions for setting the DPU and the 
contents that are to be set stored in the local memory.

	Important terms are listed below to clarify their meanings 
in the above context.
	- Variable identifier: Variable refers to a data item with 
fixed word length whose storage area is reserved in one of local 
memories each of which is a component of a PE.  A variable identifier 
consists of two parts: the address of the PE having the local memory 
including the cell which is the storage area of the corresponding 
variable data and the address of the cell in the local memory.
	- Program element: Program element refers to a variable 
identifier, an immediate data or an operator indicative of an 
arithmetic/logic operation, a store operation or the like.  Each 
program element is tagged so that a variable identifier, an immediate 
data and an operator are mutually discriminated: in the case of a 
variable identifier, tagging clarifies the difference between 
representation of an operand address and representation of a result 
storage address.
	- Program statement: Program statement refers to a series of 
program elements arranged meaningfully in reverse Polish notation.  
A program statement begins with a program element representing a 
variable identifier indicative of a result storage area, and 
terminates in the program element representing the operator "=" 
indicative of a store of a data.  Each program element contained in 
a program statement representing a variable identifier shows either 
an operand address or a result storage address.
-----------------------------------

Thanks a lot.

Hajime Seki      seki@mikan.cc.matsuyama-u.ac.jp

