ISTITUTI TECNICO INDUSTRIALE
MATERIA: SISTEMI
Indice:
• GRANDEZZE FISICHE MULTIPLI E SOTTOMULTIPLI
•
LOGICA CABLATA E MICROPROGRAMMATA
•
CPU
•
ROM PROM EPROM EEPROM
•
RAM STATICA E DINAMICA
•
MICROPROCESSORI E MICROCONTROLLORI
•
ARCHITETTURA DI VON NEUMANN
•
MEMORIA VOLATILE E NON VOLATILE
GRANDEZZE FISICHE MULTIPLI E SOTTOMULTIPLI
Lo scopo della fisica
Molto sinteticamente si può dire che è scienza ogni disciplina basata su fatti
sperimentali,scienza esatta ogni scienza in grado di controllare il fenomeno
osservato. Quindi la Biologia è scienza, la Medicina è scienza, la Fisica è scienza
esatta, ma l’Astrologia non è scienza e non è esatta.
Lo scopo della Fisica è descrivere (cioè fornire risposte su come avvengono) i
fenomeni naturali.
Tale descrizione avviene attraverso la formulazione delle leggi della Fisica, cioè
di relazioni che permettano la determinazione, anche numerica, delle grandezze
fisiche che caratterizzano il fenomeno descritto.
Le leggi della Fisica, una volta determinate, si suppone che siano valide in tutto
l’universo e per sempre, dall’origine dei tempi, oggi e nel futuro.
Le leggi della Fisica vanno considerate precarie, nel senso che si può sempre
incontrare un fenomeno che non viene spiegato dalla teoria. Occorre quindi
rigettare la teoria e costruirne una più completa.
Le lezioni di questo corso si basano sul libro: R. A. Serway & J. W. Jewett Principi di Fisica, Volume I, Quarta edizione. EdiSES, Napoli, 2007, che sarà
indicato nel testo come “Serway & Jewett “.
Lo scopo della fisica
Molto sinteticamente si può dire che è scienza ogni disciplina basata su fatti
sperimentali,scienza esatta ogni scienza in grado di controllare il fenomeno
osservato. Quindi la Biologia è scienza, la Medicina è scienza, la Fisica è scienza
esatta, ma l’Astrologia non è scienza e non è esatta.
Lo scopo della Fisica è descrivere (cioè fornire risposte su come avvengono) i
fenomeni naturali.
Tale descrizione avviene attraverso la formulazione delle leggi della Fisica, cioè
di relazioni che permettano la determinazione, anche numerica, delle grandezze
fisiche che caratterizzano il fenomeno descritto.
Le leggi della Fisica, una volta determinate, si suppone che siano valide in tutto
l’universo e per sempre, dall’origine dei tempi, oggi e nel futuro.
Le leggi della Fisica vanno considerate precarie, nel senso che si può sempre
incontrare un fenomeno che non viene spiegato dalla teoria. Occorre quindi
rigettare la teoria e costruirne una più completa.
Le lezioni di questo corso si basano sul libro: R. A. Serway & J. W. Jewett Principi di Fisica, Volume I, Quarta edizione. EdiSES, Napoli, 2007, che sarà
indicato nel testo come “Serway & Jewett “.
Le grandezze fisiche e la loro misura
La definizione di una grandezza fisica si dice operativa quando fornisce, insieme
alle sue caratteristiche, anche il modo di misurare tale grandezza.
Misurare una grandezza fisica significa associarle un valore numerico che
indica quante volte essa è minore o maggiore di una grandezza ad essa omogenea,
assunta come campione di riferimento, a cui si attribuisce il valore unitario.
Grandezze fisiche si dicono omogenee quando possono essere misurate
attraverso le stesse operazioni.
La misura di una grandezza si dice diretta quando si effettua per confronto con
una grandezza ad essa omogenea scelta come campione di riferimento, come
mostrato in figura 1.1.
La misura di una grandezza si dice indiretta quando il suo valore è ottenuto dalla
misura di altre grandezze, legate ad essa da una legge fisica.
L’analisi dimensionale
L’analisi dimensionale utilizza il fatto che le dimensioni di una grandezza fisica
possono essere trattate come grandezze algebriche. Per esempio, le grandezze
possono essere sommate o sottratte tra loro solamente se hanno le stesse
dimensioni. Inoltre, i termini di ciascun membro di una equazione debbono avere
le stesse dimensioni.
Il controllo dimensionale di una relazione tra grandezze fisiche espressa tramite
un’equazione è una condizione necessaria ma non sufficiente per verificare la sua
correttezza.
Un esempio di controllo dimensionale è mostrato in figura 1.2, dove le dimensioni
delle grandezze fisiche indicate sono: spazio [s] = L; velocità [v] = L/T;
accelerazione [a] = L/T2.
Lo scopo della fisica
Molto sinteticamente si può dire che è scienza ogni disciplina basata su fatti
sperimentali,scienza esatta ogni scienza in grado di controllare il fenomeno
osservato. Quindi la Biologia è scienza, la Medicina è scienza, la Fisica è scienza
esatta, ma l’Astrologia non è scienza e non è esatta.
Lo scopo della Fisica è descrivere (cioè fornire risposte su come avvengono) i
fenomeni naturali.
Tale descrizione avviene attraverso la formulazione delle leggi della Fisica, cioè
di relazioni che permettano la determinazione, anche numerica, delle grandezze
fisiche che caratterizzano il fenomeno descritto.
Le leggi della Fisica, una volta determinate, si suppone che siano valide in tutto
l’universo e per sempre, dall’origine dei tempi, oggi e nel futuro.
Le leggi della Fisica vanno considerate precarie, nel senso che si può sempre
incontrare un fenomeno che non viene spiegato dalla teoria. Occorre quindi
rigettare la teoria e costruirne una più completa.
Le lezioni di questo corso si basano sul libro: R. A. Serway & J. W. Jewett Principi di Fisica, Volume I, Quarta edizione. EdiSES, Napoli, 2007, che sarà
indicato nel testo come “Serway & Jewett “.
Le grandezze fisiche e la loro misura
La definizione di una grandezza fisica si dice operativa quando fornisce, insieme
alle sue caratteristiche, anche il modo di misurare tale grandezza.
Misurare una grandezza fisica significa associarle un valore numerico che
indica quante volte essa è minore o maggiore di una grandezza ad essa omogenea,
assunta come campione di riferimento, a cui si attribuisce il valore unitario.
Grandezze fisiche si dicono omogenee quando possono essere misurate
attraverso le stesse operazioni.
La misura di una grandezza si dice diretta quando si effettua per confronto con
una grandezza ad essa omogenea scelta come campione di riferimento, come
mostrato in figura 1.1.
La misura di una grandezza si dice indiretta quando il suo valore è ottenuto dalla
misura di altre grandezze, legate ad essa da una legge fisica.
Le dimensioni di una grandezza
Una grandezza fisica è detta fondamentale quando la sua definizione non
dipende dalla definizione di altre grandezze e quindi la sua misura è effettuata per
confronto con un campione di riferimento.
Una grandezza fisica si dice derivata quando la sua definizione dipende dalla
definizione di altre grandezze (fondamentali o derivate a loro volta).
Le leggi fisiche, attraverso le quali sono definite le grandezze derivate, forniscono
la relazione che lega ogni grandezza a quelle scelte come fondamentali.
Ogni grandezza derivata può quindi esprimersi come prodotto di fattori ciascuno
dei quali è una potenza di esponente opportuno (positivo, negativo, nullo, intero o
frazionario) di una delle grandezze fondamentali. Se indichiamo con L una
generica lunghezza, con T un tempo e con M una massa, le grandezze derivate che
si basano solo su queste tre grandezze fondamentali si possono esprimere
mediante il prodotto
La Tb Mc
Si dice allora che gli esponenti a, b e c sono le dimensioni di tale grandezza
ordinatamente rispetto alle lunghezze, ai tempi e alle masse ed il prodotto
suindicato si dice equazione dimensionale della grandezza fisica.
Ad esempio, la superficie S ha le dimensioni di una lunghezza L al quadrato; in
simboli: [S] = L2
La velocità v ha le dimensioni di una lunghezza L divisa un tempo T; in simboli:
[v] = L T-1
L’analisi dimensionale
L’analisi dimensionale utilizza il fatto che le dimensioni di una grandezza fisica
possono essere trattate come grandezze algebriche. Per esempio, le grandezze
possono essere sommate o sottratte tra loro solamente se hanno le stesse
dimensioni. Inoltre, i termini di ciascun membro di una equazione debbono avere
le stesse dimensioni.
Il controllo dimensionale di una relazione tra grandezze fisiche espressa tramite
un’equazione è una condizione necessaria ma non sufficiente per verificare la sua
correttezza.
Un esempio di controllo dimensionale è mostrato in figura 1.2, dove le dimensioni
delle grandezze fisiche indicate sono: spazio [s] = L; velocità [v] = L/T;
accelerazione [a] = L/T2.
I sistemi di unità di misura
La scelta delle grandezze fisiche fondamentali e quella dei campioni che le
rappresentano sono arbitrarie. Operare ltale scelta significa stabilire un sistema di
unità di misura.
Nel 1971 sono state selezionate sette grandezze fisiche come fondamentali che
costituiscono la base del Sistema Internazionale di Unità (SI) rappresentate in
tabella 1.1.
Esso fu adottato per la prima volta come unità fondamentale in un sistema di unità di
misura dalla Repubblica Francese nel 1792, definendolo come la decimilionesima
parte della distanza fra il polo nord e l’equatore e realizzando un metro campione
come distanza fra due incisioni su una barra di metallo.
L’esigenza di una maggiore precisione portò nel 1983 ad una nuova definizione: il
metro è la lunghezza che la luce percorre nel vuoto in un intervallo di tempo pari a
1/(299 792 458) secondi, avendo assunto come valore della velocità della luce nel
vuoto 299 792 458 m/s
L’unità di tempo: il secondo
La durata di un intervallo di tempo (tempo trascorso tra due avvenimenti) può essere
misurato scegliendo come riferimento un fenomeno periodico, cioè che si ripeta
sempre nello stesso modo.
Se si assume come fenomeno periodico di riferimento la durata del giorno solare
medio, il cui valore è mediato su quelli che assume durante l’anno ed è costituito da
86 400 secondi, l’unità di misura dell’intervallo di tempo è il secondo solare medio il
cui simbolo è s.
In analogia a quanto fu fatto per il metro, nel 1967 la sua definizione è cambiata in: il
secondo è la durata corrispondente a 9 192 631 770 oscillazioni della radiazione
emessa da un atomo di cesio 133 nella transizione tra due livelli iperfini dello stato
fondamentale.
Lo scopo della fisica
Molto sinteticamente si può dire che è scienza ogni disciplina basata su fatti
sperimentali,scienza esatta ogni scienza in grado di controllare il fenomeno
osservato. Quindi la Biologia è scienza, la Medicina è scienza, la Fisica è scienza
esatta, ma l’Astrologia non è scienza e non è esatta.
Lo scopo della Fisica è descrivere (cioè fornire risposte su come avvengono) i
fenomeni naturali.
Tale descrizione avviene attraverso la formulazione delle leggi della Fisica, cioè di
relazioni che permettano la determinazione, anche numerica, delle grandezze fisiche
che caratterizzano il fenomeno descritto.
Le leggi della Fisica, una volta determinate, si suppone che siano valide in tutto
l’universo e per sempre, dall’origine dei tempi, oggi e nel futuro.
Le leggi della Fisica vanno considerate precarie, nel senso che si può sempre
incontrare un fenomeno che non viene spiegato dalla teoria. Occorre quindi rigettare
la teoria e costruirne una più completa.
Le lezioni di questo corso si basano sul libro: R. A. Serway & J. W. Jewett Principi di Fisica, Volume I, Quarta edizione. EdiSES, Napoli, 2007, che sarà
indicato nel testo come “Serway & Jewett “.
Le grandezze fisiche e la loro misura
La definizione di una grandezza fisica si dice operativa quando fornisce, insieme
alle sue caratteristiche, anche il modo di misurare tale grandezza.
Misurare una grandezza fisica significa associarle un valore numerico che indica
quante volte essa è minore o maggiore di una grandezza ad essa omogenea, assunta
come campione di riferimento, a cui si attribuisce il valore unitario.
Grandezze fisiche si dicono omogenee quando possono essere misurate attraverso le
stesse operazioni.
La misura di una grandezza si dice diretta quando si effettua per confronto con una
grandezza ad essa omogenea scelta come campione di riferimento, come mostrato in
figura 1.1.
La misura di una grandezza si dice indiretta quando il suo valore è ottenuto dalla
misura di altre grandezze, legate ad essa da una legge fisica.
Le dimensioni di una grandezza
Una grandezza fisica è detta fondamentale quando la sua definizione non dipende
dalla definizione di altre grandezze e quindi la sua misura è effettuata per confronto
con un campione di riferimento.
Una grandezza fisica si dice derivata quando la sua definizione dipende dalla
definizione di altre grandezze (fondamentali o derivate a loro volta).
Le leggi fisiche, attraverso le quali sono definite le grandezze derivate, forniscono la
relazione che lega ogni grandezza a quelle scelte come fondamentali.
Ogni grandezza derivata può quindi esprimersi come prodotto di fattori ciascuno dei
quali è una potenza di esponente opportuno (positivo, negativo, nullo, intero o
frazionario) di una delle grandezze fondamentali. Se indichiamo con L una generica
lunghezza, con T un tempo e con M una massa, le grandezze derivate che si basano
solo su queste tre grandezze fondamentali si possono esprimere mediante il prodotto
La Tb Mc
Si dice allora che gli esponenti a, b e c sono le dimensioni di tale grandezza
ordinatamente rispetto alle lunghezze, ai tempi e alle masse ed il prodotto suindicato
si dice equazione dimensionale della grandezza fisica.
Ad esempio, la superficie S ha le dimensioni di una lunghezza L al quadrato; in
simboli: [S] = L2
La velocità v ha le dimensioni di una lunghezza L divisa un tempo T; in simboli: [v]
= L T-1
L’analisi dimensionale
L’analisi dimensionale utilizza il fatto che le dimensioni di una grandezza fisica
possono essere trattate come grandezze algebriche. Per esempio, le grandezze
possono essere sommate o sottratte tra loro solamente se hanno le stesse dimensioni.
Inoltre, i termini di ciascun membro di una equazione debbono avere le stesse
dimensioni.
Il controllo dimensionale di una relazione tra grandezze fisiche espressa tramite
un’equazione è una condizione necessaria ma non sufficiente per verificare la sua
correttezza.
Un esempio di controllo dimensionale è mostrato in figura 1.2, dove le dimensioni
delle grandezze fisiche indicate sono: spazio [s] = L; velocità [v] = L/T; accelerazione
[a] = L/T2.
I sistemi di unità di misura
La scelta delle grandezze fisiche fondamentali e quella dei campioni che le
rappresentano sono arbitrarie. Operare ltale scelta significa stabilire un sistema di
unità di misura.
Nel 1971 sono state selezionate sette grandezze fisiche come fondamentali che
costituiscono la base del Sistema Internazionale di Unità (SI) rappresentate in
tabella 1.1.
L’unità di lunghezza: il metro
L’unità di misura per le lunghezze nel SI è il metro il cui simbolo è m.
Esso fu adottato per la prima volta come unità fondamentale in un sistema di unità di
misura dalla Repubblica Francese nel 1792, definendolo come la decimilionesima
parte della distanza fra il polo nord e l’equatore e realizzando un metro campione
come distanza fra due incisioni su una barra di metallo.
L’esigenza di una maggiore precisione portò nel 1983 ad una nuova definizione: il
metro è la lunghezza che la luce percorre nel vuoto in un intervallo di tempo pari a
1/(299 792 458) secondi, avendo assunto come valore della velocità della luce nel
vuoto 299 792 458 m/s
L’unità di tempo: il secondo
La durata di un intervallo di tempo (tempo trascorso tra due avvenimenti) può essere
misurato scegliendo come riferimento un fenomeno periodico, cioè che si ripeta
sempre nello stesso modo.
Se si assume come fenomeno periodico di riferimento la durata del giorno solare
medio, il cui valore è mediato su quelli che assume durante l’anno ed è costituito da
86 400 secondi, l’unità di misura dell’intervallo di tempo è il secondo solare medio il
cui simbolo è s.
In analogia a quanto fu fatto per il metro, nel 1967 la sua definizione è cambiata in: il
secondo è la durata corrispondente a 9 192 631 770 oscillazioni della radiazione
emessa da un atomo di cesio 133 nella transizione tra due livelli iperfini dello stato
fondamentale.
.
L’unità di massa: il chilogrammo
Il campione di unità di misura della massa nel SI è il chilogrammo che
rappresenta la massa di un blocco cilindrico di platino-iridio, conservato al Bureau
des Poids et Mesures di Sèvres, nei pressi di Parigi e il cui simbolo è kg.
I multipli
Quando si ha a che fare con misure di grandezze molto grandi o molto piccole, si
usano i multipli e sottomultipli elencati nelle tabelle 1.5 e 1.6.
fattori di conversione
Per convertire le unità di misura dal SI a un altro sistema e viceversa, si moltiplica il
valore della grandezza per il rapporto tra l’unità di partenza e quella di arrivo (fattore
di conversione).
Esempi di conversione in unità del SI:
35 cm = 35 · 10-2 m
7 kg = 7 · 103 g
72 km/h = (72 · 103 m)/(3600 s) = 20 m/s
Alcuni dei più usati fattori di conversione in unità del SI sono riportati nella tabella.
LOGICA CABLATA E MICROPROGRAMMATA
Logica cablata
Con questo termine si intende la realizzazione, tramite opportuni dispositivi, di una
serie di funzioni logiche di tipo combinatorio e/o sequenziale. In funzione della
tecnologia scelta si dovranno affrontare problematiche di tipo elettrico, pneumatico
od elettronico, ma si parte sempre da una serie di tabelle della verità che definiscono i
requisiti cui deve rispondere il sistema. Dette tabelle saranno alla base delle scelte
circuitali,con,cui,verrà,poi,realizzato,il,sistema.
Logica programmata
Con questo termine si intende l'implementazione tramite una serie di istruzioni,
specifiche del "dispositivo informatico" scelto, di quanto richiesto da un determinato
problema. Con questa tecnica si ottiene sia facilità di realizzazione e test delle
soluzioni proposte, sia la possibilità di una facile "mantenibilità" di quanto
sviluppato. I collegamenti fisici del "dispositivo informatico" con gli attuatori/sensori
esterni allo stesso permetteranno la sua interazione con il processo che si intende
governare mentre la logica con cui farla non sarà più demandata ad una "struttura
fisica", ma sarà ottenuta tramite una serie di istruzioni presenti all'interno del
"dispositivo informatico".
CPU
L'unità
centrale
di
elaborazione,
in sigla CPU (dal
corrispondente
termine inglese central processing unit), anche chiamata nella sua implementazione
fisica processore, è uno dei due componenti principali della macchina di von
Neumann, il modello su cui sono basati la maggior parte dei moderni computer.
Compito della CPU è quello di leggere i dati dalla memoria ed eseguirne
le istruzioni del programma in memoria; il risultato dell'esecuzione dipende dal dato
su cui opera e dallo stato interno della CPU stessa, che tiene traccia delle passate
operazioni.
In base all'organizzazione della memoria si possono distinguere due famiglie di CPU:
con architettura di von Neumann classica, in cui dati e istruzioni risiedono nella
stessa memoria (è dunque possibile avere codice automodificante). Questa
architettura è la più comune, perché è semplice e flessibile.
con architettura Harvard, in cui dati e istruzioni risiedono in due memorie separate.
Questa architettura garantisce migliori prestazioni poiché le due memorie possono
lavorare in parallelo riducendo le alee strutturali, ma è ovviamente più complessa da
gestire. È tipicamente utilizzata nei DSP.
Una generica CPU contiene:
una Unità di Controllo CU (Control Unit) che legge dalla memoria le istruzioni, se
occorre legge anche i dati per l'istruzione letta, esegue l'istruzione e memorizza il
risultato se c'è, scrivendolo in memoria o in un registro della CPU.
una ALU (Arithmetic Logic Unit) che si occupa di eseguire le operazioni logiche e
aritmetiche;
dei registri, speciali locazioni di memoria interne alla CPU, molto veloci, a cui è
possibile accedere molto più rapidamente che alla memoria: il valore complessivo di
tutti i registri della CPU costituisce lo stato in cui essa si trova attualmente. Due
registri sempre presenti sono:
il registro IP (Instruction Pointer) o PC (Program Counter), che contiene l'indirizzo in
memoria della prossima istruzione da eseguire;
il registro dei flag: questo registro non contiene valori numerici convenzionali, ma è
piuttosto un insieme di bit, detti appunto flag, che segnalano stati particolari della
CPU e alcune informazioni sul risultato dell'ultima operazione eseguita. I flag più
importanti sono:
Flag di stato:
Overflow: indica se il risultato dell'operazione precedente era troppo grande per il
campo risultato: 0 assenza di overflow,1 overflow
Zero: vale 1 se l'ultima operazione ha avuto risultato zero, altrimenti vale 0.
Carry: vale 1 se l'ultima operazione ha ecceduto la capacità del registro che contiene
il risultato, altrimenti vale 0 (esempio: in un registro a 8 bit, che può rappresentare
solo numeri da 0 a 255, la somma 178+250 darebbe come risultato 172, cioè 428 256, e il carry verrebbe posto a 1 insieme al flag di overflow).
Segno: indica il segno del risultato dell'operazione precedente: 0 risultato positivo,1
risultato negativo
Flag di controllo:
Interrupt: se a questo flag viene assegnato valore 1, la CPU smette di rispondere alle
richieste di servizio esterne delle periferiche (i segnali delle linee IRQ) finché non
viene ripristinato al valore 0, o finché non arriva dall'esterno un segnale di RESET.
Oltre a queste unità possono esserne presenti altre, per esempio:
una FPU (Floating Point Unit) che si occupa di eseguire calcoli in virgola mobile;
una MMU (Memory Management Unit) che si occupa di tradurre gli indirizzi di
memoria logici in indirizzi fisici, supportando la protezione della memoria e/o uno o
più meccanismi di memoria virtuale.
Una generica CPU deve eseguire i suoi compiti sincronizzandoli con il resto del
sistema: perciò è dotata, oltre a quanto sopra elencato, anche di uno o più bus interni
che si occupano di collegare registri, ALU, unità di controllo e memoria: inoltre
all'unità di controllo interna della CPU fanno capo una serie di segnali elettrici esterni
che si occupano di tenere la CPU al corrente dello stato del resto del sistema e di
agire su di esso. Il tipo e il numero di segnali esterni gestiti possono variare ma
alcuni, come il RESET, le linee di IRQ e il CLOCK sono sempre presenti.
Per quanto riguarda i registri, le CPU possono gestirli in molti modi: i più comuni
sono registri nominativi (CPU CISC classiche), file di registri (RISC) e stack di
registri (Transputer e simili).
Stack di registri: i registri sono organizzati in una struttura a stack (pila); questa
architettura ha il vantaggio di non dover specificare su quale registro interno operare
(è sempre quello in cima allo stack) ottenendo istruzioni più corte e più semplici da
decodificare. Il rovescio della medaglia è che nel caso sia necessario un dato
"sepolto" in fondo allo stack, il suo recupero è un'operazione molto lenta.
Registri nominativi: ogni registro è identificato singolarmente e le istruzioni che
usano registri specificano di volta in volta quale registro devono usare. Spesso alcuni
registri sono dedicati a scopi particolari (registri indice, accumulatori, registri di
segmento ecc.) imponendo la non ortogonalità del set di istruzioni (vedi oltre). La
gran maggioranza delle CPU generiche degli anni '70 e '80 è di questo tipo.
File di registri: I registri sono organizzati come una memoria interna della CPU e
indicizzati: la CPU "alloca" un certo numero di registri per ogni processo e/o
subroutine in esecuzione, eliminando la necessità di accedere alla RAM per salvare
gli stack di chiamata delle funzioni e i dati di task switching nei sistemi multitask.
Una CPU è un circuito digitale sincrono: vale a dire che il suo stato cambia ogni volta
che riceve un impulso da un segnale di sincronismo dettoclock, che ne determina di
conseguenza la velocità operativa, detta velocità di clock: quindi il tempo di
esecuzione di una istruzione si misura in cicli di clock, cioè in quanti impulsi di clock
sono necessari perché la CPU la completi. In effetti, una parte importante e delicata
di ogni CPU è il sistema di distribuzione che porta il segnale di clock alle varie unità
e sottounità di cui è composta, per fare in modo che siano sempre in sincronia: tale
sistema si dirama in una struttura ad albero con divisori e ripetitori che giunge
ovunque nella CPU. Nei processori più moderni (Pentium, Athlon, PowerPC) questa
"catena di ingranaggi" elettronica arriva ad impiegare circa il 30% di tutti i transistor
disponibili. La velocità di questa distribuzione determina in maniera diretta la
massima frequenza operativa di una CPU: nessuna CPU può essere più veloce del
suocritical path, cioè del tempo che impiega il clock per percorrere il tratto più lungo
in tutto l'albero di distribuzione del clock. Per esempio, se il segnale di clock di una
data CPU impiega un nanosecondo per attraversare tutto il chip ed arrivare fino
all'ultima sottounità, questa CPU potrà operare a non più di 1 GHz, perché altrimenti
le sue componenti interne perderebbero la sincronizzazione, con risultati
imprevedibili (per avere un margine di sicurezza, il limite pratico sarà anzi ben
minore di 1GHz).
Le istruzioni di una CPU (instruction set) sono semplicemente dei numeri, detti
opcode o codici operativi: in base al loro valore l'unità di controllo intraprende delle
azioni predefinite, come per esempio leggere la successiva locazione di memoria per
caricare un dato, oppure attivare la ALU per eseguire un calcolo, oppure scrivere il
contenuto di un registro in una certa locazione di memoria o in un altro registro,
oppure una combinazione di queste.
Per una persona, stendere programmi scrivendo direttamente gli opcode è
estremamente noioso e prono all'errore. Per questo motivo si utilizza l'assembly, che
associa un simbolo mnemonico ad ogni istruzione della CPU e introduce una sintassi
che permette di esprimere i vari metodi di indirizzamento in modo più intuitivo.
Una caratteristica importante dell'insieme (set) delle istruzioni di una CPU è la sua
ortogonalità: vale a dire, il fatto che ogni istruzione che usi i registri possa usarli tutti
indifferentemente (tranne quelli "speciali" come l'IP) e che nessun registro sia in
qualche modo privilegiato rispetto agli altri perché su di esso si possono compiere
operazioni particolari: è stato dimostrato che un set di istruzioni ortogonali, a parità di
tempo di esecuzione delle istruzioni e di numero dei registri, è più efficiente di uno
non ortogonale.
Schema a blocchi semplificato di una CPU
Tipicamente la CPU è l'Interprete del linguaggio macchina. Come tutti gli interpreti,
si basa sul seguente ciclo:
Acquisizione dell'istruzione: il processore preleva l'istruzione dalla memoria,
presente nell'indirizzo (tipicamente logico) specificato da un registro "speciale"
("speciale" opposto di "generico"), il PC
Decodifica: una volta che la word è stata prelevata, viene determinata quale
operazione debba essere eseguita e come ottenere gli operandi, in base ad una
funzione il cui dominio è costituito dai codici operativi (tipicamente i bit alti
delle word) ed il codominio consiste nei brani di microprogramma da eseguire
Esecuzione: viene eseguita la computazione desiderata. Nell'ultimo passo
dell'esecuzione viene incrementato il PC: tipicamente di uno se l'istruzione non era un
salto condizionale, altrimenti l'incremento dipende dall'istruzione e dall'esito di
questa
Questo ciclo elementare può essere migliorato in vari modi: per esempio, la
decodifica di una istruzione può essere fatta contemporaneamente all'esecuzione della
precedente e alla lettura dalla memoria della prossima (instruction prefetch) e lo
stesso può essere fatto con i dati che si prevede saranno necessari alle istruzioni (data
prefetch). La stessa esecuzione delle istruzioni può essere suddivisa in passi più
semplici, da eseguire in stadi successivi, organizzando la unità di controllo e la ALU
in stadi consecutivi, come delle catene di montaggio (pipeline''): in questo modo più
istruzioni possono essere eseguite "quasi contemporaneamente", ciascuna occupando
ad un certo istante uno stadio diverso della pipeline.
Il problema di questo approccio sono le istruzioni di salto condizionato: la CPU non
può sapere a priori se dovrà eseguire o no il salto prima di aver eseguito quelle
precedenti, così deve decidere se impostare la pipeline tenendo conto del salto o no: e
in caso di previsione errata la pipeline va svuotata completamente e le istruzioni in
corso di decodifica rilette da capo, perdendo un numero di cicli di clock direttamente
proporzionale al numero di stadi della pipeline. Per evitare questo i processori
moderni hanno unità interne (“Branch prediction unit”) il cui scopo è tentare di
prevedere se, data una istruzione di salto condizionato e quelle eseguite in
precedenza, il salto dovrà essere eseguito o no.
Inoltre i processori possono implementare al loro interno più unità di esecuzione per
eseguire più operazioni contemporaneamente. Questo approccio incrementa le
prestazioni delle CPU ma ne complica notevolmente l'esecuzione, dato che per poter
eseguire in modo efficiente più operazioni in parallelo la CPU deve poter organizzare
le istruzioni in modo diverso da come sono organizzate dal programmatore
(esecuzione fuori ordine). Una ulteriore evoluzione di questo concetto è stata
implementata nei processori multicore Itanium, che implementano delleistruzioni
predicative che possono o meno essere eseguite a seconda del risultato di altre,
eseguite in precedenza o contemporaneamente.
Quando i transistor disponibili su un solo chip erano pochi e i calcolatori venivano
spesso programmati in assembly, era naturale sfruttarli in modo tale da avere CPU
con istruzioni potenti, evolute e complesse: più queste erano vicine alle istruzioni dei
linguaggi di programmazione ad alto livello più il computer sarebbe stato facile da
programmare, e i programmi avrebbero occupato poco spazio in memoria (anch'essa
poca e preziosa). Le CPU progettate secondo questo approccio sono dette CISC ed
avevano unità di controllo complesse capaci di sfruttare al meglio pochi registri e i
cui programmi erano di dimensioni relativamente piccole. A cavallo fra gli anni '70 e
gli '80 la situazione però cambiò rapidamente: la RAM divenne più economica e
comparvero i primi compilatori moderni, ottimizzanti, in grado di generare
linguaggio macchina molto efficiente: per questo si iniziò a pensare ad un nuovo
modo di progettare le CPU, prendendo in esame la possibilità di usare i transistor
disponibili per avere invece molti registri e un set di istruzioni elementare, molto
ridotto, che delegasse al compilatore il lavoro di tradurre le istruzioni complesse in
serie di istruzioni più semplici, permettendo così di avere unità di controllo
particolarmente semplici e veloci. Attualmente la distinzione fra queste due classi di
architetture è venuta in gran parte meno: il numero di transistor disponibili su un solo
chip è aumentato tanto da poter gestire molti registri ed anche set di istruzioni
complesse.
ROM PROM EPROM EEPROM
Read only memory (il cui acronimo è ROM) è un dispositivo di memoria interna a
sola lettura: normalmente i dati memorizzati in una ROM possono essere letti, ma
non modificati. Pur essendo realizzata, come il resto della memoria, su supporto
elettronico a semiconduttori, la ROM non è volatile. Questo tipo di memoria serve
per conservare i dati e i programmi necessari a inizializzare il calcolatore o le sue
periferiche, che sono di uso comune ad ogni accensione (quando né i programmi
applicativi né il sistema operativo sono stati ancora caricati nella memoria di lavoro),
oppure per contenere i programmi per la diagnostica sullo stato della macchina. La
ROM contiene dunque i file che permettono al sistema di accendersi e di funzionare
correttamente. In particolare lì viene contenuto il BIOS (Basic Input Output System).
Dal punto di vista "fisico", la ROM è un componente hardware (solitamente un
circuito integrato)contenente dati disponibili per la sola consultazione. I bit vengono
memorizzati già in fabbrica durante la loro realizzazione, posizionando degli appositi
interruttori (che poi non saranno più modificabili) su 1 (interruttore chiuso) e 0
(interruttore aperto). Oggi, comunque, le ROM sono cadute in disuso a favore delle
memorie Flash (che, pur essendo permanenti, sono riscrivibili), per esempio le
memorie EEPROM; tuttavia il termine ROM viene ancora utilizzato per indicare
quelle memorie non volatili che mantengono i dati in memoria anche in mancanza di
alimentazione.
La PROM (acronimo di Programmable Read-Only Memory) è una tipologia
di memoria informatica, in particolare una tipologia di memoria scrivibile una sola
volta a stato solido.
Nasce come evoluzione della ROM a maschera volta a ridurne i notevoli costi di
produzione dovuti alla progettazione delle maschere per l'impiantazione ionica. La
ROM a maschera infatti richiedeva di cambiare l'intera linea di produzione ogni qual
volta fosse necessario modificare anche una minima parte dei circuiti logici. La
PROM invece contiene dei fusibili che possono essere bruciati secondo le esigenze
per creare i circuiti logici richiesti e richiede un'apparecchiatura speciale per le
operazioni di scrittura. Sono state fatte però anche delle PROM dove invece dei
fusibili venivano usati degli antifusibili nei quali il collegamento viene creato invece
di venire bruciato.
La EPROM, acronimo di Erasable Programmable Read Only Memory, è una
memoria di sola lettura cancellabile tramite raggi ultravioletti. Si tratta di
un'evoluzione della PROM che, una volta programmata, non poteva essere più
modificata (salvo usare trucchi da alchimista). La EPROM invece può essere
totalmente cancellata (per un numero limitato ma consistente di volte) e
riprogrammata a piacimento. La sua invenzione, nel 1971, è dovuta ad un ingegnere
israeliano, Dov Frohman, fuoriuscito dalla Fairchild Semiconductor per unirsi
a Moore, Noycee Grove, fondatori della società Intel, fuoriusciti da Fairchild l'anno
prima.
Programmazione
EPROM in tecnologia CMOS da 32 KB (256 Kbit)
La scrittura nelle celle di una memoria EPROM si realizza tramite un fenomeno
di breakdown a valanga. Infatti viene fatta scorrere una forte corrente
tra Drain e Source. Con una certa probabilità, alcuni elettroni "caldi" riescono a
penetrare nel Gate flottante. La cella è programmata quando nel gate flottante è
presente una carica tale da inibire l'accensione del dispositivo. Esisteva un metodo
per velocizzare la programmazione. Nelle specifiche fornite del costruttore sulle
temporizzazioni dei segnali, era indicato anche il tempo di programmazione, cioè per
quanto tempo sul pin adibito a questa funzione doveva permanere la tensione di
programmazione (Vpp), i valori erano di qualche decina di millisecondi. Per
sicurezza (a causa delle tolleranze di costruzione), questo valore era posto largamente
al di sopra del tempo normalmente impiegato da una cella a portarsi a valore 0
(scritta), pertanto in molti casi, in alternativa alla temporizzazione standard, si
adottava il metodo "adattativo", il quale consisteva in due operazioni ripetute più
volte; veniva fornita tensione di programmazione per un decimo del tempo standard,
dopodiché veniva letta la cella, il ciclo si ripeteva fino a che la cella non risultasse
programmata, a questo punto veniva fornita tensione di programmazione per un
tempo uguale alla somma dei tentativi di programmazione precedenti, in pratica se
erano occorsi in totale 15 millisecondi per portare la cella a 0, veniva fornita tensione
di programmazione per altri 15 millisecondi, con il raddoppio del tempo di
programmazione si aveva certezza di stabilità del dato scritto. Ovviamente tutta la
sequenza avveniva in automatico, gestita dal firmware dell'eprom programmer. A
fine programmazione si copriva la finestrella con un'etichetta sulla quale era riportato
il livello di release del microcodice, e nello stesso tempo poneva in condizioni di buio
il chip.
Cancellazione
Questo Microcontrollore 8749 mantiene il suo
programma in una EPROM interna
Per permettere l'irradiazione ultravioletta, il die della EPROM è posizionato
nel package al di sotto di una finestrella trasparente. Nelle prime versioni, la finestra
veniva chiusa con una sottile lastrina di quarzo, in seguito fu utilizzato il semplice
vetro, utilizzando la quantità necessaria a coprire come una lente il foro tondo
ricavato nella metà superiore del package ceramico destinato a questo dispositivo. La
cancellazione avveniva per mezzo di un attrezzo chiamato Eprom Eraser, una
semplice scatola contenente una lampada a raggi UV di tipo UV-C e un
temporizzatore elettromeccanico, il quale permetteva di impostare il tempo di
irradiazione fino ad un massimo di 45 minuti; gli Eraser più piccoli erano dotati di
una lampada in grado di cancellare in un'unica operazione una dozzina di EPROM.
La cancellazione consisteva nel portare tutti i bit (celle o locazioni) a valore alto (1),
la EPROM a questo punto tornava a essere programmabile. Le EPROM sono ormai
da considerare obsolete e non vengono praticamente più usate. Sono state sostituite
dalle memorie flash oEEPROM che possono essere cancellate elettricamente senza
dover ricorrere ai raggi UV.
Tipi di EPROM
Ingrandimenti del die di una EPROM
Sono stati prodotti diversi tipi di EPROM che si differenziano - oltre che per la
capacità di memoria disponibile, anche per la velocità (tempo di accesso) e per le
tensioni di lavoro e di programmazione. Generalmente ciascun programmatore ha un
elenco di chip, divisi per produttore, per automatizzare le operazioni di impostazione
ai fini della programmazione, la quale poteva essere effettuata in due modi: trasferire
all'Eprom-Programmer il file in codice esadecimale residente su floppy o hard disk di
un computer tramite un'interfaccia, oppure copiare direttamente il contenuto di una
EPROM campione, in una o più EPROM vergini.
Le EPROM con capacità fino a 4096 byte (32768 celle), con sigla commerciale 2732,
adottavano un package a 24 pin, interamente occupati dai 12 fili di indirizzo, 8 fili dei
dati, 1 di selezione chip, 1 per la programmazione e 2 per l'alimentazione. Per le
versioni successive, a partire dal chip siglato 2764, avente capacità doppia (8192 byte
per un totale di 65536 celle), si rese necessario impiegare un package a 28 pin,
venendo a mancare il pin necessario ad ospitare il tredicesimo filo di indirizzo; più
avanti nel tempo con l'aumentare di capacità, anche il package a 28 pin non fu più
sufficiente. Il package era unicamente ceramico, dovendo garantire la tenuta stagna
della finestra.
A partire dal chip con capacità di 8 Kbyte in poi, alcuni di questi tipi di memoria
furono prodotti anche usando la tecnologia CMOS, consentendo una forte riduzione
nel consumo di corrente a beneficio anche di una minore produzione di calore.
La EEPROM, acronimo di Electrically Erasable and Programmable Read Only
Memory, è una memoria ROM programmabile da parte dell'utente. Le operazioni di
scrittura, cancellazione e riscrittura hanno luogo elettricamente.
Ciascuna cella di memoria capace di memorizzare un singolo bit è costituita da due
transistori MOS, uno "di memoria" e uno "di accesso".
Nascita della tecnologia
La tecnologia EEPROM è stata sviluppata sulla base della preesistente
tecnologia EPROM al fine di ovviare al problema della cancellazione dei dati.
In ambito EPROM, infatti, mentre la scrittura può avere luogo per via elettrica, la
cancellazione viene effettuata attraverso l'esposizione a radiazione UV, con
conseguenti inconvenienti di natura logistica (rimozione del chip dalla scheda su cui
è assemblato, perdita di tempo).
EPROM ST M27C512
Il transistor di memoria
Il transistor di memoria ha due gate.
Il primo è un gate tradizionale, collegato elettricamente con il resto del gruppo. In
questa tecnologia è denominato control gate. Il secondo gate è sepolto nell'ossido e
quindi isolato elettricamente. Esso è separato dal primo gate, così come dal canale del
transistor, per mezzo di un sottilissimo strato di materiale isolante. Per questo motivo
è detto floating gate. In gergo, lo si definisce flottante.
A differenza delle EPROM, nelle EEPROM vi è una regione, in prossimità del drain,
in cui lo spessore dello strato di ossido che separa il floating gate dal canale è ridotto
al punto tale da permettere il passaggio di elettroni per effetto tunnel (FowlerNordheim).
Il transistor di memoria viene programmato attraverso il pilotaggio in tensione del
control gate. La variazione del potenziale a cui questo si trova esposto determina,
nella zona in cui il ridotto spessore dell'ossido isolante lo rende possibile, il
manifestarsi dell'effetto tunnel e la conseguente attrazione di elettroni dal drain al
gate sepolto.
Il transistor di accesso
Come nel caso delle memorie EPROM, anche le EEPROM presentano una criticità
legata alla fase di cancellazione. Il processo di scarica del floating gate può infatti
determinare, come effetto indesiderato, l'accumulo di una carica positiva con
conseguente variazione della tensione di soglia del dispositivo. Il problema è stato
risolto mediante l'introduzione dei transistori di accesso, che sono parte integrante
della cella.
La presenza di questi ultimi determina tuttavia, un maggiore impiego di area rispetto
alle EPROM. Per ovviare a questo problema sono nate lememorie flash. È bene
ricordare che le memorie flash differiscono dalle EEPROM per il fatto che la
programmazione si basa, in quest'ultimo caso, sul fenomeno fisico della iniezione a
valanga, e non su quello dell'effetto tunnel.
Il transistor di accesso, pilotato dalla word line, svolge inoltre la funzione di mettere
in comunicazione il transistor di memoria con la bit line quando è necessario leggere
il dato binario immagazzinato sotto forma di carica elettrica all'interno del canale del
transistor.
RAM DINAMICA
La ram dinamica è il dispositivo di memoria più usato in ambito informatico, è
utilizzata in banchi come di memoria principale.
È realizzata su un chip di silicio e svolge la stessa funzione della ram statica, ma a
differenza di questa, l'elemento di memoria è un semplicecondensatore, anziché
un flip-flop.
Ha un basso costo ed un capacità elevata, ma a differenza della ram statica, necessita
di un circuito di servizio per l'operazione di rinfresco (refresh). Questa operazione è
necessaria data la natura della cella di memoria che è costituita da un condensatore il
quale risulta a valore logico 1 se è carico e a valore 0 se è scarico, pertanto per
mantenere carichi i condensatori aventi valore 1, il circuito di refresh fornisce a
intervalli di tempo costante, un impulso di corrente di ricarica.
La memoria
ad
accesso
casuale, acronimo RAM (del
corrispondente
termine inglese Random-Access
Memory),
è
una
tipologia
di memoria
informatica caratterizzata dal permettere l'accesso diretto a qualunque indirizzo di
memoria con lo stesso tempo di accesso.
La memoria ad accesso casuale si contrappone alla memoria ad accesso sequenziale e
alla memoria ad accesso diretto rispetto alle quali presenta tempi di accesso
sensibilmente inferiori motivo per cui è utilizzata come memoria primaria.
La tipologia di memoria ad accesso casuale più comune attualmente è a stato solido, a
lettura-scrittura e volatile, ma rientrano nella tipologia di memoria ad accesso casuale
la maggior parte delle tipologie di ROM (inteso nell'accezione più comune e non
come memoria a sola lettura), la NOR Flash (una tipologia di memoria flash), oltre a
varie tipologie di memorie informatiche utilizzate ai primordi dell'informatica e oggi
non più utilizzate come ad esempio la memoria a nucleo magnetico.
Esclusivamente l'acronimo RAM (non il termine "memoria ad accesso casuale") ha
anche una seconda accezione più ristretta ma attualmente più diffusa secondo cui
la RAM è una memoria ad accesso casuale della tipologia più comune cioè a stato
solido, a lettura-scrittura e volatile.
Memoria DIMM PC133
L'uso della memoria RAM è comune a tutte le architetture hardware, sia a singolo
processore che multiprocessore e costituisce la memoria primaria dell'elaboratore.
A seconda dell'architettura usata, la CPU può accedere direttamente alla memoria
oppure accedervi tramite appositi controller. Nel caso di sistemi multiprocessore, la
memoria primaria può essere condivisa da più processori oppure può essere
partizionata, nel qual caso ogni processore dispone di una memoria privata. Esistono
anche architetture miste dove è presente sia una memoria primaria condivisa da tutti i
processori che una memoria privata dedicata ad ognuno di essi.
Il processore carica dalla RAM, quando non presenti nella propria cache interna, le
istruzioni da eseguire e i dati da elaborare per poi riscriverli nuovamente in RAM.
Poiché generalmente è più lenta del processore, la sua velocità è un fattore
determinante per le prestazioni dell'intero calcolatore.
Caratteristica comune a tutti i tipi di RAM utilizzati per la memoria principale è
quella di perdere il proprio contenuto nel momento in cui viene a mancare
l'alimentazione elettrica. Sono allo studio altri tipi di memoria, basati su altri principi,
che in futuro potrebbero consentire di superare questa limitazione.
Tipologie
SRAM
Vecchia RAM a nuclei magneticida 1,5 Megabit
Nelle SRAM, acronimo di Static Random Access Memory, ovvero RAM statica ogni
cella è costituita da un latch realizzato da due porte logiche. Le celle sono disposte a
matrice e l’accesso avviene specificando la riga e la colonna.
Consentono di mantenere le informazioni per un tempo infinito, sono molto veloci,
consumano poco e quindi dissipano poco calore. La necessità di usare molti
componenti, però, le rende molto costose, difficili da impacchettare e con una scarsa
capienza.
Proprio per la loro bassa capienza, sono solitamente usate per le memorie cache, dove
sono necessarie elevate velocità in abbinamento a ridotti consumi e capienze non
troppo elevate (dell'ordine di pochi Mb).
DRAM
Memoria DIMM DDR
La DRAM, acronimo di Dynamic Random Access Memory, ovvero RAM dinamica, è
costituita, a livello concettuale, da un transistor che separa un condensatore, il quale
mantiene l'informazione, dai fili di dati. A livello pratico non viene usato un vero
condensatore ma si sfruttano le proprietà elettrico/capacitive dei semiconduttori. È
così possibile usare un solo componente per ogni cella di memoria, con costi molto
ridotti e la possibilità di aumentare notevolmente la densità di memoria.
A causa del non perfetto isolamento il condensatore si scarica, quindi dopo un breve
lasso di tempo il suo contenuto diventa inaffidabile. Si rende necessario perciò
ricaricarlo, l'operazione è detta di "refreshing", provvedendo ad eseguire
un'operazione di lettura fittizia e riscrittura entro il tempo massimo in cui il contenuto
può essere considerato ancora valido. Queste operazioni sono eseguite da un circuito
interno alle memorie stesse. Oltre a comportare un certo dispendio di energia rendono
più lenta la memoria in quanto, mentre si sta eseguendo il rinfresco, non è possibile
accedervi. Le memorie DRAM si possono considerare abbastanza affidabili anche
perché molto spesso ad ogni riga della memoria è associato un bit di parità, che
consente di individuare eventuali errori singoli all'interno della riga, oppure una serie
di bit (log n), che opportunamente impostati nel momento di ogni scrittura, generano
il codice di Hamming corrispondente, che consente di individuare e correggere errori
singoli e individuare errori doppi.
È importante sottolineare come l'operazione di lettura sia distruttiva, in quanto nel
momento in cui un dato viene letto viene anche perso; risulta quindi necessaria la sua
riscrittura immediata e questo porta a uno spreco di tempo.
Le DRAM sono asincrone, ovvero l'accesso in scrittura ed in lettura è comandato
direttamente dai segnali in ingresso al contrario delle memorie sincrone in cui il
passaggio da uno stato all'altro è sincronizzato ad un segnale di clock.
Per ogni cella sono presenti un numero basso di componenti che permettono di
ottenere un’alta capacità complessiva del dispositivo, un basso assorbimento di
potenza e costi ridotti, sono dunque utilizzate generalmente per la memoria principale
del sistema.
SDRAM
Memoria SODIMM DDR, utilizzata per i personal computer portatili.
La SDRAM, acronimo di Synchronous Dynamic Random Access Memory,
ovvero DRAM sincrone, si differenzia dalla DRAM normale per il fatto che l'accesso
è sincrono, ovvero governato dal clock. Tale segnale di clock temporizza e
sincronizza le operazioni di scambio di dati con il processore, raggiungendo una
velocità almeno tre volte maggiore delle SIMM con EDO RAM.
Tipicamente saldata in un modulo di tipo DIMM, è normalmente impiegata come
memoria principale deiPersonal Computer di tipo Pentium e successivi.
Alcuni esempi sono classificati come :

SDR SDRAM : indica le originarie memorie SDRAM. Con l'evoluzione
tecnica, questa tipologia ha preso il suffisso SDR ossia Single Data Rate, per
differenziarle dalle successive SDRAM con controller DDR. Il single data
rate indicava l'accettazione di un comando e il trasferimento di 1 word di dati per
ciclo di clock (tipicamente 100 e 133 Mhz). Il data bus era diversificato ma
tipicamente erano impiegate su moduli DIMM da 168 pin e potevano operare su
64 bit (non-ECC) o 72 bit (ECC) alla volta.

DDR SDRAM

DDR2

DDR3

SODIMM : da notare che il package SODIMM non necessariamente contiene
memoria SDRAM
FeRAM
La FeRAM, acronimo di Ferroelectric Dynamic Random Access Memory, ha la
peculiarità di mantenere i dati senza l'ausilio del refresh di sistema. Utilizzano un
materiale denominato ferroelettrico che ha la capacità di mantenere la propria
polarizzazione anche dopo esser scollegato dalla fonte energetica.
Memoria a cambiamento di fase
Le memoria a cambiamento di fase sono delle memorie ad accesso casuale che
utilizzano il cambiamento di fase di un materiale per memorizzare le informazioni.
Questo permette alle memoria di mantenere le informazioni anche senza
alimentazione, come le memorie flashma rispetto a queste hanno alcuni vantaggi. La
principale è la velocità di scrittura che può arrivare ad essere più rapida di 30 volte,
come ciclo di vita 10 volte maggiore e nota non trascurabile un costo minore dato
dalla lavorazione più veloce.
Si prevede che entro il 2010 questa tecnologia sostituirà l'attuale tecnologia NOR.
Frequenze
Microprocessore
Ingrandimento del Die di un moderno microprocessore
Un microprocessore, anche abbreviato
dellaCPU in un singolo circuito integrato.
in µP,
è
un'implementazione
fisica
Il microprocessore è attualmente l'implementazione fisica della CPU più comune,
utilizzata dalla quasi totalità dei computer e in altri dispositivi digitali (come ad
esempio telefoni cellulari, stampanti, scanner). Può essere considerato il "motore" di
elaborazione dati, racchiuso in un unico circuito integrato, in grado di leggere,
elaborare e scrivere informazioni in un memoria o verso altri dispositivi digitali.
Il primo microprocessore
Il 4004 con la copertura rimossa (a sinistra) e come veniva venduto (a destra)
Come altre innovazioni tecnologiche il microprocessore apparve appena la tecnologia
lo consentì dato che l'idea di integrare i componenti di una CPU in un singolo circuito
integrato era una soluzione logica. Quasi contemporaneamente infatti, iniziarono lo
sviluppo l'Intel 4004, il Texas Instruments TMS 1000, e il Garrett AiResearch Central
Air Data Computer. Nel 1968 Garrett iniziò a sviluppare un sistema elettronico per
competere con i sistemi elettromeccanici utilizzati nei caccia militari. L'obiettivo del
progetto era equipaggiare il nuovo F-14 Tomcat che allora era in sviluppo. Il progetto
venne completato nel 1970 e utilizzava integrati MOS per il core della CPU. Il
progetto era semplice e innovativo e vinse sui competitori elettromeccanici venendo
utilizzato fin dai primi Tomcat. La marina americana però considerò il progetto tanto
innovativo che impedì la pubblicazione di articoli sul sistema fino al 1997, per cui
questo microprocessore rimase semisconosciuto.
Texas Instruments (TI) sviluppò il sistema TMS 1000 a 4 bit per applicazioni
embedded pre-programmate. Il 17 settembre 1971 annunciò il modello TMS
1802NC, programmabile, che poteva essere utilizzato per implementare un
calcolatore. L'Intel 4004, processore a 4 bit, venne presentato il 15 novembre 1971 e
fu sviluppato da Federico Faggin e Marcian Hoff.
TI presentò la prima richiesta di brevetto per il microprocessore. Gary Boone ottenne
l'assegnazione del brevetto U.S. Patent 3,757,306 per l'architettura di un
microprocessore a singolo chip il 4 settembre 1973. Non è mai stato reso noto se
realmente l'azienda avesse avuto il microprocessore funzionante nei suoi laboratori.
Comunque sia nel 1971 che nel 1976 Intel e TI stipularono un accordo in cui Intel
pagava a TI i diritti per l'utilizzo del suo brevetto. Un riassunto della storia è
contenuto nella documentazione che Intel presentò in tribunale quando fu chiamata in
giudizio da Cyrix per violazione dei brevetti e Ti intervenne come proprietario del
brevetto originario.
Interessante è il fatto che recentemente Intel e TI abbiano affermato di avere brevetti
che potrebbero coprire il brevetto del "microprocessore". Inquesta pagina web TI e
Intel predatano il brevetto descrivendo un microcontrollore che potrebbe coprire il
brevetto del microprocessore essendo il progetto indicato concettualmente simile:
Gary Boone e Michael J. Cochran presso la TI ne depositarono il brevetto, U.S.
Patent 4,074,351, che pur essendo più simile a un microcontroller potrebbe coprire
anche quello del microprocessore.
Secondo "A History of Modern Computing'", (MIT Press), pp. 220–21, Intel venne
contattata dalla Computer Terminals Corporation (in seguito nota come Datapoint) di
San Antonio TX per l'acquisto dell'integrato che stava sviluppando. In seguito
Datapoint decise di non utilizzare l'integrato e Intel lo immise sul mercato come 8008
nell'aprile del 1972, riscuotendo un certo successo, creando il primo vero mercato per
i microprocessori: fu la base del famoso computer Mark-8 venduto in scatola di
montaggio da Radio-Electronics nel 1973.
Processori a 8 bit significativi
Intel 8080A
Il 4004 venne seguito nel 1972 dall'8008, il primo microprocessore a 8 bit del mondo,
evoluto successivamente nel più famoso Intel 8080 (1974).
Dal progetto 8080 venne derivato il clone Z80 prodotto nel 1976 dalla ZiLOG,
società fondata da alcuni fuoriusciti dalla Intel, tra i quali lo stesso Federico Faggin.
Compatibile a livello di set istruzioni, lo Z80 includeva diversi miglioramenti che lo
fecero rapidamente preferire all'8080 dagli sviluppatori. Intel reagì producendo nel
1976 una propria versione migliorata dell'8080, l'8085, ancora compatibile a livello
binario con i programmi scritti per l'8080.
Motorola presentò nell'agosto del 1974 il 6800, primo processore ad adottare un
registro indice. Molto versatile, ebbe un discreto successo, oscurato in parte l'anno
successivo dal lancio del MOS Technology 6502: era ispirato all'architettura del
6800, dotato di alcune soluzioni tecniche migliorative e soprattutto caratterizzato da
un costo drasticamente inferiore (25 USD contro i 175 UDS del 6800), cosa che lo
rese estremamente popolare. Il 6502 fu scelto, ad esempio, da Steve Wozniak per
l'Apple Inel 1976 ed il successivo Apple II nel 1977.
Motorola reagì con il 6809 (1979), uno dei più potenti e ortogonali processori a 8 bit
mai sviluppati: non usava microcodice, e l'unità di controllo era interamente in logica
cablata. I successori del 6809 risultarono essere troppo complessi per poter mantenere
questo approccio e vennero equipaggiati con una tradizionale unità logica a
microcodice. Il progetto 6809 è alla base di una serie molto diffusa di
microcontrollori tutt'ora utilizzata in sistemi embedded.
The Western Design Center, Inc. (WDC) presentò nel 1982 il 65C02 con
tecnologia CMOS e licenziò il progetto a molte altre ditte che svilupparono i
processori alla base dei computer Apple IIc e IIe. Il processore fu utilizzato anche in
pacemaker, defibrillatori, automobili, prodotti industriali e di consumo. WDC fu
pioniera nella vendita delle proprietà intellettuali e fu seguita anni dopo
da Architettura ARM e altre ditte che basano i loro guadagni sullo sviluppo e sulla
vendita delle proprietà intellettuali.
Un altro processore a 8 bit che ebbe una discreta fama fu il Signetics 2650 un
processore con un'architettura innovativa e un potente set di istruzioni.
Tutti questi processori furono alla base della "rivoluzione" degli home computer,
poiché grazie al loro basso prezzo permisero la realizzazione di veri computer ad un
costo accessibile.
Il primo microprocessore utilizzato per applicazioni spaziali fu l'RCA RCA
1802 (conosciuto anche come CDP1802 o RCA COSMAC) (presentato nel 1976) che
venne utilizzato dalle sonde NASA Voyager, Viking e dalla sonda Galileo (lanciata
nel 1989 e arrivata nel 1995 su Giove). L'RCA COSMAS era la prima
implementazione della tecnologia CMOS. IL CDP1802 venne utilizzato dato che era
a basso consumo e dato che era prodotto con una tecnologia (Silicon on Sapphire)
che lo rendeva meno sensibile ai raggi cosmici e alle cariche elettrostatiche. Il 1802
può essere considerato il primo microprocessore anti radiazione della storia.
Processori a 16 bit
Il TMS-9900 il primo microprocessore a 16
bit su singolo chip
Il primo microprocessore a 16 bit fu il National Semiconductor IMP-16 basato su più
integrati. Venne presentato nel 1973 e una versione a 8 bit chiamata IMP-8 venne
presentata nel 1974. Nel 1975 National presento il primo microprocessore a 16 bit su
singolo chip il PACE, che fu seguito dalla versione NMOS chiamata INS8900.
Altri sistemi multichip a 16 bit furono l'LSI-11 prodotto da Digital Equipment
Corporation per il minicomputer PDP 11/03 e il MicroFlame 9440 della Fairchild
Semiconductor prodotto tra il 1975 e il 1976.
Il primo microprocessore a 16 bit su singolo chip fu il Texas Instruments TMS9900un processore compatibile con la linea TI 990 di minicomputer. Il 990 venne
utilizzato dai minicomputer TI990/4, dall'home computer TI-99/4A e dai computer
TM990 prodotti da terze parti. Il processore era inserito in un integrato ceramico da
64 pin di tipo DIP mentre molti altri microprocessori a 8 bit dell'epoca utilizzavano
un più economico package a 40 pin di tipo plastico. Il successivo TMS 9980 venne
sviluppato per competere con l'Intel 8080 e venne inserito in un package plastico di
40 pin. Il processore era compatibile con il set di istruzioni TI 990 ma per poter
utilizzare solo 40 pin faceva muovere 8 bit di dati per ciclo di clock e gestiva un
indirizzamento di 16 KB. Il successore TMS 9995 aveva una nuova architettura. La
famiglia venne espansa con il 99105 e il 99110.
La Western Design Center, Inc. presento nel 1984 il CMOS 65816 una versione a 16
bit del WDC CMOS 65C02. Il 65816 fu il cuore dell'Apple IIGS e del Super
Nintendo Entertainment System, uno dei progetti a 16 bit più famosi dell'epoca.
Diversamente da TI, Intel non aveva una linea di minicomputer da emulare e decise
di usare l'8085 come base per il suo progetto a 16 bit, realizzando così l'Intel 8086,
capostipite di quella che poi sarebbe diventata la famiglia X86, i cui discendenti sono
molto diffusi nei modernipersonal computer. Realizzò anche una versione con il bus
esterno a 8 bit, l'8088, che venne impiegato nel primo IBM PC modello 5150.
Successivi sviluppi furono gli Intel 80186, 80286 e nel 1985 l'Intel 80386, la prima
versione a 32 bit compatibile X86. La prima Memory management unit (MMU)
integrata in un microprocessore venne sviluppata da Childs e altri per Intel e ricevette
il brevetto U.S. Patent 4,442,484.
Progetti a 32 bit
Il Motorola 68000, il primo microprocessore a 32 bit a larga diffusione
I progetti a 16 bit erano disponibili da pochi anni quando sul mercato iniziarono ad
apparire architetture a 32 bit.
Il primo microprocessore a 32 bit fu il BELLMAC-32A prodotto dalla AT&T Bell
Labse i primi esemplari furono prodotti nel 1980 mentre la produzione in serie iniziò
nel 1982 (si veda qui per la bibliografia o qui per le caratteristiche). Nel 1984 dopo lo
smembramento della AT&T il microprocessore venne rinominato WE 32000 (WE
daWestern Electric) e vennero sviluppati due successori, il WE 321000 e il WE
32200. Questi microprocessori vennero utilizzati nei minicomputer AT&T 3B5 e
3B15. Il 3B2 fu il primo superminicomputer da tavolo. I processori vennero utilizzati
anche inCompanion il primo computer portatile a 32 bit e in Alexander il primo
supermicrocomputer grande quanto un libro. Il sistema era dotato anche di cartucce
ROM, simili a quelle utilizzate da alcune console attuali. Tutte queste macchine
eseguivano l'originale Unix sviluppato dai Bell Labs e includevano il primo gestore
grafico chiamato xt-layer.
Il primo processore a 32 bit ad arrivare sul mercato dei personal computer fu però
il Motorola 68000 presentato nel 1979. Il 68000 possedeva un'architettura interna a
32 bit ma un bus dati a 16 bit per ridurre il numero di pin del package. Motorola
normalmente lo indicava come un processore a 16 bit sebbene l'architettura interna
fosse chiaramente a 32 bit. La combinazione di alta velocità, ampio spazio di
indirizzamento (16 MB) e costo contenuto ne fecero un processore molto diffuso:
venne usato dall'Apple Lisa e dal Macintosh e da molti altri sistemi come l'Atari ST e
l'Amiga, e anche Olivetti lo impiegò sulla sua linea di minicomputer denominata L1.
Dato il successo ottenuto, Motorola sviluppò una serie di successori del 68000: il
secondo della famiglia fu l'MC 68010 che aggiunse il supporto della memoria
virtuale. Nel 1984 presentò il Motorola 68020, la prima versione con bus dati e
indirizzi a 32 bit. Il 68020 fu molto popolare nei superminicomputer Unix e diverse
compagnie produssero macchine basate su questo microprocessore. Il
successivo Motorola 68030 (1987) introdusse la MMU nel microprocessore; la
famiglia 68000 in quel periodo era l'unica a contendere la palma di processori per
personal computer alla famiglia x86, con un grosso vantaggio in termini di
prestazioni e versatilità. Il successivo Motorola 68040 (1991) inserì il coprocessore
matematico nel microprocessore e migliorò notevolmente le sue prestazioni grazie
all'adozione della pipeline. Tuttavia Motorola, operando anche in altri mercati oltre a
quello dei microprocessori, non fu in grado di tenere il passo con Intel e le varie case
produttrici di processori x86 compatibili sul piano della ricerca e dell'accelerazione
tecnologica: i successivi processori della serie, il 68050 e 68060, offrivano un
incremento prestazionale molto modesto, rimanendo staccati dalle prestazioni offerte
dai modelli x86 compatibili di prezzo analogo.
Alcune società avevano utilizzato il 68020 per realizzare soluzioni embedded. Ci fu
un periodo dove il numero di 68020 utilizzati in sistemi embedded era uguale a
quello dei personal computer con processore Pentium [1]. Motorola a tal proposito
sviluppò la famiglia ColdFirederivata dal 68020.
Tra l'inizio e la metà degli anni '80 National Semiconductor presentarono una
versione a 32 bit del loro precedente processore, il processore chiamato NS 16032
aveva una piedinatura compatibile con la versione a 16 bit. Il successore con
piedinatura in grado di trasmettere 32 bit di dati e indirizzi fu l'NS 32032 che venne
utilizzato in una linea di computer industriali prodotti da OEM. In quel periodo
la Sequent presentò il primo sistema server SMP basato su NS 32032. Questi sistemi
vennero abbandonati alla fine degli anni 80.
Altre architetture come l'interessante Zilog Z8000 arrivarono troppo tardi sul mercato
e non ebbero seguito.
Processori a 64 bit per personal computer
L'Athlon 64, prima CPU a 64 bit compatibile con l'architettura x86
Sebbene i microprocessori a 64 bit fossero disponibili per i sistemi di fascia alta
(server e workstation) fin dagli anni 90, solo dopo l'inizio del nuovo millennio si
iniziarono a vedere sistemi a 64 bit per il mercato dei personal computer.
AMD presentò il primo sistema a 64 bit compatibile con l'architettura x86 nel
settembre 2003 con l'Athlon 64. Questo microprocessore implementava l'AMD64 una
espansione a 64 bit dell'IA-32 sviluppata da AMD. Intel arrivò poco dopo con
l'estensione x86-64 che pur con un nome diverso era l'estensione sviluppata da AMD;
infatti ne era pienamente compatibile. I processori supportavano le istruzioni a 32 bit
per compatibilità ma solo con la modalità a 64 bit riuscivano a mostrare a pieno la
loro potenza. Con il passaggio a 64 bit vennero raddoppiati i registri gestiti dal set di
istruzioni dei processori per migliorare le prestazioni dei sistemi. La penuria di
registri è sempre stata un problema per le architetture x86.
Il passaggio dei processori PowerPC ad un'architettura a 64 bit fu invece indolore, i
processori vennero sviluppati durante l'inizio degli anni 90 e vennero previsti fin
dall'inizio le estensioni a 64 bit. I registri degli interi e la gestione degli indirizzi
venne estesa a 64 bit mentre la parte in virgola mobile era già a 64 bit. Non furono
aggiunti nuovi registri e le prestazioni dei programmi a 32 bit non erano penalizzate
dalla nuova architettura.
Architetture Multicore
Un approccio per incrementare le performance di un computer consiste nell'utilizzo di
più processori, come nelle architetture SMP utilizzate in server e workstation a partire
dagli anni '90. L'inseguimento della legge di Moore ha però presentato difficoltà
sempre maggiori, così come nella progettazione di singoli chip più prestanti, mano a
mano che si avvicinavano i limiti fisici della tecnologia.
Conseguentemente, i produttori hanno cercato soluzioni alternative per inseguire i
costanti aggiornamenti nel mercato. Grazie anche alla continua evoluzione della
tecnologia di fabbricazione dei chip, si è resa possibile la realizzazione di
processori multi core, costituiti dall'integrazione di più microprocessori (core) su un
singolo chip.
I processori multi-core consentono potenzialmente una moltiplicazione delle
performance in base al numero dei core (ammesso che il sistema operativo sia in
grado di avvantaggiarsene). I vari core possono condividere tra loro alcuni
componenti come il bus di interfaccia o la cache di secondo livello. La prossimità
estrema dei diversi core consente uno scambio di dati molto più veloce in
comparazione con i sistemi SMP discreti tradizionali, migliorando le prestazioni
generali.
Nel 2005 è stato presentato il primo processore dual-core (a due core) e già nel 2007
i processori dual-core erano ampiamente diffusi in server, workstation e nei PC. Al
2008 si annoverano già processori quad-core (a quattro core) per applicazioni highend in ambito professionale ma anche domestico.
La Sun Microsystems ha recentemente annunciato i chip Niagara e Niagara 2,
entrambi con architettura eight-core (a otto core), mentre sono già ampiamente
diffusi processori dual-core di Intel e AMD, tri-core di IBM (di derivazione
PowerPC, utilizzate nella console Xbox 360) e quad-core per applicazioni high-end.
RISC
Un microprocessore RISC R4400
Tra la metà degli anni 80 e l'inizio degli anni 90 apparvero molti
microprocessoriRISC ad alte prestazioni sebbene questi microprocessori vennero
utilizzati principalmente in sistemi ad alte prestazioni basati su varianti del sistema
operativo Unix e su macchine embedded. Da allora i sistemi RISC si diffusero
ovunque e oramai anche i microprocessori Intel integrano all'interno un'architetture
RISC che utilizza uno strato di emulazione per eseguire il codice x86 che è di
tipo CISC.
Il concetto RISC apparve nei supercomputer fin dagli anni 60 (CDC 6600) ma i primi
progetti che puntarono allo sviluppo di microprocessori esplicitamente RISC
risalgono agli anni 80 con i progetti Berkeley RISC e il progetto MIPS della Stanford
University. Il primo microprocessore RISC commerciale fu l'R2000, un sistema a 32
bit appartenente all'architettura MIPS derivata dall'architettura sviluppata a Stanford.
Il successore R3000 migliorò le prestazioni e l'R4000 fu il primo sistema a 64 bit
RISC. Progetti concorrenti furono l'IBM POWER e il Sun SPARC. Poco dopo anche
altri produttori iniziarono a rilasciare processori RISC, tra questi si segnalano l'AT&T
CRISP, l'AMD 29000, l'Intel i860 e Intel i960, il Motorola 88000, il DEC Alpha e
il PA-RISC.
La guerra dei microprocessori ha eliminato quasi tutte le famiglie, solo il PowerPC e
lo SPARC resistono nei sistemi di calcolo per server e supercomputer. I MIPS fino al
2006 furono utilizzati da Silicon Graphics per alcuni loro sistemi sebbene adesso
siano utilizzati principalmente in applicazioni embedded. Alcune società come
la ARM seguirono una strada diversa. Inizialmente i processori ARM vennero
progettati per l'utilizzo nei personal computer ma nel giro di pochi anni la società si
rese conto dell'elevata richiesta di processori a basso consumo per applicazioni
embedded e si convertì invadendo il mercato embedded con opportune versione di
processori ARM. Attualmente il mercato dei dispositivi embedded e dominato dai
processori MIPS, ARM e PowerPC.
Nel calcolo a 64 bit le architetture DEC
SPARC, Power e Itanium sono tra le più popolari.
Alpha,
AMD64,
MIPS,
Realizzazione
La realizzazione dei chip (e quindi anche dei microprocessori) avviene in diverse fasi.
Il materiale di partenza è una fetta circolare di semiconduttore detta substrato: questo
materiale, già debolmente drogato, viene ulteriormente drogato per impiantazione
ionica per creare le zone attive dei vari dispositivi; vengono poi depositati una serie
di sottili strati di materiali diversi che vanno a creare il wafer:




Strati di semiconduttore policristallino;
Strati isolanti sottili;
Strati isolanti di ossido molto più spessi dei precedenti;
Strati metallici per i collegamenti elettrici, generalmente costituiti da alluminio
e più raramente da rame

Reticolo di atomi di "silicio stirato" in un moderno microprocessore
La geometria delle zone che devono ricevere il drogaggio è impressa con un processo
di fotolitografia: ogni volta che il circuito integrato deve ricevere un nuovo strato o
una nuova impiantazione di droganti, viene ricoperto da un sottile film fotosensibile,
che viene impressionato tramite una maschera ad altissima definizione. Le zone del
film illuminate divengono solubili e vengono asportate dal lavaggio, lasciando in tal
modo scoperto il chip sottostante. Una volta terminata la creazione dei chip sul
substrato, questi vengono testati, il substrato viene tagliato e i chip incapsulati nei
packages con cui verranno montati sui circuiti stampati. In un circuito integrato si
possono facilmente inserire transistor e diodi: è anche possibile creare su
semiconduttore delle piccole resistenze e condensatori, ma in genere questi ultimi
componenti occupano molto spazio sul chip e si tende ad evitarne l'uso, sostituendoli
quando possibile con reti di transistor. Non è invece possibile integrare degli
induttori, dei trasformatori, che devono quindi essere collegati esternamente al
circuito integrato: lo stesso vale per i condensatori di media e grande capacità.
In questi ultimi anni, tuttavia, si è iniziato ad usare il Silicio in combinazione
col Germaniocon la tecnica del silicio stirato (Strained-Silicon). Questa tecnica
consiste nel depositare, sul corpo del wafer di silicio, uno strato di silicio-germano di
2micron con concentrazione di germano pari al 20%; la concentrazione di germano
non è uniforme in tutto lo strato: vi è una maggiore concentrazione sulla cima della
struttura. A questo punto un sottilissimo strato di silicio dello spessore di circa 20nm
viene depositato sullo strato di Silicio-Germano. Questa tecnica allunga il reticolato
cristallino del Silicio di circa l'1% sia in direzione laterale che verticale e ciò permette
un enorme incremento sulla mobilità dei portatori di carica, che incontrano una
resistenza inferiore al loro passaggio e fluiscono fino al 70% più velocemente, cosa
che rende più veloci i chip del circa 30% senza bisogno di ulteriori miniaturizzazioni.
Il principio che sta alla base di tutto questo è che gli atomi di silicio dello strato
sovrastante tendono ad allinearsi con quelli dello strato di Silicio-Germano che,
essendo più spesso, obbliga gli atomi di silicio a spaziarsi di una distanza analoga a
quella degli atomi di Silicio-Germanio.
Nota: nei wafer di silicio da 8", non si usa più da tempo né rame né alluminio per i
collegamenti, bensì diversi strati di Tungsteno (deposti a tot Angstrom, a seconda
dello strato) che vanno a ricoprire le Vias che sono appunto i famosi piedini dove
vengono fatti i collegamenti elettrici, con le micro-saldature. Il Tungsteno è deposto
su tutto il wafer (sarebbe incocepile ricoprire migliaia e migliaia di Vias
singolarmente) e viene rimosso per planarizzazione chimica-meccanica.
Microprocessori specializzati
Sebbene il termine microprocessore tradizionalmente indichi una CPU a singolo o
multi integrato o un System-on-a-chip (SoC), nel corso degli anni sono state
sviluppate delle unità funzionali di elaborazioni con notevoli affinità con i
microprocessori. Per esempio i microcontrollori, iDigital Signal Processors (DSP) e
le Graphics Processing Unit (GPU). Molti sistemi che ricadono in queste categorie
sono dotati di limitate possibilità di programmazione o non sono completamente
programmabili. Per esempio le prime GPU sviluppate negli anni 90 non erano
programmabili o supportavano una limitata programmazione, solo recentemente le
GPU hanno acquisito una certa libertà di programmazione. Non c'è universale
consenso nella definizione di microprocessore ma in generale si assume che un
microprocessore sia una CPU in grado di eseguire un programma generico e non una
CPU limitata.
L'RCA 1802 era un microprocessore specializzato, non perché fosse limitato nella
programmazione, bensì perché era progettato per applicazioni spaziali e quindi aveva
delle particolari caratteristiche. Il sistema venne definito a progetto statico dato che
poteva variare la frequenza di funzionamento in modo arbitrario fino a raggiungere
gli 0 Hz in modo da andare in stop totale. Le sonde Voyager, Viking e Galileoper
utilizzare la minor potenza elettrica durante il viaggio spaziale mettevano in stop il
processore. Dei timer o dei sensori risvegliavano il processore alzandone la frequenza
quando era necessario che il sistema elaborasse dei dati per la navigazione, per il
controllo orbitale, per l'acquisizione dati o per le comunicazione radio.
Mercato dei microprocessori
Nel 2003 il mercato dei microprocessori valeva 44 miliardi di dollari, la cifra include
la produzione e la vendita dei microprocessori [2]. I microprocessori per personal
computer pur rappresentando solo lo 0.2% del numero totale di pezzi prodotti
assorbono la metà del fatturato totale.
Circa il 55% delle CPU erano microcontrollori a 8 bit, più di due miliardi di
microcontrollori a 8 bit furono venduti nel 1997 [3].
Meno del 10% delle CPU erano a 32 bit o 64 bit. Di tutte le CPU a 32 bit solo il 2%
era utilizzato nei personal computer mentre il 98% era utilizzato in applicazioni
embedded come elettrodomestici, controllori industriali, periferiche per computer e
altro. Tenendo conto di tutti i microprocessori prodotti e del mercato totale il prezzo
medio di un microprocessore è di 6 dollari statunitensi [4].
Architetture e microprocessori comuni

AMD K5, K6, K6-2, K6-III, Duron, Athlon, Athlon XP, Athlon MP, Athlon
XP-M (IA-32 32-bit Intel architettura x86)
































AMD Athlon 64, Athlon 64 FX, Athlon 64 X2, Opteron, Sempron, Turion
64 (architettura AMD64)
architettura ARM, StrongARM, Intel PXA2xx
Altera Nios, Nios II
Architettura Atmel AVR (microcontrollori)
EISC
RCA 1802 (noto anche come RCA COSMAC, CDP1802)
Cyrix M1, M2 (IA-32 architettura x86)
DEC Alpha
Intel 4004, 4040
Intel 8080, 8085, Zilog Z80
Intel 8086, 8088, 80186, 80188 (architettura x86 a 16 bit reale)
Intel 80286 (architettura x86 a 16 bit modalità reale e protetta)
Intel 80386, 80486, Pentium, Pentium Pro, Celeron, Intel Core Duo, Intel Core
2 Duo, Pentium II, Pentium III, Xeon, Pentium 4, Pentium M,Celeron M (IA-32
architettura intel x86 a 32 bit)
Autimi Xeon, primi Pentium 4, Pentium D, Celeron D, Intel Core
2 (architettura EM64T)
Intel Centrino (anche nella versione dual-core)
Intel Itanium (architettura IA-64)
Intel i860
Intel i960
Architettura MIPS
Motorola 6800, MOS Technology 6502, Motorola 6809
Motorola 68000, ColdFire
Motorola 88000
NexGen Nx586 (IA-32 architettura x86 a 32 bit)
IBM POWER
NSC 320xx
OpenCores architettura OpenRISC
PA-RISC
PowerPC, G3, G4, G5
National Semiconductor SC/MP ("scamp")
Signetics 2650
SPARC, UltraSPARC, UltraSPARC II–IV
SuperH family





Transmeta Crusoe, Efficeon (VLIW architettura
x86,
Intel x86 tramite emulazione)
INMOS Transputer
VIA C3,C7,Eden Series (IA-32 architettura x86 a 32 bit)
Western Design Center 65xx
XAP da Cambridge Consultants
IA-32
32-bit
MICROCONTROLLORI
Il Microcontrollore o Microcontroller o MCU è un dispositivo elettronico integrato
su singolo chip, nato come evoluzione alternativa alMicroprocessore.
È progettato per interagire direttamente con il mondo esterno tramite
unprogramma residente nella propria memoria interna e mediante l'uso
di pinspecializzati o configurabili dal programmatore. Sono disponibili in 3 fasce di
capacità elaborativa (ampiezza del bus dati): 8 bit, 16 bit e 32 bit.
L'ampia gamma di funzioni di comando e controllo disponibili, sia analogiche che
digitali, integrate sullo stesso chip, permette l'impiego delle MCU in sostituzione di
schede elettroniche cablate tradizionali ben più complesse e costose.
Per i microcontrollori sono rilasciati sistemi di sviluppo amatoriali e professionali
anche in modalità open source.
Differenze tra Microprocessore e Microcontrollore
Microcontrollore PIC 18F8720 in contenitore 80-pin TQFP.
Quando nell'Aprile del 1972 Intel ha introdotto sul mercato il primoprocessore a 8 bit
- lo 8008 - esso consisteva di una ALU] (Arithmetic & Logical Unit) per svolgere
operazioni logiche e matematiche e di una elementare CPU (Control Processing
Unit) per controllare il flusso di dati e indirizzi tra la ALU e i circuiti esterni di
supporto. Successivamente, l'architettura interna del Microprocessore (in seguito
spesso chiamato semplicemente CPU) si è velocemente evoluta con blocchi interni
complessi (numero di bit elaborati e movimentati) e con capacità e velocità di calcolo
crescenti in modo esponenziale. Per quanto potente, il Microprocessore richiede
sempre delle unità esterne - memorie, gestori di segnali e dispositivi periferici per
poter dialogare e interagire con l'esterno.
Il Microcontrollore è invece un sistema
memoria permanente, la memoria volatile
altri blocchi specializzati. A differenza
generale (general purpose), è progettato
funzionale ed ottimizzare il rapporto
applicazione,
completo, che integra il processore, la
e i canali (pin) di I/O, oltre ad eventuali
dei microprocessori, adatti per un uso
per ottenere la massima autosufficienza
prezzo-prestazioni per una specifica
Tabella 1: confronto Microprocessore vs. Microcontrollore[1]
Caratteristica
Microcontrollore
Microp
Velocità massima di clock
200Mhz
4GHz
Capacità elaborativa massima in MFLOPS
200
5000
Potenza minima dissipata in Watt (in stato di elaborazione[2])
0.001
50
Prezzo minimo per singola unità in USD
0.5
50
Numero di pezzi venduti annualmente (in milioni)
11,000
1,000
In sintesi, il Microcontrollore è molto meno potente del Microprocessore, ma è
economico, ha consumi energetici ridotti e, per la sua versatilità, viene utilizzato in
parecchi milioni di prodotti.
DSP
Parallelamente al Microcontrollore, e in continua evoluzione di potenza e di mercato,
esistono i DSP (Digital Signal Processor) che incorporano moduli specializzati nel
trattamento in digitale di segnali analogici. I campi tipici di utilizzo sono nel
controllo di azionamenti (motori), di componenti per auto e avionica, di trattamento
di segnali multimediali (codifica/decodifica audio e video, streaming e, campo
principe, nella telefonia mobile. Il DSP ha tipicamente una struttura a 32 bit, e
prossimamente a 64 bit.
Componenti del Microcontrollore
L'architettura del Microcontrollore prevede un insieme di moduli fissi, comuni a tutti
i modelli, e una serie di possibili estensioni in funzione del costruttore, del prezzo e
della fascia applicativa):
Unità di elaborazione (CPU)

