
Reverse engineering del dizionario delle istruzioni NVIDIA SASS, audit dei kernel e riconoscimento di pattern attraverso le architetture GPU.
Reverse engineering di NVIDIA SASS da kernel controllati a audit di produzione.
Articolo 1 · Articolo 2 · Base di conoscenza · Libreria di pattern · Glossario istruzioni SM120 · Note di codifica · Inizia qui · Struttura del progetto · Capitoli tensor core · Contribuire
SASS King è un progetto sistematico di reverse engineering per NVIDIA SASS, il set di istruzioni nativo della GPU emesso nei binari CUDA compilati. Il progetto parte dall'hardware consumer Blackwell SM120 / SM120a e si espande nel tempo verso una libreria completa di ISA e pattern multi-architettura.
L'obiettivo è pratico: aiutare un ingegnere di kernel ad aprire un dump SASS, riconoscere pattern del compilatore, identificare strutture rilevanti per le prestazioni e collegare il binario alle decisioni di ottimizzazione a livello di sorgente.
Il progetto ha completato la libreria di pattern iniziale della Fase 3: 29 firme SASS riutilizzabili sono ora formalizzate in patterns/, con knowledge/FINDINGS.md mantenuto come traccia completa delle evidenze. Il prossimo passo importante è la Fase 4: applicare questi pattern a kernel di produzione reali.
| Se vuoi... | Inizia qui | Poi leggi |
|---|---|---|
| Capire il progetto in 10 minuti | docs/README.md | docs/START_HERE.md, poi docs/PROJECT_STRUCTURE.md |
| Riprodurre le evidenze | corpus/README.md | un capitolo conclusion*.md, poi il suo dump .sass |
| Trovare la fonte di verità | knowledge/FINDINGS.md | knowledge/SASS_INSTRUCTIONS_SM120.md, knowledge/encoding/README.md |
| Riconoscere un pattern in un nuovo dump | patterns/README.md | la pagina patterns/NN-*.md corrispondente |
| Iniziare un audit di produzione | production/README.md | pagine PATTERN-NN corrispondenti e prove sorgente |
| Contribuire con una correzione o un dump | CONTRIBUTING.md | docs/START_HERE.md |
Il repository è organizzato come una pipeline di evidenze:
corpus/ kernel controllati e prove SASS grezze
knowledge/ risultati a livello di progetto, note sulle istruzioni e note di codifica
patterns/ firme di audit riutilizzabili della Fase 3
production/ audit su kernel reali della Fase 4
L'ultimo lavoro pubblico di reverse engineering SASS ampio e paragonabile per spirito è stato Jia et al. su Volta e Turing nel 2018. Ampere, Hopper e Blackwell hanno cambiato sostanzialmente il mix di istruzioni: percorsi di copia asincrona, famiglie di tensor core, istruzioni di load/store matriciale, forme MMA sparse e scalate, e nuovi flussi di registri uniformi.
SASS King colma questa lacuna combinando micro-kernel controllati, lettura SASS grezza, sonde runtime e audit di kernel di produzione.
| Area | Stato | Dove |
|---|---|---|
| Kernel didattici SM120 | Completati attraverso i kernel 01-12 | corpus/basics/01_vector_add/ a corpus/math_and_spills/12_register_spill/ |
| Studi sui tensor core | Completati attraverso il Kernel 25 | corpus/tensor_cores/ |
| Risultati globali | Fonte di verità attiva | knowledge/FINDINGS.md |
| Glossario istruzioni SM120 | Attivo, basato su evidenze | knowledge/SASS_INSTRUCTIONS_SM120.md |
| Piloti di codifica | Avviati con LDSM, STSM, QMMA | knowledge/encoding/ |
| Convalida incrociata denvdis | Primo passaggio completato; rimangono lacune nei codici di controllo più profondi | knowledge/DENVDIS_INTEGRATION.md |
| Libreria di pattern | Libreria iniziale Fase 3 completata | patterns/ |
| Audit di produzione | Prossima fase | production/ |
La libreria formale di pattern è il principale output della Fase 3. Trasforma le evidenze locali dei capitoli in firme di audit riutilizzabili, in modo che un audit possa citare un pattern con nome invece di riscrivere ogni volta l'intera traccia di ricerca.
La Fase 3 è considerata completa perché:
knowledge/FINDINGS.md;patterns/README.md;| Famiglia di pattern | Esempi | Dove |
|---|---|---|
| Calcolo tensor core | Catene di accumulatori HMMA, QMMA, OMMA; metadati sparsi; frammenti stretti | patterns/02-* a patterns/04-*, patterns/10-*, patterns/21-* |
| Memoria matriciale ed epiloghi | LDSM, STSM, pipeline di copia asincrona, epiloghi di riduzione REDG | patterns/05-*, patterns/06-*, patterns/07-*, patterns/28-* |
| Flusso di controllo | divergenza/riconvergenza, back-edge di loop, uscite predicate, cold trap, CALL locali | patterns/08-*, patterns/14-*, patterns/16-*, patterns/26-*, patterns/29-* |
| Memoria e registri | memoria globale vettorizzata, spill, staging in memoria condivisa, descrittori, flusso di registri uniformi | patterns/09-*, patterns/11-*, patterns/17-*, patterns/19-*, patterns/20-* |
| Aritmetica e scheduling | fusione FFMA, costanti, percorsi lenti MUFU, scoreboard, riciclo lifetime | patterns/12-*, patterns/18-*, patterns/22-*, patterns/23-*, patterns/24-* |
| Collettivi warp | riduzioni warp, shuffle/vote/match/sync primitive | patterns/01-*, patterns/25-* |
Ogni pagina di pattern include:
Usa patterns/README.md come indice orientato all'audit. Usa knowledge/FINDINGS.md quando hai bisogno del contesto di ricerca più lungo dietro un pattern.
La Fase 3 non sostiene che ogni comportamento di NVIDIA SASS sia decodificato. Stabilisce un livello di pattern SM120 / SM120a riutilizzabile, sufficientemente buono per iniziare audit manuali di produzione. La decodifica del layout runtime, il posizionamento completo dei bit dei codici di controllo, la reportistica cubin automatizzata e la riproduzione cross-architettura rimangono lavoro futuro.