Caratteristiche principali dell’architettura del processore MIPS

Slides:



Advertisements
Presentazioni simili
Circuiti Aritmetico-Logici
Advertisements

La struttura fisica e logica di un elaboratore
Architettura di un sistema informatico Hardware
Chiamate a Procedure. Per lesecuzione di una procedura, un programma deve eseguire i seguenti sei passi: mettere i parametri in un posto dove la procedura.
Il Linguaggio Macchina
Architetture dei Calcolatori (Lettere j-z) Il Processore (2)
Università degli Studi di Roma La Sapienza Architettura degli elaboratori II Funzioni.
2 Sistema composto da un numero elevato di componenti, in cui ogni componente svolge una sua funzione elaborazione dati memorizzazione dati trasferimento.
1 Corso di Informatica (Programmazione) Lezione 4 (24 ottobre 2008) Architettura del calcolatore: la macchina di Von Neumann.
Caratteristiche principali dell’architettura del processore MIPS
Il processore PD32.
Schema di principio del SCA di una MMU Memory Management Unit
Criticità sui dati Consideriamo una sequenza di 5 istruzioni
Il pipelining E’ una tecnica Analogia con la catena di montaggio
Il pipelining E’ una tecnica Analogia con la catena di montaggio
Criticità sui dati (1° esempio)
Caratteristiche principali dell’architettura del processore MIPS
Criticità sul controllo
Il pipelining: tecniche di base Lucidi fatti in collaborazione con lIng. Valeria Cardellini.
Criticità sui dati (esempio da fare on line)
Criticità sul controllo
Criticità sul controllo
Il livello Microarchitetturale
Il Linguaggio Macchina
Com’è fatto un elaboratore?
3. Architettura Vengono descritte le principali componenti hardware di un calcolatore.
Estensioni allarchitettura di Von Neumann Vito Perrone Corso di Informatica A per Gestionali.
EVOLUZIONE DEL PC Legge di Moore: La potenza dei calcolatori raddoppia ogni 18 mesi Metà anni 80 (Personal Computer IBM AT) Architettura 16 bit interna,
Fondamenti di Informatica Laurea in Ingegneria Civile e Ingegneria per lambiente e il territorio Il calcolatore Stefano Cagnoni e Monica Mordonini Dipartimento.
L’Architettura del Sistema di Elaborazione
UNIVERSITA’ STUDI DI ROMA “FORO ITALICO”
I vettore interruzioni
Architetture dei Calcolatori (Lettere j-z ) Il Processore
Architettura del calcolatore
Dimitri Caruso Classe 2^ Beat ISIS G. Meroni Anno Scolastico 2007/08
Calcolatori Elettronici Introduzione al Pipelining Francesco Lo Presti Rielaborate da Salvatore Tucci.
ARCHITETTURA DI UN ELABORATORE
Architettura degli Elaboratori II (canale P-Z) Modi di Indirizzamento Dott. Franco Liberati.
Sistemi di elaborazione e trasmissione delle informazioni
Informatica Lezione 4 Scienze e tecniche psicologiche dello sviluppo e dell'educazione Anno accademico:
1 Università di Pavia - corso di Calcolatori Elettronici C code: L1:g = g + A[i]; i = i + j; if (i != h) goto L1; MIPS code: L1:add $t1, $s3, $s3# $t1.
Arch. Elab. - S. Orlando 1 Esercitazione su Instruction Level Parallelism Salvatore Orlando.
Architettura di una CPU
Corso di Laurea in Informatica Architettura degli elaboratori a.a La macchina programmata Instruction Set Architecture (1) Schema base di esecuzione.
Calcolatori Elettronici Introduzione al Pipelining
Architettura del calcolatore
Calcolatori Elettronici Il Processore
Informatica Lezione 5 Scienze e tecniche psicologiche dello sviluppo e dell'educazione (laurea triennale) Anno accademico:
Calcolatori Elettronici Il Processore (2)
Corsi di Laurea in Biotecnologie
Corso di Laurea in Informatica Architettura degli elaboratori a.a La macchina programmata Instruction Set Architecture (2) Istruzioni I-type Indirizzamento.
Architettura di un calcolatore e linguaggio macchina.
Università degli Studi di Bergamo Facoltà di Lingue e Letterature Straniere Facoltà di Lettere e Filosofia A.A Informatica generale 1 Appunti.
Corso di Laurea in Scienze e Tecnologie Chimiche corso di Informatica Generale Paolo Mereghetti DISCo – Dipartimento di Informatica, Sistemistica e Comunicazione.
L’esecuzione dei programmi
Informatica Generale Marzia Buscemi
Corso di Laurea in Biotecnologie corso di Informatica Paolo Mereghetti DISCo – Dipartimento di Informatica, Sistemistica e Comunicazione.
Il calcolatore Stefano Cagnoni e Monica Mordonini
Corso di Laurea in Informatica Architettura degli elaboratori a.a Programmazione Assembly: procedure (1) Supporto hardware alle procedure Passaggio.
Hardware Struttura fisica (architettura) del calcolatore formata da parti meccaniche, elettriche, elettroniche.
Informatica Lezione 4 Psicologia dello sviluppo e dell'educazione (laurea magistrale) Anno accademico:
Struttura Fondamentale degli Elaboratori Elaboratore –È un sistema numerico –È un sistema automatico –È un sistema a programamzione registrabile –Ha una.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Il sistema di elaborazione Marco D. Santambrogio – Ver. aggiornata al 15 Maggio.
Il Processore Il processore è la componente dell’unità centrale che elabora le informazioni contenute nella memoria principale L’elaborazione avviene eseguedo.
Corso di Laurea in Informatica Architettura degli elaboratori a.a La macchina programmata (3) Istruzioni J-type Istruzioni di salto Istruzioni.
Presentazione di sistemi Ambrosio Federica Anna Esposito 3C inf.
Click to add text L’ Unità di Elaborazione. Struttura : Unità di controllo: coordina attività CPU ALU: unità aritmetico-logica, esegue operazioni tra.
I Microprocessori Unità 3 del libro Internet Working Sistemi e reti.
Hardware Struttura fisica (architettura) del calcolatore formata da parti meccaniche, elettriche, elettroniche.
Cammino dei Dati (Datapath)
Transcript della presentazione:

