CMP 304 Process
CMP 304 Process
CMP 304 Process
ABEL
CMP 304 ASSIGNMENT
INSTRUCTION LEVEL PARALLELISM
• refers to the ability of a processor to execute multiple instructions in parallel or
simultaneously.
• In a single-core processor, the execution of instructions is sequential and
instructions are executed one after the other.
• However, by utilizing ILP, a processor can execute multiple instructions at the
same time, resulting in faster execution and higher throughput.
• ILP is achieved through a variety of techniques such as pipelining, superscalar
execution, and out-of-order execution.
PIPELINING
• Pipelining is a technique used in computer processors to improve their
performance by dividing the execution of instructions into smaller stages that can
be executed in parallel.
• The pipelining process starts by fetching the instruction from memory and loading
it into the instruction register.
• By breaking down the instruction execution into multiple stages, the pipeline can
work on multiple instructions simultaneously, which increases the overall
throughput of the processor.
• One of the challenges of pipelining is that instructions may depend on the results
of previous instructions.
Out-of-order execution
• Out-of-order execution is a technique used in modern processors to improve their
performance by allowing instructions to be executed in a different order than they
appear in the program, as long as the program's results are not affected .
• In an out-of-order execution processor, instructions are first fetched and decoded,
and then they are sent to a reorder buffer (ROB).
• Out-of-order execution can significantly improve the performance of processors,
especially for programs with complex control flow or data dependencies.
Speculative execution
• Speculative execution is a technique used in modern processors to improve
performance by allowing the processor to execute instructions that are likely to be
needed in the future, even before the need for them is known with certainty.
• Speculative execution can significantly improve the performance of processors,
especially for programs with complex control flow or data dependencies.
Vliw dataflow
• Very long instruction word (VLIW) and dataflow architectures are two different
types of processor designs that are intended to improve performance by
maximizing instruction-level parallelism.
• VLIW is a type of processor architecture that executes multiple operations in a
single clock cycle by grouping several instructions together into a single long
instruction word.
• The VLIW processor includes multiple functional units that can work in parallel,
each of which is specialized for a specific type of operation, such as integer
arithmetic, floating-point arithmetic, or memory access.
Data parallelism
• Data parallelism is a technique used in parallel computing to divide a large task
into smaller sub-tasks that can be executed simultaneously on multiple processing
elements. In data parallelism, the same operation is performed on multiple pieces
of data in parallel, with each processing element working on a different subset of
the data.
• In data parallelism, the input data is partitioned into smaller units, and each
processing element operates on a subset of the data simultaneously.
Vector processing
• Vector processing is a type of computer architecture that is designed to perform
mathematical and scientific calculations on large sets of data quickly and
efficiently.
• Vector processing relies on specialized hardware known as vector processors,
which include a large number of functional units that can operate on multiple data
elements simultaneously.
• Vector processing is particularly useful in scientific computing and simulation,
where large amounts of data need to be processed quickly.
Array processing
• Array processing is a type of computer architecture that is designed to perform
computations on large arrays or matrices of data quickly and efficiently.
• Array processing is often used in scientific computing and data analysis, where
large amounts of data need to be processed quickly.
• Array processing can provide significant performance improvements over
traditional scalar processing for applications that involve large arrays of data.
Task level parallelism
• Task-level parallelism is a type of parallelism in computing where multiple tasks
are executed simultaneously on different processing elements, such as CPU cores,
in a computing system.
• Task-level parallelism is commonly used in parallel computing environments,
such as supercomputers and clusters, where multiple processing elements are
available.
• Task-level parallelism can be used in a wide range of applications, including
scientific computing, simulation, and data processing.
multithreading
• Multithreading is a programming technique in which multiple threads of
execution are created within a single program. Each thread is a separate sequence
of instructions that can be executed independently and in parallel with other
threads.
• Multithreading is commonly used in modern software development to improve
performance and responsiveness in applications.
Multiprocessing(multi-core)
• Multiprocessing is a technique in which a computer system uses multiple
processors or CPU cores to perform tasks in parallel.
• Multiprocessing can be used to improve the performance and efficiency of a
computer system by allowing multiple tasks to be executed simultaneously.