Architettura degli elaboratori elettronici
Il calcolatore è capace di:
a) Contenere Informazioni
b) Trasferire Informazioni ( da un punto all'altro al suo interno, da dentro a fuori e viceversa)
c) Fare Calcoli con le informazioni che possiede
b) e c) significa ELABORARE, MANIPOLARE Informazioni in modo "preciso" e veloce.
Le istruzioni per eseguire queste manipolazioni sono scritte nei programmi.
Ci chiediamo adesso che cosa sono le Informazioni:
per comprendere ciò consideriamo un esempio di informazioni
a) il valore della base di un triangolo in cm.
b) il valore della altezza in cm.
c) il fatto che dobbiamo moltiplicare base per altezza.
d) il valore 2.
e) il fatto che dividendo basexaltezza per 2 si ottiene l'area del triangolo.
DATI e ISTRUZIONI rappresentano quindi l'informazione che da ora in avanti indicheremo con il termine INFORMAZIONI.
Vediamo adesso come è il modo di lavorare umano nella risoluzione del problema di cui sopra:
- sapere quanto è la base e scriverlo su un foglio di lavoro b=4
- sapere quanto è l' altezza e scriverlo su un foglio di lavoro h=6
- fare il prodotto bxh=24 scritto sempre sul foglio
- dividere il prodotto ottenuto per 2, il risultato scritto sul foglio
- dire che l'area del triangolo è uguale a 12.
Il modo di lavorare del calcolatore è uguale! ma il foglio coincide con la memoria centrale, che a sua volta è una griglia di locazioni in cui memorizzare le INFORMAZIONI, vedi Fig. 1.1.
Fig. 1.1
2 |
||||
4 |
||||
12 |
||||
6 |
||||
24 |
Fig. 1.2
calcolare bxh |
dividere per 2 |
stampare l'area |
Normalmente le istruzioni, cioe' particolari tipi di informazioni, che rappresentano azioni da eseguire, sono memorizzate in locazioni di memoria consecutive.
Le informazioni nel nostro caso sono i passi del problema, cioè la base è da sapere, l'altezza è da sapere, la moltiplicazione, la divisione per 2, il problema trovare l'area del triangolo è da assegnare. Nella Fig. 1.1 in nero abbiamo visualizzato i dati del problema, da usare nel calcolo delle soluzioni.
Schema funzionale di un calcolatore
Fig. 1.3
Le linee tratteggiate rappresentano il percorso di controllo; le frecce rappresentano il percorso delle informazioni.
Possiamo immaginare che nella memoria sia gia contenuto il programma da far eseguire al calcolatore.
Quello che avviene puo' essere schematizzato cosi':
i dati vengono trasferiti dall'unita' di INPUT nella memoria; infatti c'e' bisogno di far passare da "fuori" a "dentro" il calcolatore i dati che dovranno servire alla soluzione.
Questi dati vengono memorizzati in due locazioni (quelle con 4 e 6), che chiameremo b e h. Eseguendo l'istruzione: "calcolare base per altezza", il calcolatore esegue 6x4 e memorizza il risultato in un'altra locazione che chiameremo prod. Eseguendo l'istruzione calcolare prod/2, il valore di prod/2 viene memorizzato in una locazione che chiameremo area. Poi, eseguendo l'ultima istruzione, stampare area (cioe' il valore 12) viene trasferito fuori del calcolatore, verso l'unita' di OUTPUT.
Nel calcolatore possiamo riconoscere le seguenti componenti strutturali fondamentali:
La MEMORIA è la parte del calcolatore per contenere le INFORMAZIONI. Per essere più precisi in un sistema di elaborazione la memoria ha lo scopo di memorizzare programmi, dati di ingresso, risultati parziali e finali.
La CPU è la parte che elabora INFORMAZIONI ed esegue calcoli e trasferimenti. Infatti noi possiamo pensare la CPU come costituita da due parti la Unità Logico-Aritmetica (ALU) avente la funzione di eseguire calcoli logici ed aritmetici e la Unità di Controllo che governa il funzionamento complessivo dell'elaboratore.
L' INPUT è la parte ( Unità ) che è il canale attraverso cui le informazione vanno in memoria ( dall'esterno del calcolatore al suo interno ).
L' OUTPUT è il canale di trasferimento delle informazioni dalla memoria all'esterno
Quindi l' elaboratore esegue istruzioni di :
a) Input (ingresso)
b) Calcolo/Trasferimento
c) Output (uscita)
controllate/eseguite dalla CPU (Central Processing Unit) cioè il processore del computer.
Le unità di ingresso e di uscita
Ci limitiamo a presentare solo alcune delle unità che sono attualmente in uso.
UNITA' DI INPUT
La tastiera, il mouse,lo joystick, il microfono, il telefono (modem), il touch screen, gli strumenti di misura.
UNITA' DI OUPUT
Il video (monitor), la stampante, lo speaker, la cuffia, gli strumenti medici.
Attraverso la tastiera l'utente invia al computer comandi e dati mentre attraverso il video l'utente riceve sia l' output dei programmi sia la visualizzazione delle informazioni da lui inserite.
La memoria secondaria
La memoria centrale che abbiamo visto è destinata ad archiviare istruzioni e dati che siano immediatamente disponibili per essere trattati dalla CPU. Se si vuole (e si deve) memorizzare le informazioni in modo permanente serve la memoria secondaria o ausiliaria. Queste informazioni vanno trasferite in memoria centrale ogni qualvolta vanno elaborate. La memoria secondaria (MS) è strutturalmente diversa dalla memoria centrale (MC) la quale ha la caratteristica di cancellare tutte le informazioni ivi contenute ogni qualvolta non sia alimentata elettricamente; innanzitutto è molto più grande in termini sia fisici che di capacità di immagazzinamento di INFORMAZIONI, poi è più lenta nel senso che per prelevare qualsiasi informazione da essa l'elaboratore impiega un tempo maggiore. Esempi di memoria secondaria sono: i floppy disk, i cd-rom, l'hard disk, i nastri magnetici. L'hard disk può avere una dimensione da 100 a 1000 volte maggiore della MC, ma queste INFORMAZIONI contenute nello hard disk devono essere trasferite sempre in memoria centrale.
Quanto detto fin qua coincide con l'Architettura di Von Neumann.
Lo scienziato John Von Neumann nel 1946 pubblicò un articolo sul progetto di una macchina per il calcolo automatico che introduceva il concetto di programma registrato in memoria.
John Von Neumann
Per gentile concessione degli Archives of the Institute for Advanced Study (Princeton - USA)
A fianco di Von Neumann l'elaboratore IAS realizzato presso l' Institute for Advanced Studies dell' università di Princeton New Jersey o macchina di Von Neumann, ultimata nel 1952. Nella parte bassa dell'elaboratore si vede una fila di tubi catodici (CRT) utilizzati come memoria gia nel 1948 da F.C.Williams nell'elaboratore inglese Mark 1 a Manchester. Come con i tubi catodici si può definire un punto in uno schermo, con lo stesso principio anche il bit veniva definito con un impulso. Nel 1955 tali memorie vengono sostituite da quelle a nuclei di ferrite. I principi su cui si basava la macchina Ias hanno influenzato tutte le realizzazioni successive di calcolatori. Ancora oggi la maggior parte dei calcolatori viene realizzata con una struttura simile alla macchina di Von Neuman.
Introduciamo una breve parentesi definendo il concetto di algoritmo. Un algoritmo è un procedimento risolutivo del problema, cioè un insieme di regole di calcolo che, eseguite ordinatamente, permettono di calcolare i risultati del problema a partire dalle informazioni a disposizione.
Perchè un insieme di istruzioni possa considerarsi un algoritmo deve rispettare le seguenti proprietà:
1) Non ambiguità : le istruzioni devono essere univocamente interpretate dall'esecutore dell'algoritmo (macchina o uomo).
2) Eseguibilità : l'esecutore deve essere in grado, con le risorse a disposizione, di eseguire ogni istruzione ed in un tempo finito.
3) Finitezza : l'esecuzione dell'algoritmo deve terminare in un tempo finito per ogni insieme di valori di ingresso.
Per delegare ad un calcolatore la soluzione di un problema, cioe' l'esecuzione di una serie di calcoli si deve:
a) individuare almeno un algoritmo adatto alla risoluzione del problema
b) individuare una rappresentazione dell'algoritmo, dalle informazioni a disposizione e di quelle utilizzate dall'algoritmo per mezzo di un linguaggio detto: linguaggio di programmazione.
Il programma è la rappresentazione dell'algoritmo in un linguaggio di programmazione.
PROBLEMA -------> ALGORITMO -------> PROGRAMMA