Superscalar processors execute multiple instructions simultaneously, improving performance without special software. They have been used since the late 1980s and are used in servers, desktops, and laptops. They can share a single pipeline with super-threading or execute multiple instructions from multiple threads simultaneously using SMT. They execute program code out of order, but must be aware of dependencies and ensure correct system state. They are not the same as multi-core processors, which contain several complete processors in a single device.
A superscalar processor can independently execute multiple instructions simultaneously during a single clock cycle. Includes redundant execution resources, such as multiple floating point units, arithmetic logic units, and integer translators. This type of processor is designed for parallel computing and speculative execution without the need for special software. It can improve the execution speed of many processor-intensive applications by manipulating and rearranging the code. It is often used in different classes of computers including servers, desktops and even laptops.
While some aspects of the architecture have been used in processors since the 1960s, true superscalar processors weren’t released until much later. Some reduced instruction set computing (RISC) processors sold in the late 1980s and early 1990s were superscalars. Their simple cores and fixed-length instructions made sending and scheduling parallel instructions relatively easy. Many non-RISC processors manufactured since the late 1990s also have superscalar architectures. Embedded, low-power, and other processors are often the exceptions, optimizing other aspects of their designs instead of parallel execution.
Some processors can share a single pipeline with instructions from multiple threads of execution, known as super-threading. When a functional unit is idle because it is waiting on the currently executing thread, it can meanwhile execute an instruction from another thread. This technique helps to fully utilize the processor but is not as efficient as simultaneous multithreading (SMT). A single superscalar processor can execute multiple instructions from multiple threads simultaneously using SMT. However, concurrently running threads can compete for system and processor resources, which can slow down the system.
Multistage pipelined processors can execute multiple instructions simultaneously as long as they are in different phases of execution. Conversely, multiple instructions can be executed in the same stage simultaneously in a superscalar processor. While there are many similarities between this type of processor and a multi-core processor, they are not the same. A multi-core processor contains several complete processors, called cores, in a single device. Each core of a multi-core processor is usually superscalar and may include several parallel pipelines.
A key feature of a superscalar processor is its ability to execute program code out of order for the sake of efficiency. To do this, it must be aware of the dependencies of any instruction on another. If one statement affects the results or uses the resources of another, it is very likely that the two should not be executed in parallel. There are techniques to eliminate some types of dependencies, but others are to delay processing until resources are available.
Out-of-order execution must also be able to ensure the correct contents of registers, flags, and other resources if a system outage occurs. In this case, the system state should appear the same, as if the code had sequenced through as designed. Another consideration is how many instructions the processor should examine to find opportunities for parallel execution. The higher the number, the more efficient the execution can be. This also includes speculative execution of statements on the other side of each branch in the code being examined.
Protect your devices with Threat Protection by NordVPN