CAPITOLO 1
ARCHITETTURA DI UN SISTEMA A MICROPROCESSORE
Introduzione
Architettura
Elementi caratteristici di una CPU
Classificazione memorie
Gestione dispositivi di I/O: polling, interrupt, DMA
Tutto in uno: cenni a microcontrollori e PLC
Parole chiave
1
CAPITOLO 1: ARCHITETTURA DI UN SISTEMA A MICROPROCESSORE
INTRODUZIONE
Agli inizi degli anni '60 comparvero sul mercato i primi circuiti integrati digitali. Servendosi di tali dispositivi divenne più semplice la
progettazione e la realizzazione di sistemi logici. Utilizzando la
tecnica denominata a logica cablata, i sistemi venivano progettati
utilizzando i circuiti integrati digitali offerti dal mercato (porte
logiche, registri, contatori, ecc.) in funzione dell'applicazione
specifica. Inoltre, aumentando sempre più il numero di componenti
integrati su un unico chip di silicio, ovvero le funzioni logiche che il
singolo circuito integrato era in grado di svolgere, divennero sempre più
complesse e sofisticate le funzioni disponibili.
Tuttavia il costo del dispositivo integrato aumentava con la sua
complessità, e solo una sua larga diffusione permetteva l'abbattimento
del costo di produzione, cosa non sempre possibile in quanto esso spesso
era rivolto ad utilizzazioni specifiche.
Nacque pertanto ben presto la necessità di disporre di un unico dispositivo che permettesse di essere utilizzato in applicazioni diverse
con poche modifiche. Sulla base di queste motivazioni venne realizzato
agli inizi degli anni '70 un circuito integrato destinato a rivoluzionare
il mondo dell'elettronica e della sistemistica in generale, a cui fu dato
il nome di microprocessore (C.P.U. = Central Process Unit).
Tale dispositivo, con una struttura interna molto complessa per svolgere
correttamente le funzioni per cui era stato realizzato, aveva bisogno di
essere programmato, ovvero che gli venisse fornita una successione ordinata di istruzioni sul modo di operare.
Il microprocessore può quindi essere considerato un dispositivo adatto a
svolgere funzioni diverse, modificando solo in modo minimo la parte
circuitale (hardware) ad esso connessa, ma variando di volta in volta, in
base all'applicazione richiesta, il programma di gestione (software).
I sistemi realizzati con l'applicazione di una CPU sono detti a logica
programmabile.
Il microprocessore può essere utilizzato in una vastissima gamma di
applicazioni che vanno dai sistemi di controllo, alla strumentazione di
misura, dalle apparecchiature domestiche quali lavastoviglie e televisori
2
a quelle elettromedicali, senza dimenticare una delle più diffuse
applicazioni, ovvero il Personal Computer.
ARCHITETTURA DI UN SISTEMA A MICROPROCESSORE
Un microprocessore in genere, pur contenendo al suo interno tutti i
circuiti di calcolo e di controllo, per poter operare correttamente ha
bisogno
di
essere
applicazioni
per
collegato
cui
il
con
altri
processore
è
dispositivi
impiegato
(da
in
base
solo
alle
non
è
utilizzabile).
Si è già detto che l'uso di un microprocessore può essere rivolto
alle più varie applicazioni, che vanno dai sistemi di controllo di tipo
industriale, all'utilizzazione molto diffusa in sistemi di elaborazione
dati.
In ogni caso al microprocessore debbono essere collegati sia dei
moduli di memoria che i dispositivi per l’ingresso e l'uscita dei dati. E
dunque necessario parlare di sistema a microprocessore e non semplicemente di microprocessore. Nella figura è riportato un semplice schema
di sistema con memorie e dispositivi di I/O. In esso è evidenziata la
funzione di collegamento tra i vari componenti svolta dai BUS DATI, BUS
INDIRIZZI e BUS CONTROLLI.
3
Il sistema è costituito da una CPU da memorie RAM e ROM da uno o più
dispositivi d'ingresso e d'uscita. Lo schema può servire per comprendere
come il microprocessore possa scambiare informazioni con la memoria e con
i dispositivi di I/O (Input / Output).
Mediante il bus indirizzi vengono identificate le locazioni di memoria
dove vengono memorizzati i dati nelle operazioni di scrittura
o da cui
la CPU riceve i dati (o i codici delle istruzioni, cioè il programma)
nelle operazioni di lettura.
Inoltre, sempre per mezzo del bus indirizzi il microprocessore identifica
i dispositivi d'ingresso, ad esempio la tastiera di un computer, da cui
riceve i dati nello operazioni di lettura da periferica o quelli
d'uscita, ad esempio il monitor di un computer, a cui invia i dati nelle
operazioni di scrittura su periferica. Il bus dati è utilizzato per il
trasferimento (lettura o scrittura) dei dati dalla CPU con le locazioni
di memoria o con i dispositivi di ingresso / uscita (detti anche
periferici o dispositivi di I/O). Il bus controlli, oltre a funzioni
specifiche che non saranno qui esplicitate, è utilizzato dalla CPU per
segnalare alla memoria e ai dispositivi di I/O la direzione del flusso
dei dati e il tipo di dispositivo coinvolto nel trasferimento (memoria o
I/O).
L’architettura a BUS presenta diversi vantaggi il principale dei quali è
dato dalla modularità del sistema; è infatti particolarmente semplice
ampliare il sistema con l’aggiunta di nuovi componenti collegandoli ai
BUS. Tale vantaggio risulta evidente pensando alle schede madri dei
Personal Computer, dove attraverso gli slot di espansione è possibile
ampliare le prestazioni e le caratteristiche del sistema attraverso nuove
schede (es: modem, acquisizione dati, porte parallela) o nuovi chip di
memoria.
I diversi “oggetti” sono collegati ai bus con una modalità che consenta
di evitare conflitti e/o indecisioni nella comunicazione che avviene
sempre tra due soli componenti del sistema e quasi sempre uno dei due è
il microprocessore.
4
BUS DATI (bidirezionale)
CS1
CPU
CS2
CS3
MEMORIA
I/O
DECOD 1
DECOD 2
espansione
READ
WRITE
DECOD 3
BUS INDIRIZZI
BUS CONTROLLI
Lo schema di figura (dove per semplicità si sono rappresentate solo 4
linee per bus) mette in evidenza i circuiti di decodifica che, generando
dei segnali di chip select, permettono di selezionare i diversi
dispositivi. I segnali CS permettono di togliere il componente dallo
stato di alta impedenza (che corrisponde al virtuale scollegamento del
componente dal bus dati) garantendo la corretta comunicazione solo tra
due componenti.
Altri segnali particolarmente importanti per la comunicazione provengono
dal BUS CONTROLLI e sono i segnali di READ e WRITE, pilotati dalla CPU, e
specificano la direzione dei dati nel trasferimento.
5
Nella figura sotto riportata si mette in evidenza la sostanziale
differenza tra un collegamento a Bus ed un collegamento punto a punto,
dove è evidente la difficoltà di aggiungere un nuovo elemento al sistema.
ELEMENTI CARATTERISTICI DI UNA CPU
La CPU costituisce il cuore e l’elemento più importante del sistema; in
esso sono rappresentate le funzioni logiche, di controllo e aritmetiche.
La CPU è in grado di prelevare le istruzioni del programma da svolgere
contenute nella memoria (fase di fetch) e di interpretarle ed eseguirle
(fase di execute).
Tale istruzioni sono evidentemente in forma binaria. Grazie ai programmi
compilatori (ad esempio turbo Pascal, Turbo C, Basic) è possibile
scrivere programmi per Personal Computer utilizzando linguaggi
particolarmente semplici ed intuitivi (linguaggi ad alto livello) che
vengono poi “converititi” automaticamente nell’unico linguaggio
interpretato ed eseguito dalla CPU che viene denominato linguaggio
macchina.
Le principali caratteristiche di una CPU che ne identificano le
peculiarità e la potenza possono essere cosi sintetizzate:
•
Set istruzioni, cioè l’insieme delle istruzioni che la CPU è in
grado di svolgere; si tenga presente che alcuni microprocessori
delle prime generazioni non sono in grado di svolgere l’operazione
di moltiplicazione che quindi viene svolta tramite un algoritmo
(programma) costituito da somme ripetute.
•
Velocità di funzionamento ed esecuzione delle istruzioni; si
identificano tali caratteristiche attraverso il clock di sistema
(frequenza di funzionamento passata negli anni da qualche MHz a
centina di Mhz) e il MIPS (milioni di istruzioni eseguite in un
secondo).
6
•
Architettura interna, insieme dei registri di lavoro, coprocessore
matematico per svolgere le operazioni logico aritmetiche di una
certa complessità, memoria cache per il reperimento veloce delle
istruzioni da svolgere.
A titolo esemplificativo si riporta l’architettura interna della CPU Z80
7
CLASSIFICAZIONE MEMORIE
8
GESTIONE DISPOSITIVI DI I/O: POLLING, INTERRUPT, DMA
Un sistema a microprocessore deve eseguire programmi più o meno
complessi, trasferire dati alle periferiche esterne e ricevere da queste
informazioni. Durante l'esecuzione dei programmi vi è anche un flusso
continuo di dati dalla CPU alle memorie e viceversa.
Il video, la tastiera, la stampante, il plotter, il drive ecc., sono gli
esempi più noti di dispositivi periferici.
In molti casi il trasferimento dei dati dalla CPU alle periferiche e alle
memorie deve rispettare procedure ben precise e codificate. Le tecniche
di scambio dei dati tra il sistema e le periferiche possono essere
classificate in tre distinte categorie:
•
Polling
•
Interruzione
•
DMA
L’utilizzazione di una tecnica piuttosto che un'altra richiede una attenta analisi delle procedure software e dei dispositivi hardware da
adottare al fine di valutare quale sia la tecnica che contribuisca ad
aumentare l’efficienza del sistema a microprocessore e che meglio si
adatti alle specifiche di progetto
Di seguito sono presi in considerazioni gli aspetti principali delle tecniche di trasferimento dati tra la CPU e le periferiche.
Polling (interrogazione ciclica)
È la tecnica più semplice per lo scambio di informazioni tra microprocessore e le periferiche perché è essenzialmente software. Prevede che
la CPU sotto il controllo di un programma ben definito, controlli continuamente e in modo ciclico lo stato delle periferiche ad essa
collegate.
In pratica la CPU effettua un test sulla condizione della periferica
verificando il livello di un bit di flag secondo il diagramma di flusso
della figura di seguito riportata.
9
Se il flag è attivo (generalmente a livello logico basso), la CPU esegue
un programma di servizio al termine del quale verifica lo stato del flag
della seconda periferica e così via.
Naturalmente la CPU passa immediatamente a controllare il flag del la
seconda periferica se quella interpellata non ha bisogno dell'attenzione
della CPU. Questa tecnica di gestione delle periferiche risulta onerosa
per la CPU perché essa è continuamente impegnata a verificare lo stato
dei bit di flag ed inoltre, essendo l'interrogazione ciclica, non si ha
la possibilità di stabilire una gerarchia tra le richieste di servizio
avanzate contemporaneamente da più periferiche
La tecnica del polling risulta altresì poco efficiente perché se una
periferica appena interrogata ha bisogno di essere servita dalla CPU deve
aspettare, prima di essere nuovamente interrogata, che la CPU verifichi
io stato di tutte le rimanenti periferiche, e soddisfi le eventuali
richieste di servizio da esse avanzate.
10
Interruzione (o Interrupt)
Per superare le limitazioni della tecnica del polling, la gestione dello
scambio di informazioni tra CPU e periferiche è spesso affidata alla
tecnica dell'interruzione, la quale prevede che sia la periferica, a
differenza di quanto avviene ne polling, ad avanzare la richiesta di
servizio alla CPU. In tal modo la periferica può interrompere la CPU in
qualsiasi momento (vedi figura), in relazIone alle esigenze specifiche,
senza dover attendere i tempi dell’interrogazione ciclica.
Tutte le CPU sono provviste, a seconda della complessità della loro
architettura di uno o più ingressi predisposti per ricevere il segnale di
richiesta di interruzione da parte della periferica.
Quando la CPU riceve il segnale di richiesta di interruzione interrompe,
se risultano soddisfatto determinate condizioni, l'esecuzione del programma principale (MAIN) e manda in esecuzione un sottoprogramma (routine
o subroutine) predisposto per fa gestione di alcune situazioni di
emergenza per le quali la periferica richiede l'attenzione della CPU. Al
termine della routine di servizio la CPU riprende esecuzione de)
programma principale.
L’interruzione è dunque la sospensione temporanea del programma
principale affinché la CPU possa evadere la richiesta di servizio
avanzata dalla periferica.
MAIN
Richiesta di
interrupt
Routine di servizio
alla richiesta di interruzione
11
DMA (Direct Memory Access – accesso diretto in memoria)
Nella tecnica DMA la periferica richiede alla CPU il controllo dei BUS
per gestire in modo autonomo, senza cioè l’intervento del
microprocessore, il trasferimento dei dati con le memorie. In pratica
nella tecnica DMA un dispositivo di supporto, detto DMA controller,
regola il flusso dei dati dalla periferica alla memoria e viceversa. La
tecnica DMA è utilizzata quando bisogna gestire i trasferimenti di
blocchi di dati ad alta velocità perché, a differenza di quelli gestiti
da programma, non sono necessarie operazioni di lettura e scrittura.
BUS REQUEST
BUS ACK
C.P.U.
MEMORIA
Dispositivo
PERIFERICA
I/O
DMA
DATI
INDIRIZZI
Di particolare significato risultano le due linee di bus request e bus
acknoweledge che consentono la gestione del DMA.
MICROCONTROLLORI E PLC
Con il termine Microcontrollore (microcontrollor) si intende comunemente
un sistema a microprocessore integrato su un unico chip, che comprende,
oltre alla CPU, una memoria di programma, solitamente di sola lettura
(PROM, EPRCM o EEPROM), una memoria RAM, generalmente di dimensioni
ridotte, per i risultati intermedi dell'elaborazione e per lo stack e
periferici di I/O) vari (porte seriali e/o parallele, contatori, timer
ecc.); per quanto appena esposto questi circuiti integrati vengono anche
detti microcomputer single chip.
Con queste caratteristiche, dovrebbe essere evidente che i
microcontrollori sono stati concepiti soprattutto per applicazioni
industriali di controllo, in cui il programma di gestione, una volta
messo a punto non ha più necessità di essere modificato (o di esserlo
raramente). Sono le applicazioni che gli americani chiamano “embedded”,
cioè incorporate in prodotti e apparati finiti, che possono andare dagli
12
elettrodomestici intelligenti, ai sistemi di comunicazione o sicurezza,
alla strumentazione, all'automazione in campo automobilistico, ecc
In questo senso si vogliono qui ricordare ad alcuni microcontrollori
particolarmente diffusi quali la famiglia PIC (il 16C84 costituisce
importante elemento delle PlayStation), la famiglia ST o le famiglie
prodotte da Motorola, Siemens e da diversi altri importanti produttori
che hanno progettato e realizzati microcontrollori dedicati a loro
applicazioni.
I microcontroller PIC (acronimo per Programmable. Integrated Controller)
si distaccano dalla struttura di un microprocessore classico, essenzialmente perché sono delle CPU RISC (Reduced InsLrucLion Set
Computing,
elaborazione con insieme di istruzioni ridotto) basate su una struttura
del tipo Harward (dall'Università dove è stata sviluppata), che si
distingue dalla macchina di Von Neuman classica per avere memoria
programma e memoria dati (e relativi bus) separati. La filosofia RISC
consiste sostanzialmente nel prevedere poche e semplici istruzioni, tutte
della stessa lunghezza e (possibilmente) tutte richiedenti lo stesso
numero di cicli macchina sta per il fetch che per l'esecuzione.
Questa caratteristica unita alla separazione fisica dei canali lungo cui
fluiscono istruzioni e dati, permette di ottenere una sovrapposizione
(Pipelining) delle fasi di Fetch di un'istruzione con quella di esecuzione della precedente “senza buchi" e quindi in modo molto più
efficiente di quello che, per esempio, si ha in termini di velocità
complessiva dell'elaborazione nei microprocessori della Famiglia 8086,
dove istruzioni diverso hanno tempi diversi sia di fetch che di
esecuzione.
Da un punto di vista delle applicazioni di potenza in impianti
industriali e civili hanno avuto larga diffusione i PLC, Controllori
Logici Programmabili, che al pari dei microcontrollori hanno la
caratteristica della semplice riprogrammabilità per ottenere le più
svariate funzioni attraverso le linee (in genere a 24 (v) ed in numero
variabile da modello a modello) di segnali I/O.
13
PAROLE CHIAVE
14
15