Instruction Level Parallelism statico

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Instruction Level Parallelism statico"

Transcript

1 Instruction Level Parallelism statico Concetti di base dell ILP statico Pipeline scheduling e loop unrolling Multiple issue statico: l approccio VLIW Le istruzioni predicative L architettura IA-64: l Itanium II L architettura Trimedia TM32 1 ILP statico Abbiamo fin ora visto come lo sfruttamento del parallelismo presente fra le istruzioni di un programma possa avvenire durante l esecuzione del programma stesso. Scheduling dinamico della pipeline, register renaming, branch prediction, speculazione hardware, multiple issue (dinamico), sono tutte tecniche utilizzate a run-time. E per questo che le tecniche che sfruttano in questo modo il parallelismo insito nelle istruzioni di un programma vengono raccolte sotto il nome di ILP dinamico 2 1

2 ILP statico Ma un aiuto allo sfruttamento dell ILP può venire anche dal compilatore, il quale può riordinare le istruzioni macchina che genera in modo da migliorare lo sfruttamento della pipeline e delle unità funzionali della CPU quando le istruzioni verranno eseguite. Naturalmente, nel manipolare le istruzioni macchina generate, il compilatore deve lasciare inalterato il funzionamento del programma scritto dal programmatore Proprio perché queste tecniche cercano di evidenziare il parallelismo presente nelle istruzioni di un programma prima che questo vada in esecuzione, tali tecniche vengono raggruppate sotto il nome di ILP statico 3 ILP statico L ILP statico è particolarmente importante nei processori embedded, che devono costare e consumare poco, e non si possono permettere l enorme numero di transistors neccessari per implementare le tecniche di ILP dinamico. Ma, come vedremo, l ILP statico è anche alla base dell ISA (architettura + set di istruzioni) IA-64, puramente RISC, sviluppata da Intel e HP a partire dal 2000 e su cui sono basati i processori Itanium e Itanium II Di fatto, il confine tra ILP statico e dinamico non è netto, e in generale molte architetture moderne usano una qualche combinazione dei due gruppi di tecniche. 4 2

3 ILP statico: idea di base Idea di base dell ILP statico: tenere il più possibile occupata la pipeline (quindi evitare gli stall) cercando, nella fase di compilazione del programma, (sequenze di) istruzioni fra loro indipendenti che possano sovrapporsi nella pipeline. Per evitare gli stall, una istruzione B che dipende da una istruzione A deve essere separata da A di una distanza in cicli di clock pari almeno al numero di cicli di clock necessari ad A per produrre il risultato che dovrà essere usato da B. Per massimizzare la produttività della pipeline, il compilatore cerca di inserire tra A e B altre istruzioni, utilizzando lo stesso criterio adottato per A e B. 5 ILP statico: idea di base E evidente che la capacità di un compilatore di compiere questa forma di scheduling (ossia di riordino) delle istruzioni dipende: dalla quantità di ILP presente nel programma in compilazione dalla lunghezza della pipeline, dal numero e tipo di unità funzionali disponibili, dai tempi di esecuzione delle varie istruzioni dal fatto che il compilatore conosca queste informazioni sulla CPU per cui sta generando il codice. due CPU con identico livello ISA ma diversa microarchitetture (ossia un diverso datapath, un diverso set di unità funzionali, un diverso numero di stage della pipeline), possono fornire prestazioni completamente diverse su un programma generato con un compilatore che sfrutta l ILP statico, e che opera tenendo presente una ben precisa microarchitettura. Notate una differenza con l ILP dinamico? 6 3

4 Tecniche di base di Compilazione Consideriamo un compilatore che genera codice per una CPU con pipeline a 5 stage e le seguenti caratteristiche: Le varie UF sono a loro volta pipelined, e una qualsiasi istruzione può essere lanciata ad ogni ciclo di clock I branch vengono eseguiti in due cicli di clock Prima che una istruzione B possa usare il risultato prodotto da una istruzione A, occorre attendere i seguenti cicli di clock (H-P3, Fig. 4.1): (A) instruction producing result (B) instruction using result latency (clock cycles) FP ALU op another FP ALU op 3 FP ALU op Store double 2 double ALU op branch 1 Load double FP ALU op 1 7 Tecniche di base: pipeline scheduling consideriamo questo for, che somma uno scalare ad un vettore di 1000 elementi: for ( i = 1000; i > 0; i = i-1 ) x[i] = x[i] + s; e la sua traduzione in codice MIPS (assumiamo che il valore iniziale di R1, ed R2, siano stati calcolati in precedenza): LOOP: LD F0, 0 (R1) // F0 = array element FADD F4, F0, F2 // scalar is in F2 SD F4, 0 (R1) // store result DADD R1, R1, #-8 // pointer to array is in R1 (DW) BNE R1, R2, LOOP // suppose R2 precomputed 8 4

5 Tecniche di base: pipeline scheduling ecco una esecuzione del loop senza nessuna forma di scheduling: clock cycle issued LOOP: LD F0, 0 (R1) 1 stall 2 FADD F4, F0, F2 3 stall 4 stall 5 SD F4, 0 (R1) 6 DADD R1, R1, #-8 7 stall 8 BNE R1, R2, LOOP 9 stall 10 No branch prediction Ossia, i tre RAW hazard costringono a vari stall della pipeline, e sono 9 necessari 10 cicli di clock per eseguire un ciclo del for Tecniche di base: pipeline scheduling ma ecco come un compilatore intelligente, conoscendo i valori della tabella precedente, e sapendo di poter sfruttare la tecnica del delayed branch, può applicare una forma di pipeline scheduling (statico): ossia riordinare le istruzioni in modo da diminuire il numero di stall: clock cycle issued LOOP: LD F0, 0 (R1) 1 DADD R1, R1, #-8 2 // one stall filled FADD F4, F0, F2 3 stall 4 BNE R1, R2, LOOP 5 // delayed branch SD F4, 8 (R1) 6 // altered & interchanged with DADD 10 5

6 Tecniche di base: pipeline scheduling Quali modifiche sono state fatte? LOOP: 1 LD F0, 0 (R1) 2 DADD R1, R1, #-8 3 FADD F4, F0, F2 4 stall 5 BNE R1, R2, LOOP 6 SD F4, 8 (R1) con la DADD spostata in seconda posizione, si sono eliminati gli stall (e quindi i ritardi) tra LD e FADD e tra DADD e BNE spostando la SD dopo la BNE si elimina lo stall di un ciclo dovuto alla BNE e si riduce di uno lo stall tra la FADD e la SD siccome SD e DADD sono stati scambiati, l offset nella SD deve ora essere 8 anziché 0 Notate che questa forma di scheduling è possibile solo se il compilatore conosce la latenza in cicli di clock di ogni istruzione che genera (ossia se conosce i dettagli interni dell architettura per cui genera codice) 11 Tecniche di base: loop unrolling Abbiamo ottenuto un miglioramento notevole, ma possiamo notare che dei 6 cicli di clock necessari per eseguire una iterazione del for: 3 sono usati per operare sugli elementi dell array (LD,ADD,SD) 3 sono semplice loop overhead (DADD, BNE, stall) Un approccio alternativo al pipeline scheduling è aumentare il numero di istruzioni che effettivamente operano sull array, rispetto a quelle che servono solo a gestire il ciclo. Come? Possiamo raggruppare le istruzioni di iterazioni consecutive che operano sull array all interno di un unico macrociclo, gestito da un unico controllo di terminazione (un unica BNE). Operiamo cioé sul ciclo una forma di loop unrolling (srotolamento del loop) statico. 12 6

7 Tecniche di base: loop unrolling ad esempio, se il numero di iterazioni nel loop è divisibile per 4, il loop originale può essere srotolato 4 volte ottenendo: LD F0, 0 (R1) FADD F4, F0, F2 SD F4, 0 (R1) // drop DADD & BNE LD F6, -8 (R1) FADD F8, F6, F2 SD F8, -8 (R1) // drop DADD & BNE LD F10, -16 (R1) FADD F12, F10, F2 SD F12, -16 (R1) // drop DADD & BNE LD F14, -24 (R1) FADD F16, F14, F2 SD F16, -24 (R1) DADD R1, R1, #-32 BNE R1, R2, LOOP 13 Tecniche di base: loop unrolling Ignoriamo per un momento il fatto che il compilatore abbia anche dovuto gestire una forma di rinominazione dei registri. Se il codice del lucido precedente viene eseguito così com è, l esecuzione richiede 28 cicli di clock, a causa delle latenze tra le istruzioni, che impongono alcuni stall della pipeline. Dalla tabella vista infatti, abbiamo: 1 ciclo di clock di stall tra ogni LD e la relativa FADD 2 cicli di clock di stall ogni FADD e la relativa SD 1 ciclodi clock di stall tra la DADD e la BNE come risultato, ora ogni iterazione del for dura in media 7 cicli di clock: meglio della situazione iniziale, ma peggio della tecnica di 14 pipeline scheduling appena vista. 7

8 Tecniche di base: loop unrolling & pipeline scheduling l eliminazione di alcuni branch attraverso il loop unrolling permette di considerare parte di un unico macrociclo istruzioni che prima appartenevano a iterazioni successive del for. Inoltre, la rinominazione dei registri ha generato, all interno del macrociclo, un maggior numero di operazioni fra loro indipendenti, che possono essere riordinate in modo vantaggioso. In altre parole, possiamo cercare di combinare il loop unrolling e il pipeline scheduling per ottimizzare ulteriormente il codice. 15 loop unrolling & pipeline scheduling ecco come ora le istruzioni srotolate (loop unrolling) possono essere riordinate (pipeline scheduling) per eliminare tutti gli stall presenti LD F0, 0 (R1) LD F6, -8 (R1) LD F10, -16 (R1) LD F14, -24 (R1) FADD F4, F0, F2 FADD F8, F6, F2 FADD F12, F10, F2 FADD F16, F14, F2 SD F4, 0 (R1) SD F8, -8 (R1) DADD R1, R1, #-32 SD F12, 16 (R1) BNE R1, R2, LOOP SD F16, 8 (R1) // 8 32 = -24 (?) lo spostamento di queste istruzioni serve per eliminare gli ultimi due stall 16 8

