PlayStation 2'nin Mimarisi

Rodrigo Copetti tarafından hazırlanan pratik bir analiz

Annayo ve EuropaYou tarafından çevrildi

Orijinal makalenin tamamen gönüllülük esasına dayalı bir çevirisidir. Herhangi bir hata bulursanız, lütfen düzeltilmesine katkıda bulunun. Teşekkürler!

Erişilebilirlik araçları veya eski tarayıcılar kullanıyorsanız, 'klasik' sürüme geçin.




Destekleyici görüntüler

Model

Image
Orijinal PlayStation 2.
Piyasaya sürülme; 04/03/2000'de Japonya, 26/10/2000'de Amerika ve 24/11/2000'de Avrupa

Anakart

Image
Anakart
Sadece Japonya'da pisayasa sürülen SCPH-10000 Modelinin 'GH-001' revizyonu gösteriliyor.
Aldığımız bağışlar sayesinde, bu modeli satın alıp, Çiplerin büyük çoğunluğunu tespit edebilmemi sağlayan bir fotoğraf çekebildim.
Sağ alt köşedeki çipin 4 MB BIOS ROM olduğunu tahmin ediyorum
Image
Önemli parçaları etiketlenmiş anakart

Diyagram

Image
Ana mimari diyagramı
Orijinal dizayn (revizyon 'SCPH-10000'de uygulanan hâli).
Her veriyolu için genişliği ve hızı üstüne yazılarak gösteriliyor.
Bu mimari birçok revizyona uğradı, aşağıda daha fazla detaylandırılacak

Kısa bir giriş

PlayStation 2, neslinin en güçlü konsollarından biri değildi. Ne var ki diğer şirketlerin hayal bile edemeyeceği bir popülerlik seviyesine ulaşmayı başardı.

Bu makine, Orijinal PlayStation’ın basitliğine yakın bile değildi ancak neden önceki karmaşık konsollarla aynı kaderi paylaşmadığını irdeleyeceğiz.


İşlemci (CPU)

Bu konsolun özünde, Emotion Engine ya da ‘EE’ denilen, Toshiba ve Sony tarafından [1] ortaklaşa dizayn edilen, ~294.91 MHz’de çalışan güçlü bir paket (çipler bütünü) görüyoruz [2].

Image
Emotion Engine, bu konsolun ilk anakart revizyonunda.

Çipset, sayısız bileşen içeriyor ve bunlardan biri de Ana İşlemci (CPU). Geri kalan kısımları ise belirli görevleri hızlandırmak için CPU’nun kullanımındadır. Bu analiz için EE’yi üç kısma ayıracağız:

Çipteki Lider

Kısaca açıklarsak, Ana İşlemci, bu konsol için özel tasarlanmış bir MIPS işlemci çekirdeği olan MIPS R5900. Belki hatırlarsınız ki Sony, daha ilk PlayStation’dan (ikincil kaynak olan LSI’den alınan MIPS R3000A’yı görüyoruz) MIPS silikon çipiyle risk almıştı. Sonraki nesilde ise MIPS ’R5900’le karşılaşıyoruz… ancak bu isim bizim için ne ifade ediyor?

Yeni sayıların ardında yatan şeyi anlamak için o dönemi kuşatan bir tarihî anlatıya bakalım.

Diğerlerini aşan başarı

MIPS R4000, yakın rakibi de dahil olmak üzere çok çeşitli sistemler tarafından benimsenen popüler bir işlemci serisiydi. Başarısı sayesinde MIPS, halka tek seferde pahası karşılanamayacak düzeyde gelişmeler (64-bit bilgi işleme, 8 aşamalı pipeline ve dahasını) getirdi.

İleri sararsak, sonraki büyük sıçrama 1995’te, R10000’in piyasaya sürülmesiyle gerçekleşti. Bu tarihte MIPS, SGI’ın maddî yatırımıyla, R4000’in paralellik kâbiliyetini çok ileri taşıdı ve ilk kez şunun gibi teknikler ortaya çıktı [3]:

  • Speculative execution: CPU, hesaplanmadan önce conditional branch sonucunu tahmin eder. Bu öngörüler, dâhilî 512 girdilik bir tabloda saklanan önceki işlemlerin sonuçlarına göre gerçekleştirilir. Koşul hesaplandığında, eğer öngörü doğru ise, İşlemci önemli zaman kazanmış olacak. Yok değilse, ekstra hesaplamalar yok edilir.
    • Bu sayede MIPS, sonunda sürekli tekrar eden bir sorunu (control hazards) bir avantaja çevirdi.
    • Diğer işlemcilerde ise dynamic branch prediction olarak anılan benzer bir işleyiş biçimi görebilirsiniz.
  • 4-çıkışlı süperskaler pipeline: Pipeline tasarımına ek olarak, CPU artık pipeline’ın başlangıcında dört adede kadar talimat getirecek ve bunları ayrı birimlere dağıtarak CPU’nun bu talimatları aynı anda yürütmesini sağlayacaktır. Bunu yapmak suretiyle, İşlemci, daha üst derecede bir paralelliğe erişir.
  • Out-of-order execution: Ayrıca İşlemci, birimlerini olabildiğince doldurmak için talimatların sırasını da yeniden düzenleyecek (hazard eklenmediği sürece).
  • 128-bit’lik veri yoluna sahip L2 önbelleği, aynı anda İşlemciye daha fazla veri çekmeyi mümkün kılar, bu da önceki geliştirmeler göz önüne alındığında bir gerekiliktir.

Böylesi bir yenilik, karmaşık bir dizayna mâl olur ancak sonuçta ortaya çıkan ürün, her şekilde ucuz değildi. SGI, bunu sadece üst düzey ekipmanlarla bir bütün hâlinde satıyordu ve bunu bir ev konsoluna taşımaya çalışmak söz konusu bile olamazdı.

Halk’a sunulan Üst düzey

R10000’in ticârî kısıtlamalarının çoktan farkına varmış olan SGI/MIPS, Quantum Effect Devices’ı (QED), R10000’in orta ve düşük seviye pazar için makul fiyatlı bir versiyonunu geliştirmesi için işe aldı. Eski MIPS çalışanları tarafından kurulmuş bir şirket olan QED, MIPS çekirdeklerinin bütçeye uygun sektör için varyantlarını dizayn ediyordu.

Nihayet, QED, R5000 adlı yeni bir işlemci çekirdeği ile döndü; bu, R10000’in kayda değer kesintilere uğramış hâliydi [4]:

  • Sırasız yürütme özelliği, sıralı yürütmeye geri döndürülmüştü.
  • Speculative execution kaldırıldı.
  • Süperskalerlik iki tâlimatla (2-çıkışlı) kısıtlandı ve artık tam sayı tâlimatları paralelize edilmiyordu. Yine de kayan noktalı (floating point) tâlimatları diğerleriyle eşlenebiliyordu.
  • Önceki eksiltmeler sebebiyle, L2, 64-bit veriyoluna indirildi.

Sonuç olarak bu, SGI’ın düşük bütçeli iş istasyonları gibi enerji (güç) tasarruflu donanım için ideal bir İşlemci hâline geldi. Her halükarda, QED’in vektör/3D uygulamaları için cazip bir ürün olarak tutmayı planladığı gibi, küçültülmüş pipeline’ın hala eşzamanlı kayan nokta işlemleri gerçekleştirdiğini unutmayın. Yakında başka bir şirketin de bunu hızla not ettiğini göreceksiniz.

İlave not olarak, ilginçtir ki okyanusun öbür ucunda da benzer geliştirmeler vardır fakat aksi yönde: ARM çiplerini üst düzey pazara taşımak uğruna ARM, DEC ile güçlerini birleştirdi.

Sony’e özel bir sipariş

Toshiba bir süredir MIPS lisansı sahibiydi [5] ve MIPS varyasyonları ve paketleri üretmeye yabancı değildi. Bir noktada Sony ve Toshiba, Sony’nin yakında çıkacak konsolu için özel olarak tasarlanmış bir CPU üretmek üzere güçlerini birleştirdi. Bu Toshiba için muazzam bir avantajdı: CPU’ların çoğu zaman farklı paydaşlardan gelen çok sayıda gereksinimi karşılaması gerekir ve bunu yaparken uzmanlaşmaya yönelik fırsatları kısıtlar. Artık sadece tek bir amaç vardı: 3D oyun. Böylece her türlü yenilik için yeterli alan sağlanmış olur.

Bununla birlikte Toshiba, uygun fiyatlı R5000 tasarımını aldı ve vektör işlemlerini hızlandırmak için ince ayar yaptı. Yeni çekirdek R5900 olarak adlandırılıyor ve aşağıdaki ‘3D’ geliştirmeleri sunuyor [6]:

Bunların yanı sıra, geliştiricilerin hoşuna gidebilecek başka iyileştirmeler de buluyoruz:

Çekirdek, 32-bit kayan noktalı sayılarla (C’de float olarak da bilinir) olan işlemleri hızlandıran bir ayrılmış kayan nokta işleme birimi (‘COP1’ olarak adlandırılır) ile tamamlanmıştır. Bu alışılmadık bir parçadır çünkü IEEE 754 standardını takip etmez ve bunun en bariz olanı infinity değerinin olmayışıdır (bunun yerine 0 hesaplanır) [7]. Bunun dışında 32 adet 32 bitlik register’a sahiptir.

Tanıdık bir hafıza seçimi

Emotion Engine’in yanında iki adet 16 MB RAM bloğu olmak üzere toplam 32 MB ana hafızası vardır. Kullanılan hafızaya 16-bit veri yolu ile ulaşılıyor, türü ise RDRAM. (dejavu!).

Image
Emotion Engine’in bellek dizaynı. Tıkanıklığın nerede ortaya çıkacağını tahmin edebilirsiniz.

İlk başta, bunu duyması biraz hayal kırıklığı yaşatabilir zira bunun aksine Emotion Engine’in dahili veriyolu 128-bit gibi büyük bir genişliğe sahip. Ancak, RAM çipleri; iki çipi bağımsız iki 16-bit veriyolu (her çipe 1 veriyolu) ile bağlamak suretiyle elde edilen çift kanallı mimariyi kullanacak şekilde stratejik olarak konumlandırılmıştır. Ortaya çıkan kurulumla teorik olarak 3,2 GB/sn’lik bir hız elde edilir, dolayısıyla hafıza gecikmesinin bu konsolda bir sorun olmayacağından emin olabilirsiniz!

Emotion Engine’in köşesinde, ana hafıza ile Karalama belleği arasında ya da ana hafıza ile EE içindeki bileşenler arasında veri transferi yapan güçlü bir Doğrudan Bellek Erişimi Kontrolcüsü (DMA Controller) ya da ‘DMAC’ var.

Veri aktarımı 128-bit’lik öbekler halinde yapılır fakat işin ilginç kısmı: Her sekiz öbekte bir ana veriyolunun kilidi geçici olarak açılır. Bu, paralelde (10 adede kadar) diğer DMA aktarımları ya da İşlemci’nin (CPU) ana veriyolunu kullanabilmesi için kapı aralar. Bu işleyiş biçimi (modus operandi) için dilim modu (slice mode) denir ve bu DMA birimindeki birçok mevcut moddan biridir. Şunu aklınızda bulundurun ki dilim modu, ana veriyolundaki gecikmeleri azaltmayı, DMA transferi genelinde bir yavaşlama pahasına yapar.

Geçmiş aksiliklerin önlemesi

İstesek de istemesek de Emotion Engine’in içinde meydana gelen trafiğin büyüklüğü sebebiyle, bu dizayn, sonunda Birleşik Hafıza Mimarisi ya da kısa adıyla UMA’nın getirdiği sonuçlardan muzdarip olacaktır. Şöyle ki: Birden çok bağımsız bileşen, ana hafızaya aynı anda eşirmeye çalışıp tıkanıklığa sebebiyet verecek. Aslında bu sorunu düzelmek için Sony, devamlı hafıza ihtiyacını şu yollarla hafifletti:

Bu, önbellekten yararlanabilecek uygulamalar için çok elverişli görünebilir ancak ya Görüntü Listeleri’ni (Display Lists) manipüle etme gibi önbelleği kullanmaması gereken işlemler ne olacak? Neyse ki İşlemci, sadece ve sadece Geri Yazma Arabelleğini kullanan Önbelleksiz (UnCached) Mod adlı bir diğer hafıza erişim moduna sahiptir. Böylelikle Önbelleği (Önbellek kayıplarını) düzeltmek için İşlemci döngüsü heba edilmez.

Dahası, Önbelleksiz hızlandırılmış mod da mevcut. Bu mod, hafızadaki ardışık adreslerin okunmasını hızlandırmak için bir arabellek ekler.

Diğer ilginç parçalar

Aynı Emotion Engine paketinin içinde, Image Processing Unit veya ‘IPU’ adı verilen ve bu kez image decompression için tasarlanmış bir işlemci daha bulunuyor. MDEC’nin halefi olan IPU, bir oyunun MPEG2 görüntülerini (movie) Ana İşlemciyi (CPU) meşgul etmeden çözmesi gerektiğinde kullanışlı olabilir.

Uzun lafın kısası, oyun, sıkıştırılmış görüntü akışını IPU’ya (umarız DMA kullanarak) gönderir ve bu GPU’nun (Grafik İşlemci) ekranda gösterebileceği bir formata çevrilir. Ayrıca PS2’nin İşletim Sistemi de DVD oynatma için IPU’dan istifade eder.

Son olarak, IPU ayrıca sıkıştırılmış Yüksek çözünürlüklü dokuları da işler. Bu da işlemci kullanımını ve büyük transferleri azaltır.


Yardımcı İşlemciler (Co CPU’lar)

Rakipleri son ürünlerini piyasaya süreli iki yıl olmuştu. Önceki makalemizi okuduktan sonra bu makaleyi okumaya okumaya başladıysanız, tahminimce PS2’yi o zamanlarki gücüne kavuşturan ‘o şeyi’ görmeyi hâlâ bekliyorsunuz. Öyleyse, müsaadenizle, Sony’nin Emotion Engine’e sığdırdığı, çok önemli bir bileşen setini sizlere duyurayım: o güçlü Vector Processing Units veya ‘VPU’.

Mimari

Vektör İşlem Birimi, vektörleri ve bilhassa dört kayan noktalı (float) sayıdan oluşan vektörleri işlemek için tasarlanmış küçük bağımsız bir işlemcidir. Bu işlemciler o kadar hızlıdırlar ki işlem başına tek döngü harcarlar, bu ise vektör işleme için aşırı elverişlidir. Buna karşın CPU’nun FPU’suyla aynı standart dışı (IEEE 754’e uymayan) davranışı sergilerler.

VPU’lar aşağıdaki bileşenlerden oluşur:

İşlevsellik

Vektör biriminin çalışması için ‘başlatılması’ gerekir. Ana İşlemci, bu iş için olan mikrokodu sağlamaktan sorumludur.

Emotion Engine’in içine konmuş iki VPU vardır ancak bunlar farklı şekilde ayarlanmış olup, farklı kullanım ve optimizasyonlara elverişlidirler.

Vector Processing Unit 0

Image
VPU0 Mimarisi.

İlk VPU yani VPU0, CPU ile diğer vektör birimi (VPU1) arasında konumlandırılmıştır. Ana işlemciye ‘yardımcı’ rolde bulunur.

VPU0, iki adet işlem moduna sahiptir:

  • Mikro Mod: Bu mod ‘geleneksel mod’dur. VPU, Mikro Hafıza’da bulunan bir mikroprogramın ’mikro talimatlarını’ bağımsızca yürütecektir.
  • Makro Mod: VPU0, CPU için ’COP2’ye (Yardımcı İşlemci 2’ye) dönüşür ve belli bir 128-bit veriyolu aracılığıyla CPU’dan alınan ’makro talimatlar’ı çalıştırır.
    • Makro talimatlar, micro talimatlarla aynı işlevselliğe sahiptir ancak farklı opcode’lar (assembly kodları) kullanır. Buna rağmen, VPU yürütme birimi artık ayrık değildir (yani aynı zamanda sadece 1 talimat yürütebilir).
    • Bu mod VPU0’ın tüm bileşenlerinden tamamen yararlanamasa da CPU’nun vektör işlemlerini hızlandırmaya devam eder. Üstelik, basitlik açısından, bir yardımcı işlemciyi programlamak, bağımsız bir birimi programlamaktan daha kolaydır (bilgisayar programlayıcıları bunu kullanışlı bulacaktır).

VPU0’ın memory map’i, muhtemelen durumunu kontrol etmek veya diğer VPU tarafından yapılan bazı işlemlerin sonuçlarını hızlı bir şekilde okumak için diğer VPU’nun bazı register’larına ve flag’lere da erişebilir.

Vector Processing Unit 1

Image
VPU1 Mimarisi.

Mevcut ikinci VPU, yani VPU1 ise VPU0’ın dört katı mikro hafıza ve VU Hafızasıyla yükseltilmiş bir versiyonudur. Dahası, bu birim Elementary Function Unit ya da ‘EFU’ adı verilen; üstel ve trigonometrik fonksiyonların yürütülmesini hızlandıran ilâve bir bileşen içerir.

VPU1 konum olarak, VPU0 ve (GPU’ya çıkan kapı olan) Grafik Arayüzü’nün arasında bulunur, bu sebeple, ana veri yolunu kullanmadan ve olabildiğince hızlı şekilde GPU’yu geometriyle beslemek için ekstra veri yolları içerir.

