Saçma sorular evet ama merak işte
Rica ederim, hiç de saçma sorular değil. Elimden geldiğince yanıtlamaya çalışayım.
İlk kez bottleneck durumu için CPU/anakart uyumunun önemli olduğunun belirtildiğini gördüm. Burada uyumdan kast edilen tam olarak ne oluyor? CPU ile birlikte çıkmış olan chipset'in kullanılması mı, CPU'nun tüm özelliklerinin anakart/chipset/bios tarafından desteklenmesi mi, CPU ve Ram'lerin iletişim hızı mı?
Hepsi, ve daha fazlası.
Son model "teknoloji harikası" bir
Ferrari satın aldığınızı varsayalım. Bu arabanın mekanik aksamını incelediğimizde; mükemmel bir motor, mühendislik harikası bir vites kutusu ve yılların tecrübesi ile test edilmiş kardan mili/diferansiyel/aks uyumu olduğunu kolayca görebiliriz. Elbette bu özelliklere, aerodinamik tasarım, konfor, estetik, vs. gibi unsurları da ekleyebiliriz... "Mükemmel" bir mühendislik harikası olan bu aracı teslim aldığınızı, ama
kabak lastiklerle yola çıktığınızı varsayalım. Elbette sonuç hayal kırıklığı olacaktır. Zira, milyon dolarlık arabanın yol tutuşu, performans zincirinin en zayıf halkası olan lastikler kadar sağlamdır!
Günümüz PC'lerinin durumu çok farklı değil. Performans dediğimiz şey, aslında "çok parametreli" bir fonksiyon. Her parametre önem arz ediyor. RAM'lerin ısısından tutun, anakart üzerinde gelen onboard bluetooth controller'ın açık/kapalı olmasına kadar
HER ŞEY performansınızı etkiler.
Kısacası örneğin bendeki i5-4590 ile Asus H97M-Plus anakartın tam uyumlu olduğunu nasıl teyit edebilirim?
Maalesef bu sorunuza verebileceğim bir "hap bilgi" mevcut değil. BIOS parametrelerini yalayıp yutmuş derecede tecrübeye sahip olsak bile, olay tamamen kullandığımız her donanımın birbiri ile uyumuna bağlı. Bu listenin en başında CPU ve anakart uyumu bulunuyor. Kurmak, test etmek ve benchmarking dışında pek seçeneğimiz yok. Elinizdeki işlemciyi (aynı saat frekansı ve ilintili parametrelerle) 3 farklı marka/model anakart ile test edin, ne demek istediğimi anlayacaksınız.
Ve de bu uyumun draw call'a etkisi ortalama ne kadar oluyor?
Sadece CPU/anakart uyumu sağlanmış bir PC'de, kabaca %5-10 arası CPU performans artışı elde etmek mümkün. Günümüz oyunları için örneklersem,
draw call ağırlıklı 1080p 60 fps'lik bir oyunda bu artışın ortalama olarak 4-10 frame'e denk geldiğini söyleyebilirim. (Doğrusal bir artış söz konusu değil, zira oyunun draw call trafiğine göre bu performans eğrisi değişim gösterir.)
"Draw Call" olarak adlandırılan süreç oldukça karmaşık. RAM'den 3D nesne verisinin okunması, bu veriyi işleyecek class'ın bulunması, bu class üzerinden 3D nesne için instance yaratılması, bu instance için RAM üzerinde belli bir yer allocate edilmesi, allocate edilen bu yerdeki structure'ların başlangıç değerlerinin atanması, ihtiyaç duyulan texture'ların RAM'deki yerlerinin tespit edilmesi, 3D nesnenin bu texture'lar ile birlikte
PCIe Lane'ler üzerinden grafik kartına gönderilmesi (ve elbette bu transfer işlemi sırasında CPU'nun başka iş yapamaması), nesne/texture gönderiminin tamamlanmasından sonra aynı işlemlerin o texture'lar ile ilgili shader'ların transferi için tekrarlanması, vesaire, vesaire... Bu işlemler her frame için binlerce (bazen onbinlerce) kez tekrar ediliyor. Ve bu işlemlerin tümü CPU tarafından gerçekleştiriliyor! Bu bağlamda, hiçbir parametre değiştirmeden sadece CPU/anakart uyumu ile elde edeceğiniz %5-10'luk performans artışı, kişisel görüşümce oldukça önem taşımaktadır.
Oyun projelerinin en zorlu dönemeci, "draw call", "texture", "HLSL complexity", vs. bütçelerinin belirlendiği toplantılardır. Bu toplantılarda verilen kararlar, çoğunlukla o gün piyasada bulunan işlemci/anakart/bellek/grafik kartı kombinasyonu üzerine yapılan bir ortalama üzerinden verilir. Bir diğer deyişle, "draw call" (ve benzeri parametrelerin) çıtası her proje ile birlikte biraz daha yukarı çekilir. Bu sebeple, bugün sahip olduğunuz PC'nin, 3 yıl sonra çıkacak bir oyunun draw call performansını karşılayamaması gayet doğaldır. Mevcut PC mimarisi değişmediği sürece, draw call meselesi gündemde kalmaya devam edecektir.
"Bu seneki Unreal Fest Europe'da sadece draw call optimizasyonuna odaklı 2 seminer vardı." dersem, umarım konunun önemiyle ilgili size bir fikir vermiş olabilirim.