Memoria di programma (ROM, EPROM, FLASH)

Memoria dati (RAM e EEPROM)

Oscillatore interno o esterno

Porte di I/O configurabili

Gestione Interrupt[3]

Moduli aggiuntivi

Contatori e temporizzatori

Moduli
di
comunicazione:
(USART, I2C, SPI, USB, Ethernet, IrDA, CAN, Wi-Fi, Zigbee)

Interfacce analogiche o tecnologia mista: ADC, DAC, PWM,
Comparatori analogici

Interfacce di visualizzazione e controllo: (LCD, Touch sensor)
Motivazioni del successo

Il successo e l'enorme crescita del Mercato di questi componenti sono dovuti a questi
fattori:
Basso costo (consente di sostituire 1 o più circuiti integrati tradizionali a costo
inferiore).

Ampia scalabilità di prestazioni, di complessità (da 8 pin a 144 pin) e velocità
(da 1 MHz a 200 MHz).

Vasta gamma di dotazioni in periferiche e moduli specializzati.

Ridotto (al limite = 0) numero di componenti esterni, ovvero semplicità di
realizzazione.

Facilità di programmazione dovuta anche ai numerosi tool di sviluppo
disponibili.

Ampia (e spesso libera) disponibilità di librerie, codici di esempio e
documentazione

