Architettura di tipo registro-registro (load/store)



Documenti analoghi
Richiami sull architettura del processore MIPS a 32 bit

Richiami sull architettura del processore MIPS a 32 bit

CALCOLATORI ELETTRONICI 15 aprile 2014

CALCOLATORI ELETTRONICI 29 giugno 2010

CALCOLATORI ELETTRONICI 29 giugno 2011

CALCOLATORI ELETTRONICI 31 marzo 2015

CPU. Maurizio Palesi

Esercitazione sulle CPU pipeline

L unità di controllo. Il processore: unità di controllo. Le macchine a stati finiti. Struttura della macchina a stati finiti

L unità di controllo di CPU multi-ciclo

Calcolatori Elettronici

Architettura del calcolatore

Tutorato Architettura degli elaboratori

Calcolatori Elettronici

Architettura (10/9/2003) Pag. 1/6. Cognome e Nome (in stampatello):

L architettura di riferimento

Hazard sul controllo. Sommario

Il processore. Il processore. Il processore. Il processore. Architettura dell elaboratore

ESERCIZIO 1 Riferimento: PROCESSORE PIPELINE e CAMPI REGISTRI INTER-STADIO

Architettura hardware

ARCHITETTURE MICROPROGRAMMATE. 1. Necessità di un architettura microprogrammata 1. Cos è un architettura microprogrammata? 4

ESERCIZIO 1 Riferimento: PROCESSORE PIPELINE e CAMPI REGISTRI INTER-STADIO

L'architettura del processore MIPS

La macchina programmata Instruction Set Architecture (1)

Lezione n.19 Processori RISC e CISC

CALCOLATORI ELETTRONICI A cura di Luca Orrù. Lezione n.7. Il moltiplicatore binario e il ciclo di base di una CPU

Calcolatori Elettronici

Calcolatori Elettronici. La Pipeline Criticità sui dati Criticità sul controllo Cenni sull unità di controllo

Architettura della CPU e linguaggio assembly Corso di Abilità Informatiche Laurea in Fisica. prof. ing. Corrado Santoro

Il processore: unità di elaborazione

Struttura del calcolatore

Controllo con macchina a stati finiti

MODELLO DLX IN UNISIM

Calcolatori Elettronici

Sommario Introduzione al linguaggio Assembly. Calcolatori Elettronici Prof. Gian Luca Marcialis. Le operazioni fondamentali

Architettura hw. La memoria e la cpu

L unità di elaborazione pipeline L unità Pipelining

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

Corso di Calcolatori Elettronici I A.A Il processore Lezione 18

Architettura di un calcolatore: introduzione

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

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

Testi di Esercizi e Quesiti 1

Lezione 3: Architettura del calcolatore

Ciclo di Istruzione. Ciclo di Istruzione. Controllo. Ciclo di Istruzione (diagramma di flusso) Lezione 5 e 6

Il Processore: l Unità di Controllo Principale Barbara Masucci

L unità di controllo di CPU a singolo ciclo

Architettura del Set di Istruzioni (ISA)

Lezione 1: L architettura LC-3 Laboratorio di Elementi di Architettura e Sistemi Operativi 10 Marzo 2014

C. P. U. MEMORIA CENTRALE

UNITÀ DI ELABORAZIONE (CPU) UNITÀ DI ELABORAZIONE (CPU) Opcode OpCode Operazione

CALCOLATORI ELETTRONICI A cura di Luca Orrù. Lezione n.6. Unità di controllo microprogrammata

L unità di controllo di CPU a singolo ciclo

Università degli Studi di Cassino e del Lazio Meridionale

Università degli Studi di Cassino

Laboratorio di Informatica

