PS3 Emülatörü RPCS3 Performansı Nasıl Artırılır?

Emülasyon yazılımları donanımın elektronik kısımlarından fazla, komutlara nasıl karşılık verdiği üzerine ağırlaşırlar. Kimi sistemler çok komplike olduğundan ötürü emülasyonu sağlayan donanımlar ortası sık sık irtibat gerekiyor ve PlayStation 3 de bu sistemler ortasında yerini alıyor. Her ne kadar RPCS3 bu yükü azaltacak algoritmalara sahip olsa bile genel olarak âlâ bir emülasyon tecrübesi için güzel bir donanım ve donanımı âlâ yönetebilen, hoş konfigüre edilmiş bir firmware gerekiyor. Çayınızı ve kahvenizi hazır etmeyi unutmayın, zira teknik bir sohbet edeceğiz ve başınızdaki soru işaretlerini mümkün olduğunca azaltacağız!
RPCS3’ün yüksek bellek performansı gerektirmesinin iki tane sebebi var.
- Cell işlemci emülasyonu: SPU’nun (bir nevi “Cell” işlemcinin “SIMD” uzantısı denebilir) ana belleğe erişimi, sürat kazandırmak ismine işlemci yerine DMA (Direct Memory Access – Direkt Bellek Erişimi) denetimcisi üzerinden yapılmaktadır. Bunu emüle etmek zordur, zira RPCS3’ün amaç olarak çalıştığı x86 mimarisinde DMA sistemi yoktur. x86 sistemlerde işlemci kullanılarak belli bir bellek adresine erişim sağlanmaktadır.
- RSX GPU emülasyonu.
RSX bellek süreçleri, RPCS3’ün kendi içerisinde indirme ve yükleme (download ve upload) olmak üzere ikiye ayrılıyor. Yükleme süreci; kaplamalar, shader kodları üzere dataların işlemciden GPU’ya taşınması sürecidir. Bu yükleme süreci, GPU şoförü tarafından asenkron ve ağır bir biçimde yığınlama (batching) kullanarak hallediliyor. Büyük oranda bilgi taşındığı için çok fazla PCI-E bant genişliği (bandwidth) kullanılıyor. RPCS3 ekibi bunu kullanıcılara hissettirmemek emeliyle çalışmalarını sürdürüyor lakin bu süreç RSX çipinin mimarisinde olduğundan ötürü zarurî. Bellekleriniz süratli değilse yahut eski bir PCI-E sürümü kullanıyorsanız, bu gecikmeyi hissedebilirsiniz.
İndirme süreci ise yükleme sürecinin aksisi bir biçimde, GPU’dan işlemciye bilgi transferi sürecine deniyor. Bu süreçte ise maalesef bellek gecikmesinin üzeri çok fazla örtülemiyor. Birçok vakit GPU belleğine işlemci tarafından ikaz verilmeden ulaşılıyor. Böylelikle GPU’nun istediğimiz bilgiyi işlemciye verip, PCI-E üzerinden karşılık alınmasını bekliyoruz. Hatta kimi oyunlar, daha sonra çok gereksinim duymayacakları bilgileri belleğe yazıyorlar, bu da daha fazla gecikme demek. Bundan ötürü RPCS3’te varsayılan olarak “Buffer options” ayarı pasif olarak geliyor ve o bellek adresinde hiçbir şey olmamışçasına davranılmasını sağlıyor.
GPU kullanımınız yüksek olduğu vakit RPCS3’ü kullanmamanız daha yeterli olacaktır. GPU’nuz bu bahsetiğimiz asenkron erişimlere yetişemeyebilir ve sonucunda düşük performans alabilirsiniz. Yani sistemde ekran kartını tek kullanan uygulamanın RCPS3 emülatörü olmasında yarar var.

