MIPS64 Simulator Pipeline
Der MIPS64 Simulator hat eine fünfstufige Pipeline. Die Pipeline ist Hardware überwacht und die Bypasses können
abgeschaltet werden. Das Sprungziel steht schon in der ID-Phase bereit.
Bei der Abarbeitung des MIPS Programms für Aufgabe 7 und in einer durch umsortieren
der Befehle optimierten Variante entstanden dann die folgenden 4 Bilder.
Aufgabe 7 mit nicht optimierter Befehlsfolge ohne Bypass. Das Programm hat bis zum SYSCALL 0
165 Befehle auszufüren und benötigt
dazu
292 Takte. Das sind
1,769 CPI.
Aufgabe 7 mit nicht optimierter Befehlsfolge mit Bypass. Das Programm hat bis zum SYSCALL 0
165 Befehle auszufüren und benötigt
dazu
210 Takte. Das sind
1,272 CPI.
Aufgabe 7 mit optimierter Befehlsfolge ohne Bypass. Das Programm hat bis zum SYSCALL 0
165 Befehle auszufüren und benötigt
dazu
230 Takte. Das sind
1,393 CPI.
Aufgabe 7 mit optimierter Befehlsfolge mit Bypass. Das Programm hat bis zum SYSCALL 0
165 Befehle auszufüren und benötigt
dazu
190 Takte. Das sind
1,151 CPI.
Der MIPS Prozessor selbst arbeitet mit einer nicht überwachten Pipeline. Der Assembler oder Compiler muss dann alle Konflikte erkennen
und durch Einfügen von NOP (z.B.: add r0,r0,r0) beseitigen. In weiteren Optimierungsschritten können dann durch Umsortierungen die NOP
meist entfernt werden. Bei einer solchen Pipeline wird der Befehl hinter einem Sprungbefehl nicht abgebrochen, sondern wird immer vollständig
ausgeführt. Man bezeichnet das als "Delayed Branch" oder "Delayed Jump". Der Befehl hinter einem Sprungbefehl wirkt dann so als würde er noch
vor dem Sprungbefehl stehen.
Sortiert man in dem Programm zur Aufgabe 7 den ADDI R3,R3,4 Befehl noch hinter den BNE R2,R0,loop Befehl, dann würde das Programm
ohne jeglichen Konflikt abgearbeitet. Es würde bei 165 Befehlen diese genau in 165 Takten abarbeiten. Das sind 1,000 CPI.
Fur eine solche Umsortierung in einer Programmschleife kommen nur Befehle in Frage, die zwischen der Eisprungsmarke (hier loop) und dem Sprungbefehl stehen
und keinen Einfluss auf die Sprungbedingung haben. Bei dem Befehl ADDI R3,R3,4 ist dies der Fall.
20.01.2012 Siegmar
Schöne