Introduction
Parallel Programming
쉽지 않음. e.g. Partitioning, Coordination, Communications overhead
Amdahl’s law
Scaling
Vector Processors
벡터 레지스터 활용해서 instruction-fetch bandwidth 많이 줄일 수 있음 (x86에서의 MMX, SSE 등)
Data-Parallel 프로그래밍 용이
loop-carried dependency 없음 → control hazard에서 비교적 자유로움
정형적인 access pattern으로 interleaved와 burst memory에서 이득
Vector vs Multimedia Extensions
Vector | Multimedia | |
---|---|---|
variable width | O | X |
strided access | O | X |
function unit이나 pipeline등에 붙기 좋음 |
Multithreading
동시에 여러 스레드 실행하는 것.
PC 등 일부 Register의 Replication있어야하고, thread간의 switching 빨라야함
Fine-grain Multithreading : 매 Cycle마다 thread switch하고 instr. Interleaving 활용 등
Coarse-grain Multithreading : L2 cache miss 등 long stall 있을때만 switching
Simultaneous Multithreading : 프로세서가 Dynamic하게 scheduling함
Shared Memory
GPU
~31p