Veri odaklı tasarım - Data-oriented design

İçinde bilgi işlem, veri odaklı tasarım bir program optimizasyonu etkin kullanımıyla motive edilen yaklaşım CPU önbelleği, kullanılan video oyunu geliştirme.[1] Yaklaşım, veri düzenine, ayırmaya ve sıralamaya odaklanmaktır. alanlar ihtiyaç duyuldukları zamana göre ve verilerin dönüşümleri hakkında düşünmek. Destekleyenler arasında Mike Acton[2] ve Scott Meyers.[3]

Motifler

Bu yöntemler özellikle 2000'lerin ortalarında ve sonlarında popüler hale geldi. yedinci nesil video oyun konsolları dahil IBM PowerPC dayalı PlayStation 3 (PS3) ve Xbox 360 konsollar. Tarihsel olarak, oyun konsolları genellikle nispeten zayıf merkezi işlem birimleri (CPU'lar) en üst düzey masaüstü bilgisayar muadillerine kıyasla. Bu, daha fazla güç ayırmak için bir tasarım seçimidir ve transistör bütçesi için grafik işleme birimleri (GPU'lar). Örneğin, 7. nesil CPU'lar modern sıra dışı yürütme işlemciler, ancak bunun yerine kullanın sıralı işlemciler yüksek saat hızları ve derin boru hatları. Ek olarak, çoğu bilgi işlem sistemi türünün ana hafıza yüzlerce bulunan saat döngüleri uzakta işleme elemanları. Ayrıca, ana bellek kapasitesindeki büyük artışın yanı sıra CPU'lar daha hızlı hale geldikçe, büyük miktarda veri tüketimi söz konusudur. önbellekte eksik içinde paylaşılan otobüs, aksi takdirde olarak bilinir Von Neumann darboğaz. Sonuç olarak, referans yeri performansı kontrol etmek için, iyileştirme gerektiren yöntemler kullanılmıştır. bellek erişim modelleri darboğazları düzeltmek için. Bazı yazılım sorunları, aynı zamanda Itanium, gerektiren döngü açma önceden planlama için.

Nesne yönelimi ile kontrast

İddia şu ki geleneksel nesne yönelimli programlama (OOP) tasarım ilkeleri, zayıf veri yerelliği ile sonuçlanır, daha çok, çalışma zamanı polimorfizmi (dinamik gönderim ) kullanılır (bu özellikle bazı işlemcilerde sorunludur).[4][5] OOP, "kodu veriler etrafında organize ediyor" gibi görünse de, uygulama oldukça farklıdır. OOP aslında organize etmekle ilgilidir kaynak kodu etrafında veri tipleri tek tek alanları ve dizileri belirli işlevlere göre erişim için verimli bir biçimde fiziksel olarak gruplamak yerine. Dahası, genellikle yerleşim ayrıntılarını soyutlama katmanları veri odaklı bir programcı bunu her şeyden önce düşünmek ister.

Ayrıca bakınız

Referanslar

  1. ^ Llopis, Noel (4 Aralık 2009). "Veri odaklı tasarım". Veri Odaklı Tasarım (Veya Neden OOP ile Ayağa Kendinizi Vurabilirsiniz). Alındı 17 Nisan 2020.
  2. ^ "CppCon 2014: Mike Acton" Veri Odaklı Tasarım ve C ++"".
  3. ^ "code :: dalış konferansı 2014 - Scott Meyers: Cpu Önbellekleri ve Neden Önemsiyorsunuz".
  4. ^ "Nesne Tabanlı Tasarımın nesi var? Bunun zararı nerede?".sanal işlev çağrılarıyla ilgili sorunları açıklar, ör. i-önbellek eksiklikleri
  5. ^ "Veri odaklı tasarım - neden OOP ile kendinizi ayağınıza vuruyor olabilirsiniz".