Calcolatori Elettronici

Documenti analoghi
Laboratorio di Architettura degli Elaboratori

Lecture 2: Prime Istruzioni

Il linguaggio assembly

Lezione 15 Il Set di Istruzioni (1)

Architettura di un calcolatore: Introduzione parte 2

Richiami sull architettura del processore MIPS a 32 bit

Linguaggio Assembly e linguaggio macchina

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

Il linguaggio del calcolatore: linguaggio macchina e linguaggio assembly

Richiami sull architettura del processore MIPS a 32 bit

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

Istruzioni assembler Istruzione N Registri

Il Linguaggio Assembly: Gestione della memoria e controllo

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

Linguaggio Assembly e linguaggio macchina

Calcolatori Elettronici A a.a. 2008/2009

L insieme delle istruzioni

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

Linguaggio Assembly e linguaggio macchina

Architettura degli Elaboratori

L insieme delle istruzioni (6)

Università degli Studi di Cassino

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

Corso di Calcolatori Elettronici

Architettura hardware

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

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

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

Linguaggio macchina: utilizzo di costanti, metodi di indirizzamento

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

Calcolatori Elettronici e Sistemi Operativi

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

Macchina di Riferimento: argomenti

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

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

ISA e linguaggio macchina

Elementi di informatica

Il linguaggio macchina

Scopo della lezione. Analizzare i tipi di macchine Indirizzamento e memorie Tipi di dato

Architettura hardware

ISA (Instruction Set Architecture) della CPU MIPS

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

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

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

Lezione4: MIPS e Istruzioni (1 Parte)

L'architettura del processore MIPS

Sottosistemi ed Architetture Memorie

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

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

Il processore. Istituzionii di Informatica -- Rossano Gaeta

Elaborazione dell informazione

Il linguaggio macchina

Modi di indirizzamento

Architettura di un elaboratore. Il modello di von Neumann

Esercitazione 1 Codifica e Rappresentazione dell Informazione Istruzioni Assembly MIPS

Architettura dei calcolatori e sistemi operativi. Il processore Capitolo 4 P&H

Programmazione A.A Architettura dei Calcolatori. ( Lezione V ) Componenti hardware e loro schema funzionale

Istruzioni di trasferimento dati

HARDWARE 1.4a: (Processore)

Esercitazione di Calcolatori Elettronici Ing. Battista Biggio. Corso di Laurea in Ingegneria Elettronica. Capitolo 5 Linguaggio Assembly

Calcolatori Elettronici

G L O S S A R I O. Fondamenti di Informatica I - Università degli Studi di Trento Dott. Roberti Pierluigi

Il processore: unità di elaborazione

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

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

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

Motorola 68000: primi programmi assembly

Linguaggi di Programmazione

Architettura di un calcolatore

Famiglia dei processori INTEL

I formati delle istruzioni

Laboratorio di Architettura lezione 5. Massimo Marchiori W3C/MIT/UNIVE

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

DAGLI ALGORITMI AI LINGUAGGI. Linguaggi di Programmazione

Università degli Studi di Cassino

Il sistema di elaborazione

LINGUAGGIO MACCHINA e ASSEMBLER. Una CPU MINIMA Il linguaggio macchina di MINIMA Il linguaggio Assembler per MINIMA

Sommario FONDAMENTI DI INFORMATICA. Architettura di Von Neumann. Algoritmi e programmi ESERCITAZIONE PYTHON ARCHITETTURA DEI CALCOLATORI

Corso di Informatica

Architettura di Von Neumann. Architettura di Von Neumann. Architettura di Von Neumann INFORMATICA PER LE DISCIPLINE UMANISTICHE 2 (13042)

Le procedure. L insieme delle istruzioni (4) Prima della chiamata di una procedura. Le procedure (2) Architetture dei Calcolatori (lettere A-I)

Un ripasso di aritmetica: Conversione dalla base 10 alla base 2

La macchina programmata Instruction Set Architecture (1)

Richiami: v[i] e &v[i] Organizzazione della memoria. Organizzazione della memoria. Esercitazione di Calcolatori Elettronici Ing. Gian Luca Marcialis

