02-L’architettura del computer
{gspeech style=2}
Una delle caratteristiche più importanti del computer è la sua universalità. Al contrario delle altre macchine ideate dall᾿uomo, infatti, il computer non è pensato per risolvere questo o quel problema particolare,
ma per permettere l’esecuzione di programmi.
Per scrivere una lettera, seguire il bilancio familiare, inviare un fax o partecipare in rete a una discussione particolarmente interessante sul newsgroup preferito non è infatti necessario cambiare ogni volta computer, ma solo il singolo programma applicativo che realizza (in gergo informatico, “implementa”) la funzione che ci interessa in quel momento. In altre parole (e il termine universalità è da intendere in questo senso), il computer non risolve problemi, ma ci permette di “fare girare” un eventuale programma scritto per risolverli.
Non entreremo nel dettaglio della questione alquanto delicata e complessa di quali siano i problemi che ammettono un programma in grado di implementare la soluzione, assumendo (come è) che in questa famiglia rientrino tutti quelli che nascono dall᾿esperienza comune. Cercheremo invece di capire perche lo stesso computer è in grado di eseguire diversi programmi.
LO SCHEMA DI VON NEUMANN
È quello seguito ancora oggi dalla stragrande maggioranza dei computer e non solo di quelli per uso personale. Deriva dal nome del matematico John von .Neumann, che negli anni ᾿40 definì la struttura logica del moderno elaboratore.
I problemi principali nacquero dalle altissime velocità che per la prima volta era possibile raggiungere grazie alla nuova componentistica elettronica: l’elaborazione delle istruzioni, per esempio, doveva avvenire alla stessa velocità di quella dei dati (i numeri risultanti dalle operazioni), pena un insormontabile squilibrio e il blocco del processo di elaborazione.
Fu questo a fare comprendere a Von Neumann la necessità di memoria (volatile) a lettura/scrittura molto più rapide di quelle su memoria di massa (non volatile).
Questo portò alla nozione ‒ assolutamente inedita ‒ di “programma caricato in memoria” o “residente”, ancora oggi alla base del funzionamento di ogni programma applicativo.
In generale, Von Neumann individuò per un elaboratore elettronico il seguente schema logico:
una unità logico/aritmetica in grado di eseguire le operazioni aritmetiche fondamentali e il confronto tra numeri: un organo centrale addetto al controllo della sequenza esatta delle operazioni da eseguire: la memoria centrale, in cui sono registrati non solo i dati del problema ma anche le istruzioni per manipolarli: degli organi di trasferimento delle informazioni in entrata e in uscita dalla memoria centrale.
È facile riconoscere in questo schema i moderni componenti di qualunque computer, compresi i familiari personal: la CPU (Central Processing Unit) o processore, che comprende in sé l’unità logico/aritmetica e l’unità di controllo: la RAM (Random Access Memory: “memoria ad accesso casuale” ), cioè la memoria ad accesso rapido in/da cui la CPU carica dati e istruzioni: le periferiche attraverso cui il calcolatore comunica col mondo esterno (tastiera, video, unità di lettura/scrittnra dischi. CD ROM ecc.). Da allora, a questa struttura logica (e per estensione e a tutte le macchine fisiche che la implementano) si dà il nome di macchina di Von Neumann.
LA “FERRAGLIA”
E la traduzione letterale del termine hardware, che in tanti film e sceneggiati americani ‒ come il popolare Happy Days ‒ campeggia sulle insegne dei negozi di ferramenta. Ed è anche uno dei tanti nomignoli che all’alba dellʼera informatica tecnici e operatori assegnavano con grande disinvoltura alle macchine e che il tempo ha consacrato a nomi propri (un altro molto popolare è chip, letteralmente “sfogliatina di patata”, usato come nomignolo per tutta la componentistica in silicio ‒ materiale impiegato in lamine sottilissime ‒ oggi sinonimo di “componente elettronico” ).
Indica tutto quanto di materiale e “pesante” c’è in un computer: il microprocessore (e la “scheda madre”) su cui è installato insieme agli altri componenti, la memoria RAM, la memoria ROM, la memoria video, le periferiche (tastiera, schermo, lettori di CD ROM ecc…). fino al case, la scatola che di solito racchiude tutto quanto.
Dal punto di vista dellʼutilizzatore la tipologia e la modalità di funzionamento dell’hardware è relativamente ininfluente: il “livello” a cui interagiamo con il computer è più alto e dipende dai programmi che utilizziamo. Ma è importante sapere che lʼhardware esiste e che molti malfunzionamenti possono essere “semplici” guasti materiali ai suoi componenti.
PER UN PO’ DI MORBIDEZZA IN PIÙ
La morbidezza in questione è quella del “software”(soft = “morbido”, “delicato”), ciò di quanto in un computer ’’ ‒ in contrapposizione all hardware ‒ è “senza peso” e “immateriale”. I programmi, in altre parole, anche se qualche distinzione è sicuramente necessaria.
In senso stretto, un qualunque insieme di istruzioni date in esecuzione alla CPU costituisce un programma ed è quindi “software”. Di fatto, si è soliti suddividere il software in categorie, a seconda della funzione per cui esso è stato scritto e dei compiti che svolge. Si tratta di distinzioni di comodo. che non corrispondono a confini tracciabili rigidamente ma che nondimeno riflettono le diverse parti della struttura logica e fisica del computer.
Allʼavvio del computer, per esempio, è necessario eseguire un certo numero di controlli (di esistenza e funzionalità dell’hardware; di compatibilità tra i singoli componenti: di corrispondenza tra le periferiche effettivamente installate e la descrizione che ne verrà data al processore), controlli eseguiti tramile istruzioni al processore e che sono quindi “software”, cioè programmi a tutti gli effetti. Programmi che non devono scomparire con lo spegnimento della macchina che, anzi, al suo avviamento deve trovarli pronti e funzionanti e che non devono essere modificabili a piacimento o anche solo per un incidente. Questi programmi vengono quindi conservati in memorie non volatili e non accessibili in scrittura, le cosiddette ROM (Read Only Memory: memoria a sola lettura) e prendono il nome di firmware, cioè software “residente” o “di sistema”. Il tipico esempio di firmware di sistema è il BIOS (Basic Input/Output System: sistema di input/output di base) ed è proprio “lui” lʼinsieme delle istruzioni che verificano la correttezza delle comunicazioni tra il processore e le periferiche.
Una volta che il BIOS ha assolto ai propri compiti, a entrare in scena è il sistema operativo. Con questo termine si intendono tutte le funzioni e le istruzioni a disposizione sia dei programmi applicativi che dellʼutente, per la gestione di “alto livello” di file e periferiche. Del popolare sistema operativo DOS, fanno per esempio parte istruzioni come copy, delete, remove, rename, dir, realizzate da programmi appositi residenti su disco e ben note a tutti i possessori di personal computer.
I comandi del sistema operativo sfruttano quasi sempre funzionalità messe a disposizione del BIOS ed è questo il senso del termine “alto livello”. In questo contesto il termine “livello” è sinonimo di “distanza dallʼhardware”: in altre parole, un comando o una funzione è di livello tanto più alto quanto più alto è il numero di singole istruzioni al microprocessore a cui è equivalente o ‒ il che è quasi sempre lo stesso ‒ quanto più permette di intervenire senza conoscere i dettagli dell’implemenlazione (“a basso livello’’) del sistema.
I programmi applicativi che lanciamo una volta che il sistema operativo si è “insediato” sono un esempio di software di livello ancora superiore, quello con cui interagiamo più spesso con il computer. Naturalmente, è possibile raffinare questa scala, introducendo livelli che tengano conto di specifiche funzionalità di parti del BIOS, del sistema operativo e dei singoli programmi applicativi, spesso veri e propri “ambienti”, equiparabili essi stessi a sistemi operativi di livello superiore (come Windows), ma la gerarchia “BIOS/sistema operativo/programmi applicativi” resta comunque quella di riferimento.
{/gspeech}
Commento all'articolo