Microprocessori, Microcontrollori
e DSP (Digital Signal Processors)
•
•
•
•
Il microprocessore è un dispositivo integrato digitale che può essere programmato con
una serie di istruzioni per effettuare una specifica funzione sui dati.
Connesso a una memoria ed a dispositivi per scambiare dati con l’esterno costituisce la
struttura tipica di un elaboratore (computer).
Il microprocessore viene spesso anche utilizzato in sistemi integrati per scopi di
controllo o di monitoraggio di macchine, di motori, ecc. sistemi che assumono in questo
caso il nome di microcontrollori.
I DSP (Digital Signal Processor) sono dispositivi integrati molto simili, dedicati
espressamente all’acquisizione ed elaborazione di segnali.
Come sopra definito un microprocessore è un componente integrato che contiene
l’intera CPU di un computer.
Ma l’uso dei microprocessori non è limitato solo ai computers e alle potentissime
workstations, in quanto essi vengono ampiamente impiegati all’interno delle
periferiche come stampanti e disk drivers, e in moltissime applicazioni per il
controllo di macchine, motori, processi, elaborazione di segnali e quindi
dovunque sia conveniente effettuare l’elaborazione per via digitale, utilizzando
un hardware programmabile.
I microprocessori dedicati espressamente al controllo sono chiamati
microcontrollori. Poiché le grandezze sulle quali devono operare sono in genere
in forma analogica, spesso già contengono al loro interno anche un multiplexer,
un S/H , un convertitore A/D e/o circuiti per pilotare attuatori all’uscita.
Una classe speciale di sistemi integrati utilizzanti microprocessori sono i DSP,
studiati per facilitare le operazioni di elaborazione di segnali.
1
Diagramma a blocchi di un sistema di elaborazione dati
(computer)
Memoria
RAM, ROM
hard disk
CPU
microprocessore
Porte di
input
Porte di
output
bus indirizzi
bus dati
bus controlli
Una porta è un’interfaccia fisica, paragonabile ad una finestra, attraverso la quale
i dati vengono scambiati con le periferiche esterne.
I blocchi funzionali sono interconnessi attraverso tre bus:
-Il bus indirizzi (Address bus) è una “strada” a senso unico, attraverso la quale il
microprocessore invia l’indirizzo della locazione di memoria o del periferico con
il quale vuole colloquiare. Le dimensioni del bus sono definite dal numero di
linee: ad es. nei primi microprocessori si utilizzavano 16 linee, con le quali si
potevano individuare 216 = 65536 locazioni diverse. Il Pentium usa 32 linee di
indirizzo.
-Il bus dati (Data bus) è una strada a due sensi, sulla quale i dati da elaborare o le
istruzioni da eseguire sono trasferite al microprocessore, oppure i risultati ottenuti
sono inviati all’esterno o alla memoria. Il bus dati può essere ampio (a seconda
del processore) da 8 bits a 64 bits.
-Il bus controlli (Control bus) è usato dal microprocessore per coordinare le
operazioni: specificare se un trasferimento dati è un’operazione di lettura o
scrittura e in quale istante va eseguito, inserire stati di attesa (wait) per ritardare
alcune operazioni e prevenire conflitti di occupazione del bus dati da parte di
dispositivi diversi che tentassero di inviare dati contemporaneamente sul bus.
2
Architettura di un microprocessore
•
•
•
Ogni microprocessore contiene diverse unità funzionali, ciascuna con un suo compito.
L’insieme di queste unità, la loro funzione e la loro organizzazione, viene definito
l’architettura del microprocessore.
Tre elementi fondamentali di ogni architettura sono:
– ALU (Arithmetic Logic Unit)
– Register array
– Control Unit
ALU
Register
Array
Control unit
-L’ALU (Arithmetic Logic Unit) è l’unità la quale, comandata dalla Control unit,
esegue le operazioni aritmetiche come somme e sottrazioni o logiche quali NOT,
AND, OR. I dati su cui operare sono forniti dalla Register Array.
-La Register Array è un insieme di elementi di memoria (registri) in cui, durante
l’esecuzione di un programma, i dati e gli indirizzi su cui si opera, così come i
risultati delle operazioni, sono momentaneamente immagazzinati. Alcuni registri
sono di tipo “general purpose”, cioè possono essere usati dal microprocessore per
qualsiasi scopo definito dal programma, altri sono dedicati a specifiche funzioni.
-La Control Unit ha lo scopo di processare le istruzioni di programma. Fornisce
le informazioni di temporizzazione e i segnali di controllo per trasferire i dati da e
verso l’ esterno e per sincronizzare l’ esecuzione delle istruzioni.
3
La programmazione di un microprocessore
Assembly
language
Engl. like
Assembler
High level
language
Compiler
Machine
language
- Ogni microprocessore lavora con un set di istruzioni formulato dal progettista.
Ogni istruzione consiste in una stringa binaria che è decodificata dal
microprocessore prima di essere eseguita. Le istruzioni in codice binario sono
dette linguaggio macchina (machine language)
- Per semplificare il compito di programmazione si è creato un linguaggio detto
Assembly (linguaggio di basso livello) in cui le istruzioni sono di tipo English
like, (mnemonics o op-codes). Ogni microprocessore ha il suo specifico
linguaggio Assembly
-Un programma detto assembler converte le istruzioni del linguaggio Assembly
in linguaggio macchina.
- Linguaggi di livello elevato (come il BASIC, FORTRAND, Pascal, C ecc.)
sono indipendenti dal tipo di processore e necessitano di un programma apposito
detto Compiler per essere tradotti in linguaggio macchina.
- Il vantaggio di un linguaggio di alto livello è di essere universale, mentre il
linguaggio assembly permette in genere un’esecuzione più veloce e un controllo
più diretto del processo.
4
Famiglie di microprocessori
Intel:
– 4004
– 8008
– 80X86
•
•
•
•
•
80286
80386
80486
Pentium, Celeron
Pentium I,II,III IV
Motorola:
–
680X0
•
•
•
•
•
68020
68030
68040
68060
Power PC
– MPC601
– MPC750
Intel e Motorola hanno dato luogo alle due famiglie più note di microprocessori,
quella Intel impiegata in tutti i Personal di tipo IBM e compatibili, quella
Motorola nei computers Apple Macintosh.
Il primo microprocessore fu l’ Intel 4004, messo sul mercato nel 1971, con un
data bus di soli 4 bit. A metà degli anni 70 fu introdotto il 8008 a 8 bit, ma la
famiglia 80X86 che con la sua evoluzione porterà sino all’ attuale Pentium vide
la luce nel 1978. Il Pentium ha un bus indirizzi a 32 bit e un bus dati a 64 bit
Il Motorola 68000 fu il primo microprocessore a 16 bit introdotto da Motorola nel
1979 e fu il capostipite della fortunata famiglia che si è evoluta sino ai giorni
nostri.
5
Sistemi di Interconnessione
PE (Processing Elements): Unita’ che si scambiano le informazioni
Punto a punto
Collegamento
Multipunto
Collegamento
Monodirezionale
Bidirezionale
6
Tipo di cammino
Path: cammino
dedicato
anello
condiviso
Interconnessione
completa
Bus
7
Trasferimento dati tipo seriale o parallelo
Computer
Computer
0 1 0 1 1 0 0 0 1 0
1
1
0
1
1
0
0
1
Modem
seriale
Printer
Parallelo
Il trasferimento di un dato puo’ avvenire in forma seriale, cioe’ un bit dopo
l’altro, ad ogni colpo di clock, su un singolo conduttore, oppure in forma
parallela, dove tutti i bit di un dato vengono trasmessi contemporaneamente, ad
ogni colpo di clock, su linee separate. Il trasferimento di tipo parallelo e’ molto
piu’ veloce, ma richiede di disporre di un numero di conduttori molto elevato.
Tipicamente si preferisce un trasferimento parallelo dove e’ necessaria grande
velocita’ e si puo’ disporre spazio per multiplare i conduttori.
8
Protocolli logici
Definizioni:
• Master: il PE che inizia un trasferimento
• Slave: un PE che e’ coinvolto nel trasferimento
• Protocollo di comunicazione: Insieme delle regole che permettono lo
scambio di informazione senza rischio di incomprensioni
9
Protocolli Logici - Diagrammi temporali
Ogni evento ha una sorgente che puo’ essere un fronte od un
livello, o l’azione combinata di due eventi contemporanei
A
B
C
Master: il PE che inizia un trasferimento
Slave: un PE che e’ coinvolto nel trasferimento
Nell’esempio si mettono in evidenza tutte e tre le possibilita’, indicando la
simbologia che utilizzeremo per rappresentare la dipendenza temporale tra i
diversi eventi.
La transizione (fronte) di A tra 0 ed 1 e’ la “sorgente” per l’evento transizione di
C da 1 a 0.
Il livello 0 di C e’ la sorgente della transizione di B tra 0 ed 1.
La contenmporanea presenza (AND) del livello 1 in B e del fronte di discesa tra 1
e 0 in A e’ l’evento che provoca la transizione da 0 ad 1 di C
10
Protocollo punto a punto sincrono
DATO
VALID
tvalid
tnext
tvalid e tnext sono tempi fissi
Dati e segnale di VALID emessi dal master, non vi e’ nessuna conferma
da parte dello slave
Nel caso di comunicazioni punto-punto si ha una sorgente che vuole inviare delle
informazioni ad un’unica destinazion.
La sorgente invia I dati ma la destinazione deve sapere quando questi sono validi.
Occorre quindi che la sorgente invii anche un segnale di validazione.
Il segnale di validazione deve essere inviato in un tempo successivo all’aver
posto i dati sulle linee, con un ritardo che assicuri che alla destinazione i dati
siano ormai stabili.. Per poter poi inviare un dato successivo occorre che
comunque i dati permangano stabili per un tempo sufficiente a far si’che
vengano acquisiti e, passato questo tempo tvalid, avvertire la destinazione che il
dato verra’ tolto prima di cambiarlo. Per permettere di cambiare il dato sara’
necessario che passi il tempo tnext, dopo di che potra’ iniziare un nuovo ciclo.
Poiche’ in questo esempio e’ il master che determina i tempi tvalid etnext,
occorrera’ che questi siano congruenti con il modo di funzionamento piu’ lento
del destinatario. Inoltre poiche’ in questo protocollo non vi e’ nessun segnale di
risposta da parte del destinatario il master non sa se il trasferimento e’ andato a
buon fine.
11
Protocollo punto-punto asincrono a 4 fronti
DATO
VALID
ACK
In questo caso quando la destinazione riceve il dato invia un segnale di
riconoscimento (acknowledge ACK) alla sorgente in formandola che il
trasferimento e’ andato a buon fine.
Fasi del trasferimento :
1. DATI VALIDI (fronte di salita di VALID generato dal master)
2. DATI ACCETTATI (fronte di salita di ACK generato dallo SLAVE)
3. DATI NON PIU’ VALIDI (discesa di VALID)
4. SLAVE PRONTO PER UN ALTRO CICLO ( discesa di ACK)
12
Ciclo asincrono di lettura
DATO
REQUEST
VALID
Nel caso di un ciclo di lettura il master deve inviare la richieata dati (REQUEST),
lo slave pone i dati sulla via di comunicazione e informa quando sono pronti per
essere letti (segnale VALID). Quando il master li ha ricevuti informa
dell’avvenuto trasferimento togliendo il segnale di REQUEST) e lo slave informa
che I dati saranno non piu’ validi portando a 0 VALID>
13
Protocollo advanced read/write
DATO
READ/WRITE
(scrittura)
(lettura)
STROBE
ACK
Il segnale READ/WRITE indica sin dall’inizio quale tipo di trasferimento si
vuole fare, (“0” scrivi, “1” leggi) e quindi lo SLAVE puo’ predisporsi subito alla
richiesta.
Azioni del protocollo di scrittura:
1) Dati validi ( fronte di salita di STROBE)
2) Dati accettati (fronte di salita di ACK)
3) Dati non piu’ validi (fronte di discesa di STROBE)
4) Slave pronto per un altro ciclo (fronte di discesa di ACK)
Ciclo di lettura:
1) Richiesta dati (fronte di salita di STROBE)
2) Dati validi (fronte di salita di ACK)
3) Dati accettati (fronte di discesa di STROBE)
4) Dati non piu’ validi (fronte di discesa di ACK)
14
Tre bus
DATI
ADD
COMANDI
15
Indirizzamento codificato
D
E
C
O
D
E
R
ADD
ADD
ADVAL
ADVAL
16
Indirizzamento Misto
D
E
C
O
D
E
R
SELECT n
SELECT 2
SELECT 1
K
S
1
S
2
S
3
M
M-K
17
Protocollo multislave asincrono a 4 fronti
ADD
DATA
ADDSTB
ADDACK
DATASTB
DATACK
Nei protocolli multislave occorre aggiungere anche l’informazione di indirizzo
dello slave che si intende coinvolgere nel trasferimento.Questo puo’ essere fatto
in due fasi successive, per ciascuna delle quali si utilizzano I protocolli prima
descritti.
Poiche’ogni fase richiede quattro fronti, in totale occorrono 8 fronti, il che
rallenta la velocita’ di trasferimento.
18
Protocollo sincrono per gli indirizzi, asincrono
per i dati
ADD
DATA
ADDSTB
DATASTB
ACK
Il protocollo precedente puo’ essere semplificato utilizzando una fase sincrona
per gli indirizzi, che non attende l’acknowledge prima di iniziare la fase di
trasferimento dati.
Ecco I passi descritti:
1. INDIRIZZI VALIDI (fronte di salita di ADDSTB)
2. DATI VALIDI (fronte di slita di DATASTB)
3. DATI ACCETTATI( fronte di salita di ACK)
4. DATI NON PIU”VALIDI (fronte di discesa di DATASTB)
5.INDIRIZZI NON PIU” VALIDI (fronte di discesa di ADDSTB)
6. SLAVE PRONTO PER UN ALTRO CICLO ( fronte di discesa di ACK)
Questo protocollo e’ molto usato a livello di standard industriali
Il parametro utilizzato per misurare le prestazioni di un sistema e relativo
protocollo e’ il throughput, definito come numero delle informazioni scambiate
nell’unita’ di tempo: e’ dato dal prodotto tra W (dimensione del canale= numero
di bit trasmessi contemporaneamente) per B (numero di trasferimenti al secondo).
19