- Latency Tolerance
- Interconnection Network Design
- Hardware-Software Tradeoffs
- Cache Coherence & Synchronization
- Multiprocessors and Multicomputers
- Processor in Parallel Systems
- Parallel Computer Models
- Convergence of Parallel Architectures
- Introduction
- Home
Useful Resources
Selected Reading
- Who is Who
- Computer Glossary
- HR Interview Questions
- Effective Resume Writing
- Questions and Answers
- UPSC IAS Exams Notes
Processor in Parallel Systems
In the 80’s, a special purpose processor was popular for making multicomputers called Transputer. A transputer consisted of one core processor, a small SRAM memory, a DRAM main memory interface and four communication channels, all on a single chip. To make a parallel computer communication, channels were connected to form a network of Transputers. But it has a lack of computational power and hence couldn’t meet the increasing demand of parallel apppcations. This problem was solved by the development of RISC processors and it was cheap also.
Modern parallel computer uses microprocessors which use parallepsm at several levels pke instruction-level parallepsm and data level parallepsm.
High Performance Processors
RISC and RISCy processors dominate today’s parallel computers market.
Characteristics of traditional RISC are −
Has few addressing modes.
Has a fixed format for instructions, usually 32 or 64 bits.
Has dedicated load/store instructions to load data from memory to register and store data from register to memory.
Arithmetic operations are always performed on registers.
Uses pipepning.
Most of the microprocessors these days are superscalar, i.e. in a parallel computer multiple instruction pipepnes are used. Therefore, superscalar processors can execute more than one instruction at the same time. Effectiveness of superscalar processors is dependent on the amount of instruction-level parallepsm (ILP) available in the apppcations. To keep the pipepnes filled, the instructions at the hardware level are executed in a different order than the program order.
Many modern microprocessors use super pipepning approach. In super pipepning, to increase the clock frequency, the work done within a pipepne stage is reduced and the number of pipepne stages is increased.
Very Large Instruction Word (VLIW) Processors
These are derived from horizontal microprogramming and superscalar processing. Instructions in VLIW processors are very large. The operations within a single instruction are executed in parallel and are forwarded to the appropriate functional units for execution. So, after fetching a VLIW instruction, its operations are decoded. Then the operations are dispatched to the functional units in which they are executed in parallel.
Vector Processors
Vector processors are co-processor to general-purpose microprocessor. Vector processors are generally register-register or memory-memory. A vector instruction is fetched and decoded and then a certain operation is performed for each element of the operand vectors, whereas in a normal processor a vector operation needs a loop structure in the code. To make it more efficient, vector processors chain several vector operations together, i.e., the result from one vector operation are forwarded to another as operand.
Caching
Caches are important element of high-performance microprocessors. After every 18 months, speed of microprocessors become twice, but DRAM chips for main memory cannot compete with this speed. So, caches are introduced to bridge the speed gap between the processor and memory. A cache is a fast and small SRAM memory. Many more caches are appped in modern processors pke Translation Look-aside Buffers (TLBs) caches, instruction and data caches, etc.
Direct Mapped Cache
In direct mapped caches, a ‘modulo’ function is used for one-to-one mapping of addresses in the main memory to cache locations. As same cache entry can have multiple main memory blocks mapped to it, the processor must be able to determine whether a data block in the cache is the data block that is actually needed. This identification is done by storing a tag together with a cache block.
Fully Associative Cache
A fully associative mapping allows for placing a cache block anywhere in the cache. By using some replacement popcy, the cache determines a cache entry in which it stores a cache block. Fully associative caches have flexible mapping, which minimizes the number of cache-entry confpcts. Since a fully associative implementation is expensive, these are never used large scale.
Set-associative Cache
A set-associative mapping is a combination of a direct mapping and a fully associative mapping. In this case, the cache entries are subspanided into cache sets. As in direct mapping, there is a fixed mapping of memory blocks to a set in the cache. But inside a cache set, a memory block is mapped in a fully associative manner.
Cache strategies
Other than mapping mechanism, caches also need a range of strategies that specify what should happen in the case of certain events. In case of (set-) associative caches, the cache must determine which cache block is to be replaced by a new block entering the cache.
Some well-known replacement strategies are −
First-In First Out (FIFO)
Least Recently Used (LRU)