9 Tecniche di base: loop unrolling & pipeline scheduling Con un po di pazienza, si può verificare che questo codice è equivalente all esecuzione di quattro iterazioni del for iniziale. Ma ora, 4 iterazioni successive del for iniziale vengono eseguite in 14 cicli di clock, ossia 3,5 cicli di clock per iterazione, contro i 10 della versione iniziale 17 Tecniche di base di compilazione Un compilatore dotato di sofisticate tecniche di analisi è in grado di produrre codice ottimizzato come abbiamo visto nell esempio precedente, usando le informazioni sulla microarchitettura per cui il codice deve essere generato. Ciò si paga evidentemente con un maggior tempo necessario per generare codice così ottimizzato. Ma si può pagare anche in termini di prestazioni del codice in esecuzione, se viene fatto girare su macchine con lo stesso ISA ma microarchitetture diverse. Ad esempio, tempi diversi per la pipeline. Secondo voi, su altre architetture (ma stesso ISA), il codice ottimizzato potrebbe addirittura non funzionare correttamente? 18 9

10 Tecniche di base di compilazione In più vi sono vari problemi che abbiamo volutamente ignorato, ma che il compilatore deve considerare: quanti nomi di registri diversi si possono usare nel loop unrolling? (ossia quanti ne sono disponibili a livello ISA?) Se si esauriscono tutti i registri, può essere necessario usare la RAM come deposito temporaneo, il che è molto inefficiente. Come si possono gestire i loop quando non si sa a priori quante volte saranno eseguiti (ad esempio, un while-do o un repeat-until)? Il loop-unrolling genera codice più lungo di quello originale. Quindi aumenta la probabilità di cache miss nella Instruction Memory, eliminando parte dei vantaggi dell unrolling. 19 Multiple issue statico Tralasciando questi e altri problemi, i vantaggi che ci possono essere da uno sfruttamento dell ILP a livello di compilazione sono ancora maggiori nel caso di processori multiple issue. Consideriamo di nuovo la versione MIPS superscalare che avevamo usato in un esempio del capitolo precedente, che era in grado di lanciare due istruzioni per ciclo di clock: una operazione di load / store / branch / integer ALU e una qualsiasi operazione FP Supponiamo che l unrolling dell esempio precedente sia stato fatto per 5 cicli, e assumiamo le stesse latenze tra le istruzioni riportate nella tabella del lucido

11 Multiple issue statico Ecco il risultato dell esecuzione: sono necessari 12 cicli di clock, con 2,5 cicli di clock per ciclo del for, rispetto ai 3,5 dello stesso processore senza multiple issue (H-P3, Fig. 4.2): loop: int. instruction FP instruction clock cycle LD F0, 0 (R1) 1 LD F6, -8 (R1) 2 LD F10, -16 (R1) FADD F4, F0, F2 3 LD F14, -24 (R1) FADD F8, F6, F2 4 LD F18, -32 (R1) FADD F12, F10, F2 5 SD F4, 0 (R1) FADD F16, F14, F2 6 SD F8, -8 (R1) FADD F20, F18, F2 7 SD F12, -16 (R1) 8 DADD R1, R1, #-40 9 SD F16, 16 (R1) 10 BNE R1, R2, Loop 11 SD F20, 8 (R1) Multiple issue statico: l approccio VLIW Nei processori superscalari, che implementano l ILP dinamico, il numero di istruzioni da avviare per ciclo di clock viene deciso a run time. Questi processori usano compilatori meno sofisticati, ma hanno bisogno di più hardware, per minimizzare le alee e massimizzare il numero di istruzioni che avviano all esecuzione. I processori con multiple issue statico invece, avviano un numero prefissato di instruzioni da eseguire, ed è responsabilità del compilatore presentare le istruzioni alla CPU in un ordine adatto a massimizzare le prestazioni, usando le tecniche appena viste (e altre più sofisticate) Di fatto, il compilatore genera una serie di pacchetti contententi un numero prefissato di istruzioni ciascuno (anche se, eventualmente, alcune istruzioni posso essere delle no-op)

12 Multiple issue statico: l approccio VLIW Ognuno di questi issue packet, contiene istruzioni fra loro indipendenti, che possono quindi essere eseguite in parallelo nella pipeline. E il compilatore che genera i pacchetti riordinando le istruzioni (come nell esempio visto), verificando ed eliminando le dipendenze, per cui il lavoro non deve più essere fatto dalla CPU. La CPU ha quindi una architettura più semplice, e la fase di issue delle istruzioni può avvenire in minor tempo, perché non è più necessario controllare a run-time eventuali dipendenze fra le istruzioni: questo lavoro è già stato fatto da compilatore. 23 Multiple issue statico: l approccio VLIW Questo approccio prende il nome di VLIW (Very Long Instruction Word), in quanto le prime architetture che lo adottavano (inzio anni 80), usavano in realtà istruzioni macchina molto lunghe (128 bit o più) ognuna delle quali specificava più operazioni fra loro indipendenti che potevano essere eseguite in parallelo dalla CPU. Il termine EPIC (Explicitly Parallel Instruction Computer) usato dall Intel nel contesto dell architettura IA-64 si riferisce allo stesso approccio

13 Multiple issue statico: l approccio VLIW Quanto più è alto il numero di istruzioni che un processore può avviare contemporaneamente, tanto più l approccio VLIW è vantaggioso. Infatti, l overhead che un processore superscalare deve sopportare per controllare a run-time le dipendenze fra le istruzioni da avviare in parallelo cresce quadraticamente col numero di istruzioni. (ogni istruzione deve essere confrontata con tutte le altre potenzialmente avviabili) 25 l approccio VLIW: un esempio Consideriamo un processore VLIW che possa avviare 5 istruzioni contemporaneamente, con le seguenti unità funzionali: una unità intera (ALU) in grado di gestire anche i branch due unità floating point due unità per i riferimenti in memoria Naturalmente, per sfruttare a pieno queste unità il codice da eseguire deve manifestare sufficiente parallelismo tra le istruzioni, e il compilatore deve essere in grado di metterlo in evidenza, con le tecniche di loop unrolling e pipeline scheduling viste in precedenza. Consideriamo l esempio già visto, assumendo un unrolling di 7 cicli del for. Ecco come potrebbe essere eseguito il codice, suddiviso in pacchetti indipendenti dal compilatore e eseguiti dalla CPU 26 13

14 l approccio VLIW: un esempio H-P3, Fig 4.5: pack et / n. clock memory ref. 1 memory ref. 2 FP op. 1 FP op. 2 integer / branch op. 1 LD F0,0(R1) LD F6,-8(R1) no-op no-op no-op 2 LD F10,-16(R1) LD F14,-24(R1) no-op no-op no-op 3 LD F18,-32(R1) LD F22,-40(R1) FADD F4,F0,F2 FADD F8,F6,F2 no-op 4 LD F26,-48(R1) no-op FADD F12,F10,F2 FADD F16,F14,F2 no-op 5 no-op no-op FADD F20,F18,F2 FADD F24,F22,F2 no-op 6 SD F4,0(R1) SD F8,-8(R1) FADD F28,F26,F2 no-op no-op 7 SD F12,-16(R1) SD F16,-24(R1) no-op no-op DADD R1,R1,#-56 8 SD F20,24(R1) SD F24,16(R1) no-op no-op no-op 9 SD F28,8(R1) no-op no-op no-op BNE R1,R2,Loop 27 l approccio VLIW: un esempio Notiamo alcune cose: non tutti gli slot di ogni pacchetto sono occupati, e vengono riempiti da no-op. A seconda del codice e del tipo di architettura, non è sempre possibile sfruttare tutti gli slot di ogni pacchetto. Nel nostro esempio circa il 60% degli slot viene sfruttato. Ci vogliono 9 cicli di clock per eseguire 7 cicli del for, con una media di 9/7 = 1.29 cicli di clock per ciclo del for. Come già osservato in precedenza, una macchina con architettura diversa (ad esempio, diverse U.F. o diverse latenze per istruzione), fornirebbe prestazioni diverse eseguendo lo stesso codice

15 Tecniche più sofisticate Naturalmente, l approccio VLIW usa anche tecniche di compilazione più sofisticate di quelle viste per mettere in evidenza in fase di compilazione l ILP. Tra queste ricordiamo: Static branch prediction. Assume che i branch abbiano sempre un certo tipo di comportamento, o analizza il codice per cercare di dedurne il comportamento Loop Level Parallelism. Tecniche per evidenziare il parallelismo in iterazioni successive di un loop, quando i vari cicli non sono indipendenti fra loro Symbolic loop unrolling. Il loop non viene srotolato, ma si cerca di mettere in ogni pacchetto istruzioni fra loro indipendenti, anche appartenenti a cicli diversi Global code scheduling. Cerca di compattare codice proveniente da diversi basic block (quindi istruzioni separate da varie istruzioni condizionali, inclusi i cicli) in sequenze di istruzioni indipendenti 29 Supporti hardware all ILP statico: istruzioni predicative le tecniche usate dal compilatore per mettere in evidenza l ILP funzionano bene soprattutto quando il comportamento dei branch è facilmente predicibile (come ad esempio nei cicli for). Quando il comportamento dei branch non è ben chiaro invece, le dipendenze dal controllo limitano fortemente la possibilità di sfruttare a fondo il parallelismo fra istruzioni. Per limitare questo problema è di estendere l insieme di istruzioni macchina aggiungendo un insieme di istruzioni predicative o condizionali

16 Supporti hardware all ILP statico: istruzioni predicative Queste istruzioni possono essere usate per eliminare alcuni branch, convertendo una dipendenza dal controllo in una dipendenza dai dati, e aumentando così potenzialmente le prestazioni del processore. Di fatto le istruzioni predicative sono utili anche per le tecniche di ILP dinamico, perché in ogni caso permettono di eliminare alcuni branch. 31 istruzioni predicative o condizionali Nota: nel seguito useremo indifferentemente le espressioni istruzione predicativa e istruzione condizionale. Una istruzione predicativa è una istruzione che contiene una condizione che viene valutata come parte dell esecuzione dell istruzione stessa. se la condizione è vera il resto dell istruzione viene eseguito normalmente. se la condizione è falsa l istruzione viene trasformata in una no-op. Molte architetture recenti contengono una qualche forma di istruzione condizionale

17 istruzioni predicative o condizionali l esempio più semplice di istruzione predicativa è la move condizionale: sposta il contenuto di un registro in un altro se la condizione associata è vera. Una tale istruzione si può usare per eliminare i branch in alcuni casi. Consideriamo l istruzione C if (A == 0) S = T; e assumiamo che R1, R2, R3 contengano rispettivamente i valori di A, S, e T. Il codice può essere convertito nelle seguenti istruzioni MIPS: BNEZ R1, Jump // branch if not zero ADD R2, R3, R0 // R0 always contains 0 Jump: 33 istruzioni predicative o condizionali Usando invece una move condizionale, che viene completata solo se il terzo operando è uguale a zero, l if potrebbe essere tradotto nella seguente istruzione: CMOVZ R2, R3, R1 // mov R3 in R2 if R1 == 0 Notate che la dipendenza sul controllo certa (la ADD dipende dalla BNEZ) viene così trasformata in una dipendenza sui dati solo eventuale, dipendentemente dalle istruzioni che precedono la CMOVZ. Eliminare questi tipi di branch può avere un effetto notevole sulle prestazioni delle pipeline reali, in cui l esecuzione del branch richiede molti cicli di clock. Infatti, tali branch non sono facilmente predicibili e il più delle volte non lo sono affatto: una qualsiasi forma di predizione rischia di sbagliare nel 50% dei casi! 34 17

18 istruzioni predicative o condizionali Nei processori multiple issue poi, è possibile che più branch possano dover essere eseguiti in un unico ciclo di clock, ma la predizione dei branch diviene ancora più aletoria, perché i branch possono dipendere l uno dall altro. if (A == B) {A = A+1} else if (C == D) {C = C+1} in questo esempio, il secondo if dipende dal primo, ed è possibile che tutte le istruzioni vengano avviate nello stesso ciclo di clock. Come si fa a sapere se eseguire o no il secondo if, mentre si sta valutando ancora il primo? per risolvere il problema, molte architetture non permettono l avvio di più branch in un unico ciclo di clock. Le move condizionali permettono di eliminare alcuni branch, aumentando così l issue rate della CPU. 35 istruzioni predicative o condizionali Ad esempio, ecco come del codice controllato da un if-then-else (a) può essere trasformato in codice macchina con due salti (b) o in quattro istruzioni predicative (c) (Tanenbaum, Fig. 5.52): 36 18

19 istruzioni predicative o condizionali Le semplici move condizionali non permettono però di eliminare i branch che controllano blocchi di istruzioni diverse dalle move. Per questo, alcune architetture supportano la full predication: tutte le istruzioni possono essere controllate da un predicato. per funzionare correttamente, queste architetture hanno bisogno di opportuni registri predicativi (ciascuno formato da un solo bit), che memorizzano il risultato di test effettuati da istruzioni precedenti, in modo che il valore possa essere usato per controllare l esecuzione di istruzioni successive (che quindi divengono predicative). 37 istruzioni predicative o condizionali Ad esempio, nell Itanium, sono disponibili dei registri predicativi usati a coppie (P1, P2,...) e delle istruzioni per settare tali registri. Ad esempio, CMPEQ R1, R2, P4 setta P4 = 1 e P5 = 0 se R1 == R2. Altrimenti, l istruzione setta P4 = 0 e P5 = 1. I registri predicativi sono poi usati per controllare l esecuzione di altre istruzioni. Ecco un esempio (Tanenbaum, Fig. 5.53): 38 19

20 istruzioni predicative o condizionali In generale, le istruzioni predicative sono particolarmente utili per implementare piccoli if-then-else eliminando branch difficilmente predicibili e quindi per semplificare le tecniche di ILP statico più sofisticate. L utilità della predicazione è comunque limitata da alcuni fattori: le istruzioni predicative poi annullate hanno comunque utilizzato risorse della CPU, limitando l esecuzione di altre istruzioni. Combinazioni complesse di branch non sono facilmente convertibili in istruzioni condizionali le istruzioni condizionali possono essere più lente delle corrispondenti non condizionali 39 istruzioni predicative o condizionali Per queste ragioni, molte architetture usano solo alcune semplici istruzioni condizionali, e in particolare la move condizionale. Le architetture delle macchine MIPS, SPARC, Alpha, PowerPC, Pentium, dual core e successivi, supportano la move condizionale. l architettura IA-64 supporta la full predication

21 ILP statico vs ILP dinamico Inizialmente molto differenti fra loro, i due approcci all ILP si sono fra loro avvicinati con lo sviluppo della tecnologia software e hardware. In ogni caso, gli approcci dinamici all ILP sembrano più adatti ai processori general purpose, dove ci si può permettere un hardware più complesso, e quindi costi e consumi maggiori. Al contrario, l ILP statico rimane fondamentale nei processori per applicazioni embedded, dove è più importante che il processore consumi poco, e dove i programmi da usare sono spesso limitati e possono essere sviluppati in modo da poter sfruttare al massimo il parallelismo tra istruzioni usando appunto le tecniche dell ILP statico. 41 L architettura IA-64: l Itanium II Intel is rapidly getting to the point where it has just squeezed every last drop of juice out of the IA-32 ISA and the Pentium 4 line of processors A. Tanenbaum, Structured Computer Architecture, 5 th ed. Alla fine degli anni 90, in previsione di raggiungere quel punto l Intel si è mossa in due direzioni: 1 Sviluppo dell ISA e della microarchitettura Intel 64 2 dal 2000 insieme all Hp, sviluppo di un ISA e di una microarchitettura completamente nuova, nota come IA

22 L architettura IA-64: l Itanium II L Itanium e l Itanium II sono i primi processori Intel completamente RISC, e sono basati sull ISA noto come IA-64. L ISA IA-64 non è compatibile con la vecchia IA-32 e con la nuova Intel 64. Intel chiama EPIC la tecnologia usata per sfruttare l ILP combinando le caratteristiche dell architettura hardware con la compilazione dei programmi tipica dell IA L architettura IA-64: l Itanium II L archiettura IA-64, nell implementazione dell Itanium II ha le seguenti caratteristiche: 128 registri general-purpose a 64 bit lunghi ciascuno 65 bit (il bit in più poison bit viene usato per gestire le eccezioni) 128 registri floating point a 82 bit (è lo standard IEEE per il FP) 64 registri predicativi da 1 bit ciascuno 128 registri speciali usati per vari scopi (passaggio dei parametri per le system call del SO, memory mapping, controllo del sistema, registrazione delle performance della CPU, ecc.) 44 22

23 L architettura IA-64: l Itanium II dei 128 registri general purpose, i primi 32 sono sempre disponibili, gli altri sono usati come stack di registri : ad ogni procedura chiamata viene assegnato un sottoinsieme di questi stack register. L Itanium II ha 3 livelli di cache, e viene prodotto in diverse configurazioni multi-core, con le seguenti caratteristiche: CPU Tukwilla (2010): tecnologia a 65 nm, clock, fino a 1.73GHz, cache L3 fino a 24MB, fino a 4 core, Hyper-threading, circa 2 miliardi di transistors CPU Poulson (dal 2012): tecnologia a 32 nm, cache L3 fino a 32 MB, fino a 8 core, Hyper-threading, circa 3 miliardi di transistors (fonte: AnandTech) 45 L architettura IA-64: l Itanium II L architettura IA-64 prevede 5 tipi di unità funzionali per l esecuzione delle istruzioni (H-P3, Fig. 4.11): Exec. unit Instr. type I-unit description example instr. A Integer ALU add, sub, and, or, compare I non-alu integer int./ multimedia shift, bit test, moves M-unit A Integer ALU add, sub, and, or, compare M Memory access load / store for integer and FP registers F-unit F Floating Point floating point Intructions B-unit B Branches cond. branches, call, loop branches L+X L+X Extended extended immediate, stop, no-ops 46 23

24 L architettura IA-64: l Itanium II L architettura IA-64 sfrutta l approccio VLIW aggiungendo però una certa flessibilità nella formattazione delle istruzioni negli issuepackets. Il compilatore di una architettura IA-64 inserisce le istruzioni in instruction groups: una sequenza di istruzioni indipendenti fra loro che: non confliggono nell uso delle unità funzionali non confliggono nell uso dei registri non hanno dipendenze di tipo RAW e WAW hanno un numero limitato di dipendenze di tipo WAR 47 L architettura IA-64: l Itanium II La CPU è libera di schedulare le istruzioni all interno di un group come preferisce, e quindi, per quanto possibile, di eseguirle in parallelo. Instruction group consecutivi vengono invece eseguiti in maniera sequenziale, sebbene la CPU possa decidere di inziare l esecuzione di un gruppo prima che tutte le istruzioni del precedente siano terminate, se la cosa non crea conflitti. Ogni gruppo contiene un numero arbitrario di istruzioni, ma il compilatore deve indicare esplicitamente il limite fra un gruppo e il successivo, usando una istruzione speciale chiamata stop

