Università degli Studi di Napoli “Federico II” Facoltà di Ingegneria Dipartimento di Informatica e Sistemistica Corso di Sistemi ad elevate prestazioni – Prof. Nicola Mazzocca Sistemi ad elevate prestazioni Lezione 4
Sistemi ad elevate prestazioni - Prof. re Nicola Mazzocca Architetture Superscalari L’utilizzo delle pipe porta dei vantaggi non in termini di attraversamento di una istruzione, che rimane invariato, ma in termini di produttività. L’utilizzo delle pipe porta dei vantaggi non in termini di attraversamento di una istruzione, che rimane invariato, ma in termini di produttività. Per ottenere ancora prestazioni migliori, allora, si può pensare di realizzare un architettura che presenti più pipe che eseguono diverse istruzioni in parallelo, così da aumentare la produttività del sistema, tale tipo di architettura viene chiamata Superscalare Per ottenere ancora prestazioni migliori, allora, si può pensare di realizzare un architettura che presenti più pipe che eseguono diverse istruzioni in parallelo, così da aumentare la produttività del sistema, tale tipo di architettura viene chiamata Superscalare Due pipe disgiunte Due pipe non disgiunte.
Sistemi ad elevate prestazioni - Prof. re Nicola Mazzocca Principali problematiche Le pipe devono condividere un unico accesso alla memoria comune per il prelievo delle istruzioni. Le pipe devono condividere un unico accesso alla memoria comune per il prelievo delle istruzioni. Se le pipe non sono del tutto separate ma condividono alcune delle stazioni nascono anche dei problemi di conflitto tra le pipe nell’utilizzo delle unità funzionali condivise Se le pipe non sono del tutto separate ma condividono alcune delle stazioni nascono anche dei problemi di conflitto tra le pipe nell’utilizzo delle unità funzionali condivise Un esempio di processore superscalare è il Pentium, tale processore è stato uno dei primi esempi con più pipe, infatti ne aveva già 2 (U e V), le quali però non erano usate in modo efficiente, poiché una era utilizzata sempre (pipe principale), l’altra solo se si era sicuri che non provocasse delle collisioni Un esempio di processore superscalare è il Pentium, tale processore è stato uno dei primi esempi con più pipe, infatti ne aveva già 2 (U e V), le quali però non erano usate in modo efficiente, poiché una era utilizzata sempre (pipe principale), l’altra solo se si era sicuri che non provocasse delle collisioni
Sistemi ad elevate prestazioni - Prof. re Nicola Mazzocca Collisioni nei Sistemi Superscalari con più Pipeline (1) Supponiamo di avere un processore che realizza l’operazione di addizione e di moltiplicazione floating-point. Supponiamo di avere un processore che realizza l’operazione di addizione e di moltiplicazione floating-point. Addizione Moltiplicazione
Sistemi ad elevate prestazioni - Prof. re Nicola Mazzocca Collisioni nei Sistemi Superscalari con più Pipeline (2) 7 stadi per la moltiplic. 9 stadi per l’addiz.
Sistemi ad elevate prestazioni - Prof. re Nicola Mazzocca Collisioni nei Sistemi Superscalari con più Pipeline (3) Ad esempio se parte la moltiplicazione X e un istante dopo anche la moltiplicazione Y, si hanno due sovrapposizioni (caselle XY dello schema seguente. Abbiamo ovviamente sovrapposto le griglie delle due moltiplicazioni). Ad esempio se parte la moltiplicazione X e un istante dopo anche la moltiplicazione Y, si hanno due sovrapposizioni (caselle XY dello schema seguente. Abbiamo ovviamente sovrapposto le griglie delle due moltiplicazioni). Sovrapponendo le maschere costruisco il vettore delle collisioni che può essere usato dal compilatore
Sistemi ad elevate prestazioni - Prof. re Nicola Mazzocca Vettore delle Collisioni (1) È da notare che non vale la proprietà commutativa: mettendo prima la moltiplicazione e poi l’addizione, non si verificano mai conflitti. È da notare che non vale la proprietà commutativa: mettendo prima la moltiplicazione e poi l’addizione, non si verificano mai conflitti. Quindi un altro modo per evitare conflitti è invertire le due operazioni in tale ordine, se possibile. Quindi un altro modo per evitare conflitti è invertire le due operazioni in tale ordine, se possibile. Occorre determinare tutti gli altri collision vector: esempio quello di un’addizione seguita da un’addizione, e quello della moltiplicazione seguita da una moltiplicazione. Occorre determinare tutti gli altri collision vector: esempio quello di un’addizione seguita da un’addizione, e quello della moltiplicazione seguita da una moltiplicazione. Se per ipotesi avessimo 8 operazioni floating point effettuabili in hardware, dovremmo realizzare ben 64 collision vector. Il compito del compilatore diviene sempre più difficile. Se per ipotesi avessimo 8 operazioni floating point effettuabili in hardware, dovremmo realizzare ben 64 collision vector. Il compito del compilatore diviene sempre più difficile.
Sistemi ad elevate prestazioni - Prof. re Nicola Mazzocca Vettore delle Collisioni (2) Supponiamo di dover eseguire una sequenza di istruzioni: Supponiamo di dover eseguire una sequenza di istruzioni: add mol mol add add mol… add mol mol add add mol… occorre il vettore di collisione addizione- moltiplicazione e poi quello moltiplicazione- moltiplicazione. occorre il vettore di collisione addizione- moltiplicazione e poi quello moltiplicazione- moltiplicazione. Adesso bisogna inserire la seconda moltiplicazione tenendo conto di eventuali conflitti non solo con la precedente moltiplicazione, ma anche con l’addizione che viene subito prima! Adesso bisogna inserire la seconda moltiplicazione tenendo conto di eventuali conflitti non solo con la precedente moltiplicazione, ma anche con l’addizione che viene subito prima!
Sistemi ad elevate prestazioni - Prof. re Nicola Mazzocca Hardware per la Gestione delle Collisioni
Sistemi ad elevate prestazioni - Prof. re Nicola Mazzocca Prossima Lezione Gestione delle ISR in sistemi pipelined Gestione delle ISR in sistemi pipelined Architetture VLIW Architetture VLIW