
Reverse Engineering des NVIDIA SASS-Befehlsverzeichnisses, Kernel-Audits und Mustererkennung auf verschiedenen GPU-Architekturen.
Reverse Engineering von NVIDIA SASS – von kontrollierten Kernels bis zu Produktions-Audits.
Artikel 1 · Artikel 2 · Wissensbasis · Musterbibliothek · SM120-Befehlsglossar · Codierungsnotizen · Hier starten · Projektstruktur · Tensor-Core-Kapitel · Mitwirken
SASS King ist ein systematisches Reverse-Engineering-Projekt für NVIDIA SASS, den nativen GPU-Befehlssatz, der in kompilierten CUDA-Binärdateien enthalten ist. Das Projekt startet mit SM120 / SM120a Consumer-Blackwell-Hardware und erweitert sich im Laufe der Zeit zu einer vollständigen architekturübergreifenden ISA- und Musterbibliothek.
Das Ziel ist praktisch: einem Kernel-Ingenieur helfen, einen SASS-Dump zu öffnen, Compiler-Muster zu erkennen, leistungsrelevante Strukturen zu identifizieren und die Binärdatei mit Optimierungsentscheidungen auf Quellcode-Ebene zu verknüpfen.
Das Projekt hat seine erste Phase-3-Musterbibliothek abgeschlossen: 29 wiederverwendbare SASS-Signaturen sind nun unter patterns/ formalisiert, mit knowledge/FINDINGS.md als vollständiger Beweiskette. Der nächste große Schritt ist Phase 4: die Anwendung dieser Muster auf echte Produktions-Kernel.
| Wenn Sie... | Starten Sie hier | Dann lesen Sie |
|---|---|---|
| Das Projekt in 10 Minuten verstehen möchten | docs/README.md | docs/START_HERE.md, dann docs/PROJECT_STRUCTURE.md |
| Die Beweise reproduzieren möchten | corpus/README.md | ein Kapitel conclusion*.md, dann dessen .sass-Dump |
| Die Quelle der Wahrheit finden möchten | knowledge/FINDINGS.md | knowledge/SASS_INSTRUCTIONS_SM120.md, knowledge/encoding/README.md |
| Ein Muster in einem neuen Dump erkennen möchten | patterns/README.md | die passende patterns/NN-*.md-Seite |
| Ein Produktions-Audit beginnen möchten | production/README.md | passende PATTERN-NN-Seiten und Quellnachweise |
| Eine Korrektur oder einen Dump beitragen möchten | CONTRIBUTING.md | docs/START_HERE.md |
Das Repository ist als Beweispipeline organisiert:
corpus/ kontrollierte Kernel und rohe SASS-Beweise
knowledge/ projektweite Erkenntnisse, Befehlsnotizen und Codierungsnotizen
patterns/ wiederverwendbare Phase-3-Audit-Signaturen
production/ Phase-4-Realkernel-Audits
Die letzte breite öffentliche SASS-Reverse-Engineering-Arbeit mit vergleichbarem Geist war Jia et al. zu Volta und Turing im Jahr 2018. Ampere, Hopper und Blackwell haben die Befehlsmischung erheblich verändert: asynchrone Copy-Pfade, Tensor-Core-Familien, Matrix-Load/Store-Befehle, sparse und skalierte MMA-Formen sowie neue Uniform-Register-Flows.
SASS King schließt diese Lücke, indem es kontrollierte Mikro-Kernel, reines SASS-Lesen, Runtime-Probes und Produktionskernel-Audits kombiniert.
| Bereich | Status | Wo |
|---|---|---|
| SM120-Lehrkernel | Abgeschlossen durch Kernel 01-12 | corpus/basics/01_vector_add/ bis corpus/math_and_spills/12_register_spill/ |
| Tensor-Core-Studien | Abgeschlossen bis Kernel 25 | corpus/tensor_cores/ |
| Globale Erkenntnisse | Aktive Quelle der Wahrheit | knowledge/FINDINGS.md |
| SM120-Befehlsglossar | Aktiv, evidenzgestützt | knowledge/SASS_INSTRUCTIONS_SM120.md |
| Codierungspiloten | Gestartet mit LDSM, STSM, QMMA | knowledge/encoding/ |
| denvdis-Kreuzvalidierung | Erste Durchführung abgeschlossen; tiefere Control-Code-Lücken bestehen noch | knowledge/DENVDIS_INTEGRATION.md |
| Musterbibliothek | Erste Phase-3-Bibliothek abgeschlossen | patterns/ |
| Produktions-Audits | Nächste Phase | production/ |
Die formale Musterbibliothek ist das Hauptprodukt von Phase 3. Sie wandelt die kapitelspezifischen Beweise in wiederverwendbare Audit-Signaturen um, sodass ein Audit ein benanntes Muster zitieren kann, anstatt jedes Mal die vollständige Recherchespur neu schreiben zu müssen.
Phase 3 gilt als abgeschlossen, weil:
knowledge/FINDINGS.md gebunden bleiben;patterns/README.md ausgeht;| Musterfamilie | Beispiele | Wo |
|---|---|---|
| Tensor-Core-Berechnung | HMMA-, QMMA-, OMMA-Akkumulator-Ketten; sparse Metadaten; schmale Fragmente | patterns/02-* bis patterns/04-*, patterns/10-*, patterns/21-* |
| Matrixspeicher und Epiloge | LDSM, STSM, asynchrone Copy-Pipelines, REDG-Reduktions-Epiloge | patterns/05-*, patterns/06-*, patterns/07-*, patterns/28-* |
| Kontrollfluss | Divergenz/Reconvergenz, Schleifen-Rückkanten, prädizierte Ausgänge, Cold Traps, lokale CALLs | patterns/08-*, patterns/14-*, patterns/16-*, patterns/26-*, patterns/29-* |
| Speicher und Register | vektorisierter globaler Speicher, Spills, Shared-Memory-Staging, Deskriptoren, Uniform-Register-Flow | patterns/09-*, patterns/11-*, patterns/17-*, patterns/19-*, patterns/20-* |
| Arithmetik und Scheduling | FFMA-Fusion, Konstanten, MUFU-Slowpaths, Scoreboards, Lifetime-Recycling | patterns/12-*, patterns/18-*, patterns/22-*, patterns/23-*, patterns/24-* |
| Warp-Kollektive | Warp-Reduktionen, Shuffle/Vote/Match/Sync-Primitive | patterns/01-*, patterns/25-* |
Jede Musterseite enthält:
Verwenden Sie patterns/README.md als audit-orientierten Index. Verwenden Sie knowledge/FINDINGS.md, wenn Sie den längeren Forschungskontext hinter einem Muster benötigen.
Phase 3 behauptet nicht, dass jedes NVIDIA-SASS-Verhalten dekodiert ist. Sie erstellt eine wiederverwendbare SM120 / SM120a-Musterschicht, die gut genug ist, um manuelle Produktions-Audits zu beginnen. Runtime-Layout-Dekodierung, vollständige Control-Code-Bit-Platzierung, automatisiertes cubin-Reporting und architekturübergreifende Wiederholung bleiben zukünftige Arbeiten.