Evoluzione delle architetture Architettura degli elaboratori 1 - A. Memo Evoluzione delle architetture indice 3Evoluzione tecnologica 3.1Pipeline 3.2Gerarchia di memoria 3.3Memoria virtuale 3.4Architettura RISC 3.5L’architettura x86
Evoluzione delle architetture Architettura degli elaboratori 1 - A. Memo Evoluzione delle architetture evoluzione tecnologica l CPU- densità di transistor: +30% per anno - frequenza di clock: +20% per anno l Memoria- capacità: +60% per anno - velocità di accesso: +10% per anno - costo per bit: -25% per anno l Hard disk- capacità: +60% per anno
Evoluzione delle architetture Architettura degli elaboratori 1 - A. Memo Evoluzione delle architetture evoluzione strutturale l a breve gli sviluppi tecnologici si dovranno limitare, in attesa di un cambiamento totale l l’aumento di prestazioni è legato sempre più ad organizzazioni più efficienti l parallelismo: se un lavoro non può essere fatto più velocemente da una sola persona, allora bisogna farlo fare da più persone contemporaneamente
Evoluzione delle architetture Architettura degli elaboratori 1 - A. Memo Pipeline generalità 1 l per svolgere un lavoro si devono seguire tre fasi distinte e sequenziali L [fase1] [fase2] [fase3] l se ogni fase richiede un tempo T, un unico esecutore svolge un lavoro ogni 3T l per ridurre i tempi di produzione si possono utilizzare più esecutori
Evoluzione delle architetture Architettura degli elaboratori 1 - A. Memo Pipeline generalità 2 l soluzione totalmente parallela Esec 1 [fase1] [fase2] [fase3] [fase1] [fase2] [fase3] Esec 2 [fase1] [fase2] [fase3] [fase1] [fase2] [fase3] Esec 3 [fase1] [fase2] [fase3] [fase1] [fase2] [fase3] - N esecutori svolgono un lavoro ogni 3T/N - purtroppo non va bene in informatica perché i lavori (istruzioni) sono (spesso) sequenziali
Evoluzione delle architetture Architettura degli elaboratori 1 - A. Memo Pipeline generalità 3 l soluzione pipeline ad esecutori generici Esec 1 Esec 2 Esec 3 N esecutori svolgono a regime un lavoro ogni 3T/N e la sequenza dei lavori viene rispettata [fase1] [fase2][fase3] [fase1][fase2][fase3] [fase1][fase2][fase3] [fase1][fase2][fase1]
Evoluzione delle architetture Architettura degli elaboratori 1 - A. Memo Pipeline generalità 4 l soluzione pipeline ad esecutori specifici Esec 1 Esec 2 Esec 3 ogni esecutore svolge sempre e solo la stessa fase di tutti i lavori - soluzione più efficiente in termini di risorse [fase1] [fase2] [fase3] [fase1] [fase2] [fase3] [fase1] [fase2] [fase3] [fase1] [fase2] [fase1]
Evoluzione delle architetture Architettura degli elaboratori 1 - A. Memo Pipeline scomposizione in fasi L’esecuzione di una generica istruzione può essere ad esempio suddivisa in l fetchlettura dell’istruzione l decodedecodifica dell’istruzione l read datalettura degli operandi l executeesecuzione dell’istruzione l write datascrittura del risultato
Evoluzione delle architetture Architettura degli elaboratori 1 - A. Memo 108 clock ciclo1 ciclo2 ciclo3 ciclo4 ciclo5 ciclo6 Fetch Decode Read M Execute Write M Pipeline evoluzione teorica istr 1 istr 2 istr 3 istr 4 istr 5 istr 2 istr 3 istr 4 istr 5 istr 6
Evoluzione delle architetture Architettura degli elaboratori 1 - A. Memo Pipeline i problemi In pratica il pipeline non permette di rag- giungere il parallelismo teorico per l sbilanciamento delle fasi l problemi strutturali l dipendenza dei dati l dipendenza dai controlli
Evoluzione delle architetture Architettura degli elaboratori 1 - A. Memo Pipeline sbilanciamento delle fasi 1 l la suddivisione in fasi va fatta in base all’istruzione più onerosa l non tutte le istruzioni richiedono le stesse fasi l non tutte le fasi richiedono lo stesso tempo di esecuzione (si pensi alla lettura di un operando tramite registro o mediante indirizzamento indiretto)
Evoluzione delle architetture Architettura degli elaboratori 1 - A. Memo Pipeline sbilanciamento delle fasi 2 Fetch Decode Read M Execute Write M X : tempi di attesa dovuti allo sbilanciamento delle fasi X XX
Evoluzione delle architetture Architettura degli elaboratori 1 - A. Memo Pipeline sbilanciamento delle fasi 3 Possibili soluzioni allo sbilanciamento: l scomposizione in più sottofasi –i tempi di overhead diventano consistenti l duplicare gli esecutori delle fasi più lunghe e farli operare in parallelo –le CPU più recenti hanno più ALU intere e un’ALU Floating Point
Evoluzione delle architetture Architettura degli elaboratori 1 - A. Memo Pipeline problemi strutturali Problemi: –Se servono più risorse interne, prima o poi la tecnologia ci permetterà di duplicarle –il vero collo di bottiglia è l’accesso alle risorse esterne (memoria): anche 3 accessi per ciclo Possibili soluzioni: –suddividere le memorie –introdurre fasi non operative
Evoluzione delle architetture Architettura degli elaboratori 1 - A. Memo Pipeline dipendenza dei dati 1 l può succedere che un dato modificato nella fase di execute venga utilizzato dalla fase di lettura dell’istruzione successiva INC [0123] CMP [0123],AL F1 F2 D1 D2 RM1 RM2 E1 E2 WM1 WM2
Evoluzione delle architetture Architettura degli elaboratori 1 - A. Memo Pipeline dipendenza dei dati 2 Soluzioni: l introduzione di fasi non operative l individuazione del richio di dipendenza dei dati e prelievo del dato direttamente all’uscita dell’ALU (data forwarding) l risoluzione a livello di compilatore l riordino delle istruzioni (pipeline scheduling)
Evoluzione delle architetture Architettura degli elaboratori 1 - A. Memo Pipeline dipendenza dai controlli 1 Tutte le istruzioni che modificano l’Instruc- tion Pointer (salti condizionati e non, chiamate a e ritorni da procedure, interrupt) mettono in crisi il pipeline. La fase di fetch successiva carica l’istruzione seguente, che non è detto sia quella giusta. Queste istruzioni purtroppo sono circa il 30%.
Evoluzione delle architetture Architettura degli elaboratori 1 - A. Memo Pipeline dipendenza dai controlli 2 Soluzioni: l mettere in stallo il pipeline fino a quando non si è calcolato l’indirizzo della prossima istru- zione (pessima efficienza, massima semplicità) l individuare prima possibile le istruzioni dannose e anticiparne l’esecuzione, eventual- mente con apposita logica di controllo
Evoluzione delle architetture Architettura degli elaboratori 1 - A. Memo Pipeline dipendenza dai controlli 3 Soluzioni per salti condizionati: l ipotizzare che non ci sia il salto: se va bene siamo andati avanti, altrimenti facciamo ripartire il pipeline con il nuovo indirizzo –alcune istruzioni modificano lo stato della CPU fin dalle prime fasi: in tal caso bisogna ripristi- nare tutto come era prima (squashing) l usare due pipeline, e proseguire parallela- mente nelle due possibilità
Evoluzione delle architetture Architettura degli elaboratori 1 - A. Memo Pipeline dipendenza dai controlli 4 Prevedere l’esito del salto: l staticamente –il compilatore aggiusta i controlli, e li organizza in modo che i salti siano meno probabili l dinamicamente –costruire una tabella storica dei salti effettuati (Branch Target Buffer) e utilizzarla statisticamente, campi BranchAddress, TargetAddress ed History
Evoluzione delle architetture Architettura degli elaboratori 1 - A. Memo Pipeline superpipeline l Suddivisione delle singole fasi lunghe T in n sottofasi distinte, e far partire fino ad n istruzioni nella medesima fase, ad intervalli regolari T/n l prevedere n pipeline che possano operare in parallelo
Evoluzione delle architetture Architettura degli elaboratori 1 - A. Memo Pipeline pipeline superscalare l riuscire ad eseguire più di un’istruzione per ciclo macchina duplicando gli esecutori più onerosi e facendoli operare in parallelo l tipicamente più ALU intere ed una Floating Point l richiede un control path notevole per sfruttare al meglio queste risorse
Evoluzione delle architetture Architettura degli elaboratori 1 - A. Memo Pipeline dynamic scheduling l In run-time la CPU riordina le istruzioni al fine di ottimizzare l’utilizzo del pipeline, e poi riaggiusta l’ordine corretto dei risultati l maggiore è il blocco di istruzioni riordinate, migliore è l’efficienza e aumenta la com- plessità del control path e del datapath l viene detta anche out-of-order execution
Evoluzione delle architetture Architettura degli elaboratori 1 - A. Memo Pipeline scoreboard L’esecuzione simultanea di più istruzioni su più unità esecutive si implementa con: l scoreboard –tabella centralizzata che tiene conto delle istru- zioni da eseguire e delle risorse a disposizione l reservation station –tecnica distribuita di inoltro delle singole istruzio- ni alle varie unità bufferizzate
Evoluzione delle architetture Architettura degli elaboratori 1 - A. Memo Gerarchia di memoria tecnologie di memorizzazione L’ideale sarebbe avere una memoria molto grande, molto veloce e molto economica. tecnologiavelocitàdimensioni registro1 - 2 nS B cache on-chip nS KB SRAM nS KB DRAM nS MB disk mS GB CD-ROM mS MB tape1 - molti Ssuperiori
Evoluzione delle architetture Architettura degli elaboratori 1 - A. Memo Gerarchia di memoria prestazioni CPU/memoria l le CPU hanno avuto un notevole aumento di prestazioni dovuto a innovazioni tecnologi- che e architetturali (..., pipeline, cache,...) l le memorie sono migliorate solo grazie alla tecnologia
Evoluzione delle architetture Architettura degli elaboratori 1 - A. Memo Gerarchia di memoria proprietà dei programmi l proprietà statiche (dal file sorgente) l proprietà dinamiche (in esecuzione) –linearità dei riferimenti gli indirizzi sono molto spesso consecutivi –località dei riferimenti l località spaziale gli indirizzi vicini sono molto probabili l località temporale gli indirizzi più recenti hanno mggiore probabilità
Evoluzione delle architetture Architettura degli elaboratori 1 - A. Memo Gerarchia di memoria legge del 90/10 Un programma utilizza mediamente il 90 % del suo tempo di esecuzione per effettuare un numero limitato di istruzioni, pari a circa il 10 % di tutte quelle che lo compongono.
Evoluzione delle architetture Architettura degli elaboratori 1 - A. Memo Gerarchia di memoria dividi et impera Conviene suddividere la memoria in due parti: l livello 1: molto veloce e di dimensioni contenute (per il costo), in cui mettere le informazioni più probabili (cache) l livello 2: molto grande e più lenta (per il costo), in cui mettere tutte le informazioni
Evoluzione delle architetture Architettura degli elaboratori 1 - A. Memo Gerarchia di memoria organizzazione gerarchica l suddivisione della memoria in livelli l il livello superiore (il primo) è utilizzato direttamente dalla CPU l ogni livello è più veloce, di dimensioni minori e di costo per byte superiore del livello sottostante l ogni livello contiene anche tutte le informazioni del livello sottostante
Evoluzione delle architetture Architettura degli elaboratori 1 - A. Memo Gerarchia di memoria schema concettuale CPU cache memoria centrale livello superiore livello inferiore
Evoluzione delle architetture Architettura degli elaboratori 1 - A. Memo Gerarchia di memoria suddivisione in blocchi l per implementare l’organizzazione gerarchica è necessario suddividere la memoria in blocchi l la dimensione di un blocco è la minima quantità indivisibile di informazioni che vengono ricopiate nel livello sovrastante l l’indirizzo di un’informazione sarà composto dall’indirizzo del blocco e da quello del dato all’interno del blocco
Evoluzione delle architetture Architettura degli elaboratori 1 - A. Memo Gerarchia di memoria hit e miss Quando la CPU richiede un’informazione, questa può essere presente o meno in cache: l hit, o successo, deve avere una probabilità molto elevata ( %) l miss, o fallimento In caso di miss si deve avviare una procedura di scambio (swap) dati con il livello sottostante.
Evoluzione delle architetture Architettura degli elaboratori 1 - A. Memo Gerarchia di memoria tempo medio di accesso Il tempo medio di accesso ad un dato in memoria vale: T a = T h + T m (1-P h ) T a = tempo medio di accesso (average memory-access time) T h = tempo di accesso ad un dato presente in cache T m = tempo medio di accesso ad un dato non in cache P h = probabilità di hit N.B.= T m e P h dipendono dalla dimensione del blocco
Evoluzione delle architetture Architettura degli elaboratori 1 - A. Memo Gerarchia di memoria tecnica generale - suddivisione della memoria centrale in blocchi - dimensionamento della cache in multiplo di blocchi - la CPU emette un indirizzo: hit - il dato viene fornito immediatamente alla CPU miss - la cache richiede al dato al suo livello inferiore - in cache viene memorizzato un intero blocco - viene fornito il dato alla CPU
Evoluzione delle architetture Architettura degli elaboratori 1 - A. Memo Gerarchia di memoria problematiche l organizzazione della cache e tecniche di allocazione l individuazione di hit o miss l rimpiazzo dei blocchi l congruenza dei blocchi
Evoluzione delle architetture Architettura degli elaboratori 1 - A. Memo Gerarchia di memoria direct mapping 1 Associazione diretta (direct mapping) l ogni blocco di un certo gruppo di blocchi del livello inferiore può essere allocato solo in un ben preciso blocco (line o slot) del livello superiore gruppo 0gruppo 1gruppo 2gruppo 3gruppo N-1 livello inferiore livello superiore N gruppi da M line ciascuno N line ILI = Indirizzo Livello inferiore ILS = Indirizzo Livello Superiore ILS = ILI mod N }
Evoluzione delle architetture Architettura degli elaboratori 1 - A. Memo Gerarchia di memoria direct mapping 2 Vantaggi l semplicità di traduzione da indirizzo ILI (memoria) a indirizzo ILS (cache) l determinazione veloce di hit o miss Svantaggi l necessità di contraddistinguere il blocco presente nella line (introduzione del Tag) l swap continui per dati di blocchi adiacenti
Evoluzione delle architetture Architettura degli elaboratori 1 - A. Memo Gerarchia di memoria fully associative 1 Associazione completa (fully associative) l ogni blocco del livello inferiore può essere allo- cato in un qualsiasi blocco (line o slot) del livello superiore livello inferiore livello superiore M line N blocchi blocco 0blocco 1blocco 2blocco 3 blocco N-1
Evoluzione delle architetture Architettura degli elaboratori 1 - A. Memo Gerarchia di memoria fully associative 2 Alla cache composta da M blocchi viene affiancata una tabella di M elementi, contenenti il numero di blocco (tag) posto nella line corrispondente. Vantaggi l massima efficienza di allocazione Svantaggi l calcolo dell’indirizzo ILS e verifica hit/miss molto onerosi
Evoluzione delle architetture Architettura degli elaboratori 1 - A. Memo Gerarchia di memoria n-way set associative 1 Associazione a gruppi (n-way set associative) l ogni blocco di un certo insieme di blocchi del livello inferiore può essere allocato liberamente in un ben preciso gruppo di blocchi del livello superiore insieme 0inisieme 1insieme 2insieme 3insieme N-1 livello inferiore livello superiore M insiemi da K line ciascuno M gruppi da N line ciascuno nell’esempio N=2 2-way set associative
Evoluzione delle architetture Architettura degli elaboratori 1 - A. Memo Gerarchia di memoria n-way set associative 2 Alla cache composta da M gruppi di N line ciascuno vengono affiancate M tabelle di N elementi ciascuna, contenenti i tag che contraddistinguono i blocchi posti nelle line corrispondenti (tecnica più diffusa). Si ottiene una adeguata efficienza di allocazione a fronte di una sopportabile complessità di ricerca
Evoluzione delle architetture Architettura degli elaboratori 1 - A. Memo Gerarchia di memoria rimpiazzo dei blocchi Quando la cache è piena, quale blocco mi conviene sostituire ? l Random, occupazione omogenea dello spazio l Last recently Used, coerente con la località temporale rimpiazzo casuale rimpiazzo LRU N-way KB5,695,294,965,184,674,39 64 KB2,011,661,531,881,541, KB1,171,131,121,151,131,12 % P miss
Evoluzione delle architetture Architettura degli elaboratori 1 - A. Memo Gerarchia di memoria il problema della scrittura 1 La scrittura dei dati determina incoerenza tra il blocco in cache e quello nei livelli inferiori. l write through –scrittura contemporanea in cache e nel livello di memoria inferiore: aumento di traffico per frequenti scritture nel medesimo blocco, ma in entrambi i livelli i dati sono sempre coerenti. Si utilizzano buffer di scrittura asincroni verso la memoria. N.B.= in memoria ci sono istruzioni e dati, e solo il 50% delle operazioni sui dati sono scritture (circa 12 %)
Evoluzione delle architetture Architettura degli elaboratori 1 - A. Memo Gerarchia di memoria il problema della scrittura 2 l write back –scrittura differenziata in memoria inferiore solo quando il blocco di cache viene rimpiazzato: necessità di riconoscere se ci sono state operazioni di scrittura nel nlocco, ottimizzazione del traffico ma periodi di non coerenza
Evoluzione delle architetture Architettura degli elaboratori 1 - A. Memo Gerarchia di memoria ridurre la probabilità di miss 1 l miss di primo accesso, non riducibile l miss di capacità insufficiente, quando in cache non trovano posto tutti i blocchi del programma –cache più ampie e blocchi più estesi (*) l miss di interferenza, quando nell’n-associative dobbiamo rimpiazzare un blocco e ci sono ancora blocchi non occupati –aumentare la dimensione di N
Evoluzione delle architetture Architettura degli elaboratori 1 - A. Memo Gerarchia di memoria ridurre la probabilità di miss 2 l realizzare le tabelle con memorie associative, per ridurre i tempi di ricerca l distinguere tra cache dati e cache istruzioni l ottimizzare tramite compilatori –posizionamento accurato delle procedure ripetitive –fusione di vettori in strutture –loop interchange
Evoluzione delle architetture Architettura degli elaboratori 1 - A. Memo Gerarchia di memoria quantificazione dimensione del blocco Byte durata hit cicli machina durata miss cicli (ed anche di più) (tempo di accesso)(6-10 cicli) (tempo di trasferimento)( cicli) percentuale miss1% - 20% dimensione cache KByte
Evoluzione delle architetture Architettura degli elaboratori 1 - A. Memo Gerarchia di memoria memoria DRAM 1 Dynamic Random Access Memory l memorizzazione assegnata a componenti capacitivi l richiedono un ciclo di refresh ogni 8-10 mS l organizzazione interna 2D e indirizzo diviso –Raw Access Strobe –Column Access Strobe
Evoluzione delle architetture Architettura degli elaboratori 1 - A. Memo Gerarchia di memoria memoria DRAM 2 anno capacità ciclo di lettura Kb250 ns Kb220 ns Mb190 ns Mb165 ns Mb145 ns Mb120 ns
Evoluzione delle architetture Architettura degli elaboratori 1 - A. Memo Gerarchia di memoria memoria principale 1 CPU cache memoria Organizzazione diretta Il Bus tra CPU e cache ha la stessa dimensione di quello tra cache e memoria principale
Evoluzione delle architetture Architettura degli elaboratori 1 - A. Memo Gerarchia di memoria memoria principale 2 Organizzazione estesa Multiplexer tra CPU ed N cache e bus ampio tra le N cache e la memoria principale memoria multiplexer CPU cache 128 bit 32 bit
Evoluzione delle architetture Architettura degli elaboratori 1 - A. Memo Gerarchia di memoria memoria principale 3 Organizzazione interleaving Bus normale tra CPU e cache e collegamento a memoria interlacciata tra cache e moduli di memoria DRAM modulo 0 CPU cache modulo 1 modulo 2
Evoluzione delle architetture Architettura degli elaboratori 1 - A. Memo Gerarchia di memoria evoluzione delle DRAM 1 l tempo di accesso: tempo necessario alla memoria per accedere alla cella indirizzata l tempo di lettura: tempo necessario alla CPU per acquisire un dato dal DB, dal momento in cui emette l’indirizzo in AB tempo di accesso tempo di lettura
Evoluzione delle architetture Architettura degli elaboratori 1 - A. Memo Gerarchia di memoria evoluzione delle DRAM 2 l memorie interleaving: accesso continuato alla memoria senza aspettare la conclusione della lettura
Evoluzione delle architetture Architettura degli elaboratori 1 - A. Memo Gerarchia di memoria evoluzione delle DRAM 3 l memorie page mode: accesso continuato alla stessa colonna di memoria (multiple RAW access) (ciclo di lettura=100ns, column select=20ns)