Corso di Laurea in Informatica Architettura degli elaboratori a.a. 2014-15 La macchina programmata Instruction Set Architecture (2) Istruzioni I-type Indirizzamento.

Slides:



Advertisements
Presentazioni simili
La struttura fisica e logica di un elaboratore
Advertisements

Classe III A A.s – 2011 Sistemi di Elaborazione e Trasmissione dell’Informazione 4 ore settimanali (2 laboratorio) Docenti Prof. Alberto Ferrari.
Dalla scrittura all’esecuzione
Introduzione allarchitettura dei calcolatori 2/ed Carl Hamacher, Zvonko Vranesic, Safwat Zaky Copyright © 2007 – The McGraw-Hill Companies srl Versione.
Elaboratore e Sistemi Operativo
Architettura di un sistema informatico Hardware
CdL Ingegneria Informatica n.o. Anno Accademico 2007/08 Fondamenti di Informatica I – corso A Giacomo Piscitellipag. 1/30 Architettura dei calcolatori.
Il Linguaggio Macchina
Architetture dei Calcolatori (Lettere j-z) Il Processore (2)
Laboratorio di informatica: ASSEMBLER
2 Sistema composto da un numero elevato di componenti, in cui ogni componente svolge una sua funzione elaborazione dati memorizzazione dati trasferimento.
1 Corso di Informatica (Programmazione) Lezione 4 (24 ottobre 2008) Architettura del calcolatore: la macchina di Von Neumann.
Caratteristiche principali dell’architettura del processore MIPS
Caratteristiche principali dell’architettura del processore MIPS
Caratteristiche principali dell’architettura del processore MIPS
Il livello Microarchitetturale
Il Linguaggio Macchina
Com’è fatto un elaboratore?
3. Architettura Vengono descritte le principali componenti hardware di un calcolatore.
Estensioni allarchitettura di Von Neumann Vito Perrone Corso di Informatica A per Gestionali.
EVOLUZIONE DEL PC Legge di Moore: La potenza dei calcolatori raddoppia ogni 18 mesi Metà anni 80 (Personal Computer IBM AT) Architettura 16 bit interna,
Fondamenti di Informatica Laurea in Ingegneria Civile e Ingegneria per lambiente e il territorio Il calcolatore Stefano Cagnoni e Monica Mordonini Dipartimento.
CPU (central process unit)
La macchina di von Neumann
Architettura dell’elaboratore
Corso di Laurea in Scienze e Tecnologie Chimiche corso di Informatica Generale Paolo Mereghetti DISCo – Dipartimento di Informatica, Sistemistica e Comunicazione.
ELETTRONICA DIGITALE (II Parte)
Architettura degli elaboratori
Architetture dei Calcolatori (Lettere j-z ) Il Processore
Architettura del calcolatore
G. Amodeo, C. Gaibisso Programmazione di Calcolatori Lezione VII Il compilatore e le sue opzioni Programmazione di Calcolatori: il compilatore e le sue.
ARCHITETTURA DI UN ELABORATORE
Unità centrale di processo
Informatica Lezione 4 Scienze e tecniche psicologiche dello sviluppo e dell'educazione Anno accademico:
Architettura di una CPU
Corso di Laurea in Informatica Architettura degli elaboratori a.a La macchina programmata Instruction Set Architecture (1) Schema base di esecuzione.
Architettura del calcolatore
Calcolatori Elettronici Il Processore
Sistemi Elettronici Programmabili: Riepilogo 1 Sistemi digitali : Riepilogo Sistemi Elettronici Programmabili.
Informatica Lezione 5 Scienze e tecniche psicologiche dello sviluppo e dell'educazione (laurea triennale) Anno accademico:
Calcolatori Elettronici Il Processore (2)
Corsi di Laurea in Biotecnologie
Laboratorio Informatico
Programmazione Assembly
CALCOLATORI ELETTRONICI
MICROPROCESSORI Un processore è un circuito integrato in grado di effettuare operazioni di calcolo o di elaborazione dell'informazione Il circuito contiene.
Corso di Laurea in Informatica Architettura degli elaboratori a.a ISA e Asm: esempi e suggerimenti.
Architettura di un calcolatore e linguaggio macchina.
Università degli Studi di Bergamo Facoltà di Lingue e Letterature Straniere Facoltà di Lettere e Filosofia A.A Informatica generale 1 Appunti.
Corso di Laurea in Scienze e Tecnologie Chimiche corso di Informatica Generale Paolo Mereghetti DISCo – Dipartimento di Informatica, Sistemistica e Comunicazione.
L’esecuzione dei programmi
Informatica Generale Marzia Buscemi
Corso di Laurea in Biotecnologie corso di Informatica Paolo Mereghetti DISCo – Dipartimento di Informatica, Sistemistica e Comunicazione.
Il calcolatore Stefano Cagnoni e Monica Mordonini
1 Informatica Generale Marzia Buscemi Ricevimento: Giovedì ore , Dipartimento di Informatica, stanza 306-PS o per posta.
Corso di Laurea in Informatica Architettura degli elaboratori a.a Programmazione Assembly: procedure (1) Supporto hardware alle procedure Passaggio.
Hardware Struttura fisica (architettura) del calcolatore formata da parti meccaniche, elettriche, elettroniche.
Informatica Lezione 4 Psicologia dello sviluppo e dell'educazione (laurea magistrale) Anno accademico:
Struttura Fondamentale degli Elaboratori Elaboratore –È un sistema numerico –È un sistema automatico –È un sistema a programamzione registrabile –Ha una.
STRUTTURA DELL’ELABORATORE
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Il sistema di elaborazione Marco D. Santambrogio – Ver. aggiornata al 15 Maggio.
Il Processore Il processore è la componente dell’unità centrale che elabora le informazioni contenute nella memoria principale L’elaborazione avviene eseguedo.
Corso di Laurea in Informatica Architettura degli elaboratori a.a La macchina programmata (3) Istruzioni J-type Istruzioni di salto Istruzioni.
Presentazione di sistemi Ambrosio Federica Anna Esposito 3C inf.
Click to add text L’ Unità di Elaborazione. Struttura : Unità di controllo: coordina attività CPU ALU: unità aritmetico-logica, esegue operazioni tra.
I Microprocessori Unità 3 del libro Internet Working Sistemi e reti.
Hardware Struttura fisica (architettura) del calcolatore formata da parti meccaniche, elettriche, elettroniche.
Corso di Laurea in Informatica Architettura degli elaboratori a.a ISA e Asm: esempi e suggerimenti.
Architettura degli elaboratori
Cammino dei Dati (Datapath)
Transcript della presentazione:

Corso di Laurea in Informatica Architettura degli elaboratori a.a La macchina programmata Instruction Set Architecture (2) Istruzioni I-type Indirizzamento della memoria Istruzioni Load/Store Un programma elementare

Da dove arrivano le istruzioni? (Fetch/execute) A.A ISA (1)2 Processor Control ALU Current instruction Program Counter Indirizzo in memoria della prossima istruzione da eseguire Instruction Address Memory Le istruzioni stanno in memoria “una dopo l’altra” (di solito…) Memory Content Esecuzione istruzione (vedi slide precedente) Incremento PC per puntare alla istruzione successiva Registers Bisogna aspettare un po’

Processor: istruzione elementare su registri A.A ISA (1)3 Processor (CPU, Central Processing Unit) Control Unit Arithmetic Logic Unit Current instruction Registers R0 R1 R2 Rn R3 Decodifica istruzione Segnali di controllo ai circuiti Elaborazione dei dati Flussi dei dati Istruzione da eseguire (codificata come insieme di bit) (esempio): R1 + R2 -> R3

Istruzione R-Type I valori in rs e rt devono essere già stati impostati da istruzioni precedenti Se rs contiene inizialmente 64 ( ) rt contiene inizialmente 4 ( ) dopo l’esecuzione rd contiene 68 ( ) A.A ISA (2)4 6 bits5 bits 6 bits “somma i contenuti del registro 8 e del registro 9 e metti il risultato nel registro 10” quello che si vuole fare (in italiano) numeri decimali (per comodità) op (operation code) operazione base x rs primo registro sorgente rt secondo registro sorgente rd registro destinazione shamt shift funct variante della operazione 32 – – 0x

Istruzione I-type (add immediate) A.A ISA (2)5 6 bits5 bits 16 bits “somma il valore 4 al contenuto del registro 8 e metti il risultato nel registro 10” quello che si vuole fare (in italiano) numeri decimali (per comodità) op (operation code) add immediate rs primo registro (sorgente) rt secondo registro (destinazione) valore immediato se rs contiene inizialmente 64 ( ) dopo l’esecuzione rt contiene 68 ( ) Problema: qual è il range di valori immediati che si può esprimere con 16 bit in complemento a 2? ( <= valore <= 32767). Se serve un valore più grande, va gestito a livello programmativo.

Memory Half Word (16 bit) Word (32 bit) Indirizzamento della memoria A.A ISA (2)6 Memory Address Memory Content La dimensione della memoria indirizzabile dipende dalle dimensioni di MAR 32 bit -> 2** … 4,294,967,296 Byte L’unità indirizzabile è il byte (8 bit) Istruzioni load/store specifiche consentono di leggere/scrivere byte, halfword, word specificando l’idirizzo del primo byte Commento: I 2 bit meno significativi dell’indirizzo di una istruzione sono sempre 0 Word (in particolare, istruzioni) partono a multipli di 4 Un indirizzo è un intero positivo (Memory Address)

Istruzione load ideale Caricare in un registro il contenuto di una locazione di memoria Cosa dovrebbe specificare l’istruzione: Opcode Registro destinazione Indirizzo di memoria il cui contenuto viene copiato nel registro destinazione Problema: quanti bit occorrono? La memoria è grande (MIPS: 2 32 locazioni) Per specificare un indirizzo occorrono 32 bit … …che non ci stanno in una istruzione di 32 bit Soluzione (MIPS): Usare il formato I-type (opcode, 2 registri, 1 immediato) Un registro è la destinazione Un registro contiene un indirizzo base Il valore immediato è interpretato come spiazzamento (offset) L’indirizzo cui accedere è calcolato come (base + offset) A.A ISA (2)7

Istruzione load word (MIPS) A.A ISA (2)8 6 bits5 bits 16 bits “carica nel registro 10 il contenuto della parola (32 bit) che è all’indirizzo di memoria ottenuto come somma del registro 8 e dell’offset immediato 4” quello che si vuole fare (in italiano) numeri decimali (per comodità) op (operation code) Load Word (lw) rs registro base rt registro destinazione offset (immediato) se rs contiene inizialmente ( ) l’indirizzo in memoria della word da caricare è ( ) ( ) in rt vengono trasferiti 32 bit (1 word) a partire dall’indirizzo così ottenuto… …qualunque sia il significato di quei 32 bit

Come funziona A.A ISA (2) (=4 10 ) R8 R Indirizzo base Offset (“spiazzamento”) Dati trasferiti nel Registro Problemino legato a una convenzione hw: In che ordine vanno on memoria i byte di una word “little endian – big endian” Per il momento lasciamo perdere… Lo vedremo in seguito

Istruzione store word (MIPS) A.A ISA (2)10 6 bits5 bits 16 bits “memorizza il contenuto del registro 10 (32 bit) all’indirizzo di memoria ottenuto come somma del registro 8 e dell’offset immediato 4”) quello che si vuole fare (in italiano) numeri decimali (per comodità) op (operation code) Store Word (sw) 2b rs registro base rt registro sorgente offset (immediato) confrontare con la Load Word

Il costo del risotto Calcolare il costo del risotto, noti i costi di riso, burro e funghi già memorizzati in variabili Ci servono quattro variabili (word, in caso di inflazione) costoRiso costoBurro costoFunghi costoRisotto Algoritmo: costoRisotto = costoRiso + costoBurro + costoFunghi Valori iniziali delle variabili: costoRiso = 20 = = costoBurro = 7 = 7 16 = costoFunghi = 75 = 4b 16 = Tutto questo sta su carta o in un file Word o in un file PowerPoint come questo se abbiamo un PC e Office......ma il processore capisce solo il linguaggio macchina! Proviamo a fare a mano le cose che in pratica saranno fatte dalla “catena di programmazione” (asm + linker + loader) A.A ISA (2)11

Ragionevoli dubbi Dubbio 1: Chi decide dove stanno in memoria le variabili? NB: il processore ragiona SOLO in termini di indirizzi e NON CONOSCE il concetto di “nome simbolico” di una varabile!!! Risposta 1a: proviamo a farlo a mano (su carta), supponendo di dover scrivere il programma in codice macchina (binario) Risposta 1b: Meccanismo Misterioso MM1: per fortuna, lo fa l’assemblatore se programmiamo in linguaggio assembly (ne parliamo in seguito) Dubbio 2: Come si inizializzano in memoria i dati? Dubbio 3: Come si carica in memoria il programma? Risposte 2a e 3a: per il momento, assumiamo che esistano meccanismi misteriosi (MM2 e MM3) che lo fanno Risposta 2b e 3b: lo fa il loader (che è un programma già caricato...in maniera misteriosa) (vedi seguito) Risposta 2c: lo fa il programma stesso se è in grado di leggere dati da una periferica e caricarli in memoria (vedi seguito) A.A ISA (2)12

Allocazione delle variabili: tabella dei simboli A.A ISA (2)13 Simbolo (nome variabile)Offset 16 Init 16 costoRiso costoBurro costoFunghi8 16 4b 16 costoRisottoc Decidiamo arbitrariamente che le variabili sono una dopo l’altra a partire da un indirizzo base Definiamo l’ offset (“spiazzamento”)di ogni variabile rispetto all’indirizzo base. NB: gli indirizzi sono al byte nel nostro caso tutte le variabili sono di 4 byte (word) Decidiamo arbitrariamente che l’indirizzo base è Siamo in grado di calcolare l’indirizzo in memoria di ogni variabile che poi potremo inizializzare (usando il meccanismo misterioso MM3) Le decisioni “arbitrarie” sono prese di solito in base a convenzioni usate dalla catena di programmazione ma “ignote” al processore

codfiche dec e hex dei singoli campi dell’istruzione, non dell’intera istruzione!!! Il programma!!! (frammento) A.A ISA (2) a b c d e f 16 Convenzione: Registro base di Area dati Indirizzi Area dati Carica indirizzo base in Registro > Registro 28 (Meccanismo Misterioso M4) Carica costoRiso in Registro R c ISTRUZIONE MACCHINA Carica costoBurro in R Somma R7 e R8, metti risultato in R Carica costoFunghi in R Somma R7 e R8, metti risultato in R Memorizza R7 in costoRisotto

Cosa rimane da fare Caricare i dati iniziali in memoria Come? Meccanismo misterioso MM2 Caricare il programma in memoria Dove? In questo caso elementare (senza salti!) il programma può essere caricato in qualsiasi posizione di memoria...ma vedi seguito : convenzioni (“Text Area”) e istruzioni di salto Come? Meccanismo misterioso MM3 Caricare in Program Counter l’indirizzo della prima istruzione del programma Meccanismo Misterioso MM4...GO!!! A.A ISA (2)15

Commenti Il registro base deve essere stato caricato in precedenza con un indirizzo opportuno (indirizzo base) Dove stanno i dati? Qualcuno lo deve decidere... Se i dati non occupano più di 64 kByte il programmatore (o il compilatore o l’assemblatore)può decidere di dedicare un registro alla funzione di registro base il registro base può essere inizializzato all’inizio del programma e non viene più modificato spesso il registro 28 ($gp in Assembly MIPS) viene usato come registro base per i dati e viene inizializzato all’inizio del programma è una convenzione programmativa sull’uso dei registri e della memoria dal punto di vista hw, qualsiasi registro può essere usato come registro base e può essere modificato da programma in qualsiasi momento Se (ad esempio) il registro base è inizializzato a , può essere usato come per indirizzare dati compresi fra gli indirizzi e 1000ffff A.A ISA (2)16

Continua... Istruzioni di salto e di salto condizionato (salta se...) come realizzare loop e if Istruzioni logiche e altre istruzioni importanti Come facilitarsi la vita: Assembly e catena di programmazione Istruzioni assembly Etichette simboliche Convenzioni: uso dei registri, allocazione della memoria Direttive Pseudo-istruzioni Realizzazione di alcuni Meccanismi Misteriosi Come realizzare chiamate a procedura Interazioni con la periferia: Input/output Cosa si cerca di fare apprendere: capire come funziona e come è fatto un elaboratore (in linea di principio) leggere e capire un programma Assembly scrivere semplici programmi Assembly Circuiti notevoli Data path: come “costruire” la macchina usando circuiti notevoli A.A ISA (2)17