Come funziona un pc, dentro la CPU e non solo

 Il sogno di Steve Jobs è oramai diventato realtà, e quasi in ogni casa è possibile trovare un computer, diventato parte integrante della vita di ciascuno. Ciò che può aiutare a capire come funziona realmente un computer è il modello di Von Neumann.

Naturalizzato americano, era un ricercatore ungherese che durante la metà degli anni ’40 del novecento ideò il modello durante la realizzazione del primo computer elettronico, denominato IAS Machine.

Il centro di attività di tutto il sistema è l’unità centrale di elaborazione dati (Central Processing Unit), essa è predisposta al coordinamento e al controllo di tutte le funzioni.

La CPU è in grado di eseguire ciò che gli viene impartito per mezzo di comandi, comunemente detti istruzioni; L’insieme di istruzioni successive, con cui l’utente realizza l’elaborazione richiesta viene definito programma ed è contenuto in una apposita memoria detta utente.

La CPU legge il programma all’interno della memoria utente, assimila quindi le funzioni che deve eseguire, le analizza per poterle riconoscere e le esegue una ad una in modo da gestire il funzionamento completo del processo.

Grazie alle periferiche è in grado di gestire e trattare tutte le informazioni per il dialogo col mondo esterno (ad esempio interruttori, trasduttori, stampanti).

Analizzando più da vicino l’unità centrale, è possibile osservare come vengano svolte, secondo un programma, tutte le operazione aritmetiche, logiche e di trasferimento, sui dati prelevati dalle memorie del sistema e dai dispositivi di input e output.

Una CPU può essere realizzata con uno o più microprocessori, o con un processore cablato (un insieme di più microprocessori). Scelta determinata da fattori tecnici o economici a discrezione del costruttore.

Le potenzialità di una CPU, sono legate alla loro architettura, alla velocità di esecuzione, al loro set di istruzioni e alla capacità di indirizzamento.

Le CPU più utilizzate sono quelle a 32 o 64 bit (ultimamente l’architettura a 32 bit è quasi del tutto uscita fuori produzione), ma per capirne il funzionamento analizzeremo quelle a 8 o 16 bit.

Risultati immagini per schema cpu

Sotto la definizione di Central Processing Unit vengono raggruppati diversi blocchi funzionali, di cui i principali sono i registri interni, l’unità aritimetico-logica (denominata A.L.U.) e l’unità di controllo (chiamata C.U.) collegate tutte da un BUS  ( acronimo di Binary Unit System, si tratta di un canale di comunicazione che consente alle periferiche ed ai componenti di interfacciarsi tra di loro, permettendo lo scambio di informazioni o dati).

I principali compiti del processore sono di interrogare lo stato degli ingressi e porre il contenuto (ovvero i dati) nelle memorie di ingresso, controllare la successione con cui le istruzioni del programma vengono lette, interpretare le istruzioni, modificare il contatore di programma, calcolando l’indirizzo dell’istruzione successiva, anche in caso di salto, generare segnali che producono l’esecuzione delle istruzioni dell’A.L.U. nella memoria di uscita e verificare la corretta trasmissione di una istruzione.

I registri interni permettono all’unità centrale lo smistamento, la manipolazione ed il deposito temporaneo dei dati, degli indirizzi e delle istruzioni, senza dover ricorrere alla memoria utente.

Di questi registri fanno parte il Program Counter (P.C.), l’Istruction Register (I.R.), l’accumulatore e lo Stack.

La C.P.U. legge le istruzioni contenute in memoria utente e le esegue in un tempo definito dal segnale di clock.

Tuttavia non conosce l’ordine di esecuzione delle istruzioni, né la zona di memoria dove risiedono, sia come indirizzo di partenza che come dimensione, a sopperire alla mancanza provvede il contatore di programma.

Mediante un programma implementato dal costruttore, viene caricato un valore nel P.C. che indica l’indirizzo di memoria nel quale risiede l’istruzione che deve essere eseguita.

A seguito di ogni fase di lettura il Program Counter è normalmente incrementato di uno, mentre le istruzione di salto o subroutine, impostano questo registro in modo tale che le istruzioni successive seguano un flusso diverso da quello prestabilito.

Il registro istruzioni riceve il contenuto delle locazioni di memoria indirizzate dal contatore di programma tramite il bus dati.

L’accumulatore è il principale registro di calcolo del processore. Viene utilizzato dall’A.L.U. per svolgere tutte le operazioni aritmetico – logiche, la sua lunghezza in bit è pari alla dimensione di parola che è in grado di elaborare la C.P.U. .


Durante lo svolgimento delle operazioni, spesso vengono interessati più registri nei quali vengono depositati i valori degli operandi ed il risultato.

L’accumulatore viene anche interessato come registro per il trasferimento di dati con la memoria esterna.

Maggiore è il numero di accumulatori, più alta sarà la quantità di calcoli che potranno essere svolti senza dover ricorrere alla memoria esterna.

Immagine correlata

Lo Stack è costituito da una pila di registri ad accesso seriale, dei quali solo il primo è accessibile.

Ogni volta che viene introdotto un dato, quello precedentemente introdotto viene traslato nella posizione successiva.

Solamente l’ultimo dato introdotto è quindi reso disponibile per le operazioni; Se si desidera utilizzare i dati introdotti precedentemente, è necessario estrarre uno alla volta i risultati delle operazioni precedenti.

Lo stack può essere formato anche da registri monobit.

L’unità aritmetico logica (A.L.U.) sintetizza, in un unico circuito integrato, tutti i componenti capaci di eseguire operazioni matematiche di somma e sottrazione e le funzioni logiche elementari.

Normalmente opera su informazioni di lunghezza, intesa in numero di bit, pari a quella del bus dei dati.

L’unità di controllo (C.U.) gestisce e coordina le esecuzioni delle istruzioni nella C.P.U. Essa ordina il trasferimento di una istruzione dalla memoria utente nel registro istruzioni, le interpreta e le fa eseguire, provvede a memorizzare eventuali risultati intermedi nell’accumulatore (o nello stack), per poi estrarli e spedirli alla memoria esterna, oppure per utilizzarli in una ulteriore elaborazione. La C.U. inoltre provvede ad aggiornare il Program Counter.

Tutte le funzioni della C.P.U. sono regolate da opportuni impulsi di sincronismo denominati nel loro complesso clock. Il clock viene generato da un quarzo, che oscilla tra 1 e 20 Mhz, garantendo elevata precisione e durata nel tempo.

Nei sistemi a microprocessore questo può essere incorporato nel chip stesso, ad eccezione del quarzo, che per ragioni di ingombro è all’esterno.

Risultati immagini per bus dati

La C.P.U. scambia i dati con il mondo esterno attraverso un gruppo di linee parallele, che costituiscono il bus dati. La quantità di linee che compongono il bus dati riflette il grado di parallelismo (espresso in numero di bit), o dimensione di parola.

Per comunicare con il mondo esterno sia verso le memorie, sia con i dispositivi esterni (I/O) dovrà quindi, avere la capacità di selezionare solo il dispositivo e la locazione o indirizzo, con il quale intende comunicare.

Questa funzione viene svolta dal bus indirizzi, costituito da un gruppo di linee parallele monodirezionali. Prima di entrare sul bus indirizzi, il codice selezionato dalla C.P.U., risiede in un registro interno (Registro degli indirizzi).

La larghezza (intesa in numero di bit) del bus indirizzi, deve essere adeguata al numero di locazioni di memoria e al numero di dispositivi ai quali la C.P.U. deve accedere.

Per quanto concerne la gestione e la selezione dei dispositivi esterni e delle memorie, questa si basa su tecniche diverse. In memoria si costruisce una mappa nella quale si assegna ad ogni campo l’indirizzo dei dispositivi di I/O, ossia si costituiscono quelli che poi verranno denominati registri immagine di ingresso e di uscita.