Possibilità e facilità di riprogrammazione (in-field e in-system).

Grande flessibilità applicativa .

Brevi tempi di introduzione sul mercato del prodotto finito.
Applicazioni di impiego

L'enorme volume di pezzi prodotti deriva dall'impiego massiccio di questo
componente nei dispositivi elettronici di consumo e nei prodotti industriali si massa.
Difatti, al primo posto in classifica come segmento di mercato troviamo
l'automotive (auto e altri mezzi di trasporto), che utilizza decine, in alcuni casi anche
centinaia, di componenti per singola unità industriale venduta.
Segue il segmento della telefonia mobile e delle telecomunicazioni in genere, quindi
vengono i prodotti medicali, i consumer e gli elettrodomestici.
Spesso utilizziamo questi dispositivi senza rendercene conto,
le smartcard delle carte di credito o per le cartoline musicali di auguri.
come
per
Mercato
Il Microntrollore occupa una posizione rilevante nel mercato complessivo
dei semiconduttori, con una stima di introiti per circa 14 miliardi di USD e 10.8
miliardi di pezzi venduti nel 2008. La stima di crescita prevede un incremento del
10% fino al 2014, mentre i pezzi venduti saranno di 14 miliardi per la fine 2010. [4]
È comunque un mercato molto frammentato, con più di 40 produttori e più di 50
architetture, nessuna delle quali detiene più del 5% del mercato. Il segmento delle
MCU a 32 bit è quello maggiormente in crescita, con introiti annui attuali (2009) di
circa il 25% del totale.
I principali (in ordine decrescente di volumi di mercato) sono:










