Lezione9 - Dipartimento di Ingegneria dell`Informazione

Transcript

Lezione9 - Dipartimento di Ingegneria dell`Informazione
Lezione 9
•L’architettura di un calcolatore
•Il software di base
L’elaboratore Elettronico
• Un elaboratore elettronico è una macchina
elettronica in grado di elaborare dati
secondo le specifiche date da un algoritmo
• Internamente all’elaboratore tutte le
informazioni sono rappresentate in binario:
sia dati che programmi
1
Le unità fondamentali
• Le unità che compongono il calcolatore
sono:
– La memoria centrale (CM)
– L’unità di controllo (CU)
– L’unità aritmetico logica (ALU)
– L’unità di ingresso/uscita (IO)
– Le unità di memoria di massa
Le unità
• La memoria centrale: è il dispositivo in
cui vengono mantenuti sia il programma
che i dati su cui l’elaboratore opera
• L’unità di controllo: è il dispositivo che
provvede alla esecuzione delle istruzioni
che compongono un programma. Provvede
a coordinare le altre unità.
2
Le unità
• L’unità aritmetico/logica: è il dispositivo
che esegue le operazioni di calcolo
(+,*,<,=,etc) e logiche (and,or,not,etc)
• Le unità ingresso/uscita: sono i dispositivi
tramite i quali è possibile comunicare dati
all’elaboratore (ingresso) e conoscere i
risultati dell’elaborazione (uscita).
Le unità
• Le unità di memoria di massa: sono
dispositivi in cui è possibile mantenere
grandi quantità di informazioni (dati o
programmi) in modo permanente (anche
quando un calcolatore è spento).
3
Interazione tra le unità
• Le unità sono collegate tra loro tramite bus
• Un bus è un insieme di linee in grado di
trasmettere un segnale elettrico.
• Attraverso un bus le unità si scambiano dati o
istruzioni
• I bus si dividono in bus per il
– trasferimento di dati
– trasferimento di indirizzi
– trasferimento di comandi
Bus esterno
Unità di controllo
Unità
aritmetico-logica
Bus interno
Architettura della Calcolatore
Unità di
memoria centrale
Unità
periferica
4
Interazione tra le unità
• Schema generale:
– L’unità di controllo acquisisce dalla memoria centrale
l’istruzione
– se è una istruzione di IN/OUT trasferisce i dati verso o
in uscita dalla memoria centrale
– se è una istruzione di elaborazione dei dati la trasferisce
alla unità aritmentico-logica insieme al comando di
quale operazione eseguire, preleva il risultato e lo
trasferisce nella memoria centrale
– L’unità di controllo acquisisce l’istruzione successiva
dalla memoria
La memoria centrale
• E’ un insieme di celle ciascuna delle quali
può contenere una informazione in forma
binaria
• La dimensione della cella è il numero di bit
che essa contiene
• Tale dimensione è anche detta parola
• Sono possibili parole di 16, 32, 64 bit
5
La memoria centrale
• Le celle costituiscono un insieme ordinato
numerato progressivamente da 0 a N-1
• N è la dimensione della memoria centrale
detta capacità
• Si fa riferimento al contenuto di una cella
tramite il suo indirizzo
• La memoria è volatile, cioè non mantiene le
informazioni quando si spenge l’elaboratore
La memoria centrale
• Le operazioni che si possono eseguire sulla memoria
centrale sono la scrittura e la lettura
• Non possono essere eseguite operazioni direttamente in
memoria: il contenuto va trasferito su dei registri,
elaborato, e poi riscritto
• La memoria centrale viene anche detta ad accesso casuale
o Random Access Memory (RAM) poiché il tempo di
accesso per una data cella è indipendente dalla cella
(ovvero dal suo indirizzo)
• Il tempo di accesso è inferiore ai 100 ns
6
Scrittura
• Operazione con cui si deposita
informazione in memoria centrale
• Necessita di un dato e un indirizzo della
cella in cui si vuole scrivere.
• L’operazione è distruttiva ovvero cancella
l’informazione precedentemente contenuta
nella cella
Lettura
• Operazione con cui si preleva informazione
dalla memoria centrale
• Necessita dell’indirizzo della cella in
memoria centrale da cui si vuole leggere
• E’ un’operazione non distruttiva, cioè si
copia l’informazione presente nella cella
lasciando quest’ultima inalterata
7
Architettura della memoria
Registro indirizzi
Decodificatore
indirizzi
bus
MEMORIA
CENTRALE
Registro dati
Organizzazione della memoria
centrale
• I componenti fondamentali della memoria centrale
sono:
– memoria: l’insieme delle celle
– registro indirizzi: contiene l’indirizzo della cella a cui si
vuole far riferimento
– decodificatore di indirizzi: dispositivo che seleziona la
cella il cui indirizzo è specificato nel registro indirizzi
– registro dati: contiene l’informazione che deve essere
scritta o quella che è stata letta
– bus: collega la memoria al resto dei dispositivi
8
Operazioni sulla memoria
centrale
• Scrittura:
– L’indirizzo della cella passa dal bus e viene
memorizzato nel registro indirizzi
– Il dato passa dal bus e viene memorizzato nel
registro dati
– viene inviato un segnale di scrittura che attiva il
trasferimento dell’informazione contenuta nel
registro dati nella cella il cui indirizzo è nel
registro indirizzi
Operazioni sulla memoria
centrale
• Lettura:
– L’indirizzo della cella passa dal bus e viene
memorizzato nel registro indirizzi
– Viene inviato un segnale di lettura che attiva il
trasferimento dell’informazione contenuta nella
cella il cui indirizzo è nel registro indirizzi nel
registro dati
– Viene trasferito sul bus il dato memorizzato nel
registro dati
9
L’unità aritmetico logica
• E’ il dispositivo capace di eseguire le operazioni
aritmetiche fondamentali, le operazioni logiche e
di shift
• La CU trasmette alla ALU gli operandi, cioè i dati
su cui deve eseguire una operazione, e un
comando che indica quale operazione
• La ALU esegue l’operazione e pone il risultato sul
registro risultato, e inoltre invia informazioni sulle
condizioni dell’operazione
Condizioni dell’operazione
• Le condizioni sono:
–
–
–
–
risultato nullo
positivo, negativo
overflow sì o no
carry sì o no
• Queste informazioni sono codificate in una parola
di 4 bit
• Es. 0101 =non nullo, positivo,no overflow, sì
carry
10
Architettura della ALU
Registro
accumulatore
bus
Cicuiti
Aritmetico-Logici
Registro
risultato
Operazioni in ALU
• Esecuzione di una operazione:
– si trasferisce un operando dal bus e si
memorizza su registro accumulatore
– si invia un comando di operazione alla ALU
– si copia il risultato sul registro risultato
– si trasferisce il risultato sul bus
11
I registri accumulatori
• E’ il registro su cui può operare direttamente
l’ALU
• Con una architettura a 16 bit è possibile operare in
floating point a 32 bit utilizzando du registri
accumulatori da 16 bit ciascuno
• Architetture che posseggono più di un registro
accumulatore possono memorizzare risultati
temporanei su questi per incrementare le
prestazioni
L’unità di controllo
• L’unità di controllo è il dispositivo che
sovraintende e coordina tutti gli altri dispositivi
• La CU legge l’indirizzo da cui prelevare una
istruzione dalla memoria la pone nel registro
istruzione, la decodifica ed inizia tramite la logica
di controllo ad attivare i vari dispositivi
• Successivamente si modifica (incrementa)
l’indirizzo a cui leggere l’istruzione successiva e si
ripete il ciclo
12
Architettura della unità centrale
Registro
contatore di programma
Logica di controllo
bus
Decodificatore
istruzione
Registro
istruzione
Il registro contatore di
programma
• Detto Program Counter (PC), contiene l’indirizzo
della cella di memoria centrale in cui è contenuta
l’istruzione che deve essere eseguita.
• La CU incrementa di 1 il contenuto del PC per
leggere l’istruzione successiva
• Se l’istruzione da elaborare è un’istruzione di salto
allora la CU scrive direttamente dentro il PC che
contiene così l’indirizzo della istruzione a cui si
vuole saltare
13
L’esecuzione delle istruzioni
• Esecuzione di una istruzione:
• Fase di fetch (o di prelievo)
– si copia il contenuto della cella in memoria centrale con
indirizzo specificato dal program counter, sul registro
istruzione o instruction register (IR)
– si incrementa il PC di uno
L’esecuzione delle istruzioni
• Esecuzione di una istruzione:
• Fase di decodifica
– IR passa l’istruzione ad un decodificatore di istruzioni
che genera i segnali per la logica di controllo
14
L’esecuzione delle istruzioni
• Esecuzione di una istruzione:
• Fase di esecuzione
– vengono attivati i dispositivi interessati all’esecuzione
dell’istruzione (ALU) e coordinano il trasferimento
delle informazioni da un dispositivo ad un altro (ex.
dalla memoria centrale ad un dato registro)
– se l’istruzione era una istruzione di salto si modifica il
contenuto del PC
Sincronizzazione
• Ogni operazione avviene in modo
sincronizzato rispetto ad un orologio (clock)
interno al sistema
• Il clock di sistema genera impulsi a
intervalli regolari
• Oggi i calcolatori hanno clock di quasi
2GHz=2miliardi di impulsi al secondo
15
Altri registri
• Esistono altri registri:
– registro di stato: mantiene informazioni per
specificare il permesso di esecuzione di certe
istruzioni, di accesso a certe aree di memoria, di
abilitazione a ricevere segnali dalle unità
periferiche
– registro base: usato per suddividere la memoria
centrale in pagine, per indirizzare quantità
maggiori di memoria o per la protezione di aree
di memoria
Implementazione dell’unità
centrale
• Le funzioni elencate per la CU vengono
realizzate in modo diverso in diverse
architetture:
– Registri dedicati e registri generali: si possono
avere architetture che contengono un insieme di
registri generali ognuno dei quali può essere
utilizzato come accumulatore, program counter,
etc.
16
Central Unit
– Controllo cablato: l’esecuzione di una
istruzione può essere controllata passo passo
dai circuiti di decodifica e di tempificazione
della CU
– Microprogrammazione: in una memoria a sola
lettura vengono memorizzate delle
microistruzioni che controllano i passi
elementari in cui può essere decomposta
l’esecuzione di un’istruzione
Microporcessore
• Una unità centrale realizzata come un unico
circuito (non un insieme di parti fisicamente
separate) e integrato su larghissima scala
(Very Large Scale of Integration o VLSI) in
un unico supporto di silicio (chip) è detto
microprocessore
• Un microprocessore moderno ha le
dimensioni del cm quadrato
17
Velocità di elaborazione
• L’esecuzione di una istruzione è eseguita in
diversi passi: fase di prelevamento dalla memoria,
di decodifica, di esecuzione, di riscrittura in
memoria.
• Complessivamente una istruzione viene eseguita
in una decina di sottopassi, ciascuno dei quali
impiega non meno di un colpo di clock
• Di conseguenza un calcolatore con un clock di 1
GHz è in grado di eseguire 100 MIPS (Million
Instructions Per Second)
Velocità di elaborazione
• Le istruzioni floating point possono essere
realizzate su rappresentazioni di interi con
apposite procedure programmate o essere
eseguite in harware da dispositivi
specializzati detti coprocessori matematici
• Per questi si parla di MFLOPS Million of
Floating point Operations Per Second
18
Il Software di base
• Con il termine software di base si intende l’insieme dei
programmai che consentono ad un utente di eseguire
operazioni base come costruire e mandare in esecuzione un
programma.
• Il software di base è costituito da:
– sistema operativo
– editori
– traduttori
– linker
– caricatori
Il sistema operativo (S.O.)
• E’ un insieme di programmi che agiscono
come intermediari tra l’utente ed il
calcolatore
• Rende il calcolatore una macchina astratta,
indipenente cioè dalla sua propria
realizzazione fisica, dal modello, e ne
semplifica la gestione e l’interazione
19
Il Sistema Operativo
• Si distinguono i S.O. che lavorano in
monoprogrammazione e quelli che lavorano
in multiprogrammazione
– in monoprogrammazione è consentita
l’esecuzione di un programma alla volta
– in multiprogrammazione è possibile avere
contemporaneamente più programmi attivi in
stato diverso di avanzamento
I servizi
• Un Sistema Operativo fornisce i seguenti servizi:
• Esecuzione dei programmi
– carica in memoria centrale un programma specificato
dall’utente e lo esegue
• Operazioni di ingresso/uscita
– Un programma può richiedere la lettura/scrittura di dati
sia su mezzi di ingresso/uscita come video,stampanti e
tastiera o verso la memoria di massa. Queste richieste
sono inviate al SO che le rende così indipendenti dallo
specifico mezzo
20
I servizi
• Gestione file
– Un file è un insieme di informazioni in qualche modo
correlate fra di loro (può essere un programma, un
insieme di dati, un testo).
– Il SO scrive i file su dispositivi (nastri, dischi) e ne
permette la gestione.
– Le operazioni che il SO rende disponibili sono:
identificazione del file tramite un nome, creazione,
cancellazione, copia, lettura, organizzazione in
directory
I servizi
• Protezione
– In un sistema multiutente il SO deve garantire un
sistema di proprietà dei dati in modo che solo il
legittimo proprietario possa gestirli
• Rilevazione degli errori
– Il SO deve segnalare errori hardware (errori nella
memoria centrale), errori nei mezzi di IN/OUT
(scrittura difettosa su disco, mancanza di carta), errori
nei programmi (accesso ad aree di memoria non
permessa)
21
Interazione con il sistema
operativo
• Dopo la fase di installazione di un sistema
operativo (eseguita tramite un apposito
programma di installazione) l’utente deve
poter interagire con il SO tramite:
– attivazione del SO
– comunicazione tramite comandi
– comunicazione tramite chiamate al sistema
Interazione con SO
• Attivazione:
– Il sistema operativo viene conservato sulla
memoria di massa e viene caricato in memoria
centrale tramite un programma di bootstrap
– L’accensione del calcolatore manda in
esecuzione tale programma in modo automatico
che copia il sistema operativo da locazioni fisse
dalla memoria di massa
22
Interazione con SO
• Comunicazione tramite comandi
– L’interfaccia fra un SO e un utente è costituita da una
serie di comandi digitati su un terminale e messaggi che
il SO invia sul terminale.
– I comandi possono essere immessi in modo interattivo
o in modalità batch (vengono letti da file)
– I comandi sono letti ed interpretati da un interprete dei
comandi. L’interprete è la parte del SO attiva
inizialmente e quella a cui riturna il controllo dopo che
sono state eseguite le funzioni richieste
Interazione con SO
• Comunicazione tramite chiamate al sistema
– Le chiamate al sistema forniscono l’interfaccia
ra i programmi in esecuzine ed il sistema
operativo
– Es. IN/OUT viene fatto tramite funzioni che
astraggono dal dispositivo permettendo una
scrittura ad alto livello dei programmi
23
Programmi di sistema
• Per la creazione e l’esecuzione dei
programmi sono necessari i seguenti
software di base:
– Editore
– Traduttore
– Linker
– Caricatore
– Debugger
Editori
• E’ un programma con cui è possibile creare
e manipolare in modo interattivo un file di
caratteri
• In questo modo è possibile scrivere un
programma in un linguaggio di alto livello
• L’editore permette operazioni di
inserimento e cancellazione di parole e
frasi, modifiche, spostamenti e ricerche
24
Traduttori
• Il Traduttore è un programma che converte
un programma sorgente scritto in
linguaggio simbolico in codice binario
immediatamente comprensibile per il
calcolatore.
• I traduttori si dividono in
– compilatori
– interpreti
Compilatori
• Un compilatore riceve in ingresso un intero
file sorgente e restituisce un file oggetto.
• Successivamente è possibile mandare in
esecuzione il programma.
• Si realizzano programmi veloci perché la
fase di traduzione è eseguita una unica volta
ed è inoltre possibile effettuare
un’ottimizzazione sul codice prodotto
25
Interpreti
• Un programma Interprete legge una frase
alla volta dal programma sorgente, la
trasforma in una sequenza di istruzioni
macchina e la manda in esecuzione.
• Le fasi di traduzione ed esecuzione si
alternano ad ogni istruzione
• Permette la rilevazione e la correzione
immediata ed interattiva degli errori
Linker
• Il programma Linker assembla più
programmi oggetto prodotti separatamente.
• Diventa così possibile collegare programmi
con sottoprogrammi o con librerie scritte da
terze parti
26
Caricatori
• Detto anche loader, ha il compito di
trasferire un programma dalla memoria di
massa alla memoria centrale.
• E’ possibile tradurre un sorgente in oggetto
una unica volta e mandarlo in esecuzione
più volte tramite il loader.
Programmi diagnostici
• Detti debugger, aiutano a controllare il
flusso di esecuzione di un programma per
individuare eventuali errori.
• Permettono di eseguire un programma passo
passo, di specificare punti di arresto e di
verificare il contenuto di registri e variabili,
eventualmente di modificarli
27