English version of this page
Next:Literaturverzeichnis  Up:Entwurf  Previous:Synthese  Inhalt


Mehrfädigkeit

Die Implementierung der Mehrfädigkeit der Pipeline sprengt den zeitlichen Rahmen dieser Diplomarbeit. Sie ist eine der wesentlichen Eigenschaften des Komodo-Mikrocontrollers. Deshalb wird an dieser Stelle eine Abschätzung gegeben, wie groß der Hardware-Aufwand für eine Erweiterung der vorliegenden Implementierung auf zwei, drei, vier oder acht Kontrollfäden ungefähr ist.

Zusätzlich zum Zeitproblem tritt allerdings auch das Ressourcen-Problem im Testaufbau hervor: Die einfädige Pipeline mit den in Abschnitt 4.4.3 beschriebenen Befehlen ohne Multiplikation und Division vereinnahmt schon den gesamten FPGA. Sie entspricht damit einem Äquivalent von rund 27200 Gattern in 1296 CLB. Dies ist auch die maximale Anzahl konfigurierbarer Logikblöcke, die der Xilinx XC4036XL zur Verfügung stellen kann. Somit ist die Kapazität dieses Bausteins nahezu ausgeschöpft, auch wenn zu erwarten steht, daß durch einige dieser benutzten Blöcke noch weitere, sogenannte ,,unrelated logic`` beschrieben werden kann. Allerdings tritt dann die Frage nach der vollständigen Lösbarkeit des Verdrahtungsproblems verstärkt in den Vordergrund, die sich schon ab Auslastungen von weit unter 100% negativ bemerkbar machen kann.

Die konfigurierbaren Logikblöcke des feldprogrammierbaren Logikbausteins teilen sich auf die Funktionsblöcke des Prototypen auf (Tabelle 6.2). Alle Werte sind von Synthese zu Synthese kleinen Schwankungen unterworfen, und ein Logikblock kann durchaus mehrfach verwendet werden, solange sich die Funktionen nicht beeinträchtigen. Dies erklärt auch den Wert 0 bei der Anzahl konfigurierbarer Logikblöcke für die Microcode-ROM Unit:

Tabelle 6.2: Platzbedarf der einfädigen Pipeline
Funktionsblock #CLB #FF #Latches #Gatteräquivalente
Schnittstelle aus BMIU, Puffern und Invertern 97 60 66 ca. 1200
IFU 60 78 0 ca. 1600
IWDU 445 151 40 ca. 6700
EXE 506 181 0 ca. 7760
EXEx 765 181 0 ca. 15600
WBU 27 43 0 ca. 550
SMU 154 279 0 ca. 8038
MRU 0 51 3 ca. 1214
SU, PMU 7 10 0 ca. 84
gesamt 1296 853 109 ca. 27200

In dieser Tabelle 6.2 sind zwei Zeilen für die Ausführungseinheit enthalten: EXE enthält den für den Prototypen geplanten und in Abschnitt 4.4.3 vorgestellten Mix aus Befehlen ohne Multiplikation und Division, aber mit den zusätzlichen Befehlen read_global0, read_global1, write_pc, write_optop, write_global0 und write_global1. EXEx enthält nun neben den in EXE implementierten Befehlen auch die Multiplikation.

Die aus den Differenzen der einzelnen Ergebnisse bestimmten Größen pro Thread lassen eine realistische Abschätzung für die benötigte Größe eines FPGA zu, auf dem die vollständige, vierfädige Pipeline implementiert werden kann:

Die einfädige Pipeline benötigt in der vorgestellten Version ohne Multiplikation und ohne Division 1296 CLB (rund 27200 Gatter). Dabei enthält die Stapelspeichereinheit 32 Speicherstellen à 32 Bit mit einem Schreibeingang und zwei Leseausgängen. Die Mikrocode-ROM-Einheit besteht aus den für den Prototypen vorgesehenen zwei Befehlen.

Eine sehr einfache und wenig optimierte Beschreibung der Mehrfädigkeit wurde für die Befehlsholestufe, die Puffereinheit mit Dekodierstufe und die Stapelspeichereinheit verwendet, um die Veränderungen im Ressourcenverbrauch abschätzen zu können. Danach ergeben sich die in Tabelle 6.3 enthaltenen durchschnittlichen Differenzwerte für diese drei Einheiten pro Kontrollfaden. Darin eingeschlossen sind auch die Kosten für die Verwaltung, also die zusätzlichen Kennungsbits.

Tabelle 6.3: Mittlerer Platzbedarf der mehrfädigen Funktionsblöcke pro Thread
Funktionsblock dCLB dFF dLatches dGatteräquivalente
IFUm 22 13 0 ca. 450
IWDUm 145 69 10 ca. 2200
SMUm 245 187 0 ca. 7000