Renesas Technology
Freescale Semiconductor
NEC
Fujitsu
Infineon Technologies
Microchip
ST Microelectronics
Texas Instruments
Atmel
NXP Semiconductors
Il catalogo di molte aziende sopra citate (es. Freescale, ST, Texas, NXP, Atmel) e
altri ancora, comprende prodotti il cui core è una MCU ARM.
Cenni storici
Il primo Microcontrollore
Il primo computer on-chip ottimizzato per applicazioni di controllo è stato il modello
8048 di Intel, rilasciato nel 1975, con RAM e ROM sullo stesso chip. Questo
componente è stato utilizzato in più di un miliardo di tastiere per PC e numerose altre
applicazioni.
Nei primi anni di sviluppo del Microcontrollore, la maggior parte dei modelli era
commercializzata in due varianti. La più economica era dotata di memoria di
programma programmata in fabbrica (ROM) su specifiche del cliente oppure
programmabile dall'utente una sola volta (OTP, One Time Programming). La
seconda, più costosa, aveva la memoria di programma cancellabile EPROM mediante
esposizione a luce ultravioletta del chip tramite la finestrella trasparente che lo
sovrastava.
Nel 1993, Microchip ha introdotto il modello di MCU PIC16C84, caratterizzato da
memoria programma in EEPROM, ovvero cancellabile elettricamente, che
permetteva sia lo sviluppo veloce del prototipo del prodotto finito, sia la modifica
del Firmwarea circuito montato (In-System Programming). La semplificazione del
contenitore (package), senza finestrella in quarzo, ha contribuito a ridurre il costo
finale del componente.
Nello stesso anno, Atmel [3] ha rilasciato il primo MCU che utilizzava una memoria
di tipo Flash, ancora più semplice e veloce da programmare/modificare, più compatta
e con un ciclo di vita (cancellazioni) molto più elevato. Questo ha segnato l'inizio del
massiccio utilizzo del Microcontrollore nelle più disparate applicazioni.
Sistemi di sviluppo per MCU rilasciati in modalità Open Source
ACK (Amsterdam Compiler Kit)
L'Amsterdam Compiler Kit [4] è un cross-compilatore GPL destinato agli ambienti
Unix
I processori trattati sono:













