1. Was ist der Unterschied zwischen dem Syscall Emulation Mode und dem Full System Mode?
2. Welche Problemem können sich ergeben wenn der Syscall Emulation Mode für die bewertung Rechnerarchitekturen eingesetzt werden?
3. Welche Vorteile bietet der Syscall Emulation Mode?
### Abgabe:
Geben Sie den Quellcode ihres Hello World, die beantworteten Fragen, sowie die Ausgabe auf der Konsole ab.
## Aufgabe 3: Skriptbasierte Konfiguration des Simulators
Für einfache Simulationenenthält GEM5 schon beispielkonfigurationen wie ```$(GEM5_ROOT)/configs/example/se.py``` und ```$(GEM5_ROOT)/configs/example/fs.py```.
Bei aufwändigeren Simulationen und eigenen Erweiterungen müssen allerdings eigene Konfigurationen erstellt werden.
Diese Konfigurationsdateien sind einfache [Pythonskripte](http://python.org), die aber auf dem Simulator (in unserem Fall: ```$(GEM5_ROOT)/build/ARM/gem5.opt```),
und nicht dem Standard-Interpreter ausgeführt werden.

``` python
importm5
fromm5.objectsimport*
```
Das simulierte Gesamtsystem wird dann durch ein Objekt der Klasse ```System``` erstellt:
``` python
system=System()
```
Die genauen Anweisungen finden Sie auch auf der Introduction Seite:
http://gem5.org/Introduction#Running
Der Takt des Systems wird dann über ein Objekt vom Typ ```SrcClockDomain``` erzeugt.
Die Taktfrequenz des Systems kann dann über das Attribut ```clock``` festgelegt werden.
Zur Simulation von Powermanagement können die VoltageDomains verwendet werden. Da dies an
dieser Stelle nicht betrachtet werden soll, können hier einfach die Standardargumente verwendet werden.
``` python
system.clk_domain=SrcClockDomain()
system.clk_domain.clock='2GHz'
system.clk_domain.voltage_domain=VoltageDomain()
```
``` python
system.mem_mode='timing'
system.mem_ranges=[AddrRange('512MB')]
```
``` python
system.cpu=TimingSimpleCPU()
```
``` python
system.membus=CoherentBus()
```
``` python
system.cpu.icache_port=system.membus.slave
system.cpu.dcache_port=system.membus.slave
```
``` python
system.mem_ctrl=DDR3_1600_x64()
system.mem_ctrl.range=system.mem_ranges[0]
system.mem_ctrl.port=system.membus.master
```
Die Konfigurationsdatei finden Sie auch unter [aufgaben/blatt01/simple.py](/aufgaben/blatt01/simple.py).
### Abgabe:
Geben Sie ihr Hello-World, sowie die Ausgabe auf der Konsole ab.
Eine Datei ```simple.py``` die das programm hello world auf der angegebenen Systemkonfiguration ausführt.
## Aufgabe 3: CPU-Typen und Ausführungszeiten
## Aufgabe 4: CPU-Typen und Ausführungszeiten
gem5 stellt verschiedene Typen von CPU-Modellen bereit, mit denen Simuliert werden kann. In ILIAS finden Sie den Sourcecode für eine einfache Mathe-Benchmark. Kompilieren Sie diese und führen sie auf den verschiedenen Modellen aus.
* m5out auswerten
...
...
@@ -74,13 +151,14 @@ gem5 stellt verschiedene Typen von CPU-Modellen bereit, mit denen Simuliert werd
Beschreiben Sie die Unterschiede und begründen Sie diese.
### Abgabe:
* Tabelle mit den Ausführungszeiten (sim_seconds, sim_ticks, host_seconds)
* Erklärung der Unterschiede.
## Aufgabe 4: Skriptbasierte Konfiguration des Simulators
### Fragen
In dieser Aufgabe sollen Sie sich mit den Konfigurationsdateien von gem5 vertraut machen.
1.
2.
3.
Diese Dateien sind Pythonskripte, die aber auf dem Simulator, und nicht dem Standard-Interpreter ausgeführt werden.
### Abgabe:
* Tabelle mit den Ausführungszeiten (sim_seconds, sim_ticks, host_seconds)