Il ciclo macchina
Il ciclo macchina è il funzionamento di una CPU che:
- inizia con il prelevamento dalla memoria del codice macchina dell’istruzione da eseguire; tale operazione viene eseguita dalla Control Unit.
- L’istruzione prelevata viene trasferita in un registro specifico e quindi codificata.
- Dopo aver codificato, cioè tradotto l’istruzione, la CPU emette i segnali necessari all’esecuzione dell’istruzione.
Il ciclo macchina è suddivisa in quattro parti:
- fase di Fetch dell’istruzione;
- fase di Decode deH’istnizione;
- fase di Feeth degli operandi;
- fase di Execute.
Ogni ciclo macchina viene eseguito molto velocemente e in maniera ciclica a con altri cicli macchina, fino a un reset.
Il reset indica l'azzeramento di un elemento, per riportare il processore a una condizione iniziale di Fetch. Il reset significa porre a zero (0).
Il set che indica porre a uno (1).
Fetch dell’istruzione
Il Fetch significa prelevamento изъятие e identifica la fase in cui la CPU deve trovare l’istruzione da eseguire. In questa fase la CPU deve dialogare con la memoria RAM per ottenere il codice macchina dell’istruzione da eseguire.
Il prelevamento avviene in questo modo:
- la Control Unit legge la cella di memoria il cui è memorizzato in un registro “contatore di programma” (PC, Program Counter).
- Dopo aver letto il codice dalla memoria, incrementa il contenuto del registro Program Counter in modo che esso “punti” all’istruzione successiva.??? Спросить у учителя чё это
Decode dell’istruzione
La fase di deсode e’ una fase interna alla CPU durante la quale avviene l’interpretazione dell’istruzione e la preparazione dei dispositivi necessari. In questa fase:
- il codice macchina dell’istruzione viene codificato in operazioni da eseguire da parte della CPU. L’interpretazione può avvenire attraverso circuiti logici già predisposti in una apposita parte della ROM.
Fetcli degli operandi
Ketch degli operandi un’operazione di lettura, dalla memoria o da un registro.
Execute dell’istruzione
Nella fase di execute la Control Unit invia segnali che rappresentano opportuni comandi per l’esecuzione.
L’esecuzione di ogni istruzione da parte della CPU:
- Preleva il codice macchina dell’istruzione di indirizzo uguale al contenuto del registro PC e inseriscilo nel registro IR.
- Incrementa il contenuto del registro PC per “puntare” all’istruzione seguente.
- Decodifica l’istruzione appena prelevata.
- Se l’istruzione necessita di operandi determina dove si trovano (memoria oppure registri).
- Se necessario preleva dalla memoria gli operandi e ponili nei registri della CPU.
- Esegui l’istruzione.
- Salva il risultato in un registro o in una cella di memoria.
- Torna al punto 1.
La memory dump mostra 8 celle per ciascuna riga.
La memory dump identifica lo stato in cui si trovano le celle della memoria in un determinato momento. Mostra il corrispettivo ASCII del contenuto della singola cella di memoria. L’ esempio guardare al libro pag 16
Nella figura a lato è rappresentato il “tipico” data path per una CPU:
Il data path è una sezione della CPU che raggruppa L’ALU e i registri.
Il ciclo di data path è il passaggio di due operandi attraverso L’ALU e la memorizzazione del risultato in un nuovo registro. Ogni istruzione viene eseguita in uno o più cicli data path, per esempio una divisione necessita di molti cicli per la sua esecuzione.
La velocità con cui viene compiuto un cielo di data path determina la velocità della CPU.
Ogni ciclo macchina è controllato da un temporizzatore clock.
Un temporizzatore clock è un oscillatore al quarzo che emette segnali a intervalli di tempo regolari.
Il numero di cicli macchina eseguiti in un secondo di tempo prende il nome di Hertz (Hz).
Hertz = 1 ciclo al secondo, UHertz = 1000 cicli al secondo, MHertz = 1 milione di cieli al secondo, GHertz = 1 miliardo di cicli al secondo.
Ogni singola istruzione elementare richiede generalmente più di un ciclo macchina e più di un ciclo di clock.
II clock è un circuito di temporizzazione che permette di generare un segnale a onda quadra caratterizzata da una particolare frequenza. Si tratta di un segnale che commuta continuamente i circuiti da un livello basso a uno alto, molti milioni di volte al secondo. Un tipico segnale di clock:
Il clock sincronizza l'esecuzione di tutte le operazioni della CPU e non solo. Nella formula seguente T è il periodo con cui si ripete il segnale periodico con frequenza: f = 1/T Hz.
L’architettura interna della CPU
Nello schema, oltre alla memoria centrale (RAM), possiamo individuare i seguenti elementi funzionali della CPU:
- L’unità di controllo (CU, Control Unit);
- registro PC (Program Counter);
- registro IR (Imtruction Register);
- registro PSW (Process Status Word);
- ALU;
- registri generali;
- registro MAR (Memory Address Resister);
- registro MDR (Memory Data Register);
- BUS di controllo;
- BUS indirizzi;
- BUS dati.
Il BUS è un insieme di linee, ciascuna delle quali in grado di trasmettere un bit di informazione tra due elementi elettronici. Il segnale che viene trasferito è di tipo logico, secondo la codifica binaria di un'informazione.
Il BUS interno e’ un BUS che collega tutti gli elementi che fanno parte della CPU; nello schema sono individuabili dal colore nero delle frecce. Si tratta di un BUS generalmente di controllo, senza distinzione tra dati e indirizzi.
I registri interni
Un registro è paragonabile a una lavagna sulla quale viene scritta un’informazione per un breve periodo di tempo. Per memorizzare un'informazione per un periodo più lungo può essere usata una cella di memoria, paragonabile a un quaderno o a un blocco note. Diversamente dalle celle di memoria i registri non possiedono un indirizzo ma un nome specifico.
Due tipi di registri:
- accessibili dal programmatore (modello di programmazione)
- inaccessibili al programmatore, in quanto vengono usati direttamente dalla CPU per le proprie operazioni di controllo.
Di seguito sono illustrati i registri interni non accessibili dal programmatore.
Il registro è una particolare cella di memoria contenuta all'interno della CPU.
- La dimensione dei registri si esprime in bit e dipende dall'architettura specifica della CPU.
- la funzione dei registri è di memorizzare temporaneamente dei dati.
MDK (Memory Data Resister) è un registro interno collegato direttamente al BUS dati attraverso un buffer bidirezionale tri-state .
Buffer bidirezionale tri-state è un circuito in grado di colleggare due componenti elettronici in due direzioni. Il tri-state è in grado di rappresentare oltre i due stati binari tradizionali (0 e 1) un terzo stato chiamato alta impedenza.
II registro non è visibile al programmatore e contiene i dati che la CPU vuole inviare o ricevere dalla memoria o dai dispositivi di I/O.
Il registro MDK è una sorta di memoria di transito dove vengono immagazzinati temporaneamente tutti i dati scambiati con la memoria, prima di essere smistati presso gli altri registri interni.
MAR (Memory Address Resister) è un registro interno collegato direttamente al BUS indirizzi.
- Non è visibile al programmatore e contiene gli indirizzi necessari alla selezione della cella di memoria oppure al dispositivo di I/O coinvolto nell’operazione.
IR (Instruction Resister) è il registro interno che riceve il codice operativo dell’istruzione prelevata durante la fase di fetch.
- È invisibile al programmatore e contiene temporaneamente il codice operativo dell’istruzione durante la sua codifica.
Il modello di programmazione
Il modello di programmazione è l’insieme degli elementi accessibili al programmatore, in generale tramite il linguaggio assembly e l’ambiente di debug.
- È formato dai registri accessibili e dall’ALU. Alcuni registri sono specializzati, cioè svolgono solo una specifica funzione mentre altri sono di uso generale, cioè possono essere usati dal programmatore per un qualsiasi scopo.
- Le trasformazioni dei dati contenuti nei registri vengono effettuate attraverso elaborazioni dell’ALU.
PC (Program Comiuter) è un registro interno accessibile parzialmente dal programmatore che lo può usare per modificare il flusso sequenziale del programma.
- Il registro PC (nelle CPU Intel si chiama IP, Instruction Pointer) contiene, in ogni fase di avanzamento del programma, l’indirizzo di memoria in cui si trova l’istruzione successiva da eseguire.
PSW (Process Status Word) è registro interno, chiamato anche registro delle flag (bandiere), non ha un significato nel suo complesso;
- ciascun bit che lo compone si comporta come una bandierina di segnalazione che fornisce informazioni sul risultato delle operazioni aritmetico-logiche dell’ultima istruzione eseguita.
- Le informazioni contenute in questo registro sono necessari per la costruzione degli algoritmi dei programmi.
- L’ALU, a ogni operazione aritmetico-logica, aggiorna il contenuto del registro PSW.
Le flag principali:
ZERO (ZF): contiene 1 (true) quando il risultato dell’operazione è uguale a 0, mentre contiene 0 (false) quando il risultato dell’operazione è diverso da 0. Nei linguaggi evoluti di programmazione la condizione
diventa a livello di linguaggio macchina Se il risultato della sottrazione ò zero significa che i due elementi (a e b) sono uguali, pertanto ZF viene attivato ( 1 ). Per evitare confusione conviene usare true (vero) e false (falso) senza usare i termini 1 e 0.
CARRY (CF): viene utilizzato per due diverse ragioni: verificare se un elemento è maggiore o minore di un altro, oppure verificare se un numero non può essere contenuto in un registro.
OVERFLOW (OF): contiene true quando il segno del risultato dell’ultima operazione aritmetico-logica discorda dal segno degli operandi, cioè quando per esempio il prodotto di due numeri negativi ha un nuovo valore negativo.
I PARITY (PF): contiene true quando nel risultato dell’ultima operazione aritmetico-logica il numero di bit a 1 del risultato è pari. Viene usato negli algoritmi di comunicazione per la gestione degli errori di comunicazione.
I SKìN (SF): contiene true quando il risultato dell’ultima operazione aritmetico-logica è negativo.
I registri generali
I registri generali sono registri non specializzati, destinati a ospitare temporaneamente i dati in corso di elaborazione:
- i dati contenuti nei registri possono provenire dalla memoria o da altri registri per l’elaborazione e da qui tornano ai registri dai quali vengono riportati in memoria.
- sono accessibili al programmatore
- ciascun processore possiede una propria architettura e di conseguenza una propria organizzazione dei registri.
CU (Control Unit) è il blocco che invia i comandi esecutivi all’ALU in base alla decodifica dell’istruzione, e decide l’incremento dell’indirizzo di memoria contenuto nel registro PC in modo da predisporsi all’esecuzione dell’istruzione.
ALU è il blocco che esegue le trasformazioni sui dati.
- Interviene su due operandi che possono essere contenuti nei registri interni o provenire dalla memoria attraverso l’MDR
- produce un risultato che può essere salvato su un registro interno o in memoria attraverso l’MDR.
ALU (Arithmetic Louie Unit)
l’ALU è la parte della CPU dedicata alle operazioni aritmetiche e logiche: poiché tutte le istruzioni e i dati sui quali opera sono codificate in forma numerica (binaria), in realtà tutte le elaborazioni devono passare attraverso l’ALU. ■
Le architetture RISC c CISC
Le due tecnologie per la costruzione di microprocessori sono:
- CISC (Complex Instruction Set Computer),
- RISC (Reduced Instruction Set Computer).
I processori costruiti secondo l’architettura CISC hanno un numero elevato di istruzioni diverse, di tipo anche complesso:
- per semplificare il compito dei programmatori
- per disporre подготавливать di programmi più compatti che utilizzino minore memoria.
CPU сon architettura CISC ha:
- una memoria di tipo ROM che contiene una serie di microcodici eseguano un’azione elementare.
Per eseguire le istruzioni è necessario:
- trasformare le istruzioni in una serie di istruzioni scritte in microcodice; in tal modo quelle più semplici richiederanno meno istruzioni in microcodice.
I processori CISC più conosciuti sono la famiglia di CPU della Intel: 80286, 80386, 80486, Pentium, Celeron.
I processori costruiti secondo l’architettura RISC hanno la forte riduzione del numero di istruzioni:
- per conciliare согласовать la velocità del microprocessore con l'esecuzione dell'istruzioni.
Il fine principale della struttura RISC è quello:
- produrre processori ad alta velocità e dal costo ridotto,
- dare la minore complessità del progetto.
Lo svantaggio della tecnologia RISC è:
- per essi sono stati sviluppati sistemi operativi a minore diffusione rispetto a quelli sviluppati per i CISC, come Windows.
- la maggiore complessità dei programmi: programmatore deve sopperire con il software per far svolgere a operazioni complesse. È obbligatorio studiare, di ogni porzione di codice, il metodo per renderla più veloce;
Attualmente diffondono tecnologie ibride CISC/RISC, come quella dell'architettura Nehalem (IntelCore).
`Il core del processore
Il Core rappresenta il nucleo o nocciolo della CPU, cioè il vero e proprio “nucleo elaborativi”, tutto il resto della CPU è rappresentato dal package, o guscio, che lo contiene.
Il nucleo è collegato elettricamente al contatto che messo nel socket.
Dall’anno 2005 circa, i produttori di processori (Intel e Amd) hanno capito che non possono più innalzare le frequenze operative dei propri processori, e hanno deciso di usare più nuclei nello stesso package, chiamate MuItiCore A re hi tee tu res:
- Sfruttando il parallelismo, cioè le elaborazioni dell'istruzione da entrambi i core, si ottengono risultati analoghi rispetto all’utilizzo di più processori fisicamente separati posti sulla stessa scheda madre.
Nel 2007 a 4 core (QuadGore) e dal 2010 i nuclei diventano 8 con la tecnologia Intel i7.
Se confrontiamo la CPU Pentium 4 (3.00 GHz) con il Core 2 Duo E6600 (2.4 GHz), vediamo che il Core2 ha prestazioni migliori: possiede una frequenza di clock inferiore, ma un doppio nucleo (Dual Core), cioè può risolvere due calcoli per volta, a differenza del Pentium 4, grazie al parallelismo della sua architettura.
I Tuttavia è bene ricordare che le frequenze di clock dei diversi Core della stessa CPU non possono essere sommate. Infatti la CPU E6600 non elabora a 5.8 GHz, ma sono i due Core che elaborano ciascuno a 2.4 GHz.
La CPU nel personal computer
La CPU si trova sulla motherboard. Il motherboard mette in comunicazione:
- i diversi componenti tra loro
- i diversi componenti con la CPU.
La CPU non è presente in questo schema in quanto può venire montata sull’apposito alloggiamento, in questo caso di tipo Socket ZIF.
ZIF (Zero Insertion Force) è un alloggiamento particolare nel quale non è necessario usare la propria forza per collocare la CPU in questa sede. Per facilitare il suo inserimento viene usata una piccola leva che, una volta sollevata, permette l'inserimento del processore senza alcuna pressione e, una volta riabbassata, mantiene il processore sul suo supporto.
Due tipologie di alloggiamenti per CPU
- I alloggiamento a socket;
- I alloggiamento a slot.
NorthBridge e SouthBriclge
Il Ghipset è un supporto che collega la CPU e le varie periferiche, è formato da due diversi circuiti integrati :
- North Bridge;
- South Bridge.
II bridge collega i diversi componenti con motherboard.
Al NorthBridge sono affidate le relazioni verso le periferiche più veloci come:
- la memoria RAM
- i processori per la grafica,
NorthBridge:
- Viene usato mediante i moderni BUS PCl-express attraverso il FSB (Front Side BUS).
- Viene chiamato MCH (Memory Controller Hub)
- possiede in genere dimensioni maggiori rispetto al SouthBridge.
- Una volta controllava anche la cache della CPU, ma adesso la cache della CPU è integrata all’interno di CPU
Al SouthBridge, ICH (I/O Controller Hub), spetta lo scambio dati con tutto il resto:
- i controller dei dischi fissi,
- il clock di sistema,
- le porte di I/O,
- gli slot PCI
Un BUS denominato ISB (Internai Side BUS) collega i due chipset tra loro.
FSB è il BUS che trasporta i dati tra la CPU e il chipset NorthBridge. È formato:
- da un BUS dati
- da un BUS indirizzi.
ISB è il BUS che trasporta i dati tra il chipset NorthBridge e SouthBridge.
LPC (Low PinOut Controller) è il BUS che collega il chipset SouthBridge con alcuni dispositivi lenti come:
- la memoria Flash che contiene il BIOS
- le porte seriali e parallele.
BSB (Back side BUS) è il BUS che collega la CPU con la memoria Cache di secondo livello (L2),
I Recentemente i costruttori di microprocessori si stanno orientando per cablare nella CPU anche questi circuiti, per esempio il processore Core i7, contiene un circuito che gli consente di gestire direttamente la memoria RAM.
La bandwidth (banda passante) è la velocità con la quale la CPU trasmette i dati al northbridge.
La bandwidth (banda passante) si calcola: moltiplicando i byte della dimensione del BUS del processore per la frequenza di clock (cicli al secondo) per il numero di data transfer a ogni ciclo.
Per esempio, un sistema con:
- I processore a 16 bit (2 byte),
- FSB a 100 MHz,
- I due trasferimenti a ciclo,
possiede una bandwidth di:
2 (byte) x 100 (FSB) x 2 (tc) = 400 MB/s (Megabyte al secondo).
|