25 L architettura IA-64: l Itanium II Le istruzioni dell-ia-64 Itanium II sono organizzate in bundle lunghi 128 bit. Ogni bundle contiene 3 istruzioni da 41 bit e un campo template di 5 bit (Tanenbaum, Fig. 5.50). 49 L architettura IA-64: l Itanium II I 5 bit del template di un bundle servono per specificare: quali unità saranno usate dalle istruzioni contenute nel bundle l eventuale presenza di uno stop in un qualche punto del bundle Ad esempio, se il template di un bundle vale 10, indica che il bundle contiene: M stop M I. Ossia: la prima istruzione usa un unità M finisce un instruction group e ne incomincia un altro (notate quindi che un bundle può stare a cavallo di due group) La seconda istruzione usa di nuovo una unità M la terza istruzione usa un unità I 50 25

26 L architettura IA-64: l Itanium II 51 L architettura IA-64: l Itanium II Nell architettura IA-64 sono definiti più di 100 tipi di istruzioni. Ognuna è lunga 41 bit, così suddivisi: Operation group (4 bit): specifica il tipo di istruzione Operation type (10 bit): specifica l operazione richiesta Registers (3 x 7 bit): specifica i 3 registri usati Predicate register (6 bit) specifica il predicate register a cui è associata l istruzione per gestire la predicazione I registri predicativi vengono settati usando istruzioni di comparazione. Ad esempio, CMPEQ R1,R2,P4 setta P4 a true e P5 a false se R1=R2 (e viceversa se R1 <> R2) 52 26

27 L architettura IA-64: l Itanium II Oltre alla full predication, l Itanium II supporta una forma limitata di speculazione attraverso le load speculative: le advanced load. Come noto, una load può produrre un lungo stall della pipeline se il dato indirizzano non è presente in cache. Le istruzioni che usano quel dato devono attendere il suo arrivo prima di poter passare alla fase EX. Il compilatore è allora libero di spostare indietro la load, in modo che venga eseguita prima di quando il dato prelevato dalla load stessa dovrà essere usato da un altra istruzione. L idea è di dare alla load il tempo necessario a prelevare il dato anche se questo si trova in RAM di modo che questo sia sicuramente presente nel registro di destinazione della load quando 53 dovrà essere usato da altre istruzioni. L architettura IA-64: l Itanium II Supponiamo dunque che la load venga spostata indietro di un certo numero di istruzioni. Tra queste istruzioni saltate potrebbe trovarsi una store, che nella versione originale del programma sarebbe stata eseguita prima della load. Tuttavia, dopo lo spostamento operato dal compilatore questa store verrà eseguita dopo la load. E se vi fosse una dipendenza tra le due istruzioni? Una advanced load (LDA) è una load che è stata speculativamente spostata prima di una store da cui potrebbe potenzialmente dipendere. A run time, quando viene eseguita una LDA viene creata una nuova entry in una tavola speciale detta ALAT. La entry creata contiene: il numero del registro di destinazione della load l indirizzo della locazione di memoria usata dalla load (che, appunto, in generale è noto solo a run time) 54 27

28 L architettura IA-64: l Itanium II Quando viene eseguita una STORE viene fatto anche un controllo associativo (tutte le entry vengono controllate in parallelo) sull ALAT. Se una entry ha lo stesso indirizzo di memoria usato dalla STORE, quella entry è marcata come invalida. Prima che una qualsiasi istruzione usi il registro caricato da una LDA, l entry della ALAT contenente quel registro viene controllata. Se la entry è valida, la speculazione sulla load ha avuto successo, e l entry dell ALAT viene azzerato. Se la entry non è valida, la LOAD viene rieseguita. 55 L architettura IA-64: l Itanium II Come esempio, consideriamo la seguente situazione, in cui il compilatore decide di spostare indietro la LD, di modo che quando la MUL verrà eseguita, il contenuto della cella di RAM di indirizzo 0 (R1) sia già disponibile in R2. Nel caso peggiore, 0 (R1) dovrà essere letto dalla RAM: il compilatore sa che sono necessari N cicli di clock per una lettura in RAM, e sposta all indietro la LD di tante istruzioni quante ne sono necessarie a far passare Almeno N cicli di clock Supponiamo che, in questo spostamento, la LD venga spostata prima di una SD ADD R6, R20, R30 MUL R11, R6, R4 ADD R10, R15, R25 SD R11, 8 (R10) LD R2, 0 (R1) MUL R3, R2, R

29 L architettura IA-64: l Itanium II Il compilatore non può sapere se vi è una relazione tra la SD e la LD: le due istruzioni sono legate se fanno riferimento alla stessa cella di RAM, ossia se 8 (R10) = 0 (R1) ma, in generale, questo si può sapere solo a run time. se 8 (R10) = 0 (R1), questo vuol dire che, nel programma, la MUL deve usare per uno dei suoi argomenti il valore calcolato dalla MUL R11, R6, R4, immagazzinato temporaneamente all indirizzo 8 (R10). Ma con lo spostamento della LD, la MUL userebbe invece il valore contenuto in 0 (R1) prima che in quella cella sia stato scritto il risultato della MUL R11, R6, R ADD R6, R20, R30 MUL R11, R6, R4 ADD R10, R15, R25 SD R11, 8 (R10) LD R2, 0 (R1) MUL R3, R2, R4 57 L architettura IA-64: l Itanium II Il compilatore allora, esegue lo spostamento della LD, ma la trasforma in una advanced load (LDA). Quando la LDA viene eseguita, nella ALAT vengono scritti il nome del registro, R2, e il valore dell indirizzo della load, 0 (R1). Quando viene eseguita la SD, viene confrontato l indirizzo che usa con tutti gli indirizzi nella ALAT. Se c è un match, l entry della ALAT viene invalidata. All issue della MUL, poiché R2 occorre nella ALAT, se l entry di R2 è invalida la LD R2, 0 (R1) viene rieseguita prima di eseguire la MUL. In ogni caso, l entry della ALAT viene cancellata ADD R6, R20, R30 MUL R11, R6, R4 LDA R2, 0 (R1) ADD R10, R15, R25 SD R11, 8 (R10) MUL R3, R2, R4 ALAT R2 0 (R1) i/v 58 29

30 L architettura IA-64: l Itanium II L Itanium II ha una pipeline di 8 stage (contro le 10 dell Itanium) e 11 unità funzionali pipelined che gli permettono di avere contemporaneamente in esecuzione fino a 13 istruzioni. Può avviare fino a 6 istruzioni per ciclo di clock, che diventeranno 12 nella versione Poulson. Implementa una esecuzione in-order delle istruzioni, ma implementa alcune caratteristiche tipiche dell ILP dinamico: branch prediction speculazione 59 L architettura IA-64: l Itanium II Itanium è certamente un progetto controverso, già nel 2005 si parlava del suo abbandono, a causa dei costi elevati del processore, e della sua diffusione limitata solo per applicazioni di fascia alta. Le prestazioni dell Itanium poi sono sempre più avvicinate dai sistemi multi-core basati su ISA Intel 64, e che costano meno potendo contare su una economia di scala più marcata

31 L architettura Trimedia TM32 Abbiamo detto all inizio di questo capitolo che l ILP statico è particolarmente adatto per le applicazioni embedded, dove non ci si può permettere un hardware troppo complesso / costoso / ad elevato consumo di energia Un classico esempio di processore VLIW è il TriMedia TM32, progettato dalla Philips e usato per applicazioni multimediali in lettori e registatori CD, DVD, MP3 players, videocamere digitali, televisori. E quindi un processore dedicato per applicazioni molto specifiche, al contrario di un processore come l Itanium II. 61 L architettura Trimedia TM32 Il TM32 ha un clock compreso tra 266 e 300 MHZ, e esegue istruzioni VLIW ciascuna delle quali può specificare fino a 5 operazioni distinte che possono essere avviate ad ogni colpo di clock. Alcuni degli slot possono contenere delle no-op (Tanenbaum, Fig. 8.3)

32 L architettura Trimedia TM32 il TM3260 possiede 10 tipi di UF pipelined, più l unità FP sqrt/div. non pipelined (Tanenbaum, Fig. 8.4): 63 L architettura Trimedia TM32 Il TM3260 ha 128 registri general-purpose a 32 bit, + 4 registri speciali (PC, PSW, 2 registri per gestire gli interrupt) Supporta la predicazione di tutte le istruzioni, associandole ad un registro che, se vale 0 ne annulla l esecuzione. Non esegue nessun controllo a run-time per verificare se le operazioni inserite in una istruzione, e le operazioni di istruzioni eseguite consecutivamente sono compatibili: semplicemente le esegue. E infatti responsabilità del compilatore schedulare le operazioni in ogni istruzione, e le diverse istruzioni in modo da limitare al massimo gli stall delle pipeline e massimizzare l uso delle diverse U.F

