Forum: FPGA, VHDL & Co. FPGA Betriebssysteme


von Andre (Gast)


Lesenswert?

Hallo an das Forum,

mich würde interessieren ob es bereits Betriebssysteme gibt, die einen 
Fpga-Baustein bereits von Haus aus integrieren um die Leistung des 
Gesamtsystems zu steigern. Wenn ja wie ausgereift ist dies und wie sind 
da die Erfahrungen ?

Gruss Andre

von Walleby (Gast)


Lesenswert?

FPGAs sind Logikbausteine die zu Schaltungen "zusammengebaut" werden 
können. Also arbeitet man mit reiner Hardware. Es gibt kein 
Betriebssystem. Man kann aber einen Mikrocontroller aufbauen und dann 
auf diesen z. B. ein RT-System laufen lassen.

von David .. (volatile)


Lesenswert?

Walleby schrieb:
> FPGAs sind Logikbausteine die zu Schaltungen "zusammengebaut" werden
> können. Also arbeitet man mit reiner Hardware. Es gibt kein
> Betriebssystem. Man kann aber einen Mikrocontroller aufbauen und dann
> auf diesen z. B. ein RT-System laufen lassen.

Das war nicht die Frage

von Fpgakuechle K. (Gast)


Lesenswert?

Andre schrieb:

> mich würde interessieren ob es bereits Betriebssysteme gibt, die einen
> Fpga-Baustein bereits von Haus aus integrieren um die Leistung des
> Gesamtsystems zu steigern. Wenn ja wie ausgereift ist dies und wie sind
> da die Erfahrungen ?

Also es gibt Hardware die ein Betriebssystem unterstützen, bspw. die 
MMU. Die MMU ist seit langen in die CPU integriert. Zu den Zeiten als 
das noch nicht so war, hat man sich eine MMU als "Coprozessor" selbst 
zusammengelötet um damit eine vernünftige Speicherorganisation für das 
Multitask-OS zu realisieren. Standardbeispiel ist die SUN-1 von 1982. OB 
die MMU in PLD oder ASIC realisiert wurde kann ich grad nicht sagen, 
andert aber nicht an dem OS-Coprozessor Prinzip.

Aber vielleicht meinst du HIL - "Hardware in the loop". ->
http://en.wikipedia.org/wiki/Hardware-in-the-loop_simulation

MfG,

von 123abc (Gast)


Lesenswert?


von Fpgakuechle K. (Gast)


Lesenswert?

123abc schrieb:
> Vielleicht hat der TO nach sowas gesucht:
> 
http://newsroom.intel.com/community/de_de/blog/2014/06/20/kurzmeldung-erste-intel-xeon-prozessoren-mit-field-programmable-gate-arrays-fpga

Naja CPU und FPGA in einen Chip ist keine Erfindung von intel sondern 
ein alter Hut. Bspw. Xilinx VirtexPro, fürs kleine 8 bit Geschäft der 
FPLSIC von Atmel oder 32 bit die SmartFusion2-Familie von Actel.

MfG,

von Ralf (Gast)


Lesenswert?

Ergänzend vielleicht noch die PSoC von Cypress, als 8051er oder 
Cortex-M0/M3. Kein vollwertiges FPGA in dem Sinne, aber das "drumrum", 
sprich Spannungsversorgung etc ist wesentlich weniger aufwendig als bei 
einem FPGA mit integrierter MCU.

Ralf

von genervt (Gast)


Lesenswert?

Fpga Kuechle schrieb:
> Bspw. Xilinx VirtexPro, fürs kleine 8 bit Geschäft der
> FPLSIC von Atmel oder 32 bit die SmartFusion2-Familie von Actel.

Oder aktuell der Xilinx Zync oder von Altera gibts Arria und Cyclon V 
mit zwei ARMEN drin.

von David .. (volatile)


Lesenswert?

Oh man. Kann niemand mehr eine Frage lesen und verstehen?
Gibt es FPGA-beschleunigte OS? Wenn ja welche?

von Andre (Gast)


Lesenswert?

danke für die zahlreichen Posts.

David und 123abc... konnte die Frage richtig einordnen...

Es geht darum ob es Betriebssysteme mit gewissen Erweiterungen gibt  (zb 
Linux, Andriod, VxWorks oder vielleicht andere), welche die 
Möglichkeiten bieten das Gesamtsystem in eine bestimmte Richtung hin zu 
optimieren.

Wie weit ist die Forschung im Bereich der Betriebssystem, um zB 
Techniken wie dynamische Rekonfiguration vom Betriebssystem zu steuern.