Sul bus indirizzi viene quindi posta, dal microprocessore, una parola binaria e soltanto al dispositivo o alla locazione di memoria che si riconoscono in tale indirizzo è permesso lo scambio di dati con la C.P.U. . Chiaramente ogni dispositivo sarà collegato sia al bus indirizzi (per poter essere selezionato dalla C.P.U.), che al bus dati (per scambiare dati con la C.P.U.).

La selezione del dispositivo o della locazione di memoria per mezzo del bus indirizzi, non è sufficiente per stabilire se l’operazione che la C.P.U. ha richiesto sia di lettura o di scrittura di un dato. Per completare le informazioni scambiate con il mondo esterno, la C.P.U. dispone di altre linee parallele che costituiscono il bus di controllo.

Una delle parti fondamentali di un sistema digitale per il trattamento dell’informazione è la memoria. Tutte le architetture a logica programmabile fanno uso di supporti di memoria nei quali, in forma binaria, vengono scritti e/o letti dati, istruzioni di programma e risultati di elaborazioni precedenti.

Risultati immagini per memoria informatica schema

Le memorie a semiconduttore, immesse sul mercato dopo gli anni settanta, sono quelle attualmente più utilizzate dalle industrie elettroniche grazie alle loro dimensioni ridotte, al consumo moderato di energia, alla facilità di espansione e al largo impiego nei sistemi a microprocessore.

Alcune delle caratteristiche principali sono la capacità di memorizzazione, rappresentata dal numero di bit che possono essere immagazzinati normalmente indicata da potenze alla seconda (1024 = 2 elevato alla 10).

Il tempo di accesso è il tempo necessario per leggere una data informazione in una qualsiasi posizione della memoria, il tempo di ciclo è rappresentato dal tempo necessario per scrivere e leggere l’informazione in una data cella.

L’affidabilità è la capacità di funzionare per un certo periodo di tempo senza incorrere in guasti.

Per la costruzione delle moderne memorie a semiconduttore sono utilizzate due diverse tecnologie: unipolare (detta anche M.O.S.) e bipolare.

La memoria di sistema contiene il sistema operativo (detto anche firmware), il quale è formato dal set di istruzioni e dalle subroutine, che forniscono alla macchina l’intelligenza che consente di elaborare i programmi utente.

Il sistema operativo svolge alcuni compiti importantissimi in modo separato tra di loro, quali controllare i componenti hardware del sistema, immagazzinare e rendere disponibili informazioni per l’utente, deve poter accettare e codificare il programma, tradurre il programma inviato dall’utente in dati che la C.P.U. sia in grado di interpretare, gestire il sistema di archiviazione.

La sua principale funzione è quella di immagazzinare e recuperare le informazioni per l’utente, deve poter accettare input dalla tastiera, tradurre i comandi, aggiornare le tabelle esistenti ed eventualmente definirne nuove se viene ritenuto opportuno.

Il sistema operativo viene scritto dal costruttore in modo difficilmente modificabile, data la sua grande importanza. Per questo scopo, normalmente, sono impiegate delle memorie di sola lettura.

La memoria utente è destinata a contenere il programma che l’utente inserirà al fine di realizzare le funzioni desiderate. Contrariamente alla memoria di sistema (il cui contenuto è fisso: set d’istruzione e procedure), questa memoria deve poter essere cancellata o modificata facilmente sia in fase di messa a punto (debugging), sia in momenti successivi; Da qui il motivo per cui vengono impiegate normalmente memorie leggibili e scrivibili in tempi brevissimi.

Terminata la fase di debugging del programma e avendo la certezza che essa non richieda modifiche in tempo brevi, esiste la possibilità di trasferirlo, per ragioni di sicurezza, in memorie di sola lettura.

Sulla base di un criterio funzionale, le memorie vengono classificate in memorie ad accesso sequenziale, nelle quali l’accesso ai dati può avvenire solo rispettando la sequenza in cui i dati sono stati memorizzati, ad esempio i nastri magnetici e memorie ad accesso casuale, nelle quali l’accesso ai dati può avvenire indipendentemente dalla posizione fisica occupata dall’informazione nella memoria. Queste memorie, prendono anche il nome di memorie ad accesso casuale o memorie R.A.M. (Random Access Memory), proprio perché è possibile l’accesso a qualsiasi punto della memoria in un tempo inferiore al microsecondo.

