Calcolatori Elettronici T. ISA DLX: Implementazione Tramite Struttura Sequenziale

Documenti analoghi
Calcolatori Elettronici T Ingegneria Informatica. DLX: implementazione sequenziale

ISA DLX: Implementazione Tramite Struttura Sequenziale

ISA DLX: Implementazione Tramite Struttura Sequenziale

Calcolatori Elettronici T Ingegneria Informatica 03 Linguaggio macchina

6 Linguaggio Macchina Fondamenti di Informatica P2 Ingegneria Meccatronica

Il set istruzioni di MIPS Modalità di indirizzamento. Proff. A. Borghese, F. Pedersini

Il set istruzioni di MIPS Modalità di indirizzamento. Proff. A. Borghese, F. Pedersini

Riassunto. Riassunto. Ciclo fetch&execute. Concetto di programma memorizzato. Istruzioni aritmetiche add, sub, mult, div

Architettura degli Elaboratori

Processore. Memoria I/O. Control (Parte di controllo) Datapath (Parte operativa)

Richiami sull architettura del processore MIPS a 32 bit

Processore. Memoria I/O. Control (Parte di controllo) Datapath (Parte operativa)

Il processore: unità di elaborazione

Lezione 20. della CPU MIPS. Prof. Federico Pedersini Dipartimento di Informatica Università degli Studi di Milano

Fetch Decode Execute Program Counter controllare esegue prossima

Progettazione dell unità di elaborazioni dati e prestazioni. Il processore: unità di elaborazione. I passi per progettare un processore

Architettura degli Elaboratori

Richiami sull architettura del processore MIPS a 32 bit

Manualino minimale MIPS

Lezione 20. della CPU MIPS. Prof. Federico Pedersini Dipartimento di Informatica Università degli Studi di Milano

CPU a singolo ciclo. Lezione 18. Sommario. Architettura degli Elaboratori e delle Reti

Linguaggio Assembly e linguaggio macchina

L unità di controllo di CPU a singolo ciclo

Istruzioni di trasferimento dati

Il linguaggio del calcolatore: linguaggio macchina e linguaggio assembly

CPU a singolo ciclo. Lezione 18. Sommario. Architettura degli Elaboratori e delle Reti. Proff. A. Borghese, F. Pedersini

ISA (Instruction Set Architecture) della CPU MIPS

Processore. Memoria I/O. Control (Parte di controllo) Datapath (Parte operativa)

Linguaggio macchina. Architettura degli Elaboratori e delle Reti. Il linguaggio macchina. Lezione 16. Proff. A. Borghese, F.

L'architettura del processore MIPS

Esercizio I-DLX. Calcolatori Elettronici L-A

Architettura degli Elaboratori Lez. 8 CPU MIPS a 1 colpo di clock. Prof. Andrea Sterbini

slt $t1,$t2,$t3 if ($t2<$t3) $t1=1; Confronto tra registri slti $t1,$t2,100 if ($t2<100)$t1=1; Cfr. registro-costante

ISA (Instruction Set Architecture) della CPU MIPS32

Il linguaggio macchina

Lezione 20. Assembly MIPS: Il set istruzioni, strutture di controllo in Assembly

Università degli Studi di Cassino

Linguaggio assembler e linguaggio macchina (caso di studio: processore MIPS)

Calcolatore: sottosistemi

Capitolo 5 Elementi architetturali di base

Architettura degli elaboratori CPU a ciclo singolo

Corso di Calcolatori Elettronici MIPS: Istruzioni di confronto Istruzioni di controllo Formato delle istruzioni in L.M.

Linguaggio macchina e register file

Le etichette nei programmi. Istruzioni di branch: beq. Istruzioni di branch: bne. Istruzioni di jump: j

Lezione 12. Assembly II. Set di Istruzioni MIPS Strutture di controllo in Assembly

Architettura dei calcolatori e sistemi operativi. Il processore Capitolo 4 P&H

Il linguaggio Assembly. Architettura degli Elaboratori e delle Reti Turno I

Architettura degli elaboratori CPU a ciclo singolo

Linguaggio Assembly e linguaggio macchina

ISA e linguaggio macchina

Università degli Studi di Cassino

Un altro tipo di indirizzamento. L insieme delle istruzioni (3) Istruz. di somma e scelta con operando (2) Istruzioni di somma e scelta con operando

Istruzioni e linguaggio macchina

Formato tipico delle istruzioni nelle architetture R-R (Es. DLX)

