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 Architecture

Multiprocessor Processing

Characteristics:

  1. 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.
  2. Inter-Processor Communication: These CPUs communicate with each other through various interconnection schemes.
  3. Shared Memory: In a shared memory multiprocessor, each processor has direct access to a common memory space.
  4. Distributed Memory: In a distributed memory multiprocessor, each processor has its own private memory but can message other processors.
  5. Synchronization: Processors must synchronize their actions when accessing shared resources to avoid conflicts.
  6. 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:

  1. Homogeneous Elements: Array processors consist of multiple homogeneous processing elements that perform the same operation on multiple data points simultaneously.
  2. Data Parallelism: They are designed to be efficient at handling vector and matrix operations.
  3. SIMD (Single Instruction, Multiple Data): A single instruction controls multiple processing elements.
  4. Synchronization: The processing elements operate in lockstep under a single control unit.
  5. 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, where A, B, and C are vectors of the same size. In a vector pipeline, the addition of each element of B and C 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 and C 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.