Posted on 2004-09-02
Last Modified: 2008-01-09
reading a book (Introduction to Parallel Processing Algorithms and Architectures) I came across some words (SISD - SIMD - MISD - MIMD - GMMP - GMSV - DMSV - DMMP) which are partially explained,but I don't entirely understand it.
What is ment by:
* SINGLE/MULTIPLE INSTRUCTION -> what is the "instruction", how can I imagine me an "instruction" ??
* SINGLE/MULTIPLE DATA -> same question but with the word "data" (I know of course what the "classical" meaning of "data" is , but I don't think you can use that meaning here.).

 Thanks in advance
Question by:DEEGBAL

Assisted Solution

joephus earned 65 total points
ID: 11968771
An instruction can be considered a routine.  A set of "things" or a single thing, general computations that need be performed to produce the desired results. Simply put in the eqution 2 + 2 = 4.  The + would be the instruction and the data would be the 2s.  The instructions say to add 2 to 2.  Now if you had multiple instructions on the same data you would be doing 2 + 2, 2 x 2, and 2 - 2 all at the same time.  At least this is the way I have always understood it.  
LVL 11

Assisted Solution

PennGwyn earned 65 total points
ID: 11968929
A machine that can add a whole bunch of things simultaneously is doing SIMD -- executing a Single Instruction (Add) against Multiple Data in parallel.

A machine that can take a couple of numbers and add, subtract, multiply, divide them simultaneously is doing Multiple Instructions on the Same (Single) Data.

A machine that consists of a bunch of processors, each doing their own independent thing, is doing MIMD.  

Prior to the Pentium, PC CPUs were essentially SISD.  At the Pentium, they started doing some low-level MIMD -- a Pentium can do two instructions at once, as long as they're on separate data so there's no ambiguity.  The MMX instructions added between Pentium I and II do some low-level SIMD, speeding graphical processing by applying the same transformations to several adjacent pixels at once.

It might be useful to take a look at a real-world CPU architecture.  You'll find it consists of some rules about how "values" are stored in memory, a set of registers (or "register file") for cached access to a hnadful of values at any given moment, and an "instruction set" of binary command patterns which transform regsiter or memory contents in various ways.  (One of the registers contains the memory address of the next instruction ("binary command pattern") to be interpreted; a GOTO command loads a new value into that register....)


Author Comment

ID: 11969479
Thanks, this makes a lot more clear.
Just to make sure I understand it correct:
     If you have for example an array with the first 1000000 int's, and you want to check each number if it is prime or not (using a cluster) by sending the first 100 numbers to the first computer, the second 100 numbers to the second computer, ... , the n-th 100 numbers to the n-th computer, where for each number a function "IsPrime(int)" is executed.
     Then you could say that your program (which runs on each computer) is SIMD (because: the same function [instruction] is always executed on different numbers [data] ).
     Is this correct ?

Accepted Solution

teuntje earned 70 total points
ID: 11995734

Author Comment

ID: 12016448
I'll give each one 1/3 th of the points

Featured Post

Netscaler Common Configuration How To guides


Question has a verified solution.




Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

12 Experts available now in Live!

Get 1:1 Help Now