Nvidia B200'de Komut Hattı Tehlikeleri: Statik Analiz Neden Yetersiz Kalıyor
Nvidia B200'de derleyici under-stall hataları: predicate bağımlılığı kaçırma ve sabit gecikmeli RAW tehlikelerinin silikon üzerinde analizi.
Nvidia B200 üzerinde yapılan silikon-düzeyi mikro-benchmark çalışması, derleyici zamanlayıcılarının %100 bağımlılık kapsamı raporlamasına rağmen sessiz hesaplama hatalarına yol açabildiğini gösteriyor. Sorunun kökeninde, tüketici komutun üretici komutun sonucu register dosyasına yazılmadan önce erken issue edilmesi (under-stall) yatıyor; donanım hata vermeden bayat veriyi işlemeye devam ediyor.
Öne çıkan bulgu, ISETP ile hesaplanan bir predicate'in dallanma (BRA) komutu tarafından tüketildiği klasik döngü geri-kenarı deseninde ortaya çıkan bir hata. Zamanlayıcı, dallanmanın execution guard predicate'ini (P0) doğru izlerken, asıl dallanma koşulunu taşıyan P1 operandını bağımlılık olarak kaçırmış. Sonuç: ISETP→BRA RAW bağımlılığı hiç kodlanmamış ve dallanma, modellenen 13 çevrimlik gecikme dolmadan, sadece 4 çevrim sonra bayat predicate değeriyle yanlış yürütme yoluna girmiş.
Yazar ayrıca sabit gecikmeli aritmetik komutlar (FFMA, DFMA) için silikon üzerinde ölçülen minimum stall çevrimlerini paylaşıyor: FP32 FFMA için 4 çevrim, FP64 DFMA için 8 çevrim - beklenen şekilde çift hassasiyet, çift gecikme gerektiriyor. Tamsayı zincirlerinin donanım tarafından bypass edilebildiği, dolayısıyla test için kayan nokta bağımlılık zincirlerinin kullanılması gerektiği vurgulanıyor.
Derleyici ve GPU backend mühendisleri için mesaj net: Nvidia mimari gecikme ve scoreboard detaylarını yayınlamadığından, statik model varsayımları donanımdaki gerçek davranıştan sapabilir. Silikon üzerinde doğrulama probe'ları olmadan, under-stall hataları test paketlerinden sessizce geçebilir.