Downlocking Ice Lake AVX-512

Bild


Dies ist ein kurzer Beitrag über eine Studie zum Verhalten von AVX2 und AVX-512 in Bezug auf das lizenzierte Downlocking neuer Intel Ice Lake-Chips.



Lizenziertes Downlocking 1 ist ein wenig bekannter Effekt, bei dem Frequenzgrenzen unter den Nennwert fallen, wenn bestimmte SIMD-Befehle ausgeführt werden, insbesondere schwere Gleitkomma-Befehle oder Befehle mit einer Breite von 512 Bit.



Weitere Informationen zu dieser Art von Downlocking finden Sie in dieser StackOverflow-Antwort . Wir haben die Mechanismen solcher Übergänge auf niedriger Ebene bereits ausführlich erläutert . Dort finden Sie auch AnweisungenSo nutzen Sie breite SIMDs (Single Instruction Multiple Data: Ein Typ oder eine Erweiterung der Befehlssatzarchitektur, z. B. Intel AVX oder ARM NEON, die mehrere identische Vorgänge für in einem SIMD-Register gepackte Elemente ausführen können) unter Berücksichtigung dieses Problems 2 .



Die Informationen zu den Links wurden im Kontext von Skylake-SP (SKX, Intel Skylake-Serverarchitektur mit Skylake-SP, Skylake-X und Skylake-W) geschrieben, der ersten Chipgeneration, die AVX-512 unterstützt.



Wie ist die Situation bei Ice Lake - mit den neuesten Chips, die sowohl die AVX-512-Anweisungen von SKX als auch den brandneuen AVX-512-Befehlssatz unterstützen ? Müssen wir uns diese neuen Anweisungen von weitem ansehen und werden sie aufgrund von Downlocking niemals verwenden können?



Lesen Sie den Artikel, um es herauszufinden, oder fahren Sie einfach mit dem Abschnitt Zusammenfassung fort.



AVX-Turbo



Wir werden das Dienstprogramm avx-turbo verwenden , um die Frequenzabhängigkeit von der Anzahl der Kerne und dem Befehlssatz zu messen. Dieses Tool funktioniert einfach: Es führt einen bestimmten Befehlssatz für eine bestimmte Anzahl von Kernen aus und misst die während des Tests erreichte Frequenz.



Beispielsweise führt ein Test avx256_fma_t, der die Kosten schwerer 256-Bit-Befehle mit einem hohen ILP misst (Parallelität auf Befehlsebene: das Ausmaß der Parallelität auf der Ebene zwischen Befehlen eines superskalaren Prozessors), die folgende FMA-Sequenz aus:



	vfmadd132pd ymm0,ymm10,ymm11
	vfmadd132pd ymm1,ymm10,ymm11
	vfmadd132pd ymm2,ymm10,ymm11
	vfmadd132pd ymm3,ymm10,ymm11
	vfmadd132pd ymm4,ymm10,ymm11
	vfmadd132pd ymm5,ymm10,ymm11
	vfmadd132pd ymm6,ymm10,ymm11
	vfmadd132pd ymm7,ymm10,ymm11
	vfmadd132pd ymm8,ymm10,ymm11
	vfmadd132pd ymm9,ymm10,ymm11
	; repeat 10x for a total of 100 FMAs


Insgesamt verwenden wir fünf Tests, um jede Kombination aus leichten und schweren 256-Bit- und 512-Bit-Befehlen sowie skalaren Befehlen (128-Bit-SIMD verhält sich wie skalare Befehle) durch Eingabe in die Befehlszeile zu testen:



./avx-turbo --test=scalar_iadd,avx256_iadd,avx512_iadd,avx256_fma_t,avx512_fma_t


Ice Lake Ergebnisse



Ich habe avx-turbo wie oben beschrieben auf einem Ice Lake i5-1035G4 ausgeführt, einem mittelgroßen Ice Lake-Client-Prozessor mit bis zu 3,7 GHz. Die vollständigen Ergebnisse sind im Kern verborgen , aber hier präsentiere ich die wichtigsten Ergebnisse für die erhaltenen Frequenzen (alle Werte sind in GHz):



Befehlssatz Aktive Kerne
1 2 3 4
Skalar / 128-Bit 3.7 3.6 3.3 3.3
Licht 256-Bit 3.7 3.6 3.3 3.3
Schweres 256-Bit 3.7 3.6 3.3 3.3
Licht 512-Bit 3.6 3.6 3.3 3.3
Schweres 512-Bit 3.6 3.6 3.3 3.3


Wie erwartet tritt der maximale Frequenzabfall mit zunehmender Anzahl aktiver Kerne auf. Sehen Sie sich jedoch jede Spalte an, um die Auswirkungen auf die Befehlskategorien zu sehen. Entlang dieser Achse tritt fast keine Verriegelung auf! Mit nur einem aktiven Kern gibt es eine Abnahme mit breiten Befehlen und nur um mickrige 100 MHz: von 3 700 MHz auf 3 600 MHz unter Verwendung von 512-Bit-Befehlen.



In allen anderen Fällen, auch bei mehreren aktiven Kernen sowie bei schweren 256-Bit-Kernen, ist das lizenzierte Downlocking Null : Alles funktioniert so schnell wie bei skalaren Anweisungen.



Arten von Lizenzen



Hier gibt es eine weitere Änderung. Die SKX-Architektur verfügt über drei Lizenzen oder Kategorien von Downlocking-Anweisungen: L0, L1 und L2. Hier in der Client-ICL gibt es nur zwei 3 von ihnen und sie entsprechen nicht genau den drei Kategorien in SKX.



Lizenzen in SKX entsprechen der Breite und dem Gewicht der Anweisungen wie folgt:



Breite Lunge Schwer
Skalar / 128 L0 L0
256 L0 L1
512 L1 L2


