560 likes | 795 Views
3. Evoluzione delle architetture indice. 3 Evoluzione tecnologica 3.1 Pipeline 3.2 Gerarchia di memoria 3.3 Memoria virtuale 3.4 Architettura RISC 3.5 L’architettura x86. 3. Evoluzione delle architetture evoluzione tecnologica. CPU - densità di transistor: +30% per anno
E N D
3. Evoluzione delle architettureindice 3 Evoluzione tecnologica 3.1 Pipeline 3.2 Gerarchia di memoria 3.3 Memoria virtuale 3.4 Architettura RISC 3.5 L’architettura x86 Architettura degli elaboratori 1 - A. Memo
3. Evoluzione delle architettureevoluzione 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 Architettura degli elaboratori 1 - A. Memo
3. Evoluzione delle architettureevoluzione 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 Architettura degli elaboratori 1 - A. Memo
3.1 Pipelinegeneralità 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 Architettura degli elaboratori 1 - A. Memo
3.1 Pipelinegeneralità 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 Architettura degli elaboratori 1 - A. Memo
3.1 Pipelinegeneralità 3 • 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] [fase1] [fase2] [fase3] [fase1] [fase1] [fase2] [fase3] Architettura degli elaboratori 1 - A. Memo
3.1 Pipelinegeneralità 4 • 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] [fase1] [fase1] [fase1] [fase1] [fase2] [fase2] [fase2] [fase2] [fase3] [fase3] [fase3] Architettura degli elaboratori 1 - A. Memo
3.1 Pipelinescomposizione in fasi L’esecuzione di una generica istruzione può essere ad esempio suddivisa in • fetchlettura dell’istruzione • decodedecodifica dell’istruzione • readdatalettura degli operandi • executeesecuzione dell’istruzione • write datascrittura del risultato Architettura degli elaboratori 1 - A. Memo
3.1 Pipelineevoluzione teorica clock ciclo1 ciclo2 ciclo3 ciclo4 ciclo5 ciclo6 Fetch Þ Decode Þ ............ Read M Þ ......................... Execute Þ ........................................ Write M Þ ....................................................... istr 1 istr 2 istr 3 istr 4 istr 5 istr 6 istr 1 istr 2 istr 3 istr 4 istr 5 istr 1 istr 2 istr 3 istr 4 istr 1 istr 2 istr 3 istr 1 istr 2 Architettura degli elaboratori 1 - A. Memo
3.1 Pipelinei problemi In pratica il pipeline non permette di rag-giungere il parallelismo teorico per • sbilanciamento delle fasi • problemi strutturali • dipendenza dei dati • dipendenza dai controlli Architettura degli elaboratori 1 - A. Memo
3.1 Pipelinesbilanciamento 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) Architettura degli elaboratori 1 - A. Memo
3.1 Pipelinesbilanciamento delle fasi 2 Fetch Þ Decode Þ ............ Read M Þ .................... Execute Þ ....................... Write M Þ ................................. X : tempi di attesa dovuti allo sbilanciamento delle fasi 1 2 3 4 5 6 1 2 3 4 5 6 1 2 3 4 1 2 3 4 X 1 2 3 4 X X Architettura degli elaboratori 1 - A. Memo
3.1 Pipelinesbilanciamento 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 Architettura degli elaboratori 1 - A. Memo
3.1 Pipelineproblemi 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 Architettura degli elaboratori 1 - A. Memo
3.1 Pipelinedipendenza 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 RM1 E1 WM1 F2 D2 RM2 E2 WM2 Architettura degli elaboratori 1 - A. Memo
3.1 Pipelinedipendenza 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) Architettura degli elaboratori 1 - A. Memo
3.1 Pipelinedipendenza 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%. Architettura degli elaboratori 1 - A. Memo
3.1 Pipelinedipendenza dai controlli 2 Soluzioni: • mettere in stallo il pipeline fino a quando non si è calcolato l’indirizzo della prossima istru-zione (pessima efficienza, massima semplicità) • individuare prima possibile le istruzioni dannose e anticiparne l’esecuzione, eventual-mente con apposita logica di controllo Architettura degli elaboratori 1 - A. Memo
3.1 Pipelinedipendenza 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 ripristi-nare tutto come era prima (squashing) • usare due pipeline, e proseguire parallela-mente nelle due possibilità Architettura degli elaboratori 1 - A. Memo
3.1 Pipelinedipendenza 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 Architettura degli elaboratori 1 - A. Memo
3.1 Pipelinesuperpipeline • 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 Architettura degli elaboratori 1 - A. Memo
3.1 Pipelinepipeline 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 Architettura degli elaboratori 1 - A. Memo
3.1 Pipelinedynamic 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 com-plessità del control path e del datapath • viene detta anche out-of-order execution Architettura degli elaboratori 1 - A. Memo
3.1 Pipelinescoreboard • L’esecuzione simultanea di più istruzioni su più unità esecutive si implementa con: • scoreboard • tabella centralizzata che tiene conto delle istru-zioni da eseguire e delle risorse a disposizione • reservation station • tecnica distribuita di inoltro delle singole istruzio-ni alle varie unità bufferizzate Architettura degli elaboratori 1 - A. Memo
3.2 Gerarchia di memoriatecnologie di memorizzazione L’ideale sarebbe avere una memoria molto grande, molto veloce e molto economica. tecnologia velocità dimensioni registro 1 - 2 nS 16 - 256 B cache on-chip 3 - 10 nS 1 - 32 KB SRAM 20 - 50 nS 32 - 512 KB DRAM 60 - 250 nS 1 - 1024 MB disk 5 - 20 mS 1 - 512 GB CD-ROM 100 - 500 mS 600 - 1200 MB tape 1 - molti S superiori Architettura degli elaboratori 1 - A. Memo
3.2 Gerarchia di memoriaprestazioni CPU/memoria • le CPU hanno avuto un notevole aumento di prestazioni dovuto a innovazioni tecnologi-che e architetturali (..., pipeline, cache, ...) • le memorie sono migliorate solo grazie alla tecnologia 1000 100 10 1 1980 1990 2000 Architettura degli elaboratori 1 - A. Memo
3.2 Gerarchia di memoriaproprietà 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à Architettura degli elaboratori 1 - A. Memo
3.2 Gerarchia di memorialegge 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. Architettura degli elaboratori 1 - A. Memo
3.2 Gerarchia di memoriadividi 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 Architettura degli elaboratori 1 - A. Memo
3.2 Gerarchia di memoriaorganizzazione 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 Architettura degli elaboratori 1 - A. Memo
3.2 Gerarchia di memoriaschema concettuale livello inferiore memoria centrale CPU cache livello superiore Architettura degli elaboratori 1 - A. Memo
3.2 Gerarchia di memoriasuddivisione 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 Architettura degli elaboratori 1 - A. Memo
3.2 Gerarchia di memoriahit 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. Architettura degli elaboratori 1 - A. Memo
3.2 Gerarchia di memoriatempo 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 Architettura degli elaboratori 1 - A. Memo
3.2 Gerarchia di memoriatecnica 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 Architettura degli elaboratori 1 - A. Memo
3.2 Gerarchia di memoriaproblematiche • organizzazione della cache e tecniche di allocazione • individuazione di hit o miss • rimpiazzo dei blocchi • congruenza dei blocchi Architettura degli elaboratori 1 - A. Memo
3.2 Gerarchia di memoriadirect 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 gruppo N-1 N gruppi da M line ciascuno livello inferiore } livello superiore ILI = Indirizzo Livello inferiore ILS = Indirizzo Livello Superiore N line ILS = ILI mod N Architettura degli elaboratori 1 - A. Memo
3.2 Gerarchia di memoriadirect 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 Architettura degli elaboratori 1 - A. Memo
3.2 Gerarchia di memoriafully associative 1 Associazione completa (fully associative) • ogni blocco del livello inferiore può essere allo-cato in un qualsiasi blocco (line o slot) del livello superiore livello inferiore N blocchi livello superiore blocco 0 blocco 1 blocco 2 blocco 3 M line blocco N-1 Architettura degli elaboratori 1 - A. Memo
3.2 Gerarchia di memoriafully 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 Architettura degli elaboratori 1 - A. Memo
3.2 Gerarchia di memorian-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 M gruppi da N line ciascuno livello superiore nell’esempio N=2 2-way set associative Architettura degli elaboratori 1 - A. Memo
3.2 Gerarchia di memorian-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 Architettura degli elaboratori 1 - A. Memo
3.2 Gerarchia di memoriarimpiazzo dei blocchi • Quando la cache è piena, quale blocco mi conviene sostituire ? • Random, occupazione omogenea dello spazio • Last recently Used, coerente con la località temporale % Pmiss rimpiazzo casuale 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 Architettura degli elaboratori 1 - A. Memo
3.2 Gerarchia di memoriail 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. N.B.= in memoria ci sono istruzioni e dati, e solo il 50% delle operazioni sui dati sono scritture (circa 12 %) Architettura degli elaboratori 1 - A. Memo
3.2 Gerarchia di memoriail 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 Architettura degli elaboratori 1 - A. Memo
3.2 Gerarchia di memoriaridurre 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 Architettura degli elaboratori 1 - A. Memo
3.2 Gerarchia di memoriaridurre 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 Architettura degli elaboratori 1 - A. Memo
3.2 Gerarchia di memoriaquantificazione 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 Architettura degli elaboratori 1 - A. Memo
3.2 Gerarchia di memoriamemoria 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 Architettura degli elaboratori 1 - A. Memo
3.2 Gerarchia di memoriamemoria DRAM 2 anno capacità ciclo di lettura 1980 64 Kb 250 ns 1983 256 Kb 220 ns 1986 1 Mb 190 ns 1989 4 Mb 165 ns 1992 16 Mb 145 ns 1995 64 Mb 120 ns Architettura degli elaboratori 1 - A. Memo