RPCS3 grubu daha âlâ bir bellek iddia algoritmasından bahsediyor. Bu algoritma hayata geçirilebilirse işlemcinin erişebileceği bellek bloğunu iddia edip evvelce GPU komutlarını hazır hale getirecek, bu da biz kullanıcılara performans olarak yansıyacak. Öte yandan Resizable BAR (veya Smart Access Memory) teknolojisi sayesinde bu gecikmeyi azaltabileceğinizi belirtelim.
Teorik olarak bilgilendiğimize nazaran bu bilgimizi kıyaslama ile pratiğe dökebiliriz. Öncelikle kıyaslanan konfigürasyonları sahneye alalım:

Konfigürasyon öncesi AIDA64 profili.

Konfigürasyon sonrası AIDA64 profili.
Manuel olarak bellek ayarı yapmak, yahut XMP’yi etkinleştirmek üzere ince dokunuşlar yalnızca RPCS3 üzerinde değil, tüm uygulamalarda işinize çokça yarayacaktır. Böylelikle gecikmeyi azaltabilir ve bant genişliğini arttırabilirsiniz. (Minimum ve azamî FPS kıymetleri ortasındaki farka dikkat ediniz.):
| Konfigürasyon sonrası | Konfigürasyon öncesi |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
(Görselleri büyütmek için yeni sekmede açabilirsiniz.)
Birtakım bireyler PCI-e’nin hangi sürümünü kullandığını bile bilmiyor, ve bundan ötürü sürat düşüşleri yaşıyorlar. Aslına bakarsanız bu kriter, işlemci ile GPU’nun haberleşme suratını belirliyor. PCI-E sürümü ne kadar yeni olursa bant genişliği o kadar artıyor. Böylelikle GPU-işlemci ortasındaki data transferleri, daha süratli gerçekleşiyor.
| PCI-E 1.1 x16 | PCI-E 2.0 x16 | PCI-E 3.0 x16 |
![]() |
![]() |
![]() |
PCI-E sürümünün aktüel olmasının yalnızca RPCS3 üzerinde değil, birden fazla oyunda da işe yaradığını belirtelim. “Horizon: Zero Dawn” oyununun PC portu, GPU ile daima irtibat halinde olduğu için PCI-e standardının yeniliği oyun tecrübenizi etkileyecektir.
RPCS3, bilgisayarların hudutlarını zorlaması ile bilinen bir uygulama. Bahis overclock’a gelince beklenildiği üzere RPCS3’ün de performansı artıyor. Lakin Sandy Bridge ve üstü bir Intel işlemcide birden fazla kullanıcı ringbus overclock’lamayı bilmiyor.
RPCS3’te bellek kullanımı fazla olduğundan ötürü, L3 önbelleği de sık sık kullanılıyor. Bu yüzden ringbus frekansını arttırmak, transfer bant genişliğini arttıracaktır. Bu da bizlere FPS olarak geri dönecektir.
| 48x Cache | 40x Cache |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
Ayrıyeten RPCS3’ün AVX komut setlerinden faydalandığını belirtelim. AVX komut setlerini devre dışı bırakıp overclock yapan kullanıcılar performans düşüşü yaşayacaktır.
Nedir bu “ringbus”?
Sandy Bridge öncesi Intel işlemcilerde, her çekirdeğin özel L3 önbelleği temasları vardı. Bu da çekirdek başına yaklaşık 1000 sınır daha fazla yer kaplanması demekti. Bu yaklaşımın, L3 belleğine muhtaçlığın artması ile birlikte o kadar da güzel olmadığı gözlemlendi.

