Explain characteristics and structure of multiprocessor processing and array processing. What is concept of pipelining? Differentiate vector pipeline and array pipeline.
Q.) Explain characteristics and structure of multiprocessor processing and array processing. What is concept of pipelining? Differentiate vector pipeline and array pipeline.
Subject: Computer Organization and ArchitectureMultiprocessor Processing
Characteristics:
- Multiple CPUs: Multiprocessor systems have more than one central processing unit (CPU) that share the computer's memory and I/O facilities, allowing them to work in parallel.
- Inter-Processor Communication: These CPUs communicate with each other through various interconnection schemes.
- Shared Memory: In a shared memory multiprocessor, each processor has direct access to a common memory space.
- Distributed Memory: In a distributed memory multiprocessor, each processor has its own private memory but can message other processors.
- Synchronization: Processors must synchronize their actions when accessing shared resources to avoid conflicts.
- Scalability: Multiprocessor systems can often be scaled by adding more processors to improve performance.
Structure:
- UMA (Uniform Memory Access): All processors share the physical memory uniformly.
- NUMA (Non-Uniform Memory Access): Memory access times vary depending on the memory location relative to a processor.
- SMP (Symmetric Multiprocessing): Each processor runs an instance of the operating system, and they work together on the same tasks.
- MPP (Massively Parallel Processing): Many processors, possibly thousands, work on different tasks.
Array Processing
Characteristics:
- Homogeneous Elements: Array processors consist of multiple homogeneous processing elements that perform the same operation on multiple data points simultaneously.
- Data Parallelism: They are designed to be efficient at handling vector and matrix operations.
- SIMD (Single Instruction, Multiple Data): A single instruction controls multiple processing elements.
- Synchronization: The processing elements operate in lockstep under a single control unit.
- High Throughput for Specialized Tasks: Array processors are optimized for tasks that can be broken down into parallel sub-tasks.
Structure:
- Control Unit: Directs the operation of the processing elements.
- Processing Elements (PEs): Perform computations on data elements.
- Interconnection Network: Allows data to be routed between different PEs and memory modules.
- Memory Modules: Store the data to be processed and the results of computations.
Concept of Pipelining
Pipelining is a technique used in computer architecture where multiple instruction phases are overlapped. It's similar to an assembly line where different stages of an instruction are processed concurrently by different units of the processor. This allows for increased instruction throughput - the number of instructions that can be completed in a unit of time.
Formula for Pipelining Performance:
If we consider a pipeline with n
stages, each taking t
time units, the ideal performance improvement over a non-pipelined architecture is n
. The throughput can be given by:
Throughput = Number of instructions / Total time for all instructions
Vector Pipeline vs. Array Pipeline
Vector Pipeline | Array Pipeline |
---|---|
Processes one-dimensional arrays of data | Processes multi-dimensional arrays of data |
Uses pipelining within a single processing unit | Uses multiple processing units without pipelining |
Suited for vector processing with sequential data access | Suited for matrix and complex data structure processing |
Typically found in supercomputers and high-performance systems | Typically found in specialized applications like image processing |
High throughput for vector operations | High throughput for operations that can be parallelized across data elements |
Example: Floating-point operations on a vector of data | Example: Applying a filter to an image where the same operation is applied to each pixel |
Examples:
Vector Pipeline: Consider a vector addition operation
A = B + C
, whereA
,B
, andC
are vectors of the same size. In a vector pipeline, the addition of each element ofB
andC
can be processed in different pipeline stages, so while one pair is being added, the next pair is being fetched.Array Pipeline: In array processing, if we are performing the same addition operation, each processing element would add a pair of elements from
B
andC
simultaneously in a single step without pipelining.
In summary, multiprocessor processing involves multiple CPUs that may or may not share memory and can work on different parts of a task in parallel. Array processing involves multiple processing elements working under a single instruction stream to perform the same operation on multiple data points simultaneously. Pipelining is a technique to improve throughput by overlapping instruction execution stages, and it is a key feature of vector processors, which are optimized for one-dimensional array operations, whereas array processors handle multi-dimensional data without pipelining.