Öte yandan VPU1, konumu gereği, sadece mikro modda çalışır.

VPU’nun trigonometrik işlemler için dizayn edildiği çok açık ve GPU için bir ön işlemci olarak hizmet edebilir. Genellikle bu sebepten, meşhur Görüntü Listeleri’ni teslim etmekle yükümlendirilir.

Sonsuz dünyalar

Bu birimlerden kullanışlı bir şekilde istifâde etme yöntemi de prosedürel oluşturmadır. Diğer bir ifadeyle, sahneyi, önceden kodlanmış geometri (yer ve nesne şekilleri) ile oluşturmak yerine, VPU’nun bunu algoritmalar kullanarak oluşturmasına izin vermektir. Bu durumda VPU, geometriyi matematiksel fonksiyonlar hesaplayarak oluşturur ve daha sonra bunlar GPU tarafından çevrilip (örn. üçgenler, çizgiler ve dörtgenlere), en nihayetinde sahneyi çizmek için kullanılır.

Kesin bir biçimde yazılmış verileri kullanmakla kıyaslandığında prosedürel içerik, paralelize edilmiş görevler için idealdir, çok az depolama gerektirir ve değişkendir (programlayıcılar parametrelerle oynayarak farklı sonuçlar elde edebilir) [8]. Pek çok alan bu teknikten son derece yarar sağlayabilir:

Öte yandan prosedürel içerik, animasyonlarda sıkıntı oluşturabilir ve hattâ algoritma çok karmaşıksa VPU geometriyi (üç boyutlu şekli) gereken zamanda oluşturamayabilir.

Özetle, prosedürel işleme (procedural rendering) yeni bir teknik değil, ancak VPU’lar sayesinde daha fazla optimizasyon ve daha zengin grafik olanaklarına kapı aralıyor. Her şeye rağmen bu uygulaması kolay bir teknik değildir ve Sony Ar-Ge, konsollarında kullanılmak üzere farklı yaklaşımları izah eden bir çok belge yayınlamıştır.

Gidişâta sen karar vereceksin

Bu yeni eklemelerle, programlayıcılar artık kendi grafik motorlarını tasarlamak konusunda oldukça esnek davranabilirler. Buna yardımcı olmak adına Sony, verimli boru hattı (pipeline) tasarımları ortaya çıkarıp bunları belgelemek için ekstra kaynak harcadı. Aşağıdakiler, farklı iş yükü çeşitleri için optimize edilmiş grafik boru hattı örnekleridir [9]:

Image
Paralel boru hattı (pipeline) dizaynı.
Image
Seri boru hattı dizaynı.

Birinci örnekteki Paralel diazyn için; İşlemci, makro moddaki VPU0 ile takım hâlindedir ki VPU1 ile paralel olarak geometri işleyebilsin. CPU&VPU0 grubu, VPU1’in ana hafızadan veri aldığı yol olan ana veri yolunu kullanmaktan kaçınmak için, karalama belleğinden ve önbellekten tamamıyla istifade eder. Sonuç olarak, her iki görüntü işleme grubu da aynı anda kendi payına düşen Görüntü Listelerini GPU’ya gönderir.

İkinci örnekte görülen Seri dizayn ise, CPU&VPU0 grubunun VPU1 için bir ön işlemci olarak çalıştığı bir diğer yaklaşımı öne sürer. İlk aşama, geometrinin tümünü alıp işlerken, VP1 ise peşi sıra bunları Görüntü Listelerine dönüştürür.

Şu ana kadarkiler teorik açıdan örneklerdi ancak daha ‘gerçeğe uygun’ bir uygulanışı anlatması açısından, Jor Burton’un kendi yaptıkları PS2 oyunlarından birine ilişkin yayınladığı bir videoyu referans verebilirim [10].

Image
Crash Bandicoot: The Wrath of Cortex (2001). Partiküller, mumun alevini ve pencere camından sızan ışığı meydana getiriyor.

Traveller’s Tales’in eski yönetmeni, takımının nasıl tamamen VPU1’in içerisinde olan bir partikül sistemi oluştırmayı başardığını açıkladı. Kısaca anlatmak gerekirse, VPU1, önceden oluşturulmuş bir veri tabanını VU Hafızasından okumaya odaklandı. Bu veri tabanı, her an, başka bir bileşene ihtiyaç duymadan partiküllerin koordinatlarını hesaplamada kullanıldı. İşlemin sonucu doğrudan Görüntü Listelerine dönüştürülüp gönderilebildi.

Bu yaklaşımla, CPU büyük ölçüde yükten kurtuldu ve yapay zeka ve fizik işleme gibi diğer işlemleri halledebildi.

Başka bir çok örnek anlatılabilir ancak işin özü: Şu halde en uygun düzeni oluşturmak programlayıcıya bağlı ve bu da iyi bir şey.


Grafikler

Emotion Engine tarafından yapılan tüm bu işler göz önüne alındığında, geriye bir şey kaldı mı? İşte kalan son adım: Görüntüleme!

Image
Final Fantasy X (2001).

Tam da bu iş için özelleştirilmiş, basit fakat hızlı bir çip mevcuttur: Grafik Sentezleyici (Graphics Synthesizer) ya da ‘GS’ ve bu ~147.46 MHz’de çalışıyor. Görüntü işlemenin tümünü kendi içinde halledebilmek için 4 MB DRAM’i gömülü olarak içerir. Böylece, ana hafızaya erişim ihtiyacı ortadan kalkar. Gömülü RAM (eDRAM), ihtiyaç duyulan veri türüne göre farklı veri yollarıyla bağlanmıştır.

GS, bu sitede daha önce ele anınan diğer grafik sistemlerinden daha az özelliğe sahiptir. Buna rağmen, yaptığı işte oldukça hızlıdır.

Mimari ve Tasarım

Bu GPU, sadece rasterizasyon yapar ve bu da… Pikselleri oluşturma, dokuları kaplama (texture mapping), ışık ve diğer diğer bazı efektleri uygulamadır. Bu demek oluyor ki vertex dönüşümleri yapamaz (bunlar VPU’larca üstlenilir). Ayrıca bu, sabit işlevli bir boru hattıdır yani hayal gücünüze kalmış ince ayarlar çekilemez ya da gölgelendiriciler (shader) yoktur, sâbit bir gölgelendirme modeline saplanmış durumdasınız (bu model örn. Gouraud Shading’dir).

Image
Grafik Sentezleyici’nin boru hattı dizaynı

Oldukça basit görünüyor, değil mi? Öyleyse, daha derinlere dalıp her bir aşamada neler döndüğüne bakalım.

Ön İşleme

Image
Ön İşleme aşaması.

Emotion Engine, Grafik Sentezleyiciyi, gömülü DRAM’ini gerekli malzemelerle (Texture bitmap’ler ve ‘CLUT’ olarak da bilinen Colour Lookup Table’lar ile) doldurarak tezelden başlatır, GS’yi onun işlemci kayıtlarına değerler atayarak yapılandırır ve son olarak GS’ye ekranın belirli konumlarına temel şekilleri (noktalar, çizgiler, üçgenler, sprite’lar, vb.) çizmesi talimatını veren çizim komutlarını (Görüntü Listeleri) gönderir.

Ayrıca, GS, ileriki hesaplamalarda gerekecek olan bazı değerleri de ön işler. En kayda değer olanı, çizimler sırasında interpolasyon için kullanılacak olan Digital Differential Algorithm (Sayısal Türev Alma Algoritması) değeridir.

Pikselleştirme (Rasterisation)

Image
Pikselleştirme (rasterisation) aşaması.

Önceden hesaplanmış olan verileri kullanarak, işleyici (renderlayıcı), temel şekilleri (çizgi, üçgen vb.) kullanarak pikselleri oluşturur. Bu birim eş zamanlı olarak 8 piksel (dokularla) ya da 16 piksel (dokular olmadan) oluşturabilir. Her piksel girdisi, aşağıda sıralanan hesaplanmış özellikleri içerir:

  • RGBA: Kırmızı, Yeşil, Mavi ve Alfa (Opaklık) geçişlerine karşılık gelir. (İng. Red, Green, Blue, Alfa’nın baş harfleridir).
  • Z değeri: Sonraki aşamalarda derinlik analizinde kullanılır.
  • Sis: İsteğe bağlıdır, ortamda sis simüle etmeye yarar.
  • Doku Özellikleri: Dokunun (texture) DRAM’deki adresini ve sonraki aşamada kullanılmak üzere dokunun (koordinat, level of detail yani detay seviyesi, filtre ve) sair özelliklerini barındırır.

