| Pipeline-Hazards in MIPS < Sonstiges < Hochschule < Informatik < Vorhilfe 
 
 
  |  |  
  | 
    
     |  | Status: | (Frage) überfällig   |   | Datum: | 12:39 Mi 17.06.2009 |   | Autor: | RalU | 
 
 | Aufgabe |  | in folgendem MIPS-Assembler-Code sollen Data-Hazards gesucht werden. Außerdem soll angegeben werden, ob und wann ein Pipeline-Stall auftritt. Was kann der Compiler tun, um den Pipeline-Stall zu verhindern? 
 main:
 1) addi $sp, $sp, -4
 2) sw $ra, 0($sp)
 3) li $a0, 0x10000000
 4) lw $a0, 0($a0)
 5) addi $a0, $a0, 1
 6) li $a1, 42
 7) sll $a1, $a1, 2
 8) jal x
 9) lw $ra, 0($sp)
 10) addi $sp, $sp, 4
 11) j $ra
 12) x: ...
 | 
 Also meine Musterlösung sagt, dass es folgende Hazards gibt:
 in Zeile 3): #=lui + ori = EX-Hazard
 Warum ist lui + ori ein EX-Hazard???
 in Zeile 4): # MEM- Hazard + EX-Hazard mit lui + ori
 Ist damit ein neuer EX-Hazard gemeint oder der aus Zeile 3)?
 in Zeile 5) # Load-Use Hazard mit lw, MEM-Hazard mit ori
 Kann ich nicht richtig nachvollziehen.
 in Zeile 7) # EX-Hazard mit li
 
 Pipeline-Stall tritt nur auf bei addi nach lw. Maßnahme: "li, $a1, 42" vorziehen und nach lw ausführen.
 
 Ich habe Probleme diese Musterlösung nachzuvollziehen.
 
 Ich habe mir die verschiedenen Hazard-Typen an Hand von folgenden Beispielcodes klargemacht. Diese Codees kann ich aber nicht so ohne weiteres im Code der Aufgabenstellung wiederfinden.
 
 EX-Hazard liegt z.B. vor beim Code:
 add $s0,$s1,$s2 #I
 sub $s3,$s4,$s0 #I+1
 Ex-Hazard, weil Wert von $s0 für EX in I+1 gebraucht wird, aber nach EX von I feststeht.
 
 MEM-Hazard liegt z.B. vor beim Code:
 lw $s0, $s1(100) #I
 nop              #I+2
 sub $s3,$s4,$s0  #I+2
 
 oder bei:
 add $s0,$s1,$s2 #I
 sub $s3,$s4,$s0 #I+1
 add $s5,$s0,$zero #I+2
 
 Frage: MEM-Hazard tritt von I nach I+2 auf. Liegt hier beim 2. Beispiel nicht auch ein EX-Hazard (I -> I+1) vor?
 
 Load-Use-Data Hazard
 liegt z.B. vor bei:
 lw $s0, 0($s1) #I
 add $s1,$s0,$s1 #I+1
 Konflikt: Wert steht erst in WB fest, wird aber in EX von I+1 schon benötigt.
 
 Mein Problem ist, wie kann ich mit Hilfe dieser Beispielcodes die Hazards aus der Aufgabenstellung erkennen bzw. die Musterlösung nachvollziehen?
 
 Mit freundlichen Grüßen,
 Ralf
 
 
 
 |  |  |  | 
 
  |  |  
  | 
    
     |  | Status: | (Mitteilung) Reaktion unnötig   |   | Datum: | 13:20 Fr 19.06.2009 |   | Autor: | matux | 
 $MATUXTEXT(ueberfaellige_frage)
 
 |  |  | 
 
 
 |