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