Ayrıca çerçeve dışında kalan çokgenleri kesip atmak için Scissoring Testleri de gerçekleştirir (X, Y değerlerini baz alır) ve bazı piksel özellikleri daha ileriki kontroller için ‘Piksel Testi’ aşamasına intikal eder. Ayrıca, Işıklandırma da (İng. Lightning) mevcut iki seçenekle gerçekleşir: Gouraud ve Flat (yani Düz).

Paket, ‘Doku Kaplama’ (Texture Mapping) motoruna taşınır, ancak her özellik, ilgili iş için özelleştirilmiş bir ‘alt motor’ tarafından işlenir ve bu, farklı özelliklerin paralel olarak işlenmesine imkân verir.

Doku Kaplama

Image
Doku kaplama aşaması

Bu aşama, her seferde 16’ya kadar pikseli işleyebilen geniş bir Piksel Birimi tarafından gerçekleştirilir, burada dokular çokgenlerin üstüne kaplanır (bunlar artık pikseldirler). Dahası, sis ve kenar yumuşatma (anti-aliasing) efektleri de burada uygulanır.

Doku haritaları, DRAM’in Doku Arabelleği olarak adlandırılan bir bölümünden getirilirler, kaldı ki bölümle de Doku Sayfa Arabelleği denilen ayrı bir yer sayesinde bağlantı kurulur ve bu, dokular için bir önbellekleme mekanizması görevinde gibi görünüyor. Ayrıca CLUT’lar da bu sayfa sistemiyle haritalanır. Her iki eleman da 512-bit veri yolu kullanılarak taşınıp alınır.

Piksel Birimi, temel şekiller üzerine dokuları giydirirken perspektif düzeltme gerçekleştirir (önceki kosoldaki affine mapping yaklaşımına göre fevkalâde bir iyileştirme). Dahası, bilineer ve trilineer filtreleme de gerçekleştirebilir ki bunlardan ikincisi, mipmap’lenmiş dokularla beraber kullanılır.

Testler

Image
Piksel Testi aşaması

Burada, belli pikseller, eğer birtakım gereksinimleri karşılamazlarsa atılırlar. Konusu açılmışken, bu işlem için aşağıdaki testler uygulanır:

  • Alpha Testi: Bir pikselin alpha (transparanlık) değerini, onun ‘standart’ değeriyle kıyaslar. Sebebi ise bazı durumlarda, alpha değeri belli bir aralıkta olmalıdır ya da keyfî bir değerin altında/üstünde olmamalıdır.
  • Hedef Alpha Testi: Bu, pikselin alpha değerini, onu frame buffer’a (çerçeve arabelleği’ne) çizmeden önce bir kez daha kontrol eder.
  • Derinlik Testi: Pikselin Z değerini, Z buffer’da (Derinlik Arabelleği’nde) karşılık gelen Z değeriyle kıyaslar. Buysa başka piksellerin arkasında kalarak görünmeyecek olan piksellerin işlenmesini önler.

Son İşleme (Post-Processing)

Image
Son İşleme aşaması.

Son aşamada yeni piksellerimize yerel DRAM’de bulunan önceki çerçeve arabelleği (frame-buffer) kullanılarak bazı efektler uygulanabilir:

  • Alpha Karıştırma: Hafızadaki mevcut (işlenmiş çereveyi tutan) arabellekle bir öncekinin renklerini birbirine karıştırır.
  • Noktalı Tonlama (Dithering): Büyük RGBA değerlerinin kırpılması gerekir, ancak tonlama (dithering) uygulanarak keskinlik kaybı bir nebze giderilir.
  • Renk Kıstırma (Color Clamping): Alpha Karıştırma gibi işlemler uygulandıktan sonra, yeni RGB değerleri geçerli aralığın (0 ilâ 255) dışında kalabilir ve kıstırma da değeri bu aralığa atar.
  • Biçimlendirme: Bu, boru hattında oluşturulup son aşamadan geçmiş çerçeve arabelleğini, hafızada saklanabilecek bir biçime dönüştürür.

Son olarak, yeni çerçeve arabelleği (yani ekrana gidecek çıktı), güncellenen yeni Z-buffer ile birlikte, 1024-bit veri yolu üzerinden hafızaya yazılır.

Daha fazla Son İşleme

GS’nin içinde, Programlanabilir CRT Kontrolcüsü ya da ‘PCRTC’ dedilen, ayrılmış bir bileşen bulunur ve bu, hafızadaki çerçeve arabelleğini, Video çıkışına gönderir ki televizyon ekranında görebilin. Ama hepsi bu da değil: Ayrıyeten, Birleştirme Devresi adlı özel bir blok içerir ki bu iki farklı çerçeve arabelleğini Alpha kaynaştırma yapabilir (Eğer oyun, yenisini şekillendirmek için önceki çerçeveyi tekrar kullanmak istiyorsa kullanışlıdır). Oluşturulan çerçeve, video sinyalleri yoluyla çıktı olarak verilebilir ve/veya hafızaya geri yazılabilir.

İyileştirilmiş Modellemeler

Bahsettiğimiz bütün şeyler, beraberinde, hâlihazırda meşhur karakterler yenilenirken daha iyi dizaynlar getirecektir. Şimdi şu ’Öncesi & Sonrası’na bir bakın:

Tel ÇerçeveYüzeyDokular
3D model
PS1’deki Crash Bandicoot (1996).
732 üçgene sahip.
Tel ÇerçeveYüzeyDokular
3D model
Crash Bandicoot: The Wrath of Cortex (2001).
2226 üçgene sahip.

Bunlar da yeni oyun serilerinden karakterler, tepeden tırnağa yüksek detay seviyeleriyle modellenmişler:

Tel ÇerçeveYüzeyDokular
3D model
Kingdom Hearts (2002).
2744 üçgene sahip.
Tel ÇerçeveYüzeyDokular
3D model
Dragon Quest VIII (2004).
2700 üçgene sahip.

Bahse değer Dragon Quest gibi oyunlar, Cel Shading denilen (daha önce bahsettiğim bir tabir), özgü bir ışıklandırma modeli uyguladılar, ancak önceki makalelerde açıkladıklarımda bundan sorumlu olan GPU idi. PS2’de ise, gerekli renk hesaplamaları muhtemelen Emotion Engine tarafından yapılıyor, çünkü GS, diğer GPU’lar kadar esnetilebilir değil.

Video Çıkışı

Dah önce belirttiğimiz gibi PCRTC, çerçeve arabelleğini video sinyalleri aracılığıyla gönderir. Arayüz, çeşitli formatlar yoluyla video sinyalini yayınlayabilir (herhangi bir grafik bölgesinden Televizyonlar üzerinde çalışabilmesi için) [11]:

. - Pazarda 576p kullanan oyun yoktur. Bazıları progressive modu desteklese de 480p modda destekler. - NTSC: 640x464 pikselde 60 Hz’e kadar, progressive (480p) ya da interlaced (480i) olarak destekler.

. - VESA: 1280x1024 piksele kadar. - DTV: Progressive modda 768x480 ya da interlaced modda 768x960 gibi sayıca muazzam büyüklükte piksele çıkabilir.

Image
Konsolun arkadan görünümünün sağ kısmı [12]. A/C yuvası, Dijital ses yuvası ve AV Çoklu Çıkışı görülebiliyor.

Seçilebilecek birçok mod var ancak 2000’lerin başlarında gerçekleşen format benimsemeleriyle hespi gözden düşüyor ve seçenekler sadece PAL ve NTSC’ye kadar daralıyor. Ayrıca, PAL her ne kadar NTSC’den daha yüksek çözünürlük sunsa da, NTSC oyunlarının bazı Avrupa versiyonlarında, kullanılmayan piksel satırlarını maskelemek için letterboxing’e sığınılmış ve 50 Hz sınırına uymak için ekran yenileme hızı yavaşlatılmış (ben bunlara ‘kötü port’ diyorum!) (ÇN: Dolayısıyla görüntü küçülüp, oyun yavaşlıyor).

Video çıkış yuvası (Multi A/V) çok kullanışlıdır. RGB, Komponent (Component), S-Video ve kompozit (composite) sinyali taşır. Yani bütün önemli sinyaller, tescilli adaptörler ya da dâhilî modifikasyonlar gerektirmeden burada bulunuyor.


Ses

Yeni ses çipi, eski SPU’ya kıyasla marjinal geliştirmelere uğramıştır ve adı da… SPU2! Geliştirmelere 2 MB dâhilî hafıza eklenmesi ve kullanılabilir 48 ses kanalı da (ki orijinalinin 2 katıdır) dâhildir.

SPU2, kendi içinde iki işlemciden oluşmuştur, bunlar CORE0 ve CORE1’dir ve ~36.86 MHz’de çalışırlar. Her biri 24 kanal işler.

İşin ilginç tarafı, sonuçta bunlar iki ayrı işlemcidir ve onları yapılandırmak için, onların özel işlemci kayıtlarında değişiklik yapmanız gerek. Fakat Sony, geliştiricileri, farklı işlemciye ait kayıt setlerinin 1/48000 saniye arayla değiştirilmesi gerektiği konusunda uyardı. Eğer çok acele ederseniz, SPU2’nin davranışları tahmin edilemez olur!

