Forum: FPGA, VHDL & Co. Suche Hersteller von Mehrfach-FPGA-boards


von Robert (Gast)


Lesenswert?

Ich benötige für einige rechenintensive Applikationen ein Board, das 
möglichst viel FPGA-Power hat aber mit einer kostenfreien FPGA-Software 
konfigurierbar ist. Altera oder Xilinx wäre erst mal egal. Leider können 
die freien Versionen regelmäßig nur die mickrigen FPGAs, daher suche ich 
jetzt etwas, das mehrere FPGAs enthält. Kennt da einer ein System?

Es gingen auch mehrere kleine Boards, die man zusammenschalten kann. Ich 
bräuchte dann so eine Art Modulsystem. Ich denke da an EVAL-boards, aber 
die haben gleich wieder viel zuviel drauf.

Gefunden habe ich nur diese Copacobana-Ding, aber das ist oversized und 
ausserdem melden die sich nicht.

von Duke Scarring (Gast)


Lesenswert?

Robert schrieb:
> Kennt da einer ein System?
Immer wieder gern genommen:

http://www.dinigroup.com/new/index.php

Ernsthaft. Wer mehrere FPGA's kaufen will, hat auch das Geld um sich 
einen größeren FPGA + Software zu kaufen. Nicht zu vergessen, daß man 
auch Manpower braucht um den/die FPGA(s) zu füllen.

Duke

von Robert (Gast)


Lesenswert?

Die Manpower habe/bin ich. Und die benötigten Cores hintereinander zu 
quetschen geht schneller, als die Synthesen dann dauern. Ich brauche 
einfach den Platz. Ausserdem sind auch größere FPGAs auf den EVAL-boards 
rasch voll. Man kann zwar neue kaufen, aber da ist viel zuviel 
Schnickschnack drauf.

DNI kenne ich natürlich auch. Die Boards rangieren im 5-stelligen 
Bereich.
Dann kaufe ich lieber ein paar V4-boards von xilinx und habe es für 
1/10.

Optimal wäre ein header board, mit nur dem FPGA und einem Config-Flash, 
das aber kaskadierbar ist. Trenz hat S3DSP boards habe ich gesehen, 
kosten 169,-. Dann kann ich allein für die jährliche Xilinx-Lizenz 15 
Stück kaufen.

von Duke Scarring (Gast)


Lesenswert?

Robert schrieb:
> Optimal wäre ein header board, mit nur dem FPGA und einem Config-Flash,
> das aber kaskadierbar ist.
Ok.

> Trenz hat S3DSP boards habe ich gesehen, kosten 169,-.
Die Trenz-Mikromodule sind m.W. nach auch kaskadierbar (mit bestimmten 
Einschränkungen).

Ich glaube das der Markt für das, was Du suchst ist relativ dünn ist.
Mir fällt dazu auch nur Trenz und Copacabana ein.

Duke

von Robert (Gast)


Lesenswert?

Na dann wird es das wohl werden. Haben ja auch eine EAGLE Lib für eigene 
Trägerboards. Wäre schon mal die Verschaltung gelöst.

Vielleicht finde ich ja aber auch noch was anderes.

von Tom (Gast)


Lesenswert?

Auf Opencores gibt es ein Projekt Gecko3 bei dem wie es aussieht mehrere 
FPGA-Boards kaskadiert werden können.

Allerdings ist 'möglichst viel FPGA-Power' reichlich unscharf: Wie oft 
bekommst Du Deinen Core in diesen oder jenen FPGA, wieviel internen und 
externen Speicher brauchst Du, und wie groß ist der Bandbreitenbedarf?

von Silvia A. (silvia)


Lesenswert?

Duke Scarring schrieb:
> Die Trenz-Mikromodule sind m.W. nach auch kaskadierbar (mit bestimmten
> Einschränkungen).

Max 2. Stück - Aber auf dem Prinzip kann man ja was eigenes Bauen

von Frank V. (scyx)


Lesenswert?

Wie wäre es damit?
http://www.iaf-bs.de/

Frank

von Robert (Gast)


Lesenswert?

2 Stück gehen beim den Trenzmodulen wohl Huckepack, wie ich sehe. Das 
wäre schon ok, solange ich mehrere auf ein Trägeerboard bringen kann. 
Das müsste ich sowieso bauen.

Das Fraunhoferzeug ist mir etwas suspekt. Da hat man keine 
Liefergarantien, wenn man doch was Professionelles draus machen will. 
Ausserdem zu LTE-lastig. Das Prototyping board ginge einigermassen, aber 
ich sehe keine Preise.

Ich habe jetzt diese Module ausgegraben:

http://www.simple-solutions.de (Zefant)

preislich ok und alt genug, damit es lange genug im Markt ist und man 
auch noch nachkaufen kann.

von Robert (Gast)


Lesenswert?

Also, es werden die Trenzmodule. Die Spartan 3A DSPs sind derart gut 
ausgebaut, dass sie die anderen boards schlagen und zudem ist das Ding 
noch billig.

> Wie oft bekommst Du Deinen Core in diesen oder jenen FPGA,
Ich brauche für die minimale Applikation ohne hohe Auflösung schon fast 
einen S3E für Interfaces und Verwaltung und kann dann noch nicht viel 
rechnen. Je nach Matrixgrösse brauche ich deutlich mehr. Ein Beispiel 
sind 6 DSP-Elemente vom S3-Typ, Zelle -> 4x4 -> 96 DSPs. Da läuft der ja 
schon über.

> wieviel internen und externen Speicher brauchst Du,
intern hätte man mit einem FPGA genug, um das zu speichern, was 1 FPGa 
an Operatoren beherbergt, weil viele pipieline und Register ist und 
temporär exisitiert.

> und wie groß ist der Bandbreitenbedarf
n  2  (100Msps/200Msps) mit n= 4..32.
Das ist aber weniger das Problem.

Es geht eher um Platz, z.B. für mehrere parallele FFTs und 
Schätzarchitekturen: Mehrere Pfade rechnen dasselbe mit denselben Daten 
und man kann Ergebnisse vergleichen. Je mehr Platz, desto mehr geht 
gleichzeitig, statt hintereinander in einem anderen Durchlauf und 
produktive Ergebnisse brauchen garnicht erst für später gespeichert zu 
werden.

Wieviel man am Ende braucht, muss man sehen. Daher muss ich zulaufen 
können.

von J. S. (engineer) Benutzerseite


Angehängte Dateien:

Lesenswert?

Ich bin auch am Überlegen, soetwas zu bauen oder zusammenzukaufen und 
bin auf eine Kombination aus EVAL-Board und Mini-boards mit nicht viel 
mehr drauf, als einem FPGa gekommen. Ich hatte seinerzeit so eine 
Plattform mit Spartan 2 aufgezogen, stiess aber schnell an die Grenzen 
der Chips. Später stand Neubau oder Kauf an, wobei Kauf immer die 
billigere Alternative darstellte. Leider habe ich bisher aber kein so 
richtige passendes Aufsteckboard gefunden, dass wenig genug an unnötiger 
Peripherie drauf hat, aber dennoch einen ordentlichen Chip trägt, mit 
dem man etwas anfangen könnte. Die billigen Xilinx-Eval boards tragen 
nur einen mickrigen FPGA und die größeren sind zu teuer und es wäre 
Verschwendung, die zusammenzuschalten.

Die Zenfantboards habe ich mir auch schon angesehen, aber sie sind im 
Vergleich auch noch zu teuer und haben immer noch zuviel drauf. Die 
"alten" Spartan3-FPGAs wären zwar noch im Rahmen, haben aber kaum 
DSP/MULs.

Am effektivsten scheinen mir für Rechenapplikationen die S3A DSP 1800 
von Xilinx. Für netto €1000,- bekommt man 6 Trenzboards vom Typ 320EV2 
mit dem B2B connector, die man auf einem selbstentwickelten board mit 
EAGLE leicht integrieren kann. Jedes hat ein eigenes Flash und ist 
individuell konfigurierbar. Das hat grosse Vorteile, weil man durch die 
Partitionierung der Applikation immer nur eins davon neu synthetisieren 
und laden muss.

Das System hat dann immerhin 100.000 slices, 500 DSP-Elemente, 1,2 MB 
BRAM und 768 MB DDR-RAM. Ich bin schon am planen, wie das aussehen 
könnte.

Ich muss dann nur ein Trägerboard bauen, das ausreichend Leistung 
bereitstellen kann und mir Gedanken über die Busverdrahtung machen.

von Robert (Gast)


Lesenswert?

Andererseits hätte ein XC6VLX760 sogar 118,560 slices, 25MB BRAM, 864 
DSPs und ein XC6VSX475T, 74,400 slices, 38MB BRAM und 2,016 DSP 
Elemente.

von D. I. (Gast)


Lesenswert?

Das mit den MB und Mb solltest du nochmal üben, ... liegt ja immerhin 
ein Faktor 8 dazwischen

von Zonk-8000 (Gast)


Lesenswert?

> liegt ja immerhin ein Faktor 8 dazwischen

Beim Preis übrigens auch so ungefähr ;)

von Robert (Gast)


Lesenswert?

ok, richtig,  XC6VLX760 3MB BRAM und XC6VSX475T 4,5MB BRAM.

Der Preis ist so eine Sache. Hängt sehr von der Auflage der Boards ab. 
Dummerweise bekommt man auch bei Xilinx / Digilent, die viel produzieren 
nur die kleineren FPGAs angeboten, was ich ehrlich gesagt, ungeschickt 
finde, weil man auf einem EVAL board schon auch die grösstmögliche APP 
fahren können sollte. Abspecken geht immer.

Bliebe noch Spartan 6:
XC6SLX100 101,261 slices, 0,1 MB BRAM und 180 DSPs.

von Zonk-8000 (Gast)


Lesenswert?

0,6MByte

 :-P


Aber egal, der LX100 geht doch schon nicht mehr mit dem freien ISE 
Webpack, oder?

von René D. (Firma: www.dossmatik.de) (dose)


Lesenswert?


von Robert (Gast)


Lesenswert?

@Zonk: ok, hatte mich in der Spalte vertan. Und ja, der 100er geht nicht 
mehr mit der Webpacksoftware.

@Rene: ja den habe ich gesehen. Der kleinere FPGA (45er) ist wieder 
recht klein.

von J. S. (engineer) Benutzerseite


Lesenswert?

Ich sage mal, wenn man sich für einen grossen FGPA entscheidet, kann man 
wirklich gleich die Vollversion der Software dazu kaufen. Allerdings ist 
man dann gleich mit 5kEUR dabei. Das ist als Hobby etwas schwer 
gegenzufinanzieren / zu rechnen :-)

Die SW habe ich dann da liegen und muss sie allenthalben updaten, weil 
ich gezwungen bin, mit der Vollversion zu arbeiten. Für den Preis der SW 
bekommt man aber einiges mehr an Hardware.

Es gibt noch einen Punkt: Ein weit ausgebautes board ist mit dem Tod des 
FPGA praktisch auch dahin. Wenn ich mir aber einen von mehreren kleinen 
"zerhaue" tausche ich das board komplett und habe nur 200,- an 
Reparaturkosten inkl. Versand. Aussdem bin ich nicht lahm gelegt. Wenn 
ich das System tatsächlich benutze / benutzen muss, weil ich eine 
wichtige Anwendung dafür habe, lege ich mir einfach ein Ersatz board hin 
und bin voll arbeitsfähig.

Ich bin jetzt fest entschlosen, mir das so oder so ähnlich aufzubauen. 
Die Frage ist nur noch nach dem FPGA.

