Che cosa è un computer?

I calcolatori sono usati quotidianamente in ogni tipo di attività umana. Per esempio per scrivere una relazione, per vedere il saldo del conto corrente o per giocare.

I computer sono ottimi per svolgere diverse attività sia lavorative che ludiche.

In confronto, altre macchine svolgono un'attività più ristretta: un tostapane tosta il pane, una lavatrice esegue al massimo una decina di programmi diversi.

Domanda: Perché invece i calcolatori possono eseguire attività così diverse tra loro?
Perché possono eseguire programmi diversi!

Un dato programma vi calcola il saldo del conto corrente, un altro (probabilmente progettato da una diversa società) elabora i testi, un terzo programma esegue un gioco.

Il computer è una macchina che immagazzina dati (numeri, parole, immagini), interagisce con i dispositivi (il monitor, sistema audio stampante) ed esegue programmi.




I Programmi

I programmi sono sequenze di operazioni necessarie per risolvere un problema o svolgere un'attività, tali operazioni sono espresse in un linguaggio di programmazione che il calcolatore è in grado di comprendere ed eseguire.

I calcolatori infatti possono eseguire con grande velocità una quantità enorme di operazioni elementari (miliardi al secondo). I programmi descrivono come combinare queste operazioni per risolvere un dato problema.

Sembra incredibile che programmi complessi siano costituiti da operazioni estremamente semplici. Qualche esempio di queste operazioni:

  • Invia una lettera A alla stampante.
  • Scrivi un punto rosso in questa posizione sullo schermo.
  • Somma questi due numeri.
  • Se questo valore è negativo, continua il programma da quell'istruzione.

ll procedimento che porta alla definizione di programmi adatti a risolvere problemi è detto programmazione.

Usare un calcolatore non significa "programmare" [per guidare una macchina non è necessario essere meccanici...]

Nei calcolatori si distinguono due componenti:

  • hardware (la parte fisica, elettronica/meccanica, tangibile) e
  • software (la parte logica, i programmi che permettono di usarlo).




Architettura di un computer

L'architettura di Von Neumann riflette le funzionalità richieste da un elaboratore:

  • memorizzare i dati e i programmi in memoria principale (RAM)
  • dati devono essere elaborati dall'unità di elaborazione centrale (CPU)
  • comunicazione con l'esterno tramite l'unità di ingresso/uscita (periferiche)
  • le componenti del sistema devono scambiarsi informazioni usando il bus di sistema
Tra le periferiche evidenziamo la memoria secondaria (disco rigido).

Rappresentazione schematica dell'hardware di un computer




Memoria centrale (o RAM)

Alcune delle schede RAM più comuni

  • Concettualmente, la RAM è una sequenza di celle di memoria (dette parole), tutte della stessa dimensione
    • Ogni cella è costituita da una sequenza di bit (binary digit). Il numero di bit di una cella di memoria (dimensione) dipende dall'elaboratore, ed è un multiplo del byte (8 bit): esempio 8, 16, 32...
    • Ogni cella di memoria è identificata in modo univoco dal suo indirizzo

  • Il tempo di accesso ad una cella di memoria è indipendente dalla posizione della cella, per questo viene chiamata RAM (random access memory)

  • Il contenuto di ogni cella può essere sia letto che scritto

  • La RAM è caratterizzata da un'alta velocità di accesso (attualmente ca.10ns, per lettura e scrittura)

  • La RAM è volatile: quando si spegne il calcolatore il suo contenuto viene perso

La dimensione della memoria è misurata in byte (tipicamente 1GByte sui PC moderni)

  • Kilobyte 210 circa 103 byte
  • Megabyte 220 circa 106 byte
  • Gigabyte 230 circa 109 byte
  • Terabyte 240 circa 1012 byte




