Forum: Compiler & IDEs STM32G431: Compilerunterstützung für Mathematical hardware accelerators


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von noreply@noreply.com (Gast)


Lesenswert?

Hallo,

unterstützt die eabi-Toolchain schon die Mathematical hardware 
accelerators für STM32G431?

: Verschoben durch Admin
von Gerd E. (robberknight)


Lesenswert?

noreply@noreply.com schrieb:
> unterstützt die eabi-Toolchain schon die Mathematical hardware
> accelerators für STM32G431?

Du meinst die CORDIC- und FMAC-Einheiten, korrekt?

Ich fürchte da wird eine "Compilerunterstützung" schwer. Denn die sind 
nicht Teil des CPU-Kerns, sondern das sind separate Hardwareeinheiten, 
die parallel zur CPU laufen. Der Compiler kann also keine Befehle 
erzeugen mit denen die angesteuert werden.

Du musst die stattdessen wie andere Peripherieeinheiten über Register 
ansteuern. Daher sehe ich die eher als Thema für eine spezielle 
Bibliothek als für den Compiler. Leider.

von noreply@noreply.com (Gast)


Lesenswert?

Gerd E. schrieb:
> Du meinst die CORDIC- und FMAC-Einheiten, korrekt?

Ja. Danke.

Habe mir mal das Referenz Manual kurz angeschaut. Das geht, wie gesagt, 
in die Richtung spezieller Libraries.

von Irgend W. (Firma: egal) (irgendwer)


Lesenswert?


von QQ (Gast)


Lesenswert?

Gerd E. schrieb:
> Ich fürchte da wird eine "Compilerunterstützung" schwer. Denn die sind
> nicht Teil des CPU-Kerns, sondern das sind separate Hardwareeinheiten,
> die parallel zur CPU laufen. Der Compiler kann also keine Befehle
> erzeugen mit denen die angesteuert werden.
> Du musst die stattdessen wie andere Peripherieeinheiten über Register
> ansteuern. Daher sehe ich die eher als Thema für eine spezielle
> Bibliothek als für den Compiler. Leider.

Ich kenne mich mit den Interna von Compilern nicht aus, aber wäre es 
nicht möglich eine Art "virtuelle Befehle" zu zu implementieren, die 
eben in eine Befehlsfolge übersetzt wird? Paralellitäten sollten so doch 
sogar effizienter vom Compiler lösbar sein, vor Allem wenn gewisse 
Registerzugriffe in beliebiger Reihenfolge stattfinden können?

von Gerd E. (robberknight)


Lesenswert?

QQ schrieb:
> aber wäre es
> nicht möglich eine Art "virtuelle Befehle" zu zu implementieren, die
> eben in eine Befehlsfolge übersetzt wird?

Du bekommst das selbe Problem das Hardware-FPUs jetzt schon haben, nur 
noch in viel schlimmer: Du musst beim Aufruf anderer Funktionen den 
Zustand der Einheiten sichern und beim Rücksprung wiederherstellen.

Vor allem ist das auch nötig wenn Du in einen Interrupt springst. Die 
nötigen Befehle um das zu machen erhöhen Deine Interruptlatenz sehr 
deutlich. Schon mit Hardware-FPUs ist das ein Problem. Wenn es auf 
Interruptlatenz ankommt, ist es nicht unüblich auf die Hardware-FPU ganz 
zu verzichten, einfach nur um die FPU-Register nicht mit sichern und 
wiederherstellen zu müssen.

Das Sichern der zusätzlichen Register bedeutet dann am Ende auch eine 
neue ABI, Du kannst Programme die mit und ohne diese Option compiliert 
wurden nicht mehr miteinander mischen.

Ich denke der ganze Aufwand lohnt sich einfach nicht. Über eine 
Bibliothek kannst Du das einfacher und gezielter ansteuern, ohne gleich 
ganze Fundamente wie die ABI über den Haufen werfen zu müssen. Bei 
Grafikkarten und Rechenbeschleunigern für PCs wird das ja auch so 
gemacht, da gibt es OpenCL, CUDA etc. um die einzubinden und keinen 
neuen Compiler.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.