Yosup schrieb:
Na Klasse, noch mehr Silizium, dass in jedem anderen Szenario ungenutzt rumgammelt. Würde man die dafür notwendigen Transistoren in mehr Shadereinheiten stecken, dann stünden diese auch allen anderen Anwendungen zur Verfügung.
Paradoxerweise spart man mit dem Auslagern in speziell dafür entworfene Schaltung tatsächlich sogar Transistoren. Denn diese Funktionen sind ja nicht einfach auf anderen Transistoren ausgelagerter Code, sondern Dekompression oder auch Videodecoding/-encoding haben in der Regel einen festgelegten, immer gleichen Ablauf.
Da werden dann speziell darauf optimierte ASICs verbaut, also der Algorithmus nicht als Code ausgeführt, sondern in der Schaltung fest verdrahtet. In CPUs wird ja auch nicht alles von den allgemeinen Rechenwerken ausgeführt, sondern sowas wie AVX oder AES-NI läuft auch über separate Schaltungen mit eigenen Transistoren. Genauso sieht es mit der hardwarebeschleunigten Encodieren oder Dekodieren von Videos aus, was ebenfalls separate, kleine Blöcke in den GPUs sind.
Denn ASICs bzw. allgemein in Hardware fest verdrahtete Algorithmen haben den Vorteil, dass sie a) schnell sind also die Ausführung auf "Allround-Recheneinheiten" und b) dafür auch deutlich weniger Transistoren brauchen. Shader-Kerne können zig unterschiedliche Algorithmen verarbeiten und brauchen entsprechend Transistoren, um verschiedenste Workloads verarbeiten zu können, auch wenn nicht jeder Workload auch alle davon wirklich verwendet. Bei ASICs braucht man dagegen nur Transistoren für einen einzigen, fest definierten Ablauf. Die können dann zwar nur diese eine Berechnung, sind dafür aber auch entsprechend schnell und klein.
Ein Shader-Kern hat zig Millionen Transistoren, egal ob der gerade Matrix-Multiplikationen, Vektorrechnungen oder Zst ausführt. Ein ASIC für Zstd braucht dagegen dann vielleicht nur ein paar Hunderttausend Transistoren, um Zsdt zu dekromprimieren.