Gruß Andre

von Markus F. (mfro)


Lesenswert?

Andre schrieb:
> danke für die zahlreichen Posts.
>
> David und 123abc... konnte die Frage richtig einordnen...
>
> Es geht darum ob es Betriebssysteme mit gewissen Erweiterungen gibt  (zb
> Linux, Andriod, VxWorks oder vielleicht andere), welche die
> Möglichkeiten bieten das Gesamtsystem in eine bestimmte Richtung hin zu
> optimieren.
>
> Wie weit ist die Forschung im Bereich der Betriebssystem, um zB
> Techniken wie dynamische Rekonfiguration vom Betriebssystem zu steuern.
>
>
> Gruß Andre

Es ist sicher nicht genau das, was Du suchst und hat auch keinen 
wissenschaftlichen Anspruch, aber hier: http://acp.atari.org/ gibt's ein 
Projekt, das mit einem Coldfire V4 und einem Cyclone III einen 
Atari-Falcon Computer "in schneller" nachbildet. Der FPGA übernimmt 
dabei die Aufgabe, die "alte" Hardware (mit Ausnahme des Prozessors) 
nachzubilden und die Inkopmatibilitäten zwischen Coldfire MCU und 
MC68030 soweit wie möglich auszubügeln.

von iizi (Gast)


Lesenswert?

was ist eine dynamische rekonfiguration des betriebssystems? ein 
betriebssystem teilt tasks rechenzeit zu. mehr macht ein OS nicht.

was die einzelnen tasks machen ist dem OS relativ wurst.

wenn du dir für deinen anwendungsfall eine hardware auf dem fpga-board 
konfigurierst und in einer task diese verwendest (sei es in dem du 
deinen eigenen compiler verwendest, der speziell auf deiner hw 
lauffähigen code erzeugt, oder etwas profaner einfach mit der harware 
kommuniziert), dann ist das vollkommen unabhängig vom betriebssystem. 
und das ist auch gut so.

von Fpgakuechle K. (Gast)


Lesenswert?

iizi schrieb:
> was ist eine dynamische rekonfiguration des betriebssystems? ein
> betriebssystem teilt tasks rechenzeit zu. mehr macht ein OS nicht.


An der TU-Wuppertal findet sich ein Thema zu diesen cluster aus 
buzzwords.
Da ist von Rekonfiguration und Hardware-Betriebssystem die Rede. Das mit 
der Anpassung an Latenzen beim Managment von datenverkehr klingt 
logisch:
http://www.lfa.uni-wuppertal.de/lfa/forschung/dynamische-rekonfiguration.html

Ebenso wäre denkbar das Task scheduling zu optimieren, also einen 
Wechsel von Prioritäten durch Hardware (i.e. Packet Header Parser, 
IO-Port activity estimator) abschätzen zu lassen.

MfG,

von iizi (Gast)


Lesenswert?

Fpga Kuechle schrieb:
> Ebenso wäre denkbar das Task scheduling zu optimieren, also einen
> Wechsel von Prioritäten durch Hardware (i.e. Packet Header Parser,
> IO-Port activity estimator) abschätzen zu lassen.

weiß man nicht bereits bei kompilierzeit welche task welche ressource 
benötigt? dann kann kann man doch ganz klassisch der ressource ebenfalls 
eine priotät geben und die taskpriorität auf die ressorucenpriorität 
anheben, solange die task die ressource benötigt? wenn nun ein paket 
kommt dann verlangt die task die ressource "packet header parser" und 
die task erbt dessen prio. warum sollte man die priortät dynamisch zur 
laufzeit abschätzen wollen?
oder verstehe ich das falsch?

von Sigi (Gast)


Lesenswert?

Die Hersteller kann man in 2 Lager aufteilen: das
eine sind die klassische FPGA-Hersteller, die CPUs
integrieren, das andere CPU-Hersteller, die FPGAs
als Erweiterung integrieren (im Prinzip eigentlich
das gleiche, die Hersteller haben aber unterschiedliche
Zielseztungen).

Meiner bescheidenen Erfahrung nach sind aber bei
beiden die FPGAs nur als Device-Erweiterung zu
sehen (bzw. von Hersteller so geplant), die sich sogar
dynamisch d.h. zur Lauffzeit aufspielen lassen. Aber
eine direkte Erweiterung bzw. Unterstützung von
OS-Kernaufgaben habe ich (leider) noch nicht gesehen.
Vom ersten Lager wirst du da auch nichts sehen, die
sind schliesslich weit entfernt von der OS-Entwicklung.