Architettura degli Elaboratori

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

Linguaggio macchina. 3 tipi di istruzioni macchina. Istruzioni per trasferimento dati. Istruzioni logico/aritmetiche

Agent and Object Technology Lab Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma. Fondamenti di Informatica.

Architettura degli Elaboratori

Architettura degli Elaboratori

Von Neumann Bottleneck

Architettura dei calcolatori

Sistemi di Elaborazione delle Informazioni

Il Processore: l unità di controllo

Costanti e Variabili

Architettura degli Elaboratori B Introduzione al corso

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

Architettura dei calcolatori

Linguaggi, compilatori e interpreti

U"lizzo della memoria (Indirizzamento, le2ura, scri2ura) Dire8ve Assembler in SPIM

Transcript:

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 ad alto livello (es., C) Compilatore Linguaggio assemblativo Assemblatore Linguaggio macchina Interpretazione della macchina Segnali di controllo temp = v[k]; v[k] = v[k+1]; v[k+1] = temp; lw $to, 0($2) lw $t1, 4($2) sw $t1, 0($2) sw $t0, 4($2) 0000 1001 1100 0110 1010 1111 0101 1000 1010 1111 0101 1000 0000 1001 1100 0110 1100 0110 1010 1111 0101 1000 0000 1001 0101 1000 0000 1001 1100 0110 1010 1111 Calcolatori Elettronici - MIPS(1) - Slide 2 L. Tarantino - a.a. 2004/2005 1

Il livello del linguaggio assemblativo è un astrazione del livello sottostante (il linguaggio macchina) operazioni ed operandi (ad es., indirizzi di memoria) sono rappresentati in modo simbolico dato il legame col linguaggio macchina, macchine diverse presentano linguaggi assemblativi diversi non esistono standard, a differenza dei linguaggi ad alto livello esistono però modelli rappresentativi di classi di macchine della stessa tipologia l architettura Intel non è adatta a fungere da modello (troppo complessa perchè ottenuta da continui arricchimenti di processori precedenti) Calcolatori Elettronici - MIPS(1) - Slide 3 L. Tarantino - a.a. 2004/2005 RISC vs CISC CISC : Complex Instruction Set Computer architettura tradizionale RISC : Reduced Instruction Set Computer architettura nata alla fine degli anni 70, adottata dalle workstation degli anni 80 e 90 Architettura di riferimento: Microprocessore MIPS set di istruzioni facili da capire rappresentativo di macchine reali RISC (ad es., poche differenze con PowerPC) Calcolatori Elettronici - MIPS(1) - Slide 4 L. Tarantino - a.a. 2004/2005 2

Nel linguaggio C Operatori aritmetici : +, -, *, /, % (mod) Operandi: Variabili: a, b, c Costanti: 0, 1000, -17, 15 Le variabili devono essere dichiarate e devono avere un tipo int fahr, celsius; int a, b, c, d, e; Istruzione di assegnamento: variabile = espressione Esempi: a = b + c; a = b + c + d - e; celsius = 5 * (fahr - 32) / 9; Calcolatori Elettronici - MIPS(1) - Slide 5 L. Tarantino - a.a. 2004/2005 Istruzioni aritmetiche - sintassi In C a = b + c In MIPS add a, b, c ancora da raffinare Sintassi rigida: 1 operatore e 3 variabili operatore indicato per nome tre operandi: il primo è la destinazione del risultato il secondo e il terzo sono i dati da elaborare Semplicità e regolarità mantengono l hardware semplice e più facilmente ottimizzabile Calcolatori Elettronici - MIPS(1) - Slide 6 L. Tarantino - a.a. 2004/2005 3

