Università degli Studi di Napoli “Federico II” Facoltà di Ingegneria Dipartimento di Informatica e Sistemistica Corso di Sistemi ad elevate prestazioni.

Slides:



Advertisements
Presentazioni simili
Capitolo 3 Risorse e Stallo 3.1. Risorse 3.2. Introduzione
Advertisements

Università degli Studi di Napoli Federico II Facoltà di Ingegneria Dipartimento di Informatica e Sistemistica Corso di Sistemi ad elevate prestazioni –
Fondamenti di Informatica I CDL in Ingegneria Elettronica - A.A CDL in Ingegneria Elettronica - A.A Strutture di controllo Ing.
Fondamenti di Informatica CDL in Ingegneria Gestionale - A.A Strutture di controllo Ing. Simona Colucci.
Ottimizzazione statica del codice per processori pipelined Canella Matteo & Miglioli Filippo.
Fondamenti di Informatica I a.a Il linguaggio C Il preprocessore La sostituzione di macro Le compilazioni condizionali Linclusione di file C.
Architetture dei Calcolatori (Lettere j-z) Il Processore (2)
Prof.ssa Chiara Petrioli -- Fondamenti di programmazione 1, a.a. 2009/2010 Corso di Fondamenti di programmazione a.a.2009/2010 Prof.ssa Chiara Petrioli.
Prof.ssa Chiara Petrioli -- corso di programmazione 1, a.a. 2006/2007 Corso di Programmazione 1 a.a.2006/2007 Prof.ssa Chiara Petrioli Corso di Laurea.
Informatica di base A.A. 2003/2004 Algoritmi e programmi
1 Corso di Informatica (Programmazione) Lezione 11 (19 novembre 2008) Programmazione in Java: controllo del flusso (iterazione)
Corso di Informatica (Programmazione)
Corso di Laurea in Biotecnologie Informatica (Programmazione)
Programmazione Un programma descrive al computer, in estremo dettaglio, la sequenza di passi necessari a svolgere un particolare compito L’attività di.
Criticità sui dati Consideriamo una sequenza di 5 istruzioni
Il pipelining E’ una tecnica Analogia con la catena di montaggio
Criticità sui dati (1° esempio)
Criticità sul controllo
Il pipelining: tecniche di base Lucidi fatti in collaborazione con lIng. Valeria Cardellini.
Criticità sui dati (esempio da fare on line)
Criticità sul controllo
Criticità sul controllo
Introduzione alla programmazione lll
Il Linguaggio Macchina
Xscale Nicola Rebagliati 2001s135. Cose Xscale Xscale è una microarchitettura per processori che fornisce ottime prestazioni con bassi consumi energetici.
9) If e else. Lab.Calc.I AA2002/03 - cap.92 espressione.
Relatori: Emanuele e Denis Tornei Informatici. Introduzione In queste prime lezioni abbiamo affrontato linformatica procedendo a soluzioni di problemi,
Fondamenti di Informatica1 Software di base Tra il linguaggio macchina (basso livello) e i linguaggi evoluti (alto livello) esiste uno strato di software.
Architetture dei Calcolatori (Lettere j-z ) Il Processore
Architettura del calcolatore
Architettura degli Elaboratori II (canale P-Z) Istruzioni di controllo Dott. Franco Liberati.
Strutture di Controllo
Università degli Studi di Salerno Corso di Calcolatori Elettronici
Calcolatori Elettronici Introduzione al Pipelining Francesco Lo Presti Rielaborate da Salvatore Tucci.
Introduzione al linguaggio assembly del microprocessore a parte
Progetto di una memoria cache per il processore DLX Andrea Grandi Filippo Malaguti Massimiliano Mattetti Gabriele Morlini Thomas Ricci Progetto di Calcolatori.
Sistemi ad elevate prestazioni Lezione 1
Università degli Studi di Napoli “Federico II” Facoltà di Ingegneria Dipartimento di Informatica e Sistemistica Corso di Sistemi ad elevate prestazioni.
Informatica Lezione 4 Scienze e tecniche psicologiche dello sviluppo e dell'educazione Anno accademico:
Complessità di un algoritmo
Gli interrupt Quando una periferica richiede attenzione alla cpu genera un segnale detto di interrupt.
Istruzioni Riferimento alla memoria
Arch. Elab. - S. Orlando 1 Esercitazione su Instruction Level Parallelism Salvatore Orlando.
Arch. Elab. - S. Orlando 1 Progetto del processore e supporto del processore al SO (interruzioni – eccezioni) Salvatore Orlando.
Lz. 3 (13/14)Elementi di Programmazione1 Istruzioni (strutture) di controllo 1.
CEFRIEL Consorzio per la Formazione e la Ricerca in Ingegneria dell’Informazione Politecnico di Milano introduzione alle architetture superscalari Come.
Calcolatori Elettronici Introduzione al Pipelining
Prof.ssa Chiara Petrioli -- corso di programmazione 1, a.a. 2006/2007 Corso di Programmazione 1 a.a.2006/2007 Prof.ssa Chiara Petrioli Corso di Laurea.
1. 2 Variabili statiche e dinamiche Un programma è un processo in esecuzione a cui il sistema operativo assegna una certa zona di memoria. Tale zona può.
Informatica A.A. 2009/2010 Parte 4 Dai diagrammi di flusso alla programmazione strutturata: le istruzioni if, for, while, … Corso A: Prof. Stefano Berardi.
Sistemi e Tecnologie Informatiche Verifica di correttezza di un programma.
Corso JAVA Lezione n° 03 Istituto Statale di Istruzione Superiore “F. Enriques”
Elettronica Digitale (II Parte) 10-11_5 1 ELETTRONICA DIGITALE II (5) 6/12 Il processo di assemblaggio.
R 255 G 211 B 8 R 255 G 175 B 0 R 127 G 16 B 162 R 163 G 166 B 173 R 104 G 113 B 122 R 234 G 234 B 234 R 175 G 0 B 51 R 0 G 0 B 0 R 255 G 255 B 255 Supporting.
Calcolatori Elettronici Il Processore
Informatica Lezione 5 Scienze e tecniche psicologiche dello sviluppo e dell'educazione (laurea triennale) Anno accademico:
Calcolatori Elettronici Il Processore (2)
1 Fabio Scotti – Università degli Studi di Milano Fabio Scotti ( ) Laboratorio di programmazione per la sicurezza Valentina Ciriani ( )
Università degli Studi di Bergamo Facoltà di Lingue e Letterature Straniere Facoltà di Lettere e Filosofia A.A Informatica generale 1 Appunti.
1 Sommario lez 1 Concetti principali, domande ed esercizi Concetti principali –algoritmo, programma –struttura di controllo: condizionale (if …), iterativa.
Informatica Generale Marzia Buscemi
Complessità Computazionale
Tipo Documento: unità didattica 3 Modulo 7 Compilatore: Supervisore: Data emissione: Release: Indice: A.Scheda informativa B.Introduzione C.Corpo D.Riepilogo.
Sistemi e Tecnologie Informatiche Complessità di calcolo.
Università di Torino – Facoltà di Scienze MFN Corso di Studi in Informatica Programmazione I - corso B a.a prof. Viviana Bono Blocco 6 – Invariante.
Gli interrupt Richiesta di attenzione alla cpu. Viene generato un segnale detto di interrupt diretto alla cpu.
Università degli Studi di Roma – Tor Vergata Facoltà di Ingegneria – Corso di Laurea in Ingegneria Medica Azione delle istruzioni.
I Microprocessori Unità 3 del libro Internet Working Sistemi e reti.
 Ogni processo che deve essere eseguito da un sistema di elaborazione, deve essere caricato e risiedere almeno parzialmente nella memoria centrale 
