Elettronica Digitale (II Parte) 10-11_10 1 ELETTRONICA DIGITALE (II Parte) (10) 24/01/11 RIEPILOGO CORSO
Elettronica Digitale (II Parte) 10-11_10 2 PROGRAMMA Presentazione del corso e concetti generali Dispositivi logici: PLA, PAL, FPGA, Gate Array, Standard cell Architetture dei microprocessori e (micro)calcolatori Unità del calcolatore:processore e memoria. Registri dedicati e di uso generale Collegamenti tra unità: bus Livelli di astrazione Linguaggio macchina o assembly language Funzionamento del processore:fetch,decode, execute Tipi di istruzione mecchina Formalismo RTL Classi di istruzioni Modi di indirizzamento Salti condizionati Architetture di I/O Istruzioni e registri di I/O Lo stack e il suo funzionamento Sistema di I/O: bus dati, indirizzo e controllo, istruzioni di I/O Polling, Interrupt e DMA Cenni sui problemi di sincronizzazione Porte seriali e parallele Sistema operativo Presentazione del processore commerciale Progetto del microcontrollore basato sul microprocessore commerciale prescelto
Elettronica Digitale (II Parte) 10-11_10 3 Segnale Binario (segue)
Elettronica Digitale (II Parte) 10-11_10 4 Logic Devices ASIC (Application Specific Integrated Circuit) Standard Cell Gate Array PLD (Programmable Logic Devices) SPLD (Simple PLD) PLA (Programmable Logic Array) PAL (Programmable Array Logic) GAL (Generic Array Logic) CPLD (Complex PLD) FPGA Programmate durante la produzione nella Fab Programmabili sul campo Re/Programmabili nel circuito
Elettronica Digitale (II Parte) 10-11_10 5 Strutture PLD Programmable Logic Array (PLA) Programmable Array Logic (PAL)
Elettronica Digitale (II Parte) 10-11_10 6 FPGA: Architettura
Elettronica Digitale (II Parte) 10-11_10 7 FPGA: Logic Element (Block)
Elettronica Digitale (II Parte) 10-11_10 8 FPGA : motivi delle scelte Riprogrammabilità anche parziale Funzionalità volatili e non volatili: SRAM, FLASH, FUSE e MPGA Tool molto efficienti (HDL) Prototipi di test Ecc.
Elettronica Digitale (II Parte) 10-11_10 9 Unità del Calcolatore Unità funzionali fondamentali del calcolatore.
Elettronica Digitale (II Parte) 10-11_10 10 Microprocessore
Elettronica Digitale (II Parte) 10-11_10 11 Collegamento tra Unità - Bus Calcolatore strutturato intorno a un solo bus.
Elettronica Digitale (II Parte) 10-11_10 12 Memoria Cache e Centrale Struttura della memoria e relazione con il processore.
Elettronica Digitale (II Parte) 10-11_10 13 Memoria Cache e Centrale Località temporale Frequenza temporale Località spaziale indirizzi vicini (dati, vettori…) Probabilità di accesso frequente a generazione semplificata indirizzi Trasferimento di blocchi di memoria da memoria centrale a memoria veloce (cache)
Elettronica Digitale (II Parte) 10-11_10 14 Il microcalcolatore CPU Decoder Flash RAM ADD (n) ADD (n-1) nCS0 nCS1 nOE nWE Data nOE nWE nOE nWE
Elettronica Digitale (II Parte) 10-11_10 15 livello 1 logica digitale livello 3 insieme di istruzioni livello 6 linguaggio applicativo livello 4 sistema operativo livello 5 linguaggio macchina livello 2 microarchitettura Schema Riassuntivo compilazione assemblaggio chiamata a supervisore e interruzione esecuzione (cablata o microprog.) hardware
Elettronica Digitale (II Parte) 10-11_10 16 Istruzione e linguaggio macchina L’istruzione macchina è il compito elementare eseguibile da parte del processore. Essa si distingue in forma simbolica e numerica: –simbolica: come viene scritta da parte del programmatore, in modo leggibile e facilmente interpretabile –numerica (o binaria): come è rappresentata in memoria nel programma in esecuzione, in forma adatta al processore Ogni processore ha uno specifico insieme (o repertorio) di istruzioni macchina che, insieme alle direttive, sono alla base del linguaggio macchina
Elettronica Digitale (II Parte) 10-11_10 17 Assemblatore Il linguaggio macchina in forma simbolica è chiamato anche linguaggio assemblatore o assembly language. L’assemblatore (assembler) è uno strumento SW che esamina il programma in linguaggio macchina simbolico e, se non ha errori, lo traduce (o assembla) generandone la forma numerica corrispondente L’assemblatore è legato alle caratteristiche del processore
Elettronica Digitale (II Parte) 10-11_10 18 Modello di Processore Modello generico di processore, vale per qualunque processore ragionevole.
Elettronica Digitale (II Parte) 10-11_10 19 Ciclo di Prelievo-Esecuzione Il processore preleva (fetch) da memoria centrale l’istruzione macchina da eseguire Il processore decodifica (decode) l’istruzione, cioè la analizza e ne determina il significato. Il processore esegue (execute) l’istruzione, elaborando i dati opportuni e producendo il risultato: –i dati, o si trovano già nei registri o vanno caricati da memoria –il risultato, o viene lasciato in un registro o viene memorizzato
Elettronica Digitale (II Parte) 10-11_10 20 Struttura della Memoria
Elettronica Digitale (II Parte) 10-11_10 21 Struttura della Memoria Fondamentalmente la memoria del calcolatore è costituita da una sequenza (vettore) di parole (o celle, o locazioni) binarie. Ogni parola è una stringa (successione) di un numero fissato di bit: –8 bit:carattere o byte –16 bit:parola (ordinaria)(word) –32 bit:parola doppia(double or long word) –64 bit:parola quadrupla(quad word) Ogni parola ha un contenuto o valore, che è la sequenza di bit memorizzata, e un indirizzo (address), che serve per identificare la parola.
Elettronica Digitale (II Parte) 10-11_10 22 Dato in Memoria
Elettronica Digitale (II Parte) 10-11_10 23 Indirizzamento di Memoria In genere l’elemento di memoria minimo che il processore può leggere (caricare) o scrivere (memorizzare) è il carattere, cioè un byte (8 bit). Ne viene che quasi sempre l’indirizzo di memoria si riferisce al byte e ogni byte è numerato progressivamente, da 0 in poi. Allineamento degli schemi: l’indirizzo è multiplo della lunghezza della parola, misurata in byte. Esempio: la parola ordinaria (due byte) può avere solo indirizzo di valore pari: 0, 2, 4, ecc.
Elettronica Digitale (II Parte) 10-11_10 24 Istruzione in Memoria L’istruzione macchina, in forma numerica cioè eseguibile da parte del processore, è anch’essa contenuta in una o più parole di memoria consecutive, come il dato. Il numero di parole consecutive occupate da un’istruzione macchina dipende: –da come l’istruzione è codificata in bit –da quanto l’istruzione è complessa e lunga Spesso l’istruzione occupa una sola parola. Istruzioni di base Trasferimento dati tra memoria e registri interni del processore Operazioni logiche e aritmetiche su dati Sequenziamento istruzioni/ funzioni di controllo Trasferimento dati tra organi di I/O e registri interni
Elettronica Digitale (II Parte) 10-11_10 25 Forma Simbolica Il programmatore denota l’istruzione macchina in forma simbolica, facilmente leggibile, come per esempio: NOMEarg1, arg2, …commento Il nome (o codice mnemonico) indica l’operazione: MOVE (carica, memorizza o copia dato), ADD (addiziona dato), SUB (sottrai), ecc Gli elementi arg1, arg2, ecc, sono gli argomenti e indicano i dati da elaborare o dove scrivere il risultato, o anche, nelle istruzioni di salto, dove reperire la prossima istruzione da eseguire. Argimenti di tipo sorgente (dato), destinazione (dato) e destinazione di salto (indirizzo) …
Elettronica Digitale (II Parte) 10-11_10 26 Argomenti: Sorgente-Destinazione e numero Nel linguaggio macchina della maggior parte delle famiglie di processori, gli argomenti sorgente precedono quello destinazione. Prototipi tipici: NOME arg_sorg1, arg_sorg_2, arg_dest NOME arg_sorg, arg_dest NOME arg_sorg, arg_sorg_e_dest I linguaggi macchina si dividono in: –linguaggi a due argomenti: le istruzioni che fanno operazioni con due operandi lo sovrascrivono a uno degli operandi, il quale va dunque perso –linguaggi a tre argomenti: le istruzioni non modificano gli operandi e scrivono altrove il risultato
Elettronica Digitale (II Parte) 10-11_10 27 Tipi di istruzione Tre argomenti: ADD R1, R2, R3 –sovrascrivendone addiziona i contenuti di R1 e R2 e scrivi la somma in R3, il contenuto precedente –R1 e R2 sono sorgente, R3 è destinazione Due argomenti: ADD R1, R2 –addiziona i contenuti di R1 e R2 e scrivi la somma in R2, sovrascrivendone il contenuto precedente –R1 è sorgente, R2 è sia sorgente sia destinazione Un argomento: DEC R1 –decrementa il contenuto di R1 –R1 è sia sorgente sia destinazione Un argomento (salto): JMP 10 –sposta il flusso di esecuzione del programma all’istruzione collocata all’indirizzo è destinazione di salto
Elettronica Digitale (II Parte) 10-11_10 28 Formalismo RTL Register transfer language: è un formalismo notazionale di specifica per istruzioni, di tipo matematico, formale e preciso, per specificare che cosa faccia un’istruzione. Somiglia al costrutto di assegnamento a variabile, come si trova in C, Pascal e simili.
Elettronica Digitale (II Parte) 10-11_10 29 Simbologia di Base Il numero decimale indica: –una costante numerica, da usare come dato –un indirizzo di memoria, da usare come riferimento a una parola di memoria Un identificatore simbolico, magari contenente un suffisso numerico, indica: –un nome di registro, come PC, SP o Ri (con suffisso i), il cui contenuto si usa come dato o come indirizzo –una costante numerica cui sia stato dato un nome simbolico, come per esempio si fa in C con #define, da usare come dato L’operatore freccia verso sinistra “ ” funziona in sostanza come operatore di assegnamento –destinazione valore origine valore –Tipicamente l’origine del valore è una costante, un numero contenuto in un registro, una parola di memoria o un’espressione aritmetica tra oggetti di tale genere. :
Elettronica Digitale (II Parte) 10-11_10 30 Classi di istruzioni Istruzioni di trasferimento: –caricamento, memorizzazione e copia Istruzioni aritmetiche e logiche: –di base: addizione, sottrazione, cambio segno, AND, OR, NOT, XOR, e poco altro –ausiliarie: scorrimento, rotazione, varie Istruzioni di ingresso e uscita: –lettura o scrittura di dato da o su periferica Istruzioni di confronto: –confronto tra due dati o di un dato con zero Istruzioni di controllo del flusso di esecuzione del programma (salto) Istruzioni di controllo del processore: –gestione del meccanismo di interruzione
Elettronica Digitale (II Parte) 10-11_10 31 Modo di Indirizzamento Il modo di indirizzamento è un insieme di regole secondo cui indicare nell’istruzione macchina come: –reperire il dato da elaborare o la posizione dove andare a scrivere il risultato dell’elaborazione – modo di dato –individuare la prossima istruzione da eseguire, quando non si deve andare di seguito (caso dell’istruzione di salto) – modo di istruzione In teoria, i modi di dato e di istruzione sono interscambiabili, ma ci sono alcuni usi prevalenti. I modi di indirizzamento sono essenziali nel dare flessibilità e generalità al linguaggio macchina. Se sono numerosi sono però anche complessi da gestire e complicano la descrizione del linguaggio stesso.
Elettronica Digitale (II Parte) 10-11_10 32 Modi di Indirizzamento (i.e. Indirizzo effettivo)
Elettronica Digitale (II Parte) 10-11_10 33 Bit di Esito Ciascun esito è rappresentato da un bit: –se il bit vale uno, l’esito associato è affermativo –altrimenti, l’esito associato è negativo Di norma i bit di esito sono collocati nel registro di stato, in posizioni prefissate. Le istruzioni macchina che producono esito aggiornano in modo automatico i bit di esito di loro pertinenza. Le istruzioni macchina di salto condizionato controllano il bit di esito di loro pertinenza per decidere se la condizione di salto sia vera o falsa, e se saltare o meno come conseguenza.
Elettronica Digitale (II Parte) 10-11_10 34 Tastiera + Video = Terminale Calcolatore dotato di bus singolo con unità processore e interfacce di I / O per tastiera e video.
Elettronica Digitale (II Parte) 10-11_10 35 STACK: Struttura e Terminologia Struttura della pila (STACK) di memoria.
Elettronica Digitale (II Parte) 10-11_10 36 L’assemblaggio Il programma macchina in forma simbolica si presenta come una successione di: –istruzioni macchina simboliche –direttive (pure simboliche) Il processo di assemblaggio deve in qualche modo definire dove (cioè in quali indirizzi) collocare programma e dati: –riconosce e trasforma le istruzioni in forma numerica, collocandole a indirizzi successivi –riconosce e interpreta le direttive Ci sono anche altre questioni da affrontare: –come definire costanti simboliche ed etichette –come risolvere le etichette in indirizzi numerici –come designare porzioni di memoria per dati
Elettronica Digitale (II Parte) 10-11_10 37 Sistema di Assemblaggio Il sistema GAS (GNU ASsembler) è un assemblatore generico, capace di riconoscere il linguaggio macchina di numerose famiglie di processori (Motorola, Intel, HP, ARM e altre). Le direttive e il formato generale simbolico di GAS sono comuni a tutti i linguaggi. GAS si specializza solo nel riconoscere i nomi delle istruzioni macchina, che variano secondo il processore commerciale specifico Formato di Linea
Elettronica Digitale (II Parte) 10-11_10 38
Elettronica Digitale (II Parte) 10-11_10 39 Periferiche Il processore scambia informazioni con le periferiche attraverso dei registri. Tipicamente: Control REGister; Status REGister; Data REGister; Questi registri sono generalmente “MAPPATI IN MEMORIA” ossia sono visti come locazioni di memoria nello spazio di indirizzamento
Elettronica Digitale (II Parte) 10-11_10 40 Schema di Interfaccia Componenti fondamentali dell’interfaccia di I/O (qui sola lettura) lato di periferica lato di calcolatore
Elettronica Digitale (II Parte) 10-11_10 41 Temporizzazione delle attività 1.Sincrona rispetto all’esecuzione del programma (Polling) 2.Asincrona rispetto all’esecuzione del programma (Interrupt) 3.Indipendente dall’esecuzione del programma (DMA)
Elettronica Digitale (II Parte) 10-11_10 42 Gestione delle periferiche Polling
Elettronica Digitale (II Parte) 10-11_10 43 Gestione delle Periferiche Interrupt Nella gestione mediante Interrupt è la periferica stessa a richiedere servizio mediante un apposito segnale. Il processore non deve interrogare periodicamente le periferiche. La gestione delle periferiche è ASINCRONA al programma nel senso che il programmatore non può prevedere quando ci sarà una richiesta di servizio
Elettronica Digitale (II Parte) 10-11_10 44 Gestione delle Periferiche Direct Memory Access (DMA) L’accesso diretto alla memoria consente (solo) di scambiare dati tra una periferica e la RAM senza l’intervento della CPU (Rigidità) Non viene perso del tempo di CPU nello scambio dei dati (la CPU continua ad eseguire il programma principale fino al prossimo cache miss) Necessita di hardware (complesso) aggiuntivo
Elettronica Digitale (II Parte) 10-11_10 45 Gestione delle priorità (HW) L’arbitro stabilisce qual’è l’interrupt a priorità più alta mettendo in uscita il codice corrispondente Viene quindi eseguita la routine relativa all’interrupt selezionato
Elettronica Digitale (II Parte) 10-11_10 46 Salvataggio del Contesto Tutti i sistemi di interruzioni richiedono, come minimo, il salvataggio del Program Counter (PC). Molti processori salvano in modo automatico molti dei registri interni. In questo modo la Routine di servizio può alterare i registri che verranno ripristinati, in modo automatico e molto veloce, con il contenuto originario prima che il controllo torni al programma principale. In altri casi, deve essere il programmatore a mettere in salvo (e.s. nello Stack) il contenuto dei registri che verranno usati dalla routine di servizio e a ripristinarli al suo termine.
Elettronica Digitale (II Parte) 10-11_10 47 Porta Parallela di Ingresso
Elettronica Digitale (II Parte) 10-11_10 48 Comunicazione Seriale: Rx CLK Tx CLK Rx DataInDataOut Rx 123 ……… n - 1n -12 CLK Rx ricostruisce la WORD andando a valutare il suo significato solo quando sono stati ricevuti tutti i bits di cui è composta
Elettronica Digitale (II Parte) 10-11_10 49 Ruolo del Sistema Operativo Normalmente il calcolatore è equipaggiato con un sistema operativo (SO). Il SO è un complesso di programmi che danno al calcolatore funzionalità minimali: –caricare e attivare uno o più programmi –gestire le unità funzionali di memoria e I/O –permettere l’esecuzione simultanea di due o più programmi (processi): concorrenza –permettere la compresenza di più utenti –garantire affidabilità e sicurezza del calcolatore.
Elettronica Digitale (II Parte) 10-11_10 50 Memoria Memoria interna o centrale o principale –ROM, PROM –RAM (SRAM, DRAM) Memoria esterna o ausiliaria –Dischi rigidi (magnetici, ottici, magneto-ottici) –Floppy –Nastri –Cassette
Elettronica Digitale (II Parte) 10-11_10 51
Elettronica Digitale (II Parte) 10-11_10 52 Tipologie di Memorie allo stato solido Volatili Non Volatili RAM (Random Access Memory) SRAM (Static RAM) Flip-Flop Statiche Velocissime Cella Grande Costo per Bit Taglio ~ 100 Kbit DRAM (Dynamic RAM) Capacità Dinamiche (Refresh) Veloci Cella piccola Costo per Bit Taglio ~ 100 Mbit ROM (Read Only Memory) Programmate in fonderia Costo per Bit EEPROM (Electrically Erasable Programmable ROM) MOS Floating Gate E-P Random Access R Lenta, E-P molto lenti Costo per Bit Masked ROM MOS Floating Gate Cancellabili mediante UV Fuse - Antifuse OTP (One Time Programmable) EPROM (Electrically Programmable ROM) Flash MOS Floating Gate P Random Access E a banchi R Lenta, P molto lenti, E lentissimo Costo per Bit Taglio ~ 100 Mbit SDRAM (Synchronous DRAM) Capacità Accesso a burst Self Refresh
Elettronica Digitale (II Parte) 10-11_10 53
Elettronica Digitale (II Parte) 10-11_10 54 Concetto di Gerarchia Si possono migliorare le prestazioni (la velocità) del calcolatore tramite il sistema di memoria, con il concetto di gerarchia di memoria: –diversi livelli di memoria, con tecnologie differenti in modo da ottenere un buon compromesso tra costo / capacità / prestazione (cioè rapidità di accesso) Qui l'attenzione è sul sistema di memoria cache, che ha lo scopo di rendere rapida la memoria. Il divario di prestazioni tra CPU e DRAM è cresciuto (vel. DRAM +22% anno, vel. CPU +50,100% anno) L’analisi sull’esecuzione dei programmi mostra che i riferimenti alla memoria godono di 2 proprietà: 1.Località spaziale: è altamente probabile che l’istruzione successiva sia contigua a quella che si sta eseguendo 2.Località temporale: poiché tutti i programmi hanno dei cicli in cui si fa altamente probabile che nel prossimo futuro venga di nuovo eseguita la stessa istruzione o si faccia riferimento allo stesso dato
Elettronica Digitale (II Parte) 10-11_10 55 Gerarchia La località suggerisce l’introduzione di una gerarchia nella memoria Al livello più alto ci sono i registri della CPU Al livello più basso le memorie di massa
Elettronica Digitale (II Parte) 10-11_10 56 Tre sottosistemi tecnologici: registri interni del processore per dati e indirizzi dove lavorano correntemente le istruzioni: alta velocità bassa capacità memoria primaria per programmi in esecuzione e dati in elaborazione corrente: serie di tecnologie, tutte elettroniche, veloci, capaci, volatili memoria secondaria per programmi e dati in deposito permanente o di uso differito: tecnologie, magnetiche od ottiche, lente, molto capaci, persistenti (ma di basso costo per bit memorizzato) Sistemi tecnologici
Elettronica Digitale (II Parte) 10-11_10 57 Modello di Processore
Elettronica Digitale (II Parte) 10-11_10 58 Comunicazione tra Unità Da unità di controllo a unità di calcolo: –ordini: comandi per eseguire l’istruzione macchina Da unità di controllo a interfaccia di bus: –ordini: comandi di bus implicati dall’istruzione macchina (lettura da memoria, scrittura in memoria, ecc) –riscontri: segnalazioni di bus relative all’andamento dell’operazione di memoria (attesa, ecc) Da unità di calcolo a unità di controllo: –istruzione macchina: codice operativo dell’istruzione macchina ed eventualmente altri elementi dell’istruzione stessa necessari per interpretarla compiutamente –esiti (codici di condizione): bit di esito e altri segnali utili per determinare il modo di esecuzione dell’istruzione macchina Da unità di calcolo a interfaccia di bus: –Indirizzi e scambio dati con I/O e memorie
Elettronica Digitale (II Parte) 10-11_10 59 Unità di Calcolo a un Bus Interno È la struttura base di unità di calcolo e trova ampio uso in numerosi processori. Con meno di così sarebbe difficile svolgere i compiti essenziali di solito richiesti al processore. Ammette varianti strutturali e versioni più efficienti, ma in ogni caso è un oggetto fondamentale, che va conosciuto e ricordato.
Elettronica Digitale (II Parte) 10-11_10 60 Sequenza di Controllo (1) La sequenza di controllo per eseguire un’istruzione macchina è composta da uno o più passi di controllo, uno per ogni ciclo di clock del processore. L’esecuzione complessiva dell’istruzione macchina si divide in tre fasi, a loro volta costituite da una sotto- sequenza di passi di controllo: –prelievo(fetch) –decodifica o interpretazione(decode) –esecuzione e sequenziamento(execute) A ogni passo di controllo vengono generati gli ordini (attivi in parallelo) che pilotano l’unità di calcolo. L’effetto complessivo degli ordini è quello di svolgere per intero l’istruzione macchina.
Elettronica Digitale (II Parte) 10-11_10 61 Sequenza di Controllo (2) Esempi di ordini: –lettura di un registro (dal registro al bus interno): R0 out –scrittura su un registro (dal bus interno al registro): R1 in –operazione della ALU: add, sub, and, or, cmp, … –lettura e scrittura su memoria (o su I / O): read, write Ordini mutuamente esclusivi: –lettura da registro: il contenuto di un solo registro alla volta può essere portato sul bus interno –operazione di ALU c’è una sola ALU ! Ecco un esempio semplice. Con prelievo già fatto, si consideri l’istruzione macchina seguente (a 32 bit): –MOVE.L R0, R1(interpretazione RTL: R1 R0 ) –per eseguirla, gli ordini da dare sono: R0 out, R1 in
Elettronica Digitale (II Parte) 10-11_10 62 Sequenza di Controllo Completa Si consideri l’istruzione macchina seguente (somma contenuti R0 e R1, risultato in R1): –ADD R0, R1-- R1 R0 R1 Fase di prelievo (è identica per tutte le istruzioni): –PC out, MAR in, read, select 4, Z in add-- Z PC 4, leggi mem. –Z out, PC in, V in, WMFC (Wait for Mem Funct Compl)-- PC e V Z , attendi fine –MDR out, IR in -- IR MDR Fase di decodifica o interpretazione: –decodifica l’istruzione macchina (non occorrono ordini, la decodifica è automatica non appena la parola di opcode viene scritta in IR) –se l’istruzione macchina è codificata su più parole, leggi anche le parole di memoria aggiuntive e riaggiorna il PC (qui ev. ordini) Fase di esecuzione: –R0 out, V in -- V R0 –R1 out, add, Z in -- Z R1 V –Z out, R1 in, end-- R1 Z , e poi torna a fase di prelievo
Elettronica Digitale (II Parte) 10-11_10 63 Struttura di un Registro Interno un generico registro interno, dotato di porta di lettura e scrittura, è una schiera di flip-flop come quello mostrato sopra, pilotati in parallelo singolo flip-flop, con porta di lettura e scrittura verso il bus interno
Elettronica Digitale (II Parte) 10-11_10 64 Accesso a Mem. o a Unità di I / O Segnale MFC (Memory Function Completion), Riscontro di completamento dell’operazione, è attivato dall’unità slave (qui la memoria) e indica il completamento dell’operazione: –per esempio in lettura indica che la memoria ha emesso il dato e che questo, tramite il bus esterno, ha raggiunto MDR Ordine WMFC (Wait for MFC): esso “blocca” l’avanzamento dei passi di controllo finché il processore non ha ricevuto MFC. Lettura da memoria: si può usare il registro MDR solo a partire dal passo successivo a quello associato a WMFC. In generale dunque l’ordine WFMC va dato nel passo precedente a quello dove si utilizza il registro MDR. Scrittura in memoria: in generale l’ordine WMFC va dato nello stesso passo dove si dà l’ordine di write. Idem per accedere a unità di I / O (interfaccia periferica).
Elettronica Digitale (II Parte) 10-11_10 65 Clock e Temporizzazione (3) Operazione di lettura da memoria: 1) …, MAR in, read 2) MDR outE, WMFC 3) MDR out, … Nota: l’ordine MDR outE si può omettere (è implicato da read). Si suppone che MFC tardi di due cicli. Diagramma temporale simile per la scrittura. diagramma temporale prolungamento del passo 2 memoria tarda di due cicli
Elettronica Digitale (II Parte) 10-11_10 66 Esempio di Istruzione Completa Istruzione Aritmetica ADD (R3), R1 -- codificata su una sola parola interpretazione RTL: R1 R3 R1 potrebbe servire se fosse salto
Elettronica Digitale (II Parte) 10-11_10 67 Unità di Calcolo a tre Bus Interni La presenza di tre bus interni permette di avere parallelismo maggiore di trasferimento di dato, e dunque consente di ridurre il numero di passi ( cicli di clock) necessari per eseguire l’istruzione, almeno fino a un certo punto. si può anticipare bus R
Elettronica Digitale (II Parte) 10-11_10 68 Unità di Controllo L’unità di controllo emette i segnali (ordini) che regolano il funzionamento dell’unità di calcolo. L’unità di controllo può avere struttura: –cablata (o dedicata): è costruita ad-hoc e si basa su decodificatore di istruzioni (che utilizza il registro IR) contatore (per scandire la successione dei passi di controllo) bit di esito e segnali esterni, per istruzioni condizionate rete combinatoria per generare ordini a ogni passo di controllo –micro-programmata: decodifica l’istruzione macchina e legge in una memoria di controllo (control store), tramite un registro micro-PC, una micro-parola contenente i segnali di controllo da emettere per eseguire l’istruzione Entrambe le strutture di UC sono usate, ma quella cablata oggi è più comune giacché è più efficiente, benché sia meno flessibile.
Elettronica Digitale (II Parte) 10-11_10 69 Unità di Controllo Cablata
Elettronica Digitale (II Parte) 10-11_10 70 Unità di Controllo -Programmata Il comportamento dell’unità di controllo di tipo -programmato dipende solo dal contenuto della memoria di -programma (o control store). I segnali di controllo (cioè gli ordini) di ogni passo sono contenuti in una parola della memoria di -programma (o -memoria). Ogni parola di -memoria viene chiamata -istruzione. La sequenza di -istruzioni corrispondenti ai passi di controllo per l’esecuzione di un’istruzione macchina costituisce una -routine. L’insieme di -routine costituisce il - programma
Elettronica Digitale (II Parte) 10-11_10 71 Memoria di -Programma Istruzione macchina ADD (R3), R1 microprogrammata Gli ordini (qui si chiamano -ordini) sono di tipo attivo alto. Ogni - istruzione specifica i -ordini da attivare in parallelo durante il passo di controllo corrente.
Elettronica Digitale (II Parte) 10-11_10 72 Esempio di -Routine 1.PC out, MAR in, read, select 4, Z in add 2.Z out, PC in, V in,WMFC 3.MDR out, IR in 4.salta al -indirizzo della -routine appropriata (altre -routine) 25.PC out, MAR in, read, select 4, add, Z in 26.Z out, PC in, V in,WMFC, if bit N 0 end (goto -istr. 1) 27.MDR out, select V, add, Z in 28.Z out, PC in, end (goto -istr. 1) Salto Condizionato (relativo a PC) Bcc 0 ETICHETTA -- codificata su una sola parola
Elettronica Digitale (II Parte) 10-11_10 73 Formato di -Istruzione La -istruzione è suddivisa in campi, ciascuno dei quali pilota un solo elemento funzionale del processore: -istr. orizzontale oppure pilota un gruppo di elementi funzionali attivabili in mutua esclusione: -istr. verticale
Elettronica Digitale (II Parte) 10-11_10 74 Calcolo del -Indirizzo Per ottimizzare la struttura del -programma: –riuso di parti di -codice per scrivere le differenti -routine associate alle fasi di esecuzione delle varie istruzioni macchina È utile per esempio per gestire: –i vari modi di indirizzamento –parti comuni a diversi modi di indirizzamento Tecnica: mascheratura di -indirizzo Il -indirizzo “generale” (o base) viene modificato (ritoccato) mascherandone alcuni bit per generare gli indirizzi corretti (vedi la struttura di UC mostrata prima), verso dove si vuole effettivamente spostare il flusso di controllo di -programma. La -istruzione che effettua la mascheratura di -indirizzo costituisce a tutti gli effetti un -salto.
Elettronica Digitale (II Parte) 10-11_10 75