Forum: FPGA, VHDL & Co. FPGA als Softcore


von Stefan H. (Firma: dm2sh) (stefan_helmert)


Lesenswert?

Hallo,

gibt es eigentlich auch Soft-FPGAs, wenn es doch schon Soft-CPUs gibt? 
Diese Art von FPGAs werden dann natürlich nicht noch einmal im FPGA 
selbst nachgebildet, sondern zum Großteil die Architektur des real 
vorhanden 1:1 benutzt.
Was ist nun der Sinn dieser Aktion? Ganz einfach die dynamische 
Rekonfiguration. Normalerweise läd man immer ein Design vollständig in 
ein FPGA, einen neuen Prozess nachladen, Speicher allozieren und den 
Prozess starten ist nicht. Durch diese virtuellen FPGAs wird das nun 
vereinfacht. Man läd diese wieder mit vollständigen Designs, doch nun 
hat man mehr Spielraum, man kann viele verschieden kleine Designs 
kombinieren, zur Laufzeit nachladen und entladen.
Man denke nur an die enorm wichtigen Anwendungen, z. B. in der 
Playstation 4. Spielelemente können dann als FPGA-Design auf so einem 
Soft-FPGA laufen, während der reale FPGA das Spiel (und die Soft-FPGAs) 
beinhaltet. Je nach Spielsituation treten neue Gegner, Gegenstände, ... 
auf, die alle unterschiedliche Verhalten haben, diese werden auf die 
Soft-FPGAs konfiguriert - und wenn diese Elemente verschwinden, wieder 
freigegeben.
Wird so etwas schon gemacht? Gibt es solche FPGAs schon als Softcore?

von Patrick W. (seennoob)


Lesenswert?

Macht das nicht jeder Emulator SO ? normalerweise verlierstr du so enorm 
viel Leistung ! Das klingt wie eine "multicore FPGA". Du willst also die 
Software ned an die Hardware anpassen sondern die Hardware an die 
Software. Schon mal an so etwas wie ein multi FPGA Board gedacht ?

MFG Patrick

von Morin (Gast)


Lesenswert?

Du gehst da denke ich mit falschen Vorstellungen ran. Entweder der FPGA 
unterstützt die dynamische Rekonfiguration - dann ist das Problem 
bereits gelöst. Oder er unterstützt sie nicht, und du "emulierst" einen 
FPGA durch 1:1 Abbildung auf den Vorhandenen - dann ist er nicht schnell 
rekonfigurierbar. Oder du emulierst einen schnell rekonfigurierbaren - 
dann ist die Emulationsschicht weit komplizierter und ineffizienter als 
1:1 Abbildung.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

> Gibt es solche FPGAs schon als Softcore?
Echt pervers ;-)
Nein, FPGAs gibts nur als Hardcore.

BTW:
> Datum: 04.01.2009 02:00 ... Playstation ...
Wie war die Party?

von Patrick W. (seennoob)


Lesenswert?

Naja das erinnert mich an das Schwarm-Konzept. Ein einzelne Einheit ist 
langsam und Leistungsschwach. Aber viele die miteinander kommunizieren 
können aber trotzdem jeder für sich für was anderes spezialisiert ist 
das beste.
Also du hast mehrere FPGAs auf einem Board die miteinander verbunden 
sind und einen gemeinsamen Oszilator haben und eine große FPGA als 
Gateway nach außen und Grundsystem. Am Anfang läuft nur die Gateway FPGA 
mit einem Grundsystem in der zwischenzeit werden die anderen 
konfiguriert usw und übernehmen dann die Rechenaufgaben.

Ist nur ein Konzept wie man es machen könnte das man FPGAs im laufenden 
Betrieb neu KOnfigurieren kann. Außerdem können die einzelnen wieder 
eine virtuelle große bilden.

MFG Patrick

von Stefan H. (Firma: dm2sh) (stefan_helmert)


Lesenswert?

