• Keine Ergebnisse gefunden

perfekten Automaten

Definition 3.6 (Arrangierte Zustandsübergangsabfolge) Beginnend bei Zustand 0 er- er-hält der Folgezustand des höchstpriorisierten Eingangswertes die maximale nächste

3.5 Hardware-Pipeline

3.5.5 Resultate

Aufgrund gleicher Aufzählungsreihenfolge entsprechen sich die Ergebnisse der Hardware- und Software-Berechnung, ein direkter Vergleich der Berechnungsdauer ist somit ohne weiteres möglich, wenn die Ausgabe von Ergebnissen aufgrund technisch we-sentlich unterschiedlicher Möglichkeiten unberücksichtigt bleibt. Für einen ersten Schritt ist die maximal mögliche Taktrate erforderlich, dargestellt in Tabelle 3.6. Zusätzlich ist noch die Anzahl der notwendigen Logikbausteine (LE für Logic Element bzw. LUT für Look Up Table) aufgeführt, wobei die Ausgabe davon etwa 199 Logikbausteine unab-hängig von der Anzahl der Zustände benötigt. Ein Logikbaustein bezeichnet bei Altera und Xilinx eine Einheit, bestehend aus einer variablen Logikfunktion mit bis zu vier Eingängen und einem optionalem Flip-Flop zur Speicherung eines Bits, alles beliebig kombinier- und zusammenschaltbar. Die Angaben basieren bei Altera auf dem Cyclone-Baustein EP1C20F324C7, bei Xilinx auf dem FPGA XC3S1000 aus der Serie Spartan 3.

Tabelle 3.6: Logikbausteine und maximale Taktfrequenz für Überprüfung der Kriterien arrangiert, reduziert, vereinfacht und präfixfrei

Altera Xilinx

|S| LEs fmax LUTs fmax

2 1 063 90,24 MHz 1 144 46,887 MHz 3 1 358 85,16 MHz 1 552 44,960 MHz 4 1 853 89,54 MHz 2 169 48,174 MHz 5 2 814 86,67 MHz 3 554 43,745 MHz 6 4 200 82,93 MHz 5 599 46,698 MHz 7 6 548 86,25 MHz 10 422 47,551 MHz 8 11 078 83,22 MHz 18 561 46,462 MHz

Der interne Takt lässt sich bei Altera mit der Megafunktion „phase-locked loop“

(PLL) und bei Xilinx mit dem Digital Clock Manager (DCM) einstellen, so dass die am FPGA anliegende Frequenz von 50 MHz bei den Experimentierplatinen (Evaluation Boards) gleich bleiben kann, aber trotzdem die maximale Geschwindigkeit in der Be-rechnung erzielt wird. Für die Nutzung der seriellen Schnittstelle ist dann entweder der Parameter für die Wartezyklen einzustellen oder z. B. ein FIFO-Speicher zu verwenden, der mit unterschiedlichen Taktfrequenzen für Ein- und Ausgangsdaten umgehen kann.

Für einen Vergleich mit der Software ist noch die Anzahl der Takte erforderlich, bis alle relevanten Automaten die Pipeline durchlaufen haben. Zur Veranschaulichung ist in Tabelle 3.7 zusätzlich die rechnerische Zeit ohne optimierende Sprünge angegeben, die sich aus der Frequenz der Tabelle 3.6 und der Anzahl aller möglichen Automaten aus Tabelle 3.5 zusammensetzt. Die Zeit für die Software stammt aus Messungen mit einem Windows-XP-Rechner mit einem Prozessor vom Typ Pentium 4 HyperThreading, be-trieben mit 3,2 GHz. Der verwendete C-Compiler stammt aus einer Cygwin-Installation und hat die Versionsnummer „3.4.4 (cygming special, gdc 0.12, using dmd 0.125)“. Die Geschwindigkeitssteigerung (ΠS) errechnet sich aus der Zeit der Software geteilt durch die Zeit der Hardware mit dem Altera-Baustein, jeweils in Sekunden für eine optima-le Berechnung mit Sprüngen; kontrolliert wurden Isomorphie der Zustände bei einem Startzustand, Nutzung aller Zustände, Präfixfreiheit und reduzierter Automat.

Die Vorzüge der Hardwareberechnung und der Eingriff in die Aufzählung durch Sprünge gemäß Abschnitt 3.4 ist deutlich. Die Aufzählung bei sieben Zuständen benö-tigt statt einem Monat lediglich neun Stunden, wenn statt Software die parallel

rechnen-3.5 Hardware-Pipeline Tabelle 3.7: Berechnungsdauer (Angaben unter Verwendung der Sprungtechnik außer bei¯h)

Software Hardware ΠS

|S| Zeit Takte Zeit Zeit ¯h SW/HW

2 < 1 ms 187 2,1µs 2,8µs < 480

3 15 ms 9 930 116,6µs 547,9µs 128,6

4 453 ms 902 577 10,1 ms 187,4 ms 44,9

5 85,2 s 109 189 318 1,3 s 115,4 s 67,7

6 4,5 h 16 189 070 248 195,2 s 29,9 h 83,6 7 38,3 d 2 823 618 430 488 9,1 h 4,1 a 77,3

de Hardware zum Einsatz kommt. Auch die Sprungtechnik hilft spürbar: Bei effektivem Einsatz der Hardware benötigt die Bestimmung der Anzahl ohne Sprünge das 3 935fache der Zeit, also statt neun Stunden über vier Jahre, bei 50 MHz Taktfrequenz sogar ganze sieben Jahre.

