This table is known as Flynn schema and tries to categorize parallel computers --- there are other schemas like this, but in general they end up being inaccurate (this one too).
It is based on two concepts: the instruction flow and data flow. The instruction flow counts how many instructions are executed, and the data flow consists of the set of operands of these functions.
In general terms these flows are independent and therefore we can combine them in any way we want, which results in the 4 types of the scheme.
1. SISD - Single instruction - Single Data
SISD is the representation in Flynn's scheme of von Neumann's classic computer. It has only one stream of instruction and data, so that only one operation is done at a time --- purely sequential.
2. SIMD - Single instruction - Multiple Data
Machines of this type have only one instruction stream, but have multiple calculation units. This means that the machine is capable of executing the same instruction in a data set simultaneously.
There is a classic example for this type: vector processors, but these are increasingly rare. However, the concept is more alive than ever in conventional processors using the SSE instructions of modern processors (from the pentium III forward) and video cards that specialize in this type of operation --- an operation performed on an image is the same operation performed on various data (different points of the image).
3. MISD - Multiple instruction - Single data
MISD machines operate several different instructions on a single die. It's almost a completely theoretical model, with no real example (although some people use the instruction pipeline as an example of MISD machine).
4. MIMD - Multiple instruction - Multiple data
They are machines that have independent CPUs, where each processing unit acts with different instructions on different data. Processors with more than one core fall into this model.
- What do these "single / multiple statements" mean?
It is the number of different statements that are executed at the same time.
Consider the von Neumann machine, in which the next statement to be executed is pointed to by the PC register ( program counter ), so the executed instruction is a single one. If you have more than one PC recorder, in case of multi-core processors where each core has its own PC, the executed instructions are multiple and each one is pointed to by a different PC. p>
- and these "unique / multiple data"?
Analog, is the number of operands that are used by the function.
Again considering the von Neumann machine, if you want to multiply an integer vector by a constant you need to multiply element by element by this constant. In a SIMD machine this multiplication occurs simultaneously, where the executed instruction is the same in all the processing units.
- How do these concepts affect when programming?
It's a complicated question. Theoretically you do not need to know any of these concepts, since everything can be done using a SISD machine.
Maas, we are thirsty for performance and we seek to solve problems as quickly as possible. Knowing these concepts allows you to have a wider range of tools when developing an application and therefore develop a more efficient program.