Commit 1d872b43 authored by Christoph Gerum's avatar Christoph Gerum

Merge branch 'master' of...

Merge branch 'master' of atreus.informatik.uni-tuebingen.de:advanced_computer_architecture/exercises

Conflicts:
	aufgaben/blatt03/gem5/src/cpu/pred/GAsBP.cc
parents f2d772c9 7f951047
......@@ -7,7 +7,7 @@ Führen Sie vor der bearbeitung des Aufgabenblatts wieder ein *git pull* durch.
## Aufgabe 1:
Sie haben in der Vorlesung das zweistufige \emph{GAs}-Verfahren kennen
Sie haben in der Vorlesung das zweistufige **GAs**-Verfahren kennen
gelernt. GAs steht dabei für Global Adaptive Branch Prediction using
per-set pattern history tables. Im Rahmen dieser Aufgabe soll der gem5 Simulator
um dieses Sprungvorhersageverfahren erweitert werden.
......@@ -23,7 +23,7 @@ Aufgabe folgendermaßen aufgebaut sein:
- Die Pattern History Table besteht aus einem Zwei-Dimensionalen Array (eigentlich std::vector). Wobei die als erster index ein Teil der Befehlsaddresse verwendet wird. Diese Indexberechnung ist bereits in der Methode *getLocalIndex* implementiert. Als zweiter Index wird der Wert des global History Registers verwendet.
Erweitern Sie den Code in der Datei *gem5/src/cpu/pred/GAsBP.cc* an den mit **///A1:** markierten stellen so, dass eine GAs-Sprungvorhersage implementiert wird.
Erweitern Sie den Code in der Datei *gem5/src/cpu/pred/GAsBP.cc* an den mit **//A1:** markierten stellen so, dass eine GAs-Sprungvorhersage implementiert wird.
Testen Sie ihre Code implementierung mit der Konfigurationsdatei *BPConfig.py* und den Testprogrammen im Verzeichnisbranches. Verwenden Sie dazu die das auszuführende Program kann dabei mit dem Parameter *-c* angegeben werden.
Den GAs-Prediktor wählen Sie durch *-b gas* aus.
......@@ -52,7 +52,7 @@ int main () {
1. Wieviele Fehlvorhersagen erwarten sie durch einen GAs-Prediktor mit einer hinreichenden Größe auf dem Code von *branches/branches2.c*?
2. Wie verhält sich ihre Prediktor im Vergleich zu einer einfachen *branch history table* ("Simulation mit *-b bht*").
3. Erscheinen ihnen ihre Ergebnisse plausibel so, dass Sie annhemen können, dass ihre Implementierung korrekt ist.
3. Erscheinen Ihnen ihre Ergebnisse plausibel, so dass Sie annhemen können, dass ihre Implementierung korrekt ist.
## Abgabe
......@@ -64,16 +64,16 @@ Antworten auf die Fragen und die modifizierte GAsBP.cc
Die Konfigurationsdatei *BPConfig.py* verwendet zur Simulation die ```TimingSimpleCPU```.
Durch zusätzliche Angabe des Parameters *--o3* wird die O3CPU verwendet.
Ein Verbesserung läst sich erzielen indem statt einem *global history register* zwei verwendet werden,
wobei das eine Register schon mit dem Ergebnis der Sprungverhersage verändert wird. Dieses Register
Eine Verbesserung lässt sich erzielen indem statt einem *global history register* zwei verwendet werden,
wobei das zweite Register schon mit dem Ergebnis der Sprungverhersage verändert wird. Dieses Register
wird durch die Variable *globalHistoryBitsSpeculative* repräsentiert.
Erweitern Sie die Implementierung an den mit *//A2: * markierten Stellen um eine spekulative Vorhersage und
Erweitern Sie die Implementierung an den mit *//A2:* markierten Stellen um eine spekulative Vorhersage und
testen Sie ihre Implementierung.
An der mit *//A2 (bonus):* markierten Stelle kann zusätzlicher Code eingefügt werden, der den
Wert des spekulativen *global history register* in dem Fall, dass eine Fehlerhafte Sprungvorhersage
detektiert wurde anpasst. Versuchen Sie auch hier zu überlegen Welcher Code hier stehen müsste.
Wert des spekulativen *global history register* in dem Fall anpasst, dass eine Fehlerhafte Sprungvorhersage
detektiert wurde. Versuchen Sie auch hier zu überlegen welcher Code hier stehen müsste.
## Fragen
......
......@@ -174,6 +174,7 @@ GAsBP::update(Addr branch_addr, bool taken, void *bp_history, bool squashed)
globalHistoryBits);
//A2 (bonus): Wie kann mit diesen Fehlvorhersagen umgegangen werden
}
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment