Lucidi - Dipartimento di ingegneria elettrica ed elettronica
Transcript
Lucidi - Dipartimento di ingegneria elettrica ed elettronica
Il set di istruzioni di macchina Calcolatori Elettronici Prof. Gian Luca Marcialis Corso di Laurea in Ingegneria Elettronica Capitolo 4 Unità Centrale di Elaborazione – Istruzioni Macchina Fonti Principali: Stallings, W., "Architettura e organizzazione dei calcolatori, progetto e prestazioni", Pearson Education Italia Srl, 2004 (ISBN: 88-7192-2018), Capp. 10, 11, 12. • Il progetto e l’implementazione di una CPU riguarda in gran parte la definizione, la progettazione e l’implementazione del “set” di istruzioni che la CPU deve realizzare • Il set delle istruzioni è una parte dell’architettura del calcolatore che non risulta trasparente all’utente • Il set delle istruzioni è quasi interamente accessibile all’utente che programma in assembly —eccetto istruzioni riservate al Sistema Operativo Calcolatori Elettronici Principali elementi di un’istruzione di macchina CPU Prof. Ing. G.L. Marcialis 2 Memorizzazione di operandi e risultato • Codice operativo (“Op code”) • In memoria, principale o virtuale • In registri della CPU —specifica cosa deve essere fatto • Indirizzo degli operandi di ingresso —l’operazione richiede uno o più operandi e ne deve specificare la “posizione” • Indirizzo del risultato —se ci sono più registri, a ognuno è assegnato un indirizzo • In dispositivi di I/O —il risultato dell’operazione deve essere memorizzato da qualche parte • Riferimento alla prossima istruzione —di solito implicito Calcolatori Elettronici CPU Prof. Ing. G.L. Marcialis 3 Calcolatori Elettronici CPU Prof. Ing. G.L. Marcialis 4 Rappresentazione dell’istruzione Rappresentazione simbolica dell’istruzione macchina • Un’istruzione di macchina è rappresentata mediante una stringa di bit • Tale stringa è suddivisa in campi che ne definiscono il formato • In generale, non esiste un unico formato per tutte le istruzioni • E’ difficile sapere interpretare a prima vista una stringa di bit • Per cui si ricorre a una rappresentazione simbolica dell’istruzione di macchina • Es. ADD R, Y Calcolatori Elettronici CPU Prof. Ing. G.L. Marcialis 5 —R è un registro della CPU —Y è l’indirizzo di una locazione di memoria —ADD è l’op code Calcolatori Elettronici CPU Prof. Ing. G.L. Marcialis Linguaggi di alto e basso livello Classi di istruzioni • Riferendosi a un programma scritto in istruzioni simboliche di solito si parla di “assembly” • Oggi è raro trovare codice scritto direttamente in assembly, mentre è consuetudine utilizzare linguaggi di alto livello (C, C++, Java) • E’ necessario dunque un “traduttore” da un linguaggio di alto livello a uno di basso livello, l’unico veramente “comprensibile” al calcolatore • Data processing (elaborazione dati) • Es. istruzione di alto • Corrispondenti istruzioni di livello: macchina: X=X+Y LOAD R, X ADD R, Y STORE R, X • Controllo del flusso di esecuzione Calcolatori Elettronici CPU Prof. Ing. G.L. Marcialis 7 6 —istruzioni logiche e aritmetiche • Memorizzazione —istruzioni di trasferimento dati da/a memoria a/da registri • I/O —trasferimento dati e programmi da/a dispositivi di I/O a/da memoria —salto —chiamata a procedura Calcolatori Elettronici CPU Prof. Ing. G.L. Marcialis 8 Numero di indirizzi per istruzione Numero di indirizzi: vantaggi e svantaggi • Specificano il numero di operandi (in ingresso e in uscita) “supportati” dall’istruzione • Sono realizzate istruzioni a: • Tre indirizzi determinano istruzioni “lunghe” • Due indirizzi devono essere trattati con cautela per evitare sovrascritture indesiderate • Tre e due indirizzi possono lavorare solo su registri • Un indirizzo richiede un registro di appoggio • Zero indirizzi richiedono un’area di memoria dedicata e un numero maggiore di istruzioni di macchina, ma una CPU più semplice —tre indirizzi: due operandi di input, uno di output —due indirizzi: due operandi di input, uno dei quali è considerato anche di output —un indirizzo: un solo operando di input, quello di output ed il secondo operando sono impliciti, e di solito sono contenuti in un registro detto “accumulatore” —zero indirizzi: gli operandi si trovano in un’area di memoria detta “stack” o “pila” da cui vengono prelevati e immessi Calcolatori Elettronici CPU Prof. Ing. G.L. Marcialis 9 Esempio di set istruzioni a zero, uno e due indirizzi Calcolatori Elettronici CPU Prof. Ing. G.L. Marcialis 10 Realizzazione dell’operazione desiderata nei tre casi Z = (A + B) / (C + D) * E Si voglia implementare nei tre casi l’istruzione di alto livello: Z = (A + B) / (C + D) * E Calcolatori Elettronici CPU Prof. Ing. G.L. Marcialis 11 All’aumentare della complessità del set di istruzioni, diminuisce il numero di istruzioni necessarie, tuttavia l’interpretazione di ciascuna delle singole istruzioni diventa più onerosa. Calcolatori Elettronici CPU Prof. Ing. G.L. Marcialis 12 Specifiche di progetto del set di istruzioni Tipi di operandi • Repertorio delle operazioni • Principali: — quante e quali operazioni la CPU deve sapere compiere — complessità delle operazioni —indirizzi —numeri —caratteri —logici (livello bit) • Tipi di dati supportati — indirizzati dagli operandi • Formato delle istruzioni — lunghezza (in bit), numero di indirizzi, lunghezza dei singoli campi, etc… • Registri — numero di registri che possono essere indirizzati da un’istruzione, e loro uso • Ci sono poi altri tipi di operandi più o meno complessi detti “strutture dati” come: —stringhe —liste • Metodi di indirizzamento — modo di interpretare i campi degli indirizzi dell’istruzione Calcolatori Elettronici CPU Prof. Ing. G.L. Marcialis 13 Calcolatori Elettronici CPU Prof. Ing. G.L. Marcialis 14 Tipi di operandi: i Numeri Tipi di operandi: caratteri e dati logici • La rappresentazione numerica in un calcolatore è fisicamente limitata: • I caratteri sono rappresentati con una stringa di bit —in termini di ampiezza dell’intervallo di valori —in termini di singoli valori — primo esempio storico: l’alfabeto Morse — standard attuale: codice ASCII (American Standard Code for Information Interchange) – ogni carattere: stringa di 7 bit (128 caratteri possibili) – un ottavo bit viene aggiunto per un controllo di parità • Conseguenze: —arrotondamento, overflow, underflow • I dati logici sono stringhe di bit in cui ciascun bit viene considerato come dato • Tipi di dati numerici: — utili per test di verità — memoria usata in modo più efficiente — alcune operazioni sono rese più semplici manipolazione del singolo bit (es. virgola mobile) —interi —virgola fissa —virgola mobile —conversione da decimale a binario dalla – alternativa: Extended Binary Coded Decimal (EBCD) Calcolatori Elettronici CPU Prof. Ing. G.L. Marcialis 15 Calcolatori Elettronici CPU Prof. Ing. G.L. Marcialis 16 Tipi di operazioni Operazioni di trasferimento dati • Nonostante il numero di “opcode” vari da macchina a macchina, possiamo identificare una categorizzazione molto generale dei tipi di operazioni: • Specifiche: —trasferimento —aritmetiche —logiche —conversioni —I/O —controllo di sistema —trasferimento del controllo Calcolatori Elettronici CPU Prof. Ing. G.L. Marcialis — locazioni o registri da/a cui trasferire i dati — lunghezza dei dati da trasferire — modo di indirizzamento degli operandi — Architetture notevoli – IBM S/370 diverse istruzioni di trasferimento – VAX un’unica istruzione con varianti nel formato • Trasferimento da registro a registro • Trasferimento da/a locazioni di memoria — calcolare l’indirizzo di memoria – eventualmente convertirlo da virtuale a fisico — verificare se il dato si trova in cache 17 Operazioni aritmetiche Calcolatori Elettronici CPU Prof. Ing. G.L. Marcialis 18 Operazioni logiche • Basate sull’algebra booleana • Somma, sottrazione, prodotto, divisione —virgola fissa e virgola mobile • Coinvolgono il trasferimento dati • Operazioni di scorrimento (“shift”) —logico – Es. destro —aritmetico – Es. destro —ciclico – Es. destro Calcolatori Elettronici CPU Prof. Ing. G.L. Marcialis 19 Calcolatori Elettronici CPU Prof. Ing. G.L. Marcialis 20 Operazioni di trasferimento del controllo Esempio di istruzioni di salto condizionato e non condizionato • Alterano la normale sequenza delle istruzioni — loop, salti, ecc. — esecuzione di parti diverse del programma fisicamente lontane Salta alla locazione 211 se il risultato di SUB X,Y è uguale a zero • Istruzioni di salto (“branch instruction”) — condizionato e non condizionato — e.g. BR X – salta alla locazione X • Istruzioni di “skip” —Es. ISZ R1 – incrementa il valore di R1 – salta l’istruzione successiva se R1 vale zero Calcolatori Elettronici Es. ciclo “for” 300 LOAD -10, R1 301 … 309 ISZ R1 310 BR 301 … CPU Prof. Ing. G.L. Marcialis 21 Trasferimento del controllo: istruzioni di chiamata a procedura • Una procedura è un programma incorporato in un programma più grande • Il controllo passa alla procedura invocata • Al termine della procedura il controllo ritorna al programma principale • Utilità delle procedure (o sottoprogrammi): —economia: possono implementare funzionalità che vengono richiamate più volte nel corso del programma —modularità: un programma può essere suddiviso in più sottoprogrammi ciascuno dei quali risolve un particolare problema Calcolatori Elettronici CPU Prof. Ing. G.L. Marcialis 23 Salta alla locazione 235 se contenuto di R1=R2 Calcolatori Elettronici CPU Prof. Ing. G.L. Marcialis 22 Metodi di indirizzamento • Servono per interpretare il contenuto del campo indirizzi... —quindi per calcolare dove effettivamente sono memorizzati gli operandi dell’istruzione • Opcode diversi presentano diverse modalità di indirizzamento • In qualche caso all’opcode viene aggiunto un bit che, a parità di operazione, specifica la modalità di indirizzamento (“mode field”) • Un altro problema è stabilire se l’indirizzamento si riferisce a una locazione fisica della memoria (“effective address”), o a una locazione “virtuale” Calcolatori Elettronici CPU Prof. Ing. G.L. Marcialis 24 Categorizzazione dei metodi di indirizzamento Metodi di indirizzamento senza riferimenti alla memoria • Metodi di indirizzamento senza riferimenti alla memoria • Indirizzamento immediato —immediato —attraverso registro • Indirizzamento attraverso registro — l’operando è contenuto in un registro • Metodi di indirizzamento con riferimenti alla memoria —diretto —indiretto —attraverso registro in modalità indiretta —attraverso registro indice (“displacement”) —stack Calcolatori Elettronici — l’operando è contenuto nel campo indirizzo CPU Prof. Ing. G.L. Marcialis • Vantaggi: — accesso molto rapido — il campo indirizzi occupa poco spazio se indirizza un registro • Svantaggi: — dimensione dell’operando limitata — l’indirizzamento a registro presenta un numero limitato di registri indirizzabili e richiede un uso efficiente degli stessi 25 Calcolatori Elettronici CPU Prof. Ing. G.L. Marcialis 26 Metodi di indirizzamento con riferimenti alla memoria Metodi di indirizzamento con riferimento alla memoria: il “displacement” • Indirizzamento diretto • Indirizzamento indiretto • L’istruzione presenta almeno indirizzo, uno dei quali esplicito • Vantaggi • Vantaggi — semplicità implementativa — dimensione dell’operando campi — maggior numero di operandi indirizzabili • Svantaggi • Svantaggi — dimensione limitata campo indirizzi Calcolatori Elettronici due del — accesso più lento CPU Prof. Ing. G.L. Marcialis 27 Calcolatori Elettronici CPU Prof. Ing. G.L. Marcialis 28 Formato delle istruzioni Elementi chiave nel progetto del formato delle istruzioni • Il formato di un’istruzione è dato da: • Lunghezza dell’istruzione —codice operativo —uno o più operandi —indicazione esplicita o implicita della modalità di indirizzamento • Questi elementi sono fondamentali nel progetto del formato delle istruzioni • Nelle prossime diapositive vediamo meglio gli elementi chiave in questa fase del progetto dell’Unità Centrale Calcolatori Elettronici CPU Prof. Ing. G.L. Marcialis 29 La lunghezza dell’istruzione: motivi di compromesso CPU Prof. Ing. G.L. Marcialis – numerosità dei codici operativi – numerosità degli operandi supportati da ogni istruzione – numerosità dei modi di indirizzamento —in realtà la lunghezza di un’istruzione è fortemente limitata da diversi fattori – capacità e organizzazione della memoria – struttura del bus – complessità e velocità del processore stesso Calcolatori Elettronici CPU Prof. Ing. G.L. Marcialis 30 Allocazione dei bit entro il formato dell’istruzione • Non è detto che la lunghezza dell’istruzione sia proporzionale alla sua effettiva utilità (CISC rispetto a RISC) —Una istruzione di 32 bit occupa uno spazio doppio di una a 16 bit, ma è improbabile che la sua utilità sia doppia • La lunghezza di un’istruzione dovrebbe essere pari alla capacità di trasferimento dalla memoria (bus dati) • Inoltre è molto probabile che il processore esegua un’istruzione molto più velocemente di quanto impieghi a prelevarla dalla memoria, creando così un “collo di bottiglia” —Un’istruzione di 16 bit può venire prelevata nella metà del tempo di un’istruzione di 32 bit, ma è improbabile che venga eseguita nella metà del tempo • La lunghezza della istruzione è infine vincolata a multipli del byte (8 bit) e in genere alla lunghezza di una parola di memoria (“word”) Calcolatori Elettronici —è determinata dal numero di bit che essa richiede —idealmente si vorrebbe un’istruzione più “lunga” possibile, per garantire il massimo potere espressivo 31 • Un maggior numero di opcode richiede più bit — Ma ciò significa sottrarre bit al campo indirizzi — Possibile soluzione: opcode di lunghezza variabile – più bit per specificare operazioni addizionali all’opcode iniziale • Il campo indirizzi è invece legato a: — numero dei modi di indirizzamento (espliciti/impliciti) — numero degli operandi – ognuno richiede l’indicazione del proprio modo di indirizzamento — impiego di registri – registri “dedicati” possono essere indirizzati implicitamente — intervallo di indirizzamento – è sempre conveniente allocare quanti più bit possibile — granularità degli indirizzi – indirizzare il byte anziché la parola è utile ma richiede più bit Calcolatori Elettronici CPU Prof. Ing. G.L. Marcialis 32 Ciclo base per l’esecuzione di una istruzione Schema Semplificato di un Calcolatore • Due fasi principali: —Fetch (“prelievo”) —Execute (“esecuzione”) Calcolatori Elettronici CPU Prof. Ing. G.L. Marcialis 33 Fetch Cycle (Ciclo di Prelievo) 34 Prendiamo come riferimento una semplice architettura di “principio” con le seguenti caratteristiche: • Il registro Program Counter (PC) contiene l’indirizzo della prossima istruzione da prelevare • Il calcolatore preleva l’istruzione dalla locazione di memoria indirizzata dal Program Counter • Il Program Counter viene incrementato —A meno che non sia specificato diversamente dall’istruzione appena prelevata • L’istruzione viene caricata nel Instruction Register (IR) • Il calcolatore interpreta l’istruzione ed esegue le “azioni” richieste CPU Prof. Ing. G.L. Marcialis CPU Prof. Ing. G.L. Marcialis Esempio di Esecuzione di Istruzioni Con riferimento alla Figura di pagina 34: Calcolatori Elettronici Calcolatori Elettronici 35 •Architettura con un unico registro dati detto accumulatore (AC) •Istruzioni e dati a 16 bit •Formato istruzioni: 4 bit di codice operativo, 12 bit di indirizzo. 0001 (1) = Load AC from Memory 0010 (2) = Store AC to Memory 0101 (5) = Add to AC from Memory •Interi a 16 bit in modulo e segno Calcolatori Elettronici CPU Prof. Ing. G.L. Marcialis 36 Esecuzione istruzioni (senza “interruzioni”) Esempio di Esecuzione di Istruzioni 1. 2. Calcolatori Elettronici PC contiene l’indirizzo 300. L’istruzione è caricata in IR L’Opcode di IR indica che AC deve essere caricato con la locazione di indirizzo 940 3. Incremento PC e Fetch 4. Eseguo l’addizione 5. Incremento PC e Fetch 6. Il contenuto di AC è trasferito alla locazione di memoria 941 CPU Prof. Ing. G.L. Marcialis • Il funzionamento base della CPU è fatto dei seguenti passi: — Fetch delle istruzioni – La CPU legge un’istruzione dalla memoria. — Interpretazione delle istruzioni – L’istruzione viene decodificata per determinare quale azione è stata richiesta. — Fetch dei dati – L’esecuzione dell’istruzione potrebbe richiedere dei dati dalla memoria o da un dispositivo di I/O. — Elaborazione dei dati 37 Diagramma degli stati per il ciclo di una istruzione – Può essere richiesta l’esecuzione di operazioni aritmetiche o logiche sui dati. — Scrittura dei dati – Si può richiedere di trasferire i dati elaborati in memoria o ad un modulo di I/O. Calcolatori Elettronici CPU Prof. Ing. G.L. Marcialis 38 Ciclo di un’istruzione con interruzione • E’ costituito dai seguenti sotto-cicli: • Fetch — Lettura dell’istruzione successiva dalla memoria. • Esecuzione — Interpretazione del codice operativo e conseguente esecuzione. — Può comprendere – Trasferimento di dati tra registri. – Lettura/Scrittura in/da memoria o periferica. – Utilizzo della ALU. • Interrupt — Se è stato abilitato un interrupt, si deve salvare lo stato del processo per eseguirlo. Calcolatori Elettronici CPU Prof. Ing. G.L. Marcialis 39 Calcolatori Elettronici CPU Prof. Ing. G.L. Marcialis 40 Ciclo indiretto Ciclo dell’istruzione con sotto-ciclo indiretto • Se per eseguire l’istruzione è necessario effettuare un fetch degli operandi con indirizzamento indiretto, questo ulteriore accesso alla memoria è visto come un sottociclo dell’istruzione. • Questo sotto-ciclo “interrompe” la normale esecuzione delle istruzioni. • Dopo l’esecuzione di un’istruzione può essere eseguito un interrupt. Calcolatori Elettronici CPU Prof. Ing. G.L. Marcialis 41 Diagramma di stato con “interrupt” CPU Prof. Ing. G.L. Marcialis CPU Prof. Ing. G.L. Marcialis 42 Flusso dei dati: ciclo di fetch • Una volta effettuata la fase di fetch di un’istruzione, si devono identificare gli indirizzi degli operandi. • Il fetch degli operandi può richiedere l’indirizzamento indiretto. • Dopo l’esecuzione dell’istruzione può essere necessario effettuare un ulteriore indirizzamento indiretto per trasferire i risultati in memoria. Calcolatori Elettronici Calcolatori Elettronici 43 • Il contenuto del PC è trasferito al MAR. • Si effettua la lettura della locazione di memoria puntata, ponendo il risultato nel MBR e poi in IR. • Il PC viene incrementato di 1 per il fetch dell’istruzione successiva. Calcolatori Elettronici CPU Prof. Ing. G.L. Marcialis 44 Flusso dei dati: ciclo indiretto Flusso dei dati: ciclo di interrupt • L’unità di controllo verifica dall’IR se gli operandi usano l’indirizzamento indiretto. • Se sì, il riferimento dell’indirizzo viene trasferito dal MBR al MAR. • Si effettua la lettura dell’indirizzo richiesto dalla memoria. Calcolatori Elettronici CPU Prof. Ing. G.L. Marcialis 45 La pipeline • Si eseguono “contemporaneamente” le seguenti sei fasi per sfruttare il più possibile la CPU: —Fetch dell’istruzione – Trasferimento in un buffer (MBR) dell’istruzione successiva. —Decodifica dell’istruzione – Si determina il codice operativo e gli specificatori degli operandi. —Calcolo degli operandi – Calcolo dell’indirizzo effettivo degli operandi. —Fetch degli operandi – Lettura degli operandi dalla memoria. —Esecuzione dell’istruzione —Scrittura del resultato • Il contenuto del PC viene posto nel MBR per essere salvato in memoria. • L’unità di controllo pone nel MAR un indirizzo di locazioni di memoria riservate per questo scopo (es.: lo stack). • Nel PC viene caricato l’indirizzo della routine dell’interrupt richiesta. Calcolatori Elettronici CPU Prof. Ing. G.L. Marcialis 46 Temporizzazione della pipeline • Con la pipeline si riduce il tempo di esecuzione di 9 istruzioni da 54 unità di tempo a 14. • Si assume che: — Le sei fasi abbiano la stessa durata. — Non ci siano conflitti nell’accesso alla memoria tra le varie fasi. — Vengano sempre eseguite tutte e sei le fasi. – Salvataggio del risultato in memoria. Calcolatori Elettronici CPU Prof. Ing. G.L. Marcialis 47 Calcolatori Elettronici CPU Prof. Ing. G.L. Marcialis 48 Temporizzazione di un salto condizionato in una pipeline • L’istruzione 3 è un salto condizionato all’istruzione 15. • Non si può predire il salto prima della sua esecuzione (unità di tempo 7). — Si continua ad eseguire le istruzioni immediatamente successive. Fattore di “speedup” • E’ il rapporto tra il tempo di esecuzione di un’istruzione senza e con pipeline: Fatt_speedup = T1/Tk — k è il numero di stadi (fasi) della pipeline. • All’istante n. 8 si inizia a caricare l’istruzione 15. • Più aumenta il numero di stadi, maggiore è il fattore di “speedup”, ma aumentano costi e ritardi tra stadi. — Le fasi delle istruzioni successive alla 3 già eseguite vanno perse. Calcolatori Elettronici • Valori tipici: da 6 a 9 stadi. CPU Prof. Ing. G.L. Marcialis 49 Pipeline nel PC Intel 80486 (1) Calcolatori Elettronici CPU Prof. Ing. G.L. Marcialis 50 Pipeline nel PC Intel 80486 (2) • E’ usata una pipeline a 5 livelli: —4. Esecuzione — 1. Fetch – Dalla cache o dalla memoria esterna. – Si usano uno o due buffer da 16 byte. – Lo scopo è riempire i buffer con nuovi dati man mano che i vecchi sono usati. – Media di 5 fetch di istruzione per caricamento. – Fase indipendente dagli altri stadi per tenere pieno il buffer. – Operazioni con la ALU. – Accesso alla cache. – Aggiornamento dei registri. —5. Scrittura – Aggiornamento dei registri e dei “flag”. – I risultati vengono mandati alla cache e allo stesso tempo l’interfaccia del bus scrive nei buffer. — 2. Stadio di decodifica 1 – Informazioni sul codice operativo ed il metodo di indirizzamento. – Le informazioni richieste sono incluse in al più 3 byte di istruzione. — 3. Stadio di decodifica 2 – Si espande il codice operativo in segnali di controllo. – Calcolo dell’indirizzo in caso di modi complessi. Calcolatori Elettronici CPU Prof. Ing. G.L. Marcialis 51 Calcolatori Elettronici CPU Prof. Ing. G.L. Marcialis 52 Esempio di istruzioni in pipeline del 80486 Per saperne di più •Capp. 10, 11, 12 del libro di testo Calcolatori Elettronici CPU Prof. Ing. G.L. Marcialis 53 Calcolatori Elettronici CPU Prof. Ing. G.L. Marcialis 54