How parallel processing is achieved in pipelining

Parallelization (processor technology)

Processor developers have discovered over time that the processing speed of a processor cannot be increased by simply increasing the clock rate. So there are always delays in the processing of the program code. For example, when accessing the memory or the peripherals. In such a case, the processor is busy waiting. It only continues in the program code when the data has been loaded into the register from the memory or from the periphery. This waiting time means that a large part of the available computing power is not used at all.
This is why processor developers thought very early on how they would have to structure a processor internally so that it could continue in the program code while data was being loaded from the outside. This has led to the fact that modern processors distribute the pending tasks to many units working in parallel.

Levels of parallelism / parallelization

  • Pipelining
  • Multi-threading
  • Coprocessor
  • Multi-core processor
  • Multi-processor
  • Multi-computer
  • Grid / cloud computing

Pipelining

With pipelining, instructions are executed like on an assembly line (pipeline). A pipeline is a series of processing units that execute an instruction. The execution of a command is divided into different phases. There is an execution unit for each phase. When an instruction moves from phase 1 of its processing to phase 2, the next instruction enters phase 1. The more phases or stages a pipeline has, the more instructions can be processed in parallel. A further parallelization is possible by having several pipelines or several execution units for certain pipeline stages.

Multi-threading


Multi-threading means the ability of a processor that can hold several program sequences (threads) and switch back and forth alternately during execution. If a thread has to wait for memory accesses, another thread simply continues.
Unfortunately, not all tasks can be parallelized equally well. It also happens that one thread has to wait for another. Algorithms that are difficult to parallelize or are poorly parallelized waste time with complex adjustment procedures. The many bottlenecks in the system make it more difficult. For example interface and mass storage access.
It is not always clear to the programmer which functions are suitable for outsourcing to a separate thread. The parallelization of functions requires a completely different way of thinking from the programmer. In real-time strategy games, the game logic could work independently of the graphic output and input processing. When editing images, for example, it is worthwhile to move time-consuming calculations to a separate thread. This means that the user can still access the program. But this cannot always be implemented in this way. Most of the calculations are carried out by the graphics card itself. In addition, the drivers for OpenGL and DirectX can only process one thread at a time.

SMT - Simultaneous Multi-Threading (Intel)

Simultaneous multi-threading means that several threads are processed at the same time. A thread is a code thread or a program flow. If a thread is waiting for data from the memory, a switch is made to another thread, which continues to use the free resources.
SMT is popular because one thread alone cannot fully utilize all the functional units in a processor. The utilization is much better with two threads running at the same time. In addition, the execution paths of different threads are independent of one another. They very rarely get in each other's way.
Because SMT works relatively well, the out-of-order technology can be dispensed with. This is particularly noticeable in terms of energy consumption. Single-thread processors with SMT simply consume less power.

Hyper-Threading (Intel)

Hyper-Threading is a development by Intel and a precursor to the multicore processor. Hyper-Threading fools the operating system into a second processor core in order to better utilize the functional units and to bridge memory waiting times.
If the first thread of the processor has to wait for data from the memory, then the processor can use the second thread to continue in the program code. If there is a sufficiently large cache and good prefetching, the chances are not bad that the waiting time can be bridged sensibly.
Prefetching is a process in which commands and data are preloaded and executed.
The additional hardware effort for Hyper-Threading is 20 percent and should bring a 40 to 50 percent gain in speed in multi-threading operation.

Coprocessor


The coprocessor is a special processor that adds certain functions to the main processor and relieves it of certain arithmetic tasks. The coprocessor thereby speeds up the whole system. In the course of time, many functions of classic coprocessors have been integrated into the main processor. For example floating point units and cryptographic functions.

Multi-core processor


In multi-core technology, several cores are interconnected in a processor (CPU). This means that modern processors not only have one processing unit, but several. These processors are called multi-core or multi-core processors. Outwardly, multi-core CPUs do not differ from single-core CPUs. Within the operating system, the multi-core processor is treated like several units. Depending on the number of cores, there are modified names that indicate how many cores are integrated in the processor. For example dual core for two computing cores and quad core for four computing cores.

Multi-processor system


Since the early 1990s there have been several processors with their own RAM in supercomputers. These systems are known as multi-processor systems. Multiple processors have not become established in personal computers. Multi-core processors dominate here.

Grid / cloud computing


The networking of computer systems for the parallel calculation and processing of data is called a grid. The grid is often referred to as the cloud. One then speaks of cloud computing.

Other related topics:

Everything you need to know about computer technology.

Computer technology primer

The computer technology primer is a book about the basics of computer technology, processor technology, semiconductor memory, interfaces, data storage devices, drives and important hardware components.

I want that!

Everything you need to know about computer technology.

Computer technology primer

The computer technology primer is a book about the basics of computer technology, processor technology, semiconductor memory, interfaces, data storage devices, drives and important hardware components.

I want that!