SPU2, orijinal SPU’da bulunan efektlerin aynısını miras alır. Kullanıma sunulan hafıza, bir ‘çalışma alanı’ olarak kullanılır: İşlenmemiş dalga biçimini depolayabilir ve onu işleyip efektler uygulamak için ektra alan ayırabilirsiniz.

Sonunda, çip, stereo çıkış hazırlamak için bütün kanalları karıştırır. Şimdi, gelelim ilginç kısma: SPU2, karıştırılmış stereo örneği yeni girdi olarak alarak kendini besleyebilir ve bu EE’nin ona (örneğin başka seslerle karıştırması için) erişmesine ya da daha fazla efekt (örn. reverb (yankı), eko, delay (gecikme) gibi) eklemeye devam edebilmesine olanak tanır.

Kingdom Hearts II (2005). Yankı (reverb) olmadan.
Kingdom Hearts II (2005). Yankıyla.

Ses çıkışı

Ses sinyali çıkışı, iki ortam aracılığıyla sağlanır:


Giriş/Çıkış

Başlangıçta, PS2’nin I/O’su özellikle karmaşık değildi. Ancak, bu konsolun sonraki revizyonları hem iç hem de dış tasarımları tamamen bozdu. Dolayısıyla, genel olarak, bu konsol farklı revizyonlara dağıtılmış birçok G/Ç biçimi sergilemektedir.

Özel İşlemci

Başlangıç olarak, farklı birimler arsındaki iletişimi sağlayan ayrılmış bir işlemci bulunur ve bu işlemci, PlayStation 1’de bulunan orijinal MIPS R3000 tabanlı çekirdekten başkası değildir. Bu kez I/O Processor (IOP) olarak adlandırılıyor ve 37,5 MHz hızında 32-bit veri yoluna bağlı olarak çalışıyor [13].

Image
Playstation 2’nin mimarisinin ana şeması. I/O İşlemcisinin I/O’nun çoğuna özel erişim gösterdiğine dikkat edin.

IOP, Sistem Arayüzü (System Interface) ya da ‘SIF’ denilen özelleştirilmiş bir Giriş/Çıkış arayüzü kullanarak Emotion Engine’le iletişim kuruyor ve iki uç da birbirine veri transferi yapmak için kendi DMA birimlerini kullanıyor. IOP ayrıca tampon olarak kullanılan 2 MB EDO RAM (tıpkı PS1’de olduğu gibi) özel belleğe sahiptir.

Sonuç olarak, bu işlemci ön bağlantı noktalarına, DVD denetleyicisine, SPU2’ye, BIOS ROM’a ve PC kartı yuvasına erişim sağlar.

Her ne olursa olsun, ‘Slim’ revizyonunun gelmesinden bir yıl sonra (2005), IOP yerine PowerPC 401 ‘Deckard’ (mikrodenetleyiciler için kesilmiş bir PowerPC 601), 4 MB SDRAM (öncekinden 2 MB daha fazla) ve bir Ethernet alıcı-vericisi (daha önce harici bir aksesuarda bulunan) içeren bir SoC yerleştirildi.

Geriye uyumluluk

Önceki modelin CPU’sunu içeren modeller için PS1 uyumluluğunun da paketin bir parçası olacağı düşünülebilir. Sony, uygun bir şekilde, bir PS1 diski takıldığında yüklenen bir PS1 emülatörü (PS1DRV olarak adlandırılır) ile paketlemiştir. Bu gerçekleştiğinde, IOP PS1 hızında çalışmak için düşük hızda çalıştırılır, EE eski GPU‘yu taklit etmek için ’yeniden kullanılır’ ve SPU2 orijinal SPU gibi davranmak için yeniden eşlenir.

PowerPC tabanlı modellerde geriye dönük uyumluluk devam etti, ancak bunun yerine tam bir yazılım uygulaması yapıldı.

Mevcut arayüzler

Konsol, orijinal PlayStation’da bulunan eski ön dış bağlantı noktalarını barındırdı ve ayrıca ilk bakışta ümit verici görünen birtakım ‘deneysel’ arayüzler de sundu.

Image
Kontrolörler ve Hafıza Kartları dahil olmak üzere ortak bağlantı noktalarını gösteren PS2’nin ön yüzü. Ayrıca, yeni USB’ler ve i.Link bağlantı noktaları [14].

En meşhur ilave ise: İki adet USB 1.1 yuvası. Teorik hızı 12 Mbps’dir, ancak bu büyük ölçüde IOP’nin bant genişliğine bağlıdır (ki bu oldukça yavaş olma eğilimindedir). Bununla birlikte, üçüncü taraf aksesuarlar tarafından yaygın olarak benimsenmiştir.

Çok uzun sürmeyen bazı ‘deneyler’ de oldu. İlk olarak, başlangıçta bir dış i.Link portu yuvası bulunuyordu (ayrıca IEEE 1394 ya da Apple camiasında ‘FireWire’ olarak da bilinir). Bu yuva, yerel çok oyunculuyu mümkün kılmak için iki PS2’yi bağlamada kullanıldı ancak üçüncü revizyonla kaldırılı (muhtemelen yerini ’Network card’a bıraktı, aşağıda daha fazla detay var).

Alışılmadık Ethernet + HDD kombinasyonu

Konsolun arkasında ayrıca PC kartları için bir yuva vardı. Bunun için Sony’den iki ekstra arayüz sağlayan ‘Ağ Adaptörü kartı’ satın alabilirsiniz:

Sonraki revizyonlarda PCMCIA yuvası, konsola 3.5 inçlik bir Hard disk sürücüsü sığdırılabilecek bir Expansion Bay ile değiştirildi. Öncelikle, sadece Modem ve/veya Ethernet girişlerini (modele göre değişir) bulundurmakla kalmayıp aynı zamanda bir ATA-66 hard disk için gerekli bağlantıları da bulunduran bir Network adaptor almanız gerekliydi.

Image
PS2’nin arkasındaki Sabit disk bölmesi (kapağı çıkarılmış olarak) gösteriliyor [15].

Perde arkasında, HDD’deki veriler ‘PFS’ [16] adı verilen bir dosya sistemi kullanılarak yapılandırılır. Garip bir şekilde, düzen bir bölümleme tablosu içermez, sadece ‘Aligned Partition Allocation’ (APA) adı verilen çok ilkel bir katalog içerir. Bunun nedeni Sony’nin yalnızca 40 GB sürücüler göndermesi olabilir. Dolayısıyla, ölçeklenebilirlik öncelikler listesinde yer almıyordu.

Image
Ağ adaptörünün (Network adaptor) önden görünümü [17]. Bu özel model, modem ve Ethernet girişleri barındırdı.
Image
Ağ adaptörü (Network adaptor) arkadan görünüşü [18], bir sabit disk takılmış hâlde.

Ethernet alıcı/vericisi, 100 Mbps’ye (12.5 MB/s) kadar transfer hızlarını destekler. Ancak gözlemlenen hız düşüklüğü kötü şöhretle bilinir (bazı durumlarda 2 MB/s’ye kadar düşer). Bunun açıklaması ise görece basittir: Kullanılabilir iletişim ağına (network) erişmek için standart ’OSI Modeli’nin tüm katmanları uygulanmalıdır, alıcı/verici ise bütünün sadece bir parçası. İşin geri kalanı genel olarak IOP’nin emrindedir (ki yazılımla yapılır) fakat IOP’nin sınırlı performansı yüzünden [19], darboğaz meydana gelir.

İnceltme

Slim revizyonu tüm Ethernet + HDD modelini revize etti: artık Expansion Bay yok, ancak arkaya kalıcı olarak bir ethernet bağlantı noktası takıldı (belirli modellerde bir Modem de vardı).

Image
Slim modelinin arkasındaki sabit Ethernet yuvası gösteriliyor.

Buna ek olarak yeni revizyon, Sony markalı bir uzaktan kumanda (ayrı satılır) ile kullanılmak üzere yeni bir infrared sensor ekledi.

Etkileşimli eklentiler

Kontrolcülerinin (oyun kolu) yeni versiyonu olan DualShock 2, DualShock’un biraz geliştirilmiş versiyonudur.

Image
DualShock 2 kontrolcüsü [20].
Image
Orijinal Hafıza Kartı (8 MB modeli) [21].

Orijinal PlayStation zamanlarında, orijinal kontrolcünün farklı özellikler barındıran birçok revizyonu piyasaya sürüldü (aynı zamanda pazara ayrışma getirdi). Artık geliştiriciler lehine, öncesinde gelen bütün özellikleri kendinde toplayan tek bir kontrolcü vardır.