Espressioni In C a = b + c + d - e; In MIPS serve una sequenza di istruzioni aritmetiche add a, b, c add a, a, d sub a, a, e # qui a vale b + c # qui a vale b + c + d # qui a vale b + c + d - e dopo il # inizia un commento Nota ogni linea di codice contiene esattamente un istruzione il commento termina con la fine della linea Calcolatori Elettronici - MIPS(1) - Slide 7 L. Tarantino - a.a. 2004/2005 Esercizio Tradurre in MIPS ( compilare a mano ) le seguenti istruzioni C: a = b + c - d; Soluzione add a, b, c sub a, a, d # qui a vale b + c # qui a vale b + c - d Calcolatori Elettronici - MIPS(1) - Slide 8 L. Tarantino - a.a. 2004/2005 4

Uso delle variabili temporanee (1) Compilare a mano la seguente istruzione C f = (g + h) - (i + j); Il compilatore crea variabili temporanee per i risultati intermedi Partiamo con la somma di g e h add t0,g,h # t0 contiene g + h Ora sommiamo i e j add t1,i,j # t1 contiene i + j Calcoliamo la differenza sub f,t0,t1 # f = t0 - t1 =(g+h)-(i+h) Calcolatori Elettronici - MIPS(1) - Slide 9 L. Tarantino - a.a. 2004/2005 Uso delle variabili temporanee (2) Riassumendo f = (g + h) - (i + j); add t0,g,h add t1,i,j sub f,t0,t1 # t0 contiene g + h # t1 contiene i + j # f = t0 - t1 =(g+h)-(i+h) Alternativamente: add f,g,h add t1,i,j sub f,f,t1 # f = g + h # t1 = i + j # f = f - t1 =(g+h)-(i+h) Calcolatori Elettronici - MIPS(1) - Slide 10 L. Tarantino - a.a. 2004/2005 5

Istruzioni aritmetiche MIPS - gli OPERANDI Solo i 32 registri del banco ciò riduce il tempo di esecuzione delle istruzioni aritmetiche perchè il tempo di accesso al banco dei registri è minore del tempo di accesso alla memoria: più piccolo è più veloce Convenzioni per i nomi dei registri $s0, $s1, per i registri che correspondono a variabili C $t0, $t1, per i registri che correspondono a variabili temporanee Nota le variabili C devono essere dichiarate, i registri sono prefissati e non devono essere dichiarati Calcolatori Elettronici - MIPS(1) - Slide 11 L. Tarantino - a.a. 2004/2005 Uso dei registri Compilare a mano la seguente istruzione C f = (g + h) - (i + j); fissiamo una corrispondenza Var Registro f $s0 g $s1 h $s2 i $s3 j $s4 add $t0,$s1,$s2 add $t1,$s3,$s4 # $t0 = g + h # $t1 = i + j sub $s0,$t0,$t1 # $s0 = $t0 - $t1 Calcolatori Elettronici - MIPS(1) - Slide 12 L. Tarantino - a.a. 2004/2005 6

Strutture di dati (ad es., array) Il banco è troppo piccolo per contenerle, quindi: devono risiedere in memoria Le istruzioni di ALU accettano solo i registri come operandi, quindi le singole componenti della struttura devono essere trasferite nei registri quando sono oggetto di elaborazioni servono istruzioni di trasferimento dati tra registri e memoria Calcolatori Elettronici - MIPS(1) - Slide 14 L. Tarantino - a.a. 2004/2005 Ripasso sulla memoria Può essere vista come un array monodimensionale di byte Al concetto di indice corrisponde il concetto di indirizzo in memoria E indirizzabile al byte se l indirizzo individua un byte (1B = 8 bit) La parola è formata da 32 bit (4 byte) L indirizzo della parola è l indirizzo di uno dei suoi byte (MSB se Big Endian, LSB se Little Endian) 8 bit 0 4 8 12... 32 bit Calcolatori Elettronici - MIPS(1) - Slide 15 L. Tarantino - a.a. 2004/2005... 0 1 2 3 4 5 6 7

