Struttura interna del Microprocessore (di Samuele Costantinopoli)

by / sabato, 04 aprile 2020 / Published in Collaboratori, Didattica, Il blog, Lezioni On-line, Scuola

 

Ricerca Samuele Costantinopoli

I.T.I.S.GIOVANNI XXIII – Classe 5° “D” – A.S.2019-20

 

Elettronica ed Elettrotecnica

17/03/2020

 

Struttura interna del Microprocessore

 

Un microprocessore spesso chiamato anche chip è un singolo circuito integrato in grado di effettuare operazioni decisionali, di calcolo o di elaborazione dell’informazione. Il microprocessore principale di un computer viene chiamato processore o CPU. I processori sono circuiti contenenti da migliaia a milioni di transistor ed altri componenti elettronici, ottenuti sfruttando le caratteristiche di semiconduttività del silicio e la sua relativa facilità di essere convertito in isolante tramite drogaggio. Questi transistor conservano informazioni sotto forma di carica elettrica. Il ritmo di lavoro del microprocessore è cadenzato da un segnale elettrico (detto clock) generato internamente al computer e costituito da rapidissimi impulsi che si ripetono centinaia di milioni di volte per secondo. La velocità del clock (e quindi del microprocessore) si misura in MegaHertz o in GigaHertz (GHz, miliardi di impulsi per secondo). I processori che funzionano a 3,5 GHz, sono in grado di compiere quasi 3,5 miliardi di operazioni elementari ogni secondo.

In figura la struttura interna di un microprocessore

 

Analizziamo i vari componenti presenti all’interno della struttura:

Bus Dati: consente lo scambio di dati tra i vari dispositivi che compongono il sistema, è bidirezionale e la sua dimensione è pari al numero di bit che caratterizza il microprocessore
Bus indirizzi: rappresenta il canale attraverso il quale viene fornito da parte della CPU l’indirizzo della locazione di memoria o del dispositivo di 1/0 interessato dalla trasmissione. È unidirezionale ed essendo l’indirizzo costituito da almeno 2 byte necessita come minimo 16 fili
Bus controlli: consente di trasmettere l’insieme dei segnali necessari alla corretta gestione dell’intero sistema. In particolare permette la sincronizzazione dei vari dispositivi. Il bus controlli ha un numero di linee che differisce a seconda del tipo di microprocessore utilizzato ed è dimensionato in funzione dei controlli che si intendono effettuare.
I registri: sono particolari dispositivi di memoria, di capacità ridotta (uno o due byte), posti all’interno del microprocessore, con i quali si possono manipolare temporaneamente dati e indirizzi. Il loro utilizzo permette di semplificare le operazioni e renderle più veloci, evitando l’intervento continuo della memoria esterna.
Aritmetic Logic Unity: ALU. Unità di controllo aritmetica e logica, è un circuito logico di natura combinatoria in grado di processare numeri binari (0 e 1). Può eseguire non solo le addizioni e sottrazioni ma anche le operazioni logiche AND, OR, XOR e NOT.

Inoltre permette, anche grazie all’accumulatore, di inserire un dato dalla RAM in un processo chiamato Load; e caricare un dato dall’accumulatore alla RAM (Store).

.

 

Analizziamo in dettaglio i vari tipi di registri presenti all’interno della struttura:

 

Registro di Stato: (Status Register)

Il registro di stato può essere scomposto in più celle elementari (flags) che consentono di ricavare una serie di informazioni relative allo stato delle unità interne al microprocessore.

Infatti il loro contenuto si modifica, passando da ” 1 ” a ” 0 ” e viceversa, in conseguenza dell’esecuzione di determinate operazioni permettendo una verifica dei risultati ottenuti. I flags possono fornire indicazioni diverse a seconda del tipo di microprocessore utilizzato, ma comunque quelli comunemente presenti sono:

flag C = carry (presenza di riporti)