6500 Il 6502 è il noto processore dell'Apple e del Vic 20, il 6510 del
Commodore 64
6800
6805
ARM
8080
Z80
Z8000
i86
i386
68000 : Nei microcontrollori complessi tipo il 68302,il solo 68000 viene
programmato ed il RISC viene lasciato ad altri strumenti
68020
NS32016
S2650
SPARC L'efficienza del compiliatore è nella media dei compilatori commerciali
proprietari.
SDCC (Small Device C Compiler)
L'SDCC (Small Devices C Compiler) [5] è un porting Open Source GPL per i
microcontrollori delle sole famiglie Z80, 8051, 68HC11, PIC. È stato separato dal
progetto GCC (Gnu Compilers Collection) per poter ottimizzare meglio il lavoro
dei microcontrollori, dove serve una grande efficienza del compilatore e
contemporaneamente vivere in un ambiente molto povero di risorse RAM e ROM.
Nonostante il piccolo numero di target disponibili, il compilatore è molto quotato e
nella maggior parte delle situazioni dà risultati migliori dei sistemi di sviluppo
professionali commerciali, con lo svantaggio dell'assenza di una IDE integrata.
Senza settaggi specifici il compilatore genera il codice per il controllore 8051
ARCHITETTURA DI VON NEUMANN
Con l'espressione architettura di von Neumann (o macchina di von Neumann) ci
si riferisce a uno schema di progettazione di calcolatori elettronici che prende nome
dal matematico John von Neumann e che fu sviluppato per il sistema IAS machine e
dell'Institute for Advanced Study.
Lo schema si basa su cinque componenti fondamentali:
CPU o unità di lavoro che si divide a sua volta in
Unità operativa, nella quale uno dei sottosistemi più rilevanti è l'ALU (Arithmetic
Logic Unit)
Unità di controllo
Unità di memoria, intesa come memoria di lavoro o memoria principale (RAM,
Random Access Memory)
1. Unità di input, tramite la quale i dati vengono inseriti nel calcolatore per essere
elaborati
2. Unità di output, necessaria affinché i dati elaborati possano essere restituiti
all'operatore
3. Bus, un canale che collega tutti i componenti fra loro
All'interno dell'ALU è presente un registro detto accumulatore, che fa da buffer
tra input e output grazie a una speciale istruzione che carica una parola dalla memoria
all'accumulatore e viceversa.
È importante sottolineare che tale architettura, a differenza di altre, si distingue per la
caratteristica di immagazzinare all'interno dell'unità di memoria, sia i dati dei
programmi in esecuzione che il codice di questi ultimi.
Bisogna comunque precisare che questa è una schematizzazione molto sintetica,
sebbene molto potente: basti pensare che i moderni computer di uso comune sono
progettati
secondo
l'architettura
Von
Neumann.
Inoltre, quando si parla di unità di memoria si intende la memoria principale, mentre
le memorie
di
massa sono
considerate
dispositivi
di
I/O.
Il motivo di ciò è innanzitutto storico, in quanto negli anni quaranta, epoca a cui
risale questa architettura, la tecnologia non lasciava neanche presupporre dispositivi
come hard disk, CD-ROM, DVD-ROM o anche solo nastri magnetici, ma anche
tecnico, se si considera che in effetti i dati da elaborare devono comunque essere
caricati in RAM, siano essi provenienti da tastiera o da hard-disk.
MEMORIA VOLATILE E MEMORIA NON VOLATILE
MEMORIA NON VOLATILE
La memoria non volatile è una tipologia di memoria informatica in grado di
mantenere le informazioni anche quando non viene alimentata. Esempio di memorie
non volatili sono le read only memory, le flash memory, la maggior parte di memorie
magnetiche e i primi metodi di memorizzazione informatica come le schede
perforate e i nastri perforati.
Le memorie non volatili sono utilizzate comunemente come memorie secondarie per
memorizzare dati intermedi o per memorizzare dati da archiviare. La più comune
memoria utilizzata come memorie primaria è la memoria RAM che tendenzialmente
è più veloce delle memorie secondarie ma ha lo svantaggio di perdere i dati quando
l'alimentazione viene tolta.
Diverse società stanno cercando di sviluppare memorie non volatili ma con
caratteristiche di velocità, consumo e costo comparabili con quelle delle memorie
RAM. L'utilizzo di memorie non volatili come memoria primaria potrebbe permettere
di evitare le lente fasi di avvio dei computer, riducendo i tempi morti e riducendo i
consumi energetici.
Le memorie di archiviazione dati possono essere divise in memorie elettriche e
memorie meccaniche, le memorie elettroniche sono relativamente veloci ma sono
costose mentre le memorie meccaniche sono tendenzialmente più lente ma sono
mediamente più economiche.
Memorie elettriche
Le memorie elettriche non volatili basano la loro capacità di memorizzazione
sull'immagazzinamento di una certa quantità di carica
ROM programmabili tramite maschera
Questo genere di ROM sono formate da una serie di collegamenti a massa o
all'alimentazione. Queste memorie sono progettate tramite delle maschere che
definiscono i collegamenti e vengono prodotte in grandi volumi direttamente in
fabbrica. Vengono usualmente utilizzate per memorizzare il codice del programma di
avvio dei dispositivi elettronici, per memorizzare porzioni di codice che non vanno
modificati nel tempo e che saranno inserite in prodotti creati in serie.
ROM programmabile
Un diverso approccio prevede la creazione di un integrato programmabile, la ROM
contiene all'interno di ogni cella di memoria un microfusibileche può essere distrutto
elettricamente al fine di portare lo stato della cella a zero o a uno (dipende da come è
costruita la memoria). Una volta "bruciato" il fusibile questo non può più essere
ricostruito.
Le prime PLD utilizzavano un approccio simile per memorizzare le connessioni tra le
porte logiche
Nei nuovi progetti, si tende a utilizzare delle memorie programmabili al posto dei
microfusibili.
Erasable PROM
Vi sono due grandi categorie di memorie non volatili basati su tecnologia EPROM.
UV-erase EPROM
Le prime memorie EPROM erano facilmente distinguibili dagli altri componenti per
la presenza di un vetro al quarzo al centro dell'integrato. Queste memorie hanno un
trasistor posizionato in ogni cella, il transistor ha un gate flottante, cioè il gate non
risulta essere collegato elettricamente con nessun componente. Tramite l'utilizzo
del breakdown a valanga si può spingere un certo numero di elettroni a entrare nel
gate flottante, quando il gate flottante risulta aver immagazzinato un certo numero di
elettroni la cella risulta essere programmata a zero. La rimozione della carica viene
ottenuta tramite l'esposizione delle memoria alla radiazione ultravioletta, che
favorisce lo svuotamento del gate flottante permettendo alle celle di memorie di
tornare allo stato logico uno.
OTP (one-time programmable) ROM
Le ROM OTP sono fisicamente delle EPROM nelle quali non è stato montato la
finestra di quarzo. Come le PROM possono essere programmate una sola volta,
hanno sostituito quasi totalmente le PROM nelle produzioni elettroniche dato che
possono essere programmate con le attrezzature delle EPROM e vengono utilizzate
dove la possibilità di cancellare la memoria non è necessaria.
Electrically erasable PROM
Le Electrically erasable PROM sono delle memorie programmabili tramiti segnali
elettrici che hanno il vantaggio di poter essere cancellate sempre tramite segnali
elettrici, questo evita di dover rimuovere l'integrato del circuito per cancellarlo. Il
processo di lettura e scrittura di una locazione appare quasi istantaneo all'utente
sebbene la scrittura sia più lenta della lettura, la lettura viene invece eseguita a piena
velocità dal sistema. Le locazioni possono essere scritte un numero limitato di volte,
tra le 10 000 e le 100 000, a seconda della tecnologia. Le memorie EEPROM tendono
ad avere capacità inferiori a quelle delle altre memorie non volatili ma risultano utili
per memorizzare impostazioni e configurazioni di dispositivi come modem, ricevitori
satellitari, etc.
Memoria flash
Le memorie flash sono sotto molti punti di vista simili alle memorie EEPROM, la
differenza principale è che lavorano a pagine e quindi possono cancellare i dati solo a
blocchi di pagine. La capacità è nettamente maggiore e vengono utilizzate come
supporto di memorizzazione per fotocamere, macchine fotografiche digitali
e BIOS per computer.
Battery-backed static RAM
Queste memorie sono delle comuni memorie RAM alle quali è stato aggiunto
una batteria al fine di permettere di preservare i dati quando viene a mancare
l'alimentazione.
Usualmente
queste
memorie
vengono
prodotte
con
tecnologia CMOS al fine di minimizzare il consumo energetico. Le batterie utilizzate
sono normalmente al litio al fine di fornire alimentazione per alcuni anni a piccole
memorie. Memorie SDRAM da alcuni gigabyte, se collegate a batterie al litio,
possono mantenere le informazioni per anni. Le impostazioni dei computer spesso
sono memorizzate con memorie di questo tipo, queste memorie mantengono anche lo
stato dell'orologio quando il computer non è alimentato.
MEMORIA VOLATILE
In ambito informatico la memoria è la parte del computer destinata a conservare
informazioni per un certo periodo di tempo. La memorizzazione di informazioni in
memoria, e il successivo recupero delle medesime, sono funzioni fondamentali nel
funzionamento del computer.
Una memoria può essere considerata astrattamente come una sequenza finita di celle
in cui ogni cella contiene una sequenza finita di bit. Normalmente i bit sono gestiti a
gruppi di otto, detti byte. Pertanto lo spazio fisico della memoria può essere
immaginato come una sequenza di locazioni, ognuna contenente un byte. Ogni
locazione è individuata da un preciso indirizzo, normalmente espresso tramite un
numero intero positivo.
Astrazione di von Neumann
Astrazione di von Neumann
Architettura di von Neumann
Nell'architettura di Von Neumann, che rappresenta l'astrazione dei calcolatori
elettronici usualmente impiegati, si vede come vengono impiegate le memorie nei
calcolatori. La macchina di Von Neumann è divisa in una parte destinata al calcolo,
detta processore, ed in una parte destinata alla memorizzazione. La seconda parte
contiene sia i dati su cui la computazione opera, sia i programmi che istruiscono il
processore riguardo quali computazioni effettuare.
Operazioni
Le operazioni effettuate sulla memoria di un computer sono fondamentalmente le
seguenti:



