Parallel Processing is all about performing multiple processes at the same time either by using parallel hardware or by some kind of virtualization. Parallel hardware is always the first priority for processor developers because having multiple hardware bases retains the ease of processing instructions. Virtualization, on the other hand is a complex thing to achieve specially because, separate instructions are required for preparing a clone-like virtual processor. Even if we achieve this, we may use parallel hardware which in turn enables even more practicality to virtualization.
Here in this text, we are to discuss the following three ways of parallel processing:
Conceptually pipelining refers to the fact that multiple tasks can be performed at the same time simply by letting those hardwares do additional tasks that are free at the moment. In conventional pipelining tasks are distributed among parallel hardwares in such a way that multiple sub tasks that are required for completion of a single parental task, are performed at the same time.
Pipelining is adopted in the following two ways:
Arithmetic pipeline is used in processors to deal with the complex arithmetic operations. The sub-operations that constitute a particular part of an expression can all be executed at the same time using different parallel hardwares. The only thing to keep in mind is the precedence of operators. All operators of same precedence can be executed at the same time using different pipelines. Consider the following diagram:
Another pipelined approach is instruction pipeline. Since every instruction goes through different hardwares for different parts of its execution cycle. The goal here is to let the hardwares deal with different instructions at the same time. For example, consider a conventional processor with three different hardwares for FETCH, DECODE and EXECUTE tasks. When the first instruction is being fetched, the decode and execute circuits are free. But when the first instruction goes for decode, the fetch circuit can go busy with a second one. This way multiple instructions can be handled at the same time using instruction pipeline.Consider the following diagram:
Vectored processing is based upon the goal that, if a process requires two instructions to be executed and both on distant clocks, the processor must be aware about the projected next clock. This way processor can stay busy during the clock difference. In digital processing an instruction with the added information of its clock is considered as a vector and all these instructions (of this type) are called vector instructions. We denote these instructions as: V1, V2, V3, ............. Vn. A vectored processor keeps track of all such instructions from a separate memory block and all those vector instructions are executed at the same time for whom the actual instruction part is same or similar.
Array processing is a slightly different approach that provokes assymmetric multiprocessing. The assymmetry here is in the terms of instruction type and complexity. Array processors are advanced to such an extent that they use different hardwares for different types of instructions. Likewise, one hardware is doing simple instruction execution while a parallel one is performing complex statistical problems. Array processors are used specially in computers dealing with scientific operations.