Ok, man könnte das Spartan 6 board nehmen, bekommt aber fürs gleiche 
Geld nur 4 boards davon. Daher hätte man: 26.000 slices, 1MB bram, 232 
DSP slices, also deutlich weniger, als mein 6er von oben. Die bessere 
serielle Funktionalität brauche ich nicht. Der Vorteil bestünde nur in 
der höheren Taktfrequenz und den gfs besseren DSP-slices. Aber man hat 
nur 60% der Kosteneffizienz im Vergleich zum S3A DSP. Die Spartan 6 sind 
halt die neuen aktuellen Chips und damit teurer.

An Robert: Wofür brauchst du das Board genau?

von Kest (Gast)


Lesenswert?

Juergen Schuhmacher schrieb:
> Ich sage mal, wenn man sich für einen grossen FGPA entscheidet, kann man
> wirklich gleich die Vollversion der Software dazu kaufen. Allerdings ist
> man dann gleich mit 5kEUR dabei. Das ist als Hobby etwas schwer
> gegenzufinanzieren / zu rechnen :-)

Stimmt so nicht. Altera Quartus II kostet so um die 2500,-. Da drin sind 
NIOS, DDR1/2/3 + andere Cores enthalten. Aber auch mit der freien 
Version kann man alle Cyclones III nehmen (bis 120 kLE, 288  18x18 
Mults, 486 kByte M9K)

Juergen Schuhmacher schrieb:
> Es gibt noch einen Punkt: Ein weit ausgebautes board ist mit dem Tod des
> FPGA praktisch auch dahin. Wenn ich mir aber einen von mehreren kleinen
> "zerhaue" tausche ich das board komplett und habe nur 200,- an
> Reparaturkosten inkl. Versand. Aussdem bin ich nicht lahm gelegt. Wenn

Ach, es kann nur ein FPGA kaputt gehen? Was passiert, wenn Trägerplatine 
eine Schuß hat?

Die Idee an sich finde ich sehr interessant, mehrere FPGAs als Module zu 
verwenden. Für diverse Projekte habe ich allerdings sowas schon mal 
durch kalkuliert, nur war keins wirtschaftlich! :-o (Allerdings waren es 
keine gekauften Module, sondern auch selbst entwickelte)

Grüße,
Kest

von Robert (Gast)


Lesenswert?

@Jürgen Schuhmacher:
Videoalgorythmen und Musterkennungsverfahren sollen parallel 
qualifiziert werden. Im Endsystem werden dann zwar nur einige wenige 
Methoden zur Anwendung kommen, wo dann auch ein einzelner FPGA reichen 
wird, aber wenn es ums Vergleichen geht, ist es einfacher, Ergebnisse 
parallel berechnen und verfizieren zu können. Daher ist "as much as 
available" angesagt. Momentan läuft das noch auf privater Schiene, bzw 
in Eigenregie und darf nicht zu hohe Kosten aufwerfen.

@Kest:
Welche Boards hast Du getestet und durchgerechnet?

> Altera Quartus II kostet so um die 2500,-
Xilinx ISE ungefähr auch, soweit ich weiss. Es bleibt aber das Problem, 
dass man auf die Vollversion festgelegt ist und sie immer wieder kaufen 
muss, bis der FPGA vielleicht einmal veraltet und in der freien 
aufgenommen wird.

Insofern stimme ich Jürgen vollkommen zu: Für die Summe von 2500,- kann 
ich mir gleich die dreifache Hardware kaufen und betreiben. Man muss das 
Gesamtsystem und die Kosten betrachten. Das Board mit dem besseren FPGA 
ist ja auch gleich viel teurer. Die Xilinx-PCBs mit den dicken FPGAs, 
die in Summe dasselbe können, kosten auch gleich 1500,- und mehr. Macht 
einen Gesamtpreis von >4000,-. Es kommt für den Heimgebrauch eigentlich 
nur die Webversion in Frage.

Altera wäre für mich aber durchaus eine Alternative. Ich bin bislang 
nicht festgelegt.

> Aber auch mit der freien Version kann man alle Cyclones III nehmen
Welches Board kann man da nehmen?

von hunz (Gast)


Lesenswert?

http://www.enterpoint.co.uk/merrick/merrick1.html
Kann man sich auch mit Webpack-kompatiblen Steinen bestücken lassen, 
aber da würde ich dann auch noch die 3.5k für ne ordentliche ISE-Lizenz 
abdrücken. Da kommts dann auch nicht mehr drauf an.

von Robert (Gast)


Lesenswert?

Jaja, der Traum der FPGA-Entwickler. Ein ganzer Raum voller Merricks mit 
wenigstens 30x40x50 Platinen zu 100 Bausteinen. Damit kann ich dann 500 
Zusen emulieren. Klar, nehme ich sofort, aber wer bezahlts?

Ich würde jetzt so maximal 3000,- Euro ansetzen für das Projekt und will 
möglichst viel Leistung dafür haben. Wenn schon die Hälfte in die SW 
flösse, bliebe nicht mehr viel. Die Module haben auch noch den Vorteil, 
dass man auch klein anfangen kann und später aufrüsten. Wenn ich 
wirklich mehr Power brauchen sollte, baue ich noch ein paar Module 
hinzu.

Ich habe es mal durchgerechnet, dass ich wegen des Speichers 2 kleine 
Boards mit Spartan DSP für die Elementarapplikation brauche. Da Daten im 
loop erst weiterverarbeitet werden können, wenn sie durch durch die 
pipeline durch sind, habe ich Raum für ca 256 Szenarien. Das sind z.B. 4 
Parametervariationen mit je 4 Stufen. Mit jeder 2er-Gruppe verdoppelt 
sich die Zahl der simulierbaren Fälle. Beladen werden sie alle 
gleichzeitig mit denselben Daten. Da könnte man die Module einfach 
parallel nebeneinanderhängen.

Ich schaue jetzt aber trotzdem nochmal, was Altera hat.

von D. I. (Gast)


Lesenswert?

Ich würde dir auch zu Altera und den Cyclones raten. Kennst du nicht 
vielleicht einen Studenten, der dann den Academic Preis beziehen könnte?

Dann würde ich mir für dein Budget den Tisch mit den DE2 Boards von 
Terasic zuknallen, die mit der freien Software beschreibbar sind:

http://www.terasic.com.tw/cgi-bin/page/archive.pl?Language=English&CategoryNo=139&No=502

Noch dazu kannst du SignalTap verwenden wenn du WebTalk zulässt, 
wohingegen du bei Xilinx kein ChipScope bekommst für lau

von Kest (Gast)


Lesenswert?

Robert schrieb:
> Videoalgorythmen und Musterkennungsverfahren sollen parallel
> qualifiziert werden. Im Endsystem werden dann zwar nur einige wenige
> Methoden zur Anwendung kommen, wo dann auch ein einzelner FPGA reichen
> wird, aber wenn es ums Vergleichen geht, ist es einfacher, Ergebnisse
> parallel berechnen und verfizieren zu können. Daher ist "as much as
> available" angesagt. Momentan läuft das noch auf privater Schiene, bzw
> in Eigenregie und darf nicht zu hohe Kosten aufwerfen.

Mh... da habe ich auch Einiges gemacht, nur verstehe ich nicht, wieso es 
mehrere Boards werden müssen? Um vergleichen zu können, reicht die 
Simulation (ob jetzt mit ModelSIM, VirtualDub, ImageJ, CUDA ist 
vollkommen egal). Ich habe mit allen was gemacht und es geht halt 
schneller, als wenn man jetzt das komplette FPGA-Design macht. Wenn der 
Algorithmus dann steht, kann man ja alles ins FPGA gießen.
Kauf Dir einfach eine CUDA Grafikkarte und mache alles damit, so schnell 
an die ergebnisse kommst Du nie mit einem FPGA (schon gar nicht mit 
einem selbst entwickelten FPGA-Board)

Robert schrieb:
> Welche Boards hast Du getestet und durchgerechnet?

Nur Eigenentwicklungen.
Den Aufwand mehrere FPGA-Designs zu pflegen darf man nicht 
unterschätzen. Das klingt alles so toll und einfach, in Wirklichkeit 
aber sieht es ganz anders aus. Dazu kommt noch die Kommunikation 
zwischen den Boards. Dann noch debugging und Co... Überlege es Dir gut!

Für Algorithmen-Evaluationen haben wir immer etwas größeres FPGA 
genommen. Wenn dann die Entwicklung fertig ist, wird kleineres FPGA 
bestückt (Pin-Kompatibilität).
Bei Cyclones III ist es schon toll: 3c16 -> 3c40 -> 3c55 -> 3c80 -> 
3c120
Man nehme einfach das nächstgrößere, wenn es nicht reinpasst ;-). Und 
das Beste: alle lassen sich mit WebEdition programmieren :-o -> keine 
Kosten

Grüße,
Kest

von Robert (Gast)


Lesenswert?

Altera ist mir schon symphatisch, keine Frage. Das mit dem SignalTAP 
habe ich mir auch schon überlegt.

Zu der Simulation: Das Design zu simulieren und zu checken, ob es läuft 
ist kein Akt. Die Signalverarbeitung ist simpel und zudem ausgereift 
genug, sozusagen. Es geht um die Parameter und die sind nur anhand der 
Echtzeitdaten wirklich gut zu optimieren. Das in SW zu machen scheidet 
komplett aus. CUDA Grafikkarte scheidet ebenfalls aus. Es muss ein FPGA 
sein, weil aufgrund der späteren Datenanbindung einiges an ADCs 
drankommen soll und wird.

Erstes Umsehen ergab das hier:
http://www.hdl.co.jp/en/index.php/acm/acm-022.html

Wenn ich 2 von den großen nehme, bleibe ich unter 3000,- und hätte 
240.000 LEs, 500kB Ram, fast 600 Multiplier.

von Kest (Gast)


Lesenswert?

Robert schrieb:
> Zu der Simulation: Das Design zu simulieren und zu checken, ob es läuft
> ist kein Akt. Die Signalverarbeitung ist simpel und zudem ausgereift

:-o
Wie oft ich das schon gehört habe ;-)

Robert schrieb:
> genug, sozusagen. Es geht um die Parameter und die sind nur anhand der
> Echtzeitdaten wirklich gut zu optimieren. Das in SW zu machen scheidet
> komplett aus. CUDA Grafikkarte scheidet ebenfalls aus. Es muss ein FPGA

Geht es um Bilder? Videodaten?
Wenn ja, dann ist ist eine simple aber gute HD-WebCam mit 
CUDA-Grafikkarte auf jeden Fall günstiger, als ein FPGA Board(s) für 
mehrere Tausend.

Ehrlich gesagt, jetzt verstehe ich die Intention überhaupt nicht, was 
gemacht werden soll. Und wieso gerade mehrere Boards dafür notwendig 
sein sollen. Wie willst Du dann die Daten in so ein Board reinbekommen? 
Was soll rauskommen? Als VGA/DVI?
Kannst Du mehr erzählen, was das für Algo ist und ob es schon in 
irgendeiner Form lauffähig ist?

Grüße,
Kest

von J. S. (engineer) Benutzerseite


Lesenswert?

Würde mich auch mal interessieren, was dort genau gerechnet werden soll.

Wenn es FPGAs sein müssen, wird es wohl an der Zieltechnk liegen. Oder 
macht ihr die Simulation als Hardware-Cosimulation? Ich habe sowas 
kürzlich mit MATLAB gemacht. Man kann nahezu jeden Algo als FPGA Design 
inklusive embedded MATLAB Funktionen in ein EVAL-board reinstopfen und 
simulieren lassen.

> Wenn ich 2 von den großen nehme, bleibe ich unter 3000,- und hätte
> 240.000 LEs, 500kB Ram, fast 600 Multiplier.

Wenn Du soviel investieren kannst und willst, bekommst Du dafür aber 
auch das Dreifache meiner Lösung, nämlich: 300.000 slices, 1500 
DSP-Elemente, 3,5Mb BRAM und 2GB externes DDR-RAM.

