Questions: 1. What do you mean by superscalar processor? 2. List the issues which must be considered in implementation of superscaler processor. 3. Discuss various instruction issue policies. 4. What is register renaming?. Superscalar Processors: 1. Superscalar Architecture and Operation 2. Challenges in Superscalar Execution 3. Instruction-Issue Policy 4. Register Renaming.
Superscalar Processors
•
A superscalar processor is a type of
Central Processing Unit (CPU) that implements a form of parallelism known as Instruction–Level
Parallelism (ILP) within a
single processor. Unlike earlier processors that could execute at most one
instruction per clock cycle, a superscalar design enables the CPU to execute multiple instructions simultaneously in
a given clock cycle by utilizing multiple execution units.
•
A superscalar processor is characterized by the following architectural
elements :
1. Multiple Execution
Units (E–units) :The processor contains several independent
functional units, such as Integer ALUs, Floating–Point Units (FPUs) and
Load/Store Units (LSUs). These units are typically pipelined themselves,
forming a set of parallel instruction pipelines.
2. Program Control Unit
(PCU) : The PCU is enhanced to fetch and decode several
instructions simultaneously.
3. Instruction Issue
Logic : This complex unit, often called the instruction scheduler, is responsible
for determining which decoded instructions can be safely dispatched to the
available E–units for parallel execution. The issue logic is critical as it
must determine if instructions are independent
(i.e., whether the execution of one instruction is dependent on the result of
another). The number of instructions that can be issued simultaneously is known
as the instruction issue degree (k).
•
To successfully exploit ILP and achieve high performance, the processor must
detect and manage various dependencies and conflicts inherent in the
instruction stream.
•
To fetch, decode and execute several instruction concurrently, the superscaler
operation requires processor to detect and exploit instruction–level
parallelism hidden in the programs it executes. It has to handle following
important issues :
. • Instruction type :
A floating–point add instruction has to be issued to a floating point E–unit
and not to an integer E–unit.
• E–unit availability :
An
instruction can be issued to a pipelined E–unit only if no collision will result,
as determined by the pipeline's reservation table.
■
True data dependency
■
Procedural dependency
■
Resource conflicts
■
Output dependency
■
Antidependency.
•
Let us see the following instructions :
■
Sub г1, r2 ; Subtract the contents of r2 from
r1 and store the result in r1
■
Move г3, r1; Load register r3 with the contents of r1
■
In the above instruction sequence, the second instruction can be fetched and
decoded, but cannot be executed until the first instruction executes. The
reason is that the second instruction requires the data produced by the first
instruction. This situation is referred to as a true data dependency. This limits the performance of any type of
pipeline.
•
We have seen earlier that the branch instructions complicate the pipeline
operation. There are branch prediction techniques, but they cannot improve
performance hundred percent. In branch prediction technique, taken or not taken, we cannot execute
instruction until branch is executed. This situation is referred to as procedural dependency.
•
While executing number of instructions in parallel, the situation may occur
that two or more instructions require same resource at the same time. For
example, two or more instructions may require references to memories, caches,
buses register–file ports and functional units at the same time. This situation
is referred to as resource conflict.
•
Let us see the following instructions.
R3
= R3 + R5 ← I1
R4
= R3 + 1 ← 12
R3
= R5 + 1 ← 13
R6
= R3 + R4 ← 14
•
In the above instruction sequence we cannot execute instruction I2 before I1
because of the true data dependency and for similar reasons we also cannot
execute instruction I4 before I3. But there is one more dependency which exists
between instruction I3 and instruction I1. We cannot execute instruction I3
before instruction I1, because if I3 executes prior to completion of I1, then
wrong value of the contents of R3 will be fetched for the execution of instructions
I1 and I4. This situation is referred to as output dependency.
•
Let us see the following instructions
R3
= R3+ R5 ← I1
R4
= R3 + 1 ← I 2
R3
= R5 +1
← I 3
R6
= R3 + R4 ← I 4
•
In the above instruction sequence instruction I3 cannot be completed its
execution before instruction I2 begins execution and had fetched its operands. This
is so because instruction I3 updates register R3, which is a source operand for
instruction I2. This situation is referred to as antidependency. Here, constraints are exactly reverse that of true
data dependency.
Control
dependencies : To maintain high performance levels,
techniques are needed to reduce the impact of branch instructions on pipeline
efficiency.
•
Instructions must eventually produce results in the order specified by the
program being executed. The result may, however, be computed out–of–order
internally to improve the CPU's performance.
•
Considering the limitations of parallelism processor must able to identify the
next instruction to be fetched, decoded and executed. This process is known as
instruction issue and each processor has its own instruction issue policy.
•
Superscalar processors use following instruction issue policies.
■
In–order issue with in–order completion
■
In–order issue with out–of–order completion.
■
Out–of–order issue with out–of–order completion.
•
In this policy instructions are executed in exact order that would be achieved
by sequential execution.
•
Let us consider the instructions with following constraints :
■
I1 requires two cycles to execute
■
I3 and I4 conflict for function unit
■
I5 depends on the value produced by I4
■
I5 and I6 conflict for function unit.
•
With above constraints in–order issue with in–order completion policy executes
all instructions as shown in Fig. 10.5.1.

