Lezione 15 Il Set di Istruzioni (1)

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

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

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

L insieme delle istruzioni

Il linguaggio del calcolatore: linguaggio macchina e linguaggio assembly

Linguaggio Assembly e linguaggio macchina

Laboratorio di Architettura degli Elaboratori

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

Calcolatori Elettronici

Architettura degli Elaboratori

Traduzione e interpretazione

Linguaggio Assembly e linguaggio macchina

Linguaggio Assembly e linguaggio macchina

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

DAGLI ALGORITMI AI LINGUAGGI. Linguaggi di Programmazione

Linguaggi, compilatori e interpreti

L insieme delle istruzioni (6)

Calcolatori Elettronici Parte VIII: linguaggi assemblativi

Calcolatori Elettronici A a.a. 2008/2009

Linguaggi di Programmazione

Linguaggi di programmazione

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

Lecture 2: Prime Istruzioni

Linguaggio macchina: utilizzo di costanti, metodi di indirizzamento

Richiami sull architettura del processore MIPS a 32 bit

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

Il linguaggio assembly

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

Linguaggi e moduli. Dott. Franco Liberati

Esempio. Le istruzioni corrispondono a quelle di sopra, ma sono scritte in modo simbolico. E indipendente dalla machina

Architettura di un calcolatore: Introduzione parte 2

Istruzioni di trasferimento dati

Architettura degli Elaboratori

Architettura degli Elaboratori

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 degli Elaboratori

Esercizi sulla macchina assembler, strutturazione a livelli, spazio di indirizzamento

Linguaggi di alto livello, compilatori e interpreti

Laboratorio di Calcolo Linguaggi di programmazione

Istruzioni assembler Istruzione N Registri

ELABORAZIONE DELLE INFORMAZIONI (ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE)

Richiami sull architettura del processore MIPS a 32 bit

AXO - Architettura dei Calcolatori e Sistema Operativo. organizzazione strutturata dei calcolatori

I Linguaggi di Programmazione

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

Corso di Laurea in Ingegneria Elettronica

Linguaggi di alto livello, compilatori e interpreti

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

Primi passi col linguaggio C

Lezione 22 La Memoria Interna (1)

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

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

Lezione 6 Introduzione al C++ Mauro Piccolo

Architettura di Von Neumann. Memoria centrale. Memoria centrale (o RAM)

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

Esercitazione di Calcolatori Elettronici Prof. Gian Luca Marcialis. Corso di Laurea in Ingegneria Elettronica

IL PRIMO PROGRAMMA IN C

CALCOLATORI ELETTRONICI

Linguaggi di programmazione. Parte VII. Traduzione e collegamento. Interpretazione. Traduzione

Linguaggi di Programmazione

Esercizio 1.A Aritmetica binaria (nel presentare le soluzione mostrare, almeno nei passaggi piú significativi, i calcoli eseguiti) (3 punti)

Esercitazione 1 Codifica e Rappresentazione dell Informazione Istruzioni Assembly MIPS

Architettura hardware

Università degli Studi di Roma La Sapienza

Introduzione al Linguaggio C Corso di Informatica Laurea in Fisica

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

Il Processore: l unità di controllo

Il linguaggio di programmazione Python

Corso di Laurea in Informatica

Il processore. Istituzionii di Informatica -- Rossano Gaeta

Architettura di Von Neumann

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

Introduzione alla programmazione in linguaggio C

Perché il linguaggio C?

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

CALCOLATORI ELETTRONICI

Cosa è un programma. Informatica di Base -- R.Gaeta 18

Architettura degli Elaboratori II - Laboratorio

ISA e linguaggio macchina

10: I LINGUAGGI di PROGRAMMAZIONE PARTE 1

Esercizio 1.A Aritmetica binaria (nel presentare le soluzione mostrare, almeno nei passaggi piú significativi, i calcoli eseguiti) (3 punti)

LINGUAGGI DI ALTO LIVELLO

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

LINGUAGGI DI PROGRAMMAZIONE E CODIFICA PROGRAMMI

ISA (Instruction Set Architecture) della CPU MIPS

Dal sorgente all eseguibile I programmi Assembly. Prof. Alberto Borghese Dipartimento di Scienze dell Informazione

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

Informatica 3. LEZIONE 1: Introduzione. Modulo 1: Introduzione al corso Modulo 2: Introduzione ai linguaggi di programmazione

Algoritmo. La programmazione. Algoritmo. Programmare. Procedimento di risoluzione di un problema

Architettura degli elaboratori

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

La macchina programmata Instruction Set Architecture (1)

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

Calcolatori Elettronici Prof. Fabio Roli. Linguaggio Assembly. Capitolo 5. Corso di Laurea di Ingegneria Elettronica