Wenn es unbedingt ein grosser Chip sein soll, dann ist aber das Altera 
Board (Video Kit) zu empfehlen. Das hat denselben FPGA und als Video Kit 
bekommt man noch AD-Wandler dazu / eine weitere Karte.

Ich würde auch zu Altera raten, habe aber noch keinen Lieferanten 
gefunden, der so billig anbietet, wie Trenz. Alle äquivalenten Altera 
boards liegen eher so um 400,-. Auch die Spartan 6 boards sind in 
Relation immer teurer.

> Dann würde ich mir für dein Budget den Tisch mit den DE2 Boards von
> Terasic zuknallen, die mit der freien Software beschreibbar sind:

Das V4 schaut gut aus, wobei ich nicht weiss, ob zu dem Preis der grosse 
FPGa bestückt ist. Sieht aber so aus, wie mir scheint. Wären 500,- 
Euronen.

In jedem Fall wäre das ein gutes Master board, denn die kleinen Module 
müssen ja auch irgendwie getrieben werden.

von Robert (Gast)


Lesenswert?

Die genauen Aspekte der Algorythmik kann ich hier nicht offenlegen. Nur 
soviel: Es geht um hohe Datenraten und DSPs schaffen das um den Faktor 
3-4 nicht. Habe ich genauestens durchberechnet.

Der am Ende herausgekommende Algo kommt in jedem Fall wieder in ein 
FPGA, deshalb macht es keinen Sinn, ihn in C nachzubilden oder in eine 
Grafikarte zu stecken. Das Board muss autark laufen und in eine Anlage 
einbaubar sein. Ich brauche einfach ein board mit der Option möglichst 
viel dazustecken zu können, wenn es drauf ankommt.

> den Tisch mit den DE2 Boards von Terasic zuknallen
Tischgröße ist nicht. Eher 10x Ritter Sport :-)

von Kest (Gast)


Lesenswert?

Robert schrieb:
> Der am Ende herausgekommende Algo kommt in jedem Fall wieder in ein
> FPGA, deshalb macht es keinen Sinn, ihn in C nachzubilden oder in eine
> Grafikarte zu stecken. Das Board muss autark laufen und in eine Anlage
> einbaubar sein. Ich brauche einfach ein board mit der Option möglichst
> viel dazustecken zu können, wenn es drauf ankommt.

oben hast Du geschrieben, dass die Algorithmen mit einander verglichen 
werden, deshalb musst Du alles auf ein Mal in einem/mehreren FPGA(s) 
implementieren. Deshalb kam ich mit Simulation. Welchen Sinn soll es 
haben, wenn man mehrere FPGAs braucht (quasi zum Simulieren), um am Ende 
doch in einen alles reinzupacken? :-o

Aber das kommt davon, dass wir ja nicht "alles" wissen, ist auch okay 
:-)
Ich habe das Gefühl, dass Du unbedingt viele FPGAs verbauen möchtest, 
auch wenn Du es vielleicht doch später nicht brauchst ;-) Das sind halt 
unser aller feuchte Träume :-)

Grüße,
Kest

von Robert (Gast)


Lesenswert?

Das eine ist die Entwicklung und die Inbetriebnahme, zu dem auch die 
Optimierung der Parameter an die Realität gehört und das andere die 
Fertigung und (mögliche) Serie. Man könnte theoretisch einen Fall 
erzeugen, Daten messen und aufzeichnen und alles in Modelsim einspielen 
und mit ein und demselben Datensatz verschiedene Algos und deren 
Verhalten tracken und nachvollziehen. Oder man kann es in Echtzeit 
machen und sehen, was rauskommt/käme. Beides ist nötig.

> Bei Cyclones III ist es schon toll: 3c16 -> 3c40 -> 3c55 -> 3c80
Wie ist das bei den Cyclone IV?
Wie weit macht da die Webedition mit?

Das Altera DE2-115 wäre schon super für den Einstieg, meine ich:

Cyclone® IV 4CE115 mit EPCS64 config
2MB SRAM, 2d 64MB SDRAM, 8MB Flash
SD Card, Könpfe Schalter und LEDs in Massen
16x2 LCD modul + 8x Siebensegmentanzeige

Den Audiokram und Videoanschluss brauche ich nicht, kann man aber 
mitnehmen.

Ich denke aber darüber nach das, GB-Ethernet zu nutzen, um Daten rein 
und raus zu bekommen. Was gäbe es denn da an Karten für den PC?

von Kest (Gast)


Lesenswert?

Robert schrieb:
>> Bei Cyclones III ist es schon toll: 3c16 -> 3c40 -> 3c55 -> 3c80
> Wie ist das bei den Cyclone IV?
> Wie weit macht da die Webedition mit?

Bei Cyclone IV ist es ähnlich: im FT484 Gehäuse
4CE15 -> 4CE30 -> 4CE40 -> 4CE55 -> 4CE75 -> 4CE115

Die WebEdition kann alle Cyclones synthetisieren. Wenn Du das obige 
Board nimmst, kannst Du komplett alles mit WebEdition machen (SDRAM 
Controller ist ja schon drin und NIOS II e kannst Du auch verwenden, 
ohne dass Du Licence-Kosten tragen musst)

Grüße,
Kest

von Robert (Gast)


Lesenswert?

So sieht es aus, daher wird die Entscheidung meinersweits zu Gunsten 
Alteras ausfallen. Die Frage ist nur, wie lange es dort den ModelSIM 
noch geben wird...

Und: Wie kommt man als Ex-Student an den günstigen Academic Preis heran? 
sind ja immerhin $270,- Unterschied.

Das board ist wirklich nett, zumal es offenbar gleich einen USB Treiber 
mit dabei gibt. Die Demodesigns sind auch scon sehr schlagkräftig, gfs 
kann man da etwas von nutzen.

von D. I. (Gast)


Lesenswert?

Robert schrieb:
> Und: Wie kommt man als Ex-Student an den günstigen Academic Preis heran?
> sind ja immerhin $270,- Unterschied.

Einen Student deines Vertrauens aus dem Bekanntenkreis fragen.

von J. S. (engineer) Benutzerseite


Lesenswert?

Das scheitert meistens daran, dass die Studenten selber heiss werden auf 
das System und sich eins bestellen. 2 Liefern die Firmen aber nicht aus. 
Da muss schon die Uni ran und direkt gleich mehrere bestellen. Habe mir 
das auf der Terasic-Seite heute mal angesehen: Die verbieten das sogar 
und drohen dem Studi, wenn das board in kommerzieller Umgebung 
auftauchen sollte. Wie strikt die Immatrikulatiosbescheinigung lesen und 
alles, weis natürlich keiner.

Ich würde es nicht probieren, da was zu tricksen. Eher schon könnte man 
sich bei einer Uni einschreiben und den Vorteil mitnehmen :-)

> Das board ist wirklich nett,
Ich frage mich, wie die das so billig an bieten können, bei dem großen 
FPGA. Das ist der beste aus der Linie - hat nur keine Transceiver. 
Scheint schwer gesponsort zu sein...

> zumal es offenbar gleich einen USB Treiber mit dabei gibt.
Wo steht das denn?

von Ranga (Gast)


Lesenswert?

Man könnte doch einen nehmen, der in einem fremden Fachbereich studiert 
und das Ding nicht braucht. Er lötet eine LED aus, macht es damit 
offiziell kaputt, wirft es auf den Müll und gibt seine Eigentumrechte 
auf. Dann holt man es sich aus der Tonne, repariert es und baut es in 
die eigene Hardware chain ein :-)

von GT (Gast)


Lesenswert?

@Ranga

Ja und wenn man dann mal Support vom Hersteller braucht gibt man als 
Bezugsquelle "Müllcontainer vorm Studentenwohnheim" an :-P

von Hotte (Gast)


Lesenswert?

Seit wann gibt es Support für Education boards?
Seit wann gibt es bei Xilinx überhaupt Support?

Egal, muss halt der Student fragen!

von Harald (Gast)


Lesenswert?

Auch wenn das Thema alt ist, greife ich den Faden auf, da ich vor der 
gleichen Frage stehe:

Kennt oder hat jemand ein solches Mehr-FPGA-PCB?


Jürgen S. schrieb:
> Das System hat dann immerhin 100.000 slices, 500 DSP-Elemente, 1,2 MB
> BRAM und 768 MB DDR-RAM. Ich bin schon am planen, wie das aussehen
> könnte.
Hast du das gebaut? Wäre das zu erwerben?

Ich möchte eine frei programmierbare Spieleplattform entwickeln, in 
welche ich FPGA-Arcade-Spiele laden und betreiben kann. Die FPGAs müssen 
dafür mit der kostenlosen Version der Herstellersoftware zu 
programmieren sein.

Welche Bausteine würden sich dafür anbieten?

von Gustl B. (-gb-)


Lesenswert?

Harald schrieb:
> Jürgen S. schrieb:
>> Das System hat dann immerhin 100.000 slices, 500 DSP-Elemente, 1,2 MB
>> BRAM und 768 MB DDR-RAM. Ich bin schon am planen, wie das aussehen
>> könnte.
> Hast du das gebaut? Wäre das zu erwerben?

Die Eckdaten hat mittlerweile ein MittelklasseFPGA wie der XC7A200T, der 
hat sogar mehr Slices und DSP. Kann man auch kaufen.
https://www.ztex.de/usb-fpga-2/usb-fpga-2.18.e.html
Da ist USB3, dickes FPGA und RAM drauf und es hat einige freie IOs.

von FPGAzumSpass (Gast)


Lesenswert?

Harald schrieb:
> Ich möchte eine frei programmierbare Spieleplattform entwickeln, in
> welche ich FPGA-Arcade-Spiele laden und betreiben kann. Die FPGAs müssen
> dafür mit der kostenlosen Version der Herstellersoftware zu
> programmieren sein.

https://github.com/MiSTer-devel/Main_MiSTer/wiki

Da ist die Einstiegshüde recht gering weil es VIELE Beispiele gibt, 
freie Lizenz reicht und 500Kbyte Ram sowie ~100000LE sind meistens auch 
genug, wenn es nicht gerade 3D werden soll.

Für das Board gibt es fertige Erweiterungen(z.b. SDRam, VGA, usw) zu 
erschwinglichen Preisen und das Mainboard ist mit unter 150€ inklusive 
Versand zu erstehen.

von Udo K. (Gast)


Lesenswert?

Hier gibts richtig Rechenleistung:

https://de.aliexpress.com/item/32907109444.html

von Weg mit dem Troll ! Aber subito (Gast)


Lesenswert?

Heutzutage nimmt man GPUs. Die gehe, die liefern.

Ich empfehle zB eine nVidia Tesla P100, nVidia Titan RTX, nVidia Quattro 
RTX, alle relativ guenstig und power ohne Ende

von Gustl B. (gustl_b)


Lesenswert?

Ja, stimmt, aber je nach parallelisierbarkeit ist ein FPGA doch 
geeigneter.

von S. R. (svenska)


Lesenswert?

Gustl B. schrieb:
> Ja, stimmt, aber je nach parallelisierbarkeit
> ist ein FPGA doch geeigneter.

Für schlecht parallelisierbare Algorithmen sind weder GPUs noch FPGAs 
geeignet. Und wenn es um mehrere gut parallelisierbare, aber 
unterschiedliche Algorithmen geht, dann kann man auch einfach mehrere 
GPUs in den Rechner stecken. :-)

von Welterfahrener FPGA-Pongo (Gast)


Lesenswert?

Udo K. schrieb:
> Hier gibts richtig Rechenleistung:
> https://de.aliexpress.com/item/32907109444.html