•
If any instruction requires multiple cycles and the next instruction is
independent of current instruction then it is allowed to execute before the
completion of current instruction. This policy is referred to as in–order issue
with out–of–order completion. This policy is used in scalar RISC processors to
improve the performance of the instructions that require multiple cycles. Fig.
10.5.2 shows the modified execution sequence due to this policy. As shown in
Fig. 10.5.2 the net result is saving of one cycle.

•
With in–order issue, the processor decodes the instructions upto the point of a
dependency or conflict. But in out–of–order issue, processor decodes the
instruction beyond any dependency or conflict, to achieve look ahead capacity,
allowing it to identify independent instructions that can be brought into the
execute stage. To implement this, processor provides buffer commonly known as
instruction window where decoded instructions are stored. Fig. 10.5.3 shows the
modified execution sequence due to this policy.

•
Register renaming is a hardware technique used in modern superscalar and im out–of–order
processors to eliminate false data
dependencies that occur due to the reuse of a limited number of
architectural registers. By doing so, it exposes more Instruction–Level Parallelism (ILP) and allows the CPU to execute
instructions more efficiently and out–of–order.
•
Modern CPUs have a small, fixed number of architectural
registers defined by the instruction set (e.g., R1, R2, F0). When a program
is compiled, these registers are reused across multiple instructions. This
reuse can create false dependencies
(Anti–dependency, Output dependency) that unnecessarily stall instruction execution.
•
Register renaming takes the small set of registers that a programmer can see
(like R1, R2, etc.) and maps them to a larger set of hidden physical registers inside the CPU.
1.
When the CPU decodes an instruction, it gives a new, unused physical
register for the instruction's output.
2.
The CPU keeps a Map Table (also
called Register Alias Table) to remember which physical register currently
holds the latest value of each visible register.
•
This prevents two instructions from accidentally using the same register at the
same time.
• It removes artificial delays caused by "fake" dependencies, allowing the CPU to 6 to execute instructions faster and out–of–order.
Review Questions
1. What do you mean by
superscalar processor?
2. List the issues
which must be considered in implementation of superscaler processor.
3. Discuss various
instruction issue policies.
4. What is register
renaming?
Digital Principles and Computer Organization: Chapter 10: Parallel Processing : Tag: : Architecture and Operation Challenges in Execution, Instruction-Issue Policy, Register Renaming - Superscalar Processors
Digital Principles and Computer Organization
CS25C06 2nd Semester AIDS, CSE, IT, CSE(CY) Dept | 2025 Regulation | 2nd Semester 2025 Regulation
English Essentials II
EN25C02 2nd Semester | 2025 Regulation | 2nd Semester 2025 Regulation
Tamils and Technology தமிழர்களும் தொழில்நுட்பமும்
UC25H02 2nd Semester | 2025 Regulation | 2nd Semester 2025 Regulation
Linear Algebra
MA25C02 2nd Semester | 2025 Regulation
Applied Physics (CSIE) II
PH25C03 2nd Semester AIDS, CSE, IT, CSE(CY) Dept | 2025 Regulation | 2nd Semester 2025 Regulation
Digital Principles and Computer Organization
CS25C06 2nd Semester AIDS, CSE, IT, CSE(CY) Dept | 2025 Regulation | 2nd Semester 2025 Regulation
Basic Electrical and Electronics Engineering
EE25C01 2nd Semester | 2025 Regulation | 2nd Semester 2025 Regulation
Python for Data Science
AD25201 2nd Semester AIDS Dept | 2025 Regulation | 2nd Semester 2025 Regulation
Re-Engineering for Innovation
ME25C05 2nd Semester | 2025 Regulation | 2nd Semester 2025 Regulation
Python for Data Science - Laboratory
AD25201 2nd Semester AIDS Dept | 2025 Regulation | 2nd Semester 2025 Regulation