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

1.1k questions

1.3k answers

1.7k comments

557 users

0 votes
Sollten  "Sprungbefehle" und "Branchbefehle" beide als Branches angesehen werden (Also ein Cpi von 2.0) oder Sprungbefehle als Jumps (also 1 Cpi)?
in * TF "Emb. Sys. and Rob." by (120 points)
Gegebenenfalls in der Klausur nachfragen. Typischerweise meint man damit aber in diesen Aufgaben eher die Branch-Befehle, also die bedingten Sprünge, die Stalls benötigen und damit den CPI-Wert eines Programms erhöhen.

1 Answer

0 votes
Sowohl j also auch bnz und bne  sind Sprungbefehle. Manchmal unterscheid man diese als unbedingte und bedingte Sprungbefehle, da sie in Pipelines unterschiedlich implementiert werden können: Bei bedingten Sprungbefehlen muss man i.d.R. die Execute-Stufe abwarten, um das Ergebnis der Bedingung zu kennen und kann den Sprung erst dann ausführen. Bei unbedingten Sprüngen muss man darauf nicht warten und kann daher im Prinzip schon in der Decode-Stufe den Sprung ausführen (dazu braucht man allerdings einen weiteren Addierer in der Decode-Stufe, um das Sprungziel auszurechnen).

Unabhängig davon: Bei der Analyse der Befehle in den Pipelines gehen wir allerdings davon aus, dass alle Befehle bei einem Einzyklen-Prozessor genau einen Takt benötigen und bei der Pipeline alle Befehle auch dieselbe Zeit in der Execute-Stufe brauchen. Daher sind die CPI- Zahlen bei allen unseren Befehlen dieselben. Man kann diesen Wert aber dennoch als durchschnittlichen Wert für ein Programm bestimmen, um zu sehen, wie viele zusätzliche Stalls notwendig waren. Für einen bestimmten Befehl dies in einer Tabelle anzugeben, macht in diesem Zusammenhang aber keinen Sinn.
by (170k points)
Imprint | Privacy Policy
...