Super-FPGAs aus China von Ali und Baba. Das ist exakt das, was man für 
eine solide industrielle Entwicklung haben möchte. Keine Doko, keine 
Aussage zur Qualität und Lieferwahrscheinlichkeit im Bereich von unter 
10% nach 6 Monaten.

Das Beste ist der Spruch unten, dass er auf das Paket nur 9,99 drauf 
schreibt und man sich damit den Zoll sparen kann. Tatsächlich kann man 
hoffen, dass mal ein board durchgeht. Real sieht es eher so aus, dass 
man für die 149,- Dollar + Versand noch Einfuhrumsatzsteuer, sowie Zoll 
bezahlen darf. Damit kostet das lütte Kintex-Viech über Euronen 250,- 
und da es nicht sauber deklariert ist, hat man noch Aufwand mit dem 
Zoll, muss hinfahren und es auslösen. Bei spätesten 3. Paket hat man die 
Steuer am Hals, weil sie Betrügereien unterstellen. Dann gibt es 
Bearbeitungsgebür, erhöhten Zoll (Faktor 2) und bei gemutmaßtem Betrug 
der EUST auch noch doppelte UST als Strafe. Dann kosten 3 Boards schnell 
1000,-!

Dafür kriege ich hier in Deutschland 2 Artix Video Baords, von denen 
jedes einzelne die doppelten Resourcen hat, wie der Mini-Kintex!

von Weltbester FPGA-Pongo (Gast)


Lesenswert?

S. R. schrieb:
> dann kann man auch einfach mehrere
> GPUs in den Rechner stecken. :-)

WENN man einen PC hat, um was reinzustecken! Erstens fragt der TO aber 
nach Multi-FPGA-Systemen und damit fallen PCs und GPUs schon unter den 
Tisch und zweitens, kommt von der GPU-Power in typischen Anwendungen oft 
nicht viel an, weil man durch den PCI-Bus nix durchkriegt.

Grafikkarten konnen primär das gut, wofür sie gebaut wurden, nämlich:

Mit wenigen Informationen = Pixelparamter, einen Haufen ausgemalte 
Grafik ausrechnen und direkt ausgeben.

Sie sind nicht dafür gebaut, massenweise Daten wieder über PCI 
zurückzuschicken. Misst man das mal nach, hat man einerseits eine 
Reduktion der Bandbreite auf etwa 60%, die sich IN und OUT teilen 
müssen, was zu etwa 20% - 30% der Leistung führt. Im nicht-burst Betrieb 
entstehen dann Latenzen, die sich auf die pipiline draufaddieren. Dann 
kann man schon gerne mal eine zweistellige Anzahl an Takten warten, bis 
was kommt.

Ein Algo, der diese Daten braucht, um weitere Parameter setzen zu 
können, wird damit um einen Faktor 20x2+x abgebremst. Mehr, also 100MHz 
im loop sind da nicht zu machen. Das kriegt jeder Spartan 3 von vor 15 
Jahren hin.

Rechnet man nun die PCI-Belastung und die Dämpfung anderer Operationen, 
wird ein System mit 4 Karten sehr schnell an der Grenze sein, die 
entsteht, wenn die CPU busmäßig noch was anderes tun will, als RAM und 
GPU zu addressieren.

Und: Der PC kostet auch Geld! Ein industrielle PC-Plattform, die über 
ausreichen lanes verfügt, um einige GPUs tragen zu können, ist nicht 
unter 1000,- zu bekommen. Auch billige Karten gehen dann ziemlich ins 
Geld. Eine einzelne Karte lohnt sich deshalb oft gar nicht, mehr als 4 
kriegt man nicht versorgt. Es braucht also 2 oder 3 Powerkarten, die 
selber schon einen Tausender kosten und eine effiziente App.

Für die 4k Investition kriegt man aber 10 Artix-Karten von denen jede 
alleine jede für sich schon eine höhere Bandbreite besitzt, als die 
derzeit schnellste Grafikkarte.

von S. R. (svenska)


Lesenswert?

Weltbester FPGA-Pongo schrieb im Beitrag #6074643:
> Grafikkarten konnen primär das gut, wofür sie gebaut wurden, nämlich:
> Mit wenigen Informationen = Pixelparamter, einen Haufen ausgemalte
> Grafik ausrechnen und direkt ausgeben.

Naja, im Gegensatz zu FPGAs haben GPUs einen riesigen Haufen schnell 
angebundenen eigenen Speicher und eine deutlich höhere rohe 
Rechenleistung.

Nicht überall zählt die maximale Bandbreite, und auch nicht jeder FPGA 
wird mit einer Hochgeschwindigkeitsschnittstelle befüttert.

Weltbester FPGA-Pongo schrieb im Beitrag #6074643:
> Und: Der PC kostet auch Geld!

Ohne einen ordentlich ausgestatteten PC kannst du FPGA-Entwicklung aber 
auch vergessen. Man kann also davon ausgehen, dass zumindest ein PC 
vorhanden ist, der eine GPU vollständig (PCIe 16x) und eine zweite GPU 
zumindest teilweise (PCIe 4x) tragen kann, eventuell auch mehrere.

Vielleicht hast du aber auch einfach nur den Smiley in meiner Antwort 
übersehen.

von Weg mit dem Troll ! Aber subito (Gast)


Lesenswert?

Im Gegensatz vum einem selbst zusammengekloppten MultiFPGA, welches erst 
mal noch einiges an VHDL benoetigt, plus PC Treiber auf der anderen 
Seite, bietet eine GPU aus der Packung raus, zB fuer 1000Euro, schon 
eine fertige Cuda Library. Nach einem halben Tag laeuft der Algorithmus 
schon.

Da muss man sehr gute Gruende haben um selbst was zusammenzukloppen. zB 
speziell an ein abgehobenes Problem angepasste Hardware und hinreichende 
Stueckzahlen.

von Udo K. (Gast)


Lesenswert?

Welterfahrener FPGA-Pongo schrieb im Beitrag #6074628:
> Udo K. schrieb:
>> Hier gibts richtig Rechenleistung:
>> https://de.aliexpress.com/item/32907109444.html
>
> Super-FPGAs aus China von Ali und Baba. Das ist exakt das, was man für
> eine solide industrielle Entwicklung haben möchte. Keine Doko, keine
> Aussage zur Qualität und Lieferwahrscheinlichkeit im Bereich von unter
> 10% nach 6 Monaten.

Jemand der industriell entwicklet, fragt nicht in so einem
Bohnenforum, oder aber er ist wirklich unfähig.

> Das Beste ist der Spruch unten, dass er auf das Paket nur 9,99 drauf
> schreibt und man sich damit den Zoll sparen kann. Tatsächlich kann man
> hoffen, dass mal ein board durchgeht. Real sieht es eher so aus, dass
> man für die 149,- Dollar + Versand noch Einfuhrumsatzsteuer, sowie Zoll
> bezahlen darf. Damit kostet das lütte Kintex-Viech über Euronen 250,-
> und da es nicht sauber deklariert ist, hat man noch Aufwand mit dem
> Zoll, muss hinfahren und es auslösen. Bei spätesten 3. Paket hat man die
> Steuer am Hals, weil sie Betrügereien unterstellen. Dann gibt es
> Bearbeitungsgebür, erhöhten Zoll (Faktor 2) und bei gemutmaßtem Betrug
> der EUST auch noch doppelte UST als Strafe. Dann kosten 3 Boards schnell
> 1000,-!
>
> Dafür kriege ich hier in Deutschland 2 Artix Video Baords, von denen
> jedes einzelne die doppelten Resourcen hat, wie der Mini-Kintex!

Mal mal nicht den Teufel an die Wand.

Du bekommst hier in Europa kein Xilinx Board mit einem 1500 - 2500 Euro
FPGA plus einer Entwicklungslizenz (gebunden an das Board) so günstig.

Die FPGA's sind laut eevblog.com reballed. Die Garantie kannst
du dir bei dem Preis sonst wohin stecken...

Der TE hat übrigens vor 9 Jahren gefragt, lassen wir es damit gut 
sein...

von Weltbester FPGA-Pongo (Gast)


Lesenswert?

S. R. schrieb:
> Naja, im Gegensatz zu FPGAs haben GPUs einen riesigen Haufen schnell
> angebundenen eigenen Speicher und eine deutlich höhere rohe
> Rechenleistung.

Die aber nicht nutzbar ist, wenn man die Ergebnisse nicht rausbekommt. 
Das ist doch das Problem. Ausserdem ist die Speicherbandbreite der Summe 
der Blockrams eines leistungsfähigen FPGAs immer noch höher. Hinzu 
kommen die FFs, als Zwischenspeicher.

S. R. schrieb:
> Ohne einen ordentlich ausgestatteten PC kannst du FPGA-Entwicklung aber
> auch vergessen.

???

Was ist denn das bitte für eine Gegenrechnung, einen EntwicklungsPC mit 
einer   Hardware zu vergleichen, die an einen Kunden geliefert werden 
muss? Sonntag abends zu viel Bier gehabt?

Wenn man solche Systeme vergleich, muss die Umgebung mit bewertet 
werden. Bei Grafikkarten braucht es einen PCI Slot mit FPGA Anbindung 
oder eben einen PCI-Slot im PC. Ohne, läuft da nichts. Und auch ohne 
Betriebssystem läuft da nichts. Schon mal NVIDIA-Programmierung 
betrieben? Wir machen das seit 10 Jahren und ich sehe, wohin da die 
Bandbreiten gehen.

von Weltbester FPGA-Pongo (Gast)


Lesenswert?

Weg mit dem Troll ! Aber subito schrieb:
> Nach einem halben Tag laeuft der Algorithmus
> schon.

Ja, ja: Auspacken und glücklich sein. Bis auf die kleine Anwendung die 
man noch schreiben muss, die Resthardware, die man bauen muss, um Chips 
an die Grafikchips dran zu bekommen und die ganzen 
Kompatibilitätsprobleme der Libs. Wir schlagen uns täglich damit herum. 
Sobald man etwas tun will, was nicht main stream ist, hakt es an allen 
Ecken und Enden.

Wer nur die Softwarebrille auf hat, der sieht nur ein bischen C, dass 
ihm symphatischer ist, als VHDL und das Befassen mit Elektronik. Die 
Sache ist nur die, dass man damit eben auch nur Probleme im PC lösen 
kann. Es braucht aber auch noch Interfaces zu den Systemen!

Nimmt man z.B. die gewaltige Bandbreite paralleler Rechnungen in den 
GPU-Cores, dann taucht sofort die Frage auf, womit die gefüttert werden 
sollen. Auf der Seite des PC stehen erst einmal nur USB und Video zur 
Verfügung, sowie alles, was offline vorhanden ist oder virtuell erzeugt 
werden kann.

Wettermodelle und SPICE sind sicher prima Kandidaten für paralleles 
Rechnnen.

Aber 16 AD-Kanäle von Draussen mit 200 MHz müssen erst einmal rein in 
den PC.

Diese Hardware als Modul zu kaufen oder gar zu bauen, dass sie 
PC-kompatibel wird, ist extrem teuer und stellt dann den Vorteil der 
scheinbar preiswerten CUDA-Technik bei Weitem in den Schatten! Sehr 
schnell bringt dann der Kostenvorteil nichts mehr.

Die Alternative ist, die GPU-Chips selber an FPGAs anzuschließen nur 
dann hat man keinen Vorteil mehr mit PC-Libraries und Treibern, die 
schon "fertig sind".

von S. R. (svenska)


Lesenswert?

Weltbester FPGA-Pongo schrieb im Beitrag #6074897:
> Sonntag abends zu viel Bier gehabt?

Das frag ich mich bei deiner Aggressivität aber gerade auch...

von Gustl B. (gustl_b)


Lesenswert?

FPGAs haben teilweise sehr viele DSP Blöcke und viele Block RAMs. Das 
kann man alles voll parallel verwenden und bekommt sehr hohe 
Speicherbandbreiten und auch viele Multiplikationen je Zeiteinheit. Ja 
externes RAM ist ist meist langsamer, aber man kann auch viele SRAMs 
anbinden. Da gibt es sehr schnelle Bausteine. Da hat man bei zufälligen 
Zugriffen große Vorteile gegenüber einer GPU mit DRAM.

Will sagen alles hat seine Vor- und Nachteile.

von J. S. (engineer) Benutzerseite


Angehängte Dateien:

Lesenswert?

Weg mit dem Troll ! Aber subito schrieb:
> Im Gegensatz vum einem selbst zusammengekloppten MultiFPGA, welches erst
> mal noch einiges an VHDL benoetigt,
Man kann ohne Probleme ein design anfertigen und dann die Module über 
die FPGA-Grenzen hinweg verschieben. Geht teilweise sogar automatisiert.

Gustl B. schrieb:
> Die Eckdaten hat mittlerweile ein MittelklasseFPGA wie der XC7A200T,
Ja, mit jeder FPGA-Generation geht es voran, ändert aber nichts daran, 
dass man mehr benötigen kann, als ein FPGA hergibt. Die Strategie, den 
jeweils maximal noch mit der Webversion programmierbaren Baustein zu 
nehmen ist schon die richtige.

Harald schrieb:
> Jürgen S. schrieb:
>> Das System hat dann immerhin 100.000 slices, 500 DSP-Elemente, 1,2 MB
>> BRAM und 768 MB DDR-RAM. Ich bin schon am planen, wie das aussehen
>> könnte.
> Hast du das gebaut? Wäre das zu erwerben?
Ich hatte damals 4 Module erworben verschaltet, allerdings händisch mit 
nur serieller Anbindung zwischen den Modulen. Geplant waren mal 6 bis 8. 
Und mit Bezug zu dem Beitrag oben ist es in der Tat so, dass die 
Funktion von 2 solchen Modulen inzwischen in den Artix 100 passt.

Harald schrieb:
> Welche Bausteine würden sich dafür anbieten?
Ich würde für solche Arcade-Spielchen ein eval System nehmen, auf dem 
schon Stecker und Ports für VGA, Maus, Tastatur etc mit drauf sind, weil 
erfahrungsgemäß der klassische Nutzer dazu zurückchreckt, sich erst was 
aufbauen zu müssen, bevor er es ausprobiert.

Für leistungsfähige Plattformen kann man dann ein weiteres FPGA Modul 
dranhängen. Neben den von Gustl schon erwähnten ZTEX gibt es ähnliche 
auch von Trenz. Ein Roh-PCB mit Artix 100 gibt es für 149,-. Das ist 
finanziell das effektivste, das ich kenne.

Leider gibt es dazu im Ggs zu ZTEX kein Trägerboard. Daher habe ich mir 
was eigenes gemacht:

von J. S. (engineer) Benutzerseite


Lesenswert?

Gustl B. schrieb:
> Ja externes RAM ist ist meist langsamer,
Die RAMs für sich sind schon schnell und können mit dedizierten 
Speicher-Controllern auch oft viel schneller betrieben werden, als mit 
FPGA-IOs, slebst wenn es Kintexe et al. sind.
Aber es ist eben nur ein Baustein oder es sind wenige. Vor allem sind es 
wenige Leitungen! Daher die Diskrepanz zwischen Block-RAM und externem 
RAM. Grafikkarten haben nochmals eine höhere und breitere Anbindung, 
aber auch die kommen nicht an die Bandbreite der Block-RAMs heran.

Ich hatte an anderer Stelle am Beispiel meines Synthesizers schon 
darüber geschrieben, wie sich das Verhältnis darstellt und zitiere mich:

Weil infolge der Echtzeitmanipulation der Stimmen und vollem pipelining 
der Klangsynthese sowohl die Parameter, als auch die Variablen permanent 
geschrieben und gelesen, sowie zurückgeschrieben werden, haben praktisch 
alle Block-RAMs mindestens 3 Interfaces. Solche, die als Schattenram 
fungieren, sogar 4, d.h. es wird auf 2 unterschiedlichen Speicherplätzen 
etwas ausgelesen und gleichzeitig auf die Adressen geschrieben.

Daher ist der Zugriff bei 200MHz ca 3.5 x 16 Bit, was bei den RAMs im 
Artix 7 auf etwa 8Tbps herauskommt. Nimmt man nun noch die FFs hinzu, 
welche auch je Takt geschrieben und gelesen werden, wird das exorbinant: 
Wenige Variablen (= Signalvektoren) in einer pipeline könnten zwar in 
einer CPU-/GPU-ALU noch in Registern laufen und bräuchten keinen 
Speicherzugriff, aber bei hohem Kanalmultiplexfaktor muss auch dann 
gespeichert werden, weil es zu viele gleichzeitig relevante Register 
gibt, d.h. man müsste in ein externes RAM. Wenn nur 20% der FPGA-FFs 
davon betroffen sind (bei meinem Synth sind es geschätzt 35%!) dann 
kommen da weitere ~20Tbps hinzu.

In Summe ergibt das schon das 1000-fache eines aktuellen 
DDR4-3200-Chips! Selbst mit mehreren Lanes, double fetch und 8 
Speicher-Riegeln parallel wäre immer noch eine gute 10er-Potenz 
dazwischen. Nach meinen Berechnungen und Quervergleichen kommt man bei 
einem schnellen PC auf ein Faktor 30, um welchen der FPGA überlegen ist.

Für die Rechnungen kann man Ähnliches feststellen: Da das Meiste im FPGA 
Entscheidung, Addition, Vergleich und Verzweigung ist und nur ein Teil 
Multiplikation oder Division, kommt man hinsichtlich der Speicherung von 
Zwischenergebnissen auch auf das 200- bis 300-fache einer einzeln 
4GHz-CPU heraus. Ein typischer 8-Kerner liegt dann auch um einem Faktor 
30 darunter.

D.h. sowohl, was den reinen Speicherzugriff, als auch konkretes Ablegen 
und Holen von Ergebnissen angeht, wird ein Prozessor im Idealfall nur 3% 
dessen bringen, was schon ein Artix kann. Bei einem Ultrascale kommt 
nochmals ein Faktor 3-5.

: Bearbeitet durch User
von J. S. (engineer) Benutzerseite


Lesenswert?

Weg mit dem Troll ! Aber subito schrieb:
> Heutzutage nimmt man GPUs. Die gehe, die liefern.

Das höre ich seit 20 Jahren! Gerne wird übersehen, dass die eigentliche 
Anwendung eben nicht in der Box drin enthalten ist, sodass man sie 
herausnehmen könnte und umgekehrt auch bei FPGAs alle Cores schnell 
zusammengeklickt werden können und dies ohne größerere 
Timinganforderungen zu bekommen. Einen einfachen linearen Algo kann man 
in jeder Sprache hinhauen.

Bei der Fragestellung, was besser und schlechter ist, wird gerne der 
jeweilige Vorteil nach vorn geschoben, bzw. das, was der Beurteiler 
gerade kennt und wer FPGAs nur gestreift hat oder nur auf SW-Ebene 
programmiert hat, der weiß eben nicht um die Möglichkeiten, eine 
Schaltung so darzustellen, dass sie effektiv arbeitet. Man versuche dazu 
mal mein RAM-Beispiel von oben nachzuvollziehen.

Ich habe mir schon vor über 10 Jahren, nach Fertigstellung meiner 
P2-Version der Synths die Frage gestellt, wo die Reise hingeht und mir 
CUDA angesehen. Seither gab es auch immer wieder Projekte, wo man 
hautnah sehen konnte, was besser geht und was nicht. Ich denke, dass ich 
die drei Welten CUDA, FPGA und UC/PC ein wenig einschätzen und 
vergleichen kann und es bleibt dabei:

Eine optimal an die Aufgabe angepasste Hardware ist nicht zu schlagen. 
Weder in Sachen Reaktionsfähigkeit, noch in Sachen Datendurchsatz, noch 
in Sachen Materialkosten, noch in Sachen Erweiterbarkeit.

CUDA und embedded Systeme haben nur potenzielle Vorteile bei 
Entwicklungszeiten, aber auch nicht per se.

von Gustl B. (-gb-)


Lesenswert?

Jürgen S. schrieb:
> Die RAMs für sich sind schon schnell und können mit dedizierten
> Speicher-Controllern auch oft viel schneller betrieben werden, als mit
> FPGA-IOs, slebst wenn es Kintexe et al. sind.
> Aber es ist eben nur ein Baustein oder es sind wenige. Vor allem sind es
> wenige Leitungen! Daher die Diskrepanz zwischen Block-RAM und externem
> RAM. Grafikkarten haben nochmals eine höhere und breitere Anbindung,
> aber auch die kommen nicht an die Bandbreite der Block-RAMs heran.

Grafikkarten haben schon mehrere viele RAM Steine, aber das ist eben 
DRAM der bei zufälligen Zugriffen langsam wird. Da gibt es FPGA Board 
mit viel schnellem SRAM. Das ist zwar dann immernoch deutlich weniger 
RAM als eine aktuelle Grafikkarte bietet, aber der SRAM ist immer 
schnell.

Mich würde ja mal interessieren wie das in einer GPU aussieht. Da ist ja 
bestimmt auch einiges an Cache verbaut der dann wohl ähnlich schnell wie 
BRAM verwendet werden kann?!

Tesla hatte da ja dieses Jahr iirc seinen ersten eigenen Chip für 
neuronale Netze vorgestellt. 
https://en.wikichip.org/wiki/tesla_(car_company)/fsd_chip
Und da sind 32MByte SRAM drinnen. Der bei 2 GHz läuft. Und wie das in 
dem Bildchen und in dem Text aussieht, werden da in jedem "Cycle" 
256+128 Bytes(!!!) aus dem SRAM gelesen und 128 Bytes ins SRAM 
geschrieben. Das ist eine unfassbare Datenmenge. Man sieht an dem Die 
Foto auch schön die vielen Leitungen zum SRAM. Da machen die Leitungen 
schon deutlich mehr Chipfläche aus als die beiden MAC Blöcke.
Zusätzlich hat der Stein noch ein 128 Bit DDR4 Interface.

von Christoph Z. (christophz)


Lesenswert?

S. R. schrieb:
> Ohne einen ordentlich ausgestatteten PC kannst du FPGA-Entwicklung aber
> auch vergessen.

Realitätsabgleich: Hier hat die ganze Abteilung Laptops mit immerhin 32 
GB RAM, M2 SSD, Dockingstation und zwei Monitore.

Jürgen S. schrieb:
> CUDA und embedded Systeme haben nur potenzielle Vorteile bei
> Entwicklungszeiten, aber auch nicht per se.

Für Firmen die seit je her nur (embedded) Software gemacht haben, kann 
das schon attraktiv sein. Von der Herangehensweise ist es ja ähnlich wie 
wenn man beginnt Vektoroperationen wie SSE/Neon einzusetzen.

CUDA ist halt ein herrlich schlechtes Beispiel weil es nur mit NVIDIA 
geht. Intel und Altera hatten beide schon vor dem Merger begonnen OpenCL 
zu puschen. Da gab es hierzu auch schon Diskussionen im Forum, mein 
aktueller Stand ist, dass dies auch noch/eher eine Utopie ist als das 
was wir uns darunter wünschen würden (write once, deploy everywhere...)

Die Diskussion zu Speicher-/Busbandbreite hier ist sehr wichtig, da sich 
hier entscheidet ob eine Lösungsvariante am Schluss taugt. Sehr spannend 
hierzu ist natürlich, dass z. B. AMD hier auch nicht schläft und ihre 
CPU und GPU viel enger verheiratet als die Konkurrenz. Ich habe aber 
selber noch kein Beispiel gesehen, wo das massiv ausgenutzt wird. Hat 
hier im Forum jemand Beispiele?

von Udo K. (Gast)


Lesenswert?

Die Diskussion ist mal wieder uC typisch lächerlich,
99% der Diskutanten haben noch nie ein ernsthaftes FPGA Projekt 
durchgezogen.

Damit unsere lieben Nachbarn sich nicht in einem
fort über deutsche Ingenieure totlachen, ein paar Anmerkungen:

1. Es gibt nicht "den FPGA".

Der billigste fängt bei Digikey bei ca. 5 Dollar an (da passt ein
grösseres Schieberegister rein),
die richtig grossen kosten ca. 92000 Dollar (kein Verschreiber)
Und auch die haben grad mal 3-5 Millionen Logikelemente und
magere 0.1 - 0.5 GB internes Ram...

2. FPGA und GPU/CPU haben komplett andere Anwendungen.

CPU/FPU:  brachiale Floating Point Leistung im Terra/PetaFlop Bereich,
die jeden FPGA richtig alt aussehen lässt.

nur als Hint: schon mal versucht im FPGA Wurzel zu ziehen,
oder einen Sinus zu berechnen, oder eine IEEE 64 Bit Division
gemacht?
Oder schon mal 128 GByte DDR5 Grafikspeicher an den FPGA angeschlossen?
Das kann man zwar machen, aber man muss schon sehr leidensfähig sein.

FPGA:  Gigantomanische serielle I/O Performance bei
nicht standardisierten Spezialprotokollen mit
relativ wenig internem Bufferspeicher und hoher
Parallelisierbarkeit.

Sobald die Anwenung in Stückzahlen > 10^5 - 10^6 verkauft wird,
gibt es dafür aber einen Interfacechip um < 10 Dollar.

3. Preis.
FPGA, wie gesagt bis zu 92000 Dollar

Leistungsfähige CPU/GUP:  500-5000 Dollar.

Es gibt also für richtig fette FPGAs, abgesehen von Spezialanwendungen 
in
sehr geldkräftigen Bereichen (Milität, GHz Messtechnik,
ASIC Entwicklung, CERN und Telekom) keine Anwendung.

Die kleinen bis mittleren FPGAs werden verbaut, aber auch nur dort
wo es um Anbindung von schnellen seriellen Protokollen (ADCs/DACs) geht.
Da wird dann ein wenig Vorverarbeitung gemacht, und dann gehen
die Daten über PCIe an ne CPU damit sich auch die Programmierer damit
rumärgern können.

Portabel ist das ganze sowieso nicht, d.h. die Anbindung an den 
Laptop/PC
wird man bei solchen Datenschleudern immer haben.

von Andi (Gast)


Lesenswert?

Udo K. schrieb:
> 1. Es gibt nicht "den FPGA".
>
> Der billigste fängt bei Digikey bei ca. 5 Dollar an (da passt ein
> grösseres Schieberegister rein), ...

https://www.digikey.com/product-detail/en/lattice-semiconductor-corporation/ICE40LP384-SG32/220-2646-ND/3974680

https://www.digikey.com/product-detail/en/lattice-semiconductor-corporation/ICE40UL640-SWG16ITR50/220-1961-2-ND/5130905

Bei beiden passt wesentlich mehr als ein Schieberegister rein, im 
UltraLight mit seinen BlockRAMs kann man leicht einen Softcore 
unterbringen.
Beide haben sogar den Konfigurationsspeicher auf dem Chip (OTP).

von J. S. (engineer) Benutzerseite


Lesenswert?

Udo K. schrieb:
> schon mal versucht im FPGA Wurzel zu ziehen,
Ja
> oder einen Sinus zu berechnen
Ja
> eine IEEE 64 Bit Division gemacht?
Ja

Wurzel und Division laufen in 64 Bit mit 33..35 Takten Latenz in 200MHz. 
Beides lässt sich in LA4 auch mit 18 Takten machen, bei entsprechendem 
Invest in AREA. In der "normalen", platzsparenden Konfiguration sind es 
66 Takte. Der berechnete! Sinus ohne Tabelle geht in Richtung 18 Takte 
für eine 100dB-Qualität. In platzsparender Konfiguration 33 Takte. In 
dieser normalen Konfig laufen die auch auf 300MHz.

Das ist zunächst langsam!

Da es aber pipelines sind, bekommt man immerhin mit jedem Takt ein 
Ergebnis. In einen Artix15 passen laut Synthese mindestens 18 solcher 
DIV-Einheiten. Macht 18 Divisionen alle 300 MHz. Rein rechnerisch sind 
das "nur" 5GOPs. Da man die Ergebnisse in ähnlicher Weise parallel 
weiterverarbeiten und zugreifen kann, entfallen durch die Speicherung in 
FFs sehr viele Zugriffe auf Register und externes RAM, was eine CPU auch 
erst noch leisen müsste. Die Kosten für einen Artix 15 liegen bei unter 
20,- Was leistet eine Intel CPU zu dem Preis?

Ein Intel I7 mit 4 Kernen wird mit unter 100GFlops angegeben. Das ist 
locker einen Faktor 20 über dem des FPGA. Nimmt man aber die real 
mögliche Auslastung und zieht noch die Speicherbandbreitenthematik 
heran, bröselt der Vorteil der CPU rasch zusammen und die vielen 
"Terras" erweisen sich als "Flop" :D

Ich habe das vor Kurzem erst wieder einem Kunden vorgerechnet, der die 
gesamte Mathematik in einem ARM machen wollte, "weil der effektiver 
ist". Bei dem hat es schon in der Erstbetrachtung nicht mehr hingehauen. 
Ich konnte sogar zeigen, dass die Zynq-Lösung materialmässig teuer 
kommt.

Grundsätzlich ist dein Einwand aber richtig: Solche Operationen sind in 
FPGAs unverhältnismäßig schlecht umzusetzen. Es schreit gerade danach, 
neben den MULs in küftigen Technologien auch DIVs und andere 
festverbaute Co-Prozessorfunktionen einzubauen.

Von Intel dürfte da demnächst wohl einiges kommen!

Ich würde mir diesbezüglich eine (a*a - b*b) / srqt(c)  - Enheit 
wünschen. Damit kriegt man nicht nur die Wurzel (oder per Einspeisung 
von C*C) eine klassische Division mit zwei möglichen Komponenten frei 
Haus, sondern erledigt auch eine ganze Reihe von Rechenanforderungen bei 
Iterationen, Konvergenzrechnungen etc.

Das nächste wäre eine Sammlung von Log-Buildern mit den man leichter 
(invers) Potenzieren und im Komplexen rechnen könnte.

Ich habe mal abgeschätzt, dass sich in eine aktuellen Silizium 
CMOS-Technologie eine Wurzel mit einem 64Bit-Eingang und 32.32-Ausgang 
in unter 10ns machen lassen sollte. Platzsparend als pipeline mit 8 
Takten sollte das auf maximal 40ns kommen können. Bei 8 solchen 
Einheiten hätte man >200 MHz. mit geringer 8er Latenz.

von Udo K. (Gast)


Lesenswert?

Andi schrieb:
> Udo K. schrieb:
>> 1. Es gibt nicht "den FPGA".
>>
>> Der billigste fängt bei Digikey bei ca. 5 Dollar an (da passt ein
>> grösseres Schieberegister rein), ...
>
> 
https://www.digikey.com/product-detail/en/lattice-semiconductor-corporation/ICE40LP384-SG32/220-2646-ND/3974680
>
> 
https://www.digikey.com/product-detail/en/lattice-semiconductor-corporation/ICE40UL640-SWG16ITR50/220-1961-2-ND/5130905
>
> Bei beiden passt wesentlich mehr als ein Schieberegister rein, im
> UltraLight mit seinen BlockRAMs kann man leicht einen Softcore
> unterbringen.
> Beide haben sogar den Konfigurationsspeicher auf dem Chip (OTP).

Ich sagte doch ein grosses Schieberegister.  Was willst du mit
16 Pins und 80 CLB's (Was immer das bei Lattice ist) sonst
machen?

Ein Softcore zum LED blinken lassen ist vielleicht auch eine Idee,
wenn man keine Mikrocontroller um 0.5 Euro programmieren kann...

Aber willst du damit wirklich gegen einen Intel i7 antreten?

von Udo K. (Gast)


Lesenswert?

Jürgen S. schrieb:
> Udo K. schrieb:
>> schon mal versucht im FPGA Wurzel zu ziehen,
> Ja
>> oder einen Sinus zu berechnen
> Ja
>> eine IEEE 64 Bit Division gemacht?
> Ja
>
> Wurzel und Division laufen in 64 Bit mit 33..35 Takten Latenz in 200MHz.
> Beides lässt sich in LA4 auch mit 18 Takten machen, bei entsprechendem
> Invest in AREA. In der "normalen", platzsparenden Konfiguration sind es
> 66 Takte. Der berechnete! Sinus ohne Tabelle geht in Richtung 18 Takte
> für eine 100dB-Qualität. In platzsparender Konfiguration 33 Takte. In
> dieser normalen Konfig laufen die auch auf 300MHz.
>
> Das ist zunächst langsam!
>
> Da es aber pipelines sind, bekommt man immerhin mit jedem Takt ein
> Ergebnis. In einen Artix15 passen laut Synthese mindestens 18 solcher
> DIV-Einheiten. Macht 18 Divisionen alle 300 MHz. Rein rechnerisch sind
> das "nur" 5GOPs. Da man die Ergebnisse in ähnlicher Weise parallel
> weiterverarbeiten und zugreifen kann, entfallen durch die Speicherung in
> FFs sehr viele Zugriffe auf Register und externes RAM, was eine CPU auch
> erst noch leisen müsste. Die Kosten für einen Artix 15 liegen bei unter
> 20,- Was leistet eine Intel CPU zu dem Preis?
>
> Ein Intel I7 mit 4 Kernen wird mit unter 100GFlops angegeben. Das ist
> locker einen Faktor 20 über dem des FPGA. Nimmt man aber die real
> mögliche Auslastung und zieht noch die Speicherbandbreitenthematik
> heran, bröselt der Vorteil der CPU rasch zusammen und die vielen
> "Terras" erweisen sich als "Flop" :D

Ich denke die externe Speicherbandbreite ist in vielen Fällen durch
die schnellen Caches kein so grosses Thema.

Aber ein DDR4 Riegel mit ca. 25 GBytes/Sekunde oder
eine TBit Netzwerkkarte ist auch nicht leicht zu schlagen.
Was gibt es sonst noch?  Richtig 2 Speicherriegel und zwei
Netzwerkkarten :-)

> Ich habe das vor Kurzem erst wieder einem Kunden vorgerechnet, der die
> gesamte Mathematik in einem ARM machen wollte, "weil der effektiver
> ist". Bei dem hat es schon in der Erstbetrachtung nicht mehr hingehauen.
> Ich konnte sogar zeigen, dass die Zynq-Lösung materialmässig teuer
> kommt.

In der Diskussion hier vermischen wir wild uC Anwendungen,
Audio Streaming und Filterung und High Performance Computing.
Und jeder will rechthaben...
Tut mir echt leid für das Wirrwarr!

In vielen Anwendungen wo schnelle ADCs gebraucht werden, ist
natürlich ein FPGA drinnen, anders geht es nicht.

Die CPU brauchst du dann aber in der  Regel trotzdem noch,
da heute ein Produkt mit >100 MByte / Sekunde Datendurchsatz ohne 
standardisierte PC Schnittstellen am Markt nicht ernst genommen wird.


> Grundsätzlich ist dein Einwand aber richtig: Solche Operationen sind in
> FPGAs unverhältnismäßig schlecht umzusetzen. Es schreit gerade danach,
> neben den MULs in küftigen Technologien auch DIVs und andere
> festverbaute Co-Prozessorfunktionen einzubauen.
>
> Von Intel dürfte da demnächst wohl einiges kommen!

