Calcolatori Elettronici II

  

Universitą degli Studi di Cassino

Corso di Laurea Specialistica in
Ingegneria delle Telecomunicazioni

   prof. Francesco Tortorella  (mail)

     Anno Accademico 2004/2005

     terzo quadrimestre

 


 

 

Esercitazione del 13/6/2005

 

Verifica dell'esecuzione in pipeline

 

1. Creare un project e inserire un file main.s contenente il seguente codice:
 

#include <iregdef.h>

        .set noreorder
        .text
        .globl start
        .ent start

start:  add     t0, t1, t2
        nop
        nop
        nop
        nop

        .end start

 Per eseguirlo, avviare il simulatore
MipsPipeS.exe (contenente una versione semplificata del MIPS pipeline) e verificare come procede l'esecuzione nei vari passi del pipeline. In particolare, verificare quali passi sono effettivamente eseguiti e quando avviene la modifica dei registri.

 

 

2. Ripetere l'esercizio 1, sostituendo l'istruzione add con  l'istruzione lw t0, 0(t1).
Per verificare l'esecuzione dell'istruzione, modificare il codice dell'esercizio 1 come di seguito descritto:

 

#include <iregdef.h>

        .data

parola: .word  5

        .space 4


        .set noreorder
        .text
        .globl start
        .ent start

start:  lw t0, 0(t1)
        nop
        nop
        nop
        nop

        .end start

Per l'esecuzione, utilizzare sempre il simulatore
MipsPipeS.exe, curando  di inizializzare a mano il registro t1 con l'indirizzo della word parola.

 

 

3. Ripetere l'esercizio 2, sostituendo  l'istruzione lw t0, 0(t1) con l'istruzione sw t0, 4(t1)all'interno del codice fornito. Per l'esecuzione, utilizzare sempre il simulatore MipsPipeS.exe, curando  di inizializzare a mano il registro t1 con l'indirizzo della word parola ed il registro t0 con un valore diverso da zero.

 

 

4. Ripetere l'analisi fatta negli esercizi precedenti sul codice seguente:

 

#include <iregdef.h>


        .set reorder
        .text
        .globl start
        .ent startt

start:  nop
        add t4, t2, t3 # i valori in t2, t3, ...
        add t7, t5, t6 # ..., t5, t6 non interessano
        beq t0, t1, dest #
        addi t8, zero, 1
        addi t8, zero, 2
        addi t8, zero, 3
dest:   addi t8, zero, 4
        nop
        .end start
 

Si verifichi l'esecuzione sia nel caso che la condizione sia verificata, sia nel caso opposto.

 

 

 

Alee nell'esecuzione in pipeline

 

5. Creare un project  con un main contenente il seguente codice:

 

 #include <iregdef.h>

        .set noreorder
        .text
        .globl start
        .ent start

start:  add t5, t6, t6
        add t2, t0, t1
        add t4, t2, t3
        nop
        nop
        nop
        .end start

 

Si esegua il programma con il simulatore MipsPipeS.exe curando di inizializzare i registri t0, t1 e t3 con valori opportuni. Si verifichi se le istruzioni sono portate a termine correttamente. In caso di alee, modificare il codice inserendo dei nop che permettano la corretta esecuzione delle istruzioni.

Successivamente, si esegua lo stesso progetto sul simulatore MipsPipeXL.exe, che contiene una versione pił completa del MIPS pipeline. Si verifichi anche che cosa succede con la direttiva .set reorder.

 

 

6. Eseguire la stessa analisi richiesta nell'esercizio 5 sul codice seguente, contenente l'istruzione beq :

 

#include <iregdef.h>


        .set reorder
        .text
        .globl start
        .ent startt

start:  nop
        add t4, t2, t3 # i valori in t2, t3, ...
        add t7, t5, t6 # ..., t5, t6 non interessano
        beq t0, t1, dest #
        li t8, 1
        li t8, 2
        li t8, 3
dest:   li t8, 4
        nop
        .end start
 

 

7. Eseguire la stessa analisi richiesta nell'esercizio 5 sul codice seguente, contenente l'istruzione lw :

 

#include <iregdef.h>
        .data
parola: .word 5
        .space 4

        .set reorder
        .text
        .globl start
        .ent start

start:  add t8, t8, t8
        la t1, parola
        lw t2, 0(t1)
        add t4, t2, t3
        nop
        nop
        nop
        .end start

 
   
     

 

 


© 2005 Francesco Tortorella.
Ultimo aggiornamento: 13/06/05.