Çift yönlü yığın bellek ayırıcıları parçalanma sorununu çözüyor
Öne çıkanlar
- Yığın ayırıcılar bellek tahsisini tamsayı toplamaya, boşaltmayı ise tek bir sıfırlamaya indiriyor.
- Çift yönlü modelde iki ayrı sistem tek bir bellek havuzunu zıt uçlardan başlayarak tüketiyor.
- İşaretçilere uygulanan atomik toplama işlemleri sayesinde yapı çok iş parçacıklı sistemlerde çalışabiliyor.
Oyun geliştiricisi Alan Wolfe, yüksek performans gerektiren uygulamalarda bellek yönetimini hızlandıran ve bellek parçalanmasını önleyen çift yönlü yığın bellek ayırıcı (double headed stack allocator) mimarisini anlattı. Klasik dinamik bellek ayırma işlemlerinin kare başına yüzlerce kez çağrıldığında performans darboğazı oluşturduğunu belirten Wolfe, yığın ayırıcıların tahsis işlemini basit bir tamsayı toplama operasyonuna, bellek boşaltmayı ise tek bir sıfırlama işlemine indirdiğini açıkladı.
Surreal Software ve Blizzard dönemindeki tecrübelerinden örnekler veren Wolfe, StarCraft 2 ekibinde James Anhalt'tan öğrendiği çift yönlü yaklaşımı detaylandırdı. Bu modelde ayrılan tek bir bellek bloğunun iki zıt ucu kullanılıyor; bir sistem sıfırdan yukarı doğru tahsis yaparken, diğeri bellek sonundan aşağı doğru genişliyor. İki işaretçinin karşılaşmasıyla bellek sınırına ulaşıldığını denetleyen mimari, farklı yaşam döngülerine sahip sistemlerin ortak havuzdan esnek pay almasına olanak tanıyor.
Yöntemin çok iş parçacıklı ortamlarda atomik tamsayı operasyonlarıyla güvenle çalışabildiği kaydedildi. Model ayrıca ağ paketleri gibi sabit boyutlu alanlarda değişken boyutlu verileri rastgele erişimle saklamak için de kullanılabiliyor. Bu senaryoda belleğin bir ucu veri bloklarını tutarken diğer ucu bu verilere işaret eden ofset dizisini saklayarak bellek verimliliğini üst düzeye çıkarıyor.
Bu özet yapay zekâ ile hazırlanmıştır; ayrıntılar ve doğrulama için orijinal kaynağa başvurun.