100 likes | 235 Vues
Università degli Studi di Napoli “Federico II” Facoltà di Ingegneria Dipartimento di Informatica e Sistemistica. Sistemi ad elevate prestazioni Lezione 4. Corso di Sistemi ad elevate prestazioni – Prof. Nicola Mazzocca. Due pipe disgiunte. Due pipe non disgiunte. Architetture Superscalari.
E N D
Università degli Studi di Napoli “Federico II”Facoltà di IngegneriaDipartimento di Informatica e Sistemistica Sistemi ad elevate prestazioniLezione 4 Corso di Sistemi ad elevate prestazioni – Prof. Nicola Mazzocca
Due pipe disgiunte Due pipe non disgiunte. 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à. • 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 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. • 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 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. Moltiplicazione Addizione 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). 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. • 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. • 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: • add mol mol add add mol… • 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! 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 • Architetture VLIW Sistemi ad elevate prestazioni - Prof. re Nicola Mazzocca