Architettura degli Elaboratori B Introduzione al corso Salvatore Orlando http://www.dsi.unive.it/~arcb Arch. Elab. - S. Orlando 1 Componenti di un calcolatore convenzionale Studieremo il progetto e le prestazioni delle varie componenti di un calcolatore convenzionale processore (CPU) - parte operativa (datapath) - parte controllo (control) memoria principale - DRAM, SRAM e gerarchie Input/Output (I/O) - mouse, tastiera (I) - video, stampante (O) - dischi (I/O) - CD (I/O o I) - rete (I/O) - bus per i collegamenti Processore Control Datapath I/O Memoria Arch. Elab. - S. Orlando 2
Contenuti del corso Progetto della CPU CPU in grado di eseguire un sottoinsieme di istruzioni MIPS in un singolo ciclo di clock CPU in grado di eseguire un sottoinsieme di istruzioni MIPS in più cicli di clock (multi-ciclo) Introduzione del parallelismo a livello delle istruzioni Più istruzioni sono eseguite concorrentemente dalla CPU Memoria Gerarchie di memoria Cache e memoria virtuale I/O Dispositivi fisici e bus Tecniche hw / sw per la programmazione dell I/O Valutazione delle prestazioni Studieremo come i tipi e il numero delle istruzioni eseguite, la frequenza del processore, il parallelismo interno al processore, le gerarchie di memorie e l I/O influenzano il tempo di esecuzione di un programma Arch. Elab. - S. Orlando 3 Linguaggio assembler e linguaggio macchina (caso di studio: processore MIPS) Salvatore Orlando Arch. Elab. - S. Orlando 4
Livelli di astrazione Scendendo di livello, diventiamo più concreti e scopriamo più informazione Il livello astratto omette dettagli, ma ci permette di trattare la complessità Quali sono i dettagli che via via scopriamo scendendo di livello? Arch. Elab. - S. Orlando 5 Istruzioni Macchina Linguaggio della Macchina Più primitivo dei Linguaggi ad Alto Livello es., controllo del flusso poco sofisticato (non ci sono for, while, if) Linguaggio molto restrittivo es., istruzioni aritmetiche del MIPS sono solo 3 operandi Studieremo l ISA del MIPS simile ad altre architetture (RISC) sviluppate a partire dagli anni 80 usato da NEC, Nintendo, Silicon Graphics, Sony Scopi di progetto dell ISA: massimizzare le prestazioni - minimizzare i costi, anche riducendo i tempi di progetto Arch. Elab. - S. Orlando 6
Istruzioni Aritmetiche del MIPS Tutte le istruzioni hanno 3 operandi L ordine degli operandi è fisso l operando destinazione in prima posizione Esempio: C code (interi): A = B + C Linguaggio Assembler MIPS code: add $8, $9, $10 (operandi associati con variabili dal compilatore) Arch. Elab. - S. Orlando 7 Istruzioni Aritmetiche MIPS Principio di Progetto: semplicità favorisce la regolarità Ma la regolarità può complicare le cose. C code: A = B + C + D; E = F - A; MIPS code: add $8, $4, $5 add $8, $8, $6 sub $9, $7, $8 Operandi devono essere registri: solo 32 registri da 4B (1W) $0, $1, $2, $3,. Principio di progetto: più piccolo è anche più veloce Arch. Elab. - S. Orlando 8
Registri e Memoria Le istruzioni aritmetiche operano su registri solo 32 registri ogni registro 1 word (4B) Compilatore associa variabili con registri Control Datapath Processor Memory Input Output I/O Cosa succede con programmi con tanti dati (tante variabili, o array)? Usiamo la memoria, che contiene anche i programmi Memoria MIPS indirizzata al Byte 0 1 2 3 4 5 6... 8 bits of data 8 bits of data 8 bits of data 8 bits of data 8 bits of data 8 bits of data 8 bits of data Arch. Elab. - S. Orlando 9 Instruzioni di load / store sw (Store Word): lw (Load Word): Esempio: C code: reg word in memoria word in memoria reg A[8] = h + A[8]; MIPS code: lw $15, 32($4) add $15, $5, $15 sw $15, 32($4) Indirizzo della word in memoria &A[8]: $4 + 32 Nota che sw ha la destinazione come ultimo operando Ricorda: gli operandi delle istr. aritmetiche sono registri, non celle di memoria! Arch. Elab. - S. Orlando 10
Riassumendo MIPS load/store word, con indirizzamento al byte aritmetica solo su registri Instruzioni Significato add $4, $5, $6 $4 = $5 + $6 sub $4, $5, $6 $4 = $5 $6 lw $4, 100($5) $4 = Memory[$5+100] sw $4, 100($5) Memory[$5+100] = $4 Arch. Elab. - S. Orlando 11 Linguaggio Macchina Anche le istruzioni sono rappresentati in memoria con 1 word (4B) Esempio: add $8, $17, $18 Formato istruzione (R-type): 000000 10001 10010 01000 00000 100000 op rs rt rd shamt funct Arch. Elab. - S. Orlando 12
Linguaggio Macchina Formato istruzioni lw e sw necessario introdurre un nuovo tipo di formato I-type (Immediate) diverso dall R-type (Register) usato per le istruzioni aritmetico-logiche Esempio: lw $9, 32($18) 35 18 9 32 op rs rt 16 bit number Compromesso di progetto anche lw/sw sono lunghe 4B, con displacement costante (operando immediato di 16 b) inserito direttamente nell istruzione Arch. Elab. - S. Orlando 13 Concetto di Stored Program Istruzioni sono stringhe di bit Programmi sono sequenze di istruzioni Programmi (come i dati) memorizzati in memoria La CPU legge le istruzioni dalla memoria (come i dati) CPU Memory memoria per dati, programmi (compilatori, editor, etc.) Ciclo Fetch & Execute CPU legge (fetch) istruzione corrente (indirizzata dal PC=Program Counter), e la pone in un registro speciale interno CPU usa i bit dell istruzione per "controllare" le azioni da svolgere, e su questa base esegue l istruzione CPU determina prossima istruzione e ripete ciclo Arch. Elab. - S. Orlando 14
Istruzioni di controllo Istruzioni per prendere decisioni sul futuro alterano il controllo di flusso (sequenziale) cambiano quindi la prossima" istruzione da eseguire (PC) Istruzioni MIPS di salto condizionato: beq $4, $5, Label bne $6, $5, Label # branch if equal # branch if not equal Esempio: if (i==j) h = i + j; bne $4, $5, Label add $19, $4, $5 Label:... Arch. Elab. - S. Orlando 15 Istruzioni di controllo Salto non condizionato j label Esempio: if (i!=j) beq $4, $5, Lab1 h=i+j; add $3, $4, $5 else j Lab2 h=i-j; Lab1: sub $3, $4, $5 Lab2:... Arch. Elab. - S. Orlando 16
Riassumendo Istruzione Significato add $4,$5,$6 $4 = $5 + $6 sub $4,$5,$6 $4 = $5 $6 lw $4,100($5) $4 = Memory[$5+100] sw $4,100($5) Memory[$5+100] = $4 bne $4,$5,Label Prossima istr. caricata dall indirizzo Label, ma solo se $s4 $s5 beq $4,$5,Label Prossima istr. caricata dall indirizzo Label, ma solo se $s4 = $s5 j Label Prossima istr. caricata dall indirizzo Label Formati: R I J op rs rt rd shamt funct op rs rt 16 bit address op 26 bit address Arch. Elab. - S. Orlando 17 Istruzioni di controllo Abbiamo visto: beq, bne ma come facciamo per esprimere Branch-if-less-than? Nel MIPS c è un istruzione aritmetica slt: Set-if-Less-Than slt può essere usata in congiunzione con beq e bne Istruzione slt $10, $4, $5 Significato if $4 < $5 then $10 = 1 else $10 = 0 Arch. Elab. - S. Orlando 18
Costanti Costanti piccole sono molto frequenti (50% degli operandi) es.: A = A + 5; B = B + 1; C = C - 18; costanti piccole trovano posto all interno delle istruzioni come operandi immediati Istruzioni MIPS aritmetico/logiche con operandi immediati: addi $29, $29, 4 slti $8, $18, 10 andi $29, $29, 6 ori $29, $29, 4 Formato I ancora istruzioni regolari rappresentabili su 32 bit Arch. Elab. - S. Orlando 19 Instruction Set Architecture (ISA) alternativi Arch. Elab. - S. Orlando 20
Caratteristiche ISA Abbiamo visto le principali istruzioni del MIPS simili a quelle presenti nell ISA di altri processori ISA possono essere categorizzati rispetto a: Modi di indirizzamento Tipi di operandi Numero di operandi Stile dell architettura CISC (Complex Instruction Set Computers) vs. RISC (Reduced..) Arch. Elab. - S. Orlando 21 Modalità di indirizzamento descrive gli operandi permessi e come sono usati Ogni tipo di istruzione può avere modalità multiple di indirizzamento Esempio, l add del processore SPARC ha una versione a 3-registri, una a 2-registri e una con un operando immediato I nomi dei vari modi di indirizzamenti sono parzialmente standardizzati Arch. Elab. - S. Orlando 22
Modi di indirizzamento nel MIPS Immediate: 1. Immediate addressing op rs rt Immediate Constant & register(s) addi 2. Register addressing op rs rt rd... funct Registers Register: Only registers add 3. Base addressing op rs rt Address Register Memory Base/displacement: Memory[Register + Constant] lw, sw Register 4. PC-relative addressing op rs rt Address + Byte Halfword Word Memory PC-relative: PC + Constant beq PC + Word 5. Pseudodirect addressing Pseudodirect: Constant (PC s upper bits) j op Address PC Memory Word Arch. Elab. - S. Orlando 23 Modi di indirizzamento: SPARC L architettura Sun (SPARC) è di tipo RISC, come il MIPS. Ha modalità di indirizzamento simili al MIPS, con in più.. Indexed: Memory[Register + Register] ld, st Base Indice Arch. Elab. - S. Orlando 24
Modi di indirizzamento: altri ISA di tipo CISC 80x86: VAX: Register indirect: Memory[Register] Semplificazione del modo base Scaled index (diverse versioni): Memory[Register + Register * Immediate] Per indicizzare grandi array Register- {register,immediate,memory} & Memory{register,immediate} Non è possibile avere 2 operandi di memoria nella stessa istr. Altri modi, come i seguenti: Autoincrement & autodecrement: Memory[Register] che anche incrementa/decrementa contestualmente il registro. Utile per indici di loop. Le motivazione: comandi C come x++, ++x, x--, --x Arch. Elab. - S. Orlando 25 Stili architetturali Ogni classificazione è chiaramente imperfetta,a causa delle innumerevoli variazioni I trend di sviluppo delle architetture sono: Hardware meno costoso, più facile da costruire Possimo complicare il progetto Aumentare lo spazio di indirizzamento Memoria meno costosa Miglioramento della tecnologia dei compilatori Miglior uso dell hardware Non è necessario codificare in assembler per ottimizzare Gap sempre più grande tra velocità dei processori & lentezza relativa della memoria Valutiamo l evoluzione degli stili architetturali - usando la traduzione A=B+C come esempio Arch. Elab. - S. Orlando 26
Stile Accumulatore Solo un registro Accumulatore source & destination di ogni istruzione. L altro source in memoria o costante Altri registri specialpurpose: SP, PC, Esempio per A=B+C: load B add C store A Esempio di processori: Intel 8086 Zilog Z80 Vantaggi: Semplice da progettare e implementare Dimensione del codice medio Svantaggi: Relativamente lento Molti accessi alla memoria Molti movimenti di dati: non ci sono registri temporanei Evoluzione: Istruzioni più potenti Arch. Elab. - S. Orlando 27 Stile Registro-Memoria Un operando in memoria Più 1/2 operandi nei registri. Ci sono registri generalpurpose. Esempio per A=B+C: load r1, B add r1, r1, C store A, r1 Vantaggi: Più veloce Meno accessi alla memoria & meno movimenti di dati Dimensione del codice medio Meno istruzioni Istruzioni più lunghe, a formato variabile Esempio di processori: Intel 80386: Estende l 8086 con istruzioni register-memory Evoluzione: Istruzioni più potenti Arch. Elab. - S. Orlando 28
Stile Memoria-Memoria Tutti gli operandi possono essere in memoria Ci sono anche registri general-purpose Esempio per A=B+C: add A, B, C Esempio di processore: Dec VAX: Uno degli ISA più flessibili Vantaggi: Facile da programmare Dimensione del codice piccolo Meno istruzioni Istruzioni più lunghe, a formato variabile Svantaggi: HW complicato, molte opzioni di esecuzione per ogni istr. I compilatori spesso sceglievano le traduzioni più semplici, non le più veloci I compilatori erano portati a sotto-utilizzare I registri Troppi movimenti di dati con la memoria Evoluzione: Migliorare l implementazione & i compilatori Semplificare il progetto Arch. Elab. - S. Orlando 29 Stile linguaggio ad alto livello Supporto diretto di linguaggi ad alto livello Esempio di processori: Burroughs 5000: Algol Diverse macchine Lisp Vantaggi: Facile da programmare Senza compilatore Potrebbe essere veloce? Svantaggi: HW complicato Economicamente non ammissibile Costoso, poca domanda Evoluzione: Progetti sperimentali abortiti Arch. Elab. - S. Orlando 30
Stile Registro-Registro (Load/Store) Tutti gli operandi = registri o costanti Istruzioni separate di load & store Esempio per A=B+C: load r1, B load r2, C add r0, r1, r2 store A, r0 Esempio di processori: CDC 6600 Molto/Troppo innovativo. MIPS, SPARC Vantaggi: Più semplice da progettare/implementare Di solito molto veloce Più facile ottimizzare l HW Ciclo di clock più corto Svantaggi: Grandi dimensioni del codice Evoluzione: Arch. Elab. - S. Orlando 31 CISC vs RISC CISC: Molteplici modi di indirizzamento Solitamente stili register-memory o memory-memory 2-, 3-, o più operandi Pochi registri Molte istruzioni (set complesso di istr.) Tipicamente istruzioni a formato variabile Più complessi da implementare RISC: Solo alcuni modi di indizzamento Solitamente, stile registerregister 2- o 3-operandi Molti registri Poche istruzioni (set ridotto di istr.) Tipicamente istruzioni con dimensione 1 word Più facile da implementare Arch. Elab. - S. Orlando 32