Lezione 20. Assembly MIPS: Il set istruzioni, strutture di controllo in Assembly

Linguaggio Assembly e linguaggio macchina

Linguaggio macchina. 3 tipi di istruzioni macchina. Istruzioni per trasferimento dati. Istruzioni logico/aritmetiche

Progetto CPU a singolo ciclo

Un quadro della situazione. Lezione 15 Il Set di Istruzioni (2) Le operazioni e gli operandi. Dove siamo nel corso. Cosa abbiamo fatto

ALU e Control Unit. ALU e Control Unit

L unità di controllo di CPU a singolo ciclo

Istruzioni assembler Istruzione N Registri

Architettura di un calcolatore: introduzione. Calcolatore: sottosistemi

Il calcolatore. È un sistema complesso costituito da un numero elevato di componenti. è strutturato in forma gerarchica

ESERCIZIO: PROGETTO DI UNA CPU A PIU REGISTRI

Università degli Studi di Cassino

Appunti di Calcolatori Elettronici Capitolo 4 Architettura del DLX DLX istruzioni load/store pipeline decodifica dell insieme di istruzioni

Architettura dell elaboratore

Architettura dell elaboratore

Istruzioni di controllo del flusso

CPU a ciclo multiplo

Il linguaggio macchina

Architettura di un calcolatore: introduzione. Calcolatore: sottosistemi

Rappresentazione dell informazione

Elementi di informatica

Esercizio II-DLX. Calcolatori Elettronici L-A

Architettura del calcolatore (Seconda parte)

Architettura e funzionamento del calcolatore

Il Linguaggio Assembly: Controllo del flusso: istruzioni e costrutti

Architettura di un calcolatore: introduzione. Calcolatore: sottosistemi

La CPU a singolo ciclo

Progetto CPU a singolo ciclo

Fondamenti di Informatica A. A / 1 9

L unità di elaborazione PC: MAR/MDR IR: R0 Rn: TEMP, V, Z

Architettura di un calcolatore: introduzione

Calcolatori Elettronici T Ingegneria Informatica. ISA DLX: implementazione pipelined

La CPU a singolo ciclo

Architettura del processore MIPS

Il processore minimo MU0. S. Salvatori - Microelettronica marzo 2019 (50)

Funzionalità di un calcolatore. Il calcolatore: modello architetturale. Lo schema di riferimento. L hardware dei sistemi di elaborazione (prima parte)

Esercitazione 11. Control-Unit. Data-Path

Introduzione all'architettura dei Calcolatori. Maurizio Palesi

CPU a ciclo multiplo

Introduzione al linguaggio macchina

ESERCITAZIONE Unità centrale di elaborazione Ciclo base di un istruzione Meccanismo di interruzione

Progetto CPU (ciclo singolo)

La struttura delle istruzioni elementari: il linguaggio Macchina. Sommario

Una CPU multi-ciclo. Sommario

Transcript:

Calcolatori Elettronici T ISA DLX: Implementazione Tramite Struttura Sequenziale 1

E disponibile un interprete e simulatore (EasyDLX) per un insieme semplificato dell ISA DLX realizzato da Daniele Biagi nell ambito di un progetto del corso di Linguaggi e Modelli computazionali (prof. Denti). Il simulatore è in grado di eseguire salti, evidenziando step by step la prossima istruzione che sarà eseguita. Supporta tutte operazioni logiche e aritmetiche con operandi interi. Home page (Google code): http://code.google.com/p/easydlx/ Pagina web sul sito di Linguaggi e Modelli computazionali: http://edenti.deis.unibo.it/ling/2010-2011/bestprojects/biagi/ index.html 2

Riassunto delle principali caratteristiche dell ISA del DLX 32 registri da 32 bit di uso generale (R0..R31, con R0=0) 32 registri floating point da 32 bit (utilizzati esclusivamente dalle unità funzionali in virgola mobile) Istruzioni di lunghezza costante 32 bit allineate Campi di dimensioni fisse nell ambito di istruzioni diverse 3 formati di istruzione: I, R, J Non ci sono istruzioni specifiche per la gestione dello stack Nelle istruzioni di tipo JL l indirizzo di ritorno e salvato in R31 Non c è un registro di FLAG settato dalle istruzioni ALU; le condizioni vengono settate esplicitamente nei registri con il gruppo di istruzioni SET condition IN REGISTER (SCN): SetCoNdition Rd, Rs1, Rs2/Immediato (ex. Cond: EQ (if Rs1=Rs2 then Rd <- 1, else Rd <- 0), LT, NEQ, ) C è un registro di FLAG testabile a controllo di programma per le condizioni settate dall unità Floating Point Una sola modalità di indirizzamento di memoria (registro + offset) MOVS2I e MOVI2S: sposta un registro speciale (eg IAR) da/verso un registro general purpose (i.e. R0..R31). Utile per implementare annidamento degli interrupt (stack...) 3

