3. Evoluzione delle architetture indice 3 3.1 3.2 3.3 3.4 3.5 Evoluzione delle architetture Evoluzione tecnologica Pipeline Gerarchia di memoria Memoria virtuale Architettura RISC L’architettura x86 Architettura degli elaboratori 1 - A. Memo 100 3. Evoluzione delle architetture evoluzione tecnologica CPU - densità di transistor: +30% per anno - frequenza di clock: +20% per anno Memoria - capacità: +60% per anno - velocità di accesso: +10% per anno - costo per bit: -25% per anno Hard disk - capacità: +60% per anno Evoluzione delle architetture Architettura degli elaboratori 1 - A. Memo 101 3. Evoluzione delle architetture evoluzione strutturale a breve gli sviluppi tecnologici si dovranno limitare, in attesa di un cambiamento totale l’aumento di prestazioni è legato sempre più ad organizzazioni più efficienti 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 102 3.1 Pipeline generalità 1 per svolgere un lavoro si devono seguire tre fasi distinte e sequenziali L [fase1] [fase2] [fase3] se ogni fase richiede un tempo T, un unico esecutore svolge un lavoro ogni 3T per ridurre i tempi di produzione si possono utilizzare più esecutori Evoluzione delle architetture Architettura degli elaboratori 1 - A. Memo 103 3.1 Pipeline generalità 2 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 104 3.1 Pipeline generalità 3 soluzione pipeline ad esecutori generici Esec 1 [fase1] [fase2] [fase3] [fase1] [fase2] Esec 2 ............ [fase1] [fase2] [fase3] [fase1] Esec 3 ......................... [fase1] [fase2] [fase3] - N esecutori svolgono a regime un lavoro ogni 3T/N e la sequenza dei lavori viene rispettata Evoluzione delle architetture Architettura degli elaboratori 1 - A. Memo 105 3.1 Pipeline generalità 4 soluzione pipeline ad esecutori specifici Esec 1 [fase1] [fase1] [fase1] [fase1] [fase1] Esec 2 ............ [fase2] [fase2] [fase2] [fase2] Esec 3 ......................... [fase3] [fase3] [fase3] - ogni esecutore svolge sempre e solo la stessa fase di tutti i lavori - soluzione più efficiente in termini di risorse Evoluzione delle architetture Architettura degli elaboratori 1 - A. Memo 106 3.1 Pipeline scomposizione in fasi L’esecuzione di una generica istruzione può essere ad esempio suddivisa in fetch lettura dell’istruzione decode decodifica dell’istruzione read data lettura degli operandi execute esecuzione dell’istruzione write data scrittura del risultato Evoluzione delle architetture Architettura degli elaboratori 1 - A. Memo 107 3.1 Pipeline evoluzione teorica clock ciclo1 ciclo2 ciclo3 ciclo4 ciclo5 ciclo6 Fetch istr 1 istr 2 istr 3 istr 4 istr 5 istr 6 Decode ............ istr 1 Read M ......................... istr 2 istr 3 istr 4 istr 5 istr 1 istr 2 istr 3 Execute ........................................ istr 1 istr 2 Write M ....................................................... istr 1 istr 4 Evoluzione delle architetture Architettura degli elaboratori 1 - A. Memo istr 3 istr 2 108 3.1 Pipeline i problemi In pratica il pipeline non permette di raggiungere il parallelismo teorico per sbilanciamento delle fasi problemi strutturali dipendenza dei dati dipendenza dai controlli Evoluzione delle architetture Architettura degli elaboratori 1 - A. Memo 109 3.1 Pipeline sbilanciamento delle fasi 1 la suddivisione in fasi va fatta in base all’istruzione più onerosa non tutte le istruzioni richiedono le stesse fasi 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 110 3.1 Pipeline sbilanciamento delle fasi 2 Fetch 1 2 3 4 5 6 1 2 3 4 5 6 Decode ............ Read M .................... 1 Execute ....................... 1 2 3 X Write M ................................. 1 4 2 X 3 2 4 X 3 4 X : tempi di attesa dovuti allo sbilanciamento delle fasi Evoluzione delle architetture Architettura degli elaboratori 1 - A. Memo 111 3.1 Pipeline sbilanciamento delle fasi 3 Possibili soluzioni allo sbilanciamento: scomposizione in più sottofasi – i tempi di overhead diventano consistenti 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 112 3.1 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 113 3.1 Pipeline dipendenza dei dati 1 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 D1 F2 Evoluzione delle architetture RM1 D2 E1 WM1 RM2 Architettura degli elaboratori 1 - A. Memo E2 WM2 114 3.1 Pipeline dipendenza dei dati 2 Soluzioni: introduzione di fasi non operative individuazione del richio di dipendenza dei dati e prelievo del dato direttamente all’uscita dell’ALU (data forwarding) risoluzione a livello di compilatore riordino delle istruzioni (pipeline scheduling) Evoluzione delle architetture Architettura degli elaboratori 1 - A. Memo 115 3.1 Pipeline dipendenza dai controlli 1 Tutte le istruzioni che modificano l’Instruction 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 116 3.1 Pipeline dipendenza dai controlli 2 Soluzioni: mettere in stallo il pipeline fino a quando non si è calcolato l’indirizzo della prossima istruzione (pessima efficienza, massima semplicità) individuare prima possibile le istruzioni dannose e anticiparne l’esecuzione, eventualmente con apposita logica di controllo Evoluzione delle architetture Architettura degli elaboratori 1 - A. Memo 117 3.1 Pipeline dipendenza dai controlli 3 Soluzioni per salti condizionati: 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 ripristinare tutto come era prima (squashing) usare due pipeline, e proseguire parallelamente nelle due possibilità Evoluzione delle architetture Architettura degli elaboratori 1 - A. Memo 118 3.1 Pipeline dipendenza dai controlli 4 Prevedere l’esito del salto: staticamente – il compilatore aggiusta i controlli, e li organizza in modo che i salti siano meno probabili 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 119 3.1 Pipeline superpipeline 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 prevedere n pipeline che possano operare in parallelo Evoluzione delle architetture Architettura degli elaboratori 1 - A. Memo 120 3.1 Pipeline pipeline superscalare riuscire ad eseguire più di un’istruzione per ciclo macchina duplicando gli esecutori più onerosi e facendoli operare in parallelo tipicamente più ALU intere ed una Floating Point richiede un control path notevole per sfruttare al meglio queste risorse Evoluzione delle architetture Architettura degli elaboratori 1 - A. Memo 121 3.1 Pipeline dynamic scheduling In run-time la CPU riordina le istruzioni al fine di ottimizzare l’utilizzo del pipeline, e poi riaggiusta l’ordine corretto dei risultati maggiore è il blocco di istruzioni riordinate, migliore è l’efficienza e aumenta la complessità del control path e del datapath viene detta anche out-of-order execution Evoluzione delle architetture Architettura degli elaboratori 1 - A. Memo 122 3.1 Pipeline scoreboard L’esecuzione simultanea di più istruzioni su più unità esecutive si implementa con: scoreboard – tabella centralizzata che tiene conto delle istruzioni da eseguire e delle risorse a disposizione reservation station – tecnica distribuita di inoltro delle singole istruzioni alle varie unità bufferizzate Evoluzione delle architetture Architettura degli elaboratori 1 - A. Memo 123 3.2 Gerarchia di memoria tecnologie di memorizzazione L’ideale sarebbe avere una memoria molto grande, molto veloce e molto economica. tecnologia registro cache on-chip SRAM DRAM disk CD-ROM tape Evoluzione delle architetture velocità 1 - 2 nS 3 - 10 nS 20 - 50 nS 60 - 250 nS 5 - 20 mS 100 - 500 mS 1 - molti S dimensioni 16 - 256 B 1 - 32 KB 32 - 512 KB 1 - 1024 MB 1 - 512 GB 600 - 1200 MB superiori Architettura degli elaboratori 1 - A. Memo 124 3.2 Gerarchia di memoria prestazioni CPU/memoria 1000 100 10 1 1980 Evoluzione delle architetture 1990 2000 le CPU hanno avuto un notevole aumento di prestazioni dovuto a innovazioni tecnologiche e architetturali (..., pipeline, cache, ...) le memorie sono migliorate solo grazie alla tecnologia Architettura degli elaboratori 1 - A. Memo 125 3.2 Gerarchia di memoria proprietà dei programmi proprietà statiche (dal file sorgente) proprietà dinamiche (in esecuzione) – linearità dei riferimenti gli indirizzi sono molto spesso consecutivi – località dei riferimenti località spaziale gli indirizzi vicini sono molto probabili località temporale gli indirizzi più recenti hanno mggiore probabilità Evoluzione delle architetture Architettura degli elaboratori 1 - A. Memo 126 3.2 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 127 3.2 Gerarchia di memoria dividi et impera Conviene suddividere la memoria in due parti: livello 1: molto veloce e di dimensioni contenute (per il costo), in cui mettere le informazioni più probabili (cache) 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 128 3.2 Gerarchia di memoria organizzazione gerarchica suddivisione della memoria in livelli il livello superiore (il primo) è utilizzato direttamente dalla CPU ogni livello è più veloce, di dimensioni minori e di costo per byte superiore del livello sottostante ogni livello contiene anche tutte le informazioni del livello sottostante Evoluzione delle architetture Architettura degli elaboratori 1 - A. Memo 129 3.2 Gerarchia di memoria schema concettuale livello inferiore memoria CPU cache centrale livello superiore Evoluzione delle architetture Architettura degli elaboratori 1 - A. Memo 130 3.2 Gerarchia di memoria suddivisione in blocchi per implementare l’organizzazione gerarchica è necessario suddividere la memoria in blocchi la dimensione di un blocco è la minima quantità indivisibile di informazioni che vengono ricopiate nel livello sovrastante 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 131 3.2 Gerarchia di memoria hit e miss Quando la CPU richiede un’informazione, questa può essere presente o meno in cache: hit, o successo, deve avere una probabilità molto elevata (90 - 95 %) 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 132 3.2 Gerarchia di memoria tempo medio di accesso Il tempo medio di accesso ad un dato in memoria vale: Ta = Th + Tm (1-Ph) Ta = tempo medio di accesso (average memory-access time) Th = tempo di accesso ad un dato presente in cache Tm = tempo medio di accesso ad un dato non in cache Ph = probabilità di hit N.B.= Tm e Ph dipendono dalla dimensione del blocco Evoluzione delle architetture Architettura degli elaboratori 1 - A. Memo 133 3.2 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 134 3.2 Gerarchia di memoria problematiche organizzazione della cache e tecniche di allocazione individuazione di hit o miss rimpiazzo dei blocchi congruenza dei blocchi Evoluzione delle architetture Architettura degli elaboratori 1 - A. Memo 135 3.2 Gerarchia di memoria direct mapping 1 Associazione diretta (direct mapping) 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 0 gruppo 1 gruppo 2 gruppo 3 N gruppi da M line ciascuno livello inferiore livello superiore Evoluzione delle architetture gruppo N-1 N line ILI = Indirizzo Livello inferiore ILS = Indirizzo Livello Superiore Architettura degli elaboratori 1 - A. Memo } ILS = ILI mod N 136 3.2 Gerarchia di memoria direct mapping 2 Vantaggi semplicità di traduzione da indirizzo ILI (memoria) a indirizzo ILS (cache) determinazione veloce di hit o miss Svantaggi necessità di contraddistinguere il blocco presente nella line (introduzione del Tag) swap continui per dati di blocchi adiacenti Evoluzione delle architetture Architettura degli elaboratori 1 - A. Memo 137 3.2 Gerarchia di memoria fully associative 1 Associazione completa (fully associative) ogni blocco del livello inferiore può essere allocato in un qualsiasi blocco (line o slot) del livello superiore livello inferiore N blocchi livello superiore Evoluzione delle architetture M line Architettura degli elaboratori 1 - A. Memo 138 3.2 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 massima efficienza di allocazione Svantaggi calcolo dell’indirizzo ILS e verifica hit/miss molto onerosi Evoluzione delle architetture Architettura degli elaboratori 1 - A. Memo 139 3.2 Gerarchia di memoria n-way set associative 1 Associazione a gruppi (n-way set associative) 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 0 inisieme 1 insieme 2 insieme 3 insieme N-1 M insiemi da K line ciascuno livello inferiore livello superiore Evoluzione delle architetture M gruppi da N line ciascuno nell’esempio N=2 2-way set associative Architettura degli elaboratori 1 - A. Memo 140 3.2 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 141 3.2 Gerarchia di memoria rimpiazzo dei blocchi Quando la cache è piena, quale blocco mi conviene sostituire ? Random, occupazione omogenea dello spazio Last recently Used, coerente con la località temporale rimpiazzo casuale % Pmiss rimpiazzo LRU N-way 2 4 8 2 4 8 16 KB 5,69 5,29 4,96 5,18 4,67 4,39 64 KB 2,01 1,66 1,53 1,88 1,54 1,39 256 KB 1,17 1,13 1,12 1,15 1,13 1,12 Evoluzione delle architetture Architettura degli elaboratori 1 - A. Memo 142 3.2 Gerarchia di memoria il problema della scrittura 1 La scrittura dei dati determina incoerenza tra il blocco in cache e quello nei livelli inferiori. 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. Evoluzione delle architetture Architettura degli elaboratori 1 - A. Memo 143 3.2 Gerarchia di memoria il problema della scrittura 2 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 144 3.2 Gerarchia di memoria ridurre la probabilità di miss 1 miss di primo accesso, non riducibile miss di capacità insufficiente, quando in cache non trovano posto tutti i blocchi del programma – cache più ampie e blocchi più estesi (*) 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 145 3.2 Gerarchia di memoria ridurre la probabilità di miss 2 realizzare le tabelle con memorie associative, per ridurre i tempi di ricerca distinguere tra cache dati e cache istruzioni ottimizzare tramite compilatori – posizionamento accurato delle procedure ripetitive – fusione di vettori in strutture – loop interchange Evoluzione delle architetture Architettura degli elaboratori 1 - A. Memo 146 3.2 Gerarchia di memoria quantificazione dimensione del blocco 4 - 128 Byte durata hit 1 - 4 cicli machina durata miss 8 - 32 cicli (ed anche di più) (tempo di accesso) (6-10 cicli) (tempo di trasferimento) (2 - 22 cicli) percentuale miss 1% - 20% dimensione cache 1 - 256 KByte Evoluzione delle architetture Architettura degli elaboratori 1 - A. Memo 147 3.2 Gerarchia di memoria memoria DRAM 1 Dynamic Random Access Memory memorizzazione assegnata a componenti capacitivi richiedono un ciclo di refresh ogni 8-10 mS organizzazione interna 2D e indirizzo diviso – Raw Access Strobe – Column Access Strobe Evoluzione delle architetture Architettura degli elaboratori 1 - A. Memo 148 3.2 Gerarchia di memoria memoria DRAM 2 anno 1980 1983 capacità 64 Kb 256 Kb ciclo di lettura 250 ns 220 ns 1986 1989 1992 1 Mb 4 Mb 16 Mb 190 ns 165 ns 145 ns 1995 64 Mb 120 ns Evoluzione delle architetture Architettura degli elaboratori 1 - A. Memo 149 3.2 Gerarchia di memoria memoria principale 1 CPU Organizzazione diretta cache Il Bus tra CPU e cache ha la stessa dimensione di quello tra cache e memoria principale memoria Evoluzione delle architetture Architettura degli elaboratori 1 - A. Memo 150 3.2 Gerarchia di memoria memoria principale 2 CPU 32 bit Organizzazione estesa multiplexer cache cache cache 128 bit memoria Evoluzione delle architetture Multiplexer tra CPU ed N cache e bus ampio tra le N cache e la memoria principale Architettura degli elaboratori 1 - A. Memo 151 3.2 Gerarchia di memoria memoria principale 3 CPU Organizzazione interleaving Bus normale tra CPU cache e cache e collegamento a memoria interlacciata tra cache e moduli modulo modulo modulo di memoria DRAM 0 1 2 Evoluzione delle architetture Architettura degli elaboratori 1 - A. Memo 152 3.2 Gerarchia di memoria evoluzione delle DRAM 1 tempo di accesso: tempo necessario alla memoria per accedere alla cella indirizzata tempo di lettura: tempo necessario alla CPU per acquisire un dato dal DB, dal momento in cui emette l’indirizzo in AB tempo di lettura tempo di accesso Evoluzione delle architetture Architettura degli elaboratori 1 - A. Memo 153 3.2 Gerarchia di memoria evoluzione delle DRAM 2 memorie interleaving: accesso continuato alla memoria senza aspettare la conclusione della lettura Evoluzione delle architetture Architettura degli elaboratori 1 - A. Memo 154 3.2 Gerarchia di memoria evoluzione delle DRAM 3 memorie page mode: accesso continuato alla stessa colonna di memoria (multiple RAW access) (ciclo di lettura=100ns, column select=20ns) Evoluzione delle architetture Architettura degli elaboratori 1 - A. Memo 155