Grafici Log-Log & Saturazione
La velocità di calcolo ha seguito una curva di crescita esponenziale per 50 anni. Su un grafico log-lineare (velocità logaritmica vs tempo lineare), appare come una retta con pendenza b = tasso di crescita in ordini di grandezza per anno.
I limiti fisici impongono un tetto orizzontale: una velocità massima S_max determinata dalle dimensioni molecolari, dalla velocità della luce & dai vincoli termici. Man mano che l'esponenziale si avvicina a S_max, la crescita rallenta.
Saturazione Logistica
Un modello comune per la crescita con un tetto:
S(t) = S_max / (1 + e^(−r(t − t₀)))
Questa è l'equazione logistica applicata alla tecnologia. Nelle fasi iniziali (t << t₀): S(t) ≈ S_max × e^(r(t−t₀)) — puramente esponenziale. Vicino al tetto (t >> t₀): S(t) → S_max asintoticamente.
La geometria: una retta su coordinate log-lineari si piega vicino al tetto, producendo una forma a S se vista su coordinate lineari-lineari.
Quando si Satura la Crescita?
Supponiamo che la velocità di un singolo processore cresca come 10^(0.09t) partendo da 10⁰ operazioni/sec nel 1940. Tetto fisico: S_max = 10^(12) operazioni/sec (una stima approssimativa per un processore single-core, limitato da vincoli termici & di velocità della luce).
Raggio Massimo di Comunicazione
La frequenza di clock di un processore determina il raggio massimo entro cui può comunicare in un ciclo. I segnali viaggiano a circa 2×10⁸ m/s nel rame.
Per un periodo di clock T (in secondi), il raggio massimo di comunicazione unidirezionale:
r_max = v × T / 2
(diviso per 2 per il viaggio di andata e ritorno: il segnale deve partire e tornare entro T)
All'aumentare della frequenza di clock, T diminuisce, quindi r_max si riduce. Questo vincolo geometrico costringe i componenti a stare più vicini — riducendo l'area del chip — oppure ad accettare una latenza multi-ciclo per la comunicazione fuori chip.
La Sfera d'Influenza
Tutti i componenti raggiungibili entro un ciclo di clock formano una sfera di raggio r_max centrata sul processore. Volume: V = (4/3)π r_max³.
Se la densità dei componenti è ρ (componenti/m³), il numero di componenti raggiungibili entro un ciclo: N = ρ × V = ρ × (4/3)π r_max³.
Al ridursi di r_max con l'aumento della frequenza di clock, N diminuisce cubicamente — un aumento di 2× della frequenza di clock riduce il numero di componenti raggiungibili di (1/2)³ = 1/8.
Componenti Raggiungibili per Ciclo di Clock
Una workstation dell'era 1993 funziona a 100 MHz (T = 10 ns). Velocità del segnale = 2×10⁸ m/s. Densità dei componenti su un circuito stampato ≈ 10⁸ componenti/m³ (stima approssimativa inclusi chip, resistori, condensatori).
Una GPU moderna funziona a 2 GHz (T = 0.5 ns).
Il Limite dell'Accelerazione Parallela
La velocità del processore singolo si avvicina ai limiti fisici. La risposta dell'industria: architetture parallele. La Legge di Amdahl quantifica l'accelerazione ottenibile dal parallelismo.
Legge di Amdahl
Supponiamo che una frazione f di un programma possa essere parallelizzata, e la frazione (1−f) debba girare in seriale. Con p processori:
Speedup(p) = 1 / ((1−f) + f/p)
Per p → ∞: Speedup_max = 1 / (1−f)
La frazione seriale (1−f) impone un tetto fisso all'accelerazione ottenibile, indipendentemente da quanti processori si aggiungono.
Intuizione geometrica: l'accelerazione come funzione di p segue una curva iperbolica. L'asintoto è 1/(1−f). Per f = 0.9, accelerazione massima = 10, anche con processori infiniti. Per f = 0.99, accelerazione massima = 100.
La lezione implicita di Hamming: l'interesse nelle architetture parallele era reale, ma il guadagno dipendeva interamente da quanto il carico di lavoro fosse parallelizzabile — un fatto ignorato da molti ottimisti del calcolo parallelo.
Calcolare l'Accelerazione Parallela
Una simulazione scientifica gira in 1000 secondi su un processore. La profilazione rivela: 200 secondi in una fase di inizializzazione seriale (non parallelizzabile); 800 secondi in una fase di calcolo parallelo.