Dark Soul
Lt. Junior Grade
- Registriert
- Juli 2007
- Beiträge
- 510
Diese Aussage ist falsch Bitte nicht AVX / AVX2 mit AVX512 verwechseln. Die beiden ersteren sind sehr sinnvolle Erweiterungen / Modernisierungen von SSE.BxBender schrieb:Immerhin wissen wir ja, in dem einen Syntetiktest schmitzt so ein Prozessor förmlich vor sich hin und taktet deutlich niedriger, sobald AVX aktiviert wird.
Instruktionen sind keine Beschleuniger - es sind Maschinenanweisungen die deine CPU ausführt. Ob diese "beschleunigen" hängt ganz von deren Implementation ab. Zu AVX selber gibt es den Intrinsics Guide, dort sieht man angegeben bei welcher Architektur die jeweilige Instruktion was bring (Latency / Throughput): Intel Intrinsicslatiose88 schrieb:Instruktionen sind soweit ich weiß Beschleuniger. Aber wenn die dann verpuffen, dann wird ne gewisse Einheit nicht belastet.
Wird durch die Ausführung dieser Instruktion aus hitzetechnischen Gründen (zB grobe Lastumschaltung wegen sehr breiten Registern --> ZMM Register mit 512Bit), der Takt gedrosselt, kann es sein, dass die Performance darunter leidet. Das heisst aber nicht, dass die Einheiten nicht belastet werden. Man erledigt zwar parallel mehr, aber die "einzelne Operation" ist langsamer.
Rechenbsp:
Gegeben: Man hat 512 Bytes, also 128 Integerwerte mit jeweils 32bit.
Nun möchte man auf jeden der Integerwerte eine Operation uP darauf anwenden. Wenn man uP 128 Mal ausführt, kommt man zum Ergebnis.
Vorausgesetzt man hat die Operation uP in einer Vektoreinheit (AVX) umgesetzt, so kann man die selbe Operation auf mehreren Daten gleichzeitig anwenden. Beim Datentyp Int32 wären dies mit
AVX (128Bit Register) --> 4 uP gleichzeitig
AVX2 (256Bit Register) --> 8 uP gleichzeitig
AVX512 (512Bit Register) --> 16 uP gleichzeitig
In einer perfekten Welt haben wir also gegenüber der Operation uP, welche 128 Mal ausgeführt wird, den Speedup von 4 (32x ausgeführt), 8 (16x ausgeführt) oder mit AVX512 16x (8x ausgeführt).
Nur leider kann es sein, dass der Takt sinkt - bsp AVX512 --> beim ersten mal von 8 haben wir vollen Takt, 2 bis 5 nur halben Takt und danach nur noch einen achtel Takt. Die Performance sinkt also unter die Ausführung mit AVX2, welches den Takt halten kann.
Ist bei der Zen 4 AMD Implementation im Moment soDevPandi schrieb:Wenn Intel es richtig macht, dann kann die CPU auch mit den 512-Bit-Modi umgehen und splittet diese dann ggf. auf beide AVX-Einheiten oder führt sie in zwei Takten aus.
Und bei RISC-V geht es auch in die Richtung - die Instruktion ist unabhängig von der Hardware. Wenn die Hardware die Einheiten nicht hat, wird es halt im Loop ausgeführt. Die Komplexität wandert dann aber teilweise in Richtung Compiler.