Il set di istruzioni del DLX Le principali istruzioni aritmetiche e logiche Istruzioni logiche anche con op. immediato: AND, ANDI, OR, ORI, XOR, XORI Istruzioni aritmetiche: ADD, ADDI, SUB, SUBI, MULT, DIV Istruzioni di traslazione logica (a destra anche aritmetica): SLL(I) 1, SRL(I), SRA(I) 2 Istruzioni di SET CONDITION: Scn, ScnI(mmediate), con cn = EQ, NE, LT, GT, LE, GE Le principali istruzioni di trasferimento dati Load byte (signed/unsigned), Load Halfword (signed/unsigend), Load Word (LB, LBU, LH, LHU, LW) Store byte, Store Halfword, Store Word (SB, SH, SW) Load/Store Floating Point in singola o doppia precisione (LF/SF e LD/SD) Copia un dato da un GPR a un FPR e viceversa (MOVI2FP e MOVFP2I) Le principali istruzioni di trasferimento del controllo Istruzioni di salto condizionato (PC+4 relative): BNEZ, BEQZ Istruzioni di salto incondizionato diretto e indiretto(pc+4 relative): J, JR Istruzioni di chiamata a procedura (Jump and Link, l indirizzo di ritorno viene automaticamente salvato in R31): JAL, JALR Istruzione di ritorno dalla procedura di servizio delle interruzioni: RFE 1) Shift logico a sinistra e shift aritmetico a sinistra coincidono (entrano 0 nei bit meno significativi). Per questa ragione NON esiste SLA. Fare attenzione con shift a sinistra, non preserva il segno e può generare overflow. 2) NB. Trascinando a destra di una posizione un registro e inserendo a sinistra sempre il bit del segno si mantiene il segno del dato mentre lo si divide successivamente per 2 4

DLX: formato delle istruzioni Attenzione: in alcune istruzioni I (LOAD e ALU) RS2 rappresenta il registro destinazione I Codice operativo RS2/Rd RS1 Operando immediato di 16 bit Load, Store, Branch condizionale, JR e JALR (trasf. controllo via registro), SetCond e ALU con op. imm. Nelle operazioni di LD e ALU RS2=Rdest, nelle ST RS2=sorg. -- RS1 per indirizzo o sorgente (con imm.) 6 bit 5 bit 5 bit 5 bit 11 bit R Codice operativo RS2 RS1 Rd Estensione al Cod. op (11 bit) Istruzioni aritmetiche e logiche del tipo Rd Rs1 op Rs2 oppure SetCond fra registri J 31 Codice operativo Offset di 26 bit (PC relative) Trasferimento del controllo diretto e incondizionato (J e JAL) Numerazione dei bits 0 5

Istruzioni Aritmetico Logiche (ALU) Istruzioni a 3 operandi 2 operandi sorgente 1 operando destinazione. destinazione : registro sorgente : registro, registro / operando immediato (16 bit) Esempi: ADD R1, R2, R3 R1 ß R2+R3 formato R R1 in posizione Rd nel formato della istruzione ADDI R1, R2, 3 R1 ß R2+3 formato I R1 in posizione Rd, R2 e R0 in posizione RS1 nel formato della istruzione ADDI R1, R0, 5 R1 ß 0+5 (cioè : R1 ß 5 ) formato I ADD R1, R5, R0 R1 ß R5+R0 (cioè : R1 ß R5 ) formato R 6

Istruzioni di Set Condition Queste istruzioni confrontano i due operandi sorgente e mettono a 1 oppure a 0 l operando destinazione in funzione del risultato del confronto SET EQUAL (SE, =), SET NOT EQUAL (SNE, =), SET LESS THAN (SLT, <),.. ESEMPI: SLT R1,R2,R3 if (R2<R3): R1 ß 1 else R1 ß 0 Nel caso di operando sorgente immediato: SLTI R1,R2,5 if (R2<5): R1 ß 1 else R1 ß 0 formato R R1 in posizione RS2 e R2 in posizione RS1 nel formato della istruzione formato I Nel caso di confronto fra operandi unsigned : SLTU R1,R2,R4 if (R2<R4): R1 ß 1 else R1 ß 0 formato R 7

