Storia del Parallelismo

L' Hyper-Threading segna la fine della corsa ai Megahertz? Diamo un'occhiata a come funziona, e a quale impatto può avere sulla guerra tra le CPU.

Avatar di Tom's Hardware

a cura di Tom's Hardware

Storia del Parallelismo

Il parallelismo ed il calcolo multi-thread, i concetti su cui si basa l'HT, certamente non sono nuovi. Infatti il server processor Xeon di Intel ha utilizzato l'HT sin dal suo debutto all'inizio dell'anno. Il parallelismo del thread-level ora è utilizzato dai processori di Intel, Sun, IBM e Compaq.

Per definizione, il parallelismo migliora le prestazioni con lo svolgimento simultaneo di operazioni indipendenti. Sin da metà degli anni '90, Intel ha utilizzato il parallelismo nei processori per spremere le maggiori prestazioni possibili dal silicone dei suoi processori per server application.

Nello specifico, HT si basa sul Thread-Level Parallelism (TLP), che prevede lo switch delle risorse del chip dal thread attualmente in esecuzione ad un nuovo thread, quando il primo inizia un'operazione a lunga latenza. Ciò riduce le probabilità di stallo della lunga pipeline, permettendo al secondo thread di essere eseguito mentre viene completata l'operazione a lunga latenza del primo.

Il dirottamento delle risorse da un thread all'altro comporta, comunque, una penalizzazione delle prestazioni, visto che le istruzioni del thread corrente devono essere drenate dal pipeline. Poichè lo stato dell'architettura del thread deve essere conservato nel pipeline, il nuovo processore logico deve essere attivato, e le istruzioni dal nuovo thread devono essere fornite alle risorse del processore. Questi passaggi possono richiedere 40 cicli di clock, per essere completati.

Con HT, comunque, le applicazioni software adattate al multiprocessore possono essere lanciate col doppio dei processori logici da usare. Ogni processore logico può rispondere agli interrupt in modo indipendente. Il primo processore logico può seguire un thread, mentre il secondo può seguirne un altro simultaneamente. Siccome i due thread condividono un set di risorse d'esecuzione, l'HT può usare risorse che sarebbero altrimenti inutilizzate se fosse eseguito un solo thread. Il risultato è un aumento dell'utilizzazione delle risorse d'esecuzione in ogni unità di processore fisico.

Ad esempio, un processore logico può eseguire un'operazione floating-point mentre l'altro processore logico esegue un'operazione di addition o di load. HT è complementare ai sistemi MP, perchè il sistema operativo è in grado non solo di registrare thread separati ed eseguirli su ogni processore fisico simultaneamente, ma può farlo anche su ogni processore logico, sempre in simultanea.

Tutto questo migliora le prestazioni generali e la risposta del sistema, perchè molti thread paralleli possono essere distribuiti prima grazie al doppio dei processori logici che il sistema ha a disposizione. Anche se a disposizione c'è il doppio dei processori logici, questi continuano a dividersi le stesse risorse d'esecuzione: così, il beneficio che deriverebbe da un altro processore fisico con le sue proprie risorse offrirebbe i più alti livelli di performance. In altre parole, HT è complementare al multi-processing, offrendo un miglior parallelismo in ogni processore del sistema, ma non è un rimpiazzo per il dual o il multi processing.