Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu makalede, Windows 10'dan (WDDM 2.0) başlayarak GPU sanal bellek yönetimi hakkında ayrıntılar sağlanır. WDDM 2.0'ın GPU sanal adreslemeyi destekleyecek şekilde neden değiştirildiğini ve sürücülerin bunu nasıl kullandığını açıklar.
Giriş
WDDM 2.0'a geçmeden önce, cihaz sürücüsü arabirimi (DDI), GPU motorlarının segmentlerin fiziksel adresleri aracılığıyla belleğe başvurması bekleniyordu. Segmentler uygulamalar arasında paylaşıldığından ve aşırı tahsis edildiğinden, kaynaklar yaşam döngüleri süresince yeniden düzenlendi ve atanan fiziksel adresleri değişti. Bu işlem, bellek başvurularının, komut arabellekleri içinde, ayırma ve düzeltme konum listeleri aracılığıyla izlenmesini gerektiriyordu. Daha sonra bu arabelleklerin GPU motoruna gönderilmeden önce doğru fiziksel bellek başvurusuyla düzeltme yapılması gerekiyordu. Bu izleme ve düzeltme işlemleri pahalıydı. Temelde, video bellek yöneticisinin (VidMm), bir motora gönderilmeden önce her paketi incelemesi gereken bir zamanlama modeli zorunlu kıldı.
Zamanla, daha fazla donanım satıcısı donanım tabanlı bir zamanlama modeline yöneldi. Bu modelde, iş doğrudan kullanıcı modundan GPU'ya gönderilir ve GPU çeşitli iş kuyruklarını yönetir. Bu evrim, GPU motoruna göndermeden önce VidMm'nin her komut arabelleğini inceleme ve her komut arabelleğine düzeltme yapılması gereksinimini ortadan kaldırmayı gerektirdi.
Bunu yapmak için WDDM, WDDM 2.0'dan başlayarak GPU sanal adreslemesi destekler. Bu modelde her işleme, her GPU bağlamı tarafından yürütülebilecek benzersiz bir GPU sanal adresi (GPUVA) alanı atanır. Bir işlem tarafından oluşturulan veya açılan ayırmaya, bu işlemin GPU sanal adres alanı içinde benzersiz bir GPUVA atanır. Bu atanan GPUVA, ayırmanın ömrü boyunca sabit ve benzersiz kalır. Bu nedenle kullanıcı modu görüntü sürücüsü (UMD), temel alınan fiziksel belleğin yaşam süresi boyunca değişmesi konusunda endişelenmenize gerek kalmadan GPU sanal adresleri aracılığıyla ayırmalara başvurabilir.
GPU'nun bireysel motorları fiziksel veya sanal modda çalışabilir.
Fiziksel modda, zamanlama modeli WDDM v1.x ile aynı kalır. UMD, ayırma ve yama konum listelerini oluşturmaya devam ediyor. Bu ayırma listeleri, komut arabellekleri ile birlikte gönderilir ve bir motora gönderilmeden önce komut arabelleklerini gerçek fiziksel adreslerle güncellemek için kullanılır.
Sanal modda altyapı, GPU sanal adresleri aracılığıyla belleğe başvurur. UMD, kullanıcı modundan doğrudan komut arabellekleri oluşturur ve bu komutları çekirdeğe iletmek için yeni hizmetlerden yararlanır. UMD ayırma veya düzeltme eki konum listeleri oluşturmaz, ancak yine de ayırmaların yerleşimini yönetmekle sorumludur. Sürücü yerleşimi hakkında daha fazla bilgi için bkz . WDDM 2.0'da sürücü yerleşimi.
GPU bellek modelleri
WDDM v2, GPU sanal adresleme için iki ayrı modeli destekler: GpuMmu ve IoMmu. Bir sürücünün modellerin birini veya her ikisini birden desteklemek için kabul etmesi gerekir. Tek bir GPU düğümü aynı anda her iki modu da destekleyebilir.
GpuMmu modeli
GpuMmu modelinde VidMm, GPU bellek yönetim birimini ve temel sayfa tablolarını yönetir. VidMm ayrıca, ayırmalara GPU sanal adres eşlemesini yönetmesine olanak sağlayan hizmetleri UMD'de kullanıma sunar. GpuMmu, GPU'da verilere erişmek için GPU sayfa tablolarının kullanıldığı anlamına gelir. Sayfa tabloları sistem belleğine veya yerel cihaz belleğine işaret edebilir.
Daha fazla bilgi için bkz. GpuMmu modeli.
IoMmu modeli
IoMmu modelinde hem CPU hem de GPU ortak bir adres alanını ve CPU sayfa tablolarını paylaşır. Bu durumda yalnızca sistem belleğine erişilebilir, bu nedenle IoMmu tümleşik GPU'lar için uygundur. IoMmu, hem GPU hem de CPU'nin belleğe erişmek için aynı işaretçiyi kullanabileceği daha basit bir programlama modeli sağlar. GPU ile erişilebilir bellekte ayrı bir sayfa tablosu kümesini yönetmeye gerek yoktur. Buna göre IoMmu modeli, adres çevirisi ve yönetiminin ek yükünden dolayı performansın düşmesine neden olabilir.
Daha fazla bilgi için bkz. IoMmu modeli.