Per ragioni di tempo di accesso ai dati, le memorie di sistema e utente, sono di tipo ad accesso casuale. Poiché tutti i tipi di R.A.M. perdono l’informazione al cessare dell’alimentazione (memorie volatili) è necessario provvedere con delle batterie tempone.

Le memorie di sola lettura, sono quelle in cui è possibile leggere ma non scrivere le informazioni. Sono le memorie non volatili, per cui i dati non vengono persi alla caduta di alimentazione.

Tra queste rientrano le memorie R.O.M. (Read Only Memory) in cui la scrittura è realizzata in modo immutabile durante una fase della lavorazione, detta mascheratura (programmazione della memoria), da parte del costruttore.

Si possono trovare poi le P.R.O.M. (Programmable R.O.M.), memorie di sola lettura, programmabili una sola volta direttamente dall’utente che non può più modificarne il contenuto. La programmazione di queste memorie avviene mediante la bruciatura di fusibili, contenuti nelle celle di memoria in cui deve essere scritto il valore logico, con un apposito dispositivo di programmazione.

E infine le E.P.R.O.M. (Erasable P.R.O.M.), che come le P.R.O.M. sono programmabili dall’utente e possono essere riprogrammate più volte previa cancellazione totale del contenuto. La cancellazione, però, non può essere ripetuta per più di una ventina di volte, dopodiché non è più garantita l’affidabilità delle sue prestazioni.

La E.P.R.O.M. più utilizzata nei controllori è quella a cancellazione ottica (indicata anche con il nome Ultra Violet P.R.O.M.); Le informazioni immagazzinate vengono cancellate esponendo la memoria ad una radiazione di raggi ultravioletti per una ventina di minuti attraverso l’apposita copertura trasparente. Per cui è necessario estrarre la E.P.R.O.M. dal circuito in cui è inserita.

Sarà quindi opportuno proteggere la parte trasparente della memoria, per evitare che questa possa essere alterata da irradiazioni di raggi ultravioletti, quali quelli del sole o di altre fonti luminose.

Come per le P.R.O.M. anche le E.P.R.O.M. necessitano di un particolare dispositivo per la loro programmazione.

Al contrario le E.E.P.R.O.M. e le E.A.R.O.M. si distinguono dalle E.P.R.O.M., per la diversa possibilità di cancellazione. Queste infatti vengono cancellate mediante un procedimento elettrico anziché ottico, è possibile inoltre selezionare il tipo di cancellazione , che può essere completa o parziale.

Non è necessario, quindi, per la programmazione e la cancellazione estrarle dal circuito in cui sono inserite. Queste memorie garantiscono la continuità dall’informazione per una durata di molti anni. L’affidabilità delle operazioni di cancellazione o scrittura viene garantita per diverse migliaia di cicli.

La memoria N.V.R.A.M. (denominata anche shadow), è composta sostanzialmente da una R.A.M. statica e da una E.E.P.R.O.M. .

Le informazioni sono contenute ed eventualmente manipolate all’interno all’interno della R.A.M.  nel momento in cui la tensione di alimentazione scende al di sotto del valore di mantenimento, tutti i dati vengono travasati nella E.E.P.R.O.M., la quale non è direttamente accessibile dall’utente.

Nell’istante in cui la tensione si riporta a valori accettabili, avviene un nuovo trasferimento dalla E.E.P.R.O.M. alla R.A.M. .

Il vantaggio di utilizzare una N.V.R.A.M. anziché una E.A.R.O.M. o una E.E.P.R.O.M. consiste nel fatto che il sistema vede una semplice R.A.M. come memoria e quindi impiega un tempo di accesso minore. Per contro le N.V.R.A.M hanno una minore capacità di immagazzinamento e una complessità circuitale maggiore che comporta un costo più elevato.

Nell’immagine di copertina, lo schema di un recente processore

label, , , ,