Orijinal DualShock ile karşılaştırıldığında, yeni versiyon hafif bir yeniden tasarıma sahiptir, sırasıyla daha zengin giriş ve geri bildirim için iki analog çubuk ve iki titreşim motoru içerir.

Kontrolcü giriş yuvasının yanındaysa PS1 ve PS2 kartlarıyla uyumlu Hafıza kartı yuvası bulunuyor. Yeni kartlara, MagicGate olarak anılan güvenlik sebepleriyle ekstra devre gömüldü, bu da oyunların, farklı hafıza kartlarına veri transferini engelleyebilmesine imkan tanıdı. IOP, içeriğin şifrelenmesi ve şifresinin çözülmesiyle ilgilenir ve bunu MagicGate yonga seti (Hafıza Kartının içinde bulunur) ve DVD sürücüsünün yardımıyla yapar, ikincisi şifreleme anahtarlarını paketler.

Ancak bazı üçüncü taraf Memory Card’ları MagicGate’i desteklemiyordu.


İşletim Sistemi

Anakarta takılı bir 4 MB ROM yongası var, bu bir kabuk menüsü (kullanıcıların etkileşime girebileceği) yüklemek için kullanılan büyük miktarda kodu depolar, ancak aynı zamanda I / O erişimini basitleştirmek için sistem çağrıları sağlar [22] (oyunların dayandığı).

Image
Konsol başlatıldıktan sonra görünen açılış animasyonu.
Image
Geçerli bir PS2 oyunu takıldıktan sonra PS2 logosu gösteriliyor.

Güç verildiğinde, hem MIPS R5900 hem de IOP 0xBFC00000 adresinden başlayacaktır (bu, tüm MIPS CPU’ları için imza sıfırlama vektörüdür). Bununla birlikte, beklenen çakışmaları ele almak için, bu adreste saklanan ilgili kod (BIOS ROM’a işaret eder), her CPU’nun tanımlayıcısına göre farklı bir konumda dallanmasını sağlayacaktır.

R5900 söz konusu olduğunda, CPU aşağıdaki adımları izleyecektir [23]:

  1. Donanımı ilk kullanıma hazırlar.
  2. Kernel’i ROM’dan RAM’e yükler. Çekirdek yüklendikten sonra, uygulamaların (çoğunlukla oyunların) donanımla etkileşime girmesi için bir soyutlama katmanı sağlayacaktır. Ayrıca, bir çoklu iş parçacığı API’si (işbirlikçi ve öncelik tabanlı) de sunar.
  3. Çekirdek, bir çekirdek modülü olan EELOAD’u yükler ve bu da OSDSYS’i önyükler. OSDSYS, açılış animasyonunu ve shell menüsünü görüntüleyen programdır.

Öte yandan, IOP donanımının bir kısmını başlatacak ve ardından birden fazla modül yükleyecektir, bunlar IOP’nin bu konsolun donanımına erişmesini sağlar. Son olarak, IOP bir ‘komut bekleme’ hâline geçirilir.

Modül kullanımının Sony’nin PS2’nin yeni donanım revizyonlarını IOP’yi değiştirmeden (değiştirene kadar) piyasaya sürmesine olanak sağladığını ve böylece bu süreçte bazı üretim maliyetlerini düşürdüğünü belirtmek gerekir.

Etkileşimli kabuk (Interactive shell)

PS2 shell işlevselliği, diğer 6. nesil konsollarla hemen hemen aynı düzeydedir.

Image
İlk gösterilen menü. Herhangi bir disk yerleştirilmediğinde ortaya çıkar.
Image
Hafıza Kartı tarayıcısı.
Image
Kayıt tarayıcısı. Bir hafıza kartı seçildiğinde ortaya çıkar.
Image
Kayıt düzenleyici, bir kaydın seçiminden sonra gösterilir.
Image
Sistem Yapılandırma.

Shell, hafıza kartında saklanan kaydetme verilerini değiştirmek veya saati değiştirmek gibi tipik işlemleri yönetmek için birden fazla kullanıcı arayüzünden oluşur. Bununla birlikte, bazı fevkalade seçenekler de sunar, meselâ geçerli video modunu değiştirmek gibi.

Güncellenebilirlik

BIOS gerçekten de salt okunur bellekte saklanır, ancak bu Sony’nin fabrikadan çıktıktan sonra BIOS’u değiştirmesini engellememiştir. BIOS, perde arkasında gelecekte yapılacak değişiklikler için iki açık kapı bırakmıştır:

Her halükarda, Sony sonunda geç PS2 modellerinde (BIOS sürümü 2.30 ile) ikinci yöntemi kaldırdı. Sanırım Sony daha fazla güncelleme planlamıyordu ve bu sadece saldırı yüzeyini artırdı.


Oyunlar

Bu sistemin 2000’ler boyunca ulaştığı şöhret seviyesinin emsâli görülmemiştir, vadesini doldurduğunda (2013’te, çıkışından 13 yıl sonra!) oyun kütüphanesi 1850 oyunla doluydu [27].

Image
Mr Moskeeto (2001). Ne zaman biri PS2 oyunlarının bolluğundan dem vursa, bunu hatırlarım.

Burada gerçekleşenler etkileyicidir. PS2, ‘programlayıcı dostu’ bir mimariye sahip değildir (bir PC programcısının bakış açısından görüldüğü gibi), ancak bu kadar çok sayıda oyun geliştirildiğinde, ben de daha fazla faktörün dahil olup olmadığını merak ediyorum (meselâ ‘lisans indirimleri’, düşük dağıtım maliyetleri, geliştirme maliyeti, küçük form faktörü vesaire).

Geliştirme ekosistemi

Sony, oyun geliştirilmesine yardımcı olacak donanım ve yazılımı temin etti.

Yazılım tarafında, aşağıdakileri içeren PlayStation 2 SDK (PS2 Yazılım Geliştirme Kiti) mevcuttur [28]:

Donanım tarafında Sony, oyunları kurum içi çalıştırma ve hata ayıklama için stüdyolara mahsus donanım sağladı. İlk geliştirme kitleri, PS2’nin pisayasa sürülmemiş donanımını replika etmek için birarada yığılmış kasasız kartlardı. Sonraki kitler (Development Tool yani Geliştirme Araçları adını alanlar), daha tatmin edici bir görünüşe, gelişmiş Giriş/Çıkışa (I/O) ve oyunları aynı şartlarda geliştirip dağıtma için PS2 donanımıyla çalışan bileşik iş yeri donanımına (RedHat 5.2 çalıştırır) sahipti.

Geliştirme kiti (DevKit), resmî SDK ve CodeWarrior (meşhur bir IDE yani bütünleşik geliştirme ortamıdır) birleşimi, kullanılan en popüler düzeneklerdendi.

Medya Ortamı

Disk sürücü, hem DVD hem de CD okuyabilir yani oyunlar her iki fiziksel formatla da dağıtılabilir. Ancak bariz sebeplerden ötürü, çoğu oyunu DVD formatında bulacaksınız.

Image
Kingdom Hearts II (2005). Tipik perâkende oyun kutusu ve diski.

DVD’ler, DVD-5 (en yaygın ‘alt format’) durumunda 4,7 GB veya DVD-9 (çift katmanlı versiyon, daha az yaygın) durumunda 8,5 GB veri tutabilir [29]. Aslında üçüncü bir format olan çift taraflı DVD-10 da vardır ancak hiçbir oyun bunu kullanmadı.

Kullanılan medya türü sayesinde, sadece oyunlar değil, filmler de oynatılabiliyordu. Yine de, film formatında bir DVD’yi okuyabilmek için ilgili kod çözücü gerekiyordu ve bunun için, PS2 ilk zamanlarda gerekli dijital aracı bir hafıza kartına (PS2 Memory Card) dahil etmişti (sonuçta hafıza kartı da bir depolama medyası/ortamıdır) fakat sonraki modeller ise BIOS ROM’a halihazırda kurulmuş bir DVD yazılımı ile çıktı.

Hızlarına gelince, CD-ROM’lar 24x hızda (yani 3.6 MB/sn) okunuyordu ve DVD-ROM’lar 4x hızda (5.28 MB/sn) okunuyordu [30].

Ağ hizmeti

Görmüş olduğunuz üzere, konsolun genel ağ özellikleri, ilk piyasaya sürülüşünden dört yıl sonraki revizyonlara kadar standarda kavuşmamıştı. Benzer şekilde, eğer oyun stüdyoları çevrim içi hizmetler (çok oyunculu gibi) sağlamak istiyorlarsa, gerekli altyapıyı sağlamakla yükümlü idiler. Sonraki yıllarda Sony, Dinamik Ağ Kimliği Doğrulama Sistemi (Dynamic Network Authentication System) ya da ’DNAS’ı işleve soktu, bu çevrim içi bir hizmet değildi fakat korsan oyunların çevrim içine bağlanmasını engelleyen bir doğrulama sistemiydi.