Il linguaggio Assembly

Componenti di un processore

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

Il linguaggio macchina

Architettura degli Elaboratori B Introduzione al corso

Transcript:

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 Central Processing Unit Principale Unità Aritmetico Logica Interconnessione interna alla Cosa abbiamo fatto circuiti combinatori e sequenziali Dove stiamo andando.. il set di istruzioni Perché: per poter comprendere il funzionamento e poter progettare la Unità di Controllo Unità di Controllo 2 1

Organizzazione della lezione La programmazione dei calcolatori Alcuni principi progettuali Introduzione al linguaggio macchina MIPS operazioni operandi Operazioni aritmetiche (add e sub) di trasferimento dati (lw e sw) Indirizzamento indicizzato della memoria 3 La programmazione dei calcolatori Storia programmazione attraverso numeri binari attività tediosa e lunga facile fare un errore 000111001001001001010010010000100100010010111 linguaggio assembly l assemblatore lo traduce in codice macchina dalla forma simbolica della istruzione machina......al corrispondente formato binario linguaggi ad alto livello compilatore lo traduce in assembly 4 2

Un esempio: C=A+B linguaggio ad alto livello add $t0, $s0, $s1 assembly 1000110010100000 linguaggio macchina 5 I benefici dei linguaggi ad alto livello Notazione naturale vicina al linguaggio corrente e alla notazione algebrica Incremento di produttività Indipendenza dalla architettura (processore) su cui il programma va eseguito Permette l uso di librerie di funzionalità già scritte (riuso del codice) 6 3

I benefici del linguaggio assemblatore La dipendenza dal processore permette: programmi più efficienti programmi (potenzialmente) più compatti Importante per: programmazione di controller di processi e macchinari (anche real-time) programmazione di apparati limitati: Portable Devices Telefonini cellulari etc.etc. 7 La compilazione: linguaggio C I compiti del compilatore e del linker hello.c #include <stdio.h>... file /* Prototipi funzioni */ stdio.h compilatore oggetto Libreria di Funzioni I/O standard linker a.out file eseguibile gcc hello.c Interfaccia alla libreria di funzioni I/O standard 8 4

Il processo della compilazione Programma C hello.c compilatore Programma in linguaggio assemblatore assemblatore Programma in linguaggio macchina a.out Il compilatore di norma comprende l assemblatore L assembler: permette l uso di pseudoistruzioni Il caricatore (loader) carica il programma in memoria caricatore Programma in memoria 9 La compilazione: il linguaggio Java Hello.java Hello.class... compilatore javac Hello.java... Java Virtual Machine java Hello 10 5

Java: la macchina virtuale Un programma che esegue programmi Java Virtual Machine Hello.class 11 Alcuni principi Le istruzioni vengono rappresentate da numeri i programmi vengono immagazzinati in memoria insieme ai dati Storicamente: architettura introdotta dall EDVAC opposta alla Harvard architecture che aveva spazi di memoria diversi per dati e programmi 12 6

Il linguaggio del calcolatore Linguaggio macchina: composto di istruzioni che compongono l insieme delle istruzioni I principi della progettazione: Obiettivi: un linguaggio macchina che renda facile la costruzione della macchina semplicità per il progettista che renda facile la costruzione dei compilatori offerta delle operazioni più comuni che ottimizzi i costi di produzione che permetta prestazioni alte competitività sul mercato 13 La semplicità della realizzazione Principio guida per tutti i calcolatori dagli anni cinquanta ad oggi Semplice significa economico ( semplicità = regolarità ) affidabile di facile apprendimento ed uso (programmatori) di facile traduzione (compilatori) 14 7

Le operazioni e gli operandi Processore MIPS (tipica architettura) Operazioni di tipo diverso: operazioni aritmetiche operazioni di trasferimento (memoria registri) operazioni di scelta e controllo del flusso operazioni di supporto alle procedure Operandi: accesso ai registri della macchina accesso alla memoria uso di costanti 15 Operazioni aritmetiche Fondamentali: le informazioni sono codificate in dati i dati sono rappresentati da numeri Un esempio: per compiere a=b+c e a=b-c Alcuni commenti: add a, b, c struttura fissa a 3 operandi la semplicità favorisce la regolarità sub a, b, c 16 8

Il prezzo della semplicità Per compiere a=b+c+d+e add a, b, c add a, a, d add a, a, e Per sommare 4 variabili (b,c,d,e) in a servono 3 istruzioni Commenti: su ogni linea, preceduti da # # calcolo a=b+c # calcolo a=(b+c)+d # calcolo a=(b+c+d)+e 17 Gli operandi A differenza dei linguaggi ad alto livello: gli operandi devono provenire da locazioni particolari di memoria dette registri Nei linguaggi ad alto livello non ci si preoccupa: del numero e del tipo di variabili della quantità di memoria utilizzata di dover portare i dati dalla memoria ai registri e dai registri alla memoria è compito del compilatore inserire le istruzioni necessarie 18 9

