Here you can ask questions and find or give answers to organizational, academic and other questions about studying computer science.

1.1k questions

1.2k answers

1.6k comments

529 users

0 votes
Wird die Pipeline immer genau dann angehalten, wenn der nächste Befehl, der in die Pipeline gelangen würde zu einen Konflikt führen würde? Wenn man z.B. folgendes Programm, mit der üblichen Abacus Pipeline ohne Forwarding betrachtet:

mov $2, 10

mov $0, 1

L: mov $1, 1

add $0, $0, $0

subi $2, $2, 1

bnz $2, L

Dann würden nach der beschrieben Logik die Konflikte wie folgt gelöst werden:

mov $2, 10

mov $0, 1

L: mov $1, 1

nop

add $0, $0, $0

subi $2, $2, 1

nop

nop

nop

bnz $2, L

Aber folgende Lösung

mov $2, 10

mov $0, 1

nop

L: mov $1, 1

add $0, $0, $0

subi $2, $2, 1

nop

nop

nop

bnz $2, L

wäre ja effizienter, da insgesamt weniger Stalls benötigt werden. Welche der beiden Lösungen ist korrekt?

Vielen Dank für alle Beträge!
in * TF "Emb. Sys. and Rob." by (1.1k points)
edited by

1 Answer

+1 vote
 
Best answer

Der Prozessor führt dann einen NOP-Befehl ein, wenn er erkennt, dass ansonsten ein Konflikt entstehen würde. Dazu merkt sich der Prozessor mit dem Scoreboard die Register, die momentan nicht aktuell sind. Wird ein Befehl in ID dekodiert, der Operanden aus Registern braucht, die noch von Befehlen in der Pipeline beschrieben werden, so wird ein NOP eingefügt und der Befehl muss warten.

Bei dem Beispielprogramm führt der Simulator folgende Befehlssequenz aus:

    mov $2, 10
    mov $0, 1
    L: mov $1, 1
    nop
    add $0, $0, $0
    subi $2, $2, 1
    nop
    nop 
    bnz $2, L
    nop
    nop
    nop
    L: mov $1, 1
    add $0, $0, $0
    subi $2, $2, 1
    nop
    nop 
    bnz $2, L
    :
Das bedeutet nicht, dass dies die geringste Zahl an NOP-Befehlen wäre. Man kann das sicher besser machen, aber der Prozessor kennt nur die Befehle, die sich aktuell in der Pipeline befinden und kann seine Analyse nur mit diesen Befehlen durchführen. Der Compiler könnte da mehr machen und die Zahl der NOP-Befehle minimieren. Das ist aber bestimmt eine sehr aufwändige Aufgabe. 

by (166k points)
selected by

Related questions

Imprint | Privacy Policy
...