Entwurf eines FPGA-Cores zur ... - real-time
Entwurf eines FPGA-Cores zur ... - real-time
Entwurf eines FPGA-Cores zur ... - real-time
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
<strong>Entwurf</strong> <strong>eines</strong> <strong>FPGA</strong>-<strong>Cores</strong> <strong>zur</strong><br />
Simulationsbeschleunigung zeitkontinuierlicher<br />
Modelle im HiL Kontext<br />
Till Fischer 03.11.2011<br />
FZI Forschungszentrum Informatik<br />
Embedded Systems & Sensors Engineering (ESS)<br />
Diplomarbeit FZI / KIT (ehem. Universität Karlsruhe), Februar 2011
Überblick<br />
• Motivation<br />
• Lösungsansatz<br />
• Architektur<br />
• Ergebnisse<br />
• Ausblick<br />
03.11.2011 © FZI Forschungszentrum Informatik 2
Motivation<br />
• Hardware-in-the-Loop (HiL) Test<br />
• Umgebungssimulation für Steuergeräte z.B. im Automobilbereich<br />
HiL Simulator<br />
Umgebungsmodell<br />
Unit Under Test:<br />
µController,<br />
eingebettetes System<br />
Signalmessung<br />
und -bereitstellung<br />
©BMW<br />
Echtzeitrechner<br />
©Atmel<br />
©MBtech<br />
03.11.2011<br />
© FZI Forschungszentrum Informatik 3
Motivation<br />
• Beschreibung der Umgebung mittels Differentialgleichungen<br />
• Sehr kurze Zykluszeit: bis in den Bereich von µs (!)<br />
• Problem wenn DGL nicht im Voraus lösbar<br />
‣ neue Lösung in jedem Iterationsschritt erforderlich<br />
‣ Echtzeitanforderung<br />
• Verwendung numerischer Verfahren<br />
• Explizite und implizite Verfahren<br />
• Implizite Verfahren: erhöhte numerische Stabilität<br />
• Lösung von Gleichungssystem in jedem Iterationsschritt<br />
03.11.2011<br />
© FZI Forschungszentrum Informatik 4
LESCore: IP-Core für <strong>FPGA</strong>s<br />
• LESCore: Linear Equation Solver Core<br />
• IP-Core <strong>zur</strong> Lösung linearer Gleichungssysteme in Hardware<br />
A, b LESCore x<br />
03.11.2011<br />
© FZI Forschungszentrum Informatik 5
Lösungsansatz<br />
Direkte Verfahren<br />
Gauß-Algorithmus<br />
LR-Zerlegung<br />
QR-Zerlegung<br />
Cholesky-Verfahren<br />
Umformung Koeffizientenmatrix A in Rechtsdreiecksmatrix<br />
Lösen durch „Rückwärtseinsetzen“<br />
Abwandlung des Gauß-Algorithmus: Zerlegung von A in zwei<br />
Matrizen L und R mit A=L∙R<br />
Wiederverwendbarkeit der Zerlegung<br />
Weniger anfällig für Rundungsfehler, doppelte Laufzeit<br />
Nur für symmetrische, positiv definite Matrizen<br />
Iterative Verfahren<br />
z.B. Krylow-Unterraum Verfahren<br />
Effizient für sehr große Systeme<br />
Konvergenzverhalten abhängig von Initiallösung<br />
Mehr Kontrollfluss als direkte Verfahren<br />
21.11.2011 © FZI Forschungszentrum Informatik 6
Lösungsansatz<br />
Direkte Verfahren<br />
Gauß-Algorithmus<br />
LR-Zerlegung<br />
QR-Zerlegung<br />
Cholesky-Verfahren<br />
Umformung Koeffizientenmatrix A in Rechtsdreiecksmatrix<br />
Lösen durch „Rückwärtseinsetzen“<br />
Abwandlung des Gauß-Algorithmus: Zerlegung von A in zwei<br />
Matrizen L und R mit A=L∙R<br />
Wiederverwendbarkeit der Zerlegung<br />
Weniger anfällig für Rundungsfehler, doppelte Laufzeit<br />
Nur für symmetrische, positiv definite Matrizen<br />
Iterative Verfahren<br />
z.B. Krylow-Unterraum Verfahren<br />
Effizient für sehr große Systeme<br />
Konvergenzverhalten abhängig von Initiallösung<br />
Mehr Kontrollfluss als direkte Verfahren<br />
21.11.2011 © FZI Forschungszentrum Informatik 7
Lösungsansatz<br />
Paralleler Zugriff<br />
a 11 a 12 ... a 1n b 1<br />
r 11 r 12 ... r 1n b 1<br />
a 21 a 22 … a 2n b 2<br />
<br />
0 r 22 … r 2n b 2<br />
...<br />
...<br />
...<br />
...<br />
...<br />
...<br />
...<br />
a n1 a n2 … a nn b n<br />
0 … 0 r nn b n<br />
• Erzeugung von „Nullen“ unterhalb der<br />
Hauptdiagonalen durch<br />
Linearkombination von Zeilen<br />
• Pivotierung/Zeilenvertauschung:<br />
Vermeidung von Rundungsfehlern<br />
‣ Suche nach Maximum innerhalb einer<br />
Spalte<br />
‣ Breite Speicherschnittstelle für parallelen<br />
Zugriff<br />
‣ Replizierte Recheneinheiten (SIMD)<br />
‣ Cache für Koeffizienten einer Spalte<br />
‣ Pivotierung löst außerdem Problem<br />
„Division durch Null“<br />
21.11.2011 © FZI Forschungszentrum Informatik 8
Lösungsansatz<br />
• Ausreizen der möglichen Parallelität<br />
• Suche nach Maximum (Pivotierung)<br />
• „Einsetzen“ <strong>zur</strong> Bestimmung des Lösungsvektors<br />
a 11 a 21 a 31 a 41 a 51 a 61<br />
b 1 r 11 r 12 r 13 r 14<br />
+ +<br />
≥<br />
≥<br />
≥<br />
≥<br />
+<br />
≥<br />
-<br />
21.11.2011 © FZI Forschungszentrum Informatik 9
LESCore Architektur<br />
Designparameter:<br />
• Floating-Point Format<br />
• Parallelität N<br />
• Speichergröße<br />
21.11.2011 © FZI Forschungszentrum Informatik 10
Test<br />
• Simulation mit ModelSim<br />
• Prototyp auf Xilinx® Virtex 6 <strong>FPGA</strong><br />
• Zusätzliche Module für<br />
Kommunikation zwischen<br />
Host-PC <strong>FPGA</strong><br />
• ChipScope Pro<br />
• Integrated Controller (ICON)<br />
• Virtual I/O (VIO)<br />
21.11.2011 © FZI Forschungszentrum Informatik 11
Auswertung<br />
• <strong>FPGA</strong> Ressourcen (Virtex 6 VLX240T-1)<br />
45%<br />
25%<br />
14549<br />
40% bram_depth=128<br />
35%<br />
20%<br />
30%<br />
25%<br />
Slices<br />
15%<br />
7688<br />
20%<br />
BRAMs<br />
10%<br />
15%<br />
99 DSPs<br />
3926<br />
10% 2547<br />
51<br />
33<br />
5%<br />
17<br />
5% 5 15 9<br />
27<br />
0%<br />
0%<br />
4 8 16 32<br />
N<br />
N=16<br />
7688 7493<br />
7640<br />
6658<br />
17 17 17 17<br />
7738<br />
6923<br />
68<br />
Slices<br />
34<br />
BRAMs<br />
128 256 512 1024 2048 4096<br />
bram_depth<br />
14%<br />
12%<br />
10%<br />
N=4<br />
bram_depth=128<br />
4659<br />
8%<br />
6%<br />
4%<br />
2%<br />
2547<br />
5<br />
15<br />
10<br />
55<br />
Slices<br />
BRAMs<br />
DSPs<br />
0%<br />
single<br />
double<br />
21.11.2011 © FZI Forschungszentrum Informatik 12
Auswertung<br />
• Erreichbare Taktrate:<br />
• Virtex 6 VLX240T-1<br />
• Inklusive Host-PC Interface (ChipScope Pro ICON + VIO)<br />
Design XST (Post Synthese) PAR (Post Place & Route)<br />
N=4, bram_depth=128,<br />
IEEE-754 single<br />
N=32, bram_depth=2048,<br />
IEEE-754 single<br />
164 MHz 187 MHz<br />
156 MHz 82 MHz<br />
21.11.2011 © FZI Forschungszentrum Informatik 13
Execution Time @ 100Mhz (ms)<br />
Auswertung<br />
• Schlechtester Fall:<br />
• Immer Zeilenvertauschung<br />
• Alle Koeffizienten ≠ 0<br />
10<br />
9<br />
8<br />
7<br />
6<br />
5<br />
4<br />
3<br />
N = 4<br />
N = 8<br />
N = 16<br />
N = 32<br />
2<br />
1<br />
0<br />
4 8 12 16 20 24 28 32 36 40 44 48 52 56 60 64<br />
Dimension<br />
21.11.2011 © FZI Forschungszentrum Informatik 14
Execution Time @ 100Mhz (ms)<br />
Auswertung<br />
• Schlechtester Fall:<br />
• Immer Zeilenvertauschung<br />
• Alle Koeffizienten ≠ 0<br />
Vergleich mit Intel Core2Duo (1 Kern):<br />
Matlab<br />
OpenCV (SSE)<br />
10<br />
9<br />
8<br />
7<br />
6<br />
5<br />
4<br />
3<br />
2<br />
N = 4<br />
N = 8<br />
N = 16<br />
N = 32<br />
Matlab<br />
OpenCV<br />
1<br />
0<br />
4 8 12 16 20 24 28 32 36 40 44 48 52 56 60 64<br />
Dimension<br />
21.11.2011 © FZI Forschungszentrum Informatik 15
Zusammenfassung + Ausblick<br />
• Flexibel, einfache Anpassung durch Parameter<br />
• Einfache Schnittstelle (identisch mit BRAM Speicher)<br />
• Speed-Up gegenüber Lösung mittels embedded Software bei Auslastung<br />
von nur 20% der <strong>FPGA</strong>-Ressourcen<br />
• Fixed-Point Arithmetik<br />
• Deutliche Ressourceneinsparung<br />
• Steigerung der Performanz<br />
• Großes Optimierungspotential in Zustandsautomaten (Handshakes)<br />
• Ausnutzung der Pipeline in Floating-Point IP-<strong>Cores</strong><br />
21.11.2011 © FZI Forschungszentrum Informatik 16