Lezione I                                               FRAMES     NOFRAMES

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

Esercizio      

              

Test 1