Lecture 2: Prime Istruzioni



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

Laboratorio di Architettura degli Elaboratori

Il linguaggio del calcolatore: linguaggio macchina e linguaggio assembly

Calcolatori Elettronici

Istruzioni e linguaggio macchina

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

MIPS & SPIM. Modulo del Corso di Architettura degli Elaboratori. Nicola Paoletti. Università di Camerino Scuola di Scienze e Tecnologie

Architettura hardware

Architettura degli Elaboratori

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

L Instruction Set Architecture ed il Linguaggio Assembly

Linguaggio Assembly e linguaggio macchina

L Instruction Set Architecture ed il Linguaggio Assembly

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

Linguaggio Assembly e linguaggio macchina

ISA e linguaggio macchina

ISA e linguaggio assembler

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

ISA e linguaggio assembler

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

Architettura degli Elaboratori

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

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

Istruzioni e linguaggio macchina

Il linguaggio del calcolatore: linguaggio macchina e linguaggio assembly

Architettura degli. Assemblatore Nomenclatura MARS. Dott. Franco Liberati

Linguaggio Assembly e linguaggio macchina

Fetch Decode Execute Program Counter controllare esegue prossima

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

Memoria: lettura, scrittura e indirizzamento

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

Rappresentazione dell informazione

Architettura hardware

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

ISA (Instruction Set Architecture) della CPU MIPS32

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

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

Linguaggi e moduli. Dott. Franco Liberati

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

ISA (Instruction Set Architecture) della CPU MIPS

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

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

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

Il Linguaggio Assembly del Sistema MIPS

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

Calcolatori Elettronici A a.a. 2008/2009

Architettura di un calcolatore: introduzione. Calcolatore: sottosistemi

Università degli Studi di Roma La Sapienza

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

Lezione 15 Il Set di Istruzioni (1)

Istruzioni di trasferimento dati

Calcolatore: sottosistemi

Le procedure ricorsive Come eseguire un programma. Architettura degli Elaboratori e delle Reti, Turno I

Architettura di un calcolatore: introduzione. Calcolatore: sottosistemi

Il Linguaggio Assembly: Gestione della memoria e controllo

Architettura di un calcolatore: introduzione. Calcolatore: sottosistemi

Parte 3. Linguaggio Macchina e Assembler

Fondamenti di Informatica A. A / 1 9

Architettura del processore e esecuzione delle istruzioni

Il linguaggio assembly

L insieme delle istruzioni (6)

Linguaggio macchina: utilizzo di costanti, metodi di indirizzamento

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

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

Il calcolatore. È un sistema complesso costituito da un numero elevato di componenti. è strutturato in forma gerarchica

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

Corso di Architettura (Prof. Scarano) 10/05/2002

L'architettura del processore MIPS

Corso di Architettura (Prof. Scarano) 09/04/2002

Architettura del calcolatore (Seconda parte)

Architettura di un calcolatore: introduzione

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

Architettura dei computer

ARCHITETTURE DEI CALCOLATORI (canale A-I) - Prima prova in itinere del 16/6/2003 Compito tipo A

Lezione 18 Il Set di Istruzioni (4)

Introduzione al linguaggio macchina

Architettura degli Elaboratori B Introduzione al corso

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

Architettura del set di istruzioni (ISA)

Architettura del calcolatore (Prima parte)

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

Architettura degli Elaboratori B Introduzione al corso

Indirizzamento, lettura e scrittura della memoria

Richiami sull architettura del processore MIPS a 32 bit

Architettura di un calcolatore: Introduzione parte 2

CPU. ALU e Registri della CPU. Elementi della CPU. CPU e programmazione (Parte 1) Central Processing Unit, processore

Il modello di von Neumann

Architettura di Von Neumann

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

La programmazione dei calcolatori. L insieme delle istruzioni. Vantaggi e svantaggi dell assembler. Benefici dei linguaggi ad alto livello

Algoritmi, Strutture Dati e Programmi. UD 2.c: Linguaggi a Basso Livello

Indirizzamento, lettura e scrittura della memoria

Algoritmi, Strutture Dati e Programmi LINGUAGGI DI PROGRAMMAZIONE A. UD 2.c: Linguaggi a Basso Livello BASSO LIVELLO I LIVELLI DEI LINGUAGGI

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

La struttura delle istruzioni elementari: il linguaggio Macchina. Sommario

L insieme delle istruzioni

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

Istruzioni di controllo del flusso

Transcript:

