Storia del Parallelismo
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.