• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Lezione3 - MIPS & SPIM Unicam
 

Lezione3 - MIPS & SPIM Unicam

on

  • 1,055 views

 

Statistics

Views

Total Views
1,055
Views on SlideShare
1,055
Embed Views
0

Actions

Likes
0
Downloads
59
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Lezione3 - MIPS & SPIM Unicam Lezione3 - MIPS & SPIM Unicam Presentation Transcript

    • MIPS & SPIM MIPS & SPIM Modulo del Corso di Architettura degli Elaboratori Nicola Paoletti Universit` di Camerino a Scuola di Scienze e Tecnologie 29 Marzo 2011 AA 2010/2011
    • MIPS & SPIMLezioni precedenti Lezione 1: linguaggio macchina/assembly/alto livello; RISC vs CISC. Lezione 2: introduzione al MIPS Instruction Set; registri; istruzioni aritmetiche e di data transfer.
    • MIPS & SPIM Codifica istruzioni MIPSRiepilogo 1 Codifica istruzioni MIPS Formati di istruzione R-format I-format J-format
    • MIPS & SPIM Codifica istruzioni MIPSCome traduciamo un’istruzione in linguaggio macchina? Tre tipi di formati (32 bit): Formato R-type: per le istruzioni del tipo add, sub, mul, div, and, or, . . . (R-format: Registry-format) Formato I-type: per le istruzioni del tipo addi, lw, sw, . . . (I-format: Immediate-format) Formato J-type: per le istruzioni di jump (J-format: Jump-format)
    • MIPS & SPIM Codifica istruzioni MIPS Formati di istruzioneRiepilogo 1 Codifica istruzioni MIPS Formati di istruzione R-format I-format J-format
    • MIPS & SPIM Codifica istruzioni MIPS Formati di istruzioneR-format op rs rt rd shamt funct 6 bit 5 bit 5 bit 5 bit 5 bit 6 bit op: opcode rs: primo registro sorgente rt: primo registro sorgente rd: registro di destinazione shamt: shift amount; =0 se non si tratta di un’istruzione di shift funct: funzione; i campi op e funct identificano la particolare funzione da eseguire.
    • MIPS & SPIM Codifica istruzioni MIPS Formati di istruzioneI-format (1/2) op rs rt address 6 bit 5 bit 5 bit 16 bit In questo caso solo opcode identifica l’istruzione mnemonica. Si hanno 16 bit per indirizzare la memoria fisica.
    • MIPS & SPIM Codifica istruzioni MIPS Formati di istruzioneI-format (2/2) Domanda: Ricordandoci che la memoria ` indirizzata byte per byte, con 16 bit e per specificare l’indirizzo, qual’` l’intervallo a cui possiamo accedere? e
    • MIPS & SPIM Codifica istruzioni MIPS Formati di istruzioneI-format (2/2) Domanda: Ricordandoci che la memoria ` indirizzata byte per byte, con 16 bit e per specificare l’indirizzo, qual’` l’intervallo a cui possiamo accedere? e Dato un offset $s, dal byte $s al byte 216 − 1+ $s.
    • MIPS & SPIM Codifica istruzioni MIPS Formati di istruzioneJ-format op address 6 bit 26 bit Address specifica l’indirizzo dell’istruzione a cui saltare.
    • MIPS & SPIM Codifica istruzioni MIPS Formati di istruzioneUna vista d’insieme Type Format(Bits) R opcode(6) rs(5) rt(5) rd(5) shamt(5) funct(6) I opcode(6) rs(5) rt(5) immediate(16) J opcode(6) address(26)
    • MIPS & SPIM Codifica istruzioni MIPS Formati di istruzionenoop noop Alto livello: Assembly: noop Macchina: 0x0
    • MIPS & SPIM Codifica istruzioni MIPS R-formatRiepilogo 1 Codifica istruzioni MIPS Formati di istruzione R-format I-format J-format
    • MIPS & SPIM Codifica istruzioni MIPS R-formatAddition add Alto livello: $d = $s + $t Assembly: add $d, $s, $t Macchina: 0x0 $s $t $d 0x0 0x20
    • MIPS & SPIM Codifica istruzioni MIPS R-formatSubtraction sub Alto livello: $d = $s - $t Assembly: sub $d, $s, $t Macchina: 0x0 $s $t $d 0x0 0x22
    • MIPS & SPIM Codifica istruzioni MIPS R-formatMultiplication mult Alto livello: $LO = (($s * $t) << 32)>>32 $HI = ($s * $t)>>32 Assembly: mult $s, $t Macchina: 0x0 $s $t 0x0 0x0 0x18 Moltiplica il contenuto dei due registri a 32 bit ($s e $t). Il risultato (64 bit) viene messo in due registri speciali: $LO: contiene i 32 bit meno significativi del risultato; si recupera attraverso l’istruzione mflo $s. $HI: contiene i 32 bit pi` significativi del risultato; si recupera u attraverso l’istruzione mfhi $s.
    • MIPS & SPIM Codifica istruzioni MIPS R-formatBitwise and and Alto livello: $d = $s & $t Assembly: and $d, $s, $t Macchina: 0x0 $s $t $d 0x0 0x24
    • MIPS & SPIM Codifica istruzioni MIPS R-formatBitwise or or Alto livello: $d = $s | $t Assembly: or $d, $s, $t Macchina: 0x0 $s $t $d 0x0 0x25
    • MIPS & SPIM Codifica istruzioni MIPS R-formatExclusive or xor Alto livello: $d = $s ^ $t Assembly: xor $d, $s, $t Macchina: 0x0 $s $t $d 0x0 0x26
    • MIPS & SPIM Codifica istruzioni MIPS R-formatSet on less than slt Alto livello: $d=($s < $t) Assembly: slt $d, $s, $t Macchina: 0x0 $s $t $d 0x0 0x2A
    • MIPS & SPIM Codifica istruzioni MIPS I-formatRiepilogo 1 Codifica istruzioni MIPS Formati di istruzione R-format I-format J-format
    • MIPS & SPIM Codifica istruzioni MIPS I-formatAdd immediate addi Alto livello: $t = $s + C Assembly: addi $t, $s, C Macchina: 0x8 $s $t C
    • MIPS & SPIM Codifica istruzioni MIPS I-formatLoad word (1/2) lw Alto livello: $t = MEM[$s + offset] Assembly: lw $t, offset($s) Macchina: 0x23 $s $t $s + offset Attenzione: La memoria ` indirizzata al singolo byte e Le word hanno lunghezza 32 bit = 4 byte Il valore di $s ` un multiplo di 4. e
    • MIPS & SPIM Codifica istruzioni MIPS I-formatLoad word (1/2) lw Alto livello: $t = MEM[$s + offset] Assembly: lw $t, offset($s) Macchina: 0x23 $s $t $s + offset Attenzione: La memoria ` indirizzata al singolo byte e Le word hanno lunghezza 32 bit = 4 byte Il valore di $s ` un multiplo di 4. e
    • MIPS & SPIM Codifica istruzioni MIPS I-formatLoad word (1/2) lw Alto livello: $t = MEM[$s + offset] Assembly: lw $t, offset($s) Macchina: 0x23 $s $t $s + offset Attenzione: La memoria ` indirizzata al singolo byte e Le word hanno lunghezza 32 bit = 4 byte Il valore di $s ` un multiplo di 4. e
    • MIPS & SPIM Codifica istruzioni MIPS I-formatLoad word (1/2) lw Alto livello: $t = MEM[$s + offset] Assembly: lw $t, offset($s) Macchina: 0x23 $s $t $s + offset Attenzione: La memoria ` indirizzata al singolo byte e Le word hanno lunghezza 32 bit = 4 byte Il valore di $s ` un multiplo di 4. e
    • MIPS & SPIM Codifica istruzioni MIPS I-formatLoad word (2/2) Example Codice MIPS per caricare in $t la sesta word in memoria, con offset=0xBAC014
    • MIPS & SPIM Codifica istruzioni MIPS I-formatLoad word (2/2) Example Codice MIPS per caricare in $t la sesta word in memoria, con offset=0xBAC014 addi $s, $0, 24 lw $t, 0xBAC014($s)
    • MIPS & SPIM Codifica istruzioni MIPS I-formatStore word sw Alto livello: MEM[$s + offset] = $t Assembly: sw $t, offset($s) Macchina: 0x2B $s $t $s + offset Example Codice MIPS per scrivere nella settima word in memoria con offset=0xBAC014 il valore di $t
    • MIPS & SPIM Codifica istruzioni MIPS I-formatStore word sw Alto livello: MEM[$s + offset] = $t Assembly: sw $t, offset($s) Macchina: 0x2B $s $t $s + offset Example Codice MIPS per scrivere nella settima word in memoria con offset=0xBAC014 il valore di $t addi $s, $0, 28 sw $t, 0xBAC014($s)
    • MIPS & SPIM Codifica istruzioni MIPS I-formatBranch on equal beq Alto livello: if ($s == $t) goto C Assembly: beq $s,$t, C Macchina: 0x4 $s $t C Example # se $s1 ` uguale a $s2, li sottraggo; altrimenti li e sommo. beq $s1, $s2, L1 add $t1, $s1, $s2 L1: sub $t1, $s1, $s2
    • MIPS & SPIM Codifica istruzioni MIPS I-formatBranch on not equal bne Alto livello: if ($s != $t) goto C Assembly: bne $s,$t, C Macchina: 0x5 $s $t C Example # se $s1 ` diverso a $s2, li sommo; altrimenti li e sottraggo. bne $s1, $s2, L1 sub $t1, $s1, $s2 L1: add $t1, $s1, $s2
    • MIPS & SPIM Codifica istruzioni MIPS J-formatRiepilogo 1 Codifica istruzioni MIPS Formati di istruzione R-format I-format J-format
    • MIPS & SPIM Codifica istruzioni MIPS J-formatUnconditional jump jump Alto livello: goto C Assembly: j C Macchina: 0x2 C Example # goto L1 j L1 ... L1: ...
    • MIPS & SPIM Codifica istruzioni MIPS J-formatEsercizi (1/2) Massimo Scrivere una procedura MIPS per il possibile codice dell’istruzione max $v0, $a0, $a1.
    • MIPS & SPIM Codifica istruzioni MIPS J-formatEsercizi (1/2) Massimo Scrivere una procedura MIPS per il possibile codice dell’istruzione max $v0, $a0, $a1. slt $t0, $a0, $a1 beq $t0, $0, L1 addi $v0, $a1, 0 L1: addi $v0, $a0, 0
    • MIPS & SPIM Codifica istruzioni MIPS J-formatEsercizi (2/2) Minimo Scrivere una procedura MIPS per il possibile codice dell’istruzione min $v0, $a0, $a1.
    • MIPS & SPIM Codifica istruzioni MIPS J-formatEsercizi (2/2) Minimo Scrivere una procedura MIPS per il possibile codice dell’istruzione min $v0, $a0, $a1. slt $t0, $a0, $a1 beq $t0, $0, L1 addi $v0, $a0, 0 L1: addi $v0, $a1, 0