Lecture 2: Prime Istruzioni
|
|
|
- Alberta De Marco
- 9 anni fa
- Просмотров:
Транскрипт
1 [ 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
2 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
3 Linguaggio Macchina -> Assembly 5/16 Assembly: look and feel 6/16 3
4 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 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
5 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 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
6 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
7 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
8 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
9 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
10 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
11 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
12 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
13 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
14 (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
15 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 byte 4 byte 3 byte 2 byte 1 byte 0 28/16 14
16 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 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
17 Little Endian e Big Endian Come viene rappresentata una word (32 bit) in 4 byte di memoria? Esistono due schemi: Little Endian: memorizza prima la "little end" (ovvero I bit meno significativi) della word Cioe, Big Endian: comincia a memorizzare la "big end" (ovvero i bit più significativi) della word Cioe, 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
18 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
19 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
Laboratorio di Architettura degli Elaboratori LabArch 2006 Secondo Quadimestre, a.a Docente: H. Muccini
[http://www.di.univaq.it/muccini/labarch] Laboratorio di Architettura degli Elaboratori LabArch 2006 Secondo Quadimestre, a.a. 2005-2006 Docente: H. Muccini Lecture 2: Prime Istruzioni -Concetti Fondamentali
Laboratorio di Architettura degli Elaboratori
Laboratorio di Architettura degli Elaboratori Dott. Massimo Tivoli Set di istruzioni del MIPS32: istruzioni aritmetiche e di trasferimento Istruzioni (Alcune) Categorie di istruzioni in MIPS Istruzioni
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
Calcolatori Elettronici
Calcolatori Elettronici Il linguaggio assemblativo MIPS (1) Istruzioni di ALU: operazioni ed operandi Trasferimenti tra memoria e CPU Vettori (1) Le costanti Livelli di astrazione s o f t w a r e H W Linguaggio
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
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
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
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
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
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
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
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
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
ISA (Instruction Set Architecture) della CPU MIPS
Architettura degli Elaboratori Lezione 20 ISA (Instruction Set Architecture) della CPU MIPS Prof. Federico Pedersini Dipartimento di Informatica Uniersità degli Studi di Milano L16-20 1 Linguaggio macchina
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
Lezione 20. Assembly MIPS: Il set istruzioni, strutture di controllo in Assembly
Architettura degli Elaboratori Lezione 20 Assembly MIPS: Il set istruzioni, strutture di controllo in Assembly Prof. F. Pedersini Dipartimento di Scienze dell Informazione Università degli Studi di Milano
Lezione 15 Il Set di Istruzioni (1)
Lezione 15 Il Set di Istruzioni (1) Vittorio Scarano Architettura Corso di Laurea in Informatica Università degli Studi di Salerno Un quadro della situazione Input/Output Sistema di Interconnessione Registri
Istruzioni di trasferimento dati
Istruzioni di trasferimento dati Leggere dalla memoria su registro: lw (load word) Scrivere da registro alla memoria: sw (store word) Esempio: Codice C: A[8] += h A è un array di numeri interi Codice Assembler:
Le procedure ricorsive Come eseguire un programma. Architettura degli Elaboratori e delle Reti, Turno I
Le procedure ricorsive Come eseguire un programma Architettura degli Elaboratori e delle Reti, Turno I Alberto Borghese Università degli Studi di Milano Dipartimento di Scienze dell Informazione email:
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
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
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
Lezione 20. Assembly MIPS: Il set istruzioni, strutture di controllo in Assembly
Architettura degli Elaboratori Lezione 20 Assembly MIPS: Il set istruzioni, strutture di controllo in Assembly Prof. F. Pedersini Dipartimento di Scienze dell Informazione Università degli Studi di Milano
L'architettura del processore MIPS
L'architettura del processore MIPS Piano della lezione Ripasso di formati istruzione e registri MIPS Passi di esecuzione delle istruzioni: Formato R (istruzioni aritmetico-logiche) Istruzioni di caricamento
Architettura del calcolatore (Seconda parte)
Architettura del calcolatore (Seconda parte) Ingegneria Meccanica e dei Materiali Università degli Studi di Brescia Prof. Massimiliano Giacomin LINGUAGGIO E ORGANIZZAZIONE DEL CALCOLATORE Linguaggio assembly
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
Architettura degli Elaboratori B Introduzione al corso
Componenti di un calcolatore convenzionale Architettura degli Elaboratori B Introduzione al corso Salvatore Orlando http://www.dsi.unive.it/~arcb Studieremo il progetto e le prestazioni delle varie componenti
Lezione 12. Assembly II. Set di Istruzioni MIPS Strutture di controllo in Assembly
Architettura degli Elaboratori e delle Reti Lezione 12 Assembly II Set di Istruzioni MIPS Strutture di controllo in Assembly Proff. A. Borghese, F. Pedersini Dipartimento di Scienze dell Informazione Università
Richiami sull architettura del processore MIPS a 32 bit
Caratteristiche principali dell architettura del processore MIPS Richiami sull architettura del processore MIPS a 32 bit Architetture Avanzate dei Calcolatori Valeria Cardellini E un architettura RISC
Architettura di un calcolatore: Introduzione parte 2
Corso di Calcolatori Elettronici I Architettura di un calcolatore: Introduzione parte 2 Prof. Roberto Canonico Università degli Studi di Napoli Federico II Dipartimento di Ingegneria Elettrica e delle
Il modello di von Neumann
1 Organizzazione di (quasi) tutti gli elaboratori moderni: personal computer, workstation, portatili, smartphone,... CPU memoria Control Unit I/O ALU 2 Il cuore è la CPU (Control Processing Unit): esegue
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
Istruzioni di controllo del flusso
Istruzioni di controllo del flusso Il flusso di esecuzione è normalmente sequenziale Le istruzioni di controllo cambiano la prossima istruzione da eseguire Istruzioni di salto condizionato branch if equal
