Newsgroups: comp.parallel
From: stevem@cs.ualberta.ca (Steve MacDonald)
Subject: Re: Questions about Parallel Processing
Organization: University of Alberta
Date: 1 Apr 1995 07:28:28 GMT
Message-ID: <3lrkfe$alv@usenet.srv.cis.pitt.edu>

In article <3lhmcp$a0h@usenet.srv.cis.pitt.edu> 3esw4@qlink.queensu.ca (Ed Willis) writes:
>	I am interested in creating a software model of a MIMD parallel 
>processing machine on my serial computer.  What problems can I assume 
>are solved?  The most immediate problems that come to mind are:  
>
>	1.  One cpu needs the register contents of another.

     You will probably find this level of interconnection is too fine for
any practical MIMD machine.  MIMD systems, by definition, are loosely
connected.

>	2.  More than one cpu requires access to memory (or a device).

     Several more options for this are available.  You can use message
passing, shared memory, have each processor (or associated local memory
manager) process such request, etc...  If you look up some parallel
computer architectures, you will find many ways of accomplishing this.

>	Presumably if the number of cpu's is relatively small, the first
>problem can be solved by wiring them all together.  How is this problem
>solved for a larger number?  

     Again, several options, not all of them good.  You can use a hierarchical
setup, hypercube, ethernet,...  You'll have to do some work here, and decide
on the characteristics you want your machine to have, and find the best
solution for that model.

>For the second question, I am not really 
>worried about the nature of the solution but rather whether or not there
>is one.  Lastly, at the assembly language level, how is an instruction
>like "add argument to accumulator" handled?  Does one have to specify at
>all times the cpu in question?  I hope these questions are not too 
>trivial for this forum.  Thanks in advance for your help.

     MIMD machines have no central control - they are a collection of
completely independnt CPUs that don't even have to be executing the same
code.  An example of a MIMD machine is a set of workstations connected via
ethernet.  They all execute their own programs, and use communication to
collate results when necessary.  There is no one machine that controls them
at the instruction level; they all handle those details individually.  If
you think about it, using a central controller for instructions in such an
environment would reduce your CPU speed to maybe a couple hundred instructions
per second, probably even less with contention at the controller.

Steve

