GpuMmu modeli

Bu makalede, Windows 10'da (WDDM 2.0) tanıtılan GpuMmu modeli açıklanmaktadır.

GpuMmu modelinde, GPU'nun işlem başına GPU sanal adreslerini fiziksel adreslere çeviren kendi bellek yönetim birimi (MMU) vardır.

Her işlemin ayrı sayfa tabloları kullanan ayrı CPU ve GPU sanal adres alanları vardır. Video bellek yöneticisi (VidMm), tüm işlemlerin GPU sanal adres alanını yönetir. VidMm ayrıca sayfa tablolarını ayırma, büyütme, güncelleştirme, yerleşiklik sağlama ve sayfa tablolarını boşaltmaktan da sorumludur. GPU MMU tarafından kullanılan sayfa tablolarının donanım biçimi VidMm tarafından bilinmez ve cihaz sürücüsü arabirimleri (DDI' ler) aracılığıyla soyutlanır. Soyutlama, sabit boyutlu sayfa tablosu ve yeniden boyutlandırılabilir bir kök sayfa tablosu da dahil olmak üzere çok düzeyli bir çeviriyi destekler.

VidMm, GPU sanal adres alanını ve temel sayfa tablolarını yönetmekle sorumlu olsa da, VidMm ayırmalara otomatik olarak GPU sanal adresleri atamaz. Bu sorumluluk kullanıcı modu sürücüsüne (UMD) aittir.

VidMm , UMD'ye iki ana hizmet sunar:

  • Bellek ayırma ve serbest bırakma. UMD, mevcut Ayırma geri çağırması aracılığıyla video belleği ayırabilir ve mevcut Serbest Bırakma geri çağırması aracılığıyla bu belleği serbest bırakabilir. Tahsis etme, UMD'ye VidMm tahsisi için bir tutamak döndürür. GPU motoru bu tutamaç üzerinde çalışabilir. Böyle bir ayırma, özellikle bir GPU motorunun bir ayırma listesi aracılığıyla erişip işleyebildiği fiziksel video belleğini ifade eder.

  • GPU sanal adres alanı yönetimi. Sanal modda çalışan motorlar için, sanal olarak erişilebilmesi için önce bir GPU sanal adresinin açıkça bir tahsise atanması gerekir. Bu amaçla VidMm , GPU sanal adreslerini ayırmak veya boşaltmak ve belirli ayırma aralıklarını bir işlemin GPU sanal adres alanıyla eşlemek için UMD hizmetleri sunar. Bu hizmetler esnektir ve UMD'ye bir işlemci GPU'sunun sanal adres alanı üzerinde ince ayar kontrolü sağlar. UMD, ayırmaya belirli bir GPU sanal adresi atamaya karar verebilir veya VidMm'nin kullanılabilir bir adresi otomatik olarak seçmesine izin verebilir ve büyük olasılıkla en düşük ve en yüksek GPU sanal adresi kısıtlamalarını belirtebilir. Tek bir tahsis ile ilişkilendirilmiş birden çok GPU sanal adres eşlemesi olabilir ve Tile Resource sözleşmesini uygulamak için UMD'ye hizmetler sağlanır.

Benzer şekilde, bağlı bir görüntü bağdaştırıcısı yapılandırmasında UMD, GPU sanal adreslerini belirli ayırma örnekleriyle açıkça eşleyebilir. Her eşleme için UMD, eşlemenin kendi kendine mi yoksa belirli bir eş GPU'ya mı olacağını seçebilir. Bu modelde, ayırmaya atanan CPU ve GPU sanal adresleri birbirinden bağımsızdır. UMD, bunları her iki adres alanında da aynı tutmaya veya bağımsız tutmaya karar verebilir.

GPU sanal adresleri, DDI arabirimi aracılığıyla sabit bir 4 KB sayfa ayrıntı düzeyinde mantıksal olarak yönetilir. GPU sanal adresleri, bellek segmentinde veya sistem belleğinde bulunan ayırımlara başvurabilir. Sistem belleği 4 KB fiziksel ayrıntı düzeyinde yönetilirken, bellek kesimleri sürücünün tercihi ile 4 KB veya 64 KB'de yönetilir. Tüm VidMm ayırmaları, sürücü tarafından seçilen sayfa boyutunun katı olacak şekilde hizalanır ve boyutlandırılır.

Geçersiz bir GPU sanal adresleri aralığına erişim, erişim hatasına neden olan bağlamın ve/veya cihazın erişim ihlaline ve sonlandırılmasına neden olur. Böyle bir hatadan kurtulmak için VidMm, başarısız olursa bağdaştırıcı genel zaman aşımı algılama ve kurtarma (TDR) olarak yükseltilen bir motor sıfırlaması başlatır.

GpuMmu modeli aşağıdaki diyagramda gösterilmiştir:

GpuMmu modelini bileşenleri ve etkileşimleriyle gösteren diyagram.