33 L architettura Trimedia TM32 In questo modo, si può limitare la complessità dell hardware, e usare compilatori per generare codice estremamente ottimizzato per quell hardware (del resto, il compilatore ha tutto il tempo che vuole...) l unico vero difetto di questo approccio è che il codice generato occupa comunque molto più spazio di un codice equivalente per un generico processore RISC Per questa ragione, il codice che deve girare su questi processori (tipicamente memorizzato in ROM) è compresso: solo quando vengono prelevate dalla cache per essere eseguite le istruzioni vengono decompresse. Anche così, il codice compresso occupa circa il doppio dello spazio che occuperebbe un codice identico per un generico processore RISC (prossimo lucido: H-P3, Fig. 3.23) 65 approcci usati in CPU multiple-issue name issue structure hazard detection scheduling chracteristic examples Superscalar (static) Superscalar (dynamic) Superscalar (speculative) dynamic hardware static in-order execution dynamic hardware dynamic some out-oforder execution dynamic hardware dynamic with speculation out-of-order execution with speculation VLIW/LIW static software static no hazards between issue packets EPIC mostly static mostly software mostly static explicit dependencies marked by compiler Sun UltraSPARC II/III IBM Power2 Intel CPUs, MIPS R10K, Alpha 21264, HP PA 8500, IBM RS64III Trimedia, i860 Itanium, Itanium II 66 33

CPU pipeline 4: le CPU moderne

CPU pipeline 4: le CPU moderne Architettura degli Elaboratori e delle Reti Lezione 25 CPU pipeline 4: le CPU moderne Proff. A. Borghese, F. Pedersini Dipartimento di Scienze dell Informazione Università degli Studi di Milano L 25 1/16

Dettagli

Metodi Software per ottenere ILP

Metodi Software per ottenere ILP Metodi Software per ottenere ILP Calcolatori Elettronici 2 http://www.dii.unisi.it/~giorgi/didattica/calel2 Scaletta Tecnologie nel compilatore BRANCH PREDICTION A SOFTWARE (nel compilatore) - Gia vista

Dettagli

Pipeline nel Mondo Reale

Pipeline nel Mondo Reale Pipeline nel Mondo Reale Luca Abeni May 26, 2016 Pipeline Ideali... Abbiamo visto come fare il bucato eseguire un istruzione macchina usando un pipeline... Pipeline a 5 stadi: Fetch Decode Exec Memory

Dettagli

Aumentare il parallelismo a livello di istruzione (2)

Aumentare il parallelismo a livello di istruzione (2) Processori multiple-issue issue Aumentare il parallelismo a livello di istruzione (2) Architetture Avanzate dei Calcolatori Valeria Cardellini Nei processori multiple-issue vengono lanciate più istruzioni

Dettagli

Calcolatori Elettronici A a.a. 2008/2009

Calcolatori Elettronici A a.a. 2008/2009 Calcolatori Elettronici A a.a. 2008/2009 Instruction Set Architecture: nozioni generali Massimiliano Giacomin 1 DOVE CI TROVIAMO Livello del linguaggio specializzato Traduzione (compilatore) o interpretazione

Dettagli

Trend di sviluppo delle pipeline

Trend di sviluppo delle pipeline Trend di sviluppo delle pipeline Prof. Alberto Borghese Dipartimento di Scienze dell Informazione alberto.borghese@.unimi.it Università degli Studi di Milano Patterson 4.10, 4.11 1/36 Sommario Superpipeline

Dettagli

Macchina di Riferimento: argomenti

Macchina di Riferimento: argomenti Macchina di Riferimento: argomenti L'architettura di una macchina MIPS Organizzazione della memoria I registri della CPU L'esecuzione dei programmi Il ciclo fetch-execute Il simulatore SPIM 1 Architettura

Dettagli

Esercitazione su Instruction Level Parallelism

Esercitazione su Instruction Level Parallelism Esercitazione su Instruction Level Parallelism Salvatore Orlando Arch. Elab. - S. Orlando 1 Pipeline con e senza forwarding Si considerino due processori MIPS (processore A e B) entrambi con pipeline a

Dettagli

Parallelismo a livello di istruzioni

Parallelismo a livello di istruzioni Parallelismo a livello di istruzioni 1 Alee o hazard, stalli Esistono situazioni, chiamate alee (hazard), che impediscono l esecuzione della successiva istruzione presente nel flusso di istruzioni, nel

Dettagli

Instruction Level Parallelism (ILP) Dinamico (prima parte)

Instruction Level Parallelism (ILP) Dinamico (prima parte) Instruction Level Parallelism (ILP) Dinamico (prima parte) Introduzione all ILP Dipendenze e alee sui dati e sui nomi Scheduling dinamico della CPU Branch prediction Speculazione hardware Multiple issue

Dettagli

Instruction Level Parallelism (ILP) Dinamico (prima parte)

Instruction Level Parallelism (ILP) Dinamico (prima parte) Instruction Level Parallelism (ILP) Dinamico (prima parte) Introduzione all ILP Dipendenze e alee sui dati e sui nomi Scheduling dinamico della CPU Branch prediction Speculazione hardware Multiple issue

Dettagli

Il processore Pentium

Il processore Pentium Caratteristiche principali (I) Architettura interna a 32 bit Address bus a 32 bit: si possono indirizzare fino a 4 GB di memoria fisica Data bus a 64 bit (si tratta in pratica di 2 data bus a 32 bit in

Dettagli

Esercitazione su Instruction Level Parallelism Salvatore Orlando

Esercitazione su Instruction Level Parallelism Salvatore Orlando Esercitazione su Instruction Level Parallelism Salvatore Orlando Arch. Elab. - S. Orlando 1 Pipeline con e senza forwarding Si considerino due processori MIPS (processore A e B) entrambi con pipeline a

Dettagli

ARCHITETTURE AVANZATE DEI CALCOLATORI, A.A. 2007/08 Soluzione esercizi sul pipelining

ARCHITETTURE AVANZATE DEI CALCOLATORI, A.A. 2007/08 Soluzione esercizi sul pipelining ARCHITETTURE AVANZATE DEI CALCOLATORI, A.A. 2007/08 Soluzione esercizi sul pipelining Esercizio 1) N.B. Nei diagrammi a cicli multipli non sono indicati i registri di pipeline (per semplicità) a) Si tratta

Dettagli

Architettura hardware

Architettura hardware Architettura hardware la parte che si può prendere a calci Architettura dell elaboratore Sistema composto da un numero elevato di componenti, in cui ogni componente svolge una sua funzione elaborazione

Dettagli

Architettura degli Elaboratori

Architettura degli Elaboratori Architettura degli Elaboratori Linguaggio macchina e assembler (caso di studio: processore MIPS) slide a cura di Salvatore Orlando, Marta Simeoni, Andrea Torsello Architettura degli Elaboratori 1 1 Istruzioni

Dettagli

Linguaggio assembler e linguaggio macchina (caso di studio: processore MIPS)

Linguaggio assembler e linguaggio macchina (caso di studio: processore MIPS) Linguaggio assembler e linguaggio macchina (caso di studio: processore MIPS) Salvatore Orlando Arch. Elab. - S. Orlando 1 Livelli di astrazione Scendendo di livello, diventiamo più concreti e scopriamo

Dettagli

Come aumentare le prestazioni Cenni alle architetture avanzate

Come aumentare le prestazioni Cenni alle architetture avanzate Politecnico di Milano Come aumentare le prestazioni Cenni alle architetture avanzate Mariagiovanna Sami Richiamo: CPI CPI = (cicli di clock della CPU richiesti dall esecuzione di un programma)/ numero

Dettagli

Università degli Studi di Milano - Corso Architettura II Prof. Borghese Appello del

Università degli Studi di Milano - Corso Architettura II Prof. Borghese Appello del Università degli Studi di Milano - Corso Architettura II Prof. Borghese Appello del 24.02.2016 Cognome e nome: Matricola: 1. [7] Data la CPU N. 1, specificare il contenuto di tutte le linee (dati e controllo).

Dettagli

Un altro tipo di indirizzamento. L insieme delle istruzioni (3) Istruz. di somma e scelta con operando (2) Istruzioni di somma e scelta con operando

Un altro tipo di indirizzamento. L insieme delle istruzioni (3) Istruz. di somma e scelta con operando (2) Istruzioni di somma e scelta con operando Un altro tipo di indirizzamento L insieme delle istruzioni (3) Architetture dei Calcolatori (lettere A-I) Tipi di indirizzamento visti finora Indirizzamento di un registro Indirizzamento con registro base

Dettagli

Il set istruzioni di MIPS Modalità di indirizzamento. Proff. A. Borghese, F. Pedersini

Il set istruzioni di MIPS Modalità di indirizzamento. Proff. A. Borghese, F. Pedersini Architettura degli Elaboratori e delle Reti Il set istruzioni di MIPS Modalità di indirizzamento Proff. A. Borghese, F. Pedersini Dipartimento di Scienze dell Informazione Università degli Studi di Milano

Dettagli

Istruzioni macchina. Dove sono gli operandi? Ciclo della CPU. Elementi di un istruzione macchina. Rappresentazione delle istruzioni

Istruzioni macchina. Dove sono gli operandi? Ciclo della CPU. Elementi di un istruzione macchina. Rappresentazione delle istruzioni Istruzioni macchina Linguaggio macchina Insieme delle istruzioni (instruction set) che la CPU puo eseguire Capitolo 10 1 2 Elementi di un istruzione macchina Codice operativo Specifica l operazione da

Dettagli

Lezione4: MIPS e Istruzioni (1 Parte)

Lezione4: MIPS e Istruzioni (1 Parte) Architettura degli Elaboratori Lezione4: MIPS e Istruzioni (1 Parte) Michele Nappi mnappi@unisa.it http://www.biplab.unisa.it/ Alcune slide di questa lezione sono prodotte dal Prof. Luigi Palopoli AGENDA

Dettagli

Int - 1 Fadd - 2 Fmolt - 4 Fdiv - 5