Beachten Sie insbesondere, dass die schweren 256-Bit-Anweisungen unter derselben Lizenz lizenziert sind wie die leichten 512-Bit-Anweisungen.



In Client-ICLs lautet das Schema wie folgt:



Breite Lunge Schwer
Skalar / 128 L0 L0
256 L0 L0
512 L1 L1


Hier gibt es schwere 256-Bit- und leichte 512-Bit-Anweisungen in verschiedenen Kategorien! Tatsächlich scheint das Konzept der leichten und schweren Anweisungen hier nicht zuzutreffen: Die Kategorisierung hängt vollständig von der Breite 4 ab .



Na und?



Was ist damit?



Zumindest bedeutet dies, dass wir unser mentales Modell der Kosten für AVX-512-Anweisungen in Bezug auf Frequenzen ändern müssen. Anstatt zu sagen, dass sie „normalerweise ein erhebliches Downlocking verursachen“, kann bei diesem Ice Lake-Chip gesagt werden, dass AVX-512 nur wenig oder gar kein lizenziertes Downlocking verursacht, und ich gehe davon aus, dass dies auch für andere Ice Lake-Client-Chips gilt.



Diese Änderung unserer Erwartungen hat jedoch einen wichtigen Fehler: Lizenziertes Downlocking ist nicht das einzige.Quelle des Downlocking. Es kann auch zu Leistungs-, Wärme- oder Strombegrenzungen kommen. Einige Konfigurationen können nur für kurze Zeit breite SIMD-Anweisungen auf allen Kernen ausführen und dann die Betriebsleistungsgrenzen überschreiten. In meinem Fall war der 250-Dollar-Laptop, den ich getestet habe, extrem schlecht gekühlt, und anstelle von Leistungsbeschränkungen stieß ich nur Sekunden nach dem Ausführen umfangreicher Anweisungen auf allen Kernen auf eine Wärmeableitungsgrenze (100 ° C).



Diese anderen Einschränkungen unterscheiden sich jedoch qualitativ von den Lizenzbeschränkungen. Grundsätzlich 5 beschränken sie das Prinzip der Bezahlung für das, was Sie verwenden: Wenn Sie breite oder schwere Anweisungen (oder beides) verwenden, führt dies nur zu einer mikroskopischen Erhöhung der Strom- oder Wärmeerzeugung, die nur mit diesen Anweisungen verbunden ist. Dies steht im Gegensatz zu einigen Lizenzierungseffekten, bei denen Frequenzänderungen innerhalb eines Kerns oder eines gesamten Chips auftreten und die spätere Ausführung ohne Bezug zu diesen Befehlstypen erheblich beeinflussen.



Da breite Operationen normalerweise weniger energieintensiv sind als eine ähnliche Anzahl enger Operationen 6 , ist sofort klar, ob sich die breiten Operationen lohnen ; Zumindest in Fällen, die sich mit zunehmender Breite gut skalieren lassen. Wie dem auch sei, dieses Problem ist meistens lokal: Es hängt nicht vom Verhalten des benachbarten Codes ab.



Ergebnis



Hier sind meine Schlussfolgerungen.



  • Der Ice Lake i5-1035-Prozessor demonstriert nur 100-MHz-lizenziertes Downlocking mit einem aktiven Kern, wenn 512-Bit-Anweisungen ausgeführt werden.
  • In allen anderen Fällen gibt es kein Downlocking.
  • Die Turbofrequenz der Ausführung von 512-Bit-Befehlen auf allen Kernen beträgt 3,3 GHz, was 89% der maximalen Häufigkeit der Ausführung von Skalaroperationen auf einem Kern (3,7 GHz) entspricht. Daher hat dieser Chip innerhalb der Grenzen von Leistung und Wärmeableitung eine sehr „flache“ Frequenz Sucht.
  • Im Gegensatz zur SKX-Architektur verwendet dieser Ice Lake-Chip die Unterteilung in "leichte"

    und "schwere" Anweisungen zum Skalieren von Frequenzen nicht: FMA-Operationen werden auf die gleiche Weise wie die leichteren Operationen ausgeführt.


Das heißt, Sie müssen keine Angst vor dem Downlocking von Client-ICLs haben. Nur die Zukunft wird uns sagen, ob dies auch für serverseitige ICLs gilt.



Diskussionen und Kommunikation



Dieser Beitrag kann in den Hacker News diskutiert werden .



Wenn Sie Fragen oder anderes Feedback haben, können Sie einen Kommentar zum ursprünglichen Beitrag hinterlassen . Ich würde mich auch für die Ergebnisse anderer ICL-Chips interessieren , zum Beispiel für die Versionen i3 und i7: Lassen Sie mich wissen, ob Sie sie haben, und wir können die Ergebnisse erhalten.






Anmerkungen



  1. Ich bin es schon leid, das lizenzierte Downlocking ständig zu wiederholen , daher verwende ich oft nur den Begriff "Downlocking", aber es sollte klar sein, dass dies eine lizenzierte Version davon ist und keine andere Art der Frequenzdrosselung
  2. Beachten Sie, dass Daniel schrieb über dieses viel mehr , als einmal.

  3. : , - ( ) , , .
  4. , , ICL FMA : 512- . , 256- : - 2x256- FMA , , 1x512- FMA . , , 512- .
  5. , , , , , . , , , vzeroupper vzeroall.
  6. Beispielsweise ist eine 512-Bit-Ganzzahladdition normalerweise weniger energieintensiv als die beiden 256-Bit-Operationen, die zur Berechnung des gleichen Ergebnisses erforderlich sind, da der Overhead bei der Ausführung mit zunehmender Breite nichtlinear wächst (sie umfassen fast alles außer der Ausführung selbst).



All Articles