Istruzioni per il trasferimento dati (formato I, unica modalità di indirizzamento) Sono istruzioni che accedono alla memoria (load e store) L indirizzo dell operando in memoria è la somma del contenuto di un registro con un offset di 16 bit L istruzione è codificata secondo il formato I Esempi: LW R1, 40(R3) R1 ß 32 M[40+R3] LB R1, 40(R3) R1 ß (M[40+R3] 7 ) 24 ## M[40+R3] Sign Extension LBU R1,40(R3) R1 ß (0) 24 ## M[40+R3] LH R1, 40(R3) R1 ß (M[41+R3] 7 ) 16 ## M[41+R3] ## M[40+R3] SW R7,10(R5) M[10+R5] ß 32 R7 8

Istruzioni per il trasferimento del controllo: salti incondizionati (con e senza ritorno) JUMP : Trasferimento del controllo (o salto) incondizionato JUMP AND LINK: Trasferimento di controllo con salvataggio dell indirizzo di ritorno (chiamata a procedura) BRANCH : Trasferimento di controllo condizionato (salto condizionato) JUMP J alfa PC ß (PC +4) + OFFSET(alfa) Formato Istruz. di tipo J ( PC relative, OFFSET di 26 bit) J R3 PC ß R3 Formato Istruz. di tipo I JUMP AND LINK (salto a procedura e ritorno) JAL alfa JALR R3 R31 ß PC+4 ; PC ß (PC +4) + OFFSET(alfa) R31 ß PC+4 ; PC ß R3 J R31 PC ß R31 Questa è l istruzione di ritorno da procedura (senza stack è possibile un solo livello di nesting!!) 9

Istruzioni per il trasferimento del controllo: salti condizionati (Branch) BRANCH BRANCH EQUAL ZERO BRANCH NOT EQUAL ZERO N.B. il registro da cui dipende il salto è indicato nel formato della istruzione nella posizione RS1 BEQZ R4, alfa if (R4=0): PC ß (PC +4)+OFFSET(alfa) BNEZ R4, alfa if (R4=0): PC ß (PC +4)+OFFSET(alfa) ( sono entrambe istruzioni PC relative, con OFFSET di 16 bit) BEQZ e BNEZ sono istruzioni di formato I Con una istruzione di tipo set condition seguita da un istruzione di salto condizionato si realizza la funzione di Compare and Branch (confronto e salto condizionato dal risultato del confronto) senza bisogno di flag dedicati 10

Esempio di codice assembler DLX Si scriva il codice assembler per il calcolo della somma degli elementi di un vettore di indirizzo iniziale A (<2^15) di 8 elementi (32 bytes) e lo si scriva all indirizzo Z utilizzando i seguenti registri: R1 per la somma corrente R2 per l indice R3 per il contatore delle iterazioni ADD R1, R0, R0 ; azzera la somma corrente ADD R2, R0, R0 ; azzera R2 registro indice ADDI R3, R0, 8 ; inizializza il contatore dei cicli CICLO LW R4, A(R2) ; indirizzo dell operando in memoria (calcolato a run time ) ADD R1, R1, R4 ; aggiorna somma corrente ADDI R2, R2, 4 ; 4 e il numero di bytes per word ADDI R3, R3, -1 BNEZ R3, CICLO ; Qui niente SCN: implicita nella istruzione precedente ; vero se il test è fatto sull intero contenuto del registro : altrimenti SC SW Z(R0), R1 ; Z e l indirizzo della variabile con il risultato (R0=0).. Come si sarebbe dovuto trasformare il codice se A>= 2^15? 11

Datapath e Unità di Controllo La struttura di una CPU, come tutte le reti logiche sincrone che elaborano dati, può essere strutturata in due blocchi Unità di Controllo e Datapath. La CPU, per funzionare, ha bisogno della memoria esterna su cui risiedono il programma e i dati. Rete logica processore indirizzi ready interrupt memoria istruzioni U.d.C. reset clock Dati (in) Data Path Dati (out) CPU 12

