1 Der DLX-Labor-Versuch

Transcription

1 Der DLX-Labor-Versuch
1
1
Der DLX-Labor-Versuch
Durch die praktische Auseinandersetzung mit dlxcc und windlx sollen Sie die
Hardware/Software-Schnittstelle von pipeline-Prozessoren am Beispiel der DLX
per Software-Emulation kennenlernen, so daß Sie im Labor-Versuch die Leistung
von pipeline-Prozessoren bestimmen und Maßnahmen zur Leistungssteigerung
bewerten können.
Ziel ist also, nicht nur Eigenschaften der Zielmaschine, d.h. der DLX herauszufinden, sondern auch sich diese Kenntnis anzueignen und zu nutzen, um eigene
nicht-triviale C-Programme auf Assembler-Ebene zu optimieren.
1.1
zur Einführung: die HW/SW-Schnittstelle der DLX
Dazu schreiben Sie
Pnzunächst möglichst kleine Test-Programme wie ‘hello world’,
eins+zwei=drei, i=1 i, Pascal-Dreieck, ggt, Fakultät, usw., um sich den DLXBefehlssatz (fast wie MIPS) in Erinnerung zu rufen und um den Aufbau von
DLX-Assembler-Programmen kennenzulernen.
Dabei klären Sie ganz nebenbei etwa folgende Fragen:
• Struktur eines Assembler-Programms? Bestandteile?
• Welchen Wert hat memSize ? Begründung?
• Wie werden 32-bit-immediates zugewiesen? (Vorteile? Nachteile?)
• Wo legt der Compiler lokale und globale Variablen im Speicher ab?
• Wo verwaltet der Compiler den Stapel (stack) im Speicher?
• Der Compiler rettet zunächst bestimmte Register und restauriert sie wieder.
Wieso? Weshalb? Warum?
Welches von welchen zwei alternativen Verfahren ist implementiert?
• Wie teilt der Compiler Register zu? Wieviele Register verwendet der Compiler jeweils? Unter welchen Bedingungen?
• Was unterstellt der Compiler an pipeline-Eigenschaften wie forwarding,
load delay slots, branch delay slots? Und was ist in der DLX-Emulation
tatsächlich implementiert? – Unbedingt durch geeignete Test-Programme
herauskriegen!
• Welchen Code erzeugt der Compiler für for-, while- und do...whileSchleifen? Welche Optimierungen sind möglich?
2
• Wie realisiert der Compiler Aufrufe von Bibliotheksfunktionen?
• Was wird bei Funktionsaufrufen über den Stapel (stack) übergeben? Weie
werden Funktionsergebnisse zurückgegeben?
Die Beantwortung einiger Fragen erfordert schon, auch ’mal ein C-Programm mit
(rekursiven) Funktionen zu schreiben . . .
Hilfestellung bieten die WinDLX-Help, das Skript und natürlich die RST-Bibel
¨Patterson & Hennessy: COD 2nd edition¨.
endlich die Hauptsache:
eigene DLX-Assembler-Programme optimieren
All’ diese Erfahrungen mit Compiler und Assembler-Code bringen Sie nun in die
Optimierung eines nicht zu simplen selbst-geschriebenen C-Programmes wie etwa Gauß, quicksort, float input o.ä. auf Assembler-Ebene ein: Ihre Kenntnis der
Eigenschaften der Zielmaschine erlaubt Ihnen, den compilierten Code schrittweise zu optimieren; die Statistik von winDLX erlaubt, die Laufzeit-Reduktion zu
messen und so Beschleunigungsfaktoren zu bestimmen.
1.2
einige DLX-links
• http://mouse.vlsivie.tuwien.ac.at/lehre/rechnerarchitekturen/download/Simulatoren/
– winDLX u.a.
• http://systems.cs.colorado.edu/grunwald/CSCI5593/DLX/compiler.php
– online compiler
• www.kbs.uni-hannover.de/Lehre/tu-dresden/ss98/dlx/DLXSIM.HTM –
Simulation eines Mikroprozessors, i.e. DLX
• www.rs.e-technik.tu-darmstadt.de/TUD/lectures/ss02/rs1/vorlesung/rs1-02-2-s.pdf
– slides zum Thema Leistungsmaße und Befehlssatzklassen – u.a. DLX
3
2
Emulatoren weiterer Prozessoren
Für viele weitere Maschinen stehen Emulatoren zu Verfügung: beispielsweise
diverse Atari . . . PS: http://linux.org/apps/Console/System/Emulators.html
MPCE Massive Parallel Computer Emulator: http://artax.karlin.mff.cuni.cz/~zajio1am/software/mpce
MMIX MMIX: www-cs-faculty.stanford.edu/~knuth/mmix.html
MMIX: www.informatik.fh-muenchen.de/~mmix/
IA-64 Bochs
ARM ARMphetamine (für LINUX): http://armphetamine.sourgeforge.net
ARMulator: http://inputplus.co.uk/ralph
PowerPC PSIM (für LINUX): http://www-rohan.sdsu.edu/doc/psim
IA-32 Bochs: http://bochs.sourgeforge.net
MIPS R2000/R3000 SPIM: www.mkp.com/cod2e.htm
MipSim: http://mouse.vlsivie.tuwien.ac.at/lehre/rechnerarchitekturen/download/Simulatoren/
M68K WISM68: http://www.hilfreds.freeserve.co.uk/WISM68
80186 XTCE (für Windows-CE): http://www.xt-ce.com
8086 Emu8086 (für Windows): http://www.popularshareware.com/Emu8086-Microprocessor-Emulator-download-7844.html
diverse z.B. Commodore 64 Emulator Come Back 64: www.simtel.net/category.php?id=100
PDP11 PDP11 (für DOS/LINUX): http://www.dbit.com/demo.html
Schneider CPC cpc4x (für LINUX): http://wwww.schneider-cpc.de
Weitere Hinweise sind willkommen!