Algoritmi Avanzati a.a.2011/2012 Prof.ssa Rossella Petreschi Interconnessione tramite reti Lezione n°6.
Transcript della presentazione:

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 2

Sistemi ad elevate prestazioni - Prof. re Nicola Mazzocca Conflitti nei sistemi basati su pipeling - La gestione dei salti (1) In presenza di un salto non deve essere sempre prelevata dalla memoria l’istruzione successiva, e può non essere facile o possibile determinare subito l’istruzione a cui saltare; In presenza di un salto non deve essere sempre prelevata dalla memoria l’istruzione successiva, e può non essere facile o possibile determinare subito l’istruzione a cui saltare; 1. IF 2. ID 3. EX 4. MEM 5. WB Quando il processore preleva una istruzione, non sa che tipo di istruzione ha prelevato finché non la interpreta (fase ID), ma, a questo punto, ne avrà già presa un’altra (quella immediatamente successiva); Quando il processore preleva una istruzione, non sa che tipo di istruzione ha prelevato finché non la interpreta (fase ID), ma, a questo punto, ne avrà già presa un’altra (quella immediatamente successiva); Potrebbe rendersi conto che l’istruzione precedente era un salto, dovendo quindi saltare ad un’istruzione diversa da quella successiva, rendendo, quindi, il successivo prelievo inutile (branch penalty). Potrebbe rendersi conto che l’istruzione precedente era un salto, dovendo quindi saltare ad un’istruzione diversa da quella successiva, rendendo, quindi, il successivo prelievo inutile (branch penalty).