Nel MIPS Memoria allineata (le parole iniziano sempre ad indirizzi multipli di 4) Indirizzamento di tipo Big Endian Indirizzi da 32 bit Posso indirizzare 2 32 byte diversi 1 parola = 4 byte 2 30 parole di memoria Allineata Non Allineata 0 1 2 3 Big Endian MSB (most significant byte) 0 1 2 3 Calcolatori Elettronici - MIPS(1) - Slide 16 L. Tarantino - a.a. 2004/2005 Accessi in memoria (1) Lettura la CPU fornisce un indirizzo i la memoria restituisce il contenuto della parola di indirizzo i (da memorizzare in un registro) i... Banco $sx Mem[i] oppure $tx Mem[i] Memoria CPU Calcolatori Elettronici - MIPS(1) - Slide 17 L. Tarantino - a.a. 2004/2005 8

Accessi in memoria (2) Scrittura la CPU fornisce un indirizzo i e un dato (prelevato da un registro) la memoria scrive il dato nella parola di indirizzo i i... Banco Mem[i] $sx oppure Mem[i] $tx Memoria CPU Calcolatori Elettronici - MIPS(1) - Slide 18 L. Tarantino - a.a. 2004/2005 Nel linguaggio assemblativo LOAD indica il trasferimento memoria CPU STORE indica il trasferimento CPU memoria Codici operativi nel MIPS lw (load word) sw (store word) il codice operativo contiene un informazione sulla quantità di informazione coinvolta nel trasferimento Calcolatori Elettronici - MIPS(1) - Slide 19 L. Tarantino - a.a. 2004/2005 9

lw Sintassi : codice operativo registro da caricare indirizzo della parola di memoria Esempio caricare (load) in $t0 una componente del vettore A l indirizzo di partenza del vettore è memorizzato in $s3 lw $t0, 8($s3) registro con la base del vettore registro destinazione spiazzamento (x l indice!!) Calcolatori Elettronici - MIPS(1) - Slide 20 L. Tarantino - a.a. 2004/2005 sw Sintassi : codice operativo registro il cui contenuto va spostato in memoria indirizzo della parola di memoria Esempio memorizzare il contenuto di $t0 in una componente del vettore A l indirizzo di partenza del vettore è memorizzato in $s3 sw $t0, 8($s3) registro con la base del vettore registro sorgente spiazzamento (x l indice!!) Calcolatori Elettronici - MIPS(1) - Slide 21 L. Tarantino - a.a. 2004/2005 10

Indirizzo in memoria devo determinare l indirizzo della parola implicata nel trasferimento lo spiazzamento dice quanto dista la parola in questione dalla base del vettore, cioè specifica di quanto mi devo spostare dalla base NOTA BENE se una componente del vettore occupa una parola, per spostarmi da una componente alla successiva mi devo spostare di 4 byte 0 4 8 12... 32 bit Vettore in memoria Base = 4 Componente A[0] 4 A[1] 8 A[2] 12 indirizzo di A[i] = indirizzo di A[i-1] + 4 Indirizzo indirizzo di A[i] = base + 4 * indice Calcolatori Elettronici - MIPS(1) - Slide 22 L. Tarantino - a.a. 2004/2005 Usando la sintassi delle lw e sw se la base è in $s3 indirizzo di A[i] = base + 4 * indice Componente Indirizzo 4 * indice In MIPS A[0] 4 0*4 = 0 0($s3) A[1] 8 1*4 = 4 4($s3) A[2] 12 2*4 = 8 8($s3) per trovare l indirizzo sommo lo spiazzamento al registro di base Calcolatori Elettronici - MIPS(1) - Slide 23 L. Tarantino - a.a. 2004/2005 11

Esempio Compilare la seguente istruzione C g = h + A[8]; Var Registro fissiamo una g $s1 corrispondenza h $s2 base A $s3 Trasferiamo A[8] in un registro temporaneo lw $t0,32($s3) # NB: spiazzamento = 4 * indice Ora sommiamogli h e poniamo la somma in g add $s1, $s2, $t0 # $s1 = h + A[8] Calcolatori Elettronici - MIPS(1) - Slide 24 L. Tarantino - a.a. 2004/2005 Esempio (1) Compilare la seguente istruzione C B[8] = h + A[4]; Var Registro fissiamo una h $s2 corrispondenza base A $s3 base B $s4 Trasferiamo A[4] in un registro temporaneo lw $t0,16($s3) # NB: spiazzamento = 4 * indice Ora sommiamogli h e poniamo la somma in un registro temporaneo add $t1, $t0, $s2 # $t1 = A[4] + h Ora trasferiamo il risultato in B[8] sw $t1, 32($s4) # spiazzamento = 4 * indice Calcolatori Elettronici - MIPS(1) - Slide 26 L. Tarantino - a.a. 2004/2005 12

