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)
|
|
|
|