Sistemi ad elevate prestazioni - Prof. re Nicola Mazzocca Conflitti nei sistemi basati su pipeling - La gestione dei salti (2) Mediamente il 25% del totale delle istruzioni in un programma è rappresentato da istruzioni di salto; Mediamente il 25% del totale delle istruzioni in un programma è rappresentato da istruzioni di salto; Se si verifica ‘branch penalty’ dovendo gestire l’evoluzione di istruzioni che non dovevano essere caricate su ¼ delle istruzioni del programma allora la cosa risulta preoccupante; Se si verifica ‘branch penalty’ dovendo gestire l’evoluzione di istruzioni che non dovevano essere caricate su ¼ delle istruzioni del programma allora la cosa risulta preoccupante; Consideriamo un esempio, in cui abbiamo supposto che ogni istruzione occupi 4 byte… Consideriamo un esempio, in cui abbiamo supposto che ogni istruzione occupi 4 byte…

Sistemi ad elevate prestazioni - Prof. re Nicola Mazzocca La gestione dei salti – Esempio (1) Esempio: Esempio: 76 CMP R1, R3; 80 JEQ 100 …………………… MOVE R1, R2 ……………………... il processore procede nel seguente modo: il processore procede nel seguente modo: (1) (2) (3) (4) (5) (1) (2) (3) (4) (5) 80 IF ID EX MEM WB 84 IF ID EX MEM 88 IF ID EX  tempo

Sistemi ad elevate prestazioni - Prof. re Nicola Mazzocca La gestione dei salti – Esempio (2) Solo alla fine della 3° fase si conoscerà l’indirizzo della prossima istruzione da prelevare ! Solo alla fine della 3° fase si conoscerà l’indirizzo della prossima istruzione da prelevare ! Nel caso in cui il salto non deve essere eseguito la pipe continua a funzionare normalmente; se, però, il salto deve essere eseguito le istruzioni 84 e 88 dovranno essere eliminate (flush della pipe) e bisognerà prelevare l’istruzione 100 e successive. Nel caso in cui il salto non deve essere eseguito la pipe continua a funzionare normalmente; se, però, il salto deve essere eseguito le istruzioni 84 e 88 dovranno essere eliminate (flush della pipe) e bisognerà prelevare l’istruzione 100 e successive. Si crea un ritardo, che diminuisce la produttività della pipe, detto branch penalty. Si crea un ritardo, che diminuisce la produttività della pipe, detto branch penalty. (1) (2) (3) (4) (5) (6) (7) (8) (1) (2) (3) (4) (5) (6) (7) (8) 80 IF ID EX MEM WB 84 IF ID 88 IF 100 IF ID EX MEM WB 104 IF ID EX MEM 108 IF ID EX 112 IF ID  tempo  tempo

Sistemi ad elevate prestazioni - Prof. re Nicola Mazzocca La gestione dei salti – Approccio conservativo Il problema è risolvibile secondo approcci fondamentali: Il problema è risolvibile secondo approcci fondamentali: Approccio conservativo: nel momento in cui il processore interpreta una istruzione come istruzione di salto (fase ID di decodifica dell’istruzione), ferma la pipe, disabilita la propagazione della istruzione che era stata erroneamente già prelevata, determina l’istruzione a cui saltare (fase EX) e la preleva; Approccio conservativo: nel momento in cui il processore interpreta una istruzione come istruzione di salto (fase ID di decodifica dell’istruzione), ferma la pipe, disabilita la propagazione della istruzione che era stata erroneamente già prelevata, determina l’istruzione a cui saltare (fase EX) e la preleva; (1) (2) (3) (4) (5) (6) (7) (8) (1) (2) (3) (4) (5) (6) (7) (8) 80 IF ID EX MEM WB 84 IF IF ID EX MEM WB 104 IF ID EX MEM 108 IF ID EX 112 IF ID  tempo

