• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 1836
  • Last Modified:


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
3 Solutions
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.  
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....)

DEEGBALAuthor Commented:
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 ?
DEEGBALAuthor Commented:
I'll give each one 1/3 th of the points
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Free Tool: SSL Checker

Scans your site and returns information about your SSL implementation and certificate. Helpful for debugging and validating your SSL configuration.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Tackle projects and never again get stuck behind a technical roadblock.
Join Now