- Sviluppo della grafica a partire dagli anni 90. Processori specializzati per la pipeline grafica ⇒ Graphical Processing Units.
CUDA
Caratteristiche
- Una GPU è un co-processore della CPU. Non deve fare tutto.
- È specializzata nel calcolo massivo paralello. Gli altri task sono lasciati alla CPU
- Trattamento di quantita massicce di dati. Velocità di calcolo elevate
- Per nascodere la latenza della memoria, la GPU utilizza multi-threading massiccio e la CPU usa tante tecniche tra cui la speculazione sulla gerarchia di memoria.
- La memoria della GPU è orientata alla larghezza di banda (interleaving, ampiezza del bus) mentre la memoria della CPU è orientata alla riduzione della latenza.
- La GPU è basata su un gran numero di processori semplici paralleli (Architettura MIMD - Multiple Instruction stream Multiple Data stream) (quindi ogni processore lavora su una cosa diversa con flussi di dati diversi)
- La GPU deve trasferire i dati dalla memoria della CPU
Struttura
- La GPU lavora su thread
- Scheduling gerarchico dell'esecuzione
- Thread block scheduler (Invia in esecuzione blocchi di thread)
- Blocchi di thread vengono assegnati ai diversi processori SIMD (questo processore lavora su un solo flusso di istruzioni, pero ogni istruzione e di tipo vettoriale, quindi più flussi di dati). Ciascun processore è multi-thread
- Nel processore SIMD abbiamo un thread scheduler
- Lancia in esecuzione i diversi thread del blocco di thread
- Lancia in esecuzione le diverse istruzioni
<aside>
💡 Ciascun thread è costituito da un'istruzione SIMD (essecuzione in parallello a livello di subword) che è un'istruzione vettoriale.
</aside>
Singolo processore multi-thread
Metodi di multithreading