Sistemi ad elevate prestazioni - Prof. re Nicola Mazzocca La gestione dei salti – Branch Delay Branch Delay. Possiamo avere un accorgimento effettuabile in fase di compilazione che ci permette di evitare l’approccio conservativo, facciamo un esempio. Abbiamo due istruzioni: Branch Delay. Possiamo avere un accorgimento effettuabile in fase di compilazione che ci permette di evitare l’approccio conservativo, facciamo un esempio. Abbiamo due istruzioni: a = a + b if (c == 0)… in fase di compilazione le due istruzioni possono essere invertite, perché l’istruzione a = a + b deve essere eseguita comunque, indipendentemente alla destinazione del salto determinata dalla if, ma questo approccio non è sempre praticabile ! in fase di compilazione le due istruzioni possono essere invertite, perché l’istruzione a = a + b deve essere eseguita comunque, indipendentemente alla destinazione del salto determinata dalla if, ma questo approccio non è sempre praticabile !

Sistemi ad elevate prestazioni - Prof. re Nicola Mazzocca La gestione dei salti – Approccio ottimistico (branch prediction) (1) Branch Prediction. Si tenta di fare una previsione su quale sia il ramo da eseguire in una istruzione condizionale. Consideriamo il seguente segmento di codice iterato ciclicamente: Branch Prediction. Si tenta di fare una previsione su quale sia il ramo da eseguire in una istruzione condizionale. Consideriamo il seguente segmento di codice iterato ciclicamente: 100 if condizione then 104 … else 112 … Il ramo then segue immediatamente il ramo if, mentre il ramo else è localizzato all’indirizzo 112 e quindi la sua esecuzione richiede un salto. Il ramo then segue immediatamente il ramo if, mentre il ramo else è localizzato all’indirizzo 112 e quindi la sua esecuzione richiede un salto Branch Prediction Table

Sistemi ad elevate prestazioni - Prof. re Nicola Mazzocca La gestione dei salti – Approccio ottimistico (branch prediction) (2) La situazione si complica in presenza di due o più cicli for innestati. Ad esempio: for i… 92 CMP JMP JMP for j… CMP 100 JXX 100 JXX 104 … 104 … … 112 JMP JMP 92 L’errore si verifica nel momento in cui si entra per la seconda volta nel ciclo esterno in quanto nella tabella abbiamo salvato un indirizzo fuorviante relativo agli effetti dell’n-esima iterazione del ciclo interno Branch Prediction Table

Sistemi ad elevate prestazioni - Prof. re Nicola Mazzocca La gestione dei salti – Approccio ottimistico (branch prediction) (3) I processori moderni evolvono fra quattro stati descritti da due bit: NON SALTARE (FORTE), NON SALTARE (DEBOLE), SALTA (FORTE) e SALTA (DEBOLE). I processori moderni evolvono fra quattro stati descritti da due bit: NON SALTARE (FORTE), NON SALTARE (DEBOLE), SALTA (FORTE) e SALTA (DEBOLE). N.S. Forte N.S. Debole S. Debole S. Forte Figura 9: I 4 stadi del Branch Prediction.

Sistemi ad elevate prestazioni - Prof. re Nicola Mazzocca La gestione dei salti – Approccio ottimistico (branch prediction) (4) Si noti dunque che il processore sbaglia alla fine della prima esecuzione e alla fine della seconda. Si noti dunque che il processore sbaglia alla fine della prima esecuzione e alla fine della seconda. Supponendo allora che il ciclo esterno sia di 10 iterazioni e quello interno di 1000, il processore sbaglia una volta per ciascuna esecuzione del ciclo interno (sull’ultima iterazione, un errore inevitabile), più una volta sul ciclo esterno, e quindi = 11 volte soltanto, su 10*1000 = iterazioni. Supponendo allora che il ciclo esterno sia di 10 iterazioni e quello interno di 1000, il processore sbaglia una volta per ciascuna esecuzione del ciclo interno (sull’ultima iterazione, un errore inevitabile), più una volta sul ciclo esterno, e quindi = 11 volte soltanto, su 10*1000 = iterazioni. Da questo si capisce anche il perché i numero di cicli esterni deve essere minore del numero di cicli interni, in quanto come visto dal conteggio degli errori nella pipe, se ho più cicli esterni commetto più errori rispetto al caso opposto. Da questo si capisce anche il perché i numero di cicli esterni deve essere minore del numero di cicli interni, in quanto come visto dal conteggio degli errori nella pipe, se ho più cicli esterni commetto più errori rispetto al caso opposto. for i… 92 CMP JMP for j… CMP 100 JXX 104 … … 112 JMP 92 N.S. Forte N.S. Debole S. Debole S. Forte Figura 9: I 4 stadi del Branch Prediction.

Sistemi ad elevate prestazioni - Prof. re Nicola Mazzocca Prossima Lezione Conflitti nei sistemi basati su pipelining: Conflitti sui dati - Internal Forwarding Conflitti nei sistemi basati su pipelining: Conflitti sui dati - Internal Forwarding