Datapath e Unità di Controllo Datapath: contiene tutte le unità di elaborazione ed i registri necessari per l esecuzione delle istruzioni della CPU. Ogni istruzione appartenente all Instruction Set è eseguita mediante una successione di operazioni elementari, dette micro-operazioni. Micro-operazione: operazione eseguita all interno del DATAPATH in un ciclo di clock (esempi: trasferimento di un dato da un registro ad un altro registro, elaborazione ALU) Unità di Controllo: è una RSS che in ogni ciclo di clock invia un ben preciso insieme di segnali di controllo al DATAPATH al fine di specificare l esecuzione di una determinata microoperazione. 13

Struttura del DLX (esecuzione sequenziale) C O N T R O U N I T S1 S2 A B alu Register file PC TEMP C dest L IAR MAR Instruction register MDR dati in scrittura CPU fetch Indirizzi Memoria dati/istruzioni in lettura execute Parallelismo dell architettura: 32 bit (bus, alu e registri hanno parallelismo 32) I segnali di controllo non sono riportati! 14

I registri del DLX (tutti a 32 bit) A parte il Register File questi registri NON sono accessibili al programmatore!!! In alcuni casi istruzioni speciali per accedere ad alcuni (e.g., IAR) Register file: 32 Registri General Purpose Registers R0.R31 con R0=0 IAR: Interrupt Address Register Deposito dell indirizzo di ritorno in caso di interruzione PC: Program Counter MAR: Memory Address Register Contiene l indirizzo del dato da scrivere o leggere in memoria IR: Instruction Register Contiene l istruzione attualmente in esecuzione TEMP: Temporary Register Registro di deposito temporaneo di risultati MDR: Memory Data Register Registro di transito temporaneo dei dati da e per la memoria A e B: Registri di uscita dal Register File 15

Funzioni della ALU Dest (uscite) 4 bit di comando S1 + S2 S1 S2 S1 and S2 S1 or S2 S1 exor S2 Shift S1 a sinistra di S2 posizioni Shift S1 a destra di S2 posizioni Shfit S1 aritmetico a destra di S2 posizioni S1 S2 0 1 Flag di uscita Zero Segno negativo Carry La ALU è una rete PURAMENTE combinatoria 16

Trasferimento dati sul datapath I bus S1 ed S2 sono multiplexati (tri-state) con parallelismo 32 bit. I registri campionano sul fronte positivo del clock, hanno due porte di uscita O1 e O2 per i due bus (o i registri A e B) e dispongono di tre ingressi di controllo: un ingresso di Write Enable (WE*) ed uno di Output Enable per ogni porta di uscita, una per ogni bus S1 e S2 (OE1* e OE2*). Al fine di valutare la massima frequenza a cui è possibile far funzionare il datapath è importante conoscere le seguenti temporizzazioni: T C (max) : ritardo max tra il fronte positivo del clock e l istante in cui i segnali di controllo generati dall unità di controllo sono validi; T OE (max): ritardo max tra l arrivo del segnale OE e l istante in cui i dati del registro sono disponibili sul bus; T ALU (max): ritardo massimo introdotto dalla ALU; T SU (min) : tempo di set-up minimo dei registri (requisito minimo per il corretto campionamento da parte dei registri). La massima frequenza di funzionamento del data path si calcola come segue: T CK > T C (max) + T OE (max) + T ALU (max) + T SU (min) f CK (max) = 1/T CK 17

Esempio : esecuzione della microistruzione Rin Rout I segnali in blu (segnali di controllo) provengono dall Unità di Controllo Clock sempre collegato: write enable! S1 S2 OE1* OE2* OE2Rout* (e.g. TEMP) O1 Rout I O2 WE* O1 OE1* OE2* (e.g. MAR) Rin I O2 WE* WERin* i1 alu i2 u = i2 clock dest I segnali di controllo in grassetto sono attivi nel ciclo di clock in cui il micro-step Rin Rout viene eseguito 18

Il set di istruzioni non floating-point del DLX Data Transfer LW Ra, offset(rb) LB Ra, offset(rb) LBU Ra, offset(rb) LH Ra, offset(rb) LHU Ra, offset(rb) SW Ra, offset(rb) SH Ra, offset(rb) SB Ra, offset(rb) LHI Ra, value *MOVS2I Ra, Rs *MOVI2S Rs, Ra * Special register Rs (IAR) Aritmetiche/logiche ADD Ra,Rb,Rc ADDI Ra,Rb,value ADDU Ra,Rb,Rc ADDUI Ra,Rb, value SUB Ra,Rb,Rc SUBI Ra,Rb,value SUBU Ra,Rb,Rc SUBUI Ra,Rb, value DIV Ra,Rb,Rc DIVI Ra,Rb,value MULU Ra,Rb,Rc MULI Ra,Rb, value SLL Ra,Rb,Rc SLLI Ra,Rb;value SHR Ra,Rb.Rc SHRI Ra,Rb,value SLA Ra,Rb,Rc SLAI Ra,Rb,value OR Ra,Rb,Rc ORI Ra,Rb,value XOR Ra,Rb,Rc XORI Ra,Rb,value AND Ra,Rb,Rc ANDI Ra,Rb,value Controllo SETx Ra,Rb,Rc SETIx Ra,Rb,value BEQZ Ra, offset BNEQZ Ra, offset J offset JR Ra JL offset JLR Ra N.B. x può essere LT, GT, LE, GE, EQ, NE Esiste anche l istruzione TRAP che esegue una chiamata a interrupt software vettorizzata 19