[http://www.di.univaq.it/muccini/labarch] Modulo di Laboratorio di Architettura degli Elaboratori Corso di Architettura degli Elaboratori con Laboratorio Docente: H. Muccini Lecture 2: Prime Istruzioni -Concetti Fondamentali -Concetti Iniziali -Add e Load Software Engineering and Architecture Group Henry Muccini Concetti fondamentali Linguaggio macchina Il linguaggio basato su valori numerici utilizzato dai computer per memorizzare ed eseguire programmi Linguaggio assembly Rappresentazione simbolica del linguaggio macchina Utilizza simboli invece di numeri per rappresentare istruzioni, registri e dati. Linguaggi di alto livello Linguaggio il più simile possibile a quello naturale Astrazione dai dettagli della macchina. 2/16 1

Linguaggio Assembly L idea: sollevare il programmatore dal dover lavorare direttamente con sequenze di bit: identificare ciascun comando in linguaggio macchina (codice operativo) con una parola chiave più facile da ricordare (codice mnemonico); indirizzare le locazioni di memoria ed i registri attraverso degli identificatori testuali, anziché attraverso i loro indirizzi binari. Programma in assembly = file di testo contenente una serie di comandi. 3/16 Linguaggio Macchina -> Assembly 4/16 2

Linguaggio Macchina -> Assembly 5/16 Assembly: look and feel 6/16 3

Linguaggio ad Alto livello ( C ) int main(int argc, char *argv[]) { int i; int sum=0; for (i=0; i <= 100; i++) sum = sum + i; printf( The sum from 0.. 100 is %d\n, sum); } 7/16 Linguaggio alto livello -> Assembly Int fatt (int n){ if (n<1) return (1); else return (n * fatt (n-1)); } sub $sp, $sp, 8 # alloco uno spazio nello stack sw $ra, 4($sp) sw $a0, 0($sp) slt $t0, $a0, 1 # se a0<1, $t0 diventa 1 beq $t0, $zero, Else # Controllo n < 1 add $v0, $zero, 1 add $sp, $sp, 8 # aggiorno stack jr $ra Else: sub $a0, $a0, 1 # calcolo n-1 jalfatt # chiamo il fattoriale lw $a0, 0($sp) # ripristino $a0 lw $ra, 4($sp) # ripristino $ra add $sp, $sp, 8 # aggiorno stack mul $v0, $a0, $v0 # setto il risultato n * fatt(n-1) jr $ra 8/16 4

Non c e un solo Assembly Linguaggio assembly dipende dall HW non esiste un unico linguaggio assembly. Ogni CPU o famiglia di CPU ha un suo proprio assembly, diverso dagli altri. Linguaggi assembly: ben diversi quelli per i processori Intel x86, per i Motorola 68000 e per i Dec Alpha un certo linguaggio assembly funziona solo per una famiglia di CPU 9/16 Vantaggi e Svantaggi Assembly Svantaggi L'assembly non ha alcun controllo sui tipi costringe il programmatore ad occuparsi di ogni singolo dettaglio Richiede un esteso lavoro di commento del codice minore portabilita 10/16 5

Vantaggi e Svantaggi Assembly Vantaggi: efficienza senza pari occupazione di memoria tempi controllo completo e assoluto sull'hardware (nel bene e nel male!!!) Scrivere (buon) codice in assembly è lento, difficile e quindi molto costoso, soprattutto in prospettiva (future modifiche) le parti più critiche (per motivi di velocità o di sicurezza) si scrivono in assembly. 11/16 RISC e CISC Due grandi gruppi ISA: RISC (Reduced Instruction Set Computer) operazioni semplici e veloci, tanti registri per memorizzare i risultati intermedi. CISC (Complex Instruction Set Computer). istruzioni più complesse Nel nostro corso: Architettura MIPS32 (MIPS R2000/R3000 computers) di tipo RISC 12/16 6

Assemblatore Uno strumento che traduce programmi scritti nel linguaggio assembly in linguaggio macchina. 13/16 Compilatore Uno strumento che traduce un programma scritto in un linguaggio ad alto livello in Assembly o file oggetto 14/16 7

Architettura degli Elaboratori MAR Memoria MBR Bus R1R2 Rn MEMORIA ALU CPU 15/16 Concetti Iniziali Instruction Set = Istruzioni = parole del linguaggio Set di istruzioni = vocabolario I linguaggi dei calcolatori sono simili Poiche le tecnologie Hw sono basate su stessi principi fondamentali I linguaggi dei calcolatori seguono delle regole Linguaggi che rendano semplice implementare l hardware, massimizzando prestazioni e minimizzando costi 16/16 8

Obiettivi Obiettivo di questo corso e presentare un linguaggio che segue tali indicazioni Descriveremo varie istruzioni del linguaggio Architettura usata: MIPS 17/16 Istruzioni (Alcune) Categorie di istruzioni in MIPS Istruzioni aritmetico/logiche Queste istruzioni effettuano operazioni aritmetico-logiche sui registri del processore Istruzioni Load and Store Queste istruzioni spostano dati fra la memoria e i registri generali del processore Istruzioni decisionali Queste istruzioni effettuano il confronto fra i valori contenuti nei registri 18/16 9

Istruzioni Aritmetiche ADD a, b, c # a = b + c SUB a, b, c # a = b -c TRE operandi OPERATORE operando1, operando2, operando3 NOTE: Ciascuna linea puo contenere solo una istruzione; # viene usato per commenti ADD a, b, c # Questa istruzione esegue la somma a=b+c 19/16 Istruzioni Aritmetiche Note: Tutte le istruzioni aritmetiche hanno esattamente tre operandi (numero fisso) per mantenere l Hw semplice PRINCIPIO DI PROGETTO 1: semplicita e regolarita sono strettamente correlate Ordine fissato (destinatario per primo) OPERATORE operando1, operando2, operando3 operando1 = operando2 OPERATORE operando3 20/16 10

h1 Esercizio Scrivere la seguente istruzione in assembler MIPS: a = (b+c) (d-f) + g add x, b, c sub y, d, f sub x, x, y add a, x, g Considerazioni 21/16 Registri Data una istruzione aritmetica: Operandi = Registri Variabili Registro: Variabili in un LP sono infinite I registri nell Hw sono finiti PRINCIPIO DI PROGETTO 2: Minori sono le dimensioni, maggiore e la velocita 22/16 11

Diapositiva 21 h1 ADD x, b, c SUB y, d, f SUB x, x, y ADD a, x, g Domanda: quante operazioni ci vogliono per sommare n numeri? (n-1) Henry Muccini; 14/04/2004

Architettura del processore MIPS di Stanford 23/16 Versione finale di ADD e SUB ADD $s1, $s2, $t0 SUB $s1, $s2, $t0 24/16 12

(parte della) Architettura del MIPS32 MAR 32 Registri, ognuno a 32 bit Memoria R1 R32 MBR R1R2 R32 MEMORIA 32 bit ALU CPU Bus 32 registri 25/16 Uso dei Registri Registri $s e $t Compilatore: Associa registri e variabili Parola (word) 32 bit Domanda: Abbiamo solo 32 registri come facciamo a gestire strutture dati complesse (es. vettori)??? Rivedi slide precedente 26/16 13

Istruzioni di Trasferimento LW $s1, 10($s2) # carica in $s1 il decimo valore del vettore LW = Load word SW $s1, 100($s2) SW = Store word NOTE e delucidazioni: Memoria vista come un VETTORE Le istruzioni aritmetiche richiedono che gli operandi siano memorizzati nei registri Istruzioni di Trasferimento Indirizzo di base + offset Memoria indirizzata a singolo byte 27/16 Attenzione La memoria e indirizzata al singolo byte mentre I registri sono indirizzati a 32 bit Vogliamo caricare la 6^ parola del vettore: A[6] Word 6 MEM byte 24 Cosa vuol dire?? Word 2 Word 1 8 6 7 5 byte 4 byte 3 byte 2 byte 1 byte 0 28/16 14

Attenzione Vogliamo caricare la 6^ parola del vettore: A[6] MEM LW $s1, 6( mem ) LW $s1, 24( mem ) Word 6 byte 24 Indirizzo di base + offset LW $s1, 24($s2) Big end e Little end Spilling dei registri Word 2 Word 1 8 6 7 5 byte 4 byte 3 byte 2 byte 1 byte 0 29/16 Organizzazione della memoria Global pointer Dati statici Static Data Text Codice del programma ( text ) 30/16 15

Little Endian e Big Endian Come viene rappresentata una word (32 bit) in 4 byte di memoria? 0111 1100 0101 1000 0001 0000 0000 1111 Esistono due schemi: Little Endian: memorizza prima la "little end" (ovvero I bit meno significativi) della word Cioe, 0000 1111 Big Endian: comincia a memorizzare la "big end" (ovvero i bit più significativi) della word Cioe, 0111 1100 l indirizzo di una parola corrisponde all indirizzo del byte piu significativo MIPS lavora in Big Endian Infatti, in LW $s1, 24( mem ), 24 e l ultimissima cella di memoria (la piu significativa) 31/16 Spilling In memoria si mettono le variabili meno usate Ricorda: gli operandi aritmetici sono registri, non celle di memoria tempo accesso ai registri e minore throughput migliore 1 ciclo di clock: lettura due registri, esecuzione operazione scrittura risultato 32/16 16

Esempio Scrivere in assembly la seguente assegnazione A[14] = b + A[6] con b $s1, off(a) $s0 lw $t0, 24($s0) add $t0, $s1, $t0 sw $t0, 56($s0) 33/16 Vettori con indici variabili Consideriamo $s1 $s3 a = b + A[i] $s4 Informalmente: $s2 Carica A[6] = lw $t0, 24($s0), con off(a) $s0 4*i + off (A) Formalmente: add $t1, $s4, $s4 add $t1, $t1, $t1 add $t1, $t1, $s3 lw $t0, 0($t1) add $s1, $s2, $t0 34/16 17

Esercizio Scrivere in assembly la seguente istruzione: A[4] = b + A[i] Offset A $s1 b $s2 i $s3 Scrivere in pseudo-c il seguente codice Assembly: add $t1, $s2, $s2 add $t1, $t1, $t1 add $t1, $t1, $s1 lw $t0, 0($t1) lw $t1, 16($s1) add $t1, $t1, $t0 sw $t1, 12($s1) 35/16 Esercizio Cominceremo la prossima lezione realizzando insieme (voi!) gli esercizi precedenti 36/16 18