STEP #04 - Il principio fisico
Il processore è forse uno dei componenti più all’avanguardia a livello tecnologico e proprio per questo i suoi componenti sono molteplici e collegati tra loro in svariate maniere proprio per riuscire a ottenere il funzionamento del dispositivo stesso.
L’elettronica non esisterebbe senza loro
Cerchiamo di spiegare in maniera semplificata e poco approfondita. Il livello più basso dell’architettura è il transistor.
| fig. 1 Tecnologia transistor MOS |
In elettronica esistono vari tipi di transistor bipolari e ancora oggi sono in continua evoluzione in termini di miniaturizzazione. Se oggi si dovesse decretare il vincitore, tra i dispositivi che nell’ultimo secolo sono mutati profondamente per prestazioni, costi, benefici e soprattutto dimensioni, il transistor bipolare certamente si aggiudicherebbe il 1° posto, visto che ha permesso lo sviluppo di tante altre tecnologie subordinate senza le quali circa il 90% delle attività, che oggi ci circondano, sarebbe rimasto indietro anni luce a livello di sviluppo. (Se vuoi approfondire la storia dei transistor clicca qui: https://systemscue.it/transistor-dispositivo-ha-cambiato-storia-elettronica-mondo/30982/ ). Nei microprocessori vengono usati i transistor ad effetto di campo (FET). I transistor sono degli interruttori a tutti gli effetti; se la corrente scorre nel FET siamo in uno stato di conduzione (int. accesso-chiuso), al contrario se la corrente non circola (int. spento-aperto) il transistor non conduce.
E' importante subito comprendere la relazione che sta alla base di questo processo, ovvero le due condizioni che rappresentano rispettivamente gli stati logici (alto e basso). Alto è accesso-chiudo, conduce, stato 1; basso è spento-aperto, non conduce, stato 0.
Tutte le operazioni eseguite da un microprocessore possono (e sono) essere realizzate da porte logiche che non sono altro che particolari configurazioni di interconnessioni tra i transistor. Ad esempio, è possibile creare una porta AND, cioè una porta che ha 2 ingressi ed un’uscita; la sua uscita è pari a uno soltanto se entrambi gli ingressi sono pari a uno. Invece in una porta OR l’uscita è zero se gli ingressi sono entrambi pari a zero, viceversa l’uscita sarà uguale a uno.
fig. 2 Tabella porte logiche configurazioni AND e OR |
L'immagine potrebbe spiegare meglio il funzionamento delle due porte. Esistono diverse tipologie di logiche, come NOT XOR, NAND, NOR, ma quello che bisogna capire è che combinando insieme molti transistor si ottengono delle unità funzionali. Queste ultime sono in grado di processare molteplici operazioni di natura aritmetica effettuando calcoli sui bit 1 e 0. Combinando più porte logiche siamo quindi in grado di far svolgere al processore svariati calcoli. Si viene così a creare una circuiteria sempre più complessa ed articolando opportunamente le porte, il "calcolatore" risolverà somme, moltiplicazioni, sposterà dati da determinate posizioni ad altre e così via attraverso procedure sempre più complesse in termini di computazione.
Dentro il processore
- La ALU (Arithmetic logic unit) è quella parte preposta ad eseguire calcoli tra numeri interi (addizioni, sottrazioni, divisioni e moltiplicazioni), operazioni logiche e schemi di scorrimento di numeri binari negli array per le attività di memorizzazione. Riceve i dati di input, li processa e produce gli output; il suo grande pregio è che estremamente veloce e rapida per facilitare il processamento dei dati e non rallentare l'esecuzione dell'intera istruzione.
fig. 3 Schema interno CPU - La Control Unit è il "direttore" delle operazioni del microprocessore. Infatti si occupa di gestire tutte le istruzioni e comandi da impartire alle altre logiche. Manda segnali sui *bus di controllo per comandare gli stati di funzionamento della ALU e dell'intera CPU; riceve segnali di *flag per aggiornamenti dai componenti e degli stati precedenti ed eventuali *interupt.
- Il Register Array è un "contenitore" di dati. Infatti è una vera parte di memoria in cui vengono salvati momentaneamente gli indirizzi a cui sono assegnati i dati utili al calcolatore al processamento dei dati richiesto dall'istruzione in esecuzione. Per rendere tutto più veloce alla chiamata di determinati dati il processore archivia qui quelli appena utilizzati o che potrebbero servire nei passaggi successivi, invece che ad andare a cercarli ogni volta in memoria; il costo di computazione dell'intero comando riesce ad essere molto più basso sfruttando al meglio questi *array.
Il direttore d'orchestra "Il Clock"
Come in una orchestra il direttore fa andare tutti i musicisti a tempo, il clock nel processore "batte" il tempo e sincronizza ogni singolo componente. Il parametro direttamente collegato a questo dispositivo è la sua frequenza. In teoria più è alta, più è veloce il processore ad eseguire procedimenti, essendo essa l'inverso del tempo in secondi e misurata in unità di Hz. Alla fine degli anni novanta è avvenuta la cosiddetta corsa sfrenata all'ultimo ciclo di clock, in cui abbiamo assistito al passaggio di frequenze dai MHz ai Ghz grazie a CPU sempre più performanti. Oggi la storia ci ha insegnato che a decretare la potenza di un processore non serve solo un clock potente ad alta frequenza, ma bisogna anche tenere conto di una serie di altri aspetti forse anche più importanti a seconda delle applicazioni. Nei moderni processori c'è una "base clock" e un "boost clock": la frequenza, cioè, viene incrementata o diminuita in base alle esigenze di calcolo per consumare (e riscaldare) di meno; qui entra in gioco un altro fattore, ormai importante tanto quanto il clock: il TDP, Thermal Design Point (come la macchina riesce a dissipare calore senza surriscaldarsi nei momenti di massima richiesta).
Dovrebbe essere chiaro a questo punto come funziona un computer: si parte da un paio di transistor; si creano porte logiche; a loro volta connesse assieme per formare circuiti più complessi in grado di eseguire operazioni e calcoli; raggruppando sempre più componenti si riesce addirittura ad eseguire operazioni articolate come le istruzioni *ISA. "miliardi di transistor sono usati per creare decine di milioni di porte logiche". Tramite l'ISA si riesce così a creare il cosiddetto linguaggio macchina a partire dal quale vengono scritti i relativi programmi nei vari linguaggi di programmazione a più alto livello di astrazione. La vera differenza oggi tra un processore e un altro, sta proprio nella microarchitettura che si sviluppa in fase di progettazione, ovvero come si implementano le istruzioni in grado di "governare" il processore.
PAROLE CHIAVE:
*bus - è il canale di comunicazioni attraverso il quale ogni singolo elemento riesce a comunicare con gli altri componenti. Generalmente i dati viaggiano su tre canali separati. Uno trasporta l'informazione stessa (dati), uno l'indirizzo di memoria a cui far riferimento, e uno con le istruzioni da eseguire.
*flag - servono per confrontare o testare particolari comandi o istruzioni di una operazione; flag di controllo di vario tipo e genere rappresentano lo "status" di un passaggio specifico.
*interupt - Un interrupt è un segnale asincrono che esprime la "necessità di attenzione" espressa da un componente hardware, è legato a un evento sincrono per l'interruzione di un processo al verificarsi di certe condizioni oppure una richiesta presentata al sistema operativo da parte di un processo in esecuzione.
*array - è un contenitore di dati o indirizzi archiviati in una struttura spesso gerarchica in cui ad ogni singola posizione disponibile viene assegnato un identificativo per riuscirla ad identificare chiamato appunto indirizzo. "un vettore di dati".
*ISA - Quando viene eseguito un programma, il processore non fa altro che leggere tutte le istruzioni contenute in quel programma eseguendole, dalla prima all’ultima. Queste però devono essere scritte in un linguaggio apposito chiamato codice binario. La sequenza di 1 e di 0 è il modo in cui un processore capisce e comprende codici, istruzioni e dati. I primi programmi venivano effettivamente scritti in questo modo, ma quando i programmatori hanno iniziato a scrivere molte più istruzioni, si è dovuta trovare una alternativa. Nasce quello che viene chiamato “Linguaggio Assemblativo”, o meglio Assembly, un linguaggio simile a quello che viene capito dalla macchina: è più corto, utilizza non solo 1 e 0 ma anche caratteri e numeri. Il linguaggio Assembly viene poi convertito in linguaggio macchina usando un interprete o un assemblatore detto “Assembler”. Un programma Assembly non è altro che un file composto da una sequenza di istruzioni che definiscono quelle che poi sono le istruzioni, o operazioni, che una macchina deve eseguire. Queste vengono definite Instruction Set Architecture appunto ISA.
Per chi volesse approfondire lascio il link di un video molto semplice ma altrettanto interessante in cui in soli 8 minuti viene spiegato il funzionamento della CPU:
https://www.youtube.com/watch?v=8MlP7gZSfV0
BIBLIOGRAFIA & FONTI:
Architettura dei calcolatori - Conte, Mazzeo, Mazzoca, Prinetto
L'arte dell'elettronica di Paul Horowitz, Winfield Hill
http://www.computer-facile.com/computer/618-cos-e-un-processore-di-un-computer-come-funziona
https://www.intel.it/content/www/it/it/gaming/resources/cpu-clock-speed.html
https://it.wikipedia.org/wiki/Instruction_set
https://morethaninfo.com/la-alu-che-cose-e-a-che-cosa-serve/
Commenti
Posta un commento