DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Il sistema di elaborazione Marco D. Santambrogio – Ver. aggiornata al 15 Maggio 2015
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONEObiettivi Codifica delle istruzioni e dei dati per l’esecuzione automatica Architettura dei calcolatori Struttura e principi di funzionamento della CPU della memoria centrale 2
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE L’ “esecutore” Un calcolatore basato sull’architettura di Von Neumann esegue un programma sulla base dei seguenti principi: Un calcolatore basato sull’architettura di Von Neumann esegue un programma sulla base dei seguenti principi: dati e istruzioni sono memorizzati in una memoria unica che permette sia la scrittura che la lettura; i contenuti della memoria sono indirizzati in base alla loro posizione, indipendentemente dal tipo di dato o istruzione contenuto; le istruzioni vengono eseguite in modo sequenziale. Il linguaggio per cui la CPU si comporta da esecutore è detto linguaggio macchina. Le istruzioni scritte in linguaggio macchina sono piuttosto rudimentali: Il linguaggio per cui la CPU si comporta da esecutore è detto linguaggio macchina. Le istruzioni scritte in linguaggio macchina sono piuttosto rudimentali: il concetto di tipo di dato è quasi assente, il numero di operandi è limitato (in genere non più di due), il numero di operazioni previste è ridotto. Struttura istruzionecodice operativodestsrc1src2 Linguaggio assemblatoreaddR01R02R03 Linguaggio macchina
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Ciclo Fetch–Decode–Execute Fetch Decode Execute 4
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Le parti di una CPU Data path (o percorso dei dati) è la parte che si occupa dell’effettiva elaborazione dei dati; comprende dispositivi diversi una o più unità aritmetico-logiche, dette ALU (Arithmetic Logic Unit); alcune unità di memorizzazione temporanea, i registri, memoria ad alta velocità usata per risultati temporanei e informazioni di controllo (il valore massimo memorizzabile in un registro è determinato dalle dimensioni del registro). Unità di controllo coordina le operazioni di tutto il processore (anche quelle del data path!); regola il flusso dei dati e indica quali registri debbano essere collegati agli ingressi e all’uscita dell’ALU; invia all’ALU il codice dell’operazione da eseguire; riceve indicazioni sull’esito dell’operazione appena eseguita dall’ALU e gestisce opportunamente queste informazioni; comprende alcuni registri di uso specifico Program Counter (PC) – qual è l’istruzione successiva; Instruction Register (IR) – istruzione in corso d’esecuzione; Program Status Word (PSW) … 5
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Data path Registri ingresso ALU R00R01R02R03………… Registri ALUALU Registro uscita ALU X Y X+YX+YX+YX+Y Istruzione (e.g. add) esito X Y X+YX+YX+YX+Y X Y 6
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Unità di controllo Memoria Bus dati Bus indirizzi Bus controllo PC PSW Data path Unità di controllo CPU IR Registri ALU Collegamenti per il trasferimento dati Collegamenti di controllo Collegamenti per il trasferimento istruzioni 7
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Una sequenza di istruzioni … Ipotizziamo che Ipotizziamo che si debba eseguire l’istruzione A A + B + C (assegna alla variabile A la somma del contenuto delle variabili A, B e C); le corrispondenti istruzioni in linguaggio macchina si trovino all’indirizzo 789, 790, 791, … (come riportato nella tabella sottostante); le variabili A, B e C si trovino rispettivamente nelle celle di memoria 4000 (A), 4004 (B) e 4008 (C). NumIstruzioneCommento …… … … 789load R02,4000 trasferisce il contenuto della cella 4000 (A) nel registro R02 790load R03,4004 trasferisce il contenuto della cella 4004 (B) nel registro R03 791add R01,R02,R03 somma il contenuto dei registri R02 e R03 e scrive il risultato in R01 792load R02,4008 trasferisce il contenuto della cella 4008 (C) nel registro R02 793add R01,R01,R02 somma il contenuto dei registri R01 e R02 e scrive il risultato in R01 794store R01,4000 trasferisce il contenuto del registro R01 nella cella 4000 (A) …… … … 8
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Situazione iniziale 0789 Bus dati Bus indirizzi Bus controllo … … … … 0789load R02, load R03, add R01,R02,R load R02, add R01,R01,R store R01,4000 … … … … … … … … … … … … PSW Data path Unità di controllo CPURegistri ALU IR PC R00 R01 R02 R03 R04 R05 … MemoriaIstruzioni Dati Collegamenti di controllo Collegamenti per il trasferimento dati Collegamenti per il trasferimento istruzioni 9
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 0789 Lettura istruzione Bus dati Bus indirizzi Bus controllo … … … … 0789load R02, load R03, add R01,R02,R load R02, add R01,R01,R store R01,4000 … … … … … … … … … … … … PSW Data path Unità di controllo CPURegistri ALU IR PC R00 R01 R02 R03 R04 R05 … MemoriaIstruzioni Dati load R02, lettura 10
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 0790 Esecuzione istruzione 0789 Bus dati Bus indirizzi Bus controllo … … … … 0789load R02, load R03, add R01,R02,R load R02, add R01,R01,R store R01,4000 … … … … … … … … … … … … PSW Data path Unità di controllo CPURegistri ALU IR PC R00 R01 R02 R03 R04 R05 … MemoriaIstruzioni Dati load R02, lettura 11
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 0790 Lettura istruzione Bus dati Bus indirizzi Bus controllo … … … … 0789load R02, load R03, add R01,R02,R load R02, add R01,R01,R store R01,4000 … … … … … … … … … … … … PSW Data path Unità di controllo CPURegistri ALU IR PC R00 R01 R02 R03 R04 R05 … MemoriaIstruzioni Dati load R03, load R02, lettura 12
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 0791 Esecuzione istruzione 0790 Bus dati Bus indirizzi Bus controllo … … … … 0789load R02, load R03, add R01,R02,R load R02, add R01,R01,R store R01,4000 … … … … … … … … … … … … PSW Data path Unità di controllo CPURegistri ALU IR PC R00 R01 R02 R03 R04 R05 … MemoriaIstruzioni Dati load R03, lettura
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 0791 Lettura istruzione Bus dati Bus indirizzi Bus controllo … … … … 0789load R02, load R03, add R01,R02,R load R02, add R01,R01,R store R01,4000 … … … … … … … … … … … … PSW Data path Unità di controllo CPURegistri ALU IR PC R00 R01 R02 R03 R04 R05 … MemoriaIstruzioni Dati add R01,R02,R load R03, lettura
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 0792 Esecuzione istruzione 0791 Bus dati Bus indirizzi Bus controllo … … … … 0789load R02, load R03, add R01,R02,R load R02, add R01,R01,R store R01,4000 … … … … … … … … … … … … PSW Data path Unità di controllo CPURegistri ALU IR PC R00 R01 R02 R03 R04 R05 … MemoriaIstruzioni Dati add R01,R02,R add esito
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 0792 Lettura istruzione Bus dati Bus indirizzi Bus controllo … … … … 0789load R02, load R03, add R01,R02,R load R02, add R01,R01,R store R01,4000 … … … … … … … … … … … … PSW Data path Unità di controllo CPURegistri ALU IR PC R00 R01 R02 R03 R04 R05 … MemoriaIstruzioni Dati load R02, add R01,R02,R lettura
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 0793 Esecuzione istruzione 0792 Bus dati Bus indirizzi Bus controllo … … … … 0789load R02, load R03, add R01,R02,R load R02, add R01,R01,R store R01,4000 … … … … … … … … … … … … PSW Data path Unità di controllo CPURegistri ALU IR PC R00 R01 R02 R03 R04 R05 … MemoriaIstruzioni Dati load R02, lettura
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 0793 Lettura istruzione Bus dati Bus indirizzi Bus controllo … … … … 0789load R02, load R03, add R01,R02,R load R02, add R01,R01,R store R01,4000 … … … … … … … … … … … … PSW Data path Unità di controllo CPURegistri ALU IR PC R00 R01 R02 R03 R04 R05 … MemoriaIstruzioni Dati add R01,R01,R load R02, lettura
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 0794 Esecuzione istruzione 0793 Bus dati Bus indirizzi Bus controllo … … … … 0789load R02, load R03, add R01,R02,R load R02, add R01,R01,R store R01,4000 … … … … … … … … … … … … PSW Data path Unità di controllo CPURegistri ALU IR PC R00 R01 R02 R03 R04 R05 … MemoriaIstruzioni Dati add R01,R01,R add esito
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 0794 Lettura istruzione Bus dati Bus indirizzi Bus controllo … … … … 0789load R02, load R03, add R01,R02,R load R02, add R01,R01,R store R01,4000 … … … … … … … … … … … … PSW Data path Unità di controllo CPURegistri ALU IR PC R00 R01 R02 R03 R04 R05 … MemoriaIstruzioni Dati store R01, add R01,R01,R lettura
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE … … … … … … … … Esecuzione istruzione 0794 Bus dati Bus indirizzi Bus controllo … … … … 0789load R02, load R03, add R01,R02,R load R02, add R01,R01,R store R01,4000 … … … … PSW Data path Unità di controllo CPURegistri ALU IR PC R00 R01 R02 R03 R04 R05 … MemoriaIstruzioni Dati store R01, scrittura
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Ma dati e istruzioni, dove sono salvati? 22 in memoria
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Criteri di caratterizzazione di una memoria Velocità tempo di accesso (access time) (quanto passa tra una richiesta e la relativa risposta) velocità di trasferimento (transfer rate) (quanti byte al secondo si possono trasferire) Volatilità cosa succede quando la memoria non è alimentata? per quanto tempo i dati vi rimangono immagazzinati? Capacità quanti byte può contenere? qual è la dimensione massima? Costo (per bit) Modalità di accesso diretta (o casuale): il tempo di accesso è indipendente dalla posizione sequenziale: il tempo di accesso dipende dalla posizione mista: combinazione dei due casi precedenti associativa: indicato il dato, la memoria risponde indicando l’eventuale posizione che il dato occupa in memoria. 23
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Gerarchia di memoria! 24 Obiettivo: realizzare una memoria grossa e veloce dimensioni pari a circa quelle della memoria grossa; Memorie di gran capacità, relativamente lente, economiche ed accessibili tramite il bus prestazioni pari a circa quelle della memoria veloce. Memorie veloci, integrate nello stesso chip della CPU, ma costose Man mano che ci si sposta verso il basso nella gerarchia aumenta il valore dei parametri fondamentali: aumenta il tempo di accesso; aumenta la capacità di memorizzazione; ma diminuisce il costo per bit.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Una gerarchia di memoria 25
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Indirizzi di memoria I bit nelle memorie sono raggruppati in celle: I bit nelle memorie sono raggruppati in celle: tutte le celle sono formate dallo stesso numero di bit; una cella composta da k bit, è in grado di contenere una qualunque tra le 2 k combinazioni diverse di bit. Ogni cella ha un indirizzo: Ogni cella ha un indirizzo: serve come accesso all’informazione; in una memoria con N celle gli indirizzi vanno da 0 a N–1. La cella è l’unità indirizzabile più piccola. In quasi tutti i calcolatori è di 8 bit (un byte). La cella è l’unità indirizzabile più piccola. In quasi tutti i calcolatori è di 8 bit (un byte). I byte vengono raggruppati in parole (che oggi sono di 32/64 bit), su cui la CPU esegue le operazioni. I byte vengono raggruppati in parole (che oggi sono di 32/64 bit), su cui la CPU esegue le operazioni. 26
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Organizzazione della memoria 27
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Organizzazione della memoria Anche gli indirizzi della memoria sono rappresentati come numeri binari: Anche gli indirizzi della memoria sono rappresentati come numeri binari: un indirizzo di M bit consente di indirizzare 2 M celle; per 6 o 8 celle bastano 3 bit, per 12 celle ne servono 4; il numero di bit nell’indirizzo determina il numero massimo di celle indirizzabili nella memoria ed è indipendente dal numero di bit per cella (una memoria con 2 12 celle richiede sempre 12 bit di indirizzo, quale che sia la dimensione di una cella). Una memoria può essere organizzata in diversi modi: Una memoria può essere organizzata in diversi modi: per esempio, con 96 bit possiamo avere 6 celle di 16 bit (6*16=96), 8 celle di 12 bit (8*12=96) 12 celle di 8 bit (12*8=96). In genere si considerano celle di 8 bit (1 byte). 28
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Memoria e collegamenti al bus Viene selezionata la parola di indirizzo il contenuto è ; l’operazione è di lettura (load) o di scrittura (store) a seconda dei comandi presenti sul bus di controllo 29
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 30 Array vettori di elementi indicizzati, omogenei, memorizzati in celle di memoria consecutive Dichiarazione di un array: int vett[3]; È un array di 3 elementi di tipo int Gli elementi di un array sono normali variabili: vett[0] 3; printf("%d", vett[0]); > 3 scanf("%d", &vett[1]); > 17vett[1] assume valore 17 Gli array
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 31 int a, vett[3]; Gli array vett[0] vett[1] vett[2] a a
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 32 int v[100]; alloca memoria per 100 elementi interi, a partire da un certo indirizzo di memoria la dimensione deve essere nota al compilatore deve essere una espressione costante Per accedere all' i-esimo elemento di v calcola l'indice i i può essere un'espressione all’indirizzo della prima cella di v somma il numero di celle pari allo spazio occupato da i elementi Come opera il calcolatore?
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Puntatori – premessa Dichiarare una variabile significa riservare una zona di memoria composta da diverse celle Il numero di celle dipende dal tipo di dato (short int 2 byte, float 4 byte, …) Ogni cella di memoria ha un indirizzo fisico e: il nome della variabile indica il contenuto della cella di memoria l’operatore & permette di ottenere l’indirizzo di memoria della cella associata alla variabile cui l’operatore è applicato 33
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Variabili e indirizzi Supponiamo che la dichiarazione riservi la zona di memoria all’indirizzo 1 var indica il contenuto della cella di memoria &var indica l’indirizzo della cella di memoria int var; var &var 34
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Somma degli elementi di un array di int 35
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 36 int dati[DIM]; In memoria dati[0] dati[1] dati[2]
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Giochiamo con gli array e i puntatori 37
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 38 int dati[DIM]; dati[0] dati[1] dati[2] int *valori; valori In memoria, macchina a 32bit, e.g. x86
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 39 int dati[DIM]; int *valori; valori dati[0]=53 dati[1]=7 dati[2]=20 In memoria, macchina a 32bit, e.g. x86
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 40 int dati[DIM]; int *valori; 01 dati[0]=53 dati[1]=7 dati[2]=20 valori=dati; In memoria, macchina a 32bit, e.g. x86
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 41 int dati[DIM]; int *valori; 05 dati[0]=53 dati[1]=7 dati[2]=20 valori=dati; valori++; 01 In memoria, macchina a 32bit, e.g. x86
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 42 int dati[DIM]; int *valori; 09 dati[0]=53 dati[1]=7 dati[2]=20 valori=dati; valori++; In memoria, macchina a 32bit, e.g. x86
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 43 int dati[DIM]; int *valori; 09 dati[0]=53 dati[1]=7 dati[2]=20 valori=dati; valori++; *valori=43; 43 In memoria, macchina a 32bit, e.g. x86
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Somma degli elementi di un array di int: funzioni 44
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 45 int dati[DIM]; In memoria dati[0] (aka valori[0]) dati[0] (aka valori[0]) dati[1] (aka valori[1]) dati[1] (aka valori[1]) dati[2] (aka valori[2]) dati[2] (aka valori[2])
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Somma degli elementi di un array di int: funzioni – con int *valori 46
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE int *valori Vs int valori[] 47 Aritmetica dei puntatori Accesso tramite array
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Fonti per lo studio + Credits Fonti per lo studio Informatica arte e mestiere, S. Ceri, D. Mandrioli, L. Sbattella, McGrawHill Capitolo 2 Introduzione ai sistemi informatici, D. Sciuto, G. Buonanno, L. Mari, 4a Ed, McGrawHill Capitolo 1, 2, 5 The Art & Craft of Computing, S. Ceri, D. Mandrioli, L. Sbattella, Addison-Wesley Capitolo 2 Approfondimenti Struttura e progetto dei calcolatori, D. A. Patterson, J. Hennessy, 3a Ed, Zanichelli Capitolo 1, 2 Credits Prof. G. Buonanno e D. Sciuto, LIUC 48