Richiami sull’architettura del processore MIPS a 32 bit Lucidi fatti in collaborazione con dell’Ing. Valeria Cardellini

Caratteristiche principali dell’architettura del processore MIPS E’ un’architettura RISC (Reduced Instruction Set Computer) Esegue soltanto istruzioni con un ciclo base ridotto, con l’obiettivo di migliorare le prestazioni fornite dalle architetture CICS Le istruzioni più comuni vengono eseguite nel modo più veloce possibile Si riduce la flessibilità di indirizzamento della memoria (p.e. non si prevedono accessi in memoria di tipo indiretto) Architettura di tipo registro-registro (load/store) Gli operandi della ALU possono provenire solo dai registri di uso generale interni al processore e non possono provenire direttamente dalla memoria Operazioni di load: caricamento dei dati dalla memoria ai registri del processore Operazioni di store: memorizzazione dei dati contenuti nei registri del processore in memoria

Richiami riguardanti … Sottoinsieme di istruzioni (sufficiente però a far vedere l’architettura del processore) Esecuzione delle istruzioni (cicli istruzioni) Struttura del processore (tre possibili soluzioni, SCA-SCO)

Insieme di istruzioni semplificato del MIPS Consideriamo un’implementazione semplificata del processore MIPS In particolare, no istruzioni di I/O Tre classi di istruzioni Istruzioni logico-aritmetiche Istruzioni di trasferimento da/verso la memoria (load/store) Istruzioni di salto (condizionato e incondizionato) per il controllo del flusso di programma

