Hallo zusammen, Ich bin Student im Programm Bachelor IT-Sicherheit an der Ruhr-Uni Bochum und möchte mir die parallelisierung von Kryptografischen Algorithmen (symmetrische Verschlüsselung, ECC, Hashes) aneignen. Da eine potente ATI GPU bei mir schon vorhanden ist, hatte ich mich bei der Recherche zunächst darauf konzentriert. Die Einstiegshürden für OpenCL/Stream erscheinen mir aber etwas hoch. Da am Horst-Görtz-Institut an der RUB bereits mit FPGA gearbeitet wird (http://www.copacobana.org/) und ich die Chance habe, im Sommersemester einen FPGA-Kurs mitzumachen, überlege ich nun in diese Richtung. Bisher habe ich mir nur mit 8-Bit Architekturen die Füße nass gemacht, habe also keine Erfahrungen mit FPGA und stehe etwas verwirrt da, weil die meisten Tutorials sich wohl auf andere Anwendungsgebiete konzentrieren. Ich suche nun ein Einsteiger-Board (~100€) mit einem geeigneten FPGA. Auf welche Merkmale muss ich achten? Bisher habe ich folgendes zusammengetragen: - Interface USB oder JTAG, Programmer ist vorhanden (BusPirate) - Breite LUT könnten für symmetrische Verfahren von Vorteil sein - I/O Bandbreite/Schnittstellen unwichtig - SRAM-basiert mit kleinem uC als Coprozessor vorteilhaft (?) In der angepeilten Preisklasse komme ich eigentlich nur auf drei Möglichkeiten, Altera Cyclone III/IV oder Xilinx Spartan-3A / Spartan-6. Mir fällt es allerdings schwer, die Dinger zu vergleichen. Bei der Copacobana kommen Spartan-3 mit 1000K-Gates zum Einsatz, die jeweils 4 DES Cores beherbergen und eine Verschlüsselung pro Takt bei 200MHz machen. Ein vom Preis vergleichbarer Spartan-6 kommt (wenn ich das richtig abschätze) auf etwa das doppelte "Fassungsvermögen", ist aber nur mit 33MHz angegeben. Wie vergleicht man sowas sinnvoll? Und wie ordne ich einen Cyclone III oder IV da mit ein? Boards: - ZTex USB-FPGA Module 1.11a mit Spartan-6 XC6SLX9 (117€ + Versand aus DE) - Digilent Basys2 250 Academic mit Spartan-3E-250 via Trenz (53€ + Versand aus DE) - Xilinx Microboard LX9 mit Spartan-6 XC6SLX9 via Trenz (103€+ Versand aus DE) - Noname mit Xilinx Spartan-3E XC3S500E via EBay (80€ + Steuern) - Terasic DE0-Nano mit Cyclone IV EP4CE22F17C6N (60€ + Steuern)
Daniel R. schrieb: > möchte mir die parallelisierung von Kryptografischen > Algorithmen (symmetrische Verschlüsselung, ECC, Hashes) aneignen. Das ist also Aufgabe A Daniel R. schrieb: > mit FPGA gearbeitet wird > (http://www.copacobana.org/) und ich die Chance habe, im Sommersemester > einen FPGA-Kurs mitzumachen, überlege ich nun in diese Richtung. Das ist also Aufgabe B Die Aufgaben A und B haben prinzipiell erstmal nichts miteinander zu tun (man kann Algorithmen auch anders parallelisieren und man kann FPGAs auch für was anderes nehmen). Dann schaust du dir die Aufgabe B genauer an: Dafür mußt du erst mal lernen was FPGAs sind, das ist Aufgabe B1. Und du mußt eine Möglichkeit finden, deine Algorithmen ins FPGA zu bekommen. Eine Möglichkeit wäre da die Beschreibungssprache VHDL. Die zu Lernen wäre dann die Aufgabe B2. Ich würde dir vorschlagen, deine Algorithmen erst mal in C auf der GPU laufen zu lassen. Und "nebenher" nächtens noch mit dem FPGA und VHDL rumzumachen. Wenn du alles auf einmal willst, dann darfst du dich auf eine sehr sehr steile Lernkurve gefasst machen... Daniel R. schrieb: > Ein vom Preis vergleichbarer Spartan-6 kommt auf etwa das doppelte > "Fassungsvermögen", ist aber nur mit 33MHz angegeben. Woher kommt diese Angabe? Ich rate dir: kauf irgendein FPGA-Board und fang damit an. Welches? Sieh dich doch mal mit der suchfunktion hier im Forum um, und du findest z.B. den Beitrag "Entscheidung FPGA Einsteigerboard"
Ok das mit dem Lernziel hätte ich vielleicht genauer ausdrücken sollen. Bisher mache ich vieles in Python und C und parallelisiere mit Threading. Jetzt würde ich gerne den nächsten Schritt machen und stattdessen die bisherige Thread-Logik von z.B. einem AES-Verschlüsselungsschritt auf einem FPGA implementieren. Das Problem mit den bisherigen Threads hier, den Tutorials und Videos die ich mir angesehen habe ist, dass sich als Entscheidungsbasis viel auf Peripherie konzentriert wird. Ich brauche keinen Grafik-Ausgang, LED, Taster, Codecs etc. All der Kram ist aber bei den einschlägigen Einsteiger-Boards immer dabei. Wenn ich mein erstes Hello World schreiben und eine LED zum blinken bringen will, kann ich diese problemlos selber am Board anbringen. Deshalb wollte ich nochmal hier fragen, ob jemand evtl. ein Board/Eine FPGA Familie für den speziellen Zweck empfehlen kann.
Für Studenten kann man eigentlich ohne weiteres die Digilent Boards empfehlen. Die bieten schon sehr viel für's Geld. Auch wenn du mit der Peripherie (noch) nichts anfangen kannst, liefert zB das Atlys ordentlich Ressourcen selbst für größere Projekte: http://www.digilentinc.com/Products/Detail.cfm?NavPath=2,400,836&Prod=ATLYS
Auf der einen Seite hätten wir also OpenCL bzw. IL ("assembler") auf einer bekannten VLIW4/5 oder neuerdings auch MIMD-Architektur auf einer AMD-GPU die mit einem schnellen Bus an den Rest des Systems angebunden ist, selbst nochmal grosse mengen einfach verwendbarem RAM mitbringt, und letztlich verlangt das man "einfach nur" Code schreiben kann, den man dann bequem aus Visual Studio heraus mit dem APP Profiler und gDEBugger debuggen und untersuchen kann. Auf der anderen Seite hätte man einen FPGA mit einer scheinbar völlig unbekannten Sprache, bei der man zudem noch komplett anders denken muss als bei Software, bei dem das Debuggen eine Qual ist, bei dem man sich dann noch grosse Gedanken machen muss wie zum Henker man denn überhaupt erstmal schnell genug die Daten in den FPGA und aus dem FPGA heraus bekommt (nutzlos den BRAM-Inhalt im Kreis verschlüsseln ist wohl kaum das Ziel), und wo alles nunmal Hardwardesign ist. Wenn nun die Einstiegshürden für OpenCL (C Code mit Syntaxergänzungen schreiben können) bereits zu Hoch sind, und man bisher nur mit 8Bit herumgespielt hat, was genau bringt einen dann auf die Idee das man sich am noch unbekannteren Hardwaredesign versuchen sollte ?
Vielleicht wäre ein Softcore die richtige Brücke?
Irgendwie verstehe ich nicht so recht, was Du eigentlich willst. Willst Du Kryptographie betreiben oder willst Du FPGAs zu programmieren lernen? Ich würde Dir raten Dich an der Uni umzuhören, ob nicht jemand nen Hiwi braucht. So kann man da in die Forschung schnuppern und dann mal sehen was die da so nehmen und treiben. Auf Verdacht ein FPGA board kaufen wird eher nicht dazu führen, dass Du zum Kryptoexperten wirst.
Daniel R. schrieb: > Ich brauche keinen Grafik-Ausgang, LED, Taster, Codecs etc. All der Kram > ist aber bei den einschlägigen Einsteiger-Boards immer dabei. Wenn ich > mein erstes Hello World schreiben und eine LED zum blinken bringen will, > kann ich diese problemlos selber am Board anbringen. > Deshalb wollte ich nochmal hier fragen, ob jemand evtl. ein Board/Eine > FPGA Familie für den speziellen Zweck empfehlen kann. Doch, das wirst du brauchen. Irgendwas wird nicht funktionieren, und dann bist du froh über jede Möglichkeit der Einflussnahme. Einfach mal ein Datenwort auf das LCD-Display anzeigen, und die Knöpfe zum Debuggen missbrauchen. Das erleichtert die Sache ungemein. Und du solltest mit den Blink-, Entprell- und ähnlichen Beispielen anfangen, weil VHDL/FPGA doch sehr anders ist, und nicht mit einer normalen Programmiersprache vergleichbar ist. Diese Unterschiede zu erkennen und anwenden zu können, das benötigt doch einiges an Erfahrung. Meine Meinung: kauf ein Board mit vielen Gimmicks drauf. Setzt dich ein halbes Jahr hin, und versuche erst einmal diese Gimmicks zu bedienen. Wenn das geht, dann bist du bereit für AES/DES auf einem FPGA.
schorsch schrieb: > Wenn nun die Einstiegshürden für OpenCL (C Code mit Syntaxergänzungen > schreiben können) bereits zu Hoch sind, und man bisher nur mit 8Bit > herumgespielt hat, was genau bringt einen dann auf die Idee das man sich > am noch unbekannteren Hardwaredesign versuchen sollte ? Für OpenCL gibt es an der uni keine Literatur zum ausleihen, genau 3 Bücher über CUDA im Präsenzbestand von den Bauingenieuren. Für Xilinx FPGAs gibts den Kurs nächstes Semester + Massenhaft Bücher. Ich nehme an, deine Anmerkungen zum throughput beziehen sich auf die Anwendung von Verschlüsselung auf große Datenmengen. Das ist aber erstmal nicht von Interesse. j. c. schrieb: > Auf Verdacht ein FPGA board kaufen wird eher nicht dazu > führen, dass Du zum Kryptoexperten wirst. Mit Sicherheit nicht. Aber es ist doch nicht vergebens, auch wenn ich nicht direkt Profi werde. @PittyJ: du hast Recht. Allgemein: Ich hatte von VHDL eigentlich das Bild, dass es sich um _gar keine_ Programmiersprache handelt, sondern eben um eine Hardware-Beschreibungssprache. Könnte bitte noch jemand was zu den 33MHz Taktraten bei Spartan-6 vs. 250MHz bei Spartan-3 sagen?
Nachtrag: j. c. schrieb: > Irgendwie verstehe ich nicht so recht, was Du eigentlich willst. Willst > Du Kryptographie betreiben oder willst Du FPGAs zu programmieren lernen? "Kryptografie" und "Kryptanalyse" bekomme ich im Laufe des Studiums noch beigebracht. In der Zwischenzeit mache ich (und eine handvoll Kommilitonen) mir einen Spaß daraus, die behandelten Verschlüsselungsverfahren und Angriffe zu implementieren. Manche Sachen sind aber selbst mit Threading auf einem Quadcore schlecht machbar. Aus diesem Grund wollte ich mal mit anderen Architekturen experimentieren. Der Anstoß dazu war vor kurzem eine Aufgabe, bei dem ich eine 14-Megabit Zahl Faktorisieren musste, die aus den kleinen Primfaktoren 2...101 bestand. Mit GMP war das in etwa 2 Tagen erledigt. Wäre nun z.B. interessant, einen riesigen divider per FPGA zu implementieren und mal mit Radix 2^1024 anstatt 2^64 zu rechnen ;) -- Bitte seht mir meine Naivität nach und verkrampft euch nicht so bei dem Versuch, mir klar zu machen wie unsinnig es ist was ich hier mache. Andere Leute aus meinem Studiengang beschäftigen sich grade mit Battlefield 3 und Skyrim.
Hey ne, kein Ding. Ich habe Dich schon plastisch vor mir gesehen, als ich Deinen Eingangspost gelesen habe. Mir ging es damals genauso. Ich habe die Nächte durchgelötet und früh 2 Stunden vor der Vorlesung tat die Schaltung dann. Geile Zeit. Aber woran ich mich auch erinnere, ist die grenzenlose Naivität die ich damals hatte. Mangels der Erfahrung, es wirklich getan zu haben, habe ich mir viele Sachen einfach zu simpel vorgestellt. Mir ging es damals mit DSPs so. Daher dachte ich, es hilft Dir vielleicht ein wenig, wenn Du versuchst die Sache strukturiert anzugehen. Gleich nen humanoiden Roboter bauen geht nicht, man muss erstmal ne LED zum leuchten bringen ;-) Interessant für Dich ist vielleicht eher noch als FPGA das GPU-Computing, aber das machst Du sicher schon...
Eine gewisse Naivität ist es aber auch, die einen durch das Studium treibt. Halte es für einen guten Ansatz einfach mit einem Board anzufangen. Ich habe mich damals leider nicht mit fpga beschäftigt und die Denkweise fällt mir nun schwer. Ist gute 15 Jahre her. Als Board habe ich mir privat eines von Digilent gekauft. Nexys2 mit einem S3E. Das finde ich Klasse auch Preis/Leistungsmäßig (bei dem sehr begrenzten Zeit und Wissensaufwand den ich rein stecken kann) Ob ein S3 oder ein S6 für deine Anwendung gekauft werden sollte, kann höchstens jemand anders sagen, die Frage wie wahrscheinlich überhaupt Verschlüsselungen mit dem ganzen Datenaustausch darauf laufen werden, kannst du nur selber beantworten. Will sagen wenn du vor dir selber nicht ganz sicher bist, so weit zu gehen wäre für mich der Preis höher als Leistung einzustufen. Abgesehen davon sind doom und co. nebst dem übrigen abstrakten Sudentenleben auch 'geile' Erfahrung, die ich nicht missen möchte. Und die für mich auch den Wert des Studierens ausmachen. Was daran verwerflich sein soll erschließt sich mir nicht. Wir hatten ja schon öfter die Frage soll ich studieren und lohnt sich studieren. 'lohnen' ist ein weiter Begriff.
Daniel R. schrieb: > Könnte bitte noch jemand was zu den 33MHz Taktraten bei Spartan-6 vs. > 250MHz bei Spartan-3 sagen? Dazu musst du mal erzählen woher du die Angabe hast. Die Taktrate hängt immer vom Design ab. Verwendet man auf beiden FPGAs das gleiche Design wird der Spartan6 auf Grund niedriger Durchlaufzeiten der Schnellere sein.
Außerdem hat der Spartan 6 6-Bit LUTs, was in punkto Logik-Laufzeit nochmal einiges bringen kann. Eigentlich ist der Spartan 6 dem Spartan 3 immer überlegen. Mir fällt auf Anhieb nichts ein, was beim Spartan 3 ein Vorteil wäre.
Christian R. schrieb: > Mir fällt auf Anhieb nichts ein, was beim Spartan 3 ein Vorteil wäre. Man sollte beim Spartan6 beim Initialisieren von Signalen/Variablen aufpassen, dass der selbe Wert verwendet wird, wie für einen möglichen Resetwert. Sonst wird zusätzliche Logik nötig, weil diese Reset/Preset-Pfade dann nicht doppelt verwendet werden können. Sowas wäre also schlecht:
1 | signal cnt : integer := 0; -- Initwert anders als ... |
2 | |
3 | process begin |
4 | wait until rising_edge(clk); |
5 | if reset='1' then |
6 | cnt <= 345; -- ... Resetwert --> zusätzliche Logik nötig :-o |
7 | else
|
8 | cnt <= cnt+1; |
9 | end if; |
10 | end process; |
Aber wenn man sowieso keinen Reset verwendet (wozu auch), dann ist diese Einschränkung hinfällig.
Was wäre denn mit folgendem Ansatz: 1. Erst mal alles herstellerunabhängig im Trockendock durchsimulieren (GHDL ist dazu sehr wegen der VHPI-Schnittstelle zu empfehlen, siehe auch 'ghdlex' im Netz) 2. Resourcen abschätzen: Wieviele Gates (-> welches FPGA), welche Interfaces (->welches Board) sind nötig? 3. Mit den herstellerspezifischen freien Tools (Webpack, Quartus, usw.) nochmal bauen um (2) zu verifizieren 4. Ab damit in die Hardware, debuggen, und nochmal debuggen (das kann dauern) Im Endeffekt ist oft das ursprünglich angepeilte Projekt immer eine Nummer zu gross für einen alleine, aber ein guter Dozent wird möglichst zusehen, einzelne Studenten nicht zu verheizen. Deswegen ist eine reine Simulationsarbeit mit guter Test-Szenario-Abdeckung u.U. schon ein ausreichender "proof of concept", bei dem man sich auf die Aufgabenstellung konzentrieren kann. Gruss, - Strubi
Also erstmal zu der Verwirrung mit den Taktraten: Ich habe mich dabei auf die Angaben der Farnell-Suchmaschine bezogen. Muss natürlich nicht stimmen, ich habe nicht sämtliche Datenblätter durchgelesen. Jedenfalls fängt die Angabe für "Max. Betriebsfrequenz" bei den Spartan-3A bei 250MHz an, bis jenseits der 300MHz. Bei den Spartan-6 steht (fast) überall 33MHz. Als ich grade nochmal nachgeschaut habe, tauchten da dann noch 4 einzelne Spartan-6 auf, die mit 450MHz angegeben sind. Ob es sich dabei um einen Fehler handelt, können diejenigen unter euch entscheiden, die die Datenblätter verstehen. Strubi: Ich habe keinen Zwang und auch kein Projekt bzw. "Aufgabe". Ich habe inzwischen eine Antwort bezüglich des FPGA-Kurses bekommen, und es wäre wohl eine absolute Ausnahme wenn ich da als Bachlor mitmache. VHDL-Kenntnisse werden vorausgesetzt. Da der Kurs schon Anfang April losgeht und für mich dazwischen noch die Klausuren liegen, wird das also wohl nichts. Herzlichen Dank für eure Antworten. Ich werde mir für meine privaten Experimente wohl eins der einschlägigen Einsteigerboards kaufen. Mir gefällt das Terasic DE0-Nano eigentlich am besten, werde mal schauen wie ich das hier in Deutschland bekomme. Habe jedenfalls keine Lust mal wieder zum Zoll laufen zu müssen.
Naja, die Angaben bei Farnell sind sinnlos. Schau ins Datenblatt, da steht beim Spartan 6 beispielsweise: F MAX Global clock tree (BUFGMUX) LX devices 400 400 375 250 MHz Von links nach rechts Speedgrades -3 -3N -2 -1L BlockRAM und DSP Einheiten laufen aber weniger schnell. Aber auch jenseits der 250MHZ Marke bei -2 oder schneller.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.