Architettura degli Elaboratori B Introduzione al corso

Documenti analoghi
Architettura degli Elaboratori B Introduzione al corso

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

Architettura degli Elaboratori

Architettura degli Elaboratori

Architettura degli Elaboratori Modulo 2

Architettura degli Elaboratori Modulo 2

Istruzioni e linguaggio macchina

Rappresentazione dell informazione

Fetch Decode Execute Program Counter controllare esegue prossima

Architettura degli Elaboratori Modulo 2

Riassunto. Riassunto. Ciclo fetch&execute. Concetto di programma memorizzato. Istruzioni aritmetiche add, sub, mult, div

Architettura degli Elaboratori Modulo 2

Istruzioni e linguaggio macchina

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

Istruzioni di trasferimento dati

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

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

Architettura degli Elaboratori Modulo 2

Lezione 18 Il Set di Istruzioni (4)

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

Architettura degli Elaboratori B Introduzione al corso

Architettura degli Elaboratori B. Introduzione al corso. Componenti di un calcolatore convenzionale. (ciclo singolo) Progetto CPU. Contenuti del corso

Lezione 17 Il Set di Istruzioni (3)

Un quadro della situazione. Lezione 15 Il Set di Istruzioni (2) Le operazioni e gli operandi. Dove siamo nel corso. Cosa abbiamo fatto

Richiami sull architettura del processore MIPS a 32 bit

Un quadro della situazione. Lezione 15 Il Set di Istruzioni (3) Dove siamo nel corso. Organizzazione della lezione. Cosa abbiamo fatto

Modifiche di orario. Lezione 19 Il Set di Istruzioni (6) Dove siamo nel corso. Un quadro della situazione

L unità di controllo di CPU a singolo ciclo

Linguaggio macchina. Architettura degli Elaboratori e delle Reti. Il linguaggio macchina. Lezione 16. Proff. A. Borghese, F.

Richiami sull architettura del processore MIPS a 32 bit

Architettura del set di istruzioni (ISA)

Il linguaggio macchina

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

Architettura dei calcolatori e sistemi operativi. Architettura MIPS e set istruzioni Capitolo 2 P&H

Progetto CPU (ciclo singolo)

Calcolatore: sottosistemi

Lezione 20. della CPU MIPS. Prof. Federico Pedersini Dipartimento di Informatica Università degli Studi di Milano

Laboratorio di Architettura degli Elaboratori LabArch 2006 Secondo Quadimestre, a.a Docente: H. Muccini

Lezione 20. della CPU MIPS. Prof. Federico Pedersini Dipartimento di Informatica Università degli Studi di Milano

CPU a singolo ciclo. Lezione 18. Sommario. Architettura degli Elaboratori e delle Reti

Progetto CPU (ciclo singolo) Salvatore Orlando

Calcolatori Elettronici A a.a. 2008/2009

Lezione 20. Assembly MIPS: Il set istruzioni, strutture di controllo in Assembly

Informazioni varie. Lezione 18 Il Set di Istruzioni (5) Dove siamo nel corso. Un quadro della situazione

Il linguaggio macchina

Lezione 20. Assembly MIPS: Il set istruzioni, strutture di controllo in Assembly

Il linguaggio del calcolatore: linguaggio macchina e linguaggio assembly

Lezione 12. Assembly II. Set di Istruzioni MIPS Strutture di controllo in Assembly

Linguaggio Assembly e linguaggio macchina

Linguaggio Assembly e linguaggio macchina

Un quadro della situazione. Lezione 14 Il Set di Istruzioni (2) Dove siamo nel corso. I principi di progetto visti finora. Cosa abbiamo fatto

Linguaggio macchina e register file

Istruzioni di controllo del flusso

Processore: Datapath & Control. Progetto CPU (ciclo singolo) Rivediamo i formati delle istruzioni. ISA di un MIPS-lite

Linguaggio Assembly e linguaggio macchina

ISA (Instruction Set Architecture) della CPU MIPS

ISA e linguaggio assembler

ISA (Instruction Set Architecture) della CPU MIPS32

Architettura di un calcolatore: introduzione. Calcolatore: sottosistemi

L unità di controllo di CPU a singolo ciclo

Introduzione all'architettura dei Calcolatori. Maurizio Palesi

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

Ricevimento inviate una e mail a con oggetto [Tutorato Arch] o [Tutorato Prog1]

slt $t1,$t2,$t3 if ($t2<$t3) $t1=1; Confronto tra registri slti $t1,$t2,100 if ($t2<100)$t1=1; Cfr. registro-costante

Architettura di un calcolatore: introduzione. Calcolatore: sottosistemi

ESERCITAZIONE Unità centrale di elaborazione Ciclo base di un istruzione Meccanismo di interruzione

Il Linguaggio Assembly: Controllo del flusso: istruzioni e costrutti

Progettazione dell unità di elaborazioni dati e prestazioni. Il processore: unità di elaborazione. I passi per progettare un processore

Università degli Studi di Cassino

CPU a singolo ciclo. Lezione 18. Sommario. Architettura degli Elaboratori e delle Reti. Proff. A. Borghese, F. Pedersini

Il processore: unità di elaborazione

Il Linguaggio Assembly

Architettura degli elaboratori - II Introduzione

Progetto CPU a singolo ciclo

Lecture 2: Prime Istruzioni

Architettura di un calcolatore: introduzione. Calcolatore: sottosistemi

Corso di Calcolatori Elettronici MIPS: Istruzioni di confronto Istruzioni di controllo Formato delle istruzioni in L.M.

ARCHITETTURA DI UN ELABORATORE! Ispirata al modello della Macchina di Von Neumann (Princeton, Institute for Advanced Study, anni 40).!

Linguaggio macchina: utilizzo di costanti, metodi di indirizzamento

Funzionalità di un calcolatore. Il calcolatore: modello architetturale. Lo schema di riferimento. L hardware dei sistemi di elaborazione (prima parte)

Architettura degli elaboratori CPU a ciclo singolo

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

Architettura e funzionamento del calcolatore

Funzionalità di un calcolatore. Il calcolatore: modello architetturale. Lo schema di riferimento. L hardware dei sistemi di elaborazione (prima parte)

Autilia Vitiello Dip. di Informatica ed Applicazioni Stecca 7, 2 piano, stanza 12

Istruzioni assembler Istruzione N Registri

Università degli Studi di Cassino

La struttura delle istruzioni elementari: il linguaggio Macchina. Sommario

Il linguaggio Assembly. Architettura degli Elaboratori e delle Reti Turno I

Architettura dell elaboratore

Architettura dell elaboratore

La CPU a singolo ciclo

Il linguaggio del calcolatore: linguaggio macchina e linguaggio assembly

Architettura di un calcolatore: introduzione

Elementi di informatica

L unità di controllo di CPU a singolo ciclo. Sommario

Il Linguaggio Assembly: Gestione della memoria e controllo

Transcript:

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