Schema della struttura interna di una CPU
Schema della struttura interna di una CPU
La CPU è in grado di eseguire un gran numero di operazioni anche molto diverse tra loro. Il genere di operazioni che vengono svolte sono: le operazioni aritmetiche, le operazioni logiche, lettura o scrittura di dati da o verso specifici registri o posizioni in memoria centrale… Le diverse operazioni possono essere più o meno complesse e richiederanno più o meno tempo per essere eseguite, una somma ad esempio richiede meno tempo di una divisione. Siccome ogni operazione singola delle componenti del processore avviene quando il clock manda un segnale a tutti, il tempo di esecuzione delle istruzioni da parte del processore viene misurato in numero di segnali del clock; una istruzione potrà quindi richiedere uno o più clock (diciamo per semplicità da 2 o 3 a una decina). Per avere un’idea di quanto tempo richieda l’esecuzione di una istruzione basta sapere il numero di clock e la frequenza del clock, se la frequenza è di 3GHz e un istruzione richiede 3 clock, l’operazione richiede 1 miliardesimo di secondo per essere eseguita ((1 / 3 miliardi) * 3).
L’insieme delle operazioni disponibili e il modo in cui vengono eseguite cambia da processore a processore e costituisce il linguaggio dello specifico processore detto anche linguaggio macchina. (In realtà solitamente famiglie di processori condividono lo stesso linguaggio poichè basate su un’architettura comune)
Per quanto le operazioni possano essere diverse l’una dall’altra, il processore continua a ripetere sempre la stessa sequenza di operazioni detto ciclo di fetch-execute o ciclo di prelievo ed esecuzione. Questo ciclo è composto da 3 fasi fondamentali:
Il processore non fa altro che ripetere questa sequenza all’infinito.
La memoria centrale è la memoria in cui devono essere memorizzate tutte le istruzioni che si vuole far eseguire alla CPU. Siccome il ciclo fondamentale di funzionamento della CPU richiede di accedere continuamente alla memoria, è necessario che l’accesso (sia scrittura che lettura) alla memoria sia il più possibile veloce. Succede anche spesso che il processore non acceda sempre in sequenza alle istruzioni scritte in memoria ma che decida di spostarsi frequentemente da un punto all’altro, come nel caso di scelte (if else), cicli (while e for), chiamate a funzioni o passaggio all’esecuzione di altri processi, la memoria centrale deve permettere di accedere il più velocemente possibile a qualsiasi posizione della memoria. Per questi motivi la memoria centrale deve avere particolari caratteristiche:
Per poter avere queste caratteristiche la RAM è molto costosa e quindi se ne utilizza solo la quantità necessaria all’esecuzione dei programmi e non si usa per l’archiviazione dei dati e dei programmi. Un altro motivo molto importante per cui la RAM non può essere usata come archivio è che per poter essere molto veloce si utilizza una particolare tecnologia che ha il difetto di rendere la RAM volatile cioè in grado di mantenere memorizzati i dati solo quando è accesa e quindi percorsa da tensione elettrica.
I principali parametri con cui possiamo valutare una memoria RAM sono:
Anche per le RAM attualmente le frequenze del clock sono dell’ordine dei GHz anche se normalmente sono più basse di quelle del processore, inoltre anche le memorie possono impiegare parecchi cicli di clock per effettuare una lettura o una scrittura. Le memorie RAM risultano quindi normalmente più lente del processore e questo è un problema poichè la CPU deve accedervi continuamente. Per questo motivo i processori sono dotati di piccole memorie RAM interne chiamate cache (dal francese nascosto, pronunciato normalmente all’inglese ˈkæʃ/). La cache è più veloce di una normale RAM per la memoria centrale ma è anche più costosa (se no si potrebbe fare tutta la RAM così, c’è anche da considerare che per motivi tecnologici una memoria piccola ha tempi di accesso più rapidi, ma i motivi sono complicati). La sua velocità permette al processore di mantenervi i dati (o operazioni) a cui deve accedere più di frequente e farlo molto velocemente. Spesso nei processori sono presenti due o addirittura tre livelli di cache, cioè diverse memorie progressivamente più veloci ma anche più piccole. Se si cerca tra le specifiche dei processori questi livelli sono spesso indicati come L2 e L3 (Nel processore AMD Ryzen 7 5800X si ha L2 di 4MB e L3 di 32MB)
Il BUS di sistema o più brevemente BUS è il canale di comunicazione che permette a tutti i componenti del computer di trasmettere dati tra loro. Di fatto un BUS è un fascio di “cavi” di rame che permettono di trasmettere in parallelo un certo numero di bit che dipende dal numero di “cavi”. Il numero di bit trasmissibili in parallelo dal bus deve equivalere alla dimensione dei registri del processore (i processori di oggi lavorano solitamente con 64bit; i bus delle schede video per esigenze particolari, in particolare il parallelismo, possono arrivare a centinaia di bit). Il bus di sistema è composto in realtà da diversi bus:
Il BUS è utilizzato continuamente dalla CPU per accedere alla memoria nel ciclo di fetch-execute ma è usato anche con minor frequenza per comunicare con le periferiche.
Le dimensioni limitate e la volatilità della RAM rendono necessaria l’adozione di periferiche di archiviazione di massa (o memoria di massa). Sebbene la memoria di massa possa essere considerata una periferica, la sua importanza comporta una gestione particolare e dedicata, essa è infatti indispensabile per:
Esistono tantissimi tipi di memoria di massa che possono variare in base alle tecnologie adottate, la capienza e il costo. Le memorie possono essere ad accesso casuale come gli SSD o ad accesso sequenziale come gli HDD (hard disk), i nastri magnetici, i CD e i DVD.
Le memorie ad accesso casuale presentano l’indiscutibile vantaggio di poter accedere velocemente ai dati ma sono più costose di quelle ad accesso sequenziale (in realtà andrebbe fatta la distinzione tra velocità di lettura/scrittura sequenziale e tempo di accesso casuale alla memoria e il confronto tra memorie sarebbe più complesso). Fino a 10-15 anni fa inoltre le memorie ad accesso casuale erano quasi solamente volatili e/o esageratamente costose e lente. Solo nell’ultimo decennio hanno iniziato a diffondersi dispositivi di memorizzazione ad accesso casuale, non volatili, veloci e dal costo accettabile: gli SSD (solid state drive) che stanno lentamente soppiantando gli altri dispositivi di memorizzazione di massa (le cosiddette chiavette usb utilizzano una tecnologia analoga a quella degli SSD anche se meno performante e più economica).
Le periferiche sono le componenti che permettono al computer di interagire col mondo esterno: l’utente o altri dispositivi, e ne esistono un’infinità di tipi diversi. Alcune periferiche sono componenti elettronici che troviamo direttamente integrate nella scheda madre del computer come la scheda di rete o la scheda audio, altre possono essere esterne al computer come mouse, tastiera, schermo, stampante… Le periferiche sono chiamate così perchè non fanno parte delle componenti del computer che interagiscono più frequentemente e velocemente con la CPU, esse si trovano infatti anche fisicamente più lontane dalla CPU e interagiscono con essa in tempi che per un umano possono sembrare veloci ma per la CPU sono tempi lunghissimi. Un hard disk, che è una periferica piuttosto veloce e che interagisce spesso con la CPU rispetto ad altre periferiche, ha tempi di accesso ai dati dell’ordine dei millisecondi (10-3), mentre abbiamo visto che la CPU interagisce con la RAM in tempi dell’ordine dei nanosecondi(10-9), una differenza di 6 ordini di grandezza! Per questo motivo la CPU non sta mai ferma ad aspettare in attesa della risposta di una periferica ma continua a lavorare (con la RAM) mentre aspetta un segnale di risposta da una periferica (segnale che arriva per mezzo del bus di controllo con quella che viene chiamata una “interruzione”)
L’architettura di Von Neumann prevedeva almeno in lineaa generale le presenza di tutti i compomenti finora esposti. Nella pratica sono però necessari una serie di altri componenti hardware che offrano una serie di funzionalità aggiuntive fondamentali: la CPU ha bisogno di essere alimentata e raffreddata, le periferiche devono essere collegate alla CPU, strutture di sostegno e protezione per i vari componenti elettronici che sono delicati…
Il case (termine mutuato dall’inglese computer case) è essenzialmente la “scatola” che contiene e protegge tutti gli altri componenti hardware. Deve prevedere appositi alloggiamenti per fissare tutti i vari pezzi del computer e offrire aperture per poter collegare cavetteria di vario tipo alle varie periferiche. Esistono case di ogni tipo e dimensione in base alle esigenze, sia funzionali che estetiche. Online puoi trovare ogni tipo di esempio.
Nell’architettura di Von Neuman la scheda madre non viene citata ma è uno dei compunenti più importanti del computer perchè è ad essa che vengono collegati tutti gli altri componenti, compresi CPU e RAM. È talmente importante che quando si assembla un computer è il secondo componente che viene scelto dopo la CPU siccome deve essere pienamente compatibile con essa e supportarne le funzionalità. Una delle componenti della scheda madre è infatti il socket, cioè l’alloggiamento della CPU e ogni famiglia di CPU richiede un alloggiamento specifico con una serie di connettori o pin per collegare la CPU al BUS di sistema che è stampato sulla scheda madre (Intel e AMD, i principali produttori di CPU per computer desktop o notebook, sviluppano ogni pochi anni un nuovo tipo di socket specifico per una nuova generazione di processori).
Alla scheda madre sono anche collegati i vari “banchi” di memoria RAM (si possono solitamente collegare 2 o 4 memorie RAM che vanno a formare insieme la memoria centrale).
Sulla scheda madre sono presenti un gran numero di connettori per collegare vari tipi di periferica. Sono inoltre presenti diverse periferiche ritenute utili e sufficientemente piccole da poter essere integrate direttamente nella scheda madre, come ad esempio il chip di rete o quello per l’elaborazione audio. In alcuni casi sono presenti anche chip per l’elaborazione video (chiaramente meno complessi e potenti rispetto ad una scheda video dedicata; in realtà sono normalmente integrati all’interno del processore e non nella scheda madre). Chip o schede dedicate sono essenzialmente dei minicomputer dedicati a svolgere un determinato compito che comunicano con la CPU. La trattazione di questi componenti, in particolare la scheda video sarebbe interessante ma troppo lunga e complessa.
Ogni computer deve essere alimentato con corrente continua per funzionare, per questo motivo ogni computer è provvisto di un alimentatore che oltre a convertire la corrente alternata della linea elettrica in una corrente continua stabile senza sbalzi di tensione, fornisce tutti i diversi cavi e connettori per alimentare ogni componente del computer. Alcuni componenti, principalmente le periferiche, sono collegati direttamente all’alimentatore, mentre altri come la CPU e la RAM sono alimentati dalla scheda madre la quale è collegata all’alimentatore.
Ogni dispositivo elettronico per funzionare è percorso da corrente elettrica e per questo motivo si scalda. Alcuni componenti che richiedono una scarsissima potenza e poca miniaturizzazione (circuiti più piccoli si scaldano di più) per funzionare si scaldano molto poco e non ci si deve preoccupare più di tanto che si possano surriscaldare (sempre che siano stati ben progettati) per altri componenti è necessario invece ricorrere ad appositi sistemi di raffreddamento. Lo stesso case del computer deve prevedere un sistema di ricambio e circolazione dell’aria per permettere il raffreddamento dei vari componenti e questo avviene per mezzo di ventole opportunamente disposte in aperture del case. Alcuni componenti devono prevedere la presenza di radiatori che conducano bene il calore e lo possano scambiare con l’aria circolante. Su alcuni componenti come il processore e la scheda video, i componenti che si scaldano di più, sono solitamente montate delle ventole sopra i rispettivi radiatori. Esistono per i casi più estremi sistemi di raffreddamento che invece che far circolare aria fanno circolare un liquido ad alta densità termica (sistemi di raffreddamento a liquido).
È importante ricordarsi che le aperture che permettono la circolazione dell’aria non devono mai essere ostruite quando il computer (o notebook o smartphone…) è acceso per non rischiare che il dispositivo si surriscaldi. I computer hanno dei sistemi di sicurezza che spengono il dispositivo quando la temperatura interna dei componenti sale troppo (sono presenti dei termometri) ma non sempre riescono a prevenire danni. Un cattivo raffreddamento può avvenire per i seguenti motivi: