MODELLO DLX IN UNISIM



Documenti analoghi
Architettura di tipo registro-registro (load/store)

CPU. Maurizio Palesi

Esercitazione sulle CPU pipeline

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

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

CALCOLATORI ELETTRONICI 15 aprile 2014

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

Architettura del calcolatore

CALCOLATORI ELETTRONICI 31 marzo 2015

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

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

CALCOLATORI ELETTRONICI 29 giugno 2011

Hazard sul controllo. Sommario

In realtà, non un solo microprocessore, ma un intera famiglia, dalle CPU più semplici con una sola pipeline a CPU molto complesse per applicazioni ad

Calcolatori Elettronici

L architettura di riferimento

Lezione n.19 Processori RISC e CISC

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

Calcolatori Elettronici

Calcolatori Elettronici

CALCOLATORI ELETTRONICI 29 giugno 2010

Architettura hardware

Schedulazione dinamica. Elettronica dei Calcolatori 1

Calcolatori Elettronici

Università degli Studi di Cassino e del Lazio Meridionale

Architettura del Set di Istruzioni (ISA)

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

Sottoprogrammi: astrazione procedurale

Prova di Laboratorio di Programmazione

Il Processore: i registri

Algoritmi di Ricerca. Esempi di programmi Java

CPU pipeline 4: le CPU moderne

Aggiornato il 18 giugno Questa affermazione richiede una precisazione. A parità di altre condizioni, l eliminazione dello stadio ME allunga la

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

Tutorato Architettura degli elaboratori

Lezione n.9. Introduzione al linguaggio macchina

L unità di controllo di CPU multi-ciclo

INFORMATICA 1 L. Mezzalira

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

Corso di Informatica Applicata. Lezione 3. Università degli studi di Cassino

costruttori e distruttori

Inizializzazione, Assegnamento e Distruzione di Classi

GESTIONE INFORMATICA DEI DATI AZIENDALI

Struttura del calcolatore

Quinto Homework. Indicare il tempo necessario all'esecuzione del programma in caso di avvio e ritiro fuori ordine.

Parte II.2 Elaboratore

Sistemi Operativi. Scheduling della CPU SCHEDULING DELLA CPU. Concetti di Base Criteri di Scheduling Algoritmi di Scheduling

Sistemi Operativi SCHEDULING DELLA CPU. Sistemi Operativi. D. Talia - UNICAL 5.1

La prima applicazione Java. Creazione di oggetti - 1. La prima applicazione Java: schema di esecuzione. Gianpaolo Cugola - Sistemi Informativi in Rete

Lezione 3: Architettura del calcolatore

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

Lezione 16: L architettura LC-3

Fondamenti di Informatica PROBLEMI E ALGORITMI. Fondamenti di Informatica - D. Talia - UNICAL 1

Sistemi Operativi. Interfaccia del File System FILE SYSTEM : INTERFACCIA. Concetto di File. Metodi di Accesso. Struttura delle Directory

Funzioni in C. Violetta Lonati

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

Algoritmo. I dati su cui opera un'istruzione sono forniti all'algoritmo dall'esterno oppure sono il risultato di istruzioni eseguite precedentemente.

Strutture. Strutture e Unioni. Definizione di strutture (2) Definizione di strutture (1)

Calcolatori Elettronici B a.a. 2008/2009

Capitolo Quarto...2 Le direttive di assemblaggio di ASM Premessa Program Location Counter e direttiva ORG

FONDAMENTI di INFORMATICA L. Mezzalira

Laboratorio di Ingegneria del software Sistema di controllo di un ascensore Requisiti preliminari

Introduzione al MATLAB c Parte 2

MIPS Instruction Set 2

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

CPU pipeline 4: le CPU moderne

GESCO MOBILE per ANDROID

Laboratorio di Programmazione 1. Docente: dr. Damiano Macedonio Lezione 18 31/03/2014

Introduzione alle applicazioni di rete

Ing. Paolo Domenici PREFAZIONE

Von Neumann. John Von Neumann ( )

Il simulatore SPIM SPIM

Per scrivere una procedura che non deve restituire nessun valore e deve solo contenere le informazioni per le modalità delle porte e controlli

La memoria centrale (RAM)

C. P. U. MEMORIA CENTRALE

Prestazioni CPU Corso di Calcolatori Elettronici A 2007/2008 Sito Web: Prof. G. Quarella prof@quarella.

13 - Gestione della Memoria nella Programmazione Orientata agli Oggetti

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

Metodi Software per ottenere ILP

Arduino: Programmazione

Architettura di un calcolatore: introduzione

Esercitazione n 4. Obiettivi

Capitolo 6: Modelli di calcolo per linguaggi imperativi e funzionali

10 - Programmare con gli Array

La struttura dati ad albero binario

Integer Java Virtual Machine (IJVM)

MODELLO CLIENT/SERVER. Gianluca Daino Dipartimento di Ingegneria dell Informazione Università degli Studi di Siena

L architettura del calcolatore (Prima parte)

Il calcolatore elettronico. Parte dei lucidi sono stati gentilmente forniti dal Prof. Beraldi

Transcript:

Architettura e descrizione del modello MODELLO DLX IN UNISIM RINGRAZIAMENTI : I materiali per questa presentazione sono tratti dal tutorial ufficiale di UNISIM - https://unisim.org/site/tutorials/start

Layout 2 Architettura DLX (MIPS R2000) Breve ricapitolazione Mappatura dell architettura DLX nel modello UNISIM Spiegazione di un modulo (dettagli del modulo Instruction Memory ) Esercizio Completare il modello DLX Obiettivo: Imparare come si crea un modello complesso

Processore DLX 3 Introdotto da Hennessy e Patterson Architettura RISC Simile a MIPS R2000 (architettura Load/Store) Pipeline con 5 stadi Formato di istruzioni a 32-bit Per l esercizio si usa un modello DLX semplificato Senza la gestione degli hazard Supponiamo che il compilatore abbia inserito delle nop dentro il programma Un ISA ridotto Il processore DLX reale ha più istruzioni di quello che facciamo

Pipeline di DLX 4

DLX modello UNISIM 5 Mappatura della pipeline nei moduli di UNISIM

Mappatura: Instruction Memory 6 Caratteristiche Contiene le istruzioni dentro un array (si occupa anche di fare il fetch delle istruzioni) Contiene il PC e lo incrementa Connessioni Manda l istruzione corrente al modulo Register File Riceve l indirizzo del salto dal modulo ALU

Mappatura: Register File 7 Caratteristiche Legge gli operandi per l istruzione Fa il write-back dei valori calcolati (in EX o MEM) Connessioni Riceve l istruzione dal modulo Instruction Memory Manda l istruzione con gli operandi al modulo ALU Riceve i valori per il write-back dal modulo Multiplexer from Multiplexer

Mappatura: ALU 8 Caratteristiche Calcola i risultati per le istruzioni di tipo ALU Calcola gli indirizzi per gli accessi alla memoria e le istruzioni di salto Connessioni Riceve l istruzione con gli operandi dal modulo RF Manda i risultati al modulo Instruction Memory (salti), al modulo Multiplexer (write-back) o al modulo Data Memory to Register

Mappatura: Data Memory 9 Caratteristiche Contiene la memoria dei dati (un array) Connessioni Riceve le richieste di lettura o scrittura dal modulo ALU Manda i risultati al modulo Multiplexer to Multiplexer

Mappatura: Register 10 Caratteristiche E parte del registro EX/MEM della pipeline DLX originale Aggiunto per facilitare lo sviluppo del modello Solo le istruzioni di memoria passano dal Data Memory Le istruzioni ALU rimangono qua per un ciclo Multiplexer sceglie una delle due istruzioni (da questo modulo o dal modulo Data Memory ) Connessioni Riceve il risultato dal modulo ALU Manda il risultato ricevuto al modulo Multiplexer to Multiplexer

Mappatura: Multiplexer 11 Operazione Questo modulo rappresenta lo stadio write-back Riceve i dati dal modulo Register o dal modulo Data Memory Ogni istruzione può essere di tipo ALU o MEM Manda il dato che è disponibile al modulo Register File Connessioni Riceve dati dai moduli ALU e Register Manda il risultato al modulo Register File

Comunicazione tra i moduli (1) 12 Esempio : connessione RF ALU Il Register File ha quattro connessioni con il modulo ALU rs1, rs2, valore immediato e PC Tutte le connessioni sono usate contemporaneamente E possibile semplificare il modello? Come creare una connessione invece di quattro? Tutti e 4 i valori si possono mandare tramite una connessione sola Semplificazione Definiamo un tipo di dati che possiamo usare per tutte le connessioni Questo tipo deve contenere tutti i possibili dati che si possono scambiare tra di loro due moduli

Comunicazione tra i moduli (2) 13 Tipo di dati instruction Si usa per la comunicazione tra i moduli Contiene i dati che si usano in ogni stadio della pipeline Ogni modulo usa solo i campi che gli servono non modifica gli altri Esiste dentro il modello una classe C++ che si chiama instruction

Modulo Instruction Memory (IM) 14 Mappatura del modello

IM I/O e le variabili interne 15 instrmemory.sim class InstructionMemory : module {public: /* Ports */ inport <instruction> branch; ///< Da ALU outport <instruction> instr; ///< A Register File inclock clock; }; /* State of the module */ uint32_t mem[65536]; ///< La memoria locale uint32_t pc; ///< Valore del PC bool program_finished; ///< Programma finito? uint32_t inum; ///< Numero delle istruzioni eseguite...

IM i processi 16 4 processi per controllare il modulo Sensibile a clock clock branch.data instr.accept Operazione Prende un istruzione dalla memoria 1. Incrementa il PC 2. Si occupa delle istruzioni di salto Accetta i dati dalla ALU se arriva un istruzione di salto Abilita l uscita se i dati sono stati accettati

IM processi inizio del ciclo 17 void start_of_cycle() { if(program_finished) instr.data.nothing(); else { instruction fetched_instruction = instruction(mem[pc],pc,inum); instr.data = fetched_instruction; // Log that instruction is in IF stage pipeline_log(if_stage,fetched_instruction); } } if(fetched_instruction.opcode == instruction::op_halt) program_finished = true;

IM processi fine del ciclo 18 void end_of_cycle() { if(instr.accept) { pc++; inum++; } if(branch.enable) } { } const instruction &br = branch.data; pc = br.rd_value;

IM processi branch.data 19 void on_branch() { if(branch.data.known()) { if(branch.data.something()) { branch.accept = true; } else { branch.accept = false; } } }

IM processi instruction.accept 20 void on_instr_accept() { instr.enable = instr.accept; }

IM startup 21 1) Inizializza le variabili interne 2) Carica il programma dallo stdin InstructionMemory(char *name) : module(name) { // State initialization pc = 0; inum=0; program_finished=false; load(); // Sensitivity list declaration 3) Registra i metodi sensibili } sensitive_pos_method(start_of_cycle) << clock; sensitive_neg_method(end_of_cycle) << clock; sensitive_method(on_branch) << branch.data; sensitive_method(on_instr_accept) << instr.accept;

Esercizio 22 dlx.tgz Sorgenti di tutti i moduli completi (*.sim) Makefile Piccoli benchmark power_nop.dlx, power.dlx Sito web Documento con la descrizione del modello (in inglese) Per ogni modulo sono specificate L interfaccia con gli altri moduli La descrizione dei processi per controllarlo

Esercizio istruzioni 23 1. Copiare i sorgenti cp /home/users/docenti/popovzdra/dlx.tgz. tar zxvf dlx.tgz 2. Connettere tutti i moduli Modificare dlx.uni 3. Compilare il simulatore Eseguire make

Esercizio Completare dlx.uni 24 /* Includes */ include "alu.sim"; include "datamemory.sim"; include "instrmemory.sim"; include "registerfile.sim"; include "register.sim"; include multiplexer.sim"; /* Instances */ 1. Dichiarare le istanze dei moduli qua! /* Connections */ 2. Connettere i moduli qua! // Display pipeline at the end of each cycle. collector end_of_timestep { init = <<< pipeline_init(); >>>; record = <<< pipeline_display(timestamp()); >>>; };

Solution dlx.uni 25 1. Dichiarare tutte le istanze instance InstructionMemory imem; instance RegisterFile regf; instance ALU alu; instance DataMemory dmem; instance Register reg; instance Multiplexer mux; 2. Connettere le istanze imem.instr >> regf.read; regf.out >> alu.in; alu.out_result >> reg.in; alu.out_branch_address >> imem.branch; alu.out_mem_address >> dmem.request; dmem.out >> mux.in1; reg.out >> mux.in2; mux.out >> regf.write;

Eseguire power_nop.dlx (1) 26 Un loop semplice Fa 5 iterazioni e finisce in 70 cicli Le nop sono qua per evitare gli hazard della pipeline addi r1, r0, 5 addi r2, r0, 1 nop nop nop add r2, r2, r2 addi r1, r1, -1 nop nop nop seq r10, r1, r0 nop nop nop beqz r10, -9 nop nop halt r1 5 r2 1 L0: r2 r2 + r2 r1 r1 + -1 r10 = (r1 == r0) if (r10 == 0) L0 halt

Eseguire power_nop.dlx (2) 27 $./dlx < power_nop.dlx I0 addi r1,r0,5 I1 addi r2,r0,1... - rest of the instructions I16 nop I17 halt cycle IF ID EX MEM WB 1 I0(0) - - - - 2 I1(1) I0(0) - - - 3 I2(2) I1(1) I0(0) - - 4 I3(3) I2(2) I1(1) I0(0) - 5 I4(4) I3(3) I2(2) I1(1) I0(0) Rest of the pipeline log... 66 I17(65) I16(64) I15(63) - I13(61) 67 - I17(65) I16(64) I15(63) I13(61) 68 - - I17(65) I16(64) I15(63) 69 - - - I17(65) I16(64) 70 - - - - I17(65) Finish time: 70/0

Eseguire power.dlx (1) 28 power.dlx Stessa funzionalità di power_nop.dlx Senza istruzioni nop addi r1, r0, 5 addi r2, r0, 1 add r2, r2, r2 addi r1, r1, -1 seq r10, r1, r0 beqz r10, -9 nop nop halt Eseguire l esempio r1 5 r2 1 L0: r2 r2 + r2 r1 r1 + -1 r10 = (r1 == r0) if (r10 == 0) L0 halt./dlx < power.dlx Non finisce mai l esecuzione Interrompere la simulazione usando Ctrl + C

Eseguire power.dlx (2) 29 Come gestire gli hazard? E implementata la gestione degli hazard! Si deve cambiare il codice registerfile.sim, linea 19: //#define WITH_DEPENDENCY_BUBBLES Modificare in #define WITH_DEPENDENCY_BUBBLES Eseguire make un altra volta!

Eseguire power.dlx (3) 30 $./dlx < power.dlx I0 addi r1,r0,5 I1 addi r2,r0,1 I2 add r2,r2,r2 I3 addi r1,r1,-1 I4 seq r10,r1,r0 I5 beqz r10,-3 I6 nop I7 nop I8 halt cycle IF ID EX MEM WB 1 I0(0) - - - - 2 I1(1) I0(0) - - - 3 I2(2) I1(1) I0(0) - - Rest of the pipeline log... 69 - - - I8(32) I7(31) 70 - - - - I8(32) Finish time: 70/0