Aber such vlt. mal nach Intel/Atom, da gab's in
den letzten Jahren mal ein paar Chips.
Ein Blick in die Doks hilft dir vlt. weiter.

von Fpgakuechle K. (Gast)


Lesenswert?

iizi schrieb:
> Fpga Kuechle schrieb:
>> Ebenso wäre denkbar das Task scheduling zu optimieren, also einen
>> Wechsel von Prioritäten durch Hardware (i.e. Packet Header Parser,
>> IO-Port activity estimator) abschätzen zu lassen.
>
> weiß man nicht bereits bei kompilierzeit welche task welche ressource
> benötigt? dann kann kann man doch ganz klassisch der ressource ebenfalls
> eine priotät geben und die taskpriorität auf die ressorucenpriorität
> anheben, solange die task die ressource benötigt? wenn nun ein paket
> kommt dann verlangt die task die ressource "packet header parser" und
> die task erbt dessen prio. warum sollte man die priortät dynamisch zur
> laufzeit abschätzen wollen?
> oder verstehe ich das falsch?

Angenommen wir haben mehrer gleichberechtigte Kanäle auf denen zufällig 
verteilt messages aus header und daten einlaufen. Die Datenpakete werden 
abgeholt und geparst sobald sie vollständig eingelaufen sind. Die 
messages haben unterschiedliche Prio bspw nach der Kritikalität des 
events das sie signalisieren. Diese prio ist im header vermerkt. parst 
man nun die header in einem nebenläufigen Prozess bspw auf extra 
hardware, können die zeitkritischen messages aussortiert werden, bevor 
die gesamte Message decodiert wurde.

MfG,

von iizi (Gast)


Lesenswert?

Vielen Dank für die Erklärung!
MfG

von unbekannt (Gast)


Lesenswert?

vielleicht www.reconos.de?

von Daniel (Gast)


Lesenswert?

Andre schrieb:
> mich würde interessieren ob es bereits Betriebssysteme gibt, die einen
> Fpga-Baustein bereits von Haus aus integrieren um die Leistung des
> Gesamtsystems zu steigern.
Mir ist dazu nix bekannt. Die bekannten Betriebssysteme setzen auf x86- 
und/oder ARM-Architekturen auf. Da bei den CPUs bisher keine 
FPGA-Erweiterung on-chip ist, kann auch niemand eine Unterstützung dafür 
programmieren.

Oder hast Du an sowas wie Pif gedacht:
http://www.heise.de/hardware-hacks/meldung/Pif-FPGA-fuer-den-Raspberry-Pi-1976232.html

Daniel

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


Lesenswert?

Andre schrieb:
> Wie weit ist die Forschung im Bereich der Betriebssystem, um zB
> Techniken wie dynamische Rekonfiguration vom Betriebssystem zu steuern.
Da war leider schon mal weit vor dem Ende des letzten Jahrtausends die 
Debatte bei den Transputern. Da wurden mit Links Netze aufgespannt, und 
jeder Knoten in diesem Netz konnte (theoretisch) von seinem Nebensitzer 
mit Daten versorgt werden und einen Teil der Gesamtaufgabe lösen. Leider 
war damals schon dieser relativ einfache Ansatz (man hätte nur die 
Rechenaufgaben parallelisieren müssen) zu viel für die Softies und so 
war dann nach gerade mal einer Dekade Schluss für diese Architektur.

Mit der dynamischen Rekonfiguration von FPGAs verhält es sich m.E. 
ähnlich: die Hardware kann es, die Software und die Programmierer sind 
noch nicht reif dafür. Bestenfalls im absoluten High-End-Bereich oder im 
Akademiebereich tut sich da was. Nur eben nicht genug für den 
allgemeinen und problemlosen Einsatz...

von Christoph Z. (christophz)


Lesenswert?

Eine lange verschollen geglaubte Synapse hat sich bei diesem Thema 
wieder aktiviert.

Es gab mal eine Französische Firma, die einen PDA angekündet hatte, der 
zusammen mit einem grossen FPGA sehr schnell (wenn nötig) und eine lange 
Bereitschaftszeit (wenn nicht benutzt) haben soll. Kombiniert optional 
mit einem E-Paper Display. 2004 tönte das wie Science-Fiction :-)

Das Internet hat schon fast alles vergessen zu diesem Gerät, gut 
möglich, dass es auch gar nicht auf den Markt kam und der Firma vorher 
das Geld ausging.