Alışılmadık bir oyun türü

Sony, güzel grafikli tüm bu oyunların yanı sıra, ‘Kondara’ tabanlı (ki bu da Red Hat 6 tabanlıdır) bir Linux dağıtımını iki CD halinde (ilk disk ‘Runtime Environment’ yani program çalıştırma ortamı ve ikincisi ‘Software Packages’ yani yazılım paketleridir), VGA adaptörü, USB Klavye ve Fare ve ek olarak bazı geliştirici kılavuzları ile birlikte piyasaya sürdü. Paket, Linux Kit olarak bilinirdi ve ilk DVD’yi başlatarak işletim sistemini çalıştırabilir ve herhangi bir old school Linux ortamı gibi devam edebilirdiniz. Tabii ki Linux dağıtımını kurmak için konsola bir sabit disk (Hard drive) takmanız gerekirdi. Kurulduktan sonra, bu işletim sistemini başlatmak için her zaman ilk DVD’ye ihtiyaç vardı.

Linux Kit’e, EE’ye yönelik (glibc 2.2.2 ile gcc 2.95.2) derleyiciler (compilers), vektör birimlerine yönelik talimat derleyiciler (assemblers) ve beraberinde Grafik Sentezleyici’de hızlandırılmış bir pencere sistemi (XFree86 3.3.6) [31]. Genel anlamda bu, kulağa ilginç bir ortam gibi geliyor. Aslında, okuduğum araştırma makalelerinin biri bu kurulumla oluşturulmuştu.


Korsanla Mücadele ve Ev Yapımı (Homebrew)

Bu alanda konuşulacak çok şey var, hadi DVD okuyucuyla başlayalım, olur mu?

DVD kopya koruması

Bu alan özellikle oyun stüdyoları için endişe vericiydi, çünkü bu konsol oyunları dağıtmak için çok uygun fiyatlı bir disk formatı kullanıyordu. Dolayısıyla korsanlık riski yüksekti.

Image
Bu ekran, sürücü arızalıysa görülebilir… ya da korsan bir kopya takıldıysa.

İşletim sistemi, bir oyunu açma işini DVD okuyucuya özel komutlar göndererek yapar. Özel olarak oyun içeriğini okumak için kullanılan komutlar, standart DVD komutlarından (yani DVD filmi okunmasından) çok farklı davranır. Tescilli oyunların, diskin daha içeri kısımlarında, dosya sisteminin (filesystem) adını, konumunu ve boyutunu işaretleyen ve erişim alanının dışında kalan bir ‘yerleştirme dosyası’ (map file) bulundurduğu ortaya çıktı. DVD’den bir oyun diskini okuması istendiğinde, diskte her zaman yerleştirme dosyası (map file) yardımıyla yön bulur; bu da demektir ki yerleştirme dosyasını bulundurmayan bir korsan kopyanın okunması imkânsızdır.

Bu, başka bir bölgenin konsolunda çalışan ithal oyunların çalıştırılmasını engelleyen bir bölge kilidi sistemiyle bütünleşmiştir.

Korumaları atlatmak

Bu konsola dair en önemli bölümü açıkladık, şimdi de koruma mekanizmalarını atlatmayı başaran keşfedilmiş birkaç yönteme göz atalım.

DVD sürücüsüne saldırma

PS2 mağazalara ulaşır ulaşmaz, DVD sürücüsünün ‘kilidini açma’ vaadiyle çok sayıda üçüncü parti ürün ortaya çıktı. Homebrew’u destekleyecek hiçbir işaret olmadığından (Linux çözümü dışında), korsanlık en büyük faydalanıcı oldu.

Modifikasyon Çipleri (Modchips)

Kendi neslinde (ve öncekilerde) disk tabanlı sistemler kullanan diğer konsollardaki gibi, DVD yardımcı sisteminin üçüncü taraf şirketlerce tersine mühendisliğe uğraması an meselesiydi. Buradaki hedef, sürücüyü, erişim alanı dışındaki yerleştirme dosyasını kullanmayı gerektirmeden dosya sisteminde gezinmeye zorlayacak kullanışlı bir açık yakalamaktı.

Sonunda bu, aynı zamanda bölge kilidi kısıtlamalarını da askıya alan modchipler şeklinde gerçekleşti.

Hileler

Takılması için lehim kabiliyeti gerektiren modchiplerin yanı sıra, gayriresmî fakat ‘orijinal’ diskler pazarda yerini aldı. Bunlar, bölge korumasını kaldırmak ve oyun içi hileleri kullanmak için Çekirdeği yamaladı.

Dahası, ‘hile diskleri’, konsolun modifiye edilmesini gerektirmeme avantajına da sahipti. Düşünceme göre bu bahse en iyi örnek CodeBreaker’dır.

Disk değiştirme

Son gelişmeler arasında bir hileli teknik daha ortaya çıktı. Bu sefer, okuyucunun hatalı sektörlere müdahale davranışından faydalanılıyor. Swap Magic bir diğer ‘orijinal’ disk gibi görünüyor ancak içindeki ‘oyun’ DVD’ye kasten yapılmış bir hatalı sektördeki, aslında var olmayan bir çalıştırılabilir dosyayı okumasını söylüyor, böylece sürücüyü büsbütün donduruyor [32]. Kullanıclar için mevcut diski ‘orijinal’ olmayan bir diskle değiştirebilecekleri bir fırsat penceresi aralanıyor. Sonrasında, hâlen hafızada bulunan Swap Magic, yeni diskin ana çalıştırılabilir dosyasını önyüklüyor ve sonunda gerçek bir oyun açılıyor. Tüm bunlar, sürücü hâlâ orijinal bir diskin takılı olduğunu zannederken gerçekleşiyor.

Bu işlem, illâki konsolda bir değişiklik yapılmasını gerektirmez. Fakat modele bağlı olarak, sürücünün disk çıkarma sensörünü bloke edecek şekilde, PS2’nin dış kasasının kurcalanması gerekebilir. Bazı modellerde, pamuk parçalarının belirli yerlere yerleştirilmesi de adım adım ilerlemenin bir parçasıydı.

Modçiplerden ayrılma

Zaman geçtikçe, bu konsol hakkında daha fazla araştırma toplandı ve paylaşıldı. Sonuç olarak, yeni ve daha sofistike keşifler, en azından temel olarak artık harici donanıma dayanmayan yeni bir geliştirme dalgasına yol açtı. Dahası, korsanlık artık ana odak noktası değildi. Bunun yerine, Sony’nin onayı olmadan üçüncü taraf programları çalıştırma yeteneği (Homebrew olarak adlandırılır) hızla hedefler listesinin zirvesine yerleşti.

Independence overflow

PS2, PS1 oyunlarının emülasyonunu optimize ederken kullanılacak bilgileri içeren, TITLE.DB adı verilen bir veri tabanı dosyasını Hafıza Kartında (MemoryCard) saklar [33]. İşletim sistemi, bir PS1 oyunu yerleştirildiğinde veri tabanı dosyasını getirir ve bütün dosyayı hafızadaki sabit bir adrese açar (ihmâl bir). Bilgi derleyici, C’de dizileri (harf ve diğer karakterler zinciri) bir yerden ötekine kopyalamaya yarayan strncpy() fonksiyonu kullanılarak uygulandı.

C’ye aşina olanlarınız, muhtemelen nereye varacağımı tahmin ettiniz. Olay şu ki strncpy(), bir dizi ne kadar uzun bilmiyor, yani (zincirin sonuna \0 yazmak suretiyle) bitirilmediği sürece kopyalama ‘sonsuza dek’ devam edecek (ve öngörülemeyen sonuçları olacak!). Şanslarına bu fonksiyon, tercihen kullanılabilen, kopyalanacak maksimum byte sayısını belirleyen bir parametre içeriyor ve böylece kopyayı arabellek taşmalarından koruyor. Fakat şu gülünç gelebilir ve öyledir ki Sony, bu parametreyi kullanmadı, hem de her veri tabanı girdisinin 256 byte’lık sabit bir boyuta sahip olmasına rağmen (ihmal iki).

RAM’de daha yakından incelendiğinde, TITLE.DB, yürütülmekte olan mevcut işlev bittikten sonra geri dönülecek adresi belirten kayıtlı bir register olan $ra’nın yanına kopyalanır (üçüncü vuruş), bu da The Independence Exploit’e [34] yol açar: Büyük bir string içeren bir TITLE.DB oluşturun, içine bir çalıştırılabilir dosya yerleştirin ve bu stringi $ra’nın çalıştırılabilir dosyayı gösterecek şekilde geçersiz kılınacağı şekilde tasarlayın. Bu dosyayı Hafıza Kartınıza yüklemeyi başarırsanız (başka bir istismar veya PC USB adaptörü aracılığıyla) kendinize basit bir Homebrew launcher elde etmiş olursunuz.