I registri Dimensione di un registro MIPS 32 bit (detta parola) Le caratteristiche dei registri: alta velocità di accesso limitati in numero (32 registri) ($0, $1,..$31) Convenzione MIPS: registri rappresentati da: $s0, $s1,..., i registri che contengono variabili $t0, $t1,..., i registri di uso temporaneo Altro principio di progettazione: piccolo = veloce (clock) 19 Il ruolo del compilatore Assegnare variabili a registri f = ( g + h ) - ( i + j ) add $t0, $s1, $s2 add $t1, $s3, $s4 sub $s0, $t0, $t1 f $s0 g $s1 h $s2 i $s3 j $s4 # g+h # i+j # f = (g+h)-(j+j) 20 10

Le operazioni e gli operandi Operazioni di tipo diverso: operazioni aritmetiche operazioni di trasferimento (memoria registri) operazioni di scelta e controllo del flusso operazioni di supporto alle procedure Operandi: accesso ai registri della macchina accesso alla memoria uso di costanti 21 Istruzioni trasferimento dati: perchè? registri $0 $1 $2.. $31 Il numero limitato di registri rende possibile la realizzazione della velocizza il clock..ma rende necessario introdurre istruzioni per trasferire il contenuto dei registri in memoria e viceversa.. 22 11

La registri $0 $1 $2.. $31.. 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 Permette l accesso alle locazioni fornendo l indirizzo Come un array monodimensionale, indicizzato tramite l indirizzo 23 Indirizzamento della registri $0 $1 $2 $31 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 E possibile l indirizzamento al byte per motivi di efficienza Indirizzamento di una parola è legato a 4 byte quindi gli indirizzi delle parole differiscono di 4 24 12

Istruzioni di trasferimento dati: la load-word 1000 1001 lw $8, 1000($19) $8 $19 3127 3127 1002 1003 1004 1005 1006 1007 1008 1009 1010 Indirizzamento indicizzato nel registro $8 va caricato l elemento con indirizzo uguale a 1000 + il valore in $19 Uso di un registro indice 4 1011 1012 1013 1014 1015 25 Il ruolo del registro indice $8 1237 3127 4125 $19 04 8 1237 3127 4125 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 lw $8, 1000($19) Utile per scorrere array al variare di $19 Attenzione! Il registro indice deve sempre variare di 4 in 4 1013 1014 1015 26 13

Istruzione di trasferimento dati: la store-word 1000 1001 sw $8, 1000($19) $8 $19 3127 4 3127 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 Indirizzamento indicizzato l elemento nel registro $8 va memorizzato nel.. l elemento con indirizzo uguale a 1000 + il valore in $19 Uso di un registro indice 1014 1015 27 Un programma di esempio (1) 1000 1001 $8 $18 $19 3127 13 4 3127 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 lw $8, 1000($19) add $8, $18, $8 sw $8, 1000($19) 1015 28 14

Un programma di esempio (2) $8 $18 $19 3127 3140 + 13 4 3127 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 lw $8, 1000($19) add $8, $18, $8 sw $8, 1000($19) 29 Un programma di esempio (3) $8 $18 $19 3140 13 4 3127 3140 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 lw $8, 1000($19) add $8, $18, $8 sw $8, 1000($19) 30 15

Alcuni commenti Le istruzioni di trasferimento dati prevedono: accesso al byte accesso a 2 byte (halfword) accesso alla parola (word) Di norma, si usano etichette (label) per indicare l indirizzo di partenza dell array: lw $8, AStart($19) 31 Esercizi Come si fa a realizzare la istruzione (C) g = h + A[i]? (Vedere esempi a pag. 95) Scrivere un programma che, assumendo di avere dei valori nei registri $s0, $s1 e $s2 scriva nella parola con indirizzo 1000 la somma dei tre registri. Scrivere un programma che, assumendo di avere nel registro $s0 il valore 10, nel registro $1 il valore 4, nel registro $2 il valore 3, scriva nelle parole con indirizzo 1000, 1004, 1008, rispettivamente il valore 10, 13 e 16. 32 16

Problemi Che tipo di indirizzamento dovremmo avere a disposizione per poter fare a meno dell'indirizzamento indicizzato? Perché le istruzioni di trasferimento dati lw e sw prevedono un metodo di indirizzamento dati indicizzato? Non sarebbe stato più facile prevedere un indirizzamento "diretto" vale a dire specificare direttamente la locazione di memoria da cui (o verso cui) prelevare (o scrivere) il dato di un registro? 33 17