Microprocessori, interconnessioni e protocolli

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
Register
ALU
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
Motorola:
Intel:
– 4004
– 8008
– 80X86
•
•
•
•
•
80286
80386
80486
Pentium, Celeron
Pentium I,II,III IV
–
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
Monodirezionale
Collegamento
Bidirezionale
6
Tipo di cammino
Path: cammino
dedicato
anello
condiviso
Interconnessione
completa
Bus
7
Trasferimento dati tipo seriale o parallelo
0 1 0 1 1 0 0 0 1 0
Computer
Computer
1
1
0
1
1
0
0
1
Modem
seriale
Printer
Parallelo
Il trasferimento di un dato può avvenire in forma seriale, cioè 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 è
molto più veloce, ma richiede di disporre di un numero di conduttori molto
elevato. Tipicamente si preferisce un trasferimento parallelo dove è
necessaria grande velocità e si può 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 è nessuna conferma
da parte dello slave
Nel caso di comunicazioni punto-punto si ha una sorgente che vuole inviare
delle informazioni ad un’unica destinazione.
La sorgente invia i dati ma la destinazione deve sapere quando questi sono
validi e debbono essere letti. 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 i dati permangano
stabili per un tempo sufficiente a far si’ che vengano acquisiti e, passato
questo tempo tvalid, occorre avvertire la destinazione che il dato verrà tolto
prima di cambiarlo. Per permettere di cambiare il dato sarà necessario che
passi il tempo tnext, dopo di che potrà iniziare un nuovo ciclo.
Poiché in questo esempio è il master che determina i tempi tvalid e tnext,
occorrerà che questi siano congruenti con il modo di funzionamento più
lento del destinatario. Inoltre poiché in questo protocollo non vi è nessun
segnale di risposta da parte del destinatario il master non sa se il
trasferimento è 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 informandola che il
trasferimento è 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 più validi portando
VALID a 0.
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 può 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 più 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 più validi (fronte di discesa di ACK)
14
Tre bus
DATI
ADD
COMANDI
Nel caso di più slaves, occorre che il master sia in grado di indirizzare la
richiesta di comunicazione allo slave prescelto. Occorre quindi che siano
presenti tre insiemi di linee di BUS: il BUS indirizzi, su cui il master invia
l’indirizzo che deve essere riconosciuto dal solo slave con il quale vuole
comunicare; il BUS dati e il BUS dei controlli, su cui viaggiano le
informazioni che presiedono al protocollo di comunicazione.
15
Indirizzamento codificato
D
E
C
O
D
E
R
ADD
ADD
ADVAL
ADVAL
Quando il master invia un nuovo indirizzo occorre che avverta gli slaves
che l’indirizzo è valido e deve essere valutato. Questo viene fatto con un
segnale ADVAL che indica che un nuovo indirizzo è stato posto sul BUS
indirizzi e che, essendo ormai stabile, deve essere letto. Ogni slave ha un
decoder che, abilitato dal segnale ADVAL, confronta l’indirizzo con il
proprio e decide se è il prescelto per la comunicazione.
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
Nel caso di più slaves ciascuno con diverse locazioni indirizzabili (ad es.
più chip di memoria, ciascuno dei quali permette di indirizzare le diverse
parole in esso contenute) occorre innanzitutto che venga indirizzato il chip
prescelto, e poi la postazione di memoria all’interno del chip.
Per questo si può utilizzare un’indirizzamento misto come in figura. Delle
M cifre binarie dell’indirizzo le prime K vengono utilizzate per indirizzare
il chip prescelto ( un decoder decodifica l’indirizzo e porta all’1 logico una
sola linea di chip select, quella che corrisponde all’integrato prescelto). Le
altre M-K cifre indicano l’indirizzo della locazione di memoria cui si vuole
accedere, vengono portate a tutti gli integrati ma vengono riconosciute solo
dal chip che ha la linea “chip select” attiva.
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
può essere fatto in due fasi successive, per ciascuna delle quali si utilizzano
i protocolli prima descritti.
Poiché ogni fase richiede quattro fronti, in totale occorrono 8 fronti, il che
rallenta la velocità di trasferimento.
18
Protocollo sincrono per gli indirizzi, asincrono
per i dati
ADD
DATA
ADDSTB
DATASTB
ACK
Il protocollo precedente può essere semplificato utilizzando una fase
sincrona per gli indirizzi, che non attende l’acknowledge degli address
prima di iniziare la fase di trasferimento dati. L’acknowledge dei dati
assicura che comunque il trasferimento è andato a buon fine.
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 è molto usato a livello di standard industriali
Il parametro utilizzato per misurare le prestazioni di un sistema e relativo
protocollo è il throughput, definito come numero delle informazioni
scambiate nell’unità di tempo: è dato dal prodotto tra W (dimensione del
canale= numero di bit trasmessi contemporaneamente) per B (numero di
trasferimenti al secondo).
19