Europa Universalis IV geliştirici günlüklerinde bu hafta 64-bit’in avantajlarından bahsediliyor.
Merhaba, ben Lorenzo, EU4’te programcı olarak çalışıyorum. 2 hafta önce 64-bit’e geçeceğimizden ve 1.28.3’ün 32-bit destekleyen son sürüm olacağından bahsetmiştik.
64-bit dediğimizde AMD tarafından geliştirilip özellikleri 2000 yılında yayınlanan x86-64 işlemci mimarisinden bahsediyoruz. İlk x86-64 işlemcisi olan AMD64 Opteron ise 2003 yılında çıkmıştı.
X86-64 mimarisinin avantajlarını ise 3 noktada özetleyebiliriz:
Genişletilmiş Adres Uzayı
64-bit uygulamalar 4 GB RAM’den fazlasını kullanabilir. EU4’te genişlemeyi ne kadar sevdiğinizi düşünün. İşlemciler de RAM için aynısını hissediyor.
Kapasite Artışı
İşlemcinin, 32-bit mimarilerde yapılması çok masraflı olan önemsiz işlemlerin yapmasını sağlayan 64-bit yazmaçlar (register) ve 64-bit’lik işlenenler vardır. Paris’ten Pekin’e giden yolu göz açıp kapayıncaya kadar bulmak gibi diyebiliriz.
Daha Fazla Genel Amaçlı Yazmaç
64-bit derleyiciler (compiler) fazladan yazmaçları kullanarak uygulamaları daha iyi optimize edebilir. Rusya’nın daha hızlı Streltsy çıkartabilmesi gibi diyebiliriz.
Bunların yanında teknik olmayan bir avantaj daha var, o da destek. Microsoft eski teknolojiye Apple kadar karşı olmasa bile mantıklı olarak daha yeni ve daha fazla kullanılan mimari üzerinde daha çok çabalıyor. 32-bit araçlar hala görevlerini güzel bir şekilde yapsalar da 64-bit olanlar ile yeni donanım özelliklerini kullanabiliriz, daha az bug ile karşılaşırız ve daha iyi performans alırız.
Peki 64-bit’in oyuna olan etkisi ne? Oyun birden bire 2 kat hızlanmayacak veya oyuna farklı özellikler gelmeyecek. Yeni mimariye geçmemizin başlangıçta pek bir etkisi olmayacak. Ancak gelecekteki geliştirmeler için bir temel kuracak ve böylece biz programcılar zamanla işlemcilerin daha iyi kullanılmasını sağlayabileceğiz.
Bununla birlikte en çok sorulan sorulardan birine cevap verelim. Multithreading (çoklu kullanım) ne zaman gelecek? Bununla ilgili yanılgılar uzun süredir devam ediyor. Multithreading’de işlemci çekirdeklerinden daha iyi faydalanılır ve bir şey aynı anda birkaç çekirdek tarafından yürütülebilir. Fakat çekirdeğin neyi ne zaman yürüteceği işletim sisteminin kontrolünde. Multithreading’de bu nedenle görevleri aynı anda yürütmenin getirdiği performans artışı ile senkronizasyon eksikliğinin getirdiği performans düşüşünü dengelemek önemlidir. Bu dengeyi sağlamak özellikle EU4’te çok zor çünkü hesaplanacak birçok şey var ve hesaplanan şeylerin çoğu da yapay zekanın davranışını belirliyor.
Yükleme, bilgiyi işleme, önbellek hesaplamaları, yapay zeka davranışının çoğu paralel olarak yürütülebilir. Ancak her şey paralel olamaz. Bir şeyin bir şeyden önce yürütülmesi gereken durumlar gibi. Birbirine bağlı bu işlemlerin paralel yürütülmesi tutarsız hesaplamalar meydana getirir. Bu tutarsızlık ise oyunun kapanmasına yol açabilir.
Programcıların odaklarından biri yeni özellikler eklerken en iyi performansı elde etmeye çalışmaktır. Multithreading zaten kullandığımız bir araç ve kullanmaya da devam edeceğiz.