mikrocontroller.net

Forum: FPGA, VHDL & Co. Verlustleistung minimieren durch Reset


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.
Autor: dono (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,
in meinem Design möchte ich den dynamischen Stromverbrauch meiner Logik 
möglichst gering halten, sodass ich inzwischen überlege, die Module nach 
getaner Arbeit in den Reset zu versetzen. Hier wäre meine Frage, wie 
sehr der Reset auf den Stromverbrauch von Registern Einfluss hat. Ich 
nutze bereits extensiv die Enable-Signale von den Registern, bspw. bei 
AXI-Streams. Zur Info: Es handelt sich um ein bei 200 MHz betriebenes, 
etwa 1000 Register (Cyclone 10 GX) umfassendes Modul.

Autor: Lothar M. (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
dono schrieb:
> Hier wäre meine Frage, wie sehr der Reset auf den Stromverbrauch von
> Registern Einfluss hat.
Nein.
Wenn ein Register nicht schaltet braucht es ausser dem Leckstrom keinen 
Strom. Und dieser Leckstrom fließt auch im Reset.

> Ich nutze bereits extensiv die Enable-Signale von den Registern
Du solltest dir unbedingt mal den physikalischen Aufbau der Logikzelle 
genau anschauen und kennenlernen, wenn du mit Hochsprachenelementen dort 
herummanipulieren willst. Z.B. welche Auswirkung hat so eine 
Enable-Leitung? Schaltet die den Takt im Flipflop wirklich ab? Wann 
schaltet ein Flipflop? Was tut der Reset? Usw, usf...

Autor: Erik (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Clock muss aus sein.

Power sparen tut man mit:
- automatischem Clock Gating durch Synthese (nicht verwechseln mit "Auto 
Gated Clock Conversion")
- Power Switches für einzelne Teile
- weniger Gatter
- Reset bringt nur etwas, wenn sich viele Werte stetig ändern (der 
Switching Factor ist aber meist kleiner als man denkt)

Power Switching gibs soweit ich weiß im FPGA nicht. Bleiben nur noch 2.

Autor: Erik (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Lothar M. schrieb:
> Wenn ein Register nicht schaltet braucht es ausser dem Leckstrom keinen
> Strom.

Das ist nur teilweise richtig. Der Clocktree, also die FF 
Eingangskapazität muss umgeladen werden.

Autor: dono (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Lothar M. schrieb:
> Du solltest dir unbedingt mal den physikalischen Aufbau der Logikzelle
> genau anschauen und kennenlernen, wenn du mit Hochsprachenelementen dort
> herummanipulieren willst. Z.B. welche Auswirkung hat so eine
> Enable-Leitung? Schaltet die den Takt im Flipflop wirklich ab? Wann
> schaltet ein Flipflop? Was tut der Reset? Usw, usf...

Ich als Softwerker habe mich mal grob mit dem Thema beschäftigt, kann 
aber nicht einschätzen, ob in modernen FPGAs die FFs anders aufgebaut 
sind...

Erik schrieb:
> Power sparen tut man mit:
> - automatischem Clock Gating durch Synthese (nicht verwechseln mit "Auto
> Gated Clock Conversion")
> ...
> - weniger Gatter

Weniger Gatter ist nicht möglich. Von automatischem Clock Gating habe 
ich noch nichts gehört. Gibt's das auch bei Quartus?

Autor: Lothar M. (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Erik schrieb:
> Das ist nur teilweise richtig. Der Clocktree, also die FF
> Eingangskapazität muss umgeladen werden.
Die ist aber im Reset auch da. Und sogar, wenn der Enable inaktiv ist.

Erik schrieb:
> - automatischem Clock Gating durch Synthese (nicht verwechseln mit "Auto
> Gated Clock Conversion")
Ja, man kann das Taktnetz abschalten. Aber das hat eben nichts mit dem 
Reset des Flipflops zu tun.

Ergo: Strom sparen lässt sich in einem FPGA nur, wenn man die 
Versorgungsspannung so weit wie möglich reduziert und den Takt 
(zumindest partiell) abschaltet.

Autor: Erik (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
dono schrieb:
> Gibt's das auch bei Quartus?

Das weiß ich nicht.

Aber hier zum Nachlesen was von Xilinx:
https://www.xilinx.com/support/documentation/application_notes/xapp790-7-series-clock-gating.pdf

Es läuft im Endeffekt auf ein "Optimize for Power" heraus.

Autor: Erik (Gast)
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
Lothar M. schrieb:
> die
> Versorgungsspannung so weit wie möglich reduziert

Erzähl mir mehr...

7-Series
Min 0.97 V
Max 1.03 V

Was willstn da reduzieren?

Und wenn du es tut verlässt du die garantierten Timings sehr schnell.

Autor: Lothar M. (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
dono schrieb:
> (Cyclone 10 GX)

Erik schrieb:
> 7-Series
Häh? Was jetzt?

Erik schrieb:
> Was willstn da reduzieren?
Ich hatte nur geschrieben, dass das ein Weg wäre. Genauso wie das 
Abschalten der Versorgung, denn dann ist die Versorgungsspannung 
weitestmöglich abgesenkt.

Denn der Ansatz mit dem Clock-Gating funktioniert in der Praxis auch nur 
halb so gut und einfach wie in dem verlinkten, rein theoretischen PDF.

: Bearbeitet durch Moderator
Autor: Sigi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Lothar M. schrieb:
> Ergo: Strom sparen lässt sich in einem FPGA nur, wenn man die
> Versorgungsspannung so weit wie möglich reduziert und den Takt
> (zumindest partiell) abschaltet.

Braucht der Takt wirklich soviel oder sind Zustandswechsel
(nicht nur FF, auch LUT verbraucht ja Strom) nicht wesentlich
entscheidender?

Wenn ich z.B. per ClockEnable nur in jedem 10. Takt für einen
Zustandwechsel sorge, dann wird der Stromverbrauch sicherlich
nicht auf 10 Prozent sinken, aber doch deutlich messbar.

Autor: Christophz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Erik schrieb:
> Lothar M. schrieb:
>> die
>> Versorgungsspannung so weit wie möglich reduziert
>
> Erzähl mir mehr...
>
> 7-Series
> Min 0.97 V
> Max 1.03 V
>
> Was willstn da reduzieren?

Du sollst einen möglichst modernen FPGA mit möglichst kleiner 
Versorgungsspannung einsetzen und nicht etwas ältere billigere mit z. B. 
1,5 V Kernspannung.

Autor: Strubi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn du eine Menge Zähler bei hohen Taktfrequenzen hast, kannst du sie 
noch alenfalls auf Gray-Counter optimieren, oder am besten das Design 
von vornherein drauf ausrichten. Das häufige Flippen von Bits kostet 
auch.

Autor: Christophz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Strubi schrieb:
> Das häufige Flippen von Bits kostet auch.

Da es Strubi angesprochen hat: Es gibt ganze Zahlensysteme (Canonical 
signed digits, CSD, anstatt z. B. das verbreitete Zweierkomplement) die 
beim Rechnen die flippenden Bits minimiert und so geeigneter sind für 
stromsparende Designs.

Ich war mal wieder positiv erstaunt darüber, was man so alles erfinden 
kann :-)

Autor: Jürgen S. (engineer) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Strubi schrieb:
> Wenn du eine Menge Zähler bei hohen Taktfrequenzen hast, kannst du sie
> noch alenfalls auf Gray-Counter optimieren, oder am besten das Design
> von vornherein drauf ausrichten. Das häufige Flippen von Bits kostet
> auch.

Kann sein, muss aber nicht. Die Zählerbits werden meist gfs. mit anderen 
Kombis zusammengefasst und optimiert, bzw. sie gehen in den Gleichungen 
auf. Mit Gray ist dann wenig zu wollen. Wenn man größere Zähler als 
eingenständige Einheiten fest definiert und "keeped", verhindert man nur 
das Zusammenfassen und Verkleinern von Logik.

Das Sparsamste ist immer eine geringere Taktfrequenz zu nehmen und gfs. 
Teile des designs langsamer zu Takten, wenn es die dann nötigen 
Synchronizer nicht wieder wegfressen, oder auch Teile des Designs über 
clock regions komplett abzuhängen oder abhängen zu lassen.

Auch das totale Weglassen von PLLs kann hilfreich sein, wenn es im 
Einzelfall machbar ist. Die fressen ziemlich Strom. Kann natürlich sein, 
dass man durch die Takteregionoptimierung überhaupt erst weitere Takte 
aus einer PLL braucht. Dann kommt es darauf an, die design parts mit 
geschickten Frequenzen zu fahren, damit man Ganzzahlig rauskommt und mit 
DCMs ohne Phasenregelschleife auskommt, sofern dies nicht im Einzelfall 
aus anderen Gründen nicht machbar ist.

Ist am Ende eine Frage der design Strategie. Da kommen wir dann aber 
wieder in die Bereiche, die Erfahrung brauchen, um sie bei der 
Konzeption direkt richtig zu wählen. Etwas, was weder durch die 
Optimizer der Tools und schon gar nicht durch MATLAB bewerkstellig wird.

Autor: Sigi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jürgen S. schrieb:
> Kann sein, muss aber nicht. Die Zählerbits werden meist gfs. mit anderen
> Kombis zusammengefasst und optimiert, bzw. sie gehen in den Gleichungen
> auf. Mit Gray ist dann wenig zu wollen.

Sehr wichtig zu bemerken ist auch, dass zwar bei Craycode
nur ein Bit geänder werden muss, in jeden Schritt eines
Zählers muss aber auch bestimmt werden, welches Bit.
Auf der anderen Seite wird ein ganz normaler Zähler in
eine CarryChain gegossen, und die ist in FPGAs hocheffizient,
nicht nur bzg. Laufzeit, sondern auch bzgl. Energieverbrauch.

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]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [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.