Implementazione semplificata



Похожие документы
Il Processore: l Unità di Controllo Principale Barbara Masucci

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

Richiami sull architettura del processore MIPS a 32 bit

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

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

Richiami sull architettura del processore MIPS a 32 bit

L'architettura del processore MIPS

L unità di controllo di CPU a singolo ciclo

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

Elementi base per la realizzazione dell unità di calcolo

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

La Microarchitettura. Davide Bertozzi

Progetto CPU (ciclo singolo) Salvatore Orlando

CPU a ciclo multiplo

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

Architettura degli Elaboratori

Il linguaggio macchina

Introduzione all'architettura dei Calcolatori. Maurizio Palesi

Esercitazione 06 Progettazione di una CPU RISC-V

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

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

Architettura di tipo registro-registro (load/store)

1. L istruzione li $a0, è un istruzione standard del processore MIPS? Se no, a quali istruzioni corrisponde e come viene eseguita?

CALCOLATORI ELETTRONICI 15 aprile 2014

Транскрипт:

Il processore 168

Implementazione semplificata Copre un sottoinsieme limitato di istruzioni rappresentative dell'isa MIPS aritmetiche/logiche: add, sub, and, or, slt accesso alla memoria: lw, sw trasferimento di controllo: beq, j Ogni ciclo di clock viene eseguita una istruzione completa il ciclo di clock è sufficientemente lungo da permettere l'esecuzione dell'istruzione con latenza più alta più avanti introdurremo una implementazione basata su pipeline Assumiamo che la memoria che tiene le istruzioni (read-only) e la memoria che tiene i dati (read/write) siano separate possiamo leggere e scrivere nello stesso ciclo di clock 169

Cosa fa un processore Per ogni istruzione: legge (fetch) dalla memoria l'istruzione il cui indirizzo è nel PC legge dei registri in base a quanto specificato nell'istruzione A seconda dell'istruzione: usa la ALU per calcolare un risultato aritmetico/logico un indirizzo di memoria (registro + offset) l'indirizzo di un branch target accede alla memoria per load/store aggiorna il PC con PC + 4 o con un indirizzo target 170

Risultato finale 171

Componenti necessari Fetch dell'istruzione a partire dal Program Counter PC è un registro a 32 bit (indirizzo in memoria) nella fase di fetch è utile anche calcolare PC + 4 172

Datapath della fetch NB: non è detto che PC + 4 sia il valore definitivo con cui aggiornare il PC 173

Componenti necessari Istruzioni di tipo R lettura di due registri operazioni usando l'alu scrittura di un registro 174

Componenti necessari Istruzioni di load/store Lettura di uno (lettura) o due (scrittura) registri Calcolo dell'indirizzo usando l'offset di 16 bit (signextended a 32 bit) usando l'alu Load: lettura dalla memoria e scrittura di un registro Store: scrittura in memoria del valore di un registro 175

Datapath combinato per istruzioni R e load/store 0: usa valore registro rt (istruzione R) 1: usa offset nell'istruzione (load/store) 0: usa output dell'alu (istruzione R) 1: usa dati letti da memoria (load) I segnali di controllo (in blu) vengono settati dalla logica di controllo (vedi oltre) 176

Componenti necessari Istruzioni di branch Lettura degli operandi dai registri Confronto usando l'alu (sottrazione e controllo dello Zero) Calcolo dell'indirizzo di destinazione sign-extend e shift left di due bit dell'etichetta addizione con PC + 4 (già calcolato nella fase di fetch) 177

Datapath per confronti e branch L'ALU viene usata per il confronto Sign-extend, Shift left 2 e Add vengono usati per il calcolo dell'indirizzo I segnali di controllo (in blu) vengono settati dalla logica di controllo (vedi oltre) 178

Datapath combinato: istruzioni R, load/store e branch 0: usa PC+4 1: usa indirizzo calcolato (branch) I segnali di controllo (in blu) vengono settati dalla logica di controllo (vedi oltre) 179

Controllo Il datapath che abbiamo costruito ha 7 segnali di controllo RegWrite, ALUSrc, PCSrc, MemWrite, MemtoReg, MemRead a 1 bit ALU Operation a 4 bit L'unità di controllo del processore ha il compito di generare, direttamente o indirettamente, quei segnali Logica combinatoria l'input è dato dall'istruzione in output genera i segnali di controllo Implementata in modo gerarchico una unità di controllo specifica per la ALU una unità di controllo principale 180

Controllo della ALU L'unità di controllo della ALU deve generare in output i segnali di controllo per la ALU Per le istruzioni R la funzione è data dal codice funct nell'istruzione Per le istruzioni load/store la funzione è sempre add Per la funzione beq la funzione è sempre subtract 181

Controllo della ALU L'input al circuito che costituisce l'unità di controllo della ALU è quindi dato da: due bit che indicano a che categoria appartiene l'istruzione il codice funct dell'istruzione per le istruzioni R I primi due bit (chiamati ALUOp) sono settati dall'unità di controllo principale XXXXXX nella tabella significa don't care 182

Simplicity favors regularity opcode sempre in lettura in lettura, tranne che per la read in scrittura per istruzioni R e per la read sign-extend e somma 183

Datapath combinato con campi delle istruzioni 0: usa rt per scrivere (load) 1: usa rd per scrivere (istruzione R) 184

Significato dei segnali 185

Unità di controllo principale L'input è costituito esclusivamente dall'opcode dell'istruzione X significa don't care 186

Datapath con unità di controllo Il segnale PCSrc dipende sia da un segnale di controllo che dall'output dell'alu 187

Datapath con unità di controllo Istruzioni R 188

Datapath con unità di controllo 189

Datapath con unità di controllo Load 190

Datapath con unità di controllo 191

Datapath con unità di controllo Branch-on-equal 192