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