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!