> Entweder der FPGA unterstützt die dynamische Rekonfiguration
Das ist natürlich Vorraussetzung, das ist klar.
> dann ist das Problem bereits gelöst.
eben nicht ganz!

Mein Problem ist, dass man bei dynamischer Rekonfiguration meistens nur 
ein Design pro FPGA verwenden kann. Man kann also nicht, wie bei einem 
Multitaskingbetriebssystem, einfach noch einen Prozess starten und 
wieder beenden. Also hier dynamisch Logik-Resourcen allozieren, so wie 
man unter Linux mit malloc Speicher reserviert. Oder geht das heute 
schon?

> Das klingt wie eine "multicore FPGA".
Ja so in etwa meine ich das. Ich möchte einen großen FPGA, der sich 
schnell dynamisch selbst rekonfigurieren kann sozusagen partitionieren. 
Denkt z. B. an einen Computer mit den Kartenslots, nur das hier diese 
Steckplätze virtuell vorhanden sind und man virtuelle Karten dort 
reinsteckt und rauszieht. (natürlich "hotplugable") Natürlich könnte man 
auch 100te von FPGAs auf eine Platine löten, aber ein großer ist 
meistens schneller, leichter, billiger und flexibler.

von Morin (Gast)


Lesenswert?

> Mein Problem ist, dass man bei dynamischer Rekonfiguration meistens nur
> ein Design pro FPGA verwenden kann. Man kann also nicht, wie bei einem
> Multitaskingbetriebssystem, einfach noch einen Prozess starten und
> wieder beenden. Also hier dynamisch Logik-Resourcen allozieren, so wie
> man unter Linux mit malloc Speicher reserviert.

Erstens gilt auch dafür meine Argumentation: Entweder die FPGAs können 
es schon, dann brauchst du nichts mehr dazubauen. Oder sie können es 
nicht, dann kannst du die "Logik-Prozesse" nicht 1:1 auf die vorhandene 
Architektur abbilden, sondern musst herbe Verluste in kauf nehmen.

Um mal ein Beispiel zu nehmen: Ein FPGA, der nur ein Design laden kann, 
der muss z.B. jede LUT in diesem Design enthalten haben. Er kann nicht 
später diese LUT umprogrammieren, ohne das ganze Design neu zu laden. 
Also kann der simulierte FPGA, der ja beim Laden eines "Prozesses" LUTs 
neu vergeben muss, die simulierten LUTs nicht auf echte LUTs abbilden. 
Er könnte z.B. distributed RAM nehmen, von dem weitaus weniger da ist.

Noch schlimmer wird es bei der Verdrahtung: Wenn der echte FPGA die 
Verdrahtung nicht teilersetzen kann, dann kann die Verdrahtung des 
simulierten FPGA - die sich ja zur Laufzeit ändert - nicht auf die echte 
Verdrahtung abgebildet werden. Stattdessen müssen Logikressourcen her.

> Oder geht das heute schon?

Zweitens: Ja, soweit ich weiß geht das heute schon, mit einer gewissen 
Granularität.

von Stefan H. (Firma: dm2sh) (stefan_helmert)


Lesenswert?

Also, ich habe mir das hier angeschaut:
http://www.altera.com/literature/wp/wp-01055-fpga-run-time-reconfiguration.pdf
Und bei Seite 4 f. bin ich mir nicht ganz sicher, ob ich das richtig 
verstanden habe. Also einmal steht dass nicht der FPGA rekonfiguriert 
wird, sondern gleich die gesamte Anwendung implementiert wird. Weiter 
steht da, dass über den Steuerpfad auch eine Rekonfiguration möglich sei 
und über die "streaming data switch fabric" sei es möglich diese 
Funktionen zu verdrahten (also die Verbindung mit den anderen 
herstellen).
Das klingt irgendwie widersprüchlich - oder soll "the whole application 
is implemented", dass auch Platz-Halter-Funktionen implementiert werden, 
die dann wie ein kleiner FPGA rekonfiguriert werden können?

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.