Inizializzazione. È il trattamento che subisce la memoria prima dell'uso
normale. Alcuni tipi di memoria (per esempio la RAM elettronica) non hanno
bisogno di inizializzazione; per tali memorie, il contenuto iniziale è impredicibile.
Per le memorie a sola lettura, l'inizializzazione consiste nella scrittura dei dati
effettuata in fase di produzione. Per i dischi magnetici, l'inizializzazione consiste
nella scrittura di dati che costituiscono un casellario in cui porre le informazioni
utili (la cosiddetta formattazione).
Scrittura. È l'operazione di memorizzazione delle informazioni. Un esempio di
scrittura è assegnare il byte 123 alla cella di indirizzo 1000.
Lettura. È l'operazione di recupero di informazioni memorizzate. Un esempio
di lettura è chiedere alla memoria il contenuto della cella di indirizzo 1000.
Per parlare indifferentemente di lettura o di scrittura, si usa il termine accesso. Per
esempio, per indicare che una memoria è veloce sia in lettura che in scrittura, si dice
che ha un basso tempo di accesso.
Classificazione
La memoria informatica si può classificare secondo vari criteri:







ordine di accesso (memorie ad accesso diretto o memorie ad accesso
sequenziale);
possibilità di scrittura (memorie a lettura-scrittura, memorie scrivibili una sola
volta, memorie a sola lettura);
velocità di lettura;
velocità di scrittura;
costo unitario;
volatilità;
tecnologia (elettronica, magnetica, ottica, magneto-ottica).
Le memorie per computer possono usare varie tecnologie che forniscono prestazioni
e costi molto variabili. Spesso per le memorie veloci ma dall'alto costo unitario si usa
l'espressione "memoria centrale" o "memoria primaria", mentre per le memorie dal
basso costo unitario ma lente si usa l'espressione "memoria di massa" o "memoria
secondaria".
Per gerarchia
Memoria primaria
Collegata alla scheda madre tramite connettori chiamati socket, la memoria primaria,
anche chiamata memoria centrale o memoria principale, serve a contenere i
programmi ed i dati nel momento in cui vengono elaborati.
Per realizzare una memoria principale vengono normalmente utilizzate tecnologie a
semiconduttore (cioè vengono utilizzati circuiti integrati a base di silicio).
La memoria centrale è organizzata come una tabella di celle, ciascuna delle quali è
denotata da un indirizzo (celle che contengono una sequenza di bit; ogni bit può
rappresentare l'informazione 0 oppure 1 tramite un diverso stato elettrico). Ogni cella
ha una dimensione prefissata e gli indirizzi delle celle variano tra 0 e n, dove n è una
potenza di 2.
Le operazioni che la memoria può effettuare sono due: lettura e scrittura.
La lettura consiste nelle seguenti operazioni:


trasferimento dalla CPU all'address register (abbreviato in AR) dell'indirizzo
che si intende leggere;
trasferimento dalla memoria al registro memory buffer (abbreviato in MB) del
contenuto della cella il cui indirizzo è presente nel AR;

trasferimento del contenuto del MB alla CPU.
La scrittura consiste nelle seguenti operazioni:


trasferimento dalla CPU all'AR dell'indirizzo che si intende scrivere e del
contemporaneo trasferimento nel MB del valore che si intende scrivere;
trasferimento del valore del MB alla cella di memoria il cui indirizzo è presente
nel AR.
Bisogna distinguere tra vari tipi di memorie primarie, a seconda della funzione svolta
e delle loro caratteristiche peculiari. Di seguito vengono elencate quelle più
importanti.





RAM, l'acronimo per "random access memory", ovvero "memoria ad accesso
casuale", è la memoria in cui vengono caricati i dati che devono essere utilizzati
dal calcolatore per elaborare. La RAM può essere volatile (si cancella
spontaneamente ed ha bisogno di essere aggiornata), statica o tamponata
(mantiene l'alimentazione anche a macchina spenta). Il processore identifica le
celle della RAM tramite indirizzi preassegnati che ne specificano la posizione: la
memoria si presenta, quindi, come un enorme vettore (stringa ordinata di elementi
detti byte, ciascuno individuabile con un indirizzo). Il termine "random" evidenzia
che non ci sono differenze ad accedere alle varie celle della memoria. Le
caratteristiche della RAM vengono ereditate anche da tutte le altre memorie ad
accesso casuale (individuabili facilmente dal fatto che contengono RAM alla fine).
Sostanzialmente
le
memorie
RAM
si
suddividono
in DRAM (dinamiche), SRAM statiche e che vengono utilizzate per la memoria
cache.
Cache RAM, una memoria associativa integrata nel processore, che ha la
caratteristica di essere molto veloce; dato l'elevato costo, viene utilizzata
esclusivamente per contenere i dati e le istruzioni utilizzati più di frequente (in
modo da migliorare notevolmente le prestazioni del processore).
ROM, l'acronimo per "read only memory", ovvero "memoria in sola lettura (o
solamente leggibile)", è una memoria permanente (cioè ha un contenuto fisso che
non può essere cancellato ed inoltre non è volatile), presente sulla scheda madre,
che contiene le istruzioni che la CPU deve caricare per consentire l'avvio del
sistema e le routine di base che prendono il nome di BIOS (Basic I/O System).
EPROM, l'acronimo per "eresable programmable read only memory", ovvero
"ROM cancellabile e programmabile", che è una memoria in sola lettura, ma ha la
particolarità di poter essere cancellata in particolari condizioni.
MRAM, l'acronimo per "magnetic ram", ovvero "RAM magnetica", è una
memoria ad accesso casuale di "nuova generazione", che utilizza le proprietà del
magnetismo, al posto di una serie di impulsi elettrici, per conservare le
informazioni.
La fase di trasferimento da memoria di sistema a memoria cache viene attuata da un
appostito circuito che prende il nome di MMU (Memory Management Unit). La
MMU svolge anche il compito di gestione virtuale della memoria.
Inoltre c'è da far notare che a causa della dispersione della carica del condensatore, di
capacità estremamente piccola, vi è bisogno di un rinfresco continuo
dell'informazione. A questo compito è dedicato un canale del circuito di DMA che ad
intervalli regolari (153 ms) deve necessariamente rinfrescare l'intera memoria del
sistema per evitare la perdita irrimediabile dei dati e qui il collasso di funzionamento
del computer. Memoria video
Una particolare versione di memorie dinamiche viene utilizzata per la gestione dei
video. In questi dispositivi si sfrutta l'azione del refresh, precedentemente richiamata
per gestire le informazioni che dovranno periodicamente essere inviate al video
evitando di passare quindi attraverso la CPU che renderebbe molto più lento il
trasferimento dei dati.
La tecnologia utilizzata attualmente per la realizzazione di memoria video è
la GDDR (Graphics Double Data Rate)
Memoria secondaria
La memoria secondaria, anche chiamta memoria di massa, racchiude tutti quei
dispositivi che consentono all'utente la memorizzazione in modo permanente, cioè
che consentono di contenere dati e programmi in modo stabile (una volta spento il
processore i dati non vengono persi).
Tipi di memoria secondaria
Qui sotto sono elencate le varie categorie di memorie secondarie:

I dischi magnetici, composti da uno o più dischi (i disk pack) ricoperti di
materiale ferromagnetico, vengono "letti e scritti" (cioè su questi dischi vengono
salvati e recuperati i dati) mediante un braccio mobile dotato della "testina di
lettura/scrittura". I dati vengono trasferiti ai dischi magnetici tramite un buffer
nella memoria centrale ed occupano successive posizioni lungo le tracce, sotto
forma di differenti stati di magnetizzazione. I settori dei dischi vengono letti e
scritti interamente utilizzando il numero della superficie, della traccia e del settore.
Il tempo di accesso ai dischi magnetici è superiore rispetto a quello della memoria
centrale, ma i costi, a parità di quantità di informazione memorizzata, sono
decisamente più bassi. Di questa categoria fanno parte ad esempio gli hard disk e
i floppy disk (realizzati con materiale plastico flessibile).
I dischi ottici, composti da materiale riflettente ricoperto da una sostanza
protettiva, dove l'informazione viene registrata realizzando modificazioni della
superficie riflettente e viene letta mediante un raggio laser che riscontra le
irregolarità della superficie riflettente. I dischi ottici sono senza dubbio i supporti
di memoria secondaria più diffusi: ne esistono di vari tipi, alcuni riscrivibili (cioè
una volta scritti possono essere riscritti nuovamente) e non riscrivibili (una volta
immagazzinati dei dati sul disco, questo non è più riscrivibile con altri dati).
Fanno parte di questa categoria i CD, i CD-ROM e i DVD.

