L’architettura della maggior parte dei Calcolatori è organizzata secondo il modello della Macchina di von Neumann, ricercatore americano che realizzò (nel 1946) ENIAC (Electronic Numerical Integrator and Computer).
L’Unità di Elaborazione (CPU, Central Processing Unit) contiene i dispositivi elettronici in grado di acquisire, interpretare ed eseguire le istruzioni di un Programma. Coordina le varie attività, in particolare estrae istruzioni dalla memoria, le decodifica comprendendo il loro significato e le esegue in modo sequenziale.
La CPU si compone di tre componenti fondamentali:
– L’Unità di Controllo: è il dispositivo che coordina le operazioni della CPU. I suoi compiti principali sono:
1. Recuperare l’istruzione successiva da eseguire
2. Decodificarla
3. Organizzare la sua esecuzione
– L’Unità aritmetico-logica (ALU, Arithmetic and Logic Unit): effettua le operazioni di tipo aritmetico e logico richieste dalle istruzioni di un Programma.
Esegue le operazioni logiche (AND, OR, NOT), aritmetiche (somme, prodotti) e confronti. In genere memorizza il risultato in un registro predefinito. Inoltre imposta i bit del Program Status Word in accordo al risultato.
Operazioni su valori in virgola mobile e funzioni trascendenti (trigonometriche, radici quadrate, etc.) vengono in genere calcolate da un’unità apposita della ALU detta Floating Point Unit (FPU).
– Registri: in pratica costituiscono la memoria interna alla CPU, del tutto analoghi a celle di memoria, ma accessibili più velocemente; contengono dati o istruzioni di uso frequente, oppure risultati intermedi. Tra questi registri troviamo anche i Registri Dati e i Registri Indirizzi.
Tutte le azioni eseguite all'interno della CPU (ma anche di altri dispositivi) vengono sincronizzate da un oscillatore a cristalli di quarzo (clock), che segna la scansione temporale degli eventi, alimentato da una batteria.
In un ciclo di clock viene eseguita una singola azione atomica. La frequenza di clock si misura in Hertz (cicli o oscillazioni al secondo). Le frequenze delle CPU dei moderni Calcolatori è dell’ordine dei GHz (1 GHz = 1000000000 Hz).
La Memoria Centrale è il dispositivo dove si trovano le informazioni necessarie alla esecuzione di un Programma, ossia istruzioni e dati. Affinché un Programma possa essere eseguito deve necessariamente risiedere in Memoria centrale che è composta da un certo numero di celle (o locazioni o posizioni), ciascuna delle quali può memorizzare un’informazione in forma binaria. Le celle hanno generalmente dimensione di un byte (8 bit) o di una parola quindi, a seconda del tipo di Calcolatore, 16, 32 o 64 bits, individuata univocamente da un indirizzo.
E’ realizzata con circuiti a semiconduttori (memoria elettronica) ed è volatile, ossia perde le informazioni in essa contenute quando non alimentata (es. quando il calcolatore viene spento). RAM
Sempre a semiconduttori ma di tipo non volatile e di sola lettura è la memoria ROM utilizzata per memorizzare i microprogrammi a livello firmware (BIOS).
• Memorie flash: memorie elettroniche riscrivibili non volatili. Sono più lente delle memorie RAM (soprattutto in scrittura) ma sono sempre più diffuse in dispositivi portatili (macchine fotografiche digitali, telefoni cellulari, etc.) e per trasportare dati (collegandosi al calcolatore tramite interfaccia USB).
• Memorie di massa: di grande capacità e non volatili, sono più lente rispetto alla RAM. Sono principalmente realizzate tramite tecnologie magnetiche (Hard Disk), ottiche (CD, DVD) ed elettroniche (USB). Il tempo di accesso non è costante.
• Le Periferiche di Input/Output permettono di trasferire informazioni tra memoria centrale e/o CPU e l’ambiente esterno (es. schermo, tastiera, memoria di massa).
• Bus di sistema opera il collegamento tra i vari componenti. E' costituito da un insieme di connessioni elementari, o linee, lungo le quali viene trasferita l'informazione. Ciascuna linea sarà preposta al trasferimento del segnale elettrico relativo ad un solo bit (tensione alta=1, tensione bassa=0) e vengono trasferiti in parallelo, ossia contemporaneamente.
Il bus di sistema si divide in tre bus minori:
bus dati - bus indirizzi - bus controlli
Il motivo per cui gli elaboratori dispongono in genere di un solo bus è semplice: l'architettura a più bus, proposta teoricamente agli albori dell'informatica da John von Neumann nel 1945, non è praticamente realizzabile, visto l'altissimo numero di connessioni che sarebbero necessarie.
È il bus sul quale transitano le informazioni. È usufruibile da tutti i componenti del sistema, sia in scrittura sia in lettura. È bidirezionale (permette il passaggio dati in più direzioni contemporaneamente).
È il bus (unidirezionale) attraverso il quale la CPU decide in quale indirizzo andare a scrivere o a leggere informazioni; sia le celle di memoria (RAM) sia le periferiche di I/O (Input/Output) sono infatti divise in zone, ognuna delle quali ha un dato indirizzo. Dopo aver comunicato l'indirizzo tramite questo bus, la scrittura o lettura avviene normalmente tramite il bus dati. Naturalmente questo bus è fruibile in scrittura solo dalla CPU e in lettura dagli altri componenti, in quanto tramite questo bus viene dato solo l'indirizzo della cella, che è deciso dalla CPU.
Il bus controlli è un insieme di collegamenti il cui scopo è coordinare le attività del sistema; tramite esso, la CPU può decidere quale componente deve scrivere sul bus dati in un determinato momento, quale indirizzo leggere sul bus indirizzi, quali celle di memoria devono essere scritte e quali invece lette, etc. Infatti la memoria e tutti gli altri componenti comunicano con la CPU attraverso un unico bus condiviso; questo significa che senza un controllo da parte della CPU si verrebbero a creare dei conflitti e delle collisione
Memoria Cache
Ogni volta che la CPU deve accedere a Istruzioni e Dati, questi devono essere caricati dalla RAM, il cui tempo di accesso è molto più lento rispetto alla velocità della CPU.
La Memoria Cache è un’area di memoria particolare ad alta velocità di accesso e di dimensioni piuttosto piccole rispetto alla RAM. Contiene Dati e Istruzioni utilizzati con maggior frequenza dalla CPU, e questo determina l’incremento delle prestazioni.
In fase di Lettura, se alla CPU serve un Dato o un’Istruzione, la ricerca viene fatta prima nella Cache, e se l’informazione non è presente viene prelevata dalla RAM e copiata nella Cache. Mentre in fase di Scrittura, l’informazione viene scritta sia in RAM che nella Cache.
L’esistenza della Cache è del tutto trasparente dal punto di vista del Linguaggio Macchina, in quanto la CPU è “convinta” di lavorare solo con la RAM.
La Memoria Centrale non può essere sostituita con una memoria realizzata come la Cache, per due motivi principali:
– La Cache è molto più costosa di una memoria di tipo tradizionale.
– Per garantire un tempo di accesso estremamente basso, la Cache deve fisicamente risiedere vicino alla CPU, possibilmente integrata sullo stesso chip, così da non richiedere l’utilizzo del Bus di sistema per l’accesso.
Quindi è fisicamente impossibile, per ragioni puramente di spazio, realizzare Cache veloci e allo stesso tempo molto capienti.