Transcript Lezione 4
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 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 Due pipe disgiunte Due pipe non disgiunte. 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) Moltiplicazione Supponiamo di avere un processore che realizza l’operazione di addizione e di moltiplicazione floating-point. 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). Sistemi ad elevate prestazioni Prof. re Nicola Mazzocca Sovrapponendo le maschere costruisco il vettore delle collisioni che può essere usato dal compilatore 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 addizionemoltiplicazione e poi quello moltiplicazionemoltiplicazione. 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