Ringbus sisteminin görselleştirilmiş hali.
Ayrıyeten Sandy Bridge mimarisine Intel, L3 belleğini paylaşan GPU ve görüntü transkodlama motoru koydu. Yaklaşık 1000 hat daha bağlamaktansa Intel, ringbus sistemi ile bu işi halletti. Böylelikle Intel, ortak bir çizgi üzerine işlemci çekirdeği ve transkodlama motoru üzere komponentleri bağladı.
AMD kullanıcıları ne yapmalı?
Evet, Intel’de olduğu üzere AMD’de bir ringbus sistemi bulunmuyor. Zira ringbus teknolojisinin patenti Intel’in elinde.
AMD işlemcilerde ise bunun yerine “Infinity Fabric” denilen alternatif bir teknoloji mevcut. DRAM denetimcisi, PCI-E denetimcisi üzere komponentlerin gecikme ve bant genişliğini bu teknoloji denetim ediyor. Infinity Fabric, konfigüre edilebiliyor ve sürat olarak bellek süratiyle 1:1 oranda çalışması optimal stabilite ve performans ayarı olarak geçiyor. Birtakım durumlarda 1:1 oranında çalışmadığı da olabiliyor, bu da gecikmeyi arttırabiliyor. Lakin 3600 MHz’in üzerindeki bellek suratlarında stabiliteden ödün verilerek genel manada bir performans elde etmek mümkün.
Bir çoğumuzun hatırladığı üzere, 2018’in başlarında Meltdown ve Spectre açıkları donanım dünyasını kasıp kavurmuştu. Çağdaş işlemcilerin daha süratli çalışmasını sağlayan kimi özelliklerde açık bulunmuştu, bundan ötürü bu özellikler kullanıcıların güvenliği ismine devre dışı bırakılmıştı. Kullanıcı güvenliği ismine çok düzgün bir adım olduğu su götürmez bir gerçek. Ancak daha fazla performans isteyen bireyler için performans azalması can sıkıcı.
RPCS3’ün performansı da bu süreç sonucu birebir öteki uygulamalarda olduğu üzere düşmüş durumda. Aşağıda bulunan görsellerde performans farkını görebilirsiniz.
| Muhafaza açık | Muhafaza kapalı |
![]() |
![]() |
Ryzen ve yeni kuşak Intel makinelerin üstte bahsedilen açıklardan yalnızca birinden etkilendiğini dipnot olarak düşelim. Ayrıyeten Technopat olarak bu muhafazaların kapatılmasını önermediğimizi ve yalnızca aklınızda bulunması ismine sizlere bu bilgiyi sağlamış olduğumuzu belirtelim.
Aşağıdaki fotoğraflarda bellek ve cache (ringbus) frekanslarını arttırdıktan sonra oluşan artışı görebilirsiniz.
| Optimizasyon öncesi | Optimizasyon sonrası |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
Donanım değişikliği yapmadan nasıl emülasyon performansınızı arttırabileceğinizden bahsettik. Şayet işlemciniz sizin emülasyon performansınızı düşük tutuyorsa, hangi işlemciyi alabileceğiz konusundaki soru işaretini giderebiliriz.
Aslına bakarsanız bu soru RPCS3’ün kendi sitesinde cevaplanmış bulunuyor. Ama bu özellikler, RPCS3’ün uyumluluk listesindeki oyunlar için önerilmiş. Şayet bu listede sıralanmayıp, oynanabilir olarak düşündüğünüz oyunları oynamak istiyorsanız; yeni bir işlemci alırken şu noktalara dikkat etmenizde yarar var:
- Kaç adet mantıksal işlemci (thread) var?
- Tek çekirdek performansı ne durumda?
- Oynamak istediğiniz oyunların TSX’e gereksinimi var mı?
RPCS3, işlemcideki “multithreading” özelliğini sıkça kullanan bir uygulama. O denli ki, kendi sitelerinde 16 thread’e kadar yüklüce bir halde kullanabileceği yazıyor. Ama 16 thread’in üzerine çıkılmasının çok fazla fark etmediği gözlemlenmiş. Bu tıp bir durumda ise tekli çekirdek performansı daha büyük bir kriter oluyor. Ayrıyeten 16 thread’in bir mecburilik olmadığını hatırlatalım; örneğin RDR ve başka kimi oyunlar için 8 çekirdek/8 thread bir işlemciden 8 çekirdek/16 thread bir işlemciye geçmek büyük bir fark oluşturmayacaktır.