Int - 1 Fadd - 2 Fmolt - 4 Fdiv - 5 Architetture dei processori Appello del 25 Gennaio 2012 A) Un processore Intel basato sulla microarchitettura Nehalem/Westmere è caratterizzato dalla seguente gerarchia di memoria: L1 I-cache e L1 D-cache

Dettagli

CPU pipeline 4: le CPU moderne

CPU pipeline 4: le CPU moderne Architettura degli Elaboratori e delle Reti Lezione 25 CPU pipeline 4: le CPU moderne Proff. A. Borghese, F. Pedersini Dipartimento di Scienze dell Informazione Università degli Studi di Milano L 25 1/16

Dettagli

Struttura CPU. Struttura e Funzione del Processore. Capitolo 12. Compiti CPU:

Struttura CPU. Struttura e Funzione del Processore. Capitolo 12. Compiti CPU: Struttura e Funzione del Processore Capitolo 12 Struttura CPU Compiti CPU: Prelevare istruzioni Interpretare istruzioni Prelevare dati Elaborare dati Scrivere (memorizzare) dati 1 CPU con bus di sistema

Dettagli

Architettura di un calcolatore e linguaggio macchina. Primo modulo Tecniche della programmazione

Architettura di un calcolatore e linguaggio macchina. Primo modulo Tecniche della programmazione Architettura di un calcolatore e linguaggio macchina Primo modulo Tecniche della programmazione CPU Central Processing Unit, processore Unita logica/aritmetica: elaborazione dati Unita di controllo: coordina

Dettagli

ESERCIZIO 1. Sia dato il seguente ciclo di un programma in linguaggio ad alto livello:

ESERCIZIO 1. Sia dato il seguente ciclo di un programma in linguaggio ad alto livello: ESERIZIO 1 Sia dato il seguente ciclo di un programma in linguaggio ad alto livello: do { BASE[i] = BASEA[i] + BASEB[i] + IN1 + IN2; i++; } while (i!= N) Il programma sia stato compilato nel seguente codice

Dettagli

CPU pipeline 4: le CPU moderne

CPU pipeline 4: le CPU moderne Architettura degli Elaboratori e delle Reti Lezione 25 CPU pipeline 4: le CPU moderne Proff. A. Borghese, F. Pedersini Dipartimento di Scienze dell Informazione Università degli Studi di Milano L 25 1/17

Dettagli

Linguaggio Assembly e linguaggio macchina

Linguaggio Assembly e linguaggio macchina Architettura degli Elaboratori e delle Reti Lezione 11 Linguaggio Assembly e linguaggio macchina Proff. A. Borghese, F. Pedersini Dipartimento di Scienze dell Informazione Università degli Studi di Milano

Dettagli

Architettura degli Elaboratori

Architettura degli Elaboratori circuiti combinatori: ALU slide a cura di Salvatore Orlando, Marta Simeoni, Andrea Torsello 1 ALU ALU (Arithmetic Logic Unit) circuito combinatorio all interno del processore per l esecuzione di istruzioni

Dettagli

Pipeline Problemi 1. Pipeline Problemi 2

Pipeline Problemi 1. Pipeline Problemi 2 Problemi 1 Vari fenomeni pregiudicano il raggiungimento del massimo di parallelismo teorico (stallo) Sbilanciamento delle fasi Durata diversa per fase e per istruzione Problemi strutturali La sovrapposizione

Dettagli

Le etichette nei programmi. Istruzioni di branch: beq. Istruzioni di branch: bne. Istruzioni di jump: j

Le etichette nei programmi. Istruzioni di branch: beq. Istruzioni di branch: bne. Istruzioni di jump: j L insieme delle istruzioni (2) Architetture dei Calcolatori (lettere A-I) Istruzioni per operazioni logiche: shift Shift (traslazione) dei bit di una parola a destra o sinistra sll (shift left logical):

Dettagli

Lezione 12: L architettura LC-3

Lezione 12: L architettura LC-3 Lezione 12: L architettura LC-3 Laboratorio di Elementi di Architettura e Sistemi Operativi 24 Maggio 2012 Ricorda... Il ciclo di esecuzione di un istruzione è composto da sei fasi: FETCH DECODE ADDRESS

Dettagli

Concetti di base del PIPELINING

Concetti di base del PIPELINING Concetti di base del PIPELINING L architettura MIPS pipelined I problemi del pipelining Alcune soluzioni di base ai problemi del pipelining Versioni più sofisticate di pipeline Osservazioni conclusive.

Dettagli

Valutazione delle prestazioni

Valutazione delle prestazioni Valutazione delle prestazioni Architetture dei Calcolatori (lettere A-I) Valutazione delle prestazioni Misura/valutazione di un insieme di parametri quantitativi per Quantificare le caratteristiche di

Dettagli

Valutazione delle prestazioni. Valutazione delle prestazioni. Tempo di risposta e throughput. Prestazioni e tempo di esecuzione

Valutazione delle prestazioni. Valutazione delle prestazioni. Tempo di risposta e throughput. Prestazioni e tempo di esecuzione Valutazione delle prestazioni Valutazione delle prestazioni Architetture dei Calcolatori (lettere A-I) Misura/valutazione di un insieme di parametri quantitativi per Quantificare le caratteristiche di

Dettagli

Architettura hardware

Architettura hardware Architettura dell elaboratore Architettura hardware la parte che si può prendere a calci Sistema composto da un numero elevato di componenti, in cui ogni componente svolge una sua funzione elaborazione

Dettagli

AXO - Architettura dei Calcolatori e Sistema Operativo. organizzazione strutturata dei calcolatori

AXO - Architettura dei Calcolatori e Sistema Operativo. organizzazione strutturata dei calcolatori AXO - Architettura dei Calcolatori e Sistema Operativo organizzazione strutturata dei calcolatori I livelli I calcolatori sono progettati come una serie di livelli ognuno dei quali si basa sui livelli

Dettagli

Il linguaggio del calcolatore: linguaggio macchina e linguaggio assembly

Il linguaggio del calcolatore: linguaggio macchina e linguaggio assembly Il linguaggio del calcolatore: linguaggio macchina e linguaggio assembly Percorso di Preparazione agli Studi di Ingegneria Università degli Studi di Brescia Docente: Massimiliano Giacomin Richiamo sull

Dettagli

Assembly. Linguaggio di programmazione corrispondente al linguaggio macchina P.H. Cap. 2.1, 2.2 e App. A. Linguaggio assembly (App.

Assembly. Linguaggio di programmazione corrispondente al linguaggio macchina P.H. Cap. 2.1, 2.2 e App. A. Linguaggio assembly (App. Assembly Linguaggio di programmazione corrispondente al linguaggio macchina P.H. Cap. 2.1, 2.2 e App. A 1 Linguaggio assembly (App. A) Rappresentazione simbolica del linguaggio macchina Più comprensibile

Dettagli

Esercizi su Microarchitetture. Università Roma Tre

Esercizi su Microarchitetture. Università Roma Tre Esercizi su Microarchitetture Prof. Riccardo Torlone Università Roma Tre Architetture di CPU I Si vuole realizzare una semplice CPU con architettura CISC a 8 bit dotata di due registri general purpose,

Dettagli

Richiami sull architettura del processore MIPS a 32 bit

Richiami sull architettura del processore MIPS a 32 bit Richiami sull architettura del processore MIPS a 32 bit Architetture Avanzate dei Calcolatori Valeria Cardellini Caratteristiche principali dell architettura del processore MIPS E un architettura RISC

Dettagli

Architettura dei computer

Architettura dei computer Architettura dei computer In un computer possiamo distinguere quattro unità funzionali: il processore la memoria principale (memoria centrale, RAM) la memoria secondaria i dispositivi di input/output La

Dettagli

Il processore. Istituzionii di Informatica -- Rossano Gaeta

Il processore. Istituzionii di Informatica -- Rossano Gaeta Il processore Il processore (detto anche CPU, ovvero, Central Processing Unit) è la componente dell unità centrale che fornisce la capacità di elaborazione delle informazioni contenute nella memoria principale

Dettagli

Accesso a memoria. Accesso a memoria. Accesso a memoria. Modalità di indirizzamento. Lezione 5 e 6. Architettura degli Elaboratori A.

Accesso a memoria. Accesso a memoria. Accesso a memoria. Modalità di indirizzamento. Lezione 5 e 6. Architettura degli Elaboratori A. < < } } Lezione 5 e 6 Accesso a memoria A questo livello di astrazione, la memoria viene vista come un array di byte Per ogni richiesta di un dato ad un certo indirizzo, la CPU ottiene un numero di byte

Dettagli

SOLUZIONI DELLA PROVA SCRITTA DEL CORSO DI. NUOVO E VECCHIO ORDINAMENTO DIDATTICO 28 Settembre 2006

SOLUZIONI DELLA PROVA SCRITTA DEL CORSO DI. NUOVO E VECCHIO ORDINAMENTO DIDATTICO 28 Settembre 2006 SOLUZIONI DELLA PROVA SCRITTA DEL CORSO DI NUOVO E VECCHIO ORDINAMENTO DIDATTICO 28 Settembre 26 MOTIVARE IN MANIERA CHIARA LE SOLUZIONI PROPOSTE A CIASCUNO DEGLI ESERCIZI SVOLTI ESERCIZIO 1 (8 punti)

Dettagli

Tecniche di parallelismo, processori RISC

Tecniche di parallelismo, processori RISC Testo di riferimento: [Congiu] 9.1-9.3 (pg. 253 264) Tecniche di parallelismo, processori RISC 09.a Pipelining Altre tecniche di parallelismo Processori superscalari Caratteristiche dei processori RISC

Dettagli

Processore. Memoria I/O. Control (Parte di controllo) Datapath (Parte operativa)