Da bin ich gespannt, die letzen Jahre haben sie ja geschlafen.


> Ich würde mir diesbezüglich eine (a*a - b*b) / srqt(c)  - Enheit
> wünschen. Damit kriegt man nicht nur die Wurzel (oder per Einspeisung
> von C*C) eine klassische Division mit zwei möglichen Komponenten frei
> Haus, sondern erledigt auch eine ganze Reihe von Rechenanforderungen bei
> Iterationen, Konvergenzrechnungen etc.
>
> Das nächste wäre eine Sammlung von Log-Buildern mit den man leichter
> (invers) Potenzieren und im Komplexen rechnen könnte.
>
> Ich habe mal abgeschätzt, dass sich in eine aktuellen Silizium
> CMOS-Technologie eine Wurzel mit einem 64Bit-Eingang und 32.32-Ausgang
> in unter 10ns machen lassen sollte. Platzsparend als pipeline mit 8
> Takten sollte das auf maximal 40ns kommen können. Bei 8 solchen
> Einheiten hätte man >200 MHz. mit geringer 8er Latenz.

Danke für die detaillierte Info, und Hut ab vor der Leistung!

Du gehörst sicher zu den 1%, die ich von meiner Polemik ausnehme.

Ich kann das aber nicht mehr programmieren.

Da muss ich mir ja praktisch eine Floating Point ALU mit Gattern
basteln, die eine N-stufige Pipeline hat.

Die Anzahl und Aufteilung der Pipeline muss ich in Abhängigkeit vom
konkreten FPGA genau wählen.

Dazu muss ich die FPGA Spezialblöcke und die Synthese Tools
in und auswendig kennen, damit ich auf nennenswerte Performance komme.

Nicht zu vergessen die Mathematik dahinter ist nicht ganz trivial.

(Und dann ärgere ich mich garantiert mit 18 Bit breiten
Mutliplizierern rum, warum sind die nicht 64 Bit breit...)

Und das ist erst der Anfang.  Die Daten müssen ja auch erst irgendwoher
kommen.  In Windows sage ich da OpenFile(), und dann ReadFile(),
eventuell mache ich das in einer Schleife für N Threads.

Aber im FPGA muss ich meine Low Level Struktur mit den ganzen
kritischen Buffern und Datenpfaden erst mal detailliert plannen,
und in unzähligen Versuchen optimieren.

Verwendest du da eigenlich noch VHDL?

Gibt es da inzwischen schon etwas besseres für so komplexe Dinge?


Auf der CPU Seite schaut es wesentlich gemütlicher aus.
All das (und viel mehr) haben die CPU Hersteller zum Glück für mich 
schon erledigt.
Ich kann mich direkt um die Anwendung kümmern.

In C/C++ schreibe ich y = sin(x), und das ist meistens ausreichend
schnell.  Sonst verwende ich die Intel MKL Libs, und habe recht
einfach einen Faktor 10.

So wie ich das sehe, ist ein FPGA nur schneller als eine CPU/GPU,
wenn ich sehr viele Operationen parallel machen kann,
und es keine Abhängigkeiten gibt.

Dann kann ich aber auch 10^6 CPUs verwenden, und die Frage
reduziert sich auf die Kosten.

Was ist günstiger und hat mehr Flops / Million Euro?

Die Supercomputer verwenden jedenfalls CPUs,
gemischt mit GPUs.
Von FPGAs habe ich da noch nichts gehört.

Ich glaube ich liege mit meiner Einschätzung noch immer richtig,
FPGAs bitte nur dort, wo es absolut nicht ohne geht.

von Weltbester FPGA-Pongo (Gast)


Lesenswert?

Udo K. schrieb:
> Ich sagte doch ein grosses Schieberegister.  Was willst du mit
> 16 Pins und 80 CLB's (Was immer das bei Lattice ist) sonst
> machen?

Der billigste von mir jemals verbaute FPGA war vor 12 Jahren ein Spartan 
3A. Der kostete damals im Einkauf unter 3,-!  Untergebracht waren:

1x CAN-Slave
1x I2C-Master
8x Registerbank mit 64 Speichern / 256 Plätzen mit 8 Bit.
1x Fehlererkennungsmodul
1x Leitungstester
1x CEC
1x EERPOM-Schnittstelle
2x Temperatursensoren

also nix mit "ein großes Schieberegister".

Udo K. schrieb:
> Von FPGAs habe ich da noch nichts gehört.
Banken verwenden Multi-FPGA-Plattformen für solides und robustes 
Datenmanagement und Transaktionen.

von Weltbester FPGA-Pongo (Gast)


Lesenswert?

Udo K. schrieb:
> In C/C++ schreibe ich y = sin(x),
Damit benutzt du eine Library. Das geht in VHDL auch durch 
Instanziierung einer Sinusfunktion als Core. Wenn du 
Programmiertechniken vergleichen möchtest, müsstest du schon 
Multithreading-Funktionen verwenden, die sowohl eine CPU als auch einen 
FPGA auslasten.

Schneller hingeschrieben ist C++ allemal, aber das heißt für die 
Ausführungsgeschwindigkeit meistens das Gegenteil.

von chris (Gast)


Lesenswert?

Udo K. (udok)
>Die Supercomputer verwenden jedenfalls CPUs,
>gemischt mit GPUs.
>Von FPGAs habe ich da noch nichts gehört.
https://www.nextplatform.com/2019/04/18/supercomputer-mixes-streams-with-cpu-gpu-and-fpga/

von Christophz (Gast)


Lesenswert?

Udo K. schrieb:
> Ich sagte doch ein grosses Schieberegister.  Was willst du mit
> 16 Pins und 80 CLB's (Was immer das bei Lattice ist) sonst
> machen?

Glue-Logic, Standard-Logik Gräber aufräumen/ersetzen. Spart Platz auf 
der Leiterplatte, ist einfacher zu Routen, kleinere Lagerhaltung, 
weniger Feeder im Pick&Place Automat, weniger Pins zu testen im 
Flying-Prober etc. (Das galt damals ja alles auch schon für PAL/GAL, nur 
ist der Preis heute besser).

Hat uns dann auch gut den Arsch gerettet, da dann nachträglich ein paar 
Signale "entprellt" werden mussten (Selbstverursachte EMV Störungen in 
Leistungselektronik). Im kleinsten MachXO 128 war dazu noch locker Platz 
(Hatte aber mehr als 16 Pins :-)).

Aber das geht alles am eigentlichen Thema dieses Threads vorbei :-)

Udo K. schrieb:
> Verwendest du da eigenlich noch VHDL?
>
> Gibt es da inzwischen schon etwas besseres für so komplexe Dinge?

Willkommen im uC VHDL Forum! Das ist so zu sagen eines unserer 
Lieblingsthemen das wir hier in unregelmässigen Abständen diskutieren, 
ergänzen, Erfahrungsberichte austauschen. Gibt mehrere Threads dazu.

Kurze Antwort: Nein, wir sind alle noch am Suchen. Es gibt Tools die 
Teilprobleme erfolgreich adressieren aber ob das für dich/deine 
Anwendung besser ist, muss gut evaluiert werden.

von Gustl B. (-gb-)


Lesenswert?

Ich finde ja, da bräuchte es mal einen Standard 
(https://imgs.xkcd.com/comics/standards.png ). Ich weiß aber nicht genau 
wofür. Ich denke mir das so:
Man hat zusätzlich zu CPU, GPU, ... auch noch einen FPGA im System. Und 
der kann dynamisch rekonfiguriert oder eben schnell konfiguriert und neu 
gestartet werden. Und dann können Programme da (partielle)Bitstreams 
mitbringen. Also ein Musikprogramm DAW bringt da einen Bitstream mit. 
Wenn der Rechner einen FPGA hat, dann wird der Bitstream geladen, und 
dann werden z. B. Effekte auf der Musik in Hardware im FPGA gerechnet. 
Hat der Rechner keinen FPGA wird das eben auf der CPU/GPU mit OpenCL 
gemacht.

Man müsste aber eben standardisieren wie so ein Bitstream aufgebaut ist 
und auch was das FPGA können muss oder wie es dem System sagt was es 
kann. Vermutlich geht das eher gut über so ein Zwischenformat wie im 
Browser mit WebAssembly 
(https://www.destroyallsoftware.com/talks/the-birth-and-death-of-javascript 
) oder eben bei Java mit der JVM. Man liefert also eine ART Bitstream 
mit, und zwar für einen virtuellen FPGA den es nicht gibt, aber eine 
Software (je nach FPGA Hersteller des verbauten FPGAs) am PC versteht 
das Format und übersetzt das. Gut, das dauert vermutlich etwas, aber das 
ist ja nur einmalig. Danach liegt ein passender Bitstream für den 
verbauten FPGA vor. Oder ... es gibt nicht so irre viele 
Hardwarevarianten und die Softwarehersteller haben einfach mehrere 
Bitstreams auf Lager.

von Christophz (Gast)


Lesenswert?

Gustl B. schrieb:
> Ich weiß aber nicht genau
> wofür. Ich denke mir das so:
> Man hat zusätzlich zu CPU, GPU, ... auch noch einen FPGA im System. Und
> der kann dynamisch rekonfiguriert oder eben schnell konfiguriert und neu
> gestartet werden. Und dann können Programme da (partielle)Bitstreams
> mitbringen.

Ja, so etwas braucht es definitiv, schon seit min. 15 Jahren.

Ist es immer noch so, dass die ganze partielle 
Rekonfigurationsgeschichte bei Xilinx unter NDA steht? (also Datenblatt 
dazu, Tools um es zu nutzen etc.)

NDA ist schon mal das komplette Gegenteil von Standard...

Mit dem (overengineered bzw. oversized) IP-XACT und dem Standard für 
verschlüsselte IP Cores würde es Ansätze in diese Richtung geben ohne 
das es heute wirklich was nutzt.

Gustl B. schrieb:
> Man liefert also eine ART Bitstream
> mit, und zwar für einen virtuellen FPGA den es nicht gibt, aber eine
> Software (je nach FPGA Hersteller des verbauten FPGAs) am PC versteht
> das Format und übersetzt das. Gut, das dauert vermutlich etwas, aber das
> ist ja nur einmalig.

Genau so läuft das bei den GPUs mit ihren Shadern. "Shader werden 
initialisiert, bitte warten"
Da gibt es zwei standardisierte Sprachen (je eine für DirectX und 
OpenGL. Vulkan? Keine Ahnung) und diese Shaderprogramme werden dann bei 
der ersten Nutzung für die Ziel-GPU kompiliert (einer der Gründe wieso 
ein GPU Treiber > 100 MB ist, da gerne mal ein LLVM und was sonst noch 
mit kommt).

Stellt euch mal vor, ihr dürft eurem Kunden zusammen mit dem Treiber im 
Hintergrund noch "nebenbei" ein Vivado mit 18 GB installieren :-)

Gustl B. schrieb:
> Oder ... es gibt nicht so irre viele
> Hardwarevarianten und die Softwarehersteller haben einfach mehrere
> Bitstreams auf Lager.

Das klappt, solange der Kunde die eine, oder eben die andere Xilinx 
Alveo Karte hat. Ist wohl auch genau das Ziel von Xilinx.


-----------------------

Wie kommen wir weiter auch wenn die FPGA Hersteller es nicht begreifen, 
dass die interne Architektur/Bitstream offen dokumentiert sein sollte 
wie ein CPU Instruction Set?

Reverseengineering und Open Source Tools.

Genau damit sieht man jetzt schon genau diese Demonstrationen, auch wenn 
die erzielbare Frequenz noch hinkt. Raspberry Pi mit ICE40 drangesteckt, 
der dann seine Software selber kompiliert und Synthese/P&R für den ICE40 
macht.