Was ich noch (un)brauchbares gefunden habe zum Jackito-PDA:
http://radio-weblogs.com/0105910/categories/sidebars/2004/07/12.html
http://compgroups.net/comp.arch/a-new-kind-of-architecture-for-a-new-pda/226303

Die wollten auch ein eigenes OS machen, dass die Möglichkeiten des 
rekonfigurierbaren FPGAs auch ausnutzen kann.

von Christoph Z. (christophz)


Lesenswert?

iizi schrieb:
> was ist eine dynamische rekonfiguration des betriebssystems? ein
> betriebssystem teilt tasks rechenzeit zu. mehr macht ein OS nicht.
>
> was die einzelnen tasks machen ist dem OS relativ wurst.

Du denkst wie ein Hardware oder OS-Kernel Entwickler (nichts schlechtes 
daran). Ein Applikationsentwickler sieht das anders :-)

Ein Applikationsentwickler ist sich gewöhnt das ein OS ganz viele Sachen 
anbietet die er nutzen kann:
- Taskverwaltung
- Eventhandling
- Uhrzeit/Datum und Timers
- Netzwerkfunktionen
- Funktionen zum 2D und 3D "malen"
- Teilweise ganze Datenbanksysteme die "einfach so" vorhanden sind 
(Newton, Palm OS, IBM AS400,...)
- Audio und Video aufnehmen, abspielen durch Plug-ins routen etc.
- Eine bunte IDE mit allem was man heute erwarten darf (FPGA Entwickler 
fangen nicht mal an von solchen Features zu träumen...)


Aus dieser hohen Sicht herunter, gibt es schon Aufgaben und Operationen, 
die ein OS beschleunigen könnte, wenn es bei Bedarf Routinen in einen 
FPGA packen kann.

Leider sieht die Realität seit Jahren anders aus. Aus meiner Sicht sind 
diese Gründe sicher auch daran Schuld:
- Die ganze Geheimniskrämerei der FPGA Hersteller speziell zum Thema 
dynamisches rekonfigurieren
- Die meisten Teile eines komplexen OS (mit den obigen Features) werden 
von Leuten entwickelt, die Hardware als fix gegebene "Black Magic" 
annehmen


Das Thema ist spannend aber man sieht schon bei den ganzen Versuchen von 
AMD mit dem Heterogenous-Computing (Zusammenfassen von CPU und GPU 
Kernen zu einem grossen Rechenwerk) wie schwierig es ist, Anwender zu 
finden die das wirklich nutzen wollen (und können).

von db8fs (Gast)


Lesenswert?

Hallo zusammen,

mal eine Frage: welche Ressourcen sollen denn bitte auf den FPGA 
ausgelagert werden, damit ein 'hardwarebeschleunigtes Betriebssystem' 
Nutzen davon ziehen kann? Möchte ernsthaft jemand einen 
Low-Latency-Scheduler auf einem FPGA haben, der weitaus niedriger 
getaktet ist als ein Universalprozessor und wo durch den 
Kommunikationsoverhead zum FPGA die CPU ausgebremst wird? Und das in der 
zentralen Komponente des Betriebssystems? Also liebe Leute, ich mach ja 
gerne jeden Blödsinn mit, aber hier erschließt sich mir der Nutzen 
nicht.

Einzig vorstellbare Anwendung: der FPGA ist wirklich um Größenordnungen 
schneller als die eigentliche CPU und füttert diese extern mit 
Instruktionen wie 'ne Art Speichercontroller. Dann ist aber auch die 
Frage, ob das nicht eher was für die Galerie als für die Praxis ist — 
ich möchte mal sehen, wer am Prozessor als Bauteil jeden Cent spart und 
dann 'ne hochgetakteten FPGA daneben auf's Board klatscht.

Für nützliche Anwendungsfälle wie z.B. SDR oder sowas, wo ein 
FPGA-basierter Spezialprozessor (z.B. mit DSP-Blocks) wirklich soviele 
Daten zu kloppen hat, dafür gibt es ja bereits Lösungen (siehe HackRF). 
Aber das hat abgesehen vom Treiber nix mit dem eigentlichen 
Betriebssystemkern zu tun. Als Ergänzung um per DMA große einheitliche 
Daten zu crunchen, gerne. Sonst ist einfach die Kommunikation zu teuer, 
es sei denn der FPGA hostet den Prozessorkern (wobei da auch noch nicht 
raus ist, ob die Kommunikation da wirklich günstig ist).

Meine Antwort: nö, gibt's nicht, weil's keinen Sinn macht. Ich lasse 
mich da aber auch gerne eines besseren belehren.