Läßt man nun das Mapping auf den FPGA durchführen (wobei der Rechner feststellt, daß das Bauteil für diese Schaltung zu klein ist), so erhält man die in Tabelle 6.4 aufgeführten Zahlen für eine mehrfädige Pipelinestruktur. Entsprechend der Organisation der EXE wird auch hier wieder zwischen Pipeline ohne Multiplikation (Mapping) und mit Multiplikation (Mappingx) unterschieden. Im Vergleich zur einfädigen Pipeline ist nun der Ressourcenbedarf für die Synthese gestiegen: Sie benötigt ca. 150MB Arbeitsspeicher. Da sie nicht vollständig durchgeführt werden kann, existiert keine Laufzeitmessung.

Tabelle 6.4: Platzbedarf der mehrfädigen Pipeline
Gesamtschaltung #Threads #CLB #FF #Latches #Gatteräquivalente
Mapping 1 1296 853 109 ca. 27200
Mappingx 1 1555 853 109 ca. 35000
Mapping 2 1539 1107 103 ca. 36100
Mappingx 2 1963 1107 103 ca. 44600
Mapping 3 2019 1380 120 ca. 47500
Mappingx 3 2436 1380 120 ca. 56000
Mapping 4 2103 1653 137 ca. 54500
Mappingx 4 2521 1653 137 ca. 63300
Prognose 8 4131 2743 190 ca. 86900
Prognosex 8 4390 2743 190 ca. 94800

Für einen achtfädigen Mikrocontroller wird aufgrund der errechneten Zahlen pro Kontrollfaden und Kennungsbit eine Prognose aufgestellt.

Die Ergebnisse sind in Abb. 6.1 für die Pipeline ohne Multiplikation graphisch dargestellt. Man erkennt, daß die Anzahl der Gatteräquivalente näherungsweise linear mit der Anzahl der Threads steigt, wobei ein zusätzlicher Offset für jedes hinzukommende Kennungsbit gerechnet werden muß. Dementsprechend ist die Differenz zur nächstkleineren Kontrollfadenzahl (Abb. 6.2) bei der Erhöhung von zwei auf drei Threads größer als bei der Erhöhung von drei auf vier (im ersten Fall muß ein zusätzliches Kennungsbit eingefügt werden, im zweiten Fall ist keine weitere Anpassung erforderlich). Der nächste größere Sprung käme also bei der Erweiterung auf fünf Threads, der folgende bei neun. Betrachtet man dies als Kriterium, so sollten für eine sinnvolle Ausnutzung der Ressourcen Zweierpotenzen als Anzahl der Kontrollfäden genutzt werden.



Abbildung 6.1: Anzahl Gatteräquivalente pro Block und Thread


Abbildung 6.2: Differenzen in der Anzahl Gatteräquivalente pro Thread

Um die einfädige Pipeline in der hier entworfenen Form in ein FPGA zu programmieren, reicht der XC4036XL gerade aus, wenn man die Multiplikation vernachlässigt (genauso wie die Division). Möchte man nun allerdings diesen Entwurf in eine vierfädige Pipeline umwandeln, so muß man auf einen XC4085XL ausweichen, der eine Schaltung mit rund 85000 Gatteräquivalenten aufnehmen kann. Die restlichen rund 20000 Gatteräquivalente werden aber sicherlich für den Prioritätenmanager und die Signaleinheit verbraucht werden.

Soll aus diesem Entwurf ein vollwertiger Mikrocontroller mit Analog/Digital-Wandler, RS232-, CAN-Bus- sowie anderen Schnittstellen hervorgehen, so muß für eine erste Implementierung auf einem programmierbaren Logikbaustein auch der Ressourcenbedarf dieser zusätzlichen Funktionseinheiten berücksichtigt werden.

Unter diesen Gesichtspunkten könnte man sich für einen Baustein der Virtex-Familie von Xilinx entscheiden, der Platz für ungefähr 200000 Gatteräquivalente bietet (XCV200). Aufgrund der Eigenschaften eines eingebetteten Systems wäre es zusätzlich sinnvoll, die energiesparende Variante dieses Chips einzusetzen, den XCV200E. Da in der Struktur des Komodo-Mikrocontrollers viele Speicherzellen auf dem FPGA benötigt werden, bietet sich insbesondere eine Verwendung der ,,Extended Memory``-Typen dieser Bausteinfamilie an (beispielsweise XCV405E). Diese Betrachtungen werden allerdings nur aufgrund der vom Hersteller veröffentlichten technischen Merkmale dieser FPGA durchgeführt [31]; eine genauere Kostenanalyse kann aus Zeitgründen nicht stattfinden.



Next:Literaturverzeichnis  Up:Entwurf  Previous:Synthese  Inhalt
Robert Zulauf

2000-04-27