Dall'ENIAC all'iPad
- ENIAC, il primo computer totalmente elettronico
- Specifiche tecniche del primo ENIAC
- Lo schema di von Neumann
- L'architettura di base
- L'analisi dei componenti
- Central Processing Unit (CPU)
- Arithmetic Logic Unit (ALU)
- Accumulatore (registro)
- La coerenza dei registri di una CPU
- Lo stato interno di una CPU
- Unità di controllo (Control Unit)
- Floating Point Unit
- CPU cache
- Memory Management Unit (MMU)
- Graphic Processing Unit (GPU)
- Il parallelismo di calcolo
- Segnale di clock
- La frequenza di clock
- Random Access Memory (RAM)
- Memorie principali e di massa
- La memoria ad accesso casuale RAM
- Memorie ad accesso sequenziale
- RAM, ROM, flash e volatilità
- La memoria flash
- TRIM
- Memorie SRAM
- Memorie DRAM
- Memorie SDRAM
- FeRAM e memorie a cambiamento di fase
- Memorie ROM
- Le memorie EEPROM
- I System-on-a-Chip e la miniaturizzazione dei calcolatori
- iPad e la rivoluzione dei tablet
Contattami velocemente
per richiedere una valutazione GRATUITA del tuo problema!
Compro un computer 486 / Questo il motivo per cui lo vorrei / Per ritrovare qualcuno che ho amato / Dicono stia in un circuito integrato
ENIAC, il primo computer totalmente elettronico
L'ENIAC, il primo calcolatore digitale costruito dall'uomo
Nel 1943, in pieno conflitto mondiale, il governo degli Stati Uniti d'America commissionò agli scienziati J. Mauchly e J. Eckert dell'Università della Pennsylvania la costruzione di un 'cervello elettronico' (come si diceva all'epoca) capace di risolvere i problemi balistici nel calcolo dei lancio dei proiettili pesanti dell'artiglieria bellica del fronte.
I due scienziati ci misero 7.237 ore di lavoro, ma alla fine riuscirono nell'intento: il "Project PX" venne inaugurato nel 1946, ed era un 'mostro' da 18.000 valvole termoioniche ed una superficie occupata di 180 mq.
All'accensione, l'effetto Joule causato dalla corrente elettrica che scorreva nei tubi sottovuoto del calcolatore dissipò talmente tanto calore che la temperatura dell'ambiente superò i 50° C, rendendo quindi necessario un intervento d'urgenza per raffreddare il complesso.
Era comunque un inizio, e poco tempo dopo la macchina fu perfezionata, prendendo il nome di ENIAC, acronimo di Electronic Numerical Integrator And Computer.
Specifiche tecniche del primo ENIAC
Originariamente il progetto ENIAC prevedeva un budget di poco più di 60.000 dollari americani, ma alla fine costò quasi $486.804,22, circa $ 7.000.000 attuali.
Alla sua prima accensione, l'ENIAC assorbì così tanta corrente elettrica che il quadrante ovest di Filadelfia andò in black-out.
Problemi energetici e calorifici a parte, il computer fu in grado di moltiplicare 97.367 per sé stesso ben 5.000 volte in meno di un secondo, rendendolo di fatto enormemente più veloce dei precedenti calcolatori elettro-meccanici.
Costosissimo, delicatissimo e dall'obbligatoria manutenzione quotidiana, rimase in servizio fino al 1955, quando venne smantellato e mandato in pensione al famoso museo Smithsonian.
Tra i tanti suoi primati, c'è anche quello di essere stato il primo computer usato dall'uomo, ed in particolare da John von Neumann, per compiere la prima previsione meteorologica della storia.
Aveva oltre 5.000.000 di contatti saldati a mano, 1.500 relais, 70.000 resistenze, 10.000 condensatori, 7.200 diodi in vetro, e pesava più di 30 tonnellate.
Lo schema di von Neumann
John von Neumann, uno dei più grandi matematici del XX secolo, ideatore dello schema di calcolo elettronico che porta il suo nome
Nel 1936, quasi in contemporanea con il progetto del primo automa creato da Alan Turing (la famosa 'Macchina di Turing'), un ungherese naturalizzato poi statunitense nomato John von Neumann mise a punto uno schema generale per lʼarchitettura di un'ipotetica macchina da calcolo non ideale come quella di Turing, ma bensì un vero e proprio progetto dʼingegneria per rendere lʼautoma del grande matematico inglese fisicamente operativo.
Il progetto prevedeva la definizione di unʼarchitettura specifica, ovviamente in accordo con i ritrovati tecnologici allʼepoca disponibili.
Al tempo nessuno mai avrebbe potuto prevedere che lʼarchitettura progettata dallʼungherese potesse essere così vincente, al punto tale da divenire (con poche o nulle modifiche) lo standard per la costruzione di tutti i calcolatori prodotti industrialmente negli anni a venire.
Questo standard progettuale è valido sino ai giorni nostri, per qualsiasi dispositivo di calcolo elettronico.
Lo schema è conosciuto proprio come schema della macchina di von Neumann, e concettualmente è rimasto invariato sin dal momento della sua ideazione.
L'architettura di base
Lo schema di von Neumann
Grazie allʼautoma di Turing e al suo calcolo perfetto, si può sintetizzare un calcolatore automatico come un costrutto di due parti fondamentali: memoria e processore di calcolo.
Per eseguire qualsiasi tipo di calcolo, non vʼè bisogno di altri componenti, almeno in una macchina ideale come quella ideata da Turing.
Una memoria senza dati ed un processore di calcolo senza istruzioni servono però a poco, quindi dobbiamo per forza ideare un modo fisico per 'comunicare' con il processore (e 'programmarlo', se così vogliamo riferirci) e dirgli cosa c'è da fare, e non di meno dobbiamo iniziare a mettere dei dati in memoria per lʼelaborazione.
Di rimando, c'è bisogno di un modo per far comunicare processore e memoria, possibilmente alla stessa velocità, od almeno tentare di avvicinarci ad un buon livello di sincronia.
Ne consegue che, in qualche maniera, dobbiamo interagire direttamente con i due componenti fondamentali della macchina di Turing, almeno per avviarne i processi elementari.
Quindi, in buona sostanza, dobbiamo fornire alla macchina dei dati in entrata e, come è ragionevole supporre, dovremmo ricevere dalla coppia di lavoro memoria-processore dei dati elaborati in uscita.
Premesso ciò, possiamo ben dire che, semplificando al massimo, un calcolatore non è nientʼaltro che un costrutto in grado di ricevere dati in entrata, elaborarli e fornire in uscita dati elaborati.
Definiamo quindi la parola inglese 'input' come dati in entrata e 'output' come dati in uscita.
In mezzo a queste due parole, cʼè il termine computazione, che per lʼappunto riguarda tutta quella serie di procedure che permettono di elaborare dati.
Ovviamente, nel caso di un calcolatore elettronico, la computazione corretta è garantita dalla coppia memoria-processore.
Questo è quello che Von Neumann progettò, ovvero uno schema di lavoro ottimale per lʼelaborazione di dati (quindi processi di input/output) sfruttando al meglio lʼaccoppiata processore-memoria.
Possiamo quindi ben dire che lo schema di von Neumann vuol rappresentare, sul piano pratico, ciò che lʼautoma di Turing rappresenta sul piano ideale.
L'analisi dei componenti
Una generica scheda logica di un calcolatore
Risulta subito chiaro che mentre la memoria può essere vista come un unico supporto ben definito, la CPU è più complessa, e trova al suo interno diverse componenti essenziali.
Cʼè da dire che, ai tempi di Von Neumann, mancavano i procedimenti di fabbricazione e materiali tecnici che abbiamo oggi giorno, e tutta la progettazione fisica di una CPU era quindi un affar serio, e soprattutto molto, molto costoso.
Per dare un esempio, mancavano i basilari diodi e transistori, e già questo era un grosso problema, poiché per costruire porte logiche si era costretti ad usare degli amplificatori ed interruttori veramente antiquati, ovvero le famose valvole termoioniche (il primo dispositivo di controllo attivo mai creato dallʼuomo).
Tutte le connessioni elettriche erano veramente un affar serio, con tubi termoionici enormi controllati da valvole instabili, visto che era routine ogni giorno cambiarne a decine perché si erano fuse.
La miniaturizzazione dei componenti essenziali di una CPU era semplicemente impensabile, e quindi i primi calcolatori erano enormi, grandi quasi come un piano di un palazzo di grossa metratura.
Il primo storico computer, il ben famoso ENIAC, era un accrocco galattico enorme, con centinaia di valvole termoioniche che friggevano ogni giorno.
Elementi che noi ora diamo per scontati come memorie flash, Hard Drive, CD-ROM, DVD (anche i vetusti Floppy Disk) e acceleratori grafici erano impensabili per lʼepoca, da cui lʼarchitettura a lavoro forzato memoria-processore.
Central Processing Unit (CPU)
Una moderna CPU nel suo package
Dalla primitiva CPU progettata da von Neumann nel suo schema fino ad oggi è cambiato poco, pensando ovviamente alla pura architettura e non focalizzandoci su materiali e processi di costruzione.
Se negli anni ʼ50 solo i grandissimi centri di ricerca governativi (soprattutto americani ed inglesi) e pochissime industrie potevano permettersi il lusso di investire miliardi di dollari in progettazione e sviluppo di una CPU (per i problemi tecnici già esposti in precedenza), al giorno dʼoggi con sufficiente denaro e ottimi ingegneri, una media-grande industria potrebbe in teoria costruirsi i propri processori.
In teoria, perché in pratica sarebbe da folli: uno stabilimento di produzione di processori costa quantità enormi di denaro, richiede molto tempo di lavorazione e, soprattutto, ingegneri, tecnici, litografi, fisici, chimici, grafici e sistemisti di eccellente livello (che vanno pagati molto).
Il costo di una fabbrica di semiconduttori aumenta costantemente nel tempo: le moderne industrie attuali costano circa 7 miliardi di dollari ad impianto.
A ciò, si deve aggiungere un grande sforzo di ricerca, innovazione e, ovviamente, dei fondamentali tecnici solidi.
Quindi, quasi tutte le aziende che lavorano con sistemi dedicati, acquistano CPU dai grandi produttori storici, come Intel, AMD e ARM.
In particolar modo, Intel detiene la fetta di mercato più grossa, ed è un colosso che fa paura: più di 20 industrie in tutto il globo, per una produzione che copre quasi lʼ80% di tutto il mercato dei calcolatori laptop, desktop e server.
Miliardi di spese di ricerca lʼanno, miliardi di introiti da vendite dirette ed accordi commerciali di fornitura terzi: insomma, un vero e proprio gigante dei processori di calcolo.
Gli apporti scientifici e di pura micro-ingegneria dati da Intel alla storia dellʼinformatica elettronica sono enormi, anche grazie all'italiano Federico Faggin, che per primo assemblò il primo microprocessore della storia, l'Intel 4004.
Una CPU vista al microscopio
Dallʼaltro lato, AMD è il secondo produttore mondiale di CPU, fa buonissime unità di calcolo ma paragonata a intel è una mosca bianca: ha solo due stabilimenti di produzione (in America e Germania) e a malapena copre il 10% del mercato.
In potenza bruta però, i suoi processori (specie i 64 bit di ultima generazione) non hanno nulla da invidiare alla tecnologia Core dell'Intel.
ARM è un'azienda in piena espansione: i suoi processori su architettura RISC sono principalmente indirizzati verso il mercato mobile (smartphone e tablet), e sono montati sul 70% circa del sistemi embedded, rendendo l'azienda una leader del settore.
Con le grandi tre del mondo però, non possiamo esimerci dal citare la Zilog, fondata da Federico Faggin alla fine degli anni ʼ70.
Questa piccola, grande industria (che è ancora attiva e produce) ha sfornato il più venduto processore della storia, sempre costruito dallʼingegnere veneto: lo Z80.
Il piccolo miracolo a 8 bit è entrato in produzione alla fine degli anni ʼ70, e dopo più di 40 anni sta ancora in produzione e vendita (con unʼarchitettura leggermente modificata): è il più grande successo di sempre, visto che in tanti anni di onorata carriera ne sono stati venduti oltre 2 miliardi, per una quantità gargantuesca di dispositivi elettronici (non solo calcolatori propriamente detti).
Se ne vendono ancora centinaia di migliaia ogni anno, e spesso i chip vanno a controllare i più banali costrutti moderni, come telecomandi, player MP3, radio digitali, ecc ecc.
Arithmetic Logic Unit (ALU)
Lo schema logico di un'unità ALU
È il cuore della CPU, ovvero lʼunità che si occupa del puro calcolo logico-matematico.
L'ALU assolve il suo compito di computazione grazie alle porte logiche costruite con diodi e transistori, che a loro volta sono realizzati in silicio opportunamente drogato per sfruttare tutte le caratteristiche della funzione P-N.
Unʼunità ALU ben progettata è il fulcro essenziale di un calcolatore che lavora al massimo delle sue potenzialità.
Come base computazionale, lʼALU utilizza il sistema binario, a sua volta regolato dalle tensioni differenti di un flusso elettronico.
Grazie alle porte logiche e agli algoritmi di calcolo, unʼunità ALU moderna è in grado di computare grandi quantità di dati, con milioni di operazioni al secondo.
Il compito dellʼALU è quindi puramente matematico: esegue calcoli logici su istruzioni dellʼUnità di Controllo.
Generalmente, ogni produttore tiene segreti gli schemi logici di una ALU (o almeno, cerca di farlo), almeno quelli non essenziali al programmatore per scrivere uno specifico software.
Ovviamente, più unità ALU possono cooperare insieme, per spartirsi le istruzioni ed operare più velocemente, ed è bene ricordare che un qualsiasi ingegnere elettronico bravo può progettare unʼunità ALU per qualsivoglia compito, anche specifico.
Ovviamente, tenendo sempre in considerazione che più lʼunità ALU esegue operazioni logiche complesse (anche tutte quelle immaginabili), più sarà lenta e costosa.
Al contrario, unʼunità ALU con poche operazioni logiche sarà molto più snella e veloce.
Un bravo ingegnere quindi deve sempre scegliere buoni compromessi tra complessità di calcolo e velocità di esecuzione.
A differenza dello scherma originale di von Neumann quindi, le CPU moderne non implementano una sola ALU, ma svariate unità che lavorano in cooperazione.
Accumulatore (registro)
Parte fondamentale per lʼottimo operato dellʼunità ALU è una specifica parte di memoria integrata nella CPU, velocissima.
Nella gerarchia delle memorie, è la cosa più veloce con cui unʼALU può comunicare, ovverosia il registro del processore (ai tempi di von Neumann chiamato accumulatore).
Questa particolare memoria ha un compito fondamentale: come il nome suggerisce infatti, è il registro dove lʼALU copia i dati da elaborare e le istruzioni dalla memoria principale, carica gli operandi necessari ad elaborarli, li elabora e poi li trasferisce ancora nella memoria principale.
Ci sono moltissime classi di registri, ed il numero di bit che possono contenere per lʼelaborazione è variabile (si va dai vecchi registri a soli 4 bit sino ai moderni che ne contengono 64): per sommi capi, il numero di bit che può contenere un registro è già una grezza misura della potenza di calcolo della CPU.
Si sente sovente parlare, spesso in maniera non propria, di “processori a 8, 16 o 32 bit”; questa classificazione è dipesa anche (ma non solamente) proprio dalla capienza dei registri della CPU.
Infatti, i processori non elaborano istruzioni singolarmente, bit per bit, ma usano un set di bit predefinito e ben specificato, solitamente dalla casa produttrice e dai suoi ingegneri e programmatori.
Il primo microprocessore della storia, ossia il primo circuito integrato costruito dall'uomo nel 1971, è opera dell'italiano Federico Faggin, al tempo ignegnere dell'Intel.
Faggin riuscì ad integrare tutti i componenti logici di una CPU (ALU, registri, bus, control unit, ecc ecc.) in un unico, piccolissimo chip.
Per farlo, incise direttamente i transistori ed i diodi delle porte logiche in uno strato di silicio opportunamente drogato: era l'inizio della tecnologia 'silicon gate', che sarebbe poi diventata lo standard per la produzione di semiconduttori elettronici.
Il primo microchip si chiamava Intel 4004, aveva una frequenza di clock 740 KHz, 16 registri a 4 bit ed indirizzi a 12 bit.
Alimentata a 12 volt, la CPU era capace di indirizzare fino a 640 Byte di RAM, e s'agganciava alla scheda logica per mezzo di un socket a 16 piedini.
La produzione dell'Intel 4004 iniziò la Large Scale Integration, che in seguito sarebbe diventata Very Large Scale Integration, ossia il metodo costruttivo ancora utilizzato per produrre microprocessori e memorie a stato solido.
Questo set di bit può essere visto come una quantità convenzionale, che lʼALU richiama dalla memoria per eseguire i processi: in informatica, questo basilare gruppo di bit si chiama word (parola, in italiano), e la sua dimensione varia, come detto, da architettura ad architettura, e di conseguenza da processore a processore.
Il primo microprocessore della storia, lʼIntel 4004 di Faggin ad esempio, lavorava a word di 4 bit, ed aveva registri di questa dimensione.
In circa 40 anni si è passati ad usare word di 4 bit a word di 8, 16, 32 e 64; migrare da word a word non è mai così facile, ed in pratica è come traslocare in maniera abbastanza brusca.
Per questo ogni aggiornamento di architettura dei registri deve essere ben ponderato, perché è un lavoro lungo, costoso e a volte anche incerto.
Attualmente, la transizione dalle word 32 bit che hanno dominato gran parte degli anni ʼ90 alla nuova architettura a 64 bit è grossomodo completata, ma non senza problemi.
La coerenza dei registri di una CPU
Per concludere il discorso delle word e dei registri, è importante sottolineare che per sfruttare appieno una word ed i registri che la ospitano, una CPU deve per forza trasferire informazioni su canali logici adeguati alla circostanza: è infatti totalmente inutile viaggiare su unʼautostrada ad otto corsie se poi ogni entrata o svincolo consta di solo una; si creerebbero degli ingorghi allucinanti (in gergo informatico, colli di bottiglia).
È quindi necessario che tutti i bit viaggino in maniera consona non solo tra le componenti integrate di una CPU, ma anche con tutti gli altri componenti dello schema di von Neumann.
Si parla quindi di bus di sistema, che sarà analizzato più avanti.
Solitamente in tempi recenti, tutti i registri sono fisicamente costruiti con circuiti logici molto semplici, chiamati flip-flop, che possono esprimere solo due stati logici ben definiti (0 e 1).
Ce ne sono di diversi tipi, tuttavia il loro funzionamento è molto semplice: analizziamo un classico flip-flop SR, forse il primo ad essere costruito.
La sua logica prevede solo due porte in ingresso la Set (S) e la Reset (R): lʼuscita assume il valore 1 se lʼingresso S è 1, mentre è 0 se lʼingresso R è 1.
Quando entrambi S e R sono 0, scatta il cambio di stato del flip-flop, che assume uno stato 'neutro' e mantiene il dato precedente (in gergo si dice che 'fa memoria' o 'memorizza').
Se entrambe le porte dʼingresso sono 1, lʼuscita è logicamente non definita (si dice 'proibita', e non si usa con un flip-flop SR).
Grazie alla capacità di 'far memoria' di un flip-flop quindi, le informazioni necessarie allʼunità ALU possono essere conservate, seppur per un periodo di tempo non illimitato (si dice in gergo memoria volatile).
Lo stato interno di una CPU
A seconda di come gli ingegneri elettronici progettano i flip-flop dei registri, si avrà unʼaltra grezza approssimazione della capacità di calcolo totale di una CPU.
Come detto, ci possono essere molteplici tipi di registro, ma i due registri sempre presenti in una CPU sono:
- Il registro IP (Instruction Pointer): è il registro fondamentale perché contiene lʼindirizzo logico della partedi memoria contenente la prossima istruzione da eseguire;
- Il registro dei flag: registro fondamentale in quanto non contiene dati, ma piuttosto un insieme di bit (dettiper lʼappunto flag, bandiera) che servono alla CPU per tenere traccia dei suoi stati e dellʼultima operazione eseguita
Lo stato interno della CPU (equivalente allo stato interno della macchina di Turing) è costituito dal valore complessivo di tutti i suoi registri.
Ancora, è bene anche dire che la memoria dei registri è gerarchicamente prima, sempre e comunque: questo vuol dire che è sempre la prima memoria controllata quando si vanno a leggere istruzioni o dati.
Unità di controllo (Control Unit)
É 'la mente' dellʼunità ALU, che invece risulta il 'braccio esecutivo' della computazione.
Legge dalla memoria principale le istruzioni e affida tutto allʼALU per lʼesecuzione delle operazioni logiche, poi scrive il risultato di nuovo sulla memoria principale oppure in un registro della CPU.
Allʼoccorrenza, legge pure i dati per lʼistruzione precedentemente letta.
Con lʼALU, la Control Unit e i Registri abbiamo una CPU funzionante in grado di eseguire più o meno tutti i calcoli possibili, ad una certa velocità di esecuzione.
Questi componenti essenziali allʼepoca in cui von Neumann progettaò il suo schema bastavano ed avanzavano, ma ai tempi nostri per snellire le operazioni di calcolo e per controllare meglio le potenzialità della memoria principale, si sono aggiunti anche altri componenti, ormai considerati essenziali per una moderna CPU, che ora andremo ad analizzare.
Floating Point Unit
È in pratica unʼALU super-dedicata, specializzata solamente per il calcolo dei numeri in virgola mobile.
Nei primi processori dotati dellʼunità in esame la stessa era esterna alla CPU, ora il suo schema logico è accorpato nei circuiti integrati del chip della CPU.
Il calcolo in virgola mobile è uno schema di rappresentazione dei numeri razionali, usato nello specifico dai processori per compiere le loro operazioni aritmetiche.
La virgola mobile si contrappone allʼaritmetica che tutti noi conosciamo (in virgola fissa o intera) praticamente solo per il processo di rappresentazione: esistono altri limiti e differenze tra i due sistemi, ma per noi son trascurabili.
La rappresentazione in virgola mobile è molto utile in pratica per un due soli scopi, che alle CPU piacciono moltissimo:
- Con questo sistema si possono scrivere numeri veramente grandi occupando poco spazio;
- Al contrario del nostro sistema aritmetico che per comodità usiamo in base 10, la virgola mobile può essere usata senza sostanziali differenze in qualsiasi base; questo è utile ai calcolatori visto che con solo due bit (0 e 1) possono quindi tranquillamente usare la base 2
Per scrivere un qualsiasi numero con rappresentazione a virgola mobile servono solo due parti: un campo chiamato mantissa e un campo di esponente (con una base, ovviamente)
Quindi una generica rappresentazione di un generico numero può essere scritta come:
Ovviamente, tutte le CPU usano potenze di due da moltiplicare alla mantissa per ottenere numeri enormi, che in rappresentazione intera sarebbero un bel problema.
CPU cache
Per capire cosa è una CPU cache bisogna innanzitutto stabilire cos'è una memoria cache: è un particolare tipo di memoria veloce e temporanea.
Veloce e temporanea sono gli aggettivi che danno il senso reale di una memoria cache.
Una cache conserva di solito le operazioni più comuni, più ridondanti o, più semplicemente, dati già elaborati in passato che vengono giudicati possibilmente utili in futuro, magari perché molto generici o richiamati spesso dallʼunità di controllo.
Solitamente, unʼunità di controllo scrive questo particolare tipo di dati nella cache CPU, che è per lʼappunto una memoria velocissima e temporanea: se in futuro la memoria principale comanderà la stessa esecuzione di unʼistruzione precedentemente salvata della cache, verrà usata quella, e quindi lʼALU sarà dispensata dal ripetere lo stesso lavoro fatto prima. Ergo, più velocità.
In una memoria cache non cʼè nessuna garanzia che i dati da richiamare siano presenti, in quanto per sua stessa natura la memoria cache è volatile, e viene continuamente riscritta (con particolari algoritmi, il dato nuovo sovrascrive il vecchio, quando la capacità di stoccaggio sta finendo).
Comunque, siccome il richiamo di dati o istruzioni precedentemente elaborati è molto, ma molto più veloce che eseguire di nuovo il processo, vale comunque fare un tentativo: se quello che ci serve cʼè bene, sennò si rielabora.
Mediamente, in un processore moderno ci sono tre CPU cache, integrate nello stesso die: sono in gergo nomate cache L1, L2 e L3.
Sempre solitamente, le due memorie sono divise gerarchicamente, ovvero la CPU seguirà un percorso definito in ordine di importanza per tentare di leggere i dati eventualmente conservati nelle due CPU cache: registri > cache L1 > cache L2 > cache L3 > memoria principale > memoria di massa.
Sempre in gergo, quando la CPU tenta di recuperare una qualsiasi informazione dalla CPU cache e la trova, si chiama i: invece quando non la trova si chiama miss.
Il rapporto tra hit e miss in un ciclo di una CPU è un altro parametro di valutazione della sua efficienza.
Memory Management Unit (MMU)
Un componente essenziale nelle moderne CPU, specie di quelle che si trovano ad operare con Sistemi Operativi dotati di meccanismo di memoria virtuale.
Lʼunità (di solito molto complessa) come suggerisce il nome gestisce al meglio la memoria principale, sollevando lʼunità di controllo da qualche mansione pesante (tipo controllare incessantemente la CPU cache) e, sostanzialmente, di mettere la CPU in condizione di dialogare al meglio con la memoria principale.
La MMU gestisce i vari indirizzi logici della memoria principale e, nel caso di Sistemi Operativi con memoria virtuale, converte gli indirizzi logici (usati dalla CPU) in indirizzi fisici (come ad esempio le sezioni di un Hard Drive usato come dispositivo di memoria virtuale).
Altra importantissima funzione della MMU è quella di protezione della memoria principale nel caso che un particolare software stia usando la funzione di paginazione.
Le prime unità MMU erano divise dalla CPU vera e propria, ma al giorno dʼoggi sono integrate nello stesso die del processore.
Graphic Processing Unit (GPU)
Il cooprocessore grafico
Componente originariamente non presente nello schema di von Neumann, ma che nelle ultime decadi è diventato imprescindibile per la computazione elettronica.
Chiamato anche 'cooprocessore grafico', è in pratica una CPU a tutti gli effetti, con lo scopo, però, di elaborare i calcoli grafici e, nello specifico, i calcoli dei poligoni in 3D e delle relative texture, ombre, ecc ecc.
Si tratta quindi di un processore estremamente specializzato, che entra in azione solo quando c'è da esentare la CPU principale nei compiti che essa farebbe molto più lentamente.
Le GPU cominciarono a divenire necessarie a fine anni '80-inizio anni '90 del 1900, quando l'industria della cinematografia iniziò a richiedere effetti speciali digitali in grosse quantità.
Poco dopo, la consorella industria videoludica, con l'avvento della grafica 3D e la sua enorme popolarità nel mercato, si accodò alle richieste, spingengo quindi i produttori ad investire forti risorse nel settore dell'accelerazione grafica.
Prima dei cooprocessori dedicati, il calcolo grafico era demandato direttamente alla CPU, oppure a chipset specifici (come nel caso della piattaforma Amiga).
I maggiori produttori mondiali di GPU sono AMD, che ha acquisito tutta la tecnologia della vecchia ATI, Nvidia ed Intel.
Il parallelismo di calcolo
Nei tempi recenti, con l'avvento del parallelismo di calcolo e con GPU ormai potenti forse più delle CPU, i Sistemi Operativi hanno cominciato ad usare i processori grafici anche per altri scopi, e non solo per il calcolo dei modelli 3D; questo fatto, unito alla sempre più alta richiesta di dispositivi mobili con forti prestazioni grafiche, ha convinto i produttori ad includere un core d'elaborazione grafica direttamente nelle CPU, dando così il via al mercato delle 'grafiche integrate'.
Una GPU può quindi essere discreta, ovverosia quando è su un chip separato e dedicato oppure integrata, quando è inclusa direttamente nel chip della CPU.
Soluzioni di alto livello (e costo) prevedono una soluzione doppia, ovverosia discreta ed integrata, lasciando scegliere automaticamente al Sistema Operativo, oppure manualmente all'utente, quando usare l'una o l'altra.
Sistemi desktop professionali per applicazioni di editing video possono includere anche più di una GPU, facendo lavorare tutte le scheda grafiche in parallelo.
Segnale di clock
Un oscillatore al quarzo, con batteria inclusa
Una CPU non si può vedere come un monolitico blocco di silicio (lo è fisicamente, ma non a livello logico), ma è paragonabile ad un ingranaggio molto sofisticato di diversi componenti, ognuno con una sua funzione, ben precisa o di supporto per altri componenti.
Un poʼ come gli ingranaggi di un orologio, in pratica: ognuno tira lʼaltro e tutti tirano il treno delle sfere sul quadrante.
Come le ruote di un meccanismo di un segnatempo quindi, il processore deve quindi vedere sincronizzato perfettamente il lavoro delle sue componenti, affinché tutti i processi vengano eseguiti regolarmente.
Se in un orologio da polso meccanico tutte le ruote sono regolate dalla ruota di scappamento che a sua volta è regolata dalla coppia bilanciere a spirale-ancora, così il meccanismo di lettura istruzioni memoria principale-esecuzione è regolato, in una CPU, da un segnale elettrico, ottenuto non in maniera dissimile da quello di un orologio, stavolta elettronico.
In pratica, si misura lʼintervallo tra due stati definiti, che poi è la definizione di tempo.
Per far ciò, una CPU utilizza un meccanismo praticamente uguale a quello degli orologi al quarzo, essendo in questo caso un oscillatore meccanico improponibile.
Chi ha studiato un poco di fisica e gemmologia, sa benissimo che il quarzo è una pietra bizzarra e particolare, che possiede curiose qualità piezoelettriche.
Un piezoelettrico è un particolare cristallo che quando eccitato elettricamente emette delle oscillazioni molto regolari (vibra come un diapason, in poche parole), mentre quando sollecitato meccanicamente emette delle scariche elettriche. In pratica, è un cristallo dotato di differenza di potenziale.
Si possono quindi usare le oscillazioni di un cristallo piezoelettrico come parametro di riferimento.
Il requisito essenziale è che il cristallo oscillante debba produrre per lʼappunto oscillazioni quanto più possibili omogenee nel tempo, per una misurazione corretta dei loro intervalli.
Da questo, consideriamo un minuto secondo come una certa quantità di oscillazioni regolari.
Il cristallo del quarzo è un piezo estremamente regolare: infatti oscilla 100000 volte al secondo, con uno scarto veramente esiguo in un tempo di valutazione molto lungo (si parla di uno scarto di circa 5 secondi ogni 31 556 926 secondi).
La frequenza di clock
Mettendo un oscillatore al quarzo, regolando la definizione di minuto secondo in base alle sue oscillazioni ed inviando un segnale elettrico regolare a tutti i componenti del circuito integrato, tutte le loro operazioni saranno sincronizzate su quel segnale, come in un meccanismo di un orologio.
Questa è la frequenza (o velocità) di clock di una CPU: è il numero di operazioni tra variabili logiche 0 e 1 che tutti i circuiti logici interni di una CPU sono in grado di fare in un determinato intervallo di oscillazioni del cristallo di quarzo preso a campione: nel nostro caso, diciamo un secondo.
Si tratta di un ciclo (perché si ripete nel tempo), e quindi possiamo anche contare il tutto con lʼunità di misura della frequenza, lʼhertz.
Generalmente, per eseguire una qualsiasi istruzione (anche una semplice somma) tutte le componenti della CPU utilizzano più di un ciclo di clock.
Ovviamente, più cicli di clock si fanno in un secondo, più aumenta la frequenza: se infatti una CPU esegue un milione di cicli al secondo, possiamo affermare che la sua velocità di clock è di 1 MHz, mentre se ne esegue ben un miliardo, diremo che è sincronizzata a 1 GHz.
Se tuttavia tutte le componenti di una CPU non riescono ad eseguire un miliardo di operazioni al secondo (magari perché lʼALU lo fa ma la control unit non riesce a leggere dai registri a quella velocità), tutto si complicherebbe, visto che si creerebbero ingorghi elettrici preoccupanti.
Ciò non può andare bene, e bisogna regolare il segnale di clock ad una frequenza più bassa di modo da dar alla periferica più lenta il tempo di finire lʼistruzione.
Ne consegue che il processore è un circuito sincrono, e la sincronia è data proprio dalla velocità di clock, regolata a sua volta dal segnale di clock, a sua volta regolato dalla velocità massima di esecuzione della sua periferica più lenta.
Quindi, possiamo infine affermare che segnale di clock e velocità di clock sono altri due parametri che possiamo utilizzare come valutazione dellʼefficienza di una CPU.
Random Access Memory (RAM)
Un banco di RAM
La memoria, in informatica è quella particolare parte di un calcolatore capace di stoccare informazioni per un certo periodo di tempo.
Risulta uno dei due componenti principali dell'automa di Turing e, in generale, il suo compito è per lʼappunto contenere dati ed istruzioni che la CPU può richiamare ed eseguire.
Ne consegue che una memoria può essere di lettura, di scrittura o di lettura/scrittura.
Nello schema di von Neumann risulta chiaro che il calcolatore, per funzionare, necessita di una memoria di lettura e scrittura: se fosse solo in lettura infatti, la CPU potrebbe richiamare le informazioni ed eseguirne le istruzioni, ma poi si ritroverebbe impossibilitata a fornire lʼoutput dei dati elaborati.
La memoria destinata allo scopo è chiamata con l'acronimo inglese R/W (read che sarebbe leggere e write che sarebbe scrivere).
Agli albori dellʼinformatica, quando i transistor, i diodi, lʼeffetto P-N ed i benefici del silicio non si conoscevano o non erano ancora stati inventati, la questione di trovare un qualcosa che potesse stoccare dati in maniera affidabile era un affar serio: allʼepoca i primi ingegneri elettronici risolsero la cosa artigianalmente, usando la sempre mai troppo lodata carta.
Era lʼepoca delle schede perforate, primissimo abbozzo meccanico per leggere, scrivere e conservare informazioni.
Inutile dire che lʼaccoppiata elettro-meccanica di CPU e memoria era di una lentezza paurosa, ma ai tempi ciò era comunque considerato un mezzo miracolo.
Il successivo ed importante passo fu la realizzazione di poter usare un campo magnetico per intrappolare i bit sotto forma di elettroni, e nacquero così le prime (costosissime ed enormi) memorie a nucleo di ferrite.
Fu solo alla fine degli anni ʼ60, poco prima del primo microprocessore della storia, che la situazione volse al meglio, quando gli ingegneri della Texas Instruments cominciarono a lavorare seriamente sulla giunzione P-N e a postulare le basi della tecnologia al silicio (Silicon Gate) per conservare le informazioni.
Da quellʼintuizione geniale alla realizzazione delle prime, veloci, memorie al silicio il passo fu breve.
Il cambio di rotta fu grande: con adeguate memorie totalmente elettroniche la CPU lavorava incredibilmente meglio, migliorando la velocità di calcolo in maniera considerevole.
Attualmente, esiste una grande quantità di tipologie di memoria, alcune di esse neanche lontanamente immaginate dagli ingegneri degli anni ʼ60.
Memorie principali e di massa
Un Hard Drive da 3,5" da 1TB
Una prima, sintetica classificazione delle memorie esistenti attualmente può essere fatta partendo proprio dallo schema di von Neumman, ovverosia analizzando ciò che occorre alla nostra macchina di Turing per operare correttamente.
La memoria che permette di stoccare le informazioni e rendere disponibili per la loro elaborazione è chiamata memoria principale, e come il nome lascia intuire è proprio la memoria più importante di tutto il calcolatore, quella essenziale.
Senza di essa infatti, la computazione non potrebbe mai avvenire.
La CPU quindi dialoga esclusivamente con la memoria principale, ed esegue solo le istruzioni in essa contenute: lʼunità di controllo richiama le istruzioni ed i dati dalla memoria principale, li scrive sui registri della CPU, poi il tutto passa allʼALU che esegue i calcoli logico-matematici dei dati secondo istruzioni, li scrive sui registri che, contenenti ora i dati elaborati, vengono letti dallʼunità di controllo e in ultima analisi riversati ancora nella memoria principale.
Classico processo di input/output, che poi è il succo di tutta la computazione per come noi la conosciamo.
La memoria ad accesso casuale RAM
La memoria principale non è la sola componente di un calcolatore moderno, anche se nello schema di von Neumann basta ed avanza; ma lo schema, seppur ancora valido ed usato, è comunque da aggiornare ai tempi attuali e alle importanti invenzioni che la fine del XIX secolo ha visto fiorire.
Le memorie non essenziali alla computazione, ovvero quelle atte solamente a contenere dati anche non destinati ad essere direttamente elaborati dalla CPU vengono chiamate memorie di massa, ed anche in questo caso il nome svela la loro reale funzionalità: ammassare dati, buoni per ogni evenienza.
A parte rari casi (e in accordo con specifiche applicazioni) la CPU non richiama ed esegue istruzioni direttamente dalle memorie di massa, ma bensì (nel caso che proprio deve, se comandata), può eseguire dati ed istruzioni presenti nella memoria di massa riversandoli però prima sulla memoria principale.
Per operare al meglio, CPU e memoria devono dialogare velocemente, molto velocemente e, possibilmente, alla medesima velocità (sempre per evitare pericolosi ingorghi di dati).
Questo però non avviene quasi mai, visto che una comune CPU lavora molto più svelta di una memoria, ma almeno le due componenti devono andare veloci quanto più egualmente possibile.
La memoria principale è progettata per questo: in pratica, possiamo dire che vive esclusivamente per fornire lʼaccesso più rapido possibile delle informazioni alla CPU.
Come riesce a far questo? Con lʼaccesso casuale.
Una memoria ad accesso casuale permette alle proprie celle, dove sono contenute le informazioni, di avere lo stesso tempo d'accesso indipendentemente dalla loro posizione.
Questo risulta fondamentale affinché la CPU dialoghi alla massima velocità possibile con ogni cella della memoria, senza creare quindi ingorghi e tempi di latenza diseguali.
Perciò, una memoria di tipo RAM (Random Access Memory) è usata come memoria principale in tutti i computer prodotti.
Memorie ad accesso sequenziale
Le memorie ad accesso sequenziale, come il nome lascia intuire, sono memorie il cui tempo di accesso alle celle non è eguale, ma è relativo alla loro posizione: l'accesso da parte della CPU è quindi effettuato 'in sequenza', e quindi i tempi di risposta possono essere lunghi o brevi, relativamente a dove è fisicamente posizionata la cella d'informazione.
Alcune di esse sono ormai componenti essenziali di un moderno calcolatore, altre lo sono state per lunghi anni sino al pensionamento (è il caso del Floppy Disk), altre andranno in soffitta a breve (il CD-ROM ed il DVD).
CD-ROM, DVD, floppy e via discorrendo non compaiono nello schema di von Neumann semplicemente perché ai tempi in cui il grande matematico ungherese progettò la sua architettura, dispositivi come le memorie di massa erano semplicemente impensabili, o meglio: erano considerati come non costruibili.
Ma fortunatamente la tecnologia avanza senza sosta: nuovi materiali sono inventati, nuove tecniche sono costantemente messe in essere.
Allo stato attuale delle cose, i dispositivi di memoria di massa sono considerati come dei dispositivi di I/ O, e come tali vengono trattati dalla CPU.
Alcuni di essi, nei Sistemi Operativi che lo prevedono (attualmente, quasi tutti) sono impiegati con profitto per la funzione di memoria virtuale.
RAM, ROM, flash e volatilità
Un esploso di un'unità a stato solido (SSD)
Abbiamo già accennato che la memoria RAM, usata come memoria principale, è nella stragrande maggioranza dei casi volatile, almeno sino a questo punto dello sviluppo tecnologico.
Abbiam detto che volatilità, in informatica, è il conservare le informazioni per un certo periodo di tempo, che comunque non è indeterminato.
Questo vuol dire che ogni volta che spegnete il vostro calcolatore, il contenuto della RAM andrà perso, definitivamente.
Ciò è imputabile al fatto degli ancora grossi limiti tecnologici legati alle memorie al silicio: conservare le informazioni in questi tipo di memorie è instabile, rischioso e, industrialmente parlando, molto costoso.
Già il realizzare una comune memoria RAM (quindi ad accesso casuale) è costoso, il renderla anche non volatile non è un processo economicamente sostenibile da nessuna industria, almeno per ora.
Si sta lavorando sullʼutilizzo di memorie a cambiamento di stato per costruire le nuove RAM del futuro, che consentono di salvare le informazioni anche a calcolatore spento grazie al cambio di stato molecolare, ma è una tecnologia ancora tutta da sperimentare e dai costi proibitivi.
La memoria flash
Un caso però abbastanza comune di memorie al silicio non volatili ed a basso costo che tutti noi attualmente usiamo sono le memorie a tecnologia flash, che costituiscono tutte le nostre 'penne USB', le memorie di massa di mostri dei tanti lettori MP3 presenti sul mercato, dei nostri smartphone, tablet e tutte le schede di memoria per le nostre fotocamere.
Sono memorie molto ingegnose, molto veloci in lettura, che sfruttano la giunzione P-N alla sua estrema potenza, grazie ai diodi tunnel capaci di generare un fortissimo 'effetto tunnel', che rende la loro dimensione contenuta e i loro consumi elettrici modesti.
Sono memorie essenzialmente divise in celle al silicio, drogato opportunamente tanto che ogni cella è praticamente divisa in due gate, atomicamente ben distinti: il Floating Gate ed il Control Gate.
Il drogaggio è talmente esasperato che tutto il Floating Gate è completamente isolato in uno stato di ossido, impenetrabile dagli elettroni, che quando gli passano sopra (in grandi quantità) non hanno più energia per uscirne, e rimangono intrappolati.
Tuttavia, per far sfondare agli elettroni il muro dellʼossido occorre loro fornirgli tensione giusta, e soprattutto occorre che il flusso elettronico sia veramente cospicuo.
È possibile quindi usare gli elettroni intrappolati come unità dʼinformazione (bit).
Questa 'iniezione di elettroni' si ottiene applicando la giusta tensione al Control Gate; in pratica è come 'flashare' il gate con una botta di tensione fortissima, di modo da iniettare elettroni: da qui il nome della tecnologia flash.
Gli elettroni intrappolati nel FG ovviamente modificano in minima parte la conduttività del gate, e quindi quando una corrente alla giusta tensione gli passa sopra, essa scorrerà in maniera non omogenea, a seconda della resistenza elettrica che incontrerà nelle zone di eccedenza di elettroni intrappolati o meno. Questa differenza di tensione, in fase di lettura della memoria, è vista come uno dei due valori logici 0 e 1: quindi, il bit viene letto.
Questo permette di conservare, scrivere e leggere le informazioni di una memoria flash.
Quando invece di devono cancellare le informazioni, si sfrutta lʼeffetto tunnel per farlo ma stavolta allʼinverso: applicando una differenza di tensione al CG, si estraggono gli elettroni intrappolati nel FG, e i dati si cancellano.
Effettivamente, il passare degli elettroni attraverso lo strato di ossido (per uscirne) secondo le regole della meccanica classica sarebbe impensabile, ma in questo caso entra in gioco la meccanica quantistica, che ci dice (essenzialmente) che le possibilità di una particella di 'bucare' un campo energetico superiore allʼenergia totale della particella medesima sono differenti da 0.
Le memorie flash sono molto veloci in lettura (quasi al pari delle RAM), mentre in scrittura risultano molto più lente.
A tutto ciò, va aggiunto che il tempo di vita di una memoria flash è molto inferiore rispetto da una generica RAM: iniettando e togliendo costantemente elettroni infatti, a lungo andare (dopo un certo numero di cicli) si modifica permanentemente il drogaggio dei diodi tunnel che permettono il funzionamento della tecnologia.
TRIM
Nello specifico, le lacune degli strati P tendono a riempirsi di elettroni, smettendo di essere lacune.
Questo difetto può essere in parte limato grazie ad opportuni accorgimenti software, come ad esempio la tecnologia TRIM, che ormai tutti i Sistemi Operativi implementano.
Per la loro instabilità ad alte dimensioni di stoccaggio, per la loro lentezza in scrittura e anche per il costo non proprio così abissale rispetto ad una generica RAM, non hanno preso il posto di queste ultime come memorie principali.
Un banco RAM SO-DIMM DDR2, usato generalmente nei computer portatili o desktop compatti
Di memorie RAM invece ne abbiamo diversi tipi, sono cambiate molto nel corso degli anni e cambiano continuamente anche ora, di solito ogni sei mesi (miglioramenti minimi, diciamo quasi sempre di aggiornamento di frequenza per adattarsi ai nuovi processori).
Sono più costose delle memorie flash, lavorano sempre divise per celle ma non sfruttano lʼeffetto tunnel per conservare informazioni, ma bensì ogni cella ha un microscopico condensatore elettro-magnetico che imprigiona gli elettroni, permettendone la lettura come informazioni.
Sebbene microscopico (al pari di un transistor della Very Large Scale Integration), il condensatore delle celle RAM funziona allo stesso modo di un condensatore elettrico classico, e questo vuol dire che in mancanza di flusso elettronico smette di funzionare, causando la liberazione degli elettroni imprigionati nella cella che governa. Questo rende la RAM volatile.
Di memorie RAM ne abbiamo, principalmente, tre tipi: la loro funzione è simile, si differenziano solo per la loro velocità in lettura/scrittura e quindi, di conseguenza, dal loro costo.
Memorie SRAM
Acronimo di Static Random Access Memory, sono memorie molto sofisticate, di difficile costruzione ed impacchettamento, che però hanno il grande vantaggio di essere velocissime, sia in lettura che in scrittura. Grazie alla loro velocità, sono usate principalmente per costruire registri CPU e CPU cache, ma vengono usate con parsimonia in quanto il loro costo assurdo le rende industrialmente assassine.
Schematicamente, sono composte da un circuito logico a due porte (NAND, ovvero NOT e AND oppure anche NOR, NOT e OR): i registri di una CPU solitamente sono costruiti con questo sistema.
Memorie DRAM
Le Dynamic Random Access Memory sono ancora le memorie RAM più diffuse, anche se recentemente sono state soppiantate dalle SDRAM.
Sono memorie asincrone (i loro accessi non sono controllati dal segnale di clock della CPU), che le rende un pelo più lente delle cugine SDRAM, ma in compenso sono più a buon mercato.
In poche parole ogni cella di una DRAM ha un transistor che manipola un condensatore, permettendo lʼingabbiamento degli elettroni.
Come memorie vanno bene, anche se studi recenti hanno confermato la curiosa teoria secondo la quale nientemeno che i raggi cosmici possano influenzare i piccolissimi transistor che regolano i condensatori.
Questo curioso fatto ne ha segnato irrimediabilmente lo sviluppo, visto che miniaturizzazioni eccessive possono essere ancora più pericolose per lʼintegrità delle piccole celle.
Memorie SDRAM
Le memorie Synchronous Dynamic Random Access Memory sono le evoluzioni più recenti delle cugine DRAM, e si differenziano da questo solo per il fatto di essere sincrone, cioè di vedersi regolati i tempi di accesso direttamente dal clock del processore. Questo le fa essere un pelo più veloci.
Attualmente, sono le memorie che tutti i calcolatori in commercio montano.
FeRAM e memorie a cambiamento di fase
Le Ferroelectric Random Access Memory (FeRAM) sono memorie arrivate da relativamente poco sul mercato, ma surclassano DRAM, SDRAM e flash sono tutti gli aspetti, però costano ancora troppo e per questo sono ancora poco utilizzate.
Sfruttano le particolari proprietà di un nuovo materiale artificiale chiamato ferroelettrico, capace di ingabbiare gli elettroni grazie al fatto che mantiene la sua polarizzazione elettrica anche a corrente spenta. Quindi, come le flash sono non volatili.
Sono molto più veloci in scrittura delle flash e pure delle SDRAM, consumano il 99% in meno (visto che non cʼè bisogno di fare un refresh periodico delle celle) e la loro densità può essere miniaturizzata ancora del 65%.
Al momento, sebbene i vantaggi siano considerevoli, il loro alto costo le rende ancora pochissimo usate, relegandole a quota marginale del mercato.
Le memorie a cambiamento di fase sono le memorie più gettonate dai grossi produttori mondiali, forse perché hanno ricevuto miliardi di dollari di finanziamenti per la loro ricerca (più che ventennale).
Sfruttano le particolari proprietà di semi-conduttori differenti dal silicio, come germanio, antimonio e tellurio.
Questa particolare lega dei tre elementi ha delle caratteristiche interessanti: può cambiare stato da cristallino ad amorfo in maniera reversibile (applicando la giusta tensione e polarità elettrica).
La cosa interessante è che nello stato cristallino la lega ha bassissima resistenza elettrica, mentre nello stato amorfo la resistenza è grande.
Questo ha fatto ovviamente associare ai due stati le variabili logiche 1 e 0.
Un poʼ, in pratica, come avviene nel processo di scrittura dei CD-ROM e DVD, solo che qui si fa tutto con la tensione elettrica ed il procedimento è sempre reversibile.
La tecnologia è promettente, ma allo stato attuale i risultati pratici sono ancora molto deludenti: lʼIntel infatti ha messo sul mercato sinora memorie troppo piccole per anche per gli usi comuni, che la rende ottima per registri e cache CPU, ma per memorie principali è ancora insignificante.
Memorie ROM
Le memorie di sola lettura, le ROM
Sinora abbiamo visto vari tipi di memorie, volatili o meno, ma sempre di lettura-scrittura.
Quello che però manca ed è praticamente indispensabile in un calcolatore moderno è un altro particolare tipo di memoria, stavolta di sola lettura.
Perché a volte non serve o non si vuole permettere la scrittura di una memoria, per svariati motivi: per impedirne la modifica non autorizzata, per preservare il contenuto di informazioni essenziali, oppure perché semplicemente non ve nʼè alcuna utilità.
Quando una memoria è di sola lettura, si chiama ROM, che è sempre un acronimo inglese e sta per Read Only Memory, ovverosia Memoria di Sola Lettura.
Come suggerisce il nome, in una memoria ROM possiamo leggere, richiamare istruzioni, ma non possiamo modificarne il contenuto.
Solitamente, le memorie ROM (nel senso più stretto del termine) sono implementate in circuiti integrati complessi, che richiedono istruzioni basilari e standard per essere governate indipendentemente dallʼutenza: ad esempio, il caso più classico di una memoria ROM implementata in questo contesto è la memoria che contiene il firmware della motherboard di un calcolatore, oppure il firmware di un processore, o qualsiasi altra informazione essenziale ad un circuito integrato per lavorare in maniera autonoma dai software che deve servire.
Ci sono tanti tipi di memorie ROM per altrettanti contesti, e spesso e volentieri il loro termine originale è stravolto in quanto sul mercato (a seconda dellʼesigenza) si possono trovare memorie ROM anche riscrivibili, una volta o più volte.
È il caso, ad esempio, dei CD-RW: mentre un CD-ROM è (come suggerisce il nome) un dispositivo di massa di sola lettura scrivibile solo una volta, un CD-RW può essere riscritto anche più volte, grazie alla possibilità di azzerarne il contenuto (tramite software specifico) e riscriverlo a piacimento.
Le memorie EEPROM
Ci sono poi memorie ROM pure, nella piena accezione del termine: si scrivono una volta sola, solitamente lo fa lʼindustria produttrice, e poi ogni successiva modifica è proibita.
È il caso delle vetuste MROM, ovvero ROM a maschera.
Ora, per ridurre costi e tempo di produzione, i firmware dei processori e schede madre sono generalmente implementati in una memoria EEPROM, che è molto simile alla memoria flash solo che mentre questʼultima utilizza lʼeffetto tunnel solo per estrarre gli elettroni dal Floating Gate, in una memoria EEPROM si utilizza il medesimo effetto quantistico anche per infilare gli elettroni nel medesimo strato di ossido.
Di fatto, questo rende le memorie EEPROM il dispositivo quantistico attualmente più utilizzato al mondo.
Costano leggermente più delle flash e sono più lente in lettura, ma grazie al doppio effetto tunnel consumano meno e hanno più cicli di scrittura (forse per via della mancata iniezione di elettroni presente invece nelle memorie flash).
Il processo di riscrittura, comunque, ha sempre un margine di pericolosità per i dati che, benché modesto, va opportunamente considerato.
I System-on-a-Chip e la miniaturizzazione dei calcolatori
La scheda logica di un moderno smartphone
Dalla metà degli anni 2000, l'avanzamento della tecnologia di realizzo dei semi-conduttori si dimostrò sufficientemente sviluppato da poter permettere un drastico cambio di produzione, accellerando notevolemente il processo di miniaturizzazione non solo dei circuiti integrati, ma di componenti puramente elettrici un tempo considerati incomprimibili, come ad esempio bobine, condensatori e resistenze varie.
Questo fatto, unito alle enormi risorse riversate dai produttori sul calcolo parallelo e sulla produzione di CPU multi-core, ha profondamente cambiato il mercato dell'elettronica, permettendo un abbassamento dei costi generali e, soprattutto, rendendo possibile la produzione di interi sistemi compressi in spazi molto ridotti.
Ciò ha consentito all'industria della telefonia, ad esempio, di evolversi in pochissimo tempo, iniziando la produzione e la commercializzazione dei dispositivi smartphone, iniziati con il primo, storico modello di iPhone della Apple e che in breve hanno concettualmente rivoluzionato tutto il mercato dell'elettronica.
Proprio la storica casa di Cupertino è stata protagonista, assieme alla coreana Samsung, di un'impennata di investimenti e di risorse che ha permesso al mercato di proporre dispositivi portatili sempre più potenti, e sempre più accessibili.
Il paradigma si è raggiunto alla metà degli anni 2010, quando l'iPhone 7 di Apple, con il suo nuovo processore Apple A10 Fusion, è risultato di una decina di grandezze più veloce e potente di un PowerMac G5 commercializzato nel 2005.
Il SoC Apple A10
Molto di questo progresso è stato permesso dall'adozione della tecnologia 'System-on-a-Chip' (SoC), che è implementata oggigiorno in qualsiasi moderno smartphone o tablet.
Il principio di base è che in un singolo die possono essere inclusi tutti gli elementi logici in grado di comporre un sistema completo: un microprocessore (anche grafico), un modulo di memoria (RAM, ROM, memoria flash, ecc ecc.), un controller della stessa.
Quando non è possibile includere
tutti questi componenti in un singolo die, la soluzione alternativa è il 'System-on-a-Package' (SoP), ovverosia i componenti essenziali su un singolo package.
Lo sviluppo della tecnologia di miniaturizzazione dei SoC e dei SoP ha permesso di rimpicciolire CPU, RAM e MMU così tanto da poterli infilare in dimensioni veramente contenute, come ad esempio le schede logiche degli smartphone e dei tablet.
Questo ha dato il via alla cosidetta 'rivoluzione mobile', che ha caratterizzato il finire degli anni 2000, e che ha stravolto quasi completamente il vecchio concetto d'informatica per il mercato di consumo che per almeno quattro decenni era rimasto praticamente il medesimo.
iPad e la rivoluzione dei tablet
Il SoC Apple A10
Nel 2010, forte degli enormi successi di iPod ed iPhone, Apple immette sul mercato un computer compatto estremamente lineare ed essenziale, privo di tastiera fisica e, esattamente come negli smartphone, pesantemente orientato alla fruizione dei contenuti, e solo marginalmente alla produzione degli stessi.
Il dispositivo era un computer tablet, di cosidetta 'seconda generazione': aveva un ampissimo display con digitalizzatore multitouch capacitativo, tasti fisici ridotti all'osso (solo quattro, più un commutatore per il sonoro).
L'iPad segnò il grande ritorno dei dispositivi un tempo chiamati 'palmari' o 'pocket PC', in passato provati ad essere introdotti sul mercato ma che non avevano mai trovato un grosso riscontro commerciale (come ad esempio, l'ottimo Apple Newton).
Grandissimo successo di mercato, iPad diede il via alla seconda fase della 'rivoluzione mobile', che uscì dalla mera telefonia e innondò gli scaffali dei negozi di una miriade di tablet, che riuscirono anche ad oscurare - a vendite - i laptop ed i notebook.