Valutazione delle Prestazioni. Valutazione delle Prestazioni. Architetture dei Calcolatori (Lettere. Tempo di risposta e throughput

Elementi di Informatica e Programmazione. # Memoria di massa. Problema: comprare un PC. Architettura del calcolatore. Architettura di Von Neumann

SISTEMI DI ELABORAZIONE DELLE INFORMAZIONI

Progetto CPU (ciclo singolo)

Un circuito integrato è una piastrina di silicio (o chip), quadrata o rettangolare, sulla cui superficie vengono realizzati e collegati

Progetto CPU (ciclo singolo) Salvatore Orlando

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

Architettura degli Elaboratori

ARCHITETTURA DELL ELABORATORE

Il Processore: i registri

Introduzione all'architettura dei Calcolatori

1.4a: Hardware (Processore)

Programmazione dello Z80

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

Valutazione delle Prestazioni

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

Esame di INFORMATICA

CPU pipeline 4: le CPU moderne

Università degli Studi di Cassino

Macchina di von Neumann

Schedulazione dinamica. Elettronica dei Calcolatori 1

Architettura dei calcolatori I parte Introduzione, CPU

Introduzione. Classificazione di Flynn... 2 Macchine a pipeline... 3 Macchine vettoriali e Array Processor... 4 Macchine MIMD... 6

L architettura del calcolatore (Prima parte)

La microarchitettura. Didattica della strumentazione digitale e sistemi a microprocessore anno accademico pagina 1

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

Processore: Datapath & Control. Progetto CPU (ciclo singolo) Rivediamo i formati delle istruzioni. ISA di un MIPS-lite

Laboratorio di Informatica Corso di Laurea in Matematica A.A. 2007/2008

Fasi di creazione di un programma

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

Lezione n.9. Introduzione al linguaggio macchina

Ing. Paolo Domenici PREFAZIONE

Calcolo numerico e programmazione Architettura dei calcolatori

AXO Architettura dei Calcolatori e Sistema Operativo. processo di assemblaggio

Architettura di un calcolatore

introduzione I MICROCONTROLLORI

Von Neumann. John Von Neumann ( )

Calcolatori Elettronici A a.a. 2008/2009

Architettura degli Elaboratori B Introduzione al corso

Progetto CPU a singolo ciclo

Unità di controllo della pipeline

La Macchina Virtuale

Transcript:

Caratteristiche principali dell architettura del processore MIPS E un architettura RISC (Reduced Instruction Set Computer) Esegue soltanto istruzioni con un ciclo base ridotto, cioè costituito da poche attività elementari, 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 dell ALU possono provenire solo dai registri di uso generale interni al processore e non possono provenire direttamente dalla memoria (cache) 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 1

Richiami riguardanti Sottoinsieme di istruzioni sufficiente però a far vedere l architettura del processore Esecuzione delle istruzioni cicli istruzioni semplici Struttura del processore tre possibili soluzioni, SCA-SCO: uniciclo, multiciclo, pipeline 2

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 3

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 (non la implementeremo) Istruzioni di trasferimento dati (da/verso la memoria) lw $s1, 8($s2) # $s1 = Mem[$s2+8] sw $s1, 8($s2) # Mem[$s2+8] = $s1 4

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 memorizzato in $s1 ( non la implementeremo) jal L1 # salta a L1 e salva l indirizzo della prossima istruzione in $ra ( dove $ra = $31, vedere lucido successivo) ( non la implementeremo) 5

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 solo 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 (che non vedremo negli esempi) $f0,, $f31 6

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 (con operandi solo nei registri) Formato I (immediato/indirizzo) Istruzioni con operandi immediati (non le implementeremo) 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 7

Formato delle istruzioni MIPS (2) Formato R Formato I Formato J 31 31 31 op rs rt rd shamt funct 6 bit 5 bit 5 bit 16 bit 26 op 26 6 bit 26 bit indirizzo di destinazione I campi delle istruzioni op (opcode): identifica il formato di istruzione rs, rt, rd: Caso R: registri sorgente (rs e rt) e registro destinazione (rd) Caso load: registro sorgente (rs) e registro destinazione (rt) Caso altre I: registri sorgente (rs e rt) shamt (shift amount): necessario per le operazioni di 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 21 16 6 bit 5 bit 5 bit 5 bit 5 bit 6 bit 26 21 16 op rs rt indirizzo/immediato 11 6 0 0 0 8

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, immediato e tramite registro Istruzione che non implementeremo, 9

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 (che non implementeremo) Uno degli operandi è 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) 10

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 11

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 12

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 (daremo solo cenni perchè simile al PD32) l esecuzione di un istruzione richiede più cicli di clock Implementazione dell unità di elaborazione a pipeline l esecuzione di un istruzione richiede più cicli di clock nel SCA ci sono tante istruzioni per quanti sono gli stadi della pipeline 13

I cinque passi delle istruzioni Ogni istruzione può al più essere eseguita in cinque passi (i primi tre vengono sempre eseguiti): prelievo dell istruzione (Instruction fetch: IF) decodifica dell istruzione/prelievo dei dati dai registri (Instruction decode: ID) Esecuzione e/o 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 14

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

Esecuzione delle istruzioni di load Esempio: lw $x, offset($y) Un istruzione di load viene eseguita in 5 passi 1. Prelievo dell istruzione dalla memoria istruzioni e incremento del PC 2. Lettura del registro base ($y) dal banco dei registri 3. 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) 4. Lettura del dato dalla memoria dati (Mem[$y + offset]) utilizzando come indirizzo il risultato della ALU 5. Scrittura del dato proveniente dalla memoria nel registro destinazione ($x) del banco dei registri 16

Esecuzione delle istruzioni di store Esempio: sw $x, offset($y) Un istruzione di store viene eseguita in 4 passi 1. Prelievo dell istruzione dalla memoria istruzioni e incremento del PC 2. Lettura del registro base ($y) e del valore da memorizzare in memoria ($x) dal banco dei registri 3. 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) 4. Scrittura del dato proveniente dal banco dei registri ($x) nella memoria dati (Mem[$y + offset]) utilizzando come indirizzo il risultato della ALU 17

Esecuzione delle istruzioni di salto condizionato Esempio: beq $x, $y, offset Un istruzione di salto condizionato viene eseguita in 4 passi 1. Prelievo dell istruzione dalla memoria istruzioni e incremento del PC 2. Lettura dei due registri sorgente ($x e $y) dal banco dei registri 3. 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 4. 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) 18

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 19

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 20

SCO-SCA uniciclo 21

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 22

Componenti di base (1) Load (nel seguito non lo evidenzieremo... Ck) PC address Instruction Memory Instruction ALU control ALU zero < Adder sum result

Componenti di base (2) Registers Mem Write 5 5 Reg-sorg 1 Reg-sorg 2 32 (Reg-sorg 1) address Read data 5 32 Reg-dest Data-to-write 32 (Reg-sorg 2) Write data Data Memory Reg Write Mem Read I registri commutano 16 Sign 32 sul fronte positivo extend dei segnali di abilitazione Flip/flop positive/negative edge triggered

Banco dei registri (scrittura) Decoder Reg dest Reg write R 0 R 1 R 31 w 0 w 1 w 31 Data to write

Banco dei registri (scrittura)

Banco dei registri (lettura) con decoder Reg source 1 Reg source 2 Decoder Decoder R 0 R 1 R 31 B 0-1 B 1-2 B 31-1 B 31-2 (Reg source 2) (Reg source 1)

Banco dei registri (lettura) con MUX

HW per eseguire istruzioni CLASSE R ALU operation

HW per eseguire istruzioni LOAD e STORE Manca la parte relativa al fetch, che è identica a quella delle istruzione di classe R

HW per eseguire istruzioni BE e BNE Manca la parte relativa al fetch, che è identica a quella delle istruzione di classe R Lo shift left di 2 bit serve ad avere gli ultimi due bit uguali a 00

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

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 PCSrc = Branch AND zero Il secondo operando di ALU viene da Read data 2 Scrittura di PC con PC+4 Il secondo operando di ALU viene dall estensione di segno Scrittura di PC con l output del sommatore per il branch MemRead Nessuno Lettura della locazione di memoria indicata da Address MemWrite Nessuno 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 33

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

Il valore dei segnali di controllo Istruzione RegDst ALUSrc Memto Reg Reg Write Mem Read Mem Write Branch ALUOp tipo-r 1 0 0 1 0 0 0 10 lw 0 1 1 1 1 0 0 00 sw X 1 X 0 0 1 0 00 beq X 0 X 0 0 0 1 01 35

Controllo ALU L istruzione set on less than non la implementeremo

Estensione a salto incondizionato 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ù significativi di (PC+4)*L2*00

SCO-SCA con salto incondizionato

SCO-SCA multiciclo (cenni) 39

L unità di elaborazione a ciclo multiplo (tecnica utilizzata anche per il PD32) 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 40

SCO per soluzione multiciclo