Capitolo primo: prerequisiti
Introduzione
Argomenti che si suppone siano noti al lettore:
- Calcolo automatico, elaborazione, algoritmo
- Automa
- Stati e registri
1 Architettura, organizzazione e struttura dei calcolatori
- Macchine di Turing
2 Livelli di astrazione e strati
- Caratteristiche fondamentali di un computer
3 I modelli fondamentali e l'architettura
4 Modello di Von Neumann
4.1 Modello “penna e carta”
4.2 Le unità del modello di Von Neumann
Spunto da Stallings.
4.3 Le istruzioni elementari del modello
4.4 Caricamento del programma e sua esecuzione
2 Livelli di astrazione e strati
4.5 L'algoritmo del processore
5 Organi di un calcolatore: unità di ingresso e uscita
La suddivisione in livelli di un sistema per l'elaborazione delle informazioni può avvenire.
5.1 Unità di ingresso
In funzione dell'osservatore che lo usa o lo progetta; in tal caso si parla più propriamente di.
5.2 Unità di uscita
Strati del sistema: in fig. 2.1 è mostrata una tipica suddivisione di tal genere che si sviluppa.
6 La memoria principale (o centrale)
Dalla visione del sistema che ha l'utente finale fino a includere quella propria del progettista.
7 Memorie di massa elettroniche
8 Unità logico-aritmetica
9 Il processore e l'unità centrale (CPU)
Gestione aziendale, progettazione, …
Pacchetti applicativi
Utenti
Programmi
Sistema operativo (gestione lavori, sistema di archiviazione)
Processori del sistema operativo (traduttori, editor, ...)
Sistema software
Sistema operativo (gestione sistema): routine di servizio delle interruzioni, drivers, etc.
Architettura del sistema
Unità hardware componenti: sistema processore, unità logico-aritmetica, input-output, memorie hardware.
Architettura delle unità.
Macchine elementari: addizionatori, codificatori, decodificatori, reti di controllo, registri, flip-flop, porte, etc.
Unità hardware.
Circuiti integrati e apparati elettromeccanici.
Componenti elettronici ed elettromeccanici.
Figura 1.1 - Struttura a strati di un sistema per l'elaborazione delle informazioni.
L'utente finale «vede» il sistema come un oggetto unico che gli consente la soluzione di una propria problematica, ad es. gestione aziendale, progettazione di impianti, di strutture, etc., e che si integra, o dovrebbe integrarsi, con una realtà esterna, ad es. struttura aziendale, centro di progetto e ricerca, etc.
I componenti del sistema, oltre a componenti «esterni» all'elaboratore, ad es. reparto amministrativo dell'azienda, metodi di simulazione per la progettazione di impianti, etc., sono i pacchetti applicativi (packages), sovente fra loro collegati, che affrontano una singola problematica dell'utente finale, ad es. contabilità generale dell'azienda, gestione magazzini, contabilità industriale, progetto di strutture, di reti elettriche, etc.
Il progettista di pacchetti applicativi è anch'esso un utente del sistema, ma di tipo diverso: esso tiene conto delle esigenze dell'utente finale, ma è concentrato soprattutto sulla singola problematica che un pacchetto applicativo deve risolvere.
Esso quindi è interessato in particolare a come articolare ciascun pacchetto in programmi, ad es. caricamento di movimenti, aggiornamento di archivi base, calcolo di telai, distribuzione del carico, etc., alle sezioni «gestione lavori» e «archiviazione» del sistema operativo (s.o.) e a tutti quei processori del s.o. che o sono strumenti per la realizzazione e messa a punto dei programmi, traduttori, editors, interpreti, etc., o possono essere inglobati nei pacchetti stessi, programmi di sort, merge, etc.
- L'algoritmo come concetto intuitivo: una sequenza finita di azioni elaborative da eseguire automaticamente: l'algoritmo necessita di un esecutore per essere eseguito;
Il personale di gestione del sistema interagisce con i pacchetti applicativi e quindi con i singoli programmi utilizzando il s.o. che coordina e disciplina la loro esecuzione nella sezione gestione lavori.
- Il modello di automa: ciascun automa esegue un algoritmo, ottenuto come sequenza di non ulteriormente precisate "uscite", in risposta ad analoghi "ingressi"; con l'automa si introduce il concetto di stato;
Il progettista del s.o. è ovviamente interessato a tutti gli strati del sistema software, ma deve anche conoscere a vari livelli di dettaglio tutti gli strati superiori del sistema per venire incontro alle esigenze dell'utenza.
- Il modello di Turing: ciascuna macchina esegue un algoritmo, come sequenza di alcune precisate azioni elaborative elementari, destra, sinistra, leggi, scrivi, ... e, sorprendentemente, la tesi di Church ha affermato che questo semplice modello consente in realtà di fornire una definizione di algoritmo: è algoritmo ciò che può essere calcolato da una macchina di Turing.
- Esiste una distinta macchina di Turing per ciascun distinto problema da calcolare.
Peraltro, esso deve soprattutto conoscere il sistema hardware, architettura e unità componenti, per poter progettare la sezione del s.o. «gestione del sistema». Tale sezione infatti «vede» il sistema hardware in quanto interviene ripetutamente durante l'esecuzione di un qualsiasi programma, sia per controllarne l'avanzamento con l'attribuzione delle risorse necessarie, sia per sovraintendere alle operazioni di ingresso uscita e alla loro sincronizzazione.
Ma il concetto che caratterizza un calcolatore è quello di possedere un programma registrato in memoria: la medesima macchina fisica, il calcolatore, attrezzata con differenti "programmi" è in grado di rappresentare tutte le possibili macchine di Turing, fatti salvi soltanto alcune questioni di natura puramente teorica sulla "capacità" di memoria.
Il sistemista hardware opera a livello di architettura hardware del sistema e quindi lo vede come un insieme di componenti, dette unità hardware, fra loro connesse in una determinata struttura logico-topologica: unità classiche sono il processore centrale (CPU), l'unità aritmetico-logica (ALU), i sistemi di ingresso-uscita (I/O), le memorie ed appositi «canali» e «bus» per il loro collegamento.
Un "programma" è la descrizione formalizzata di un algoritmo, espressa in un linguaggio di programmazione: è questo il nuovo concetto che verrà introdotto con i prossimi modelli.
Oltre all'architettura fondamentale di Von Neumann, lo schema classico di collegamento fra le unità citate, sono oggi possibili anche altre architetture, sia costituenti una semplice evoluzione di quella fondamentale in quanto ottenute multiplando le unità componenti e realizzando appositi collegamenti e sincronizzazioni fra esse, sia basate su principi diversi.
In un modello alternativo, la stessa macchina di Turing potrebbe in effetti essere una macchina "a programma": basterebbe in proposito concepire un "linguaggio" formale con il quale esprimere la sequenza delle azioni elaborative elementari ed un organo che interpretasse tali "istruzioni" eseguendole; la descrizione della macchina avverrebbe attraverso tale "programma" piuttosto che attraverso la tabella delle transizioni classica dei modelli di automa e di Turing.
Ovviamente il sistemista hardware deve anche conoscere in un certo dettaglio gli strati inferiori del sistema software, in quanto l'architettura del sistema hardware e le funzioni sviluppate da ciascuna unità componente condizionano strettamente la potenzialità e il parallelismo di esecuzione delle funzioni elementari presenti nei programmi degli strati superiori.
In particolare, la potenzialità è condizionata dal linguaggio macchina dei processori mentre il parallelismo dal tipo di architettura impiegata.
Il progettista delle unità hardware studia a sua volta l'unità a livello architettura, individuandone le macchine componenti più elementari e le loro connessioni. Tale approccio può ovviamente essere iterato dando luogo ad un processo iterativo più o meno lungo, indipendenza della complessità delle funzioni espletate dall'unità, e che conduce alla individuazione delle macchine elementari che la compongono e delle relative connessioni; ad esempio una unità aritmetica è composta da un divisore, un moltiplicatore, un sottrattore ed un addizionatore; quest’ultimo, se l'unità è in virgola mobile, è composto da una macchina per il confronto degli esponenti e da un addizionatore in virgola fissa, che è a sua volta composto da un addizionatore di cifre e così via.
Le macchine elementari o sono di tipo elettromeccanico o di tipo elettronico; con particolare riferimento a queste ultime, esse sono in genere prodotte in appositi chip di circuiti integrati, in tali chip, peraltro, si realizzano anche funzioni più complesse, quali quelle corrispondenti ad una intera unità: di esse si richiede dapprima un progetto logico e successivamente un progetto elettronico che sono di competenza rispettivamente del progettista di reti logiche e del progettista di circuiti elettronici.
3 I modelli fondamentali e l'architettura
L'architettura di un sistema di elaborazione delle informazioni non prescinde dai modelli teorici di base dell'informatica; anzi, almeno sul piano logico-funzionale, ne è la pratica attuazione.
Il modello fondamentale al quale si ispirano le architetture dei moderni calcolatori è quello di Von Neumann, che tra breve presenteremo, anche se il modello originario ha subito nel tempo revisioni sostanziali, ma non tali da ridefinire un distinto modello.
Il modello di Von Neumann nasce come evoluzione dei modelli preesistenti degli automi e della macchina di Turing e pertanto, prima di presentarlo, richiamiamo i principi introdotti dai suddetti modelli.
I concetti fondamentali introdotti indipendentemente dal modello di Von Neumann sono, in sintesi:
- L'algoritmo come concetto intuitivo: una sequenza finita di azioni elaborative da eseguire automaticamente: l'algoritmo necessita di un esecutore per essere eseguito.
- Il modello di automa: ciascun automa esegue un algoritmo, ottenuto come sequenza di non ulteriormente precisate "uscite", in risposta ad analoghi "ingressi"; con l'automa si introduce il concetto di stato.
- Il modello di Turing: ciascuna macchina esegue un algoritmo, come sequenza di alcune precisate azioni elaborative elementari, destra, sinistra, leggi, scrivi, ... e, sorprendentemente, la tesi di Church ha affermato che questo semplice modello consente in realtà di fornire una definizione di algoritmo: è algoritmo ciò che può essere calcolato da una macchina di Turing.
- Esiste una distinta macchina di Turing per ciascun distinto problema da calcolare.
4 Modello di Von Neumann
L’architettura dei calcolatori elettronici attuali trae le sue origini da un modello generale di elaboratore, concepito dal matematico John Von Neumann ed illustrato nel 1945 in una proposta[1] per la realizzazione di un nuovo calcolatore[2] chiamato EDVAC (Electronic Discrete Variable Computer).
La realizzazione dell’EDVAC fu effettivamente portata a termine solo nel 1952 dall'Istituto per gli Studi Avanzati (IAS) di Princeton (USA), ma già nel 1948 era stato realizzato in Inghilterra, presso l’Università di Manchester, un calcolatore (Manchester Mark I) basato sul modello di Von Neumann.
4.1 Modello “penna e carta”
Prima di introdurre il modello di Von Neumann, che ha ispirato l’architettura dei primi calcolatori elettronici, se ne illustra una versione ipotetica in cui il ruolo di esecutore è affidato ad un operatore inintelligente dotato di “penna e carta” come strumenti ausiliari.
Un operatore inintelligente legge istruzioni scritte su un foglio di carta, il “programma”, e dispone da un lato di un tabulato in cui trascrive e da cui legge i risultati di operazioni elementari e dall'altro una calcolatrice elettrica per l'esecuzione di dette operazioni.
Le istruzioni che costituiscono il "programma di calcolo" richiedono in generale l'esecuzione delle seguenti operazioni:
- Operazioni di ingresso dati, cioè assegnazione di valori alle variabili del programma;
- Operazioni di trasferimento dati dal tabulato ai registri della calcolatrice e viceversa;
- Operazioni aritmetiche e logiche, eseguite dalla calcolatrice a seguito di azionamento di appositi tasti;
- Operazioni di uscita, mediante le quali l'operatore restituisce al committente i risultati della elaborazione.
Il programma eseguito dall’operatore è il risultato di un’approfondita analisi del problema e traduce, in termini operativi e con l’impiego delle sole istruzioni che l’operatore è in grado di interpretare, l’algoritmo che una persona esperta, il programmatore, ha individuato come adatto a risolvere il problema.
4.2 Le unità del modello di Von Neumann
Il modello di Von Neumann aderisce alla metafora "penna e carta" e, secondo esso, un sistema è costituito dalle seguenti "unità":
Controllo.
Controllo.
U. di controllo (processore).
Controllo.
U. di uscita dati (output).
U. di ingresso dati (input).
Memoria.
Dati.
A.L.U.
Figura 4.1 Modello di Von Neumann.
- L'unità di ingresso (input), che consente l'immissione, in gergo "lettura", di dati nella memoria in fase di esecuzione del programma e del programma stesso in una fase preliminare che diremo di caricamento del programma.
- L'unità di memoria, nella quale vengono registrate tutte le informazioni, cioè le istruzioni del programma e i dati originari, intermedi e finali; essa svolge in effetti la duplice funzione del foglio su cui veniva scritto il programma e del tabulato per i dati di cui all'esempio.
- L'unità di controllo o di governo, detta anche processore, che presiede a tutte le operazioni del calcolatore, interpretando le istruzioni successivamente prelevate dalla memoria ed inviando alle specifiche unità i segnali per l'esecuzione delle singole operazioni.
- L'unità aritmetico-logica o di elaborazione (Arithmetic-Logic Unit - ALU), in grado di eseguire, a richiesta dell'unità di controllo, le operazioni aritmetiche e logiche.
- L'unità di uscita (output), per la presentazione dei risultati dell'elaborazione su appositi documenti.
Il modello è rappresentato graficamente in figura 10.1, ove sono posti in evidenza con linee tratteggiate lo spostamento dei dati fra le diverse unità e con le linee piene la funzione di supervisione esercitata dall'unità di controllo sulle altre unità.
4.3 Le istruzioni elementari del modello
Pur senza entrare nel dettaglio operativo, il modello si basa sulla scelta di alcune operazioni elementari, azioni elaborative, semplici, che costituiscono le componenti fondamentali d
4.4 Caricamento del programma e sua esecuzione
L'esecuzione di un programma al calcolatore avviene fondamentalmente in due "fasi" o "tempi" successivi:
- Caricamento del programma (al tempo di caricamento - load time);
- Esecuzione del programma (al tempo di esecuzione - run time).
Nella prima fase, il programma viene prelevato dall'unità di ingresso e registrato in memoria, nella seconda esso viene eseguito per opera dell'unità di controllo che interpreta le successive istruzioni ed attiva opportunamente le altre unità.
Si noti che, mentre il programma viene letto nella fase di caricamento preventivo, la lettura dei dati è una delle operazioni richieste dal programma e pertanto questa viene eseguita in fase di esecuzione, nei tempi e con le modalità prefissate dal programma.
Questa precisazione è stata qui fatta soprattutto per colui che legge per la prima volta i particolari del funzionamento del calcolatore, mentre l'"esperto" dovrebbe già sapere che in effetti dal punto di vista del processore, e quindi dell'architettura del sistema, le due fasi di cui sopra non sono distinte: la fase di caricamento del programma è, in effetti, essa stessa la fase di esecuzione di un altro programma particolare, il caricatore di programmi o loader.
In altri termini, le istruzioni del programma sono i dati di un altro programma.
4.5 L'algoritmo del processore
Il programma è una sequenza di "istruzioni", ciascuna delle quali esprime, in un linguaggio prefissato, una delle azioni elaborative proprie del sistema.
Il linguaggio direttamente interpretato dal processore è il linguaggio macchina e quindi il programma e le istruzioni del modello in esame sono quelli di macchina.
Ma come fa il processore ad eseguire le istruzioni del linguaggio macchina, mentre questo è in memoria? Nella unità di controllo è realizzato circuitalmente, o comunque nella macchina di livello immediatamente inferiore a quella in esame, un apposito algoritmo del processore che nelle sue linee essenziali, nel seguito l'algoritmo sarà particolarizzato e specializzato, alterna in ciclo due attività fondamentali, fig.:
- Accesso ad una istruzione (fetch);
- Esecuzione dell'istruzione (execute).
Nella prima fase, l'unità di controllo accede ad una istruzione, determinata dall'istruzione precedentemente eseguita, prelevandola dalla memoria e trasportandola nei propri registri.
Nella fase di esecuzione, l'istruzione così individuata viene interpretata ed eseguita, con l'ausilio, a seconda dei casi, delle unità di ingresso, aritmetico-logica e di uscita. Infine, l'unità di controllo riprende ciclicamente un nuovo accesso ed una nuova esecuzione.
Nonostante la struttura di principio estremamente elementare che risulta dallo schema proposto, il calcolatore numerico possiede notevoli capacità elaborative e flessibilità di impiego: tali prerogative gli derivano fondamentalmente dalla enorme velocità operativa, dell'ordine della decina di nanosecondo per azione elaborativa elementare, dalla capacità di memoria, in grado di registrare un numero di informazioni praticamente illimitato e soprattutto dalla possibilità di memorizzare i programmi e di procedere pertanto alla interpretazione delle relative istruzioni a velocità elettronica.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
-
Calcolatori elettronici
-
Appunti Calcolatori Elettronici
-
Calcolatori Elettronici I - Esercizi
-
Calcolatori elettronici I - analisi