flag Z = zero (se il risultato è uguale a 0)

flag V = overflow (se esiste un traboccamento nell’esecuzione di somme aritmetiche (V))

flag S = segno (se il segno del risultato è positivo)

Registri di uso generale: Si tratta dell’insieme dei registri che, pur non svolgendo compiti particolari all’interno del microprocessore, risultano particolarmente utili in quanto consentono di memorizzare temporaneamente informazioni, dati o indirizzi all’interno del microprocessore non occupando inutilmente la memoria RAM esterna e riducendo i tempi di esecuzione delle istruzioni.
Accumulatore (registro di uso generale): E’ senza dubbio uno dei registri più utilizzati in quanto in esso vengono memorizzati i risultati delle varie operazioni effettuate dalla ALU ed è interessato anche dalle operazioni di ricezione e di invio dei dati. L’accumulatore è quindi un registro dotato di ampie capacità di comunicazione con i vari blocchi che costituiscono il sistema e le sue dimensioni generalmente corrispondono alla lunghezza della parola trattata. In alcuni microprocessori sono presenti più registri di questo tipo e quindi sono possibili sia operazioni tra gli accumulatori che con altri dispositivi. Naturalmente in questi casi risulta più complessa la logica di controllo ed è quindi necessario poter disporre di un set di istruzioni più completo per gestire il sistema; ad esempio dovrà essere presente un’istruzione che permetta di individuare l’accumulatore a cui deve essere inviato il risultato di un’operazione svolta dalla ALU.
Contatore di programma (Program Counter: PC): La funzione di questo registro è quella di scandire la sequenzialità delle varie operazioni.

Il program counter (spesso abbreviato in PC) è un registro della CPU la cui funzione è quella di conservare l’indirizzo di memoria della prossima istruzione (in linguaggio macchina) da eseguire. È un registro puntatore cioè punta a un dato che si trova in memoria all’indirizzo corrispondente al valore contenuto nel registro stesso. Infatti esso memorizza l’indirizzo della locazione di memoria in cui è contenuta l’istruzione che deve essere eseguita e per questo motivo le sue dimensioni devono essere pari a quelle del bus indirizzi. Durante la fase di prelievo il contenuto del contatore di programma è costituito dall’indirizzo dell’istruzione da eseguire e viene aggiornato durante la fase di esecuzione, si predispone in questo modo ad indirizzare la cella di memoria che contiene l’istruzione successiva.

Nel caso in cui nel programma siano presenti dei salti a sottoprogrammi oppure venga presentata da parte di un dispositivo esterno una richiesta di interruzione la sequenza operativa precedentemente descritta deve essere parzialmente modificata in quanto il contatore di programma oltre ad indirizzare la locazione prevista deve anche coinvolgere altri dispositivi. In particolare viene interessato il registro di Stack Pointer che consente di indirizzare un’opportuna area di memoria utilizzata per memorizzare il contenuto di PC. Al termine dell’esecuzione del sottoprogramma viene posto in PC l’indirizzo della cella immediatamente successiva a quella contenente l’ultima istruzione prima del salto

Puntatore di stack (Stack Pointer: SP): Questo registro, presente in quasi tutti i tipi di microprocessore, viene utilizzato per indirizzare, secondo le istruzioni del programma, un’opportuna zona della memoria ad accesso casuale (RAM), denominata area di stack. Tale zona di memoria è organizzata come un registro LIFO (Last Input First Output), cioè i dati vengono prelevati a partire dal dato introdotto per ultimo.

Registro istruzioni (Instruction Register: IR):

La funzione di questo registro è quello di memorizzare l’istruzione che deve essere eseguita. Questa istruzione è espressa in forma codificata per cui la sua esecuzione può avvenire solo dopo la sua traduzione in linguaggio macchina. Questa operazione avviene in un decodificatore, collegato direttamente al registro istruzioni, che a sua volta attiva la logica di controllo. In conclusione quindi il registro istruzioni, collegato al circuito di decodifica, mantiene memorizzata l’istruzione per il tempo necessario alla sua esecuzione. Le dimensioni di questo registro sono solitamente uguali alla lunghezza della parola trattata.

 

 

Analizziamo in dettaglio il funzionamento della ALU presente all’interno della struttura:

Le ALU sono progettate per generare anche alcune uscite che segnalano particolari risultati ottenuti. Queste uscite, detti flag, vengono usualmente raccolti in un registro di stato e sono utilizzati per indicare la presenza di resto, la divisione per zero, l’overflow, il risultato pari a zero etc. Questi flag vengono utilizzati per cambiare il flusso di esecuzione del programma tramite i salti condizionati. Quindi il tipo di risultato ottenuto può servire a controllare delle condizioni: ad esempio, sottraendo due numeri, ottengo il risultato zero se essi sono uguali. Il flag zero si attiva, ed una seguente istruzione di salto può effettuare il salto se il flag zero è stato attivato, oppure proseguire senza salto se il flag zero non è attivato. Gli if, then, else, i cicli e gli altri costrutti della programmazione sono basati sulla combinazione del meccanismo dei flag e dei salti condizionati.

Nella modalità di incremento A+B=C. ALU è capace di fare somme tra numeri interi e finiti ovvero che hanno un numero finito di bit prendendo in considerazione i 3 bit avremo un numero che va da 0 a 8. La somma sarà anche essa un numero a 3 bit. Se la somma supererà i 3 bit avremo bisogno di un bit di Carry. Prendiamo un numero 3 bit a è un altro numero 3 bit, di questi numeri possiamo sommarli facendo:

Quello che riporto di 1 va a finire nel bit dello Status Resister (Curry).

Possiamo vedere anche la somma tenendo conto del Curry (Add+Currry) un altra operazione che fa l’ALU.

Bisogna solo aumentare di 1(unità di riporto) la prima somma. In questo caso si può anche considerare una somma di 2 numeri a 6 bit utilizzando dei registri a 3 bit svolgendo prima la somma della parte bassa (LOW) e poi portandoci dietro il riporto la somma della parte alta (HIGH).

Tralaltro l’ALU può fare anche le sottrazioni SUB e SUB-BORROW, processi opposti all’addizione.

Circuito ALTERNATIVO 3 ingressi Full-adder:

Nel caso del Decoder (in cui viene esplicitata l’informazione contenuta in un codice) il numero di uscite è maggiore maggiore del numero di ingressi con l’eccezione dei codici con ridondanza in cui sono tolti i bit aggiunti per rendere più sicura la trasmissione.Di seguito i 2 circuito rispettivamente da 8 ingressi che diventano 3 uscite e 3 ingressi che danno luogo a 8 uscite.

 

 

Infine analizziamo in dettaglio il funzionamento della Decodificatore di Istruzioni presente all’interno della struttura:

Decodificatore di istruzioni:

L’unità di decodifica si occupa di ricevere le istruzioni in ingresso e di attivare le opportune unità interne del processore per eseguire l’istruzione caricata. Nei primi processori questa unità provvedeva a tradurre l’istruzione in opportuno microcodice che veniva utilizzato per gestire l’ALU, i registri, l’accumulatore e le altre unità funzionali dei processori. Con l’avvento delle unità dotate di pipeline il microcodice è stato sostituito da segnali di controllo che temporizzano le varie unità.

 

Molti microprocessori moderni sono progettati per eseguire set di istruzioni molto complessi. Questo set di istruzioni renderebbe difficile l’esecuzione di più istruzioni contemporaneamente. Quindi molti microprocessori traducono le istruzioni complesse in sequenze di istruzioni più semplici da eseguire. Anche questo lavoro viene svolto dall’unità di decodifica.

(44)

Tagged under: , ,

Lascia un commento

TOP