Memoria secondaria

  • Esempi di memoria secondaria: HD (dischi rigidi), floppy, CDROM, CDRW, DVD, pendrive, nastri,....

  • Non volatile: mantiene i dati anche quando si spegne il calcolatore

  • Capacità maggiore della memoria centrale (decine/centinaia di GB)

  • Più economica della RAM

  • Accesso ai dati sequenziale, non casuale come nella RAM

  • Tempo di accesso più lento rispetto alla memoria centrale (circa 10ms per il disco rigido)

Diversi tipi di memoria secondaria




Bus di sistema

Il bus è un canale attraverso cui diversi componenti elettronici (quali ad esempio le varie parti di un computer) dialogano fra loro.

Notare che a differenza di una connessione punto-a-punto, i diversi dispositivi sono collegati allo stesso insieme di "fili". Infatti l'architettura a più bus, proposta teoricamente agli albori dell'informatica da John von Neumann nel 1945, non è realizzabile a causa dell'altissimo numero di connessioni che sarebbero necessarie.

Il bus di sistema di un calcolatore è inciso sulla scheda madre (da 50 a oltre 100 fili in rame incisi sulla scheda madre, sui quali viaggiano cifre binarie, 0 o 1, in successione) ed è dotato di connettori separati ad intervalli regolari per l'innesto dei moduli di memoria e di I/O.

Suddiviso in tre parti:

  • Dati: il bus sul quale transitano le informazioni, usufruibile da tutti i componenti del sistema, sia in scrittura sia in lettura.

  • Indirizzi: il bus sul quale transitano gli indirizzi delle periferiche e delle celle di memoria dove andare a scrivere o a leggere le informazioni; fruibile in scrittura solo dalla CPU ed in lettura dagli altri componenti.

  • Controlli: trasferisce i comandi tra le varie unità

Esistono diversi tipi di standard per i bus. Nel caso di periferiche più lente è frequente l'uso di bus seriali (es. USB, FireWire) invece che paralleli.

Slot di collegamento al bus




CPU (Central Processing Unit)

Microprocessore Intel 80486DX2 (visto da sotto) e una scheda madre

Coordina le attività di tutte le componenti del calcolatore

Interpreta le istruzioni che compongono il programma e le esegue

È formata da 3 componenti principali:

  • Unità logico-aritmetica (ALU): effettua i calcoli aritmetici e logici

  • Unità di controllo: coordinamento di tutte le operazioni

  • Registri:celle di memoria ad accesso molto veloce all'interno della CPU
    • registro istruzione corrente (IR): contiene l'istruzione in corso di esecuzione
    • contatore di programma (PC): contiene l'indirizzo della prossima istruzione da eseguire
    • registro dei flag: memorizza alcune informazioni sul risultato dell'ultima operazione (carry, zero, segno, overflow,...)
    • registro interruzioni: utilizzato per la comunicazione con le periferiche

La CPU può utilizzare una memoria Cache (che risiede all'interno del processore stesso) per accelerare l'accesso alle posizioni di memoria RAM usate più frequentemente.

Ultimamente si sono affermate le CPU dual core che uniscono due processori indipendenti e le rispettive Cache in un singolo package. Questo tipo di architettura consente di aumentare la potenza di calcolo.

Tutte le attività interne alla CPU sono regolate da un orologio (clock) che genera impulsi regolari ad una certa frequenza, ad esempio 1GHz (109 impulsi al secondo), 1.66GHz, 2GHz, .....




Ciclo dell'unità di controllo

Il programma viene memorizzato in celle di memoria consecutive della RAM

L'unità di controllo lavora eseguendo il ciclo di:

  • Prelievo: tramite il bus la CPU preleva dalla memoria l'istruzione indirizzata dal PC, la carica nel registro IR e aggiorna il PC

  • Decodifica: l'istruzione in IR è una sequenza di bit che indicano l'operazione da eseguire ed eventualmente i registri della ALU o l'indirizzo di memoria nel quale si trovano gli operandi.

  • Esecuzione: la CPU esegue l'istruzione in IR.