Processore. Memoria I/O. Control (Parte di controllo) Datapath (Parte operativa) Processore Memoria Control (Parte di controllo) Datapath (Parte operativa) I/O Memoria La dimensione del Register File è piccola registri usati per memorizzare singole variabili di tipo semplice purtroppo

Dettagli

Macchine Astratte. Luca Abeni. February 22, 2017

Macchine Astratte. Luca Abeni. February 22, 2017 Macchine Astratte February 22, 2017 Architettura dei Calcolatori - 1 Un computer è composto almeno da: Un processore (CPU) Esegue le istruzioni macchina Per fare questo, può muovere dati da/verso la memoria

Dettagli

Compilatori e Livelli di Compilazione

Compilatori e Livelli di Compilazione Compilatori e Livelli di Compilazione Il compilatore Il programmatore ha a disposizione un ampia scelta di compilatori sviluppati per diversi sistemi operativi quali Linux/Unix, Windows, Macintosh. Oltre

Dettagli

Architettura degli Elaboratori

Architettura degli Elaboratori Architettura degli Elaboratori a.a. 2013/14 appello straordinario, 13 aprile 2015 Riportare nome, cognome, numero di matricola e corso A/B Domanda 1 Si consideri la seguente gerarchia di memoria memoria

Dettagli

Fasi (MIPS) Dove NPC è un registro temporaneo PC (program counter) è il registro IP (instruction pointer)

Fasi (MIPS) Dove NPC è un registro temporaneo PC (program counter) è il registro IP (instruction pointer) Fasi (MIPS) Fasi senza pipeline: IF (istruction fetch): IR Mem[PC] ; NPC PC + 4 ; Dove NPC è un registro temporaneo PC (program counter) è il registro IP (instruction pointer) Lezione Architettura degli

Dettagli

Indirettezza. Fetch/Execute. Fetch/Execute. Introduzione della Indirettezza (indirect)

Indirettezza. Fetch/Execute. Fetch/Execute. Introduzione della Indirettezza (indirect) Ciclo esecutivo delle istruzioni: Fetch/Execute Lo avete visto nel corso di Introduzione alle Architetture degli Elaboratori Stallings, Capitolo 3 Ne vediamo una versione revisionata Indirettezza Per recuperare

Dettagli

Aumentare il parallelismo a livello di istruzione (1)

Aumentare il parallelismo a livello di istruzione (1) Parallelismo Il parallelismo consente di migliorare le prestazioni grazie all esecuzione simultanea di più istruzioni Aumentare il parallelismo a livello di istruzione (1) Architetture Avanzate dei Calcolatori

Dettagli

Lezione 17: Indirizzamento della memoria LC-3

Lezione 17: Indirizzamento della memoria LC-3 Lezione 17: Indirizzamento della memoria LC-3 Laboratorio di Elementi di Architettura e Sistemi Operativi 22 Maggio 2013 Riassunto sull architettura LC-3 1. Organizzazione della memoria: La memoria è composta

Dettagli

L insieme delle istruzioni (6)

L insieme delle istruzioni (6) L insieme delle istruzioni (6) Architetture dei Calcolatori (lettere A-I) Alcune note conclusive I due principi dell architettura a programma memorizzato Uso di istruzioni indistinguibili dai dati Uso

Dettagli

Componenti principali. Programma cablato. Architettura di Von Neumann. Programma cablato. Cos e un programma? Componenti e connessioni

Componenti principali. Programma cablato. Architettura di Von Neumann. Programma cablato. Cos e un programma? Componenti e connessioni Componenti principali Componenti e connessioni Capitolo 3 CPU (Unita Centrale di Elaborazione) Memoria Sistemi di I/O Connessioni tra loro 1 2 Architettura di Von Neumann Dati e instruzioni in memoria

Dettagli

Processore. Memoria I/O. Control (Parte di controllo) Datapath (Parte operativa)

Processore. Memoria I/O. Control (Parte di controllo) Datapath (Parte operativa) Processore Memoria Control (Parte di controllo) Datapath (Parte operativa) I/O Parte di Controllo La Parte Controllo (Control) della CPU è un circuito sequenziale istruzioni eseguite in più cicli di clock

Dettagli

CPU pipeline hazards

CPU pipeline hazards Architettura degli Elaboratori e delle Reti Lezione 23 CPU pipeline hazards Proff. A. Borghese, F. Pedersini Dipartimento di Scienze dell Informazione Università degli Studi di Milano L 23 /24 Sommario!

Dettagli

Linguaggio Assembly e linguaggio macchina

Linguaggio Assembly e linguaggio macchina Architettura degli Elaboratori e delle Reti Lezione 11 Linguaggio Assembly e linguaggio macchina Proff. A. Borghese, F. Pedersini Dipartimento di Scienze dell Informazione Università degli Studi di Milano

Dettagli

19 - Eccezioni. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

19 - Eccezioni. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo 19 - Eccezioni Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it Corso

Dettagli

Concetti di base del PIPELINING. L architettura MIPS pipelined. L architettura MIPS pipelined

Concetti di base del PIPELINING. L architettura MIPS pipelined. L architettura MIPS pipelined Concetti di base del PIPELINING L architettura MIPS pipelined I problemi del pipelining Alcune soluzioni di base ai problemi del pipelining Versioni più sofisticate di pipeline Osservazioni conclusive.

Dettagli

I formati delle istruzioni

I formati delle istruzioni Appunti di Calcolatori Elettronici Le istruzioni I formati delle istruzioni... 1 Criteri generali di progettazione dei formati delle istruzioni... 2 Cenni all indirizzamento... 4 Indirizzamento immediato...

Dettagli

6 - Blocchi e cicli. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

6 - Blocchi e cicli. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo 6 - Blocchi e cicli Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://pages.di.unipi.it/milazzo milazzo di.unipi.it

Dettagli

Il Linguaggio Assembly: Gestione della memoria e controllo

Il Linguaggio Assembly: Gestione della memoria e controllo Il Linguaggio Assembly: Gestione della memoria e controllo Prof. Alberto Borghese Dipartimento di Scienze dell Informazione borghese@dsi.unimi.it Università degli Studi di Milano 1/42 Sommario L organizzazione

Dettagli

Architettura degli Elaboratori

Architettura degli Elaboratori Architettura degli Elaboratori Università degli Studi di Padova Scuola di Scienze Corso di Laurea in Informatica docente: Alessandro Sperduti Informazioni Generali Lucidi ed esercizi disponibili in formato

Dettagli

Blocchi di più parole

Blocchi di più parole Blocchi di più parole Per trarre vantaggio dalla località spaziale non conviene avere blocchi di una sola parola ma blocchi di più parole che occupano nella memoria principale posizioni vicine. Esempio:

Dettagli

Parte IV Architettura della CPU Central Processing Unit

