Praktikum Technische Grundlagen der Informatik

Hinweise zur Durchführung eines Mikroprogrammierprojekts

Allgemeine Hinweise

Diese Seite dient als praktischer Ratgeber bei der Durchführung eines Mikroprogrammierprojekts im Rahmen des Praktikums Technische Grundlagen der Informatik an der Technischen Universität München. Eine formale Praktikumsordnung finden Sie hier

Ablauf des Projekts

  1. Legen Sie zunächst fest, wer aus Ihrer Gruppe für das Mikroprogrammierprojekt die Aufgabe des Projektmanagers übernimmt. Melden Sie den Namen des Projektmanagers an Ihren Betreuer (beachten Sie die Hinweise für den Projektmanager).

    Wenn Sie mit dem Mikroprogrammierprojekt beginnen, machen Sie sich zunächst mit der Aufgabenstellung und der mikroprogrammierbaren Maschine vertraut. Lesen Sie dazu die zur Verfügung stehende Dokumentation, installieren Sie die entsprechende Software und testen Sie einige Mikroprogramme aus der TGI-Übung. Wenn dabei Probleme auftreten sollten, wenden Sie sich bitte an die studentischen Betreuer, die zu den angegebenen Zeiten in den Praktikumsräumen anzutreffen sind.

    Legen Sie dann fest, wer aus Ihrer Gruppe für welche Teile der Aufgabenstellung zuständig ist und überlegen Sie sich einen Zeitplan. Auf Basis dieser Arbeiten erstellen Sie dann das Pflichtenheft (beachten Sie die Hinweise zum Pflichtenheft).

    Beginnen Sie nun mit der Spezifikation der zu erstellenden Mikroprogramme (beachten Sie die Hinweise zur Spezifikation).

    An dieser Stelle noch ein Hinweis: Die Praktikumsprojekte sind keine 'Aufgaben' in dem Sinne, daß es dafür schon eine Lösung gibt. Es kann sich daher bei einigen Aufgaben durchaus ergeben, daß sie (mit vernünftigem Aufwand) nicht exakt nach Vorgabe lösbar sind. Wenn Sie in der Spezifikationsphase über ein derartiges Problem stolpern, besprechen Sie dies bitte mit Ihrem Projektbetreuer. Seien Sie gewiß, daß Ihnen so etwas natürlich nicht negativ angerechnet wird, vorausgesetzt, Sie können Ihre Ansicht vernünftig begründen.

  2. Spätestens, wenn Sie glauben, daß Ihr Pflichtenheft und Ihre Spezifikation fertig ist, machen Sie einen Termin mit Ihrem Projektbetreuer aus, um Pflichtenheft und Spezifikation vorzustellen. Bitte machen Sie diesen Termin aber bereits frühzeitig aus, und nicht erst zwei Tage vor Ihrem Abschlußtermin!

    Betrachten Sie bei diesem Termin Ihren Projektbetreuer als Ihren Auftraggeber (im Sinne der projektorientierten Durchführungsweise des Praktikums), d.h. versuchen Sie, ihm bei diesem Treffen Ihr Projektmanagement und Ihre Vorgehensweise bei der Lösung Lösung möglichst gut zu ``verkaufen''. Sie sollten daher bei diesem Termin vorbereitet sein und auch schriftliche Unterlagen (Pflichtenheft, Spezifikation) mitbringen, die Ihr Projektbetreuer dann behalten kann. Die Betreuungstermine gehen mit in die Bewertung Ihres Projekts ein.

    Sollte Ihr Pflichtenheft oder Ihre Spezifikation nicht ausreichend sein, wird Sie Ihr Projektbetreuer zu einem weiteren Termin verpflichten.

  3. Wenn Sie es für nötig erachten, können Sie (vor oder nach der Vorstellung Ihrer Spezifikation) weitere Termine mit Ihrem Projektbetreuer abmachen. Sie sollten dies z.B. immer dann tun, wenn die Aufgabenstellung mehrdeutig ist oder sie aus irgendwelchen Gründen Modifikationen vornehmen wollen/müssen. Einfachere Fragen können Sie natürlich auch per e-mail an Ihren Projektbetreuer richten. Fragen bzgl. der Programmierumgebung (Simulator der mikroprogrammierten Maschine) richten Sie bitte an die studentischen Betreuer, die zu den angegebenen Zeiten in den Praktikumsräumen sind. Die studentischen Betreuer können Ihnen auch helfen, wenn es um die Gliederung (nicht den Inhalt) Ihres Pflichtenhefts und der Spezifikation geht. Sollten sie ein Problem haben, das sie mit den studentischen Betreuern nicht lösen können, wenden Sie sich bitte an Ihren Projektbetreuer. Erst nachdem Ihr Projektbetreuer (als Ihr Auftraggeber) Ihre Spezifikation genehmigt hat, beginnen Sie mit der Implementierung. Dies schließt natürlich nicht aus, daß Sie zur Einarbeitung bereits kleinere Teile der Mikroprogramme am Simulator vorher ausprobieren können.
  4. Nachdem alle Mikroprogramme am Simulator realisiert wurden, testen Sie diese Hilfe eines kleinen Maschinenprogramms aus, das die von Ihnen implementierten Befehle verwendet. Testen Sie dabei nicht einfach `wild drauflos', sondern überlegen Sie sich vorher genau die kritischen Fälle und testen Sie diese auch konkret ab.
  5. Zum Abschluß des Projekts erarbeitet ein Mitglied aus Ihrer Gruppe die endgültige schriftliche Ausarbeitung (beachten Sie die Hinweise zur Ausarbeitung), während ein anderes Mitglied eine ca. 10-minütige Präsentation Ihres Projekts vorbereitet (Hinweise zum Vortrag). Der Projektmanager hält ebenfalls einen ca. 10-minütigen Vortrag zur Projektorganisation und Projektablauf (Hinweise für den Projektmanager).
  6. Die Vorträge finden üblicherweise in den Räumen 01.06.011 oder 01.06.020 statt. Nähere Informationen erhalten Sie von Ihrem Betreuer.
  7. Zu diesem Abschlußtermin liefern Sie bei Ihrem Projektbetreuer auch auch die schriftliche Ausarbeitung (elektronisch und am besten auch als Papier) und die Simulatoreingabedatei mit ihren Mikroprogrammen und dem Maschinentestprogramm ab.

Hinweise für den Projektmanager

Ein Mitglied Ihrer Gruppe übernimmt für das Mikroprogrammierprojekt die Funktion des Projektmanagers. Der Projektmanager hat die folgenden Aufgaben:

Hinweise zum Pflichtenheft

Ein gutes Pflichtenheft sollte folgende Punkte umfassen:

Hinweise zur Spezifikation

Zu spezifizieren ist hier, wie Sie die zu realisierenden Maschinenbefehle implementieren wollen. Die Spezifikation beschreibt also auf einer abstrakteren Ebene, was Ihr Mikroprogramm einmal tun soll.

Hinweise zur Ausarbeitung/Dokumentation

Ein Mitglied Ihrer Gruppe zeichnet für die Ausarbeitung verantwortlich, die am Ende des Projekts bei Ihrem Projektbetreuer abzugeben ist. Die Ausarbeitung sollte die nachfolgende Aspekte umfassen: Als Anlage sollte die Ausarbeitung eine aktuelle Kopie Ihres Pflichtenhefts und Ihrer Spezifikation enthalten. Siehe dazu die getrennten Hinweise zum Pflichtenheft und zur Spezifikation.

Anwenderdokumentation

Da die von Ihnen zu realisierenden Maschinenbefehle (die ja die 'Anwenderschnittstelle' Ihrer Mikroprogramme darstellen) in der Regel bereits in der Aufgabenbeschreibung hinreichend dokumentiert sind, brauchen Sie hier normalerweise nicht viel zu beschreiben (Sie müssen dann aber zumindest auf die Beschreibung verweisen!). Dieser Abschnitt Ihrer Dokumentation sollte jedoch (soweit es angebracht ist) folgende Punkte enthalten:

Entwicklerdokumentation

Die Entwicklerdokumentation ist der Teil Ihrer Dokumentation, der bei einem richtigen Projekt firmenintern bliebe. Sie erfüllt mehrere Zwecke, u.a.:

Einarbeitung anderer Entwickler in Ihre Implementierung (z.B. bei späteren Modifikationen / Optimierungen)

Ihre Dokumentation sollte im Idealfall alle diese Punkte berücksichtigen, d.h. die folgenden Themen abdecken:

Quellcode

Der Quellcode sollte in elektronischer Form (*.mpr Datei des Simulators JMic) abgegeben werden. Achten Sie darauf, das die entsprechende Datei nicht nur ein Mikroprogramm, sondern auch ein geeignetets Maschinenprogramm enthält, mit denen die Betreuer Ihre Arbeiten testen können. Die Dokumentation sollte in jedem Fall eine kurze Beschreibung dieser Testprogramme enthalten.

Technisches zur Abgabe

Die Ausarbeitung ist in Form eines HTML-Dokuments anzufertigen. Eine Einführung und Referenzen zu hat HTML finden Sie z.B. unter http://www.selfhtml.org. Nutzen Sie bitte die Möglichkeit der Rechnerbetriebsgruppe, in der Rechnerhalle eine eigene Homepage anzulegen. Senden Sie dann den entsprechenden Link an ihren Betreuer.

Um Ihr geistiges Eigentum zu schützen, sollten Sie ihre Ausarbeitung nur einem ausgewählten Personenkreis zugänglich machen. Näheres dazu finden Sie hier. Bitte vergessen Sie nicht, Ihrem Betreuer auch das entsprechende Passwort zuzusenden.

Achtung: Die Speicherung der Passwörter in der Rechnerhalle und das Versenden von Passwörtern per Email ist nicht sicher! Benutzen Sie daher für ihre TGI-Projekte keine "wichtigen" Passwörter.

Hinweise zum Vortrag

Am Ende Ihres Projekts haben Sie dieses in einer ca. 10-minütigen Präsentation vor einem Publikum, bestehend aus Ihrem Betreuer und einigen anderen Praktikumsgruppen, vorzustellen. Dazu einige Hinweise:

Weiterführende Dokumentation

Software

JMic: Installation und Starten des Programms

Im Praktikum wird der Simulator JMic eingestetzt, der die mikroprogrammierbare Maschine mit Hilfe eines Java-Programms simuliert. Dieser ist auf den Rechnern der Rechnerhalle bereits installiert. Zum starten des Simulators geben Sie einfach ein:

JMic &

Falls Sie lieber auf ihrem eigenen Rechner arbeiten wollen, können Sie sich hier das entsprechende JAR-Archiv herunterladen:

Unter der Voraussetzung, dass Sie eine Java-Laufzeitumgebung (JRE) installiert haben, können Sie den Simulator dann mit Hilfe des Kommandos

java -jar JMic.v1.02.jar

starten. Unter Windows starten Sie das Programm mit einem Doppelklick.

MIC 5.3 - Simulator für Windows

Da JMic noch ein paar Kinderkrankheiten hat - siehe Fehlerliste im TGI-Wiki - wird der alte Simulator, der nur unter Windows läuft, zur Verfügung gestellt.

Bedienung von JMic

Allgemeines
Nach dem Start wird im oberen Fensterbeich der Mikroprogrammspeicher, links unten die Register und rechts unten der Hauptspeicher der mikroprogrammierbaren Maschine angezeigt. Sie können jederzeit über den Menüpunkt Ansicht neue Fenster öffnen. Im Hintergrund ist ein Übersichtsplan der mikroprogrammierbaren Maschine dargestellt.

Ganze Zahlen sollten in der Maschine hexadezimal eingegeben werden. Stellen Sie dazu dem Wert das Zeichen # voran. Ohne dieses Zeichen werden die Zahlen als dezimale Werte interpretiert.

Eingabe von Mikroprogrammen
Durch einen Doppelklick auf eine Mikroinstruktion im oberen Fenster öffnet sich ein Dialogfenster zur Eingabe von Mikroinstruktionen. In diesem Dialog können Sie links oben die gewünschte Mikroinstruktion auswählen. Daneben befindet sich ein Textfeld, in das Sie einen beliebigen Kommentar eingeben können. Bei Mikroinstruktionen, die als Einsprung in dei Implementierung eines Maschinenbefehls dienen, sollte hier der Mnemonic des Maschinenbefehls eingetragen werden (z.B. ADD RA, RB oder JNZ imm).

Darunter können Sie geeignete Mikroinstruktionen auswählen. Die Zahlen in eckigen Klammern entsprechen den jeweiligen Bits der Mikroinstruktion, wie sie in der Beschreibung der mikroprogrammierbaren Maschine erklärt sind. Diese Bits werden am unteren Rand des Dialogs auch binär dargestellt.

Am untersten Rand des Dialogs finden Sie vier Knöpfe, mit denen Sie die eingegebenen Werte übernehmen oder verwerfen können. Auserdem ist es möglich, die Mikroinstruktion mit Standardwerten zu belegen. Diese Werte bewirken, das sich bei der Ausführung der Mikroinstruktion kein Register und keine Speicherzelle der Maschine verändert.

Mapping PROM
Ein Programmieren des Mapping-PROMs, das die Zuordnung zwischen Op-Codes der Maschinenbefehle und den Anfangsadressen der sie realisierenden Mikroprogramme enthält, ist im Simulator nicht möglich. Stattdessen ist das Mapping-PROM nach der folgenden Regel fest programmiert:

Der Opcode i wird auf die Mikroprogrammadresse 16 * i abbgebildet

Beispiel: das Mikroprogramm des Maschinenbefehles mit Op-Code 47 (hex) beginnt an Adresse 470 (hex) des Mikroprogrammspeichers.

Hauptspeicher
Der Inhalt des Hauptspeichers ist im Fenster rechts unten dargestellt. In der ersten Spalte steht die Adresse der Speicherzelle, in der zweiten ihr Inhalt (beides in hexadezimaler Schreibweise). In der dritten Spalte wird versucht, den Opcode des Maschinenbefehls darzustellen. Dies ist nicht immer sinnvoll, da nicht jede Speicherzelle auch einen Maschinenbefehl enthält. Zum ändern einer Hauptspeicherselle klicken Sie bitte auf die mittlere Spalte.
Register
Im Fenster links unten werden die Registerinhalte angezeigt und modifiziert. Ganz links befinden sich die 16 Allzweckregister und das Q-Register. Per Konvention stehen dem Maschinenprogramm die Register r0-r7 zur Verfügung, während die Register r8-r15 sowie das Q-Register dem Mikroprogramm zur Speicherung von Zwischenergebnissen dient. Sie können den Register jederzeit beliebige Werte zuweisen.

Links neben den ALU-Registern werden oben die beiden 4-Bit Statusregister angezeigt. Auch diese können durch Anklicken gesetzt und gelöscht werden. Darunter wird die aktuelle Mikroinstruktion, der Mikrobefehlszähler, der Maschinenbefehlszähler und der Inhalt des Maschineninstruktionsregisters (IR) angezeigt.

Das Feld "Aktuelle Instruktion" enthält die Adresse der Mikroinstruktion, die sich gerade im Mikroinstruktionsregister befindet. Beim nächsten Taktimpuls wird also diese Mikroinstruktion ausgeführt. Das Feld "Mikro-BZ" zeigt den Inhalt des Mikrobefehlszählers des Am2910. Dieser ist in den meisten Fällen um eins größer als die aktuelle Mikroinstruktion. Die Felder "Maschinen-BZ" und "Maschinen-IR" sind selbsterklärend.

Achtung: in den allermeisten Fällen sollten nur die Felder "Aktuelle Instruktion" und "Maschinen-BZ" editiert werden.

Ausführen von Programmen
Nach der Eingabe von Mikro- und Maschinenprogrammen und der Initialisierung der Register kann die Arbeitsweise der Maschine simuliert werden. Zweckmäßigerweise beginnt man dabei bei einer schrittweisen Simulation, um das Verhalten der Maschine im Detail nachvollziehen zu können. Um die Abarbeitung eines Taktes zu simulieren, wählt man den Menüpunkt Einzelschritt im Menü Simulation oder drückt auf den Knopf mit dem senkrechten Balken und Pfeil in der Befehlsleiste.

Die Maschine kann auch in einen kontinuierlichen Simulationsmodus versetzt werden, indem man Starten im Menü Simulation auswählt. Es werden dann solange einzelne Takte ausgeführt, bis der Menüpunkt Stop ausgewählt wird. Alternativ kann diese Art der Simulation auch durch eine Betätigung der entsprechenden Knöpfe in der Befehlsleiste gewählt werden.

Mit dem Menüpunkt Haltepunkt setzten können sie Mikroinstruktionen kennzeichnen, bei denen eine Simulation immer anhalten soll. Setzen Sie beispielsweise einen Haltepunkt an der Mikroinstruktion 000, hält die Simulation immer zu Beginn der Ausführung eines Maschinenprogramms an.

Speichern und Laden
Über die Menüpunkte Öffnen und Speichern lassen sich die Daten auf die übliche Weise im Hintergrundspeicher ablegen. Es werden sowohl der Mikro-, also auch der Maschinenprogrammspeicher sowie die Registerinhalte gesichert. Die Datei wird in einem ASCII-Format gespeichert, das auch mit einem Texteditor manipuliert werdem kann.

Beim Öffnen von Dateien werden nur die Speicherbereiche überschrieben, die in der zu öffnenden Datei auch sinnvolle Werte enthalten. Dadurch wird es möglich, mehrere Dateien in Folge zu öffnen und so die verschiedenen Mikroprogramme miteinander zu kombinieren.