Il progetto dell Unità di Controllo Una volta definito il Set di Istruzioni e progettato il DATAPATH, il passo successivo del progetto di una CPU è il progetto dell Unità di Controllo (CONTROLLER). Il CONTROLLER è una RSS: il suo funzionamento può essere specificato tramite un diagramma degli stati. Il CONTROLLER (come tutte le RSS) permane in un determinato stato per un ciclo di clock e transita (può transitare) da uno stato all altro in corrispondenza degli istanti di sincronismo (fronti del clock). Ad ogni stato corrisponde quindi un ciclo di clock. Le micro-operazioni che devono essere eseguite in quel ciclo di clock sono specificate (in linguaggio RTL) nel diagramma degli stati che descrive il funzionamento del CONTROLLER all interno degli stati. A partire dalla descrizione RTL si sintetizzano poi i segnali di controllo che devono essere inviati al DATAPATH per eseguire le operazioni elementari associate ad ogni stato. 20

Il diagramma degli Ready? MAR <- PC IR <- M [MAR] INSTRUCTION FETCH stati del controller PC<- PC+4 A <- RS1 B <- RS2 INSTRUCTION DECODE * Qui non si sa ancora quale sia l istruzione ma il trasferimento ai registri è fatto comunque!! Data transfer ALU Oltre a decodificare l istruzione si prelevano gli operandi sorgente dal RF (anche se non utilizzati!) e si incrementa il PC. N.B. I primi tre stadi sono comuni a tutte le istruzioni Set Jump Branch 21

Estrazione automatica dei registri durante la fase di decode di una istruzione (qualsiasi) B A I Codice operativo < RS2/Rd RS1 Operando immediato di 16 bit R Codice operativo RS2 RS1 Rd Estensione al Cod. op (11 bit) J Codice operativo Offset di 26 bit (PC relative) 31 0 Questi 5 + 5 bit sono utilizzati per estrarre, preventivamente e ancora prima di conoscere che tipo di istruzione che è stata letta dalla memoria, dal Register File due registri in A e B. Nel caso di istruzione J non ci sono registri coinvolti e quindi saranno estratti bit corrispondenti all offset. Nel caso di istruzione I, in B potrebbe finire il valore del registro destinazione (e.g. in una LD o operazione ALU (tipo I)). Infine: i 5 + 5 bit rappresentano gli indici (o presunti tali) ma non il valore dei due registri che è contenuto nel Register File.

Gli stati della fase di fetch In questa fase si deve verificare se è presente un interrupt (evento esterno asincrono che la CPU deve servire con apposito software); se l interrupt è presente e può essere servito (IEN = true) si esegue implicitamente l istruzione di chiamata a procedura all indirizzo 0, e si salva l indirizzo di ritorno nell apposito registro IAR; se l interrupt non è presente o le interruzioni non sono abilitate, si va a leggere in memoria la prossima istruzione da eseguire (il cui indirizzo è in PC) Dall ultimo stato dell istruzione precedente (int and IEN) = 0 MAR PC IR M(MAR) Ready = 1 Alla fase di decodifica Ready = 0 (int and IEN) = 1 IAR PC PC 0 IEN 0 IAR: Interrupt Address Register IEN: Interrupt Enable Flag 23

Il diagramma degli stati del controller Ready? IR <- M [PC] PC <- PC +4 A <- RS1 B <- RS2 INSTRUCTION FETCH INSTRUCTION DECODE * Si modifica il DATAPATH in maniera da poter indirizzare la memoria dal PC. Meno stati ma maggiore complessità Data transfer ALU Set Tutte le istruzioni impiegano un clock in meno per essere eseguite! Ma potenzialmente aggiore lentezza -> minore freq. clock Jump Branch 24

Controllo per l istruzione LB (LOAD BYTE) Ready? IR <- M [PC] PC <- PC +4 A <- RS1 B <- RS2 Parte comune LOAD MAR <- A + (IR 15 ) 16 ## IR 15..0 ALU (A) = (RS1) Ready? MDR <- M[MAR] LB C <- (MDR 7 ) 24 ## MDR 7..0 RD <- C Estensione segno ALU RS2 è da intendersi come registro di destinazione 25

Estensione del segno (IR 15 ) 16 ## IR 15..0 IR Da UdC 0 15 31 31 30 17 1615-0 BUS S1 o S0 26

Controllo per le istruzioni di DATA TRANSFER NB: in lettura la parte meno significativa del dato viene letta sempre allineata al registro MDR per permettere il filling Mancano nell esempio SH e SB (sempre unsigned) che corrispondono a attivazione degli specifici WE delle memorie e traslatori dei bytes del registro MDR. Come si realizzerebbero? STORE Byte -> SB Half Word > SH Word -> SW MDR <- M[MAR] C <- (MDR 15 ) 16 ## MDR 15..0 C <-(0) 16 ## MDR. 15..0 RD <- C INIT LB LB LH LH Ready? Il contenuto di A come unsigned MAR <- A + (IR 15 ) 16 ## IR 15..0 LOAD M[MAR] <-MDR LBU LBU LHU LHU LW C <- MDR SW STORE LW C <-(MDR 7 ) 24 ## MDR 7..0 C <- (0) 24 ## MDR 7..0 Ready? MDR <- B 27

Memoria logica Memoria fisica 8 i 8 7 h 7 6 g 6 5 f 5 4 e 4 3 d 2 c 2 l i 1 b h g 1 f e 0 a d bit 31 24 BUS 3 c 0 b a 23 16 15 8 7 0 BUS 2 BUS 1 BUS 0

Trasferimenti BYTE, HW I trasferimenti di bytes sono SEMPRE considerati allineati I trasferimenti di HW debbono avvenire a indirizzi multipli di 2 I trasferimenti di Word debbono sempre avvenire a indirizzi multipli di 4 In caso di disallineamento: fault Nel caso di store di dati di dimensione inferiore alla word NON si ha estensione del segno La lettura/scrittura di bytes e HW (a causa del reciproco disallineamento fra i registri e la memoria) implica che fra i registri e la memoria siano interposti dei mux/demux (realizzati con tristate) Registro MDR Come sono attivati i WE delle memorie? Progettare la rete Memoria 29

Trasferimento unsigned Trasferimenti BYTE, HW MDR 31 24 23 16 0 Solo in lettura 0 Bit più signif. byte precedenti Mux Demux Mux Demux I MUX 23-16 e 31-24 hanno come ingresso anche il bit 7 del byte 7-0 della memoria (LB) e il bit 15 del byte 15-8 della memoria (LH) Ad esempio in una LB il MUX 7-0 si collega direttamente alla memoria mentre i MUX 15-8, 23-16 e 31-24 si collegano al bit 7 del MUX 7-0 proveniente dalla memoria. In una SH a indirizzo multiplo di 2 e non di 4 il DEMUX 7-0 dal MDR si collega alla memoria 23-16 e il DEMUX 15-8 alla memoria 31-24. Gli altri due bytes della memoria rimangono invariati Memoria 30

Registro (formato R) Immediato (formato I) Esempi di istruzioni ALU Temp <- B Temp <- (IR 15 ) 16 ## IR 15..0 Il contenuto dei registri come signed se op aritmetica Duplicando i percorsi si potrebbe risparmiare il passaggio in TEMP ADD C <- A + Temp AND C <- A and Temp Lo stesso schema si può usare per gli shift etc. SUB XOR OR C <- A - Temp C <- A xor Temp C <- A or Temp RD <- C INIT 31

Controllo per le istruzioni di SET (confronto) ex. SLT R1,R2,R3 Duplicando i percorsi si potrebbe risparmiare il passaggio in TEMP Registro (formato R) Immediato (formato I) Temp<- B Temp <- (IR 15 ) 16 ## IR 15..0 SEQ SLT SGE A = Temp A < Temp A >= Temp Il contenuto dei registri come signed SNE SGT SLE A! = Temp A > Temp A <= Temp I micropassi sono eseguiti in ALU ma il risultato NON è memorizzato in un registro: i flag sono utilizzati dalla ALU per impostare (almeno) il bit 0 del registro C YES C <- 1 Il risultato del test è un input per il controller! NO C <- 0 RD <- C INIT 32

Per il salvataggio in R31 JALR JR JAL Controllo per le istruzioni di JUMP C <- PC JALR JMP C <- PC JAL Istruzione formato I PC <- A Istruzione formato J PC <- PC + (IR 25 ) 6 ## IR 25..0 (IR15)16 ## IR15..0 JALR JAL JR R31 <- C JALR JAL JMP INIT 33

Controllo per le istruzioni BRANCH A = 0 A! = 0 di BRANCH Ex. BNEQZ R5, 100 Il controllo se 0 (o!=0) è fatto sull intero registro A (a 32 bit) e non solo sul bit meno significativo YES BEQZ NO YES BNEZ NO PC <- PC + (IR 15 ) 16 ## IR 15..0 INIT 34

Numero di clock necessari per eseguire le istruzioni Istruzione Cicli Wait Totale Load 6 2 8 Store 5 2 7 ALU 5 1 6 Set 6 1 7 Jump 3 1 4 Jump and link 5 1 6 Branch (taken) 4 1 5 Branch (not taken) 3 1 4 CPI = n N i CPIi numero totale di istruzioni i = 1 ( * ) Esempio su DLX LOAD: 21%, STORE: 12%, ALU: 37%, SET: 6%, JUMP: 2% BRANCH (taken): 12%, BRANCH (not-taken): 11% CPI = 6.3 35

Controllo cablato ( hardwired ) 2 28 righe U.d.C. Segnali di controllo Rete combinatoria che genera uscite e stato futuro 40 Datapath Int e ready Opcode + OpCode Extension 2 6+11 3 6 Stato presente Stato futuro Rs1, Rs2, Rd IR 25..0 Flag INSTRUCTION REGISTER (IR) 32 bit dalla memoria - Indici di Rs1, Rs2 e Rd provengono da IR - IR 25..0 sono portati ai bus S1 ed S2 del data path attraverso due buffer tristate - U.d.C. genera anche i segnali di comando per la memoria (MEMRD e MEMWR) 36

I passi dell esecuzione delle istruzioni Nel DLX l esecuzione di tutte le istruzioni può essere scomposta in 5 passi, ciascuno eseguito in uno o più cicli di clock. Tali passi sono detti: 1) FETCH: l istruzione viene prelevata dalla memoria e posta in IR. 2) DECODE: l istruzione in IR viene decodificata e vengono prelevati gli operandi sorgente dal Register File. 3) EXECUTE: elaborazione aritmetica o logica mediante la ALU. 4) MEMORY: accesso alla memoria e, nel caso di BRANCH aggiornamento del PC ( branch completion ). 5) WRITE-BACK: scrittura sul Register File. 37

Le micro-operazioni eseguite in ciascun passo 1) FETCH MAR ß PC ; IR ß M[MAR]; 2) DECODE A ß RS1, B ß RS2, PC ß PC+4 38

Le micro-operazioni eseguite in ciascun passo 3) EXECUTE MEMORIA: MAR ß A + (IR 15 ) 16 ## IR 15..0 ; MDR ß B; ALU: C <- A op B (oppure A op (IR 15 ) 16 ## IR 15..0 ) ; (utilizzano ALU, S1, S2, dest) (NB: serve nelle Store ove RD=RS2 operazione non significativa nelle LOAD) C <- sign( A op B (oppure A op (IR 15 ) 16 ## IR 15..0 )); se SCn BRANCH: Temp ß PC + (IR 15 ) 16 ## IR 15..0 ) ; (utilizza ALU, S1, S2, dest: qui non si sa ancora se si deve J e JAL saltare) Temp PC + (IR 25 ) 6 ## IR 25..0 ) ; ß JR e JALR Temp A; ß 39

Le micro-operazioni eseguite in ciascun passo 4) MEMORY Memoria: MDR ß M[MAR]; (LOAD) M[MAR] ß MDR; (STORE) BRANCH: If (Cond) PC ß Temp; [A] è il registro che condiziona il salto (Cond) ; JAL e JALR: C ß PC; 40

Le micro-operazioni eseguite in ciascun passo 5) WRITE-BACK istruzioni diverse da J, JR, JAL, JALR C ß MDR; (se è una LOAD due micropassi)) RD ß C ; istruzioni J, JR, JAL, JALR PC ß Temp; RD ß C ; 41