Parte IV Architettura della CPU Central Processing Unit Parte IV Architettura della CPU Central Processing Unit IV.1 Struttura della CPU All interno di un processore si identificano in genere due parti principali: l unità di controllo e il data path (percorso

Dettagli

Analisi ed Esplorazione della Potenza Dissipata e delle Prestazio. delle Prestazioni di una Architettura Superscalare

Analisi ed Esplorazione della Potenza Dissipata e delle Prestazio. delle Prestazioni di una Architettura Superscalare Analisi ed Esplorazione della Potenza Dissipata e delle Prestazioni di una Architettura Superscalare 22 Luglio 2004 1 Obiettivi 2 Una Framework di esplorazione SuperDLX Algoritmi di ottimizzazione 3 Modello

Dettagli

ESERCIZIO 1 Si consideri la seguente funzione f (A, B, C, D) non completamente specificata definita attraverso il suo ON-SET e DC-SET:

ESERCIZIO 1 Si consideri la seguente funzione f (A, B, C, D) non completamente specificata definita attraverso il suo ON-SET e DC-SET: Università degli Studi di Milano Corso Architettura degli elaboratori e delle reti Prof. Cristina Silvano A.A. 2004/2005 Esame scritto del 15 luglio 2005 Cognome: Matricola: Nome: Istruzioni Scrivere solo

Dettagli

Instruction Level Parallelism Salvatore Orlando

Instruction Level Parallelism Salvatore Orlando Instruction Level Parallelism Salvatore Orlando Arch. Elab. - S. Orlando 1 Organizzazione parallela del processore I processori moderni hanno un organizzazione interna che permette di eseguire più istruzioni

Dettagli

Instruction Level Parallelism

Instruction Level Parallelism Instruction Level Parallelism Salvatore Orlando Arch. Elab. - S. Orlando 1 Organizzazione parallela del processore I processori moderni hanno un organizzazione interna che permette di eseguire più istruzioni

Dettagli

Compilatori e Livelli di Compilazione

Compilatori e Livelli di Compilazione Compilatori e Livelli di Compilazione Introduction to Fortran 90 Paolo Ramieri, CINECA Aprile 2014 Il compilatore Il programmatore ha a disposizione un ampia scelta di compilatori sviluppati per diversi

Dettagli

1. Si effettui la divisione di 7/5 utilizzando un efficiente algoritmo e illustrando la corrispondente architettura hardware.

1. Si effettui la divisione di 7/5 utilizzando un efficiente algoritmo e illustrando la corrispondente architettura hardware. 1. Si effettui la divisione di 7/5 utilizzando un efficiente algoritmo e illustrando la corrispondente architettura hardware. 2. Spiegare i diversi tipi di indirizzamento usati dalle istruzioni del set

Dettagli

Sistemi e Tecnologie per l'automazione LS. HW per elaborazione digitale in automazione: Microcontrollori e DSP

Sistemi e Tecnologie per l'automazione LS. HW per elaborazione digitale in automazione: Microcontrollori e DSP Laurea Specialistica in Ingegneria Informatica Laurea Specialistica in Ingegneria Elettronica e delle Telecomunicazioni Sistemi e Tecnologie per l'automazione LS HW per elaborazione digitale in automazione:

Dettagli

Introduzione. Caratteristiche generali. Sistemi e Tecnologie per l'automazione LS. HW per elaborazione digitale in automazione: Microcontrollori e DSP

Introduzione. Caratteristiche generali. Sistemi e Tecnologie per l'automazione LS. HW per elaborazione digitale in automazione: Microcontrollori e DSP Laurea Specialistica in Ingegneria Informatica Laurea Specialistica in Ingegneria Elettronica e delle Telecomunicazioni Sistemi e Tecnologie per l'automazione LS HW per elaborazione digitale in automazione:

Dettagli

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca. Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2016-17 Pietro Frasca Lezione 5 Martedì 25-10-2016 Definizione di processo Esiste una distinzione concettuale

Dettagli

La memoria cache. Lab di Calcolatori

La memoria cache. Lab di Calcolatori La memoria cache 1 Gap delle prestazioni DRAM - CPU 1000 CPU- DRAM Gap CPU Proc 60%/yr. (2X/1.5yr) 100 10 ProcessorMemory Performance Gap: (grows 50% / year) D R A M DRAM9%/yr.(2X/10 yrs) 1 1980 1981 1982

Dettagli

Componenti e connessioni. Capitolo 3

Componenti e connessioni. Capitolo 3 Componenti e connessioni Capitolo 3 Componenti principali CPU (Unità Centrale di Elaborazione) Memoria Sistemi di I/O Connessioni tra loro Architettura di Von Neumann Dati e instruzioni in memoria (lettura

Dettagli

Il Processore: l unità di controllo

Il Processore: l unità di controllo Il Processore: l unità di controllo La frequenza con cui vengono eseguiti i cicli di esecuzione è scandita da una componente detta clock Ad ogni impulso di clock la UC esegue un ciclo di esecuzione di

Dettagli

Il Processore. Informatica di Base -- R.Gaeta 27

Il Processore. Informatica di Base -- R.Gaeta 27 Il Processore Il processore (detto anche CPU, ovvero, Central Processing Unit) è la componente dell unità centrale che fornisce la capacità di elaborazione delle informazioni contenute nella memoria principale

Dettagli

Architettura degli Elaboratori. Classe 3 Prof.ssa Anselmo. Appello del 18 Febbraio Attenzione:

Architettura degli Elaboratori. Classe 3 Prof.ssa Anselmo. Appello del 18 Febbraio Attenzione: Cognome.. Nome.... Architettura degli Elaboratori Classe 3 Prof.ssa Anselmo Appello del 18 Febbraio 2015 Attenzione: Inserire i propri dati nell apposito spazio sottostante e in testa a questa pagina.

Dettagli

21 March : ESERCITAZIONE 01 GESTIONE DELLA MEMORIA VETTORI CONTROLLOO O DI FLUSSO DI UN PROGRAMMA. I. Frosio

21 March : ESERCITAZIONE 01 GESTIONE DELLA MEMORIA VETTORI CONTROLLOO O DI FLUSSO DI UN PROGRAMMA. I. Frosio 02: ESERCITAZIONE 01 21 March 2011 GESTIONE DELLA MEMORIA VETTORI CONTROLLOO O DI FLUSSO DI UN PROGRAMMA I. Frosio 1 SOMMARIO Organizzazione della memoria Istruzioni di accesso alla memoria Vettori Istruzioni

Dettagli

Valutazione delle Prestazioni

Valutazione delle Prestazioni Valutazione delle Prestazioni Misure per le Prestazioni T durata del ciclo di clock [secondi] F numero cicli di clock al secondo [hertz] F 1 / T T 1 / F Exe_Time X tempo di esecuzione (CPU) di un programma

Dettagli

Introduzione alle gerarchie di memoria

Introduzione alle gerarchie di memoria Introduzione alle gerarchie di memoria 1 Un ripasso Circuito sequenziale Segnale di clock Circuito sincrono Temporizzazione sensibile ai fronti Latch tipo S-R Latch tipo D Flip-flop tipo D Register file

Dettagli

Il linguaggio assembly

Il linguaggio assembly Il linguaggio assembly PH 2.3 (continua) 1 Argomenti Organizzazione della memoria Istruzioni di trasferimento dei dati Array Istruzioni logiche 2 1 La memoria del MIPS I contenuti delle locazioni di memoria

Dettagli

INGEGNERIA E TECNOLOGIE DEI SISTEMI DI CONTROLLO Processori per sistemi di controllo

INGEGNERIA E TECNOLOGIE DEI SISTEMI DI CONTROLLO Processori per sistemi di controllo INGEGNERIA E TECNOLOGIE DEI SISTEMI DI CONTROLLO Processori per sistemi di controllo Prof. Carlo Rossi DEIS - Università di Bologna Tel: 051 2093020 email: crossi@deis.unibo.it Classificazione Processori

Dettagli

Com è fatto un computer (seconda puntata) Appunti per le classi 1 A cura del prof. Ing. Mario Catalano

Com è fatto un computer (seconda puntata) Appunti per le classi 1 A cura del prof. Ing. Mario Catalano Com è fatto un computer (seconda puntata) Appunti per le classi 1 A cura del prof. Ing. Mario Catalano A che serve una memoria? Ovviamente, nel computer, come nel cervello umano, serve a conservare le

Dettagli

La CPU e la Memoria. Sistemi e Tecnologie Informatiche 1. Struttura del computer. Sistemi e Tecnologie Informatiche 2

La CPU e la Memoria. Sistemi e Tecnologie Informatiche 1. Struttura del computer. Sistemi e Tecnologie Informatiche 2 La CPU e la Memoria Sistemi e Tecnologie Informatiche 1 Struttura del computer Sistemi e Tecnologie Informatiche 2 1 I registri La memoria contiene sia i dati che le istruzioni Il contenuto dei registri

Dettagli

Instruction Level Parallelism Salvatore Orlando

Instruction Level Parallelism Salvatore Orlando Instruction Level Parallelism Salvatore Orlando Arch. Elab. - S. Orlando 1 Organizzazione parallela del processore I processori moderni hanno un organizzazione interna che permette di eseguire più istruzioni

Dettagli

Valutazione delle prestazioni

Valutazione delle prestazioni Valutazione delle prestazioni Trend tecnologico: Capacità della Memoria Capacità chip DRAM DRAM Year Size 1980 64 Kb 1983 256 Kb 1986 1 Mb 1989 4 Mb 1992 16 Mb 1996 64 Mb 1999 256 Mb 2002 1 Gb Incremento

Dettagli

Architettura degli Elaboratori

Architettura degli Elaboratori Architettura degli Elaboratori Università degli Studi di Padova Scuola di Scienze Corso di Laurea in Informatica docenti: Silvia Crafa, Nicolò Navarin (lab), Alessandro Sperduti Docenti Silvia Crafa Nicolò

Dettagli

GESTIONE DELLA MEMORIA CENTRALE 6.1 D. - UNICAL

GESTIONE DELLA MEMORIA CENTRALE 6.1 D. - UNICAL GESTIONE DELLA MEMORIA CENTRALE 6.1 Gestione della Memoria Background Spazio di indirizzi Swapping Allocazione Contigua Paginazione 6.2 Background Per essere eseguito un programma deve trovarsi (almeno

Dettagli

Introduzione alla programmazione

Introduzione alla programmazione Introduzione alla programmazione Risolvere un problema Per risolvere un problema si procede innanzitutto all individuazione Delle informazioni, dei dati noti Dei risultati desiderati Il secondo passo consiste

Dettagli

TEORIA DEI SISTEMI OPERATIVI. Sistemi monoprogrammatie multiprogrammati

TEORIA DEI SISTEMI OPERATIVI. Sistemi monoprogrammatie multiprogrammati TEORIA DEI SISTEMI OPERATIVI Sistemi monoprogrammatie multiprogrammati 1 STRUTTURA DEL SISTEMA OPERATIVO UTENTE La struttura di un sistema operativo è di tipo gerarchico: i programmi che lo compongono

Dettagli

Gestione della memoria

Gestione della memoria Gestione della memoria centrale Gestione della memoria Concetti generali. Swapping. Allocazione contigua di memoria. Paginazione. Segmentazione. Segmentazione con paginazione. Esempio: Pentium Intel Background

Dettagli

STRUTTURE DI CONTROLLO DEL C++

STRUTTURE DI CONTROLLO DEL C++ STRUTTURE DI CONTROLLO DEL C++ Le istruzioni if e else Le istruzioni condizionali ci consentono di far eseguire in modo selettivo una singola riga di codice o una serie di righe di codice (che viene detto

Dettagli

Calcolatori Elettronici

Calcolatori Elettronici Calcolatori Elettronici Valutazione delle Prestazioni Francesco Lo Presti Rielaborate da Salvatore Tucci Valutazione delle Prestazioni q Misura/valutazione di un insieme di parametri quantitativi per caratterizzare

Dettagli

INCREMENTO DELLE PRESTAZIONI DI UN PROCESSORE (parte seconda) I PROCESSORI SUPERSCALARI I PROCESSORI VLIW

INCREMENTO DELLE PRESTAZIONI DI UN PROCESSORE (parte seconda) I PROCESSORI SUPERSCALARI I PROCESSORI VLIW 1 INCREMENTO DELLE PRESTAZIONI DI UN PROCESSORE (parte seconda) I PROCESSORI SUPERSCALARI I PROCESSORI VLIW 2 I PROCESSORI SUPERSCALARI PREMESSA 3 Nelle architetture scalari e pipelined date diverse classi

Dettagli