von Tobias B. (Firma: www.elpra.de) (ttobsen) Benutzerseite


Lesenswert?

Christophz schrieb:
> Ist es immer noch so, dass die ganze partielle
> Rekonfigurationsgeschichte bei Xilinx unter NDA steht? (also Datenblatt
> dazu, Tools um es zu nutzen etc.)
>
> NDA ist schon mal das komplette Gegenteil von Standard...

Also zumindest seit ich Xilinx kenne ist das nicht der Fall. 
Mittlerweile sind die Tools sogar kostenlos verfuegbar, wenn ich mich 
richtig erinnere.

https://www.xilinx.com/content/xilinx/en/products/design-tools/vivado/implementation/dynamic-function-exchange.html

Edit: Jep, seit Vivado 2019.1 sogar im Webpack kostenlos verfuegbar.

: Bearbeitet durch User
von S. R. (svenska)


Lesenswert?

Gustl B. schrieb:
> Man hat zusätzlich zu CPU, GPU, ... auch noch einen FPGA im System.
> Und der kann dynamisch rekonfiguriert oder eben schnell konfiguriert
> und neu gestartet werden.

Das kenne ich von Mobilplattformen, die ihre eigenen DSPs enthalten und 
wo die Anwendungen dann mal eben schnell ein zu beschleunigendes 
Programm reinladen. Gern gemacht für Audio- und Videofilter.

> Und dann können Programme da (partielle)Bitstreams mitbringen.
> Also ein Musikprogramm DAW bringt da einen Bitstream mit.
> Wenn der Rechner einen FPGA hat, dann wird der Bitstream geladen, und
> dann werden z. B. Effekte auf der Musik in Hardware im FPGA gerechnet.

Man will sich aber auch den FPGA mit anderen teilen können (wir sind ja 
nicht bei den Mobilplattformen, die aus Batteriegründen ohnehin nur eine 
Brachialanwendung gleichzeitig können und auch nicht für Multitasking 
gedacht sind). Die prinzipielle Parallelität von FPGAs wäre da super, 
allerdings steht dem die Räumlichkeit im Wege.

Haben die Großen das Problem schon sinnvoll gelöst, oder muss man selbst 
sicherstellen, dass sich die (partiellen) Bitstreams nicht überlappen?

> Hat der Rechner keinen FPGA wird das eben
> auf der CPU/GPU mit OpenCL gemacht.

Das wird relativ schwierig, weil man da komplett andere Konzepte für 
braucht. Oder anders ausgedrückt: Wenn man das Problem auf eine 
GPU-freundliche Weise ausdrückt, dann wird die FPGA-Logik eigentlich 
auch nur eine breite Vektoreinheit.

Daher würde ich das lieber auf der Anwendungsebene realisieren, wie es 
bisher auch der Fall ist (MMX-Fallback bei fehlender SSE-Unterstützung, 
Emulation statt JIT bei unbekannter Host-Architektur, etc.)

> Man müsste aber eben standardisieren wie so ein Bitstream
> aufgebaut ist und auch was das FPGA können muss oder wie
> es dem System sagt was es kann.

Das sollte sich recht gut abstrahieren lassen, zumal sich FPGAs im 
Grundprinzip nur wenig unterscheiden (am Ende gibt es nur LUTs, FFs und 
einige Fixed-Function-Blöcke). Eigentlich kann man da eine recht 
gebrauchbare Netzliste reinkippen und fertig.

Bei solchen Ansätzen kommt es auch nicht auf maximale Performance mehr 
an, sondern auf Universalität.

> Vermutlich geht das eher gut über so ein Zwischenformat wie im
> Browser mit WebAssembly oder eben bei Java mit der JVM.

WebAssembly eher weniger (zumal es in der Realität hauptsächlich für 
Spielereien und Bitcoin-Trojaner benutzt zu werden scheint...), aber 
GPUs machen das jetzt schon so.

Die bisherigen Shader-Sprachen liegen eher auf dem Niveau von C, daher 
braucht man einen recht ordentlichen Compiler. Mit Vulkan gibt es 
SPIR-V, was ersten ein definiertes Bitformat hat (man spart sich also 
den fehlerträchtigen Parser) und wesentlich näher an der Hardware liegt.

Darum löst Vulkan auch langsam die bisherigen Ansätze ab.

> Oder ... es gibt nicht so irre viele Hardwarevarianten und
> die Softwarehersteller haben einfach mehrere Bitstreams auf Lager.

Keine gute Idee. Damit landest du bei der DOS-Kompatiblitätshölle, wo 
jede Soundkarte irgendwie SoundBlaster sprechen musste, weil sonst 
nichts ging. Da braucht man schon noch eine Ebene dazwischen, um 
Fortschritte erzielen zu können.

Christophz schrieb:
> Da gibt es zwei standardisierte Sprachen (je eine für DirectX und
> OpenGL. Vulkan? Keine Ahnung) und diese Shaderprogramme werden dann bei
> der ersten Nutzung für die Ziel-GPU kompiliert (einer der Gründe wieso
> ein GPU Treiber > 100 MB ist, da gerne mal ein LLVM und was sonst noch
> mit kommt).

Der andere Grund ist, dass Grafikkartenhersteller notorische Cheater 
sind und bei Compilerproblemen lieber in der neuen Treiberversion 
handgeklöppelte Ersatzshader für bestimmte Problemkinder mitliefern.

Das Spiel sagt "bitte Shader vorbereiten" und der Grafiktreiber sagt 
"oh, den Shader kenne ich, ich nehme einen anderen". Deswegen sehen 
manche Spiele bei unterschiedlichen Treiberversionen auch 
unterschiedlich aus.

Christophz schrieb:
> Stellt euch mal vor, ihr dürft eurem Kunden zusammen mit dem Treiber im
> Hintergrund noch "nebenbei" ein Vivado mit 18 GB installieren :-)

Wenn man die Treiberqualität von Grafiktreibern als Maßstab nimmt... 
dann gehe ich lieber in die Ecke und weine. Wenn "corner cutting" darauf 
hinausläuft, dass noch zwei Wände vom Haus stehen und ständig mit 
Bluescreen umfallen, dann verzichte ich lieber dankend darauf. (Es ist 
etwas besser geworden, seit Windows auch für den Desktop 3D benutzt, 
aber trotzdem.)

Aber mit einer ordentlichen Abstraktion und halbwegs gebrauchbaren 
Bitformaten bräuchte man vom VivadoQuartusIseDiamond ja nur ein paar 
Kleinteile. Dass die Hersteller das nicht wollen, ist aber aus deren 
Sicht nachvollziehbar.

Christophz schrieb:
> Reverseengineering und Open Source Tools.

Mal schauen. Erstmal brauchen wir programmierbare FPGAs in hinreichender 
Breite. Einen ICE40 auf einen Raspberry zu stecken meine ich damit 
nicht. Intel hat ja mal Xeon-Prozessoren mit FPGA für Rechenzentren 
vorgestellt, ist daraus eigentlich was geworden? Das muss jetzt (mit 
kleinen FPGAs) nur noch im Massenmarkt ankommen.

PS @Gustl: Sowas wäre im Übrigen meine Forschung gewesen, wenn da nicht 
andere Dinge dazwischen gekommen wären. ;-)

von Weltbester FPGA-Pongo (Gast)


Lesenswert?

S. R. schrieb:
> Intel hat ja mal Xeon-Prozessoren mit FPGA für Rechenzentren
> vorgestellt, ist daraus eigentlich was geworden?

Intel hat schon vor dem Kauf von Altera mehrfach angekündigt, dass sie 
verstärkt FPGA-Technologie in den CPUs einsetzen werden. Einerseits aus 
Gründen der update-Fähigkeiten aber auch zum Anpassen an 
unterschiedliche Hardware. Es dürfte auch ein Teil von Intelligenz zur 
thread-Verwaltung und Sicherung des OS und lowlvel Zugriffe dorthin 
verlagert werden.

von Gustl B. (-gb-)


Lesenswert?

S. R. schrieb:
> Man will sich aber auch den FPGA mit anderen teilen können (wir sind ja
> nicht bei den Mobilplattformen, die aus Batteriegründen ohnehin nur eine
> Brachialanwendung gleichzeitig können und auch nicht für Multitasking
> gedacht sind). Die prinzipielle Parallelität von FPGAs wäre da super,
> allerdings steht dem die Räumlichkeit im Wege.

Tja das müsste dann irgendwie in Parzellen unterteilt werden können. Und 
jede Parzelle für sich enthält dann DSPs, BRAM, PLL, ... und ist 
getrennt von den Anderen konfigurierbar. Ein großes Design füllt dann 
eben mehrere Parzellen. Und man kann Anforderungen stellen wie dass man 
noch SRAM vraucht oder mindestens n Leitungen zu einer anderen Parzelle.

S. R. schrieb:
> Das wird relativ schwierig, weil man da komplett andere Konzepte für
> braucht. Oder anders ausgedrückt: Wenn man das Problem auf eine
> GPU-freundliche Weise ausdrückt, dann wird die FPGA-Logik eigentlich
> auch nur eine breite Vektoreinheit.
>
> Daher würde ich das lieber auf der Anwendungsebene realisieren, wie es
> bisher auch der Fall ist (MMX-Fallback bei fehlender SSE-Unterstützung,
> Emulation statt JIT bei unbekannter Host-Architektur, etc.)

Das meinte ich auch. Also wenn man keinen FPGA im Rechner hat, dann wird 
eben ein für CPU oder GPU optimierter Code ausgeführt. Als 
Softwarehersteller muss man also weiterhin ein Binary für die CPU 
mitliefern das dort läuft wenn kein FPGA da ist. Mit FPGA werden ja auch 
nur manche Teile dorthin ausgelagert.

Cooler wäre aber schon eine Zwischensprache oder so die dann erst lokal 
für CPU, GPU oder FPGA übersetzt wird. Aber das wird schwer weil das 
eben andere Ansätze sind. Da müsste man das eigentlich zu lösende 
Problem noch hoherleveliger beschreiben und zwar so, dass dann 
irgendeine Software lokal aus dieser Beschreibung selbst eine Lösung 
baut. Und zwar für das Ziel dass sie für passend hält. ABer da sind wir 
noch nicht.

S. R. schrieb:
> Keine gute Idee. Damit landest du bei der DOS-Kompatiblitätshölle, wo
> jede Soundkarte irgendwie SoundBlaster sprechen musste, weil sonst
> nichts ging. Da braucht man schon noch eine Ebene dazwischen, um
> Fortschritte erzielen zu können.

Kommt drauf an was das Szenario ist. Wenn man eine große Firma ist und 
da nur wenige unterschiedliche Hardware sehr oft rumstehen hat, dann ist 
das kein Problem. Für Endkunden macht das nur Sinn wenn man so wie Apple 
einen kleinen Gerätepark hat.

S. R. schrieb:
> Intel hat ja mal Xeon-Prozessoren mit FPGA für Rechenzentren
> vorgestellt, ist daraus eigentlich was geworden?

Die gibt es schon noch IIRC. Der 6138P hat einen Arria 10 mit drinnen. 
Ja und große Firmen wie Microsoft setzen auch stark auf FPGA 
https://www.microsoft.com/en-us/research/publication/configurable-cloud-acceleration 
und https://www.microsoft.com/en-us/research/project/project-brainwave .

S. R. schrieb:
> Sowas wäre im Übrigen meine Forschung gewesen, wenn da nicht
> andere Dinge dazwischen gekommen wären. ;-)

Tja :-) Ist ein spannendes Feld. Aber ... vielleicht kommen ja auch bald 
überall diese neuronalen Netze in ICs.

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
Noch kein Account? Hier anmelden.