Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
PubblicatoGiorgio Vanni Modificato 9 anni fa
1
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Il sistema di elaborazione Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 15 Maggio 2015
2
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
3
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 macchina000000 00000 100000000010001000011 3
4
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Ciclo Fetch–Decode–Execute Fetch Decode Execute 4
5
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
6
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
7
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
8
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
9
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Situazione iniziale 0789 Bus dati Bus indirizzi Bus controllo … … … … 0789load R02,4000 0790load R03,4004 0791add R01,R02,R03 0792load R02,4008 0793add R01,R01,R02 0794store R01,4000 … … … … … … … … 40001492 40041918 40082006 … … … … 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
10
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 0789 Lettura istruzione 0789 0789 Bus dati Bus indirizzi Bus controllo … … … … 0789load R02,4000 0790load R03,4004 0791add R01,R02,R03 0792load R02,4008 0793add R01,R01,R02 0794store R01,4000 … … … … … … … … 40001492 40041918 40082006 … … … … PSW Data path Unità di controllo CPURegistri ALU IR PC R00 R01 R02 R03 R04 R05 … MemoriaIstruzioni Dati load R02,4000 +10790 lettura 10
11
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 0790 Esecuzione istruzione 0789 Bus dati Bus indirizzi Bus controllo … … … … 0789load R02,4000 0790load R03,4004 0791add R01,R02,R03 0792load R02,4008 0793add R01,R01,R02 0794store R01,4000 … … … … … … … … 40001492 40041918 40082006 … … … … PSW Data path Unità di controllo CPURegistri ALU IR PC R00 R01 R02 R03 R04 R05 … MemoriaIstruzioni Dati load R02,4000 4000 1492 lettura 11
12
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 0790 Lettura istruzione 0790 0790 Bus dati Bus indirizzi Bus controllo … … … … 0789load R02,4000 0790load R03,4004 0791add R01,R02,R03 0792load R02,4008 0793add R01,R01,R02 0794store R01,4000 … … … … … … … … 40001492 40041918 40082006 … … … … PSW Data path Unità di controllo CPURegistri ALU IR PC R00 R01 R02 R03 R04 R05 … MemoriaIstruzioni Dati load R03,4004 +10791 load R02,4000 1492 lettura 12
13
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 0791 Esecuzione istruzione 0790 Bus dati Bus indirizzi Bus controllo … … … … 0789load R02,4000 0790load R03,4004 0791add R01,R02,R03 0792load R02,4008 0793add R01,R01,R02 0794store R01,4000 … … … … … … … … 40001492 40041918 40082006 … … … … PSW Data path Unità di controllo CPURegistri ALU IR PC R00 R01 R02 R03 R04 R05 … MemoriaIstruzioni Dati load R03,4004 4004 1918 lettura 1492 13
14
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 0791 Lettura istruzione 0791 0791 Bus dati Bus indirizzi Bus controllo … … … … 0789load R02,4000 0790load R03,4004 0791add R01,R02,R03 0792load R02,4008 0793add R01,R01,R02 0794store R01,4000 … … … … … … … … 40001492 40041918 40082006 … … … … PSW Data path Unità di controllo CPURegistri ALU IR PC R00 R01 R02 R03 R04 R05 … MemoriaIstruzioni Dati add R01,R02,R03 +10792 load R03,4004 1492 lettura 1918 14
15
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 0792 Esecuzione istruzione 0791 Bus dati Bus indirizzi Bus controllo … … … … 0789load R02,4000 0790load R03,4004 0791add R01,R02,R03 0792load R02,4008 0793add R01,R01,R02 0794store R01,4000 … … … … … … … … 40001492 40041918 40082006 … … … … PSW Data path Unità di controllo CPURegistri ALU IR PC R00 R01 R02 R03 R04 R05 … MemoriaIstruzioni Dati add R01,R02,R03 1492 1918 1492 1918 add esito 3410 15
16
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 0792 Lettura istruzione 0792 0792 Bus dati Bus indirizzi Bus controllo … … … … 0789load R02,4000 0790load R03,4004 0791add R01,R02,R03 0792load R02,4008 0793add R01,R01,R02 0794store R01,4000 … … … … … … … … 40001492 40041918 40082006 … … … … PSW Data path Unità di controllo CPURegistri ALU IR PC R00 R01 R02 R03 R04 R05 … MemoriaIstruzioni Dati load R02,4008 +10793 add R01,R02,R03 1492 lettura 1918 3410 16
17
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 0793 Esecuzione istruzione 0792 Bus dati Bus indirizzi Bus controllo … … … … 0789load R02,4000 0790load R03,4004 0791add R01,R02,R03 0792load R02,4008 0793add R01,R01,R02 0794store R01,4000 … … … … … … … … 40001492 40041918 40082006 … … … … PSW Data path Unità di controllo CPURegistri ALU IR PC R00 R01 R02 R03 R04 R05 … MemoriaIstruzioni Dati load R02,4008 4008 2006 lettura 1492 1918 3410 17
18
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 0793 Lettura istruzione 0793 0793 Bus dati Bus indirizzi Bus controllo … … … … 0789load R02,4000 0790load R03,4004 0791add R01,R02,R03 0792load R02,4008 0793add R01,R01,R02 0794store R01,4000 … … … … … … … … 40001492 40041918 40082006 … … … … PSW Data path Unità di controllo CPURegistri ALU IR PC R00 R01 R02 R03 R04 R05 … MemoriaIstruzioni Dati add R01,R01,R02 +1 0794 load R02,4008 2006 lettura 1918 3410 18
19
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 0794 Esecuzione istruzione 0793 Bus dati Bus indirizzi Bus controllo … … … … 0789load R02,4000 0790load R03,4004 0791add R01,R02,R03 0792load R02,4008 0793add R01,R01,R02 0794store R01,4000 … … … … … … … … 40001492 40041918 40082006 … … … … PSW Data path Unità di controllo CPURegistri ALU IR PC R00 R01 R02 R03 R04 R05 … MemoriaIstruzioni Dati add R01,R01,R02 2006 1918 2006 3410 add esito 5416 3410 19
20
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 0794 Lettura istruzione 0794 0794 Bus dati Bus indirizzi Bus controllo … … … … 0789load R02,4000 0790load R03,4004 0791add R01,R02,R03 0792load R02,4008 0793add R01,R01,R02 0794store R01,4000 … … … … … … … … 40001492 40041918 40082006 … … … … PSW Data path Unità di controllo CPURegistri ALU IR PC R00 R01 R02 R03 R04 R05 … MemoriaIstruzioni Dati store R01,4000 +1 0795 add R01,R01,R02 2006 lettura 1918 5416 20
21
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE … … … … 40001492 40041918 40082006 … … … … 5416 0795 Esecuzione istruzione 0794 Bus dati Bus indirizzi Bus controllo … … … … 0789load R02,4000 0790load R03,4004 0791add R01,R02,R03 0792load R02,4008 0793add R01,R01,R02 0794store R01,4000 … … … … PSW Data path Unità di controllo CPURegistri ALU IR PC R00 R01 R02 R03 R04 R05 … MemoriaIstruzioni Dati store R01,4000 4000 scrittura 2006 1918 5416 21
22
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Ma dati e istruzioni, dove sono salvati? 22 in memoria
23
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
24
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.
25
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Una gerarchia di memoria 25
26
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
27
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Organizzazione della memoria 27
28
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
29
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Memoria e collegamenti al bus Viene selezionata la parola di indirizzo 0110 2 il contenuto è 01101100; l’operazione è di lettura (load) o di scrittura (store) a seconda dei comandi presenti sul bus di controllo 29
30
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
31
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 31 int a, vett[3]; Gli array vett[0] vett[1] vett[2] a a
32
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?
33
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
34
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; 0 1 2 3 var &var 34
35
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Somma degli elementi di un array di int 35
36
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 36 int dati[DIM]; In memoria dati[0] dati[1] dati[2]
37
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Giochiamo con gli array e i puntatori 37
38
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
39
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 39 int dati[DIM]; 53 7 7 20 int *valori; valori dati[0]=53 dati[1]=7 dati[2]=20 In memoria, macchina a 32bit, e.g. x86
40
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 40 int dati[DIM]; 53 7 7 20 int *valori; 01 dati[0]=53 dati[1]=7 dati[2]=20 valori=dati; In memoria, macchina a 32bit, e.g. x86
41
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 41 int dati[DIM]; 53 7 7 20 int *valori; 05 dati[0]=53 dati[1]=7 dati[2]=20 valori=dati; valori++; 01 In memoria, macchina a 32bit, e.g. x86
42
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 42 int dati[DIM]; 53 7 7 20 int *valori; 09 dati[0]=53 dati[1]=7 dati[2]=20 valori=dati; valori++; In memoria, macchina a 32bit, e.g. x86
43
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 43 int dati[DIM]; 53 7 7 20 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
44
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Somma degli elementi di un array di int: funzioni 44
45
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])
46
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Somma degli elementi di un array di int: funzioni – con int *valori 46
47
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE int *valori Vs int valori[] 47 Aritmetica dei puntatori Accesso tramite array
48
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
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.