Esempio (2) Ricapitolando B[8] = h + A[4]; lw $t0,16($s3) # spiazzamento = 4 * indice add $t1, $t0, $s2 # $t1 = A[4] + h sw $t1, 32($s4) # spiazzamento = 4 * indice Calcolatori Elettronici - MIPS(1) - Slide 27 L. Tarantino - a.a. 2004/2005 Trattamento degli indici Che succede quando l indice è una variabile? g = h + A[i]; Var Registro g $s1 h $s2 base A $s3 i $s4 lw $t0,$s4($s3) NO!!! la sintassi non lo prevede Lo spiazzamento deve essere sempre una costante da sommare alla base Trucco : lw $t0,0($t1) in $t1 calcolo l indirizzo di A[i] e poi gli sommo 0 Calcolatori Elettronici - MIPS(1) - Slide 29 L. Tarantino - a.a. 2004/2005 13

Esempio (1) in $t1 calcolo l indirizzo di A[i] e poi gli sommo 0 g = h + A[i]; indirizzo di A[i] = base + 4 * indice Per calcolare la moltiplicazione uso la somma: i + i = 2i 2i + 2i = 4i Uso il registro temporaneo $t1 add $t1,$s4,$s4 # $t1 = 2*i add $t1,$t1,$t1 # ora $t1 = 4*i Ora gli sommo la base di A add $t1,$t1,$s3 # $t1=indirizzo di A[i] (4*i+$s3) Ora carico A[i] nel registro temporaneo $t0 lw $t0,0($t1) # $t0 = A[i] Infine gli sommo h e metto il risultato in g add $s1,$s2,$t0 # g = h + A[i] Calcolatori Elettronici - MIPS(1) - Slide 30 L. Tarantino - a.a. 2004/2005 Esempio (2) g = h + A[i]; add $t1,$s4,$s4 # qui $t1 = 2*i add $t1,$t1,$t1 # ora $t1 = 4*i add $t1,$t1,$s3 # $t1=indirizzo di A[i] = 4*i+$s3 lw $t0,0($t1) # $t0 = A[i] add $s1,$s2,$t0 # g = h + A[i] Calcolatori Elettronici - MIPS(1) - Slide 31 L. Tarantino - a.a. 2004/2005 14

Il trattamento delle costanti Nelle espressioni C possono apparire dei valori costanti i = i + 10; Prima soluzione Tenere le costanti in memoria e prelevarle quando serve lw $t0, 0($s0) # carica 10 in $t0 add $s3,$s3,$t0 # i = i + 10 $s0 contiene l indirizzo della parola dove c è 10 l indirizzo viene sempre calcolato come base + spiazzamento se l indirizzo della parola di interesse è in un registro, lo considero come base ed assegno uno spiazzamento nullo Calcolatori Elettronici - MIPS(1) - Slide 33 L. Tarantino - a.a. 2004/2005 Operandi immediati Seconda soluzione (più efficiente) Prevedere delle istruzioni che presentino valori costanti ( immediati ) addi $s3,$s3,10 # i = i + 10 la "i " del codice operativo indica la presenza dell operando immediato Vantaggi Non c è bisogno di accedere alla memoria Una istruzione invece che due Calcolatori Elettronici - MIPS(1) - Slide 34 L. Tarantino - a.a. 2004/2005 15

Trattamento della costante zero Uso molto frequente Uno dei 32 registri del banco contiene sempre zero Questo registro viene indicato con $zero Lo zero è utile anche per trasferire dati da un registro all altro: add $s0, $s1, $zero # $s0 = $s1 + 0 ($s0 $s1) Calcolatori Elettronici - MIPS(1) - Slide 35 L. Tarantino - a.a. 2004/2005 16