Tabelle 3.8: Logikbausteine und maximale Taktfrequenz für alle Überprüfungen (Krite-rien arrangiert, beliebiger Startzustand, reduziert, vereinfacht, präfixfrei, vorüberprüftes Ausgabeverhalten)

Altera Xilinx

|S| LEs fmax LUTs fmax

2 1 530 65,54 MHz 1 390 50,292 MHz 3 2 654 54,20 MHz 2 310 44,960 MHz 4 4 642 49,75 MHz 4 328 48,700 MHz 5 8 243 45,90 MHz 7 776 48,723 MHz 6 13 613 45,38 MHz 13 296 46,887 MHz 7 21 672 44,64 MHz 23 522 44,778 MHz

Bei Einsatz weiterer Einschränkungen reduziert sich nochmals die Anzahl möglicher Automaten. Für die zusätzlichen Eigenschaften beliebiger Startzustand und Anforderun-gen an die Ausgabe ergeben sich für den Hardwarebedarf analog zu Tabelle 3.6 die Werte in Tabelle 3.8. Die errechnete Anzahl der interessanten Automaten hierfür ist in Tabelle 3.9 dargestellt und in Abbildung 3.23 graphisch mit logarithmischer Skala aufgetragen.

Die Spalte „D∩SV“ (alle Bedingungen zusammen) bezieht sich auf Automaten mit beliebigem Startzustand und einer Kontrolle des Ausgabeverhaltens sowie den bisheri-gen Kriterien Isomorphie der Zustände bei einem Startzustand, Nutzung aller Zustände, Präfixfreiheit und reduzierter Automat. Auch hierbei reduziert sich die Anzahl relevanter Automaten merklich – im Vergleich zu allen Automaten ohne einschränkende Kriterien (A) zeigt sich eine deutliche Abflachung der Kurve.

Interessant ist dabei der Vergleich der Anzahl „D“ (ohne Duplikate) und „S“ (belie-biger Startzustand), die sich um den Faktor|S|voneinander unterscheiden. Ein weiterer Zusammenhang zeigt sich zwischen der letzten Spalte „D∩S∩V“ (alle Bedingungen zu-sammen) und der Anzahl davor:(D∩S)·(D∩V)÷(D)liefert den gleichen Zahlenwert.

Demnach zeigt sich von der Anzahl her ein Zusammenhang, mit aufgelisteten Graphen im direkten Vergleich ist es allerdings nicht erkennbar, auch nicht eine Konstruktions-regel, wie bereits im Abschnitt 3.4.5.3 auf Seite 59 für einen alternativen Startzustand beschrieben.

Um die Werte in Tabelle 3.9 für sieben Zustände zu erhalten, ist eine vereinfachte Schaltung für die 20 060 zur Verfügung stehenden Logikelemente erforderlich. Die

Ein-Tabelle 3.9: Anzahl an Automaten im Vergleich mit den zusätzlichen Kriterien beliebiger Startzustand (S) und überprüftes Ausgabeverhalten (V ) zusammen mit den duplikatfrei-en Kriteriduplikatfrei-en arrangiert, reduziert, verbundduplikatfrei-en und präfixfrei (D)

|S| D DS DV DSV

2 108 54 28 14

3 8 124 2 708 1 812 604

4 798 384 199 596 158 188 39 547

5 98 869 740 19 773 948 17 039 940 3 407 988

6 14 762 149 668 2 460 358 278 2 175 542 688 362 590 448 7 2 581 401 130 308 368 771 590 044 212 197 728 470 30 337 377 463

Abbildung 3.23: Automatenanzahl aus Tabelle 3.9 im Vergleich mit allen möglichen Automaten (A= (|S| · |Y|)|S|·|X|)

und Ausgabe über die serielle Schnittstelle sowie die Berechnung von h für Präfix gemäß Formel 3.3 ist genauso wie für h der optimalen Startzustände durch Zeile 7 des Algorith-mus 3.26 entfallen, dafür entstand ein neuer MechanisAlgorith-mus zur Zahlenausgabe über die acht zur Verfügung stehenden LEDs. Jeweils acht Binärziffern als Teil des Zahlenwertes erscheinen für etwa eine Sekunde. Zur Orientierung des Anzeigezyklusbeginns erschei-nen statt zweier Ziffern zuerst eine blinkende LED – während der Berechnung mit lan-ger, bei abgeschlossener Zählung mit kurzer Leuchtdauer. Die nächste LED ist für eine Identifikation des Wertes. So ist es möglich, zwei 62-Bit-Werte darzustellen. Mit platzop-timierenden Syntheseeinstellungen bedarf es 20 050 Logikelementen bei einer maximal möglichen Taktrate von 44,64 MHz. Für acht Startzustände ist eine Berechnung für be-liebigen Startzustand mit der gegebenen Hardware nicht mehr möglich.

Insgesamt müssen bei der Umsetzung in Verilog HDL für das oberste Modul ne-ben den einzelnen Parametern für Eingangswerte-, Ausgabewerte- und Zustandsanzahl auch die jeweilige Bitanzahl mit angegeben sein, da leider nicht jedes Synthesewerkzeug die in [Ins01, Seite 162] vorgeschlagene Logarithmusberechnung durchführen kann. Des weiteren kann die insbesondere für die Zustandsspeicherung verwendete parametrisier-te Bereichsangabe, z. B. „s[1][0 +: outputbits]“, aufgrund fehlender Unparametrisier-terstützung der verwendeten Plattform Xilinx ISE 9.2.03i nicht genutzt werden, für Altera Quartus II Version 7.2 hingegen stellt beides kein Problem dar.