von David .. (volatile)


Lesenswert?

Evtl HW-crypto?

von uwe (Gast)


Lesenswert?

Hier der Interne Aufbau von Virtex FPGAs um eigene Toolchains zu 
Entwickeln inclusive Place and Route sowie mapping. Halt die Komplette 
Architektur:
http://www.xilinx.com/support/documentation/application_notes/xapp151.pdf

Gabs mal mit den Virtex FPGAs, für die war noch der gesammte Bitstream 
offengelegt und man konnte sich selber Routing und mapping Tools dafür 
schreiben. Damit konnte man zur laufzeit einen Algorithmus 
Parallelisieren und in Hardware gießen mit dem FPGA als Beschleuniger. 
Wenn der Beschleuniger fertig war konnte man das FPGA einfach mit einem 
neuen Design laden und erneut einen anderen Beschleunigten Algorithmus 
parallelisieren.
Als Frontend gab es dafür noch JBits:
http://users.utcluj.ro/~baruch/resources/JBits/JBitsMAPPLD.pdf

von uwe (Gast)


Lesenswert?

Achso und hiermit kann man den Bitstream zurücklesen die Ergenbnisse aus 
den FlipFlops holen, veränderungen vornehmen und zurückschreiben bzw. 
neues Design draufladen und weiterrechnen bzw. ergebnisse aus der 
Letzten berechnung in die FlipFlops laden.
http://www.xilinx.com/support/documentation/application_notes/xapp139.pdf

von uwe (Gast)


Lesenswert?


von Markus H. (dasrotemopped)


Lesenswert?

wenn ich ein Betriebssystem habe, das auf einer Hardware läuft, wo die 
CPU Pins toggled um ein VGA Signal zu erzeugen und ich das Pinwackeln 
dann in ein FPGA packe um die CPU zu entlasten, ist dann das Kriteium 
für ein OS mit FPGA Beschleunigung erfüllt ? Wenn ja, dann kann man 
jedes IC im PC durch FPGAs ersetzen und dadurch "beschleunigen". Onboard 
Soundkarte durch Virtex6 mit DSP Funktion für Audio ersetzen und schon 
beschleunigt. Ist hoffendlich offensichtlich, warum das nicht gemacht 
wird in der Breite der Möglichkeiten.

Gruß,

dasrotemopped.

von Jürgen S. (engineer) Benutzerseite


Lesenswert?

Markus Horbach schrieb:
> dann in ein FPGA packe um die CPU zu entlasten, ist dann das Kriteium
> für ein OS mit FPGA Beschleunigung erfüllt ? Wenn ja, dann kann man
> jedes IC im PC durch FPGAs ersetzen und dadurch "beschleunigen".

Das macht schon Sinn, z.B. um einen alten Chip an moderne Hardware 
"anzuschließen", die 10mal schneller läuft, insbesondere, wenn es den 
Chip nicht mehr gibt.

> Onboard Soundkarte durch Virtex6 mit DSP Funktion für Audio ersetzen
> und schon beschleunigt.
Naja, in einen FPGA passen mal locker einige hunderte "Soundkarten" des 
Blaster-Typs rein, wenn man es pipelined :-)

Das Thema "OS" ist dabei nochmals ein wenig anders gelagert. Das wird 
dann aktuell, wenn der z.B. FPGA dynamisch Daten von z.B. CPUs bekommt, 
die selber mit OS laufen und ihrerseits so bedient werden müssen. Dann 
ist es mitunter schwierig, einen Hardware layer zu schreiben, der das 
zufriedenstellend managed und besser, man rüstet Teile eines FPGAs 
soweit hoch, dass er selber OS-spezifische Funktionen kann und 
verschiebt die Kommunikation auf diese Ebene.

Einen kompletten FPGA in Software zu verwandeln ist weniger zielführend. 
Dann lieber einen Controller.

von Daniel (Gast)


Lesenswert?


von Jürgen S. (engineer) Benutzerseite


Lesenswert?

Naja, interessant, wenn man mehrere FPGAs virtuell und flexibel 
verschalten will. Dennoch bleibt die Frage, ob das immer effektiv wird, 
wenn es darum geht, wesentliche Komponenten in einer SW so zu 
flexibilisieren. Im Allgemeinen sind DSP-Farmen dafür dann einfacher zu 
konstituieren und zu beschicken. Und: Sie sind billiger. Aus 
FPGA-Entwickler-Sicht muss ich sagen "Leider" :-)

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.