Bu keşif 2003 yılında yayımlanmıştır. Sonuç olarak, ince revizyonla birlikte Sony, bu açığı yamalayan yeni bir BIOS ROM revizyonu gönderdi. İlginçtir ki bu, acemice kod meydana getiren son falso değildi.

The signature exploit

Kasım 2007’de bir bilgisayar korsanlığı grubu Memor32 [35] adında tipik bir üçüncü taraf Hafıza Kartı satmaya başladı, ancak bu kartta nedense bir FPGA ve bir USB portu bulunuyordu. İnternet forumlarında Memento adlı bir aygıt yazılımı ortaya çıkana kadar Memor32’nin gerçek doğası netleşmedi: Independence istismarında olduğu gibi hafıza kartından yetkisiz çalıştırılabilir dosyalar çalıştırmak.

Memento’nun uygulanması DVD oynatıcının imzasının kontrol edilme şeklindeki bir kusura dayanıyordu. İkililerin Sony’nin anahtarları kullanılarak imzalanması gerekirken ikilinin bütünlüğünün kontrol edilmediği keşfedildi. Dolayısıyla, herhangi biri çalıştırılabilir kodu başka bir şeyle (hala aynı alana sığan) değiştirebilir ve işletim sistemi memnuniyetle çalıştıracaktır. Memento aygıt yazılımı bu istismarı kullanarak yükünü DVD oynatıcı içinde gizlemiş ve kullanıcıların oyunları (disk sürücüsünden ya da HDD’den) yüklemelerine olanak tanıyan birkaç yardımcı program eklemiştir.

Ancak Memor32 ve Memento’nun popülerliği, ücretsiz (ve başlangıçta açık kaynaklı olan) bir alternatifin ortaya çıkmasıyla kısa sürede yer değiştirdi: FreeMCBoot.

Evrensel çözüm

Memento’nun ters mühendisliği yapıldıktan sonra, Memor32 gerektirmeyen bir alternatif internette ortaya çıktı. FreeMCBoot, herhangi bir MagicGate Hafıza Kartına yüklenebilmesi dışında aynı güvenlik açığından yararlanmıştır. Tek dezavantajı, yükleyiciyi başlatmak için hala başka bir açık (örneğin disk değiştirme) gerekmesiydi.

İlginçtir ki, FreeMCBoot’un kullanıcı arayüzü OSDSYS’den varlıkları ödünç alır, böylece diğer Homebrew’u başlatmak için tanıdık bir menü sağlar. Ayrıca, USB 1.1 bağlantı noktalarındaki yığın depolama aygıtlarına erişmek için API’ler eklemek üzere çekirdeğe yama yapar; bu, birçok homebrew uygulamasının ek dosyaları bulmak için güvendiği bir şeydir.

Ek olarak, yükleyici iki seçenek sunar: yalnızca mevcut konsol için gereken dosyaları yüklemek veya tüm PS2 varyantları için genel bir kurulum yüklemek. İlginçtir ki, ikinci seçeneği gerçekleştirmek oldukça zordu [36]. Başlangıçta, yükleyici, alanın tükenmesini önlemek için Hafıza Kartının bölümleme tablosuyla oynayacaktı, bu özellikle güvenli olmayan bir şeydi.

Şans eseri 2011 yılında PlayStation 3’ün güvenlik sistemi ele geçirildi ve içinde saklı birçok sır açığa çıktı. Diğerlerinin yanı sıra, PS2 geri uyumluluğu için global olarak kullanılan MagicGate anahtarları koleksiyonu bulunmaktadır. O andan itibaren, PS2 çalıştırılabilir dosyaları oluşturmak için sınırlı DVD ikili imza hilesine başvurmak artık gerekli değildi. Ve böylece, 1.8b sürümünden bu yana FreeMCBoot, PlayStation 2’de her türlü Homebrew’u çalıştırmak için en güvenli ve en popüler yöntem olarak konumunu korumuştur.

Takip eden gelişmeler

Homebrew’u çalıştırma yolu daha erişilebilir hale geldiğinde, ilerleme önceki açıkların parlatılması ve Homebrew uygulamalarının geliştirilmesi şeklinde devam etti. Sonunculardan bazıları nihayetinde korsanlıkla ilgili işlevselliği kolaylaştırdı, ancak aynı zamanda işletim sisteminin sınırlı yeteneklerini de genişlettiler (örneğin, oyunlara yamalar sağlayarak), sanırım sonuçta kullanıcılarının niyetlerine bağlıydı.

Homebrew ile ilgili gelişmelerden birkaç önemli örnek vermek gerekirse:

İlerleyen yıllarda yeni açıklar da ortaya çıkacaktır:


Hepsi bu kadar

Makalenin sonuna ulaştığınız için sizi tebrik ediyor ve teşekkürlerimi sunuyorum! Açıkçası, bahsedilecek o kadar şey var ki, bunu bitirdikten sonra, okuyucular eninde sonunda PlayStation’la ilgili şeylerden bıkarlar mı, diye düşündüm.

Her neyse, bütün ciddiyetimle, umuyorum ki bu makaleyi okuduktan sonra yeni şeyler keşfetmişsinizdir ve olur da yorum yapmak isterseniz benimle iletişime geçmekten çekinmeyin.

Bir dahaki sefere kadar hoşça kalın!
Rodrigo


Katkıda Bulunma

Bu makale Konsolların Mimarileri serisinin bir parçasıdır. Eğer ilginç bulduysanız lütfen bağış yapmayı düşünün. Bağışınız, mevcut ve gelecek makalelerin kalitesini artırmama yardımcı olacak araç ve kaynakların satın alınmasını finanse etmek için kullanılacaktır.

Donate with PayPal
Become a Patreon

Ayrıca eBook sürümünü İngilizce olarak da satın alabilirsiniz. Kârları bağış olarak kabul ediyorum.

Image

Bu makale için arzu edilen araçların ve en son kazanımların bir listesi burada takip edilmektedir:

### Interesting hardware to get (ordered by priority)

- Hard drive/Network card for the SCPH-10000.
- PS2 SCPH-3x00x model to check out Homebrew using the hard drive.

### Acquired tools used

- PS2 SCPH-10000 (£60) to do a proper motherboard analysis.
- Old PS2 Slim grey (£40?) from back then.

Alternatif olarak, değişiklikler önererek ve/veya çeviriler ekleyerek yardımcı olabilirsiniz.


Copyright and permissions

This work is licensed under a Creative Commons Attribution 4.0 International License. You may use it for your work at no cost, even for commercial purposes. But you have to respect the license and reference the article properly. Please take a look at the following guidelines and permissions:

Article information and referencing

For any referencing style, you can use the following information:

For instance, to use with BibTeX:

@misc{copetti-ps2,
    url = {https://www.copetti.org/writings/consoles/playstation-2/},
    title = {PlayStation 2 Architecture - A Practical Analysis},
    author = {Rodrigo Copetti},
    year = {2020}
}

or a IEEE style citation:

[1]R. Copetti, "PlayStation 2 Architecture - A Practical Analysis", Copetti.org, 2020. [Online]. Available: https://www.copetti.org/writings/consoles/playstation-2/. [Accessed: day- month- year].
Special use in multimedia (Youtube, Twitch, etc)

I only ask that you at least state the author’s name, the title of the article and the URL of the article, using any style of choice.

You don’t have to include all the information in the same place if it’s not feasible. For instance, if you use the article’s imagery in a Youtube video, you may state either the author’s name or URL of the article at the bottom of the image, and then include the complete reference in the video description. In other words, for any resource used from this website, let your viewers know where it originates from.

This is a very nice example because the channel shows this website directly and their viewers know where to find it. In fact, I was so impressed with their content and commentary that I gave them an interview 🙂.

Appreciated additions

If this article has significantly contributed to your work, I would appreciate it if you could dedicate an acknowledgement section, just like I do with the people and communities that helped me.

This is of course optional and beyond the requirements of the CC license, but I think it’s a nice detail that makes us, the random authors on the net, feel part of something bigger.

Third-party publishing

If you are interested in publishing this article on a third-party website, please get in touch.

If you have translated an article and wish to publish it on a third-party website, I tend to be open about it, but please contact me first.


Kaynaklar / Okumaya Devam Edin

Korsanlıkla Mücadele

İşlemci (CPU)

Oyunlar

Genel

Grafikler

Giriş/Çıkış

İşletim Sistemi

Fotoğrafçılık


Rodrigo Copetti

Rodrigo Copetti

Umarım bu makaleyi beğenmişsinizdir! Yazar hakkında daha fazla bilgi edinmek istiyorsanız buraya tıklayın ve eğer desteklemek isterseniz buraya tıklayın

rsslinkedintwittergithub facebookreddit