I nastri magnetici, composti da fettucce di nastri magnetizzabili e gestiti dalle
unità a nastro (che dispongono della testina lettura/scrittura), servono per svolgere
funzioni di back-up e log (registrazione delle operazioni effettuate in un certo
tempo). I nastri magnetici consentono solo un accesso sequenziale ai dati (cioè è
necessario leggere tutti i dati precedenti prima di accedere ad un certo dato). Tra i
vari tipi di nastri magnetici, le prestazioni migliori sono ottenute dagli streaming
tape.

La Flash memory, memoria elettronica non volatile di tipo EEPROM. Si
presenta come Memory Card dall'ingombro ridotto.
Memoria olografica

Un altro tipo di memorie secondarie, però ancora in fase di sviluppo, sono
le memorie olografiche. Queste nuove tecnologie olografiche di archiviazione,
avranno il pregio di poter memorizzare i dati non su una superficie (come fanno i
supporti attuali) ma su un volume: queste nuove memorie saranno dunque
caratterizzate da una elevata capacità di archiviazione ed in più da tempi di accesso
brevi.
Tra le varie idee, il modo più promettente per archiviare più immagini olografiche
sullo stesso mezzo è utilizzare differenti angoli di divergenzatra i due laser.
Cambiando l'angolo di incidenza del raggio di lettura è possibile infatti leggere
pagine diverse. Ci sono però alcune problematiche che ostacolano la realizzazione di
queste nuove memorie; le più importanti sono:





l'elevata precisione ottica richiesta per il progetto
la difficoltà per l'allineamento dei vari componenti
le problematiche legate all'imperfezione del materiale utilizzato
il rischio della collimazione dei fasci
il problema dell'elaborazione dei segnali di uscita dai quali vanno ricavati
i bit inizialmente memorizzati
Il motivo principale che spinge i ricercatori alla realizzazione di queste memorie, è
che la registrazione di dati su media magnetici ed ottici arriverà velocemente a
scontrarsi con i limiti fisici dei supporti e quindi le memorie, che ora sono adeguate,
potrebbero non essere più sufficienti per le necessità future.
Per tipo di accesso
Le memorie ad accesso sequenziale possono essere lette e scritte solamente
all'indirizzo immediatamente successivo all'indirizzo a cui è avvenuto l'accesso
precedente. I principali esempi di memorie ad accesso sequenziale sono i nastri
magnetici.

Le memorie ad accesso diretto possono essere lette e scritte a qualunque
indirizzo, indipendentemente dalle operazioni eseguite in passato. Sono dette
anche memorie ad accesso casuale, in quanto, dal punto di vista del costruttore, la
memoria non è in grado di prevedere il prossimo indirizzo a cui l'utente della
memoria vorrà accedere.
Per possibilità di scrittura da parte dell'utente finale

La tipica memoria può essere sia letta che scritta. Questi dispositivi sono
detti memorie a lettura-scrittura.
Tuttavia sono utilizzate anche memorie che vengono scritte solo in fase di
inizializzazione, e per le quali non è possibile la scrittura nell'uso normale. Tale
inizializzazione può essere effettuata in modo incrementale dalla stessa
apparecchiatura con cui vengono riletti i dati scritti. Questi dispositivi sono
detti memorie scrivibili una sola volta, o WORM (Write Once, Read Many).
Alternativamente, può essere necessario scrivere tutti i dati con un'apposita
apparecchiatura esterna prima di poter usare la memoria in lettura. Questi dispositivi
sono detti memorie a sola lettura, o ROM (Read-Only Memory).
Ecco gli esempi più diffusi per ognuno dei tre suddetti tipi:



Memorie a lettura-scrittura: carta con matita e gomma per cancellare,
memorie RAM, memorie EPROM, memorie EEPROM, dischi ottici CD-RW,
dischi ottici DVD-RW, memorie elettroniche flash, nuclei di ferrite, dischi
rigidi, floppy disk, dischi magneto-ottici RW.
Memorie scrivibili una sola volta: carta con penna a inchiostro indelebile,
dischi magneto-ottici WORM, dischi ottici CD-R, dischi ottici DVD-R, memorie
elettroniche PROM, memorie elettroniche OTPROM.
Memorie a sola lettura: carta stampata, memorie elettroniche ROM, dischi
ottici CD-ROM, dischi ottici DVD-ROM.
Sulla base della permanenza dei dati
Per le memorie a lettura-scrittura, il tempo di lettura è normalmente vicino al tempo
di scrittura, per cui si parla genericamente di tempo di accesso. Per le memorie
scrivibili una sola volta, la scrittura può essere molto più lenta della lettura; in tal
caso, dato che la memoria verrà letta molte volte, si considera come più significativo
il tempo di lettura.
In generale, il costo unitario (cioè per byte) delle memorie cresce al crescere della
velocità di lettura. Pertanto, la classificazione per velocità di lettura coincide
sostanzialmente con la classificazione per costo unitario.
In base a tale criterio, si ha la seguente gerarchia:
Registri della CPU, che forniscono la massima velocità di accesso, al massimo
costo unitario.

Cache interna alla CPU, detta anche cache di primo livello.

Cache esterna alla CPU, detta anche cache di secondo livello.

Memoria centrale, detta anche memoria principale, e detta spesso
semplicemente (ma impropriamente) RAM.

Tamburi magnetici, oggi in disuso.

Dischi fissi (magnetici).

Dispositivi inseribili e rimovibili "a caldo", cioè senza spegnere il computer,
come floppy disk, nastri, memorie flash, dischi ottici. Questi ultimi forniscono la
minima velocità di accesso, al minimo costo unitario.
Per tecnologia costruttiva Memoria cartacea

Scheda perforata
Nastro perforato
Memoria elettronica
Memoria a stato solido (anche detta memoria a semiconduttore)
È una memoria elettronica a semiconduttore. Si presenta come componente
elettronico da assemblare in un circuito elettronico.





Memoria magnetica

Memoria a nucleo magnetico

Nastro magnetico

Disco magnetico

Floppy disk

Hard disk


Memoria ottica

Disco ottico

Disco magneto-ottico
Memoria olografica