English version of this page
Next:Strukturelle und funktionale Beschreibung  Up:Entwurf  Previous:Abgrenzung von existierenden Hardware-Lösungen  Inhalt


Grundlegende Spezifikationen

Für den Entwurf eines Prozessor müssen folgende Grundlagen spezifiziert werden [24]: das verwendete Speichermodell, die Interaktion zwischen Speicher, Prozessorregistern und Befehlen, die Phasen des Pipelining sowie das Programmiermodell.

Das Speichermodell bestimmt die Organisation der Adreß- und Datenbusse und wirkt sich damit auch auf den inneren Aufbau des Mikroprozessors aus.

Die Form der Interaktion zwischen Speicher, Prozessorregistern und Befehlen enthält die möglichen Verfahren zum Zugriff auf Operanden.

Das Programmiermodell beinhaltet die direkt beeinflußbaren Register, die Maschinenbefehle sowie die verwendbaren Adressierungsarten.

Diese grundlegenden Spezifikationen sind teilweise durch die Zielsetzung der direkten Ausführung von Java-Bytecode in einem Logikbaustein vorgegeben, andere ergeben sich aus der Größe dieses Bauteils. So sind folgende Randbedingungen zu beachten:

Die Busbreite muß nach außen 32Bit betragen. Dies wird durch die Datenstruktur des Java-Bytecodes für den Datenbus vorgegeben und soll auch für den Adreßbus gelten. Außerdem ist der Befehlssatz für eine Stack-Architektur angelegt, was sich auf die möglichen Adressierungsarten auswirkt. Unterstützend werden formale Kennzeichen einer Load-/Store-Architektur eingearbeitet, so daß Zugriffe auf den externen Speicher nur über Lade- und Speicherbefehle möglich sind, die außerdem auch auf den Stack zugreifen. Hinzu kommt, daß die spätere Unterstützung eines Instruction Folding (Zusammenlegung und -ausführung von Befehlen), wie es beim picoJava-II(TM) existiert, leichte Modifikationen der Stackstruktur beinhaltet, damit z.B. auch direkt aus dem Stapelspeicher gelesen werden kann. Die Implementierung des ,,Faltens`` von Befehlen (instruction folding) ist zwar kein Ziel für diese Diplomarbeit, wird jedoch durch den vorliegenden Entwurf erleichtert. Die Pipelinestufen ergeben sich aus der Spezifikation des Komodo-Mikrocontrollers, können aber auch aus der Stack-Architektur herausgelesen werden: Befehlsholestufe, Dekodierstufe, Ausführungsstufe und Rückschreibestufe (Abb. 4.2). Sämtliche Funktionsblöcke werden im Abschnitt 4.4 genauer beschrieben.

Direkt beeinflußbare Basisregister dieser Struktur sind:



Abbildung 4.2: Pipeline dieses Entwurfs

Keine Basisregister, aber trotzdem vollständig durch den Programmierer beeinflußbar, sind außerdem alle Einträge des Stapelspeichers.

Zusätzlich gibt es in der Ausführungseinheit ein Statusregister pro Kontrollfaden (STAT0..3) sowie mehrere Hilfsregister. Mit Ausnahme der Statusregister und der Programmzähler der einzelnen Kontrollfäden sind alle Register in der Stack Memory Unit (SMU, vgl. Abschnitt 4.4.5) angeordnet, so daß auf ihnen über Stackzugriffe gearbeitet werden kann. Wiederum tritt das Problem auf, daß ein Kompromiß zwischen der Anzahl Speicherstellen in dieser SMU und dem Platzbedarf der gesamten Schaltung gefunden werden muß. So wird für den Prototypen festgelegt, daß neben den Basisregistern selbst für alle Register ein Speicherblock mit 16 Zellen à 32 Bit zur Verfügung gestellt wird. Je nach Programm können so beispielsweise mehr lokale Variablen (VARS) oder ein größerer Stack (OPTOP) genutzt werden. Es ist leicht nachzuvollziehen, daß dies eine starke Einschränkung der Einsatzfähigkeit beinhaltet. Wird der Entwurf jedoch beispielsweise auf einen Baustein der Virtex-Serie skaliert, so läßt sich dort eine wesentlich größere Stapelspeichereinheit realisieren, weil sie der restlichen Schaltung relativ gesehen nicht annähernd so viel Platz wegnimmt wie bei der Implementierung auf dem XC4036XL. In einer späteren Arbeit wäre es daraufhin sicherlich interessant, diese Größe der SMU hinsichtlich der Anforderungen der Threads ebenso wie nach dem Platzbedarf zu optimieren.

Die mit diesem Mikrocontroller möglichen Adressierungsarten sind:

Bei der impliziten Adressierung ist im Opcode fest definiert, auf welcher Speicherstelle im Prozessor der Befehl ausgeführt werden soll.

In einem Register steht bei der indirekten Adressierung die Adresse, auf der gearbeitet werden soll. In diesem Entwurf auf der Basis einer Stack-Architektur liegt dann diese Adresse als erster Eintrag auf dem Stack.

Die zu implementierenden Befehle des Prototypen zeigt Tabelle 4.1 in Abschnitt 4.4.3. Dort wird auch auf die Adressierungsarten der einzelnen Befehle eingegangen.

Der Entwurf erfolgt blockweise. Dadurch können Analyse und Grundsynthese der einzelnen Teilschaltungen schneller und mit geringerem Speicherbedarf durchgeführt werden. Außerdem ist es bei diesem Verfahren einfach, Blöcke auszutauschen, wenn sie neu entwickelt wurden. Hinzu kommt bei richtiger Entwurfsreihenfolge eine vereinfachte Testbarkeit der Teilschaltungen in Simulation und Testumgebung.



Next:Strukturelle und funktionale Beschreibung  Up:Entwurf  Previous:Abgrenzung von existierenden Hardware-Lösungen   Inhalt
Robert Zulauf

2000-04-27