# Operation of SIMD Array Processor

The SIMD from of parallel processing is called **Array processing**. Figure shows the array processor. A two-dimensional grid of processing elements transmits an instruction stream from a central control processor. As each instruction is transmitted, all elements execute it simultaneously. Each processing element is connected to its four nearest neighbors for the purposes of data exchange. Connections around the end can be provided on both rows and columns, but they are not shown in figure.

It is instructive to consider a specific calculation to understand the capabilities of the SIMD architecture. Grids of processing elements can be used to salve two-dimensional problems. For example, if each element of the grid represents a point in space, the array can be used to calculate the temperature at points in the interior of a conduction plane.

Suppose the edges of the plane are held at certain temperatures. An apporoximate solution at discrete points represented by processing elements is as follows. The outer edges are initialized at a specified temperature. All internal points are initial to some arbitrary values, not necessarily equal. Iterations are then executed in parallel in each element. Each iteration involves calculating a better estimate of temperature at a point by averaging the current values of its four nearest neighbors. Processes stop when ordinal estimates are closer than some predetermined small difference.

The capacity required in array processors to perform such calculations is quite simple. Each element must be able to exchange values with each of its neighbors on the paths shown in figure. Each processing element has some registers and some local memory to store the data. It also has a register, called a network register, which is used to facilitate the movement of values from its neighbors. The central processor can broadcast an instruction to move values accross the network, registering a step up, down, left, or right.

Each processing element also has an ALU to execute arithmetic instructions tranmitted by the control processor. Using these features, a sequence of instructions can be transmitted repeatedly to implement iterative loops. The control processor must be able to determine that each element of the processing has developed its own component of temperature to the required accuracy. To do this, each element sets the internal status bit to 1 to indicate this condition. The grid interconnect includes a feature that allows the controller to detect that all status bits have been set at the end of an iteration.

Array processors are highly specialized machines. They are well suited numerical problems that can be expressed in matrix or vector format. How they are not very useful in speeding up general computations.

Don’t stop now and take your learning to the next level. Learn all the important concepts of Data Structures and Algorithms with the help of the most trusted course: **DSA Self Paced**. Become industry ready at a student-friendly price.

## Recommended Posts:

- Types of Array Processor
- Difference between SIMD and MIMD
- Macro Processor
- Difference between Fine-Grained and Coarse-Grained SIMD Architecture
- Vector processor classification
- Introduction of Input-Output Processor
- Difference between RISC and CISC processor | Set 2
- Computer Organization | Micro-Operation
- PROJECT Operation in Relational Algebra
- 8086 program to reverse 8 bit number using 8 bit operation
- 8086 program to reverse 16 bit number using 8 bit operation
- 8085 program to perform AND operation in nibbles of 8 bit number
- Locality of Reference and Cache Operation in Cache Memory
- 8086 program to determine modulus of first array elements corresponding to another array elements
- Sum of all elements in an array between zeros
- Array Operations in R Programming
- Longest subsequence of even numbers in an Array
- Check if an Array is a permutation of numbers from 1 to N
- How to convert a DOM nodelist to an array using JavaScript ?
- Remove all the fibonacci numbers from the given array

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.