Architettura computer
Bit, Byte, etc.
Una semplificata illustrazione di un computer, che mostra due dei componenti principali: la memoria e la CPU, Central Processor Unit. La memoria contiene dati e programmi in una sequenza di locazioni numerate. La CPU legge ed esegue i programmi (sequenza di istruzioni) presenti in memoria.
Le componenti dell'elaboratore sono collegare e comunicano tra loro per mezzo di cavi multipli chiamati bus. Un bus serve a collegare elettricamente il processore con la memoria centrale e le periferiche per lo scambio di informazioni e comandi.
L'insieme dei collegamenti è chiamato bus di sistema (System bus) ed è costituito da un centinaio di fili disposti opportunamente sulla scheda madre. Poiché le varie parti svolgono compiti ben differenziati, si preferisce parlare di:
bus dati;
bus indirizzi;
bus di controllo.
Bus dati (Data bus)
Su di esso viaggiano i dati (sia le istruzioni dei programmi sia i dati veri e propri) che le varie componenti si scambiano. Il numero di fili che lo compongono dipende dal parallelismo del microprocessore, cioè dal numero di bit che può essere trattato come unico blocco, in genere 32 o 64 bit. Per esempio, con un Data bus a 32 bit è possibile trasferire 4 byte con una sola operazione (ogni byte 8 formato da 8 bit), mentre sarebbero necessarie 4 operazioni usando un Data bus a 1 byte. Il bus è bidirezionale, in quanto i dati possono viaggiare da e verso il microprocessore.
Bus indirizzi (Address bus)
A ogni cella di memoria e a ogni periferica è associato un indirizzo, cioè un codice binario che il microprocessore genera e gestisce direttamente. Su questo bus viaggiano quindi gli indirizzi delle locazioni di memoria interessate oppure l'indirizzo della periferica che si vuole utilizzare. Il bus è monodirezionale in quanto i segnali su di esso sono generati dal microprocessore. Il numero di fili dipende anch'esso dal parallelismo dati, ma sono applicati degli accorgimenti che consentono di generare una quantità di indirizzi superiore a quella ottenibile solo dalla combinazione di n bit, pari a indirizzi. Con 16 bit è possibile ad esempio indirizzare
(= 65 536) locazioni.
Bus di controllo (Control bus)
E' il bus che permette alla CPU di inviare alla memoria e all'interfaccia di I/O dei segnali per dire che cosa fare in un determinato momento. E' un bus meno omogeneo rispetto ai due precedenti (solo dati o solo indirizzi) in quanto le funzionalità dei fili che lo compongono dipendono dalle periferiche interessate. Inoltre per ottimizzare il trasferimento dei dati sono presenti varie modalità di connessione (standard di comunicazione) tra periferiche e bus di controllo. I segnali portati dal bus di controllo sono in parte unidirezionali e in parte bidirezionali. Tuttavia ciascuna singola linea è unidirezionale.
IL BUS CONTROLLER
Per ridurre i consumi elettrici del microprocessore, tra i suoi connettori e i vari fili di bus è presente un particolare dispositivo chiamato Bus Controller. Questo si occuperà di fornire tensioni e correnti adeguate per gestire tutti i segnali elettrici da e verso il microprocessore. Poiché le periferiche (scheda video, hard disk ecc.) hanno esigenze e collegamenti diversi, sulla scheda madre ci sono più Control Bus specifici per le diverse tipologie di collegamento. Questo permette di adattare le informazioni presenti sui bus gestiti dal microprocessore alle esigenze delle varie periferiche. Tra i vari collegamenti che compongono il bus di controllo, quelli fondamentali per le comunicazioni tra ciascuna periferica e il microprocessore sono:
BUSY (occupato): indica se la periferica è già impegnata in altre operazioni oppure è libera;
IRQ (interrupt request): consente alla periferica di segnalare al microprocessore la necessità di un'elaborazione in base ad un evento (mouse che si muove, tasto premuto ecc.);
IORD/IOWR: indica se la periferica si trova in fase di lettura (RD) o di scrittura (WR).
La CPU
Il processore, chiamato anche CPU (Central Processing Unit), è l'elemento fondamentale di un elaboratore, in quanto elabora i dati provenienti dalle varie unità in base ai comandi che gli sono stati impartiti.
La CPU è composta da tre parti principali:
l'unità di controllo (CU) che preleva ed esegue le istruzioni dalla memoria;
l'unità aritmetico logica (ALU) che esegue le operazioni di tipo logico-matematico;
i registri interni, memorie molto veloci a cui CU e ALU possono accedere più facilmente e velocemente.
La sua capacità di processare grandi quantità di dati deriva principalmente dalla velocità con cui esegue operazioni relativamente semplici realizzate con circuiti molto piccoli e veloci (il circuito completo di un microprocessore ha le dimensioni di un cubo di silicio di qualche millimetro di lato).
Le operazioni che il microprocessore può compiere sono sostanzialmente le seguenti:
somma (le altre operazioni sono trasformate in somme con alcuni accorgimenti matematici grazie alle proprietà dei numeri binari);
spostamenti dati;
controllo delle memorie e delle periferiche collegate attraverso il bus.
La Memoria Centrale
Caratteristiche della memoria centrale
La memoria centrale (RAM, Random Access Memory) è uno degli elementi fondamentali della struttura di un elaboratore. E' la parte del calcolatore in cui viene temporaneamente conservato il programma durante la sua esecuzione con tutte le informazioni necessarie. Oltre alle istruzioni del programma, sono memorizzati i dati ricevuti in input, i risultati parziali, quelli finali prima di essere mandati in output e tutte le informazioni che servono alla CPU. Le sue caratteristiche, che influenzeranno le prestazioni complessive dell'elaboratore, sono le seguenti:
è costituita da milioni di celle, ciascuna contenente lo stato di un bit; la gestione avviene a gruppi di almeno 8 bit (un byte), organizzati in righe e colonne, come una gigantesca tabella;
è un accesso (random); si può accedere a ogni byte semplicemente generando l'indirizzo fisico che contiene le coordinate della cella e il suo tempo di accesso non dipende dalla posizione;
i dati possono essere letti e scritti;
i dati sono mantenuti solo per il tempo in cui la memoria è alimentata; lo spegnimento dell'elaboratore comporta la perdita dei dati presenti in memoria.
Il temine Random viene impropriamente tradotto con casuale, ma non nel senso che il dato viene memorizzato dove capita, ma perché il tempo di accesso non dipende dalla sua posizione.
Organizzazione della memoria centrale
Ogni singola cella di memoria ha un determinato indirizzo che indica la posizione che la cellula occupa all'interno della memoria stessa e la identifica univocamente. Poiché la memoria è vista come una matrice, l'indirizzo di una cella è dato dalla riga e dalla colonna in corrispondenza della quale si trova. La prima parte dell'indirizzo indica la colonna, mentre la seconda indica la riga.
Nell'esempio sotto, si ipotizza di avere indirizzi formati da 6 bit e, quindi, in grado di indirizzare 64 celle. La prima parte dell'indirizzo (100) indica la colonna 4, mentre la seconda parte (101) indica la riga 5.
Tramite queste coordinate il sistema è in grado di individuare quella particolare cella che si trova all'incrocio della colonna 4 e della riga 5. La capacità della memoria è data dal numero massimo di byte che possono essere immagazzinati in essa.
Ricordiamo che, nei moderni calcolatori, la memoria ha una capacità dell'ordine di milioni di byte, per cui risulta inadeguato esprimere tale capacità in byte. Si usano per questo i multipli binari del byte: il kibibyte (KiB = B), il mebibyte (MiB = B) e il gibibyte (GiB = B).
Se, andando ad acquistare un personal computer, leggiamo che tra le caratteristiche ha 4 GiB di RAM, vuol dire che la sua memoria centrale è formata da circa 4 miliardi di byte, esattamente 4 294 967 296 = 4 * 1024 * 1024 * 1024.
I prefissi per multipli binari sono stati istituiti nell'informatica per evitare l'uso di quelli standard, definiti per i multipli decimali del Sistema Internazionale (SI). Infatti 1 kB nel SI vale 1000 byte, mentre 1 KiB vale B = 1024 byte. Il fatto che sia molto vicino a porta spesso a usare il tradizionale prefisso kB al posto di KiB, ma su grandi quantità di byte la differenza è rilevante (1 TB è 92,7 GB in meno di TiB).
Operazioni della memoria centrale
I dati in memoria possono sole essere letti o scritti. Per farlo vengono seguite le seguenti fasi.
LETTURA
Il microprocessore genera l'indirizzo della cella da leggere e lo invia alla memoria tramite l'Address bus.
Il circuito interno alla memoria decodifica l'indirizzo e attiva la cella interessata.
Lo stato dei vari bit della cella è trasferito sul circuito di collegamento tra memoria e Data bus.
La memoria immette il dato sul Data bus e invia un segnale sul Control bus per avvertire il microprocessore che il dato è pronto.
SCRITTURA
Il microprocessore genera l'indirizzo della cella sulla quale scrivere e lo invia alla memoria tramite l'Address bus.
Il circuito interno alla memoria decodifica l'indirizzo e attiva la cella interessata, segnalando al microprocessore che è pronta a ricevere il dato.
Il microprocessore immette il dato sul data bus.
Il dato è prelevato dal data bus ed è trasferito nella cella; la memoria comunica al microprocessore che il dato è stato memorizzato.
CONTROLLO DEGLI ERRORI
A causa dell'importanza che riveste la memoria centrale. oltre alla gestione di lettura e scrittura, occorre garantire continuamente che non avvengano errori o malfunzionamenti.
In genere, oltre ai bit di dati, sono presenti internamente alcuni bit aggiuntivi (error bit) che, con opportuni metodi di controllo, consentiranno di verificare costantemente lo stato della memoria. Un errore nella RAM viene considerato dai sistemi operativi così grave da bloccare l'esecuzione di un programma e dell'intero Sistema Operativo.
Se l'errore è rilevato in fase di avvio dell'elaboratore, l'operazione si blocca determinando un Memory Parity Error, dove parity indica il metodo utilizzato per il controllo degli errori (controllo di parità). Questa segnalazione spesso indica che il modulo di memoria è danneggiato e occorre sostituirlo.
Tipologie di memorie
Le memorie si possono classificare come volatili o permanenti a seconda di come conservano l'informazione. Si dicono memoria volatili quelle che permettono la memorizzazione delle informazioni solo fino a quando sono alimentate dalla corrente, mentre si dicono permanenti quelle che anche in assenza di corrente mantengono memorizzate le informazioni per lungo tempo.
Le prestazioni di una memoria si misurano con due parametri:
latenza: tempo richiesto per trasferire un dato da/verso la memoria;
velocità di trasferimento (bandwidth): numero di byte trasferiti in un secondo.
LE MEMORIE VOLATILI
La memoria RAM è una memoria volatile e funziona con due tecnologie.
DRAM (Dynamic RAM). Ciascuna cella è costituita da un piccolo condensatore, che mantiene la carica elettrica per un tempo limitato. Nella memoria è presente un circuito (memory refresh) che provvede periodicamente a ricaricare le varie celle prima che perdano completamente la carica. Tale tecnica ha consentito di realizzare memorie con capacità maggiore senza aumentare la dimensione delle schede, in quanto ogni cella è molto piccola. La gestione però è più complessa per la necessità di ricaricare continuamente le celle senza interferire con le operazioni di lettura e scrittura della memoria. Nel corso degli anni, le DRAM hanno subito una notevole evoluzione con numerosi cambiamenti di standard e conseguenti problemi di compatibilità. Un notevole miglioramento nella velocità si è avuto con l'introduzione della tecnologia DDR (Double Data Rate, doppio flusso dati): i dati sono trasferiti sia durante il fronte di salita del clock, sia durante il fronte di discesa.
SRAM (Static RAM). Per mantenere l'informazione memorizzata, ogni cella è costantemente alimentata. Questo comporta consumi elettrici superiori, ma presenta il vantaggio che i tempi di risposta (latency time) al microprocessore sono piuttosto brevi. Per realizzare ciascuna cella sono necessari più componenti rispetto alla DRAM. Sono utilizzate per realizzare le memorie cache.
LE MEMORIE PERMANENTI
Le ROM (Read Only Memory) sono memorie non volatili, che però, una volta programmate, possono essere solo lette. La RO costa meno della RAM, ma ha ovviamente un capo di applicazione più limitato; in genere, sono programmate in fase di fabbricazione e contengono i programmi che permettono l'avvio del sistema (programmi di bootstrap).
Esistono anche le PROM (Programmable Read Only Memory), che possono essere programmate direttamente dall'utente per mezzo di uno speciale dispositivo. Le EPROM (Erasable Programmable Read Only Memory) possono essere anche cancellate mediante vari dispositivi, un certo numero di volte molto limitato e riprogrammate.
Last updated