Commit 23e89224 authored by Christoph Gerum's avatar Christoph Gerum

Extended first exercise

parent f91d12b2
...@@ -46,27 +46,104 @@ Zuletzt wird noch ein compiler zur Erzeugung von ausführbaren Dateien für die ...@@ -46,27 +46,104 @@ Zuletzt wird noch ein compiler zur Erzeugung von ausführbaren Dateien für die
Weitere Informationen zur installation GEM5 finden Sie beispielsweise unter: Weitere Informationen zur installation GEM5 finden Sie beispielsweise unter:
* http://gem5.org/Compiling_M5 * [http://gem5.org/Compiling_M5](http://gem5.org/Compiling_M5)
* http://pages.cs.wisc.edu/~david/courses/cs752/Spring2015/gem5-tutorial/part1/building.html * [http://pages.cs.wisc.edu/~david/courses/cs752/Spring2015/gem5-tutorial/part1/building.html](http://pages.cs.wisc.edu/~david/courses/cs752/Spring2015/gem5-tutorial/part1/building.html)
Für diese Aufgabe ist **keine** Abgabe notwendig.
## Aufgabe 2: Hello World
Schreiben sie ein Hello-World in c und kompilieren Sie dieses für ARM.
* statisch linken ## Aufgabe 2: Einführung in Instruktionssatzsimulation
* Befehl zum kompilieren geben?
Schreiben sie ein Programm das ```Hello World!``` ausgibt in C und kompilieren Sie dieses für ARM.
Führen Sie dieses im gem5-Simulator aus. Verwenden Sie dafür die bereitgestellte Config-Datei se.py Führen Sie dieses im gem5-Simulator aus. Verwenden Sie dafür die bereitgestellte Config-Datei se.py
build/ARM/gem5.opt configs/example/se.py -c hello.elf $(GEM5_ROOT)/build/ARM/gem5.opt $(GEM5_ROOT)/configs/example/se.py -c hello.elf
Die genauen Anweisungen finden Sie auch auf der Introduction Seite des Simulators:
[http://gem5.org/Introduction#Running](http://gem5.org/Introduction#Running)
### Fragen
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.
![Abbildung der gewünschten Systemkonfiguration](/aufgaben/figures/system1.svg)
``` python
import m5
from m5.objects import *
```
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: Der Takt des Systems wird dann über ein Objekt vom Typ ```SrcClockDomain``` erzeugt.
http://gem5.org/Introduction#Running 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: ### 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. 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 * m5out auswerten
...@@ -74,13 +151,14 @@ gem5 stellt verschiedene Typen von CPU-Modellen bereit, mit denen Simuliert werd ...@@ -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. 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)
* Erklärung der Unterschiede.
import m5
from m5.objects import *
system = System()
system.clk_domain = SrcClockDomain()
system.clk_domain.clock = '2GHz'
system.clk_domain.voltage_domain = VoltageDomain()
system.mem_mode = 'timing'
system.mem_ranges = [AddrRange('512MB')]
system.cpu = TimingSimpleCPU()
system.membus = CoherentBus()
system.cpu.icache_port = system.membus.slave
system.cpu.dcache_port = system.membus.slave
system.mem_ctrl = DDR3_1600_x64()
system.mem_ctrl.range = system.mem_ranges[0]
system.mem_ctrl.port = system.membus.master
This diff is collapsed.
...@@ -8,6 +8,7 @@ SITEURL = '' ...@@ -8,6 +8,7 @@ SITEURL = ''
PAGE_PATHS=['aufgaben', 'pages'] PAGE_PATHS=['aufgaben', 'pages']
ARTICLE_PATHS=['news'] ARTICLE_PATHS=['news']
STATIC_PATHS=['aufgaben']
TIMEZONE = 'Europe/Berlin' TIMEZONE = 'Europe/Berlin'
...@@ -25,8 +26,8 @@ AUTHOR_FEED_RSS = None ...@@ -25,8 +26,8 @@ AUTHOR_FEED_RSS = None
LINKS = (('Gem5', 'http://gem5.org'), LINKS = (('Gem5', 'http://gem5.org'),
('Python', 'https://www.python.org/about/gettingstarted/'), ('Python', 'https://www.python.org/about/gettingstarted/'),
('C++', 'http://www.cplusplus.com'), ('C++', 'http://www.cplusplus.com'),
('Ilias', 'https://ovidius.uni-tuebingen.de/ilias3/goto.php?target=crs_992056&client_id=pr02'), ('Ilias', 'https://ovidius.uni-tuebingen.de/ilias3/goto.php?target=crs_1189348&client_id=pr02'),
('Forum', 'https://ovidius.uni-tuebingen.de/ilias3/goto.php?target=frm_992065&client_id=pr02'), ('Forum', 'https://ovidius.uni-tuebingen.de/ilias3/goto.php?target=frm_1189355&client_id=pr02'),
('Abgabe', 'https://ovidius.uni-tuebingen.de/ilias3/goto.php?target=grp_1189352&client_id=pr02'),) ('Abgabe', 'https://ovidius.uni-tuebingen.de/ilias3/goto.php?target=grp_1189352&client_id=pr02'),)
# Social widget # Social widget
......
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