Esempi di istruzioni Istruzioni logico-aritmetiche (tra registri) add $s0, $s0, $s1 # $s0 = $s0 + $s1 and $s1, $s2, $s3 # $s1 = $s2 && $s3 Istruzioni logico-aritmetiche (con immediato) addi $t0, $t0, 1 # $t0 = $t0 + 1 Istruzioni di trasferimento dati (da/verso la memoria) lw $s1, 8($s2) # $s1 = Mem[$s2+8] sw $s1, 8($s2) # Mem[$s2+8] = $s1

Esempi di istruzioni (2) Istruzioni di salto condizionato beq $s0, $s1, L1 # salta all’indirizzo L1 se ($s0 == $s1) bne $s0, $s1, L1 # salta all’indirizzo L1 se ($s0 != $s1) Istruzioni di salto incondizionato j L1 # salta a L1 jr $s1 # salta all’indirizzo in $s1 jal L1 # salta a L1; salva l’indirizzo della prossima istruzione in $ra (vedere lucido successivo)

Registri del processore MIPS a 32 bit 32 registri di uso generale Per convenzione si usano nomi simbolici preceduti da $ $s0, $s1, …, $s7 (detti registri saved) per contenere variabili $t0, $t1, …, $t9 (detti registri temporanei) per contenere variabili temporanee I registri possono anche essere indicati dal loro numero preceduto da $: $0, …, $31 Dei 32 registri alcuni sono special-purpose, ossia dedicati per l’esecuzione di alcune istruzioni Es.: $ra (= $31) è il registro di ritorno 32 registri in virgola mobile $f0, …, $f31

Formato delle istruzioni MIPS Tutte le istruzioni MIPS hanno la stessa lunghezza (32 bit) Le istruzioni MIPS che vedremo sono di 3 formati Formato R (registro) Istruzioni logico-aritmetiche Formato I (immediato) Istruzioni con operandi immediati Istruzioni di accesso in memoria (load/store) Istruzioni di salto condizionato Formato J (jump) Istruzioni di salto incondizionato I diversi formati sono riconosciuti tramite il valore dei 6 bit del primo campo, detto codice operativo (opcode), che indica anche come trattare i rimanenti 26 bit dell’istruzione

Formato delle istruzioni MIPS (2) op indirizzo di destinazione 26 31 6 bit 26 bit rs rt rd shamt funct 6 11 16 21 5 bit indirizzo/immediato 16 bit Formato R Formato I Formato J I campi delle istruzioni op (opcode): identifica il formato di istruzione rs, rt, rd: registri sorgente (rs e rt) e registro destinazione (rd) shamt (shift amount): scorrimento funct: indica la variante specifica dell’operazione nel campo op indirizzo/immediato: offset dell’indirizzo o valore immediato indirizzo di destinazione: una parte dell’indirizzo di destinazione del salto incondizionato

Modalità di indirizzamento Le modalità di indirizzamento indicano i diversi modi con i quali fare riferimento agli operandi nelle istruzioni MIPS ha solo 5 modalità di indirizzamento: tramite registro immediato tramite base o spiazzamento relativo al Program Counter pseudo-diretto Una singola istruzione può usare più modalità di indirizzamento (es.: addi $t0, $t0, 4) AAC - Valeria Cardellini, A.A. 2007/08

Modalità di indirizzamento (2) Indirizzamento tramite registro L’operando è il contenuto di un registro del processore Esempio: add $s0, $s1, $s2 (formato tipo R) Indirizzamento immediato L’operando è una costante, il cui valore è specificato nell’istruzione Esempio: addi $s0, $s1, 1 (formato tipo I) Indirizzamento con base o spiazzamento L’operando è in una locazione di memoria, il cui indirizzo si ottiene sommando il contenuto di un registro base ad un valore costante (offset o spiazzamento) specificato nell’istruzione Esempio: lw $t1, 4($s0) (formato tipo I)

Modalità di indirizzamento (3) Indirizzamento relativo al Program Counter L’operando è in una locazione di memoria, il cui indirizzo si ottiene sommando il contenuto del Program Counter (PC) ad un valore costante (offset o spiazzamento) specificato nell’istruzione Esempio: beq $s0, $s1, L1 (formato tipo I) Indirizzo= PC+4+L1 Indirizzamento pseudo-diretto Una parte dell’indirizzo è presente come valore costante (offset) nell’istruzione, ma deve essere completato L’indirizzo di destinazione del salto si ottiene traslando a sinistra di 2 bit i 26 bit di offset specificati nell’istruzione e concatenando i 28 bit così ottenuti con i 4 bit più significativi del PC Esempio: j L2 (formato tipo J) Indirizzo = 4 bit più sign.di (PC+4)*L2*00

Il processore (1) Distinguiamo unità di elaborazione (SCA) e unità di controllo (SCO) Unità di elaborazione dati Hardware per compiere le operazioni necessarie all’esecuzione delle istruzioni Unità di controllo Riceve dei segnali di ingresso e genera in uscita segnali per la lettura/scrittura degli elementi di memoria, segnali di selezione per i multiplexer, segnali per il controllo della ALU

Il processore (2) Implementazione dell’unità di elaborazione a ciclo singolo tutte le istruzioni vengono eseguite in un solo ciclo di clock, la cui durata è determinata dal percorso critico Implementazione dell’unità di elaborazione a ciclo multiplo l’esecuzione di un’istruzione richiede più cicli di clock Implementazione dell’unità di elaborazione a pipeline nel SCA ci sono tante istruzioni per quanti sono gli stadi della pipeline

I cinque passi delle istruzioni I cinque passi di esecuzione delle istruzioni prelievo dell’istruzione (Instruction fetch: IF) decodifica dell’istruzione/prelievo dei dati dai registri (Instruction decode: ID) esecuzione/calcolo dell’indirizzo di memoria (Execute: EX) accesso alla memoria in lettura o scrittura (Memory access: MEM) scrittura del risultato nel registro destinazione (Write-back: WB) IF Instruction Fetch ID Instruction Decode EX EXecute MEM MEMory access WB Write-Back

Esecuzione delle istruzioni logico-aritmetiche Esempio: op $x, $y, $z Un’istruzione logico-aritmetica viene eseguita in 4 passi Prelievo dell’istruzione dalla memoria istruzioni e incremento del PC Lettura dei due registri sorgente ($y e $z) dal banco dei registri Esecuzione dell’operazione (op) da parte dell’ALU sui valori letti dal banco dei registri Scrittura del risultato dell’ALU nel registro destinazione ($x) del banco dei registri

Esecuzione delle istruzioni di load Esempio: lw $x, offset($y) Un’istruzione di load viene eseguita in 5 passi Prelievo dell’istruzione dalla memoria istruzioni e incremento del PC Lettura del registro base ($y) dal banco dei registri Esecuzione dell’operazione (somma) da parte dell’ALU per calcolare l’indirizzo di memoria ($y + offset), notare che i registri sono a 32 bit mentre l’offset è di 16 bit (estensione del segno) Lettura del dato dalla memoria dati (Mem[$y + offset]) utilizzando come indirizzo il risultato della ALU Scrittura del dato proveniente dalla memoria nel registro destinazione ($x) del banco dei registri

Esecuzione delle istruzioni di store Esempio: sw $x, offset($y) Un’istruzione di store viene eseguita in 4 passi Prelievo dell’istruzione dalla memoria istruzioni e incremento del PC Lettura del registro base ($y) e del valore da memorizzare in memoria ($x) dal banco dei registri Esecuzione dell’operazione (somma) da parte dell’ALU per calcolare l’indirizzo di memoria ($y + offset), notare che i registri sono a 32 bit mentre l’offset è di 16 bit (estensione del segno) Scrittura del dato proveniente dal banco dei registri ($x) nella memoria dati (Mem[$y + offset]) utilizzando come indirizzo il risultato della ALU

Esecuzione delle istruzioni di salto condizionato Esempio: beq $x, $y, offset Un’istruzione di salto condizionato viene eseguita in 4 passi Prelievo dell’istruzione dalla memoria istruzioni e incremento del PC Lettura dei due registri sorgente ($x e $y) dal banco dei registri Esecuzione dell’operazione (sottrazione) da parte dell’ALU per confrontare i valori letti dal banco dei registri ($x - $y) e calcolo dell’indirizzo di destinazione del salto L’uscita Zero della ALU viene utilizzata per decidere quale valore deve essere memorizzato nel PC: (PC+4) oppure (PC+4+offset, notare che il registro PC è a 32 bit mentre l’offset è di 16 bit (estensione del segno)

Esecuzione delle istruzioni Per ogni tipo di istruzione, i primi due passi da eseguire sono uguali Prelievo dell’istruzione dalla memoria istruzioni e incremento del PC Lettura di uno o due registri dal banco dei registri, selezionando i registri a cui accedere tramite i campi dell’istruzione Le azioni successive dipendono dal tipo di istruzione (codice operativo), sebbene tutte le istruzioni utilizzino l’ALU dopo il secondo passo Le istruzioni logico-aritmetiche per eseguire l’operazione Le istruzioni di load e store per calcolare l’indirizzo di memoria Le istruzioni di salto condizionato per effettuare il confronto

Esecuzione delle istruzioni (2) Dopo aver utilizzato l’ALU, le azioni richieste per completare le varie istruzioni si differenziano ulteriormente Le istruzioni logico-aritmetiche devono scrivere il risultato della ALU nel registro destinazione Le istruzioni di load richiedono l’accesso in lettura alla memoria dati ed eseguono il caricamento del dato letto nel registro di destinazione Le istruzioni di store richiedono l’accesso in scrittura alla memoria dati ed eseguono la memorizzazione del dato proveniente dal registro sorgente Le istruzioni di salto condizionato devono scrivere il valore del PC in base al risultato del confronto

SCO-SCA uniciclo

Struttura di base del processore MIPS Per eseguire tutte le istruzioni in un solo ciclo di clock Ogni risorsa/unità funzionale può essere utilizzata una sola volta per istruzione Occorre duplicare le risorse/unità funzionali di cui si ha bisogno più di una volta nello stesso ciclo di clock Memoria dati distinta dalla memoria istruzioni ALU e sommatori Alcune risorse/unità funzionali possono essere condivise da differenti flussi di esecuzione Tramite l’introduzione di multiplexer

L’unità di elaborazione a ciclo singolo con i segnali di controllo

Il significato dei segnali di controllo Segnale Effetto quando vale 0 Effetto quando vale 1 RegDst Registro destinazione = rt Registro destinazione = rd RegWrite Nessuno Nel registro indicato sull’ingresso Write register viene scritto il valore Write data ALUSrc Il secondo operando di ALU viene da Read data 2 Il secondo operando di ALU viene dall’estensione di segno PCSrc = Branch AND zero Scrittura di PC con PC+4 Scrittura di PC con l’output del sommatore per il branch MemRead Lettura della locazione di memoria indicata da Address MemWrite Scrittura della locazione di memoria indicata da Address MemtoReg L’ingresso Write data (banco registri) viene dalla ALU L’ingresso Write data (banco registri) viene dalla memoria dati

L’unità di elaborazione a ciclo singolo con l’unità di controllo

Il valore dei segnali di controllo Istruzione RegDst ALUSrc MemtoReg RegWrite MemRead MemWrite Branch ALUOp tipo-R 1 10 lw 00 sw X beq 01

SCO-SCA multiciclo

L’unità di elaborazione a ciclo multiplo L’esecuzione di un’istruzione è distribuita su più cicli Si utilizza un ciclo di clock di durata inferiore rispetto a quello dell’implementazione a ciclo singolo Implementazione dell’unità di elaborazione a ciclo multiplo Più complessa del ciclo singolo Ogni fase di esecuzione di un’istruzione richiede un ciclo di clock Un’unità funzionale può essere usata più di una volta per istruzione in cicli differenti (condivisione di unità funzionali ed eliminazione di ridondanze hardware) Singola unità di memoria per istruzioni e dati anziché due memorie distinte Una sola ALU anziché una ALU e due sommatori Occorre introdurre dei registri interni addizionali per memorizzare i valori da usare nei cicli di clock successivi