Transactional Synchronization Extensions (TSX), donanımsal olarak işlemsel bellek setini (transactional memory) ekleyen bir komut setidir. Yani TSX komut setleri, belleğin bir modülüne eriştikten sonra bir süreci devam ettirmemize müsaade verir ama diğer bir süreç (veya öbür bir iş parçacığı) birebir belleğe erişirse, bellekte evvelki süreçte yapılan değişiklikler yok sayılır. Kısaca TSX, “mutex” sisteminin donanımsal olarak hızlandırılmış halidir.
İş parçacığı denetimi yapılmadığı vakit, “race condition” denilen durum oluşabilir. Yani bilgisayar birebir anda iki işi birlikte yapmaya çalışır. Bilgisayarın tabiatında bu türlü bir şey olmadığından ötürü problemler baş gösterir. Bu yüzden iş parçacığı denetimi yapılmalıdır. TSX komut setleri ise bu denetimleri donanım düzeyinde verdiğinden ötürü çok süratli bir biçimde iş parçacığı denetimi yapabiliriz.

TSX çok hoş gözükse de, üstte kelam ettiğimiz güvenlik açıkları sonucu kırpılmak zorunda kaldı. TSX dayanaklı işlemcisi olup Meltdown ve Spectre açıklarına karşı muhafaza güncellemesi alan kullanıcılar, RPCS3’ün emülatör log’larının ikinci satırında “TSX-FA” ibaresiyle karşılaşacaklardır. Bu da “Force abort“, yani zarurî durdurma manasına geliyor. Evvelden bahsettiğimiz üzere TSX, belleğin bir kısmını modifiye etmemize ve daha sonrasında süreci devam ettirmemize müsaade verse de, öbür bir süreç (thread) tıpkı bellek adresini modifiye ederse evvelki modifiyeyi yok sayar.
Zarurî yok sayma durumu ise açık zıddı microcode’un bu sürece müsaade vermemesinden ötürü kaynaklanıyor. Yok sayma sayıları artınca da, performansta düşüş baş gösteriyor. Bu durum Nekotekina isimli geliştiricinin uyguladığı “Fallback Path” ile çoğunlukla düzeltildi. Bu sayede, çok fazla yok sayma durumu yaşandığı vakit RPCS3 emülatörü, donanımsal mutex sistemi olan TSX uzantıları yerine yazılımsal mutex sistemine geçiyor.
Microcode güncellemesini elbette geri alabilirsiniz, ama güvenlik açıklarına karşı muhafazasız olacağınızı hatırlatalım.

TSX teknolojisinin patenti de tekrar Intel’in elinde. AMD bir vakitler ASF ismini verdiği alternatif bir teknoloji ile Intel’in TSX’ine baş tutacaktı ancak bu gerçekleşmedi. Bilhassa TSX’te bulunan açıkların tesiri bu durumda büyük rol oynuyor. Ayrıyeten “elad335” rumuzlu RPCS3 geliştiricisi, RPCS3’te kimi şeyleri değiştirdi. Böylelikle TSX olmayan işlemciler ile olanlar ortasında evvelce olduğu kadar performans farkı kalmadı. TSX’e geçiş artık getirdiği performans ve stabilite sayesinde tercihe bağlı hale geldi.
Oyunların büyük çoğunluğu TSX gerektirmiyor lakin birçok revaçtaki oyun için TSX kullanımı mecburî sayılabilir. Örneğin God of War III, God of War Ascension, Uncharted 2/3 ve The Last of Us üzere oyunlarda TSX komut seti sıkça kullanılıyor. TSX olmadığı vakit bu oyunlarda donma ve çökme sorunları sıkça baş gösteriyor. Bu da TSX komut setine sahip olmayan kullanıcılarda doğal olarak bir telaş uyandırabiliyor. Lakin RPCS3’te bulunan “Accurate RSX Reservations” ayarı, TSX komut setini de emüle edebiliyor. Bu alışılmış ki performans açısından TSX kadar süratli olmayan bir usul, ama bahsettiğimiz üzere TSX’i sıkça kullanan oyunlarda sizlere stabilite kazandıracaktır. Ayrıyeten “kd-11” rumuzlu geliştiricinin daha âlâ bir TSX emülasyonu üzerinde çalıştığını dipnot olarak belirtelim.
| TSX kapalı, eski TSX emülasyon metodu açık | TSX kapalı, yeni emülasyon metodu açık | TSX açık |
![]() |
![]() |
![]() |
TSX’e sahip olmayan işlemci kullanıcıları için yeni metod bizce çok güzel oldu. Bilhassa Intel’in 10.nesilde TSX’i kaldırdığını düşünürsek, gelecekte de bu metod işe faydalılığını koruyacaktır.
RPCS3 Discord sunucusunda, kullanıcıların kullandığı işlemcilerin kıyaslanması ve yeni işlemci alan şahısların soru işaretlerini gidermesi ismine istekli bir benchmark testi yapılmış. Bu test sonucunda çıkan grafik aşağıdaki üzere olmuş:

İşlemcilerin Red Dead Redemption oyunu içerisindeki kıyaslamaları.
Bu testlerde şu ayarlar kullanılmış:
- İşletim sistemi: Windows 10 2004
- SPU Döngü Algılaması (SPU Loop Detection): Devre dışı
- SPU Blok Boyutu (SPU Block Size): Mega
- Anti-Aliasing: Devre dışı
- Renderer: Vulkan
- Relaxed ZCull: Etkin
- Uyku Zamanlayıcı Bütünlükleri (Sleep Timers Accuracy): Ana makine ile tıpkı
- VBlank: 120 Hz (30 FPS limiti üzerine çıkmak gayeli etkin.)
Birçok kişi Ryzen 9 3950X’in nasıl olur da iki katı fazla çekirdek sayısı ve cache boyutu olmasına karşın Ryzen 7 3800X’in gerisinde kaldığını merak ediyor. Bunun sebebi ise, 3950X’te tıpkı Threadripper işlemcilerde olduğu üzere “çoklu die” bir dizaynın hakim olmasıdır. Bu yüzden de çekirdekler ortası gecikme oluyor.

Ormanda bir Threadripper’ın dört Ryzen 7 gücünde olduğu söylentileri gerçekmiş!
Başka yazılımlardan farklı bir formda RPCS3’te sanal PPU ve SPU iş parçacıkları daima olarak irtibat halinde olduğundan ötürü, bu iş parçacıklarının farklı die’larda olması büyük bir darboğaz oluşturuyor. Bundan ötürü die başına 3 yahut 4 çekirdeğe sahip olmadığı sürece Ryzen işlemcilerin kullanılması, RPCS3 tarafından pek tavsiye edilmiyor.
Tavsiye edilen Ryzen işlemciler ise; RPCS3, PPU ve SPU iş parçacıklarını tek bir die’a sığdırabileceği öngörülerek tavsiye ediliyor. Böylelikle gecikmenin de önüne geçiliyor. Her ne kadar öteki Ryzen işlemcilerde de artık bunun önüne geçiliyor olsa da, RPCS3 için hala büyük bir darboğaz demek. Ayrıyeten Microsoft’un da, Windows 10’un 1903 sürümünde Ryzen işlemciler için çoklu vazife zamanlayıcısını güncellediğini hatırlatalım.
Intel işlemcilerde ise bu türlü bir gecikme sorunu yok, zira Intel işlemciler tek bir die üzerinde çalışacak formda tasarlanıyor. Ayrıyeten Intel işlemcilerin tekli çekirdek performansının daha yüksek olduğunu düşünürsek, çoklukla neden AMD tarafında denk işlemcileri geçtiğini daha uygun anlayabiliriz.

i7 8700K işlemcideki die.
Bunlarla birlikte, i9 9900KS ile i9 9900K’nın ortasındaki 5 FPS’lik fark çoğunlukla saat suratından ötürü olsa da, daha büyük önbellek boyutu ve daha süratli bellekler bu farkın oluşmasında tesirli. Red Dead Redemption’ın bu şekil ayrıntılara bayıldığını üstte görebilirsiniz.
Özet
Bu yazımızda sizlere RPCS3’ün emülasyon performansını nasıl arttırabileceğinizi teknik ayrıntılar ile bir arada anlattık ve Technopat’lar için okuması pek keyifli bir yazı ortaya çıktı! Aklınızda kalan soru işaretlerini Technopat Toplumsal üzerinden sorabilir, eklemek istediğiniz bir şey olursa yorumlar kısmında bizimle buluşabilirsiniz!
Kaynak: Technopat
















