1

Wir führen die folgenden Anweisungen auf einer Maschine aus Wie finde ich die Ausführungszeit für eine Pipeline-Maschine?

Wenn die Maschine in Pipelines arbeitet, würde es etwa 200 ps * 3 = 600 ps dauern.

Ich möchte, was ist die Ausführungszeit, wenn die Pipeline-Maschine 1000,003 Anweisungen ausgeführt wird? Ist es 1.000.000 * 200 ps + 600 ps?

+2

@Yvette Nein, IMO, das ist sehr viel eine Computertechnik, Computerarchitektur, Computerprogrammierung Frage. Jeder, der Mips asm macht, würde für die Pipeline planen, um maximale Leistung zu erhalten. –

+0

@CraigEstey Ja, das ist in Ordnung. Ich war mir nicht sicher, ob SuperU auf diese Seite der Dinge ging. Vielen Dank. –

Antwort

2

Das Diagramm ist für eine klassische 5-stufige MIPS-Pipeline-Architektur. Moderne Chips verwenden Superskalar-Design, aber lassen Sie uns das ignorieren [zumindest für den Moment].

Das Problem hier ist, dass das Diagramm die Zeiten für die verschiedenen Arten von Anweisungen [für jeden T-Zustand T1-T5] zeigt, aber es gibt kein Beispielprogramm, außer das Diagramm ist auch ein Beispiel für die Schleife . Wenn das der Fall ist, fahren Sie fort mit ...

Das andere Problem ist Pipeline "Gefahren". Das heißt, eine bestimmte Stufe (T-Zustand) für einen bestimmten Befehl muss "anhalten", weil sie von der Ausgabe eines vorherigen Befehls abhängt. Zum Beispiel:

L1: add $t1,$t2,$t3 
L2: add $t6,$t4,$t1 

Der zweite Befehl seine „Register lesen“ (T2) Stall muss, weil es für die Vollendung des Standes der Anweisung des „register write“ (T5) Stufe abzuschließen warten muss, [weil es das letzte benötigt Wert für $t1].

Anstatt also eine gut erzogene Pipeline wie:

1:  L1:T1 
2:  L1:T2  L2:T1 
3:  L1:T3  L2:T2 
4:  L1:T4  L2:T3 
5:  L1:T5  L2:T4 
6:     L2:T5 

Wir am Ende mit:

1:  L1:T1 
2:  L1:T2  L2:T1 
3:  L1:T3  L2:stall 
4:  L1:T4  L2:stall 
5:  L1:T5  L2:stall 
6:     L2:T2 
7:     L2:T3 
8:     L2:T4 
9:     L2:T5 

In modernen Implementierungen gibt es architektonische Techniken, um dies zu vermeiden (zB "Weiterleiten", Out-of-Order-Ausführung), aber wir müssen die jeweilige architektonische Implementierung kennen, um zu wissen, welche Werkzeuge sie zur Behebung von Gefahren benötigt.


Meine beste erraten ist wie folgt ...

Noch einmal, wenn wir Gefahren ignorieren, wir brauchen ein bestimmtes Programm/Sequenz auf, die Berechnungen zu tun.

Wenn wir annehmen, dass das Programm das Diagramm ist, ist die Anzahl der Schleifeniterationen für 1.000.000 Anweisungen 1,000,000/4 oder 250,000. Und ... Wir ignorieren auch den Verzweigungsverzögerungs-Slot.

Das Zeitdiagramm für eine Schleife Iteration wie folgt aussieht:

label inst start exec end 
       time time time 
----- ---- ----- ---- ---- 

L1:  lw  0  800  800 
L2:  sw  200  700  900 
L3:  R  400  600  1000 
L4:  beq  600  500  1100 

Beachten Sie, dass alle Anweisungen vollständig vor dem L4 tut. Die dominierende Zeit ist also die Endzeit für L4. Also, 250,000 * 1100 ps oder 275 uns, mehr oder weniger.


UPDATE:

Aber mein Professor sagt mir die Antwort 1.000.000 * 200 ps + 1400 ps

Nun, sollten Sie [offensichtlich ;-)] glauben dein prof nicht ich [ich habe "rate" betont].

Aber wieder müssen wir die Implementierung kennen: Verzweigungsvorhersage, usw. Meine nimmt an, L1 auf der 2. Schleife kann nicht beginnen, bis L4 auf Schleife 1 abgeschlossen ist.

Wenn die Schleife/Sequenz vollständig abgerollt wurde [und es gab keinen Zweig], wie lw, sw, R, R 250.000 mal wiederholt, es würde 1,000,000 * 200 ps sein, IMO.

Ich denke prof Analyse geht davon aus T1 L1 für die Schleife 2 kann gleichzeitig beginnen mit L4 dem T2 für Schleife 1.

Ein Beispiel nützliche Sequenz mit überlappenden Quell-/Ziel eine memmove Sequenz sein könnte [die Register sind bereits voreingestellt]:

L1:  lw  $t0,4($t1) 
L2:  sw  $t0,0($t1) 
L3:  addu $t1,$t1,$t2 
L4:  bne  $t1,$t3,L1 

Wiederum nimmt diese keine Verzweigungsverzögerungs-Slots. Um diese Arbeit zu mit macht sie und nicht nur nop hängen, würde die Sequenz L1, L2, L4, L3

jedoch sein, ich lese gerade das Kleingedruckte: Diese Berechnung geht davon aus, dass die Multiplexern, Steuereinheit, PC-Zugriffe und Zeichenerweiterungseinheit haben keine Verzögerung.

Also, das könnte der Schlüssel sein, warum es eine Diskrepanz gibt/gab. Noch einmal, wenn Sie Zweifel haben, glauben Sie Ihrem Prof.

+0

Aber mein Professor sagt mir, die Antwort ist 1.000.000 * 200 ps + 1400 ps –