Xbox'ın Mimarisi

Rodrigo Copetti tarafından hazırlanan pratik bir analiz

EuropaYou tarafından çevrildi

Klasik - Son güncelleme: 29 Ağustos 2024

Mevcut olan diller: 🇬🇧 - English, 🇫🇷 - Français, 🇮🇹 - Italiano, 🇹🇷 - Türkçe, 👋 - Çeviri ekleyin


Bu baskı hakkında

'Klasik' sürüm, 'modern' muadiline alternatif bir sürümdür. Çalışması için Javascript, son teknoloji CSS veya karmaşık HTML gerektirmez, bu da onu erişilebilirlik araçları veya eski internet tarayıcıları kullanan okuyucular için ideal hale getirir. Öte yandan, e-Kitap kullanıcıları artık e-Kitap sürümünü kontrol edebilirler.

Bu basım içerik açısından aynıdır. Bununla birlikte, etkileşimli widget'lar saf HTML ile çalışacak şekilde basitleştirilmiştir, ancak bunlar okuyucunun "tam sürümü" denemek istemesi durumunda orijinal makaleye bir bağlantı sunacaktır.

Her zaman olduğu gibi, bu makale okuyucuların hataları bildirmesine veya değişiklik önermesine olanak sağlamak için Github'da mevcuttur. Ayrıca seriyi anlamaya yardımcı olacak destekleyici bir okuma listesi de mevcuttur. Yazar ayrıca mevcut ve gelecek makalelerin kalitesini artırmaya yardımcı olmak için bağışları ve çevirileri de kabul etmektedir.


İçindekiler

  1. Destekleyici görüntüler
  2. Hızlı bir giriş
    1. Okuma İpuçları
  3. İşlemci (CPU)
    1. Teknik bilgi
      1. Marka
      2. ISA
      3. Mikromimari
      4. CISC veya RISC
      5. Çekirdek
    2. P6 ve Pentium numaralarının sonu
    3. Anakart Mimarisi
    4. Bellek Düzeni
  4. Grafikler
    1. Mimari ve Tasarım
      1. Komutlar
      2. Vertex
      3. Piksel
      4. Post-processing (İşlem Sonrası)
    2. Programlanabilirliğin Önemi
    3. Xbox’ın Çerçevesi
  5. Ses
  6. Giriş/Çıkış
    1. Harici arabirimler
    2. Dahili arabirimler
    3. Kontrolcü
    4. Gerekli bir adaptör
  7. İşletim Sistemi
    1. Önyükleme İşlemi
    2. Yeşil ekran
      1. Etkileşimli kabuk
      2. Güncellenebilirlik
  8. Oyunlar
    1. Geliştirme ekosistemi
      1. Donanım Soyutlama
      2. Microsoft XDK
      3. NXDK
    2. Medya Ortamı
    3. Ağ hizmeti
    4. Yeni bir trendin başlangıcı
  9. Korsanla Mücadele ve Homebrew
    1. DVD kopya koruması
    2. Sistem Koruması
      1. Giriş
      2. Bootstrap araması
      3. Kalıcı Kilidin Açılması
      4. Modifikasyon Çipleri (Modchips)
      5. Tepki
  10. Hepsi bu kadar
  11. Copyright and permissions
  12. Kaynaklar / Okumaya Devam Edin
  13. Katkıda Bulunma

Destekleyici görüntüler

Modeller

Image
Orijinal Xbox.
15/11/2001 tarihinde Amerika'da, 22/02/2002 tarihinde Japonya'da ve 14/03/2002 tarihinde Avrupa'da piyasaya sürüldü.

Anakart

Image
Anakart
İlk revizyonu gösteriliyor.
Kontrolcüler ayrı bir yardımcı kart kullanılarak takılır.
Eksik SDRAM yongaları arka tarafta ve dört kullanılmayan SDRAM yuvası bulunmaktadır.
Image
Önemli parçaları etiketlenmiş anakart

Diyagram

Image
Ana mimari diyagramı
Her kontrolcü ayrı bir USB hub'ına bağlıdır.

Hızlı bir giriş

Görünüşe göre Microsoft, Sega’nın bıraktığı yerden devam etmeye karar verdi. Teklifleri mi? Geliştiriciler tarafından takdir edilen tanıdık özelliklere sahip bir sistem ve kullanıcılar tarafından hoş karşılanan çevrim içi hizmetler.

Lütfen bu makalenin diğer kaynaklarla tutarlılık sağlamak amacıyla depolama birimlerini metrik önek (örneğin megabayt veya ‘MB’) ve standartlaştırılmış ikili önek (örneğin mebibayt veya ‘MiB’) arasında ayırdığını unutmayın, bu nedenle:

… ve benzeri.

Okuma İpuçları

Bu yazıyı yazdıktan birkaç ay sonra fark ettim ki bu, yaptığım en yoğun yazılardan biri. Xbox’ın içinde gerçekten çok şey oluyor ve ben çoğunu anlatmaya çalıştım.

Şimdi, eğer gerçekten bu sistemi anlamakla ilgileniyorsanız ve bu makaleyi takip etmekte zorlanıyorsanız, size verdiğim tavsiye şu: Rahat olun, makale başka bir yere gitmiyor. Kendinize ilginç gelen konulara odaklanın, kendi hızınızda okuyun, destek için ‘Kaynaklar’ bölümündeki bağlantılara göz atın ve sonunda kendinize baskı yapmayın, burada bir sınav yok!


İşlemci (CPU)

Bu konsolda bulunan işlemci, ünlü Intel Pentium III’ün (bilgisayarlar için hazır bir CPU) hafif özelleştirilmiş bir versiyonudur ve 733 MHz hızında çalışır. Bu sayede bu konsolun sahne arkasında sadece bir PC olduğunu varsayabiliriz… Size cevabı söylemeyeceğim, ancak makalenin sonunda kendi sonucunuza ulaşabileceğinizi vaat ediyorum.

Image
Xbox’ın anakartındaki Intel Pentium III paketi.

Neyse, Pentium’lar, Intel tarafından tasarlanan ve üretilen diğer CPU hatlarıyla birlikte bilgisayar pazarında son derece popülerdi. Intel’in pazar payı o kadar büyüktü ki, kalite açısından bir referans noktası haline geldiler: Tipik bir kullanıcı olarak, iyi bir bilgisayar istiyorsanız ve bütçeniz varsa, sadece bir Intel CPU taşıyan bir şey aramanız yeterliydi. Şimdiye kadar daha fazla faktör olduğunu biliyoruz, ancak bu, Intel’in pazarlama ekibinin başardığı şeydi.

Teknik bilgi

Intel’i haritada konumlandırdıktan sonra, şimdi bu konsolun konusuna geri dönelim. Araştırmalarım sırasında, diğer CPU’lar (MIPS, SuperH, ARM vb.) gibi derinlikte belgelere rastlamayı bekliyordum, ancak bunun yerine arama yönümü saptıran aşırı miktarda pazarlama terimi buldum. Bu nedenle, bu makale için bu CPU’nun nasıl çalıştığını anlamak için gerekli tüm bilgileri düzenleyecek bir yapı oluşturdum. Ayrıca Intel’in bu CPU’yu markalandırmak için kullandığı bazı terimleri de tanıtmaya çalışacağım.

Bununla birlikte, şöyle bir göz atalım:

Marka

Image
Bu çalışma nasıl düzenlenmiştir.

İlk olarak, Xbox’ın CPU’su Pentium III olarak tanımlanır. Peki, bu ne anlama geliyor? O dönemde (erken 2000’ler), Pentium serisi, bilgisayarları süper hızlı yapan tüm şık teknolojiyi bir araya getiren ’yeni yüksek kalite’yi temsil ediyordu ve alıcıların en iyisini istiyorsa hangi CPU’yu satın alması gerektiğine karar vermelerine yardımcı oluyordu.

Pentium III, Pentium II’nin yerine geçti, ki bu da orijinal Pentium’un yerine geçti. Dahası, ilk Pentium çıktığında, 80486’nın yerine geçti, ki bu da 80386’nın yerine geçti… Demek istediğimi anlamışsınızdır. Önemli olan ’Pentium’un esasen bir marka adı olduğu, iç işleyişle doğrudan ilişkilendirilmediğidir. Bu nedenle, daha da derinlere inmeliyiz!

Daha fazla kaybolmamak ve derinleşmek için, bilgiyi üç bölüme kataloglamış bulunmaktayım: Instruction Set Architecture (ISA) veya ‘ISA’ (CPU’ya komut vermek için kullanılan talimatlar grubu), Mikro mimari (ISA’nın silikonda nasıl uygulandığı) ve Core (belirli CPU modelini oluşturmak için mikro mimariyi paketlemek için kullanılan bileşen seti).

ISA

Gerçekten de ’Intel’den bir kez bahsettiğimde, ünlü x86 komut setini tanıtmam an meselesidir.

x86’nın ilk biçimi, 1978’de piyasaya sürülen 16-bit bir CPU olan Intel 8086 ile ortaya çıktı. Sonrasında, ISA daha fazla Intel CPU’su piyasaya sürüldükçe sürekli olarak daha fazla talimatla genişletildi (80186, 80286 ve benzerleri) [1]. Bu nedenle, x86, daha fazla çığır açan özellik eklenirken (örneğin ‘koruma modu’ ve ‘uzun mod’), parçalanmaya başladı. Bu sorunu çözmek için modern x86 uygulamaları genellikle 80386 ISA’sına (ayrıca IA-32 veya i386 olarak adlandırılır) temel olarak, 32-bit bir ortamda çalışan bir başlangıç noktası olarak hedefler.

Sonuç olarak, Intel, IA-32’yi uzantılar kullanarak geliştirdi, bu da yeni işlevlerin bir IA-32 CPU’sunda olup olmadığına bağlı olarak değişebileceği anlamına geliyor. Programlar, belirli bir geliştirmenin mevcut olup olmadığını kontrol etmek için CPU’yu sorgular. Xbox’ın CPU’su, iki uzantı içerir:

İyi haber şu ki, konsol her zaman aynı CPU’ya sahip olacağından, programcılar kodlarını bu uzantıları kullanmak üzere optimize edebilirler çünkü bunlar her zaman mevcut olacaktır.

Mikromimari

x86 talimatlarını yorumlayabilen bir devre inşa etme konusunda, Intel CPU’ları için çok sayıda farklı tasarım geliştirmiştir. Bazı tasarımlar, yeni bir Pentium Serisi’nin piyasaya sürülmesiyle (örneğin, Pentium 4) öne çıkarken, diğerleri Intel bir Pentium’un ‘gelişmiş’ bir versiyonunu piyasaya sürdüğünde (örneğin ‘Pentium Pro’) ortaya çıkar. Bununla birlikte, ilk Pentium’un piyasaya sürülmesinden bu yana, CPU modeli ve mikromimari artık aynı adı taşımamaktadır. Örneğin, 80486, yalnızca 80486 mikromimarisini kullanır (ve başka bir şey değil), ancak orijinal Pentium’un ‘P5’ mikromimarisine sahiptir.

Şimdi, Xbox CPU’su, geri kalan Pentium III işlemcileri ile birlikte P6 Mikromimari’yi (aynı zamanda ‘i686’ olarak da bilinir) kullanır. Bu, 8086’dan saymaya başladığımızda 6. nesildir ve şunları içerir:

Bu özelliklere biraz daha yakından bakalım. Bu özellikler, önceki konsollarla çok benzer oldukları ortaya çıkıyor. Ancak diğer CPU’lar, tasarım açısından Intel olanlara kıyasla çok farklı. Tarihsel olarak, bir kişi, x86 tasarımının Intel’e örneğin bir boru hattına sahip bir CPU üretme yeteneği vermediği konusunda bir argüman yapabilirdi. Ancak bunu başardılar, peki neden…

CISC veya RISC

İlginç bir şekilde, rekabette yer alan işlemciler RISC yönergeleri etrafında tasarlanmışken, Intel’in x86 işlemcileri bu şekilde tasarlanmamıştır ve bu nedenle CISC grubuna dâhil edilmektedir. RISC işlemcileri, CISC işlemcilerine kıyasla sadeleştirilmiş bir tasarıma sahip oldukları bilinmektedir. Bu, örneğin, (bellekten doğrudan işlem yapmanın aksine) yalnızca register’lardaki değerler üzerinde işlem yapan komutlar sağlayan bir load-store mimarisinin uygulanmasını içerir.

RISC işlemcilerinin avantajlarından biri, basit yaklaşımlarının CPU’larını modüler bir şekilde tasarlanmasına olanak tanımasıdır, bu da sıralı paralellik teknikleri ile performansı artırmak için kullanılabilir. Bu nedenle, MIPS ve PowerPC gibi CPU’lar, boru hattı aşamalarını, üst ölçekli tasarımları, sıradışı yürütme, dal tahminlemesi vb. gibi görmüştük. Öte yandan, CISC işlemcileri RISC işlemcilerinden daha eski ve daha farklı ihtiyaçları çözmeyi amaçlıyordu. Bu nedenle tasarımları, RISC İşlemciler kadar esnek değildir.

Orijinal soruya dönersek, P6 ilginç bir tasarımdır, çünkü bu CPU yalnızca CISC talimat kümesini (x86) anlar, ancak opcodes’ın bir alt kümesi mikro kod kullanılarak yorumlanır. En önemlisi, mikro kodu çalıştıran birim yükle-depolama modeli [2] etrafında oluşturulmuştur. Bunun nedeni, P6 mimarisinin Intel i960‘ın (Intel’in bir zamanlar umut vaat eden RISC CPU’su) eski mühendisleri tarafından yazılmış olmasıdır. Sonuç olarak, Intel’in tarihi x86 ISA ile uyumluluğu bozmadan RISC işlemcilerle benzer avantajlar elde etmesine izin verdi. Zaman geçtikçe, ’CISC’ ve ‘RISC’ gibi terimlerin herhangi bir modern CPU’yu kategorize etmek için çok belirsiz hale geldiğini söylemek doğru olacaktır.

Bir yan not olarak, mikrokod zaten silikona gömülüdür, ancak Intel’in bir hata veya güvenlik açığı keşfedildiğinde CPU’larını üretimden sonra düzeltmesine izin vererek güncellenebilir. Önceki makaleleri okuduysanız (örneğin N64 veya PS2), Intel’in mikro kodu genel olarak erişilebilir değildir (daha da belgelenmiş değil) ve Intel, tek ‘bakıcı’ dır.

Çekirdek

Image
Coppermine dizaynı.

Intel, P6 mikromimarisini uygulayan birçok çip sevk etti. Xbox, Coppermine adlı bir model içerir. Bu aynı zamanda Pentium III’ün ikinci revizyonu olarak markalanmıştır (‘Katmai’ çekirdeğinin yerini alır) ve şu bileşenlere sahiptir:

Coppermine ayrıca L2 önbelleğin orijinal uygulamasına iki ‘geliştirme’ ekler, bunlar Advanced Transfer Cache (Gelişmiş Transfer Önbellek) ve Advanced System Buffering (Gelişmiş Sistem Tamponlama)’dır. Özetlemek gerekirse, L2 önbellek çipte yer alır ve veriyolları daha geniştir, bu da Ön yüz veriyolunda olası darboğazları azaltmaya yardımcı olur.

Son olarak, çip, anakart üzerine takılan ‘Micro-PGA2’ soketini kullanır, ancak diğer tüm konsollar gibi, Xbox’un üzerine ‘Ball Grid Array’ veya ‘BGA’ ile lehimlenmiştir.

P6 ve Pentium numaralarının sonu

İşte biraz daha tarih. P6 yıllarının ardından Intel, ‘NetBurst’ mikromimarisini (Pentium IV’de kullanılan) başarılı bir şekilde takip etmeyi planladı. Ancak, ardıllık çizgisi de burada sona erdi. NetBurst birçok modern tekniği uygulamasına rağmen [5], aşırı güç tüketimi, ısı emisyonu (ortalama 85 W [6]) ve ölçeklendirilebilirlik sorunlarından dolayı sıkıntılar yaşamıştır - tüm bunlar tasarımın daha fazla devam etmesini engellemiştir.

Sonuç olarak, bu durum İsrail’deki Intel ekibini düşük güçlü P6 CPU’larını - ‘Pentium M’ - yeniden gözden geçirmeye ve daha güçlü bir ardıl geliştirmeye sevk etti. İlk sonuç Yonah çekirdeği idi, P6 tasarımının hafif bir gelişimi, Core Solo veya Core Duo olarak markalandı. Bununla birlikte, güç tüketimi makul rakamlara düştü (varyanta bağlı olarak 27 W [7] ile 31 W [8] arasında değişmektedir). Aylar sonra, Core mikromimarisi P6’nın (ve NetBurst’ün) amiral gemisi ardılı oldu ve yeterince kafa karıştırıcı bir biçimde raflara Core 2 işlemci serisi olarak ulaştı. Yıllar içinde, ardışık mikromimari gelişmeleri birçok yönü iyileştirdi, ancak aynı hataları tekrarlamadan NetBurst’ten unutulan unsurları yeniden dahil etmeyi başardı.

İlginç bir not olarak, Yonah çekirdeğinin isimlendirilmesinin Yunus Kitabı için bir metafor olup olmadığını merak ediyorum, özellikle de peygamberin sonunda Ninova şehrini kurtarmak için yolunu düzeltmeyi başardığı olayla bağlantılı olarak. Gerçi bunu fazla düşünüyor da olabilirim.

Anakart Mimarisi

PC tarihinin bir noktasında, anakartlar o kadar karmaşık hale geldi ki, yeni ihtiyaçları etkili bir şekilde ele almak için temelden tasarlanmış yeni tasarımlar geliştirilmek zorunda kaldı.

Image
Xbox Anakart Genel Bakış.

Geliştirilen yeni standart, çoğu anakart fonksiyonunu işlemek için iki ayrılmış yonga kullanmaya dayanıyordu. Bu yongalar şunlardır:

Bu yongaların birleşimi yonga seti olarak adlandırılır ve bir anakartın yeteneklerini ve performansını koşullandırmak için yeterince önemlidir. Xbox, bir PC’ye çok yakın olduğu için, iki yongayı da içerir: NV2A, Northbridge ve GPU’nun bir kombinasyonu; ve MCPX, geri kalan I/O’yu işler.

Her iki yonga da HyperTransport adlı özel bir otobüsü kullanarak birbirine bağlıdır. Bu teknolojiyi bazı PC anakartları da içeriyordu, sadece farklı bir marka ile (nForce MCP-D).

Bellek Düzeni

Xbox, toplamda 64 MiB DDR SDRAM içerir; bu tür RAM, rakiplerin sunduğuna göre çok hızlıdır. Ancak, bu RAM türü tüm sistem bileşenleri arasında paylaşılmıştır. Dolayısıyla, bir kez daha, karşımıza başka bir unified memory architecture (birleşik bellek mimarisi) veya ‘UMA’ düzeni çıkıyor.

Image
Anahtarlama ağının temsili. GPU iki banka kullanırken, CPU farklı bir banka kullanır ve bu süreçte çatışmayı azaltır.

Daha önce ne kadar sorunlu olabileceğini görmüştük. Yine de, programlar verilerini belleğin farklı bankalarına yayarak bu sorunu ele alabilir. NV2A, farklı ünitelerin (CPU, GPU vb.) aynı anda bunlara erişmesini sağlayan bir anahtarlama ağı uygular [9] [10].

Ayrıca, konsol dahili bir sabit disk içerir ve tesadüfen geçici depolama için ayrılmış 750 MiB’lik üç bölüm içerir. CPU, bazı verilerini ana RAM’den taşıyabilir ve gerektiğinde geri yükleyebilir. Ancak, bu manuel bir süreçtir ve sanal RAM içermez.


Grafikler

Daha önce gördüğümüz gibi, grafik işlemcisi NV2A çipinde bulunur ve MCPX gibi, Nvidia tarafından üretilmiştir.

Image
Xbox’ın anakartındaki Nvidia NV2A paketi.

Bu şirket uzun süredir grafik işinde bulunmaktadır; GeForce serileri bilgisayar pazarında en popüler GPU markalarından biridir ve doğrudan ArtX/ATI’nin Radeon serisi ile rekabet eder. Genel olarak, bu, Microsoft’un konsol pazarındaki ilk denemesine rağmen Xbox’taki grafik kalitesi üzerinde iyi bir etki sağlar.

Her şey mantıklı görünüyor, ancak o zaman gerçekten bu kararı vermek kesin bir karar mıydı? Microsoft’un o dönemde Nvidia’yı diğer popüler markalardan (3dfx, PowerVR, S3, vb.) neden seçtiğini öğrenmek için şu anki tarihe güvenmek kolaydır, ancak o zamanlar rekabeti daha karmaşık hale getiren birçok seçenek vardı.

Image
Halo (2001) Xbox’ın 720p modunda çalışırken.

Örneğin, 3dfx’in popüler ‘Voodoo 2’ serisi, 90’ların sonuna kadar PC pazarının ~%70’ini elinde bulunduruyordu [11], Nvidia ise yeni ’GeForce 256’yi (GeForce serisinin ilk modeli) benimsetmekte zorlanıyordu. Bu durumda, Microsoft’un seçimi şimdi daha çok bir risk gibi görünüyor, ancak şu anda bildiğimiz gibi, bu risk sonunda karşılığını verdi.

1999’da Nvidia, şu an oldukları #1 oyuncu değillerdi. Sıkıntıdaydılar. Yeni GeForce mimarisi hala gençti ve birçok kişi onu beğenmiyordu. Şimdi her şey bitmiş gibi görünüyor. Ancak bunu bilmek için o tarihle ilgili araştırma yapmanız ve neden onu kullanmak için savaşmam gerektiğini bilmeniz gerekirdi. Haklıydım ama haklı olduğumu bilmiyordum; çok endişeliydim.

Seamus Blackley (Orijinal Xbox’ın ortak yazarı)

Sonraki bölümde, bu çipin iç işleyişini inceleyeceğiz. Şimdi, korkarım ki, CPU bölümü gibi birçok terim ve pazarlama terimi içinde karıştık, ama korkmayın! Temellerle başlayacağım.

Mimari ve Tasarım

NV2A üzerinde bulunan GPU çekirdeği, popüler ‘GeForce3’ serisine dayanmaktadır [12] [13], aynı zamanda Nvidia’nın teknik belgelerinde NV20 olarak adlandırılır.

Image
NV2A’nın pipeline tasarımı.

Lütfen unutmayın ki, Xbox’ın GPU’sunun pipeline NV20 mimarisine dayanmasına rağmen, NV2A’nın geri kalan NV20 serisi ile uyumlu olmayan bazı modifikasyonlara sahiptir (en önemlisi, bir UMA ortamında çalışacak şekilde adapte edilmiştir).

Analiz edilen üniteler, bu makalenin kapsamını aşan birçok özelliğe sahiptir, bu nedenle bu bölüm ilginizi çekiyorsa kaynakları/bağlantıları kontrol etmenizi öneririm. Ayrıca, grafiklerle ilgili terimler sürekli evrildiği için (bu da bazı karışıklıklara yol açabilir), Xbox’ın yayınlandığı yıllarda Microsoft/Nvidia tarafından kullanılan terimlere güvenmeye karar verdim, bu nedenle diğer kaynaklardan daha fazla grafiklerle ilgili makaleler okumayı planlıyorsanız bunu hatırlayın.

Bunu söylendikten sonra, Xbox’da karelerin nasıl çizildiğine bir göz atalım. Bazı açıklamalar GameCube’un Flipper ile çok benzer olduğu için, bu makaleyi takip etmekte zorlanıyorsanız, bu makaleyi de okumanız size yardımcı olabilir.

Komutlar

Image
Komut aşaması.

İlk ve en önemlisi, GPU’nun CPU’dan komut alabilmesinin açıklanmasıdır. Bu işlem için GPU, grafik komutlarını etkin bir şekilde alıp işleyen bir komut işlemcisine sahiptir ve buna PFIFO denir (grafik komutları Pushbuffer olarak adlandırılır), ardından paketten çıkarılan komutlar PGRAPH (grafik işlemeden sorumlu blok) ve diğer motorlara iletilir.

Flipper gibi, geometrinin komut içine gömülmesi gerekmez. PGRAPH, grafik verilerini göndermek için birçok yöntem sunar. Örneğin, CPU, vertex verilerini içeren bir bellek içinde bir tampon ayırabilir ve ardından GPU’ya onları bu konumdan alması talimatını verebilir. Bu yaklaşım, tekrarlanan geometrinin gönderilmesini önlediği için verimli olabilir.

Sonraki açıklamalar PGRAPH içinde gerçekleşir.

Vertex

Image
Vertex aşaması.

Bu özellikle bu GPU için ilginç bir bölümdür. Bu aşamada GPU, geometrimiz üzerinde vertex dönüşümleri uygulama yeteneği sunar. Bu özelliği Flipper ile zaten görmüştük, ancak bu GPU, programlanabilir bir motor kullanır. Yani geliştiriciler, hangi vertex işlemlerinin nasıl gerçekleştirileceğini belirleyebilirler, önceden tanımlanmış bir programa güvenmek yerine. Bununla birlikte, NV2A aynı zamanda ‘sabit’ modda çalışabilir, eğer gerekiyorsa.

Bu aşama, bir Vertex Ünitesi tarafından yönetilir ve NV2A’da iki tanesi vardır. Her biri en fazla 136 komut içeren bir program yükleyebilir (aynı zamanda mikrokod olarak adlandırılır). Bu programa vertex programı denir ve çalışma zamanında yüklenir. Bir vertex programı şu işlemleri gerçekleştirebilir [14]:

Kısacası, vertex ünitesi, vertex’leri kayıtlarında manipüle ederek işler. Diğer bir deyişle, bir kere program yüklendikten sonra, 16 salt okunur kayıt ( ‘input kayıtları’ olarak adlandırılır), bir vertex’in öznitelikleriyle başlatılır (her vektör dört bileşen içerir). Daha sonra, ünite, giriş kayıtlarını kullanarak (program tarafından talimatlandırıldığı gibi) işlemin kümesini gerçekleştirir. Dahası, hesaplamaya yardımcı olması için 12 yazılabilir kayıt ve en fazla 196 sabit sağlanır. Son olarak, elde edilen vertex, başka bir blokta bulunan 11 yazılabilir kayda (her biri belirli bir amaçla sınırlı) saklanır ve bir sonraki aşamaya iletilir. Bu süreç, alınan her vertex için tekrarlanır.

Piksel

Image
Fragment/Pixel aşaması.

Bu aşamada, vertex’ler piksellere dönüştürülür. İşlem, her üçgeni çizmek için piksel üreten bir pikselleştirici (rasteriser) ile başlar. NV2A’nın pikselleştiricisi döngü başına dört piksel üretebilir.Ardından, bellekten dokuları çekmek için 4 texture shader kullanılır [15], bunlar aynı zamanda anizotropik filtreleme, mipharitalama ve shadow buffering uygulamak için otomatik olarak sunar. Gölgeleme işlemi, bir pikselin görünür mü yoksa aydınlatma kaynağı tarafından gölgelenmiş mi olduğunu test etmek için kullanılır, böylece doğru renk uygulanabilir. Bu noktada, GPU aynı zamanda kırpma ve erken bir Z-testi gerçekleştirme olanağı da sunar (NV2A, Z-buffer’ı orijinal boyutunun dört katına sıkıştırarak bant genişliğini tasarruf etmeye katkıda bulunarak birçok performans iyileştirmesine neden olur).

Sonuçta elde edilen pikseller, bir ortak kayıt kümesine depolanır ve ardından her biri bunlara aritmetik işlemler uygulayan 8 register birleştiriciden geçirilir. Bu işlem, GPU tarafından yürütülen bir başka tür program olan piksel shader’larının kullanımıyla programlanabilir bir nitelik taşır [16]. Her döngüde, her bir birleştirici, kayıt kümesinden RGBA değerlerini (RGB + Alpha) alır [17]. Ardından, shader tarafından belirlenen işleme dayanarak değerleri işler ve sonucu geri yazar. Son olarak, daha büyük bir miktar değer, yalnızca speküler renkleri karıştırabilir ve/veya sis ekleyebilen son birleştiriciye gönderilir.

Register birleştiricileri, Texture Environment Unit ile benzer bir şekilde programlanabilir. Yani belirli bir kombinasyonu ayarlarıyla register’ları değiştirerek. Xbox’ın durumunda, PFIFO, PGRAPH’ı kurmak için pushbuffer’ları okur, bu da register birleştiricilerini ve doku shader’larını içerir.

Post-processing (İşlem Sonrası)

Image
Post-processing aşaması.

Piksellerin çerçeve belleğine yazılmadan önce, NV2A, ana bellekte ayrılmış blokları kullanarak gerekli testleri (alfa, derinlik ve damga) gerçekleştiren dört adanmış motor içeren Raster Output Unit veya ‘ROP’ içerir. Son olarak, piksel toplulukları (her biri dört piksel) yalnızca bu testleri geçerse geri yazılır.

Ayrıca, çerçeve belleği multisampling (çok örnekleme) bir teknik olan çok örneklemeli kullanılarak anti-aliasing uygulanabilir [18]. Aslında bu teknik, çokgenlerin kenarlarını, sürece eklenen farklı ofsetlerle birden çok kez örneklemektedir. Ardından, tüm örnekler ortalama alınır ve anti-aliased görüntüyü oluşturmak için kullanılır. Bu yaklaşım, önceki (ve daha fazla kaynak tüketen) anti-aliasing işlevini olan ’çok örneklemeli’yi, önceki Nvidia GPU’ları tarafından kullanılanı, değiştirdi.

Programlanabilirliğin Önemi

Nvidia’nın geliştiricilere sunduğu yeni programlanabilirlik modelinin önemini vurgulamayı çok önemli buluyorum. Yıllar önce, grafik boru hattının büyük bir kısmı CPU tarafından hesaplanırken, GPU’ya pikselleştirme (rasterisation) işlemlerini hızlandırma görevi bırakılmıştı. ’Shader’lar (piksel shader’lar ve vertex programları için referans) tanıtıldığında, programcılar GPU’nun kaynaklarından faydalanarak boru hattındaki birçok hesaplamayı hızlandırabilir, CPU üzerindeki büyük bir iş yükünü hafifletebilir.

‘Shader’ kavramı, Pixar’ın 1989’da Renderman’ı genişletmek için geliştirdiği bir yöntem olarak tanıtıldı [19], bu, 3D renderlama için kullanılan öncü yazılımlarından biriydi. Bu, 3D grafiklerin çoğunlukla endüstriyel ekipmanlar tarafından işlendiği zamanlara denk geliyor. Daha sonra, belirli konsolların benzer prensipleri dahil ettiğini gördük, ancak Nvidia GeForce3 serisini piyasaya sürdüğünde, shader’lar tüketici pazarında bir standart haline geldi.

Vertex programı tarafından elde edilen karmaşık animasyon.
Piksel shader’lar ile elde edilen farklı doku efektleri.
ChameleonMark (2002), GeForce3’ün shader’larını sergilemek için Nvidia tarafından geliştirilen bir demo.

Vertex programları sayesinde GPU, model dönüşümlerini, aydınlatma hesaplamalarını ve doku koordinatı oluşturmayı hızlandırabilir. Sonuncusu, Higher Order surfaces oluşturmak için esastır. Bu sayede CPU, daha iyi fizik, yapay zeka ve sahne yönetimi sağlamaya odaklanabilir.

Piksel shader’ların durumunda, programcılar farklı efektler elde etmek için tekstürleri çoklu yollarla manipüle edip karıştırabilir, çoklu doku, speküler haritalama, çıkıntı haritalama, çevre haritalama vb.

Bu yaklaşımın getirdiği yeni bir programlama konsepti, General Purpose GPU (Genel Amaçlı GPU) veya ‘GPGPU’dur ve GPU’ya özgü olmayan görevleri GPU’ya atamaktan oluşur. Bu, GPU’nun sadece grafik boru hattının çoğunu ele geçirmekle kalmayıp aynı zamanda özel hesaplamalar için etkili bir işlemci olarak hareket edebilmesi anlamına gelir (örneğin, fizik hesaplamaları). Bu, GPU’lar daha güçlü ve esnek hale geldikçe gelişecek yeni bir alandır. Ancak NV2A, donanım yeteneklerinin (vertex ve piksel shader’lar) ve geliştirilen özel API’ların (OpenGL’in ’state programları’) bir kombinasyonu sayesinde bunu başarabiliyordu.

Shader’ların gelecekteki makalelerde düzenli olarak ele alınacağını düşünüyorum. Ancak bu makalede, bunların biraz ‘ilkel’ olarak kabul edilebileceğini ve bazı insanların piksel shader’ların günümüz GPU’ları tarafından sunulanlarla hatta ‘shader’lar’ olarak kabul edilemeyeceğini iddia edebileceğini unutmayın.

Xbox’ın Çerçevesi

Oyunların standart çözünürlüğü 640x480’dir, bu altıncı neslin standartıdır. Ancak, bu kısıtlama sadece bir sayıdır: GPU, 4096x4096’ya kadar olan çerçeve belleklerini çizebilir, ancak donanımın kabul edilebilir performans sağlayıp sağlamayacağı ayrı bir konudur. Öte yandan, konsol, ekran ayarlarını genel olarak yapılandırma olanağı tanır, bu da pioner özellikleri (örneğin geniş ekran ve ‘yüksek çözünürlük’) geliştirmeye yönlendirebilir, geliştiricilerin bunları keşfetmelerini beklemek yerine (Gamecube/Wii’de olduğu gibi).

Öte yandan, video kodlayıcı, çerçeve belleğinde ne varsa TV’niz tarafından anlaşılabilir bir formatta yayınlamaya çalışacaktır. Bu, oyunlar HD çıkış yapmadıkça (örneğin 720p veya 1080i, ki bunu sadece birkaç oyun yapar), geniş ekran görüntülerin anamorfik hale geleceği anlamına gelir.

Bu söylendiğine göre, bu konsol hangi sinyalleri yayınlar? Oldukça fazla. Xbox, tipik PAL/NTSC kompozitin yanı sıra YPbPr (‘component’ konektörlerini almak için ekstra bir aksesuar gerekir) ve RGB (hem SCART hem de VGA uyumlu) sunar. Sonuç olarak, pahalı adaptörlere ve benzeri şeylere ihtiyaç duymadan oldukça kullanışlıdır.


Ses

Bu konsolun ses alt sistemi, profesyonel ses ekipmanı ve ATX anakart teknolojisinin etkisi altında büyük ölçüde geliştirilmiş olup, bazı özgün bileşenleri içermektedir. MCPX, iki ses bileşeni içerir: Ses İşlem Birimi ve Ses Denetleyici Arabirimi.

Ses İşlem Birimi veya ‘APU’, özel bir ses işlemcisidir ve üç alt bileşenden oluşur:

APU yalnızca ses verilerini işler ancak çıkış yapamaz. Çıkış işlemi ACI’nin görevidir; ses verilerini RAM’den okur, çözümler ve sonucu PCM stereo örneği olarak gönderir (48 kHz örnekleme hızında 16 bit çözünürlük).


Giriş/Çıkış

Daha önce belirttiğim gibi, tüm I/O erişimini bir araya getiren bir ‘Southbridge’ alt sistemimiz var. Bu Southbridge MCPX yongası aracılığıyla gerçekleştirilir.

Image
Konsol mimarisinin ana şeması. MCPX’in I/O’nun çoğunu nasıl kontrol ettiğine dikkat edin.

Bu arada MCPX, PC muadili olan nVidia nForce Multimedia and Communications Processor veya ‘MCP’ den türetilmiştir. Bu, nForce 220/415/420 yonga setini kullanan anakartlarda bulunur [20].

Harici arabirimler

Konsol, şu harici bağlantı noktalarını içerir:

Dahili arabirimler

MCPX ayrıca farklı alt sistemleri birbirine bağlamak için kullanılan aşağıdaki arayüzleri ve protokolleri sağlar:

Kontrolcü

Xbox, The Duke adı verilen hantal bir kontrolörle geldi, giriş seti diğer rakiplerin sahip olduklarından farklı değildi… yüz düğmelerinde analog devre (8 bit genişliğinde) kullanımı dışında, oyunların düğme setinin çoğundan ‘yarım basışları’ algılamasına izin veriyordu. Öte yandan, The Duke o kadar çok eleştiri aldı ki Microsoft, konsolun piyasaya sürülmesinden aylar sonra onun yerine Controller S adlı yeni bir revizyonu çıkardı.

Image Image
The Duke (2001) [21].
Image Image
Controller S (2002) [22].

Daha yakından bakıldığında, her iki denetleyici de özel bir bellek kartını takmak için iki Memory Unit yuvası içeriyordu, bu da kayıtların konsollar arasında paylaşılmasını sağlıyordu. Bunu fark ettikten hemen sonra, bu özelliğin bir önceki rakipten miras alındığını varsaydım. Bu makaleyi yayınladıktan günler sonra, bu konsolun ortak yaratıcısı olan Seamus Blackley’a gönderdim ve o da bana oldukça ilginç yorumlarla hızlı bir şekilde yanıt verdi. Dreamcast benzerlikleriyle ilgili olarak, bana şunları söyledi:

Dreamcast ile ilişkisi sadece tarihsel bir önyargıdır. Bu kazara oldu.

Seamus Blackley

Gerekli bir adaptör

Bu denetleyicilerle ilgili başka ilginç bir gerçek de bunların sadece bir breakaway dongle olarak adlandırılan bir şekil adaptörü kullanılarak bağlanabilmesidir; bu, biri takıldığında kazaları önlemek için tasarlanmıştı.

Sanırım aynı zamanda bir Xbox yüksek bir raftaysa ve birisi denetleyiciyi çekerse, bu ağır konsolu bir çocuğun başının üzerine çekecek şekilde plan yapmışlardı.

Xbox kullancısı


İşletim Sistemi

Tamam, hadi odadaki fili ele alarak başlayalım.

Windows çalıştırabilir mi?

Korkarım ki bu bir evet ve hayır cevabı: Bu konsolda bir ‘Windows’ var, ancak PC kullanıcılarının beklediği biçimde değil.

İlk olarak, Xbox’un işletim sistemi bir Çekirdek ve kullanıcı arayüzü uygulamaları (örneğin, Dashboard) oluşur. Bu, sırasıyla 1 MiB Flash ROM ve HDD’de saklanır.

Çekirdek, Windows 2000’nin çekirdeğinden önemli bir kod tabanını ödünç alır [23] (ki bu da modern Windows NT mimarisine dayanmaktadır). Sonuç olarak, Xbox donanımı için gerekli bileşenleri içeren kırpılmış bir Windows 2000 çekirdeği elde edilir. Bu nihayetinde optimal bellek verimliliği için tek bir yürütülebilir dosyada sıkıştırılır ve paketlenir. Sonuç olarak, oyun için özel olarak tasarlanmış, yüksek optimize edilmiş bir Windows makinesi olarak düşünebilirsiniz.

Xbox projesinin başında DirectX ekibi bulunuyordu [24]. Bu nedenle, kökeni Dreamcast’e API’lerini getiren Windows CE ekibiyle ilgili değildir.

Önyükleme İşlemi

Pentium tabanlı sistemlerde olduğu gibi, sistem açıldığında CPU, reset vektörü (adres 0xFFFF.FFF0) adresinde bulunan komutları çalıştırmaya başlar. Xbox için bu adres MCPX’te bulunan gizli bir ROM’a işaret eder (daha fazla ayrıntı ‘Korsanla Mücadele ve Homebrew’ bölümünde açıklanmıştır). MCPX, güvenlik sistemini başlatmak için rutinler içerir ve ardından Flash ROM’dan önyüklemeye devam eder. Flash ROM içinde, Xbox donanımını başlatır, küçük bir çekirdek önyükler ve karşılık gelen ekran animasyonunu gösterir.

Güvenli başlatma sırasında CPU, korumalı moda geçer. Bu kritiktir çünkü x86 CPU’lar ilk işlemciyle (Intel 8086) uyumluluğu korumak için her zaman gerçek modda başlar, ancak programcıların CPU’nun modern özelliklerine (1 MiB’den fazla belleğe erişebilmek gibi) erişmeleri gerekiyorsa, korumalı moda geçerek bunları manuel olarak etkinleştirmeleri gerekir.

Çekirdek yüklendiğinde, CPU’ya mikro kod enjekte eder (programlamak için değil, daha ziyade güncellemek için). Son olarak, çekirdek geçerli bir DVD diski olup olmadığını kontrol eder. Eğer geçerli bir disk vardsa, çalıştırır. Aksi takdirde, Hard Drive’da depolanan bir kullanıcı etkileşimli kabuk yükler.

Yeşil ekran

Şimdi, bir oyun diski takılmadığında Xbox’un yüklediği programı inceleyelim: Dashboard.

Etkileşimli kabuk

Image
Ana ekran.
Image
Ayarlar ekranı.
Dashboard birden çok hizmet sunar.

Dashboard, PlayStation menüsü veya GameCube’un IPL’si ile karşılaştırıldığında işlevsellik açısından çok farklı değildir. Temelde, kullanıcıların bekleyebileceği tüm işlevleri içerir: Bazı ayarları düzenleme, kayıtları taşıma, DVD filmleri veya CD sesi oynatma; ve benzeri.

Bahsedilmeye değer bir şey, Dashboard’un ayrıca müziği bir ses CD’sinden kopyalayıp HDD’ye saklama yeteneği sunmasıdır. Bu müzik daha sonra herhangi bir oyundan alınabilir ve müzikleri ‘kişiselleştirmek’ için kullanılabilir. İlginç!

Güncellenebilirlik

Evet, bu resmi olarak güncellenebilen ilk nesil konsol, ancak sadece HDD içeriği yazılabilir. Kernel kısmı (Flash ROM’da) yeniden yazılamaz, ancak sistem, belleğe yüklendikten sonra güncelleyebilir. Kernel güncellemeleri bu nedenle HDD’de saklanır.

Güncellemeler, perakende oyunlar aracılığıyla dağıtılır ve/veya sistem Xbox Live ağ hizmetine bağlandıktan sonra indirilir (daha fazlası ilerleyen bölümlerde).

Bazı güncellemeler, sistem işlevselliğini artırdı. Örneğin, ilk Xbox birimleri Xbox Live’ı içermiyordu, bu nedenle oyunlar, bu hizmeti yüklemek için bir güncelleme şeklinde gerekli dosyaları içeriyordu. Diğer güncellemeler güvenlik açıklarını düzeltmeye odaklandı.


Oyunlar

Bu bölüm biraz kafa karıştırıcı olabilir, özellikle diğer konsollara göre düşük seviyeli belgelerin eksikliği nedeniyle. Microsoft/Nvidia’nın gerçekten geliştiricilerin kütüphanelerini kullanmalarını ve her şeyi unutmalarını istediği gibi görünüyor. Bu yine de ilginç bir stratejidir.

Her durumda, mümkün olduğunca bilgilendirici bir şekilde belgelemeye çalıştım, ancak çok derine inmeden.

Geliştirme ekosistemi

Bu konsolda oyun geliştirmek, kütüphaneler, terimler ve benzeri açılardan oldukça karmaşıktır. Bu nedenle bunu Framework’lere göre ayırdım.

Donanım Soyutlama

Image
HAL’nin temsili.

‘Bir mikro kodlu programlanabilir yardımcı işlemci’ gibi unsurların genellikle başta çok ses getirdiğini, ancak geliştiricilerin yeni donanımın gerçek karmaşıklığını keşfettikçe yavaşça azaldığını gördük.

Geliştirici perspektifinden, bu konsolun çekiciliğinden biri, düşük seviyeli işlevleri etkili bir şekilde yönetebilen popüler yüksek seviyeli kütüphanelerin bulunmasıydı. Microsoft ve Nvidia’nın stratejisi, donanımlarının her düşük seviyeli yönünü belgelemek yerine, donanımın iç işleyişi hakkında tam bilgi gerektirmeden geliştiricilerin bulmayı bekleyeceği işlemleri gerçekleştirebilen tam işlevli bir donanım soyutlama kütüphanesi sağlamaktan ibaretti.

Bu konsol için geliştirme yapmak için birkaç SDK bulunmaktadır; bazıları ‘resmi’ ve kısıtlayıcıyken, diğerleri ‘pek de resmi olmayan’ ama esnek olanlardır. En popüler olanlara bir göz atalım.

Microsoft XDK

Image
XDK yapısı

Microsoft’un Xbox Development Kit veya ‘XDK’, Xbox geliştirmek için kullanılan resmi SDK’dır. Bu, birçok aracı, kütüphaneyi ve derleyiciyi içeren bir pakettir. Özellikle, o dönem için oldukça bir IDE olan Visual Studio .NET (2002 sürümü) ile birlikte kullanılır.

Grafik kütüphanesi, Xbox özel özellikleri de içerecek şekilde genişletilen Direct3D 8.0’in özel bir uygulamasıdır. Direct3D, birçok GPU ile uyumlu kod geliştirmek için kullanılan çok güçlü bir API idi. Bu sayede, (teoride) PC geliştiricileri oyunlarını pek çok değişiklik yapmadan taşıma fırsatına sahipti. Ancak, vertex programları ve piksel shader’lar için kullanılan sözdizimi neredeyse tamamen montaj dilini anımsatır.

Bunun dışında, ses işlevselliği, ses verilerini taşıma konusunda endişe etmeden APU ile ilgilenen DirectSound tarafından sağlanır. Çok oyunculu gibi çevrim içi işlevselliğe ulaşmak için oldukça uygun olan bazı ağ kütüphaneleri de bulunmaktadır. Ağ API’si, yalnızca Windows tabanlı bir protokol kullanarak ağ iletişimini basitleştirmeye yönelik Microsoft’un girişimidini temsil eden Windows Sockets üzerine dayanmaktadır (ancak BSD soketlerine dayanan standartlaştırılmış bir tasarıma sahiptir).

Bunları denemek için Microsoft, kendi geliştirme kiti donanımlarını dağıttı, bu sadece çift RAM (toplamda 128 MiB) ile yeşille kaplı perakende bir ünitedir ve bazen farklı bir MCPX yongası içerir (Flash ROM’dan doğrudan önyükleme yapan MCPX-2 olarak adlandırılır). Bu, XDK tarafından imzalanmış yürütülebilir dosyaları başlatan bir geliştirme kiti sürümü içerir. Öte yandan, Xbox Neighbourhood (Xbox Komşusu) (bir Windows uygulaması), geliştirme kiti ile Visual Studio’yu bağlamak için kullanıldı ve böylece kolayca dağıtma ve hata ayıklama yapma imkanı sağlar. Xbox Live ile deneme yapmak için Microsoft ayrıca sandbox sunucuları sağladı.

NXDK

Image
NXDK yapısı. Dikkat edilmesi gereken, bazı düşük seviye kütüphanelerin yüksek seviyeli olanlarla sarmalanmış olmasına rağmen, geliştirici tarafından hala erişilebilir olduğudur

Homebrew geliştiricilerine resmi SDK kullanımında Telif Hukuku davalarını önlemek için, Microsoft ile bağlantılı olmayan bir grup geliştirici, resmi SDK’nın bir alternatifi olan Open XDK’yı oluşturdu. Birkaç yıl sonra geliştirmesi durdu, bu nedenle başka bir grup onu devraldı ve yeni bir çatalı New XDK veya ‘nxdk’ olarak adlandırdı.

Devam eden proje, düşük seviyeli donanım bileşenlerini (mikro kod, push-buffer, vb.) tersine mühendislik yaptı ve sistemin her bölümüne yüksek seviyeli çağrılar sağlayan C/C++ dilinde yeni bir API tasarladı.

Direct3D’ye güvenmeden grafik katmanını basitleştirmek için nxdk, CG derleyicisini kullanır [25]. CG, shader geliştirmek için Nvidia tarafından oluşturulan bir dildir. CG, Xbox ile uyumlu kodu üretmek üzere diğer derleyicilerle zincirlenir. Derleme sırasında, CG kodu NV20 uyumlu montaj diline dönüştürülür, ardından bu, NV2A uyumlu mikro kodu ve pushbuffer üretmek için özel bir derleyici kullanılarak tekrar çevrilir. CG kullanmak istemeyenler için nxdk, düşük seviyeli shader’lar yazmak için geri kalan derleyicileri de açığa çıkarır.

Kullanılabilecek diğer API’lar, diğer hizmetleri yönetir (ses, ağ vb.). Sonuç olarak, bu kütüphane, Microsoft’un API’larını (tümüyle mülkiyeti olan de facto standart) kullanmamak karşılığında donanım üzerinde daha fazla kontrol sağlar. Bununla birlikte, nxdk, yasal Homebrew programları geliştirmek için en uygun seçenek olarak kalmaya devam eder.

Medya Ortamı

Oyunlar çift katmanlı DVD diskler üzerine dağıtılır (8.5 GB’a kadar!), ve bunlar daha sonra özel bir DVD sürücüsü tarafından okunur ve bu sürücü, standart bir arabirim olan ATA’ya rağmen korsanlığa karşı korumalar içerir. XDK, verilerin diskin düzenini özelleştirmek için bazı araçlar içerdiğini belirtmekte fayda var, bu da programcıların okuma hızlarını iyileştirmelerine olanak tanır!

Şimdi, konsol aynı zamanda dahili 8 GB HDD içerir, oyunlar bunu kayıtları saklamak veya geçici içerik önbelleğini kullanmak için kullanır. Öte yandan sistem, dashboard, Xbox Live ayarları ve ağ ayarlarını saklar.

Ağ hizmeti

Modemlere veya deneysel hizmetlere takılmanıza gerek yok. Xbox, bir Ethernet bağlantısı ve merkezi bir çevrim içi altyapı (adı Xbox Live) sağlamak için şu anda genellikle kabul ettiğimiz her şeye sahipti.

Image
Xbox Live Logo.

Dahası, Xbox Live sadece çevrim içi çok oyunculu değil, aynı zamanda gerçek zamanlı sesli sohbet için ses paylaşımı da içeriyordu.

Ancak Xbox Live tam olarak nedir? Şirketlerin çevrim içi platformlarını oluşturmak için kullanabilecekleri bir dizi birbirine bağlı çevrim içi hizmetten ibaretti. Örneğin, hizmetlerden biri kullanıcı profillerini sağlar, böylece stüdyolar bir oyunun çevrim içi işlevlerine erişirken kimlik doğrulama yöntemi olarak kullanabilir. Resmi SDK’da, Microsoft, Xbox Live sunucuları ile iletişim kurmak için bazı API’ları içerir.

Microsoft’un Xbox Live erişimini kime vereceğini kontrol ettiğini belirtmek önemlidir, bu nedenle geliştiricilerin oyunları tarafından kullanılacak kimlik doğrulama anahtarlarını almak için Microsoft’a kaydolmaları gerekecektir.

Gerçek çevrim içi deneyim, Title Server (Başlık Sunucusu)’da gerçekleşir, bu da dünya genelinde istemcilere (Xbox konsolları) cevap veren ve gerçek zamanlı iletişimi yöneten bir sunucu türüdür. Microsoft, SDK’larında bu tür sunucuları nasıl oluşturacaklarını göstermek için bazı örnekler sağlamıştır, ancak bunlar Windows sistemlere dayanıyor ve Windows Server çalıştıran veri merkezlerine dağıtılmak üzere tasarlanmıştır.

Yeni bir trendin başlangıcı

Microsoft’un Xbox Live uygulamasını analiz ettikten sonra bunun sektör üzerindeki etkisini inceledik. şimdi oldukça açık görünüyor, değil mi? ‘Doğru çevrim içi oyun’ tarifi (yani Ethernet + Altyapı) her zaman oradaydı, ancak her şirket buna yatırım yapmak istemiyordu gibi görünüyor.

Aslında durum bu kadar basit değil: Microsoft, kullanıcılara bu işlevselliğe ‘ihtiyaçları’ olduğunu, çevrim içi çok oyunculu oyunun sadece isteğe bağlı bir ekleme olmadığını, ancak bazı oyunların temel bir parçası olduğunu ‘ikna etmek zorundaydı. Aksi takdirde, Microsoft’un çabaları sadece bir başka ’çevrim içi girişim’ anlamına gelecektir.

Konsol oyuncularının çevrim içi oyun istemediği ve kimsenin bir PC mimarisinin bir konsol olabileceğine inanmadığı bir dünya hayal edin. İşte gerçekten öyleydi. Şimdi açık gibi görünüyor ama ÖYLE DEĞİLDİ.

Seamus Blackley


Korsanla Mücadele ve Homebrew

Bu konsolun hazır bileşenler içerip içermediğinden bağımsız olarak, uygulanan bir dizi güvenlik önlemi bulunmaktadır.

Lütfen RSA şifrelemesinin burada tekrar eden bir konu olduğunu unutmayın, bunu daha önceki Wii makalesinde tanıtmıştım, bu nedenle RSA veya herhangi bir simetrik/asimetrik şifreleme sistemi hakkında bilgi sahibi değilseniz lütfen önce o makaleye göz atın.

Bunu söylendikten sonra, bir göz atalım.

DVD kopya koruması

Oyun diskleri, yetkisiz kopyalamayı önlemek için hem mantıksal hem de fiziksel olarak korunmaktadır (bu şaşırtıcı olmamalı artık).

Mantıksal tarafta, oyun diskleri, geleneksel DVD okuyucularını aldatmak için birkaç ‘tuzak’ içerir, bu nedenle bunlar gerçek oyun içeriğini bulamazlar. Örneğin, diskin ilk alanı geleneksel bir DVD gibi biçimlendirilmiştir ve bu bölümün içinde, bir Xbox sistemine takılmadığı takdirde bir uyarı mesajı bulunur. Gerçekte, oyun verileri ikinci bir bölümde bulunur, ancak bu bölümü bulmak için gereken meta veri, geleneksel DVD okuyucularının beklediği bir formatta şifrelenmediği için sadece özel bir okuyucu (bu nedenle Xbox’unki) oyunu bulacaktır.

Fiziksel tarafta, maalesef bu zamanda sürücü ve disk arasındaki doğrulamayı gerçekleştirmek için ne tür veri değiş tokuşu yapıldığı halka açık değildir. Disk, erişilemeyen bir iç halka (geleneksel okuyucular tarafından) içerir ve bu verilerin nasıl kullanıldığı bilinmemektedir.

Sistem Koruması

Microsoft’un uyguladığı güvenlik önlemlerinin geri kalanına bir göz atalım.

Giriş

BIOS’u içeren Flash ROM ve duyarlı verileri içeren EEPROM, bir RC-4 anahtarı kullanılarak şifrelenir. Çekirdek, BIOS’tan başlatıldıktan sonra, yalnızca Microsoft tarafından RSA şifreleme kullanılarak imzalanmış yürütülebilir dosyaları başlatacaktır.

Öte yandan, HDD tamamen özel ve belgelenmemiş bir dosya sistemi olan FATX ile biçimlendirilmiştir.

Bu, Microsoft’un uyguladığı güvenlik zincirine kısa bir girişti. Oldukça basit görünüyor, değil mi? Peki, bir şey garip: Yürütme, CPU tarafından kontrol edilir, ancak bu, hazır bir çiptir, bu nedenle RC-4 ile şifrelenmiş verileri nasıl anladı? Cevap şudur ki, anlamaz, bu nedenle bu konsolu piyasaya sürdükten sonra çatlamak için uğraşan hackerların hedefi olan şifrelemenin ilk aşamasını ayarlayan şifrelenmemiş bir kod bir yerde bulunmaktadır. Özellikle bu kod, piyasaya sürüldükten sonra bu konsolu kırmaya çalışan çoğu bilgisayar korsanının hedefiydi.

Bootstrap araması

Intel’in işlemcilerinin yürütmeye başlayacağı adresin 0xFFFF.FFF0 olduğu resmi olarak belgelenmiş olduğundan, hacker’lar bu kodu Flash ROM’da aramaya odaklandılar (ki bu, RC-4 anahtarına yol açacaktı). Bu, bir hacker ve araştırmacı olan Andrew ‘bunnie’ Huang’un akademik araştırması sırasında denediği bir şeydi. Bulgular oldukça ilginçti: Flash ROM’un üst 512 byte’ı, anahtarı içeren güvenlik rutinlerini içeriyordu, ancak perakende sistem için çalışmıyordu [26]. Microsoft’un bu kodu prototip/hata ayıklama birimlerinden (muhtemelen kazara, çünkü bu blok, Microsoft’un uyguladığı algoritmaları ortaya koyuyor) kaldırmış olabileceğini düşünüyorum. Sonuç olarak, bu çöp kod olarak kabul edildi, bu nedenle bunnie gerçek 0xFFFF.FFF0’un Flash ROM’da olmadığını fark etti.

Uzun lafın kısası, 0xFFFF.FFF0 MCPX çipinde gizlenmişti: Bu, bir kez yürütülen ve ardından gizlenen 512 B ROM içeriyordu. Bu ROM çıkartmak kolay değildi, bu yüzden bunnie, RC-4 anahtarını iletilirken yakalamak için HyperTransport veriyolunu dinlemeye başvurdu.

Ve böylece oldu, bunnie araştırmasıın bir parçası olarak anahtarı yayınladı ve Microsoft bundan memnun olmadı. Böylece hack topluluğu, bu konsolun ilk güvenlik katmanının kontrolünü ele geçirmenin bir yolunu buldu, ki bu çekirdeği içeriyordu.

Kalıcı Kilidin Açılması

RSA katmanının çözülmesi hiç kolay olmadı, ancak hacker’lar çekirdeğe erişim sağladıklarında, bunu tersine mühendislik yapabilir ve RSA’yı tamamen etkisiz hale getirebilecek yamalar geliştirebilirdi. İşte bu nihayet gerçekleşti ve Homebrew topluluğuna kapı açıldı. Artık herkes, Microsoft’un onayına ihtiyaç duymadan değiştirilmiş bir Xbox’ta çalıştırılabilen programlar geliştirebilirdi. Bazı gruplar, Linux’u çalıştırma gibi daha fazla işlevi olan orijinal Dashboard’ın yerine geçen programlar geliştirdi!

Ancak bunun için kullanıcıların BIOS’larını özel donanım kullanarak değiştirmeleri gerekiyordu, ki bu da herkesin yapabileceği bir şey değildi. Daha sonraki yıllarda, ana hack’i kolayca önyükleyebilen yeni açıklar keşfedildi, bunlardan biri ‘007’nin sahte bir kayıt oyununu eklemekten oluşuyordu: Agent Under Fire’ ya da ‘Splinter Cell’in sahte bir kayıt oyununu eklemekten oluşuyordu ve bu oyun sabit diske kalıcı bir açık yükleyebilecek bir homebrew aracını başlatmak için bir arabellek taşması oluşturuyordu. Bu ’kalıcı açık’ özelliği, orijinal Dashboard’ın sahte bir yazı tipi dosyası kullanılarak gerçekleştirilen başka bir arabellek taşması nedeniyle mümkündü [27] (unutulmamalıdır ki yazı tiplerinin imzalanması gerekmiyordu).

Modifikasyon Çipleri (Modchips)

İşin korsanlık tarafında Modchips de ortaya çıktı: Modçipler DVD sürücüsünü kurcalamak yerine, MCPX ROM’un kullanılmayan bir LPC portunda bulunması halinde ikincil bir BIOS’u önyükleyebileceği gerçeğinden yararlanarak Flash ROM’un üzerine bindi.

Yedek BIOS, her türlü oyun diskinin okunmasını etkinleştirebilen yamalı rutinleri içeriyordu (özellikle geleneksel olanları).

Tepki

Microsoft, maliyetlerini düşürmek ve elektroniklerindeki maruziyeti azaltmak için birçok donanım revizyonu yayınladı. Aynı zamanda, hem Kernel’i hem de Dashboard’u güncelleyen yazılım güncellemeleri yayınlandı ve zayıflıkların sayısını azaltma çabası gösterildi. Ancak, bazı oyun güvenlik açıkları hala devam ediyordu ve geriye kalan şey başka bir ‘fare ve kedi’ oyunuydu.

Bahsetmekte fayda var ki, Xbox Live kendi başına bir korsanlık önleme mekanizmasıydı. Microsoft, Xbox Live’ı yetkisiz modifikasyonlara sahip konsollara engelleyebildi; bu, tipik kullanıcıların tek amacı korsan kopyaları oynatmak için konsollarını hacklemeden önce göz önünde bulundurmaları gereken bir değiş tokuştu.


Hepsi bu kadar

Birkaç ay süren süreçte, araya sınavlar ve son teslim tarihleri girdiğinden, sonraki makale nihayet tamamlandı. Bunun çok fazla bilgi ve ıvır zıvır ekleme eğilimini sürdürdüğünü kabul ediyorum, ancak bu araştırma küçük (ve sinir bozucu) adımlarla başlamış olsa da, çok sayıda bilgi toplamama yardımcı olan özel bir topluluk olan XboxDev’den çok fazla destek bulduğum için mutluyum.

Bu konsol hakkında daha fazla bilgi edinmek isteyenler için XboxDev, daha önce Xbox homebrew’da imkansız olduğu düşünülen şeyleri yapmaya çalışan nxdk (farklı emülatörlerle birlikte) üzerinde aktif olarak çalışıyor, bu yüzden daha fazla bilgi için topluluklarını ziyaret etmenizi öneririm.

Kendi adıma, bir sonraki makale hakkında dikkatlice düşünmek için birkaç gün ayıracağım (ve muhtemelen unuttuğum bir konsolu analiz etmek için birkaç nesil geriye gideceğim).

Bir dahaki sefere kadar!
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

Aşağıdaki kişilere bağışları için teşekkürler ediyorum:

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-xbox,
    url = {https://classic.copetti.org/writings/consoles/xbox/},
    title = {Xbox Architecture - A Practical Analysis},
    author = {Rodrigo Copetti},
    year = {2020}
}

or a IEEE style citation:

[1]R. Copetti, "Xbox Architecture - A Practical Analysis", Copetti.org, 2020. [Online]. Available: https://classic.copetti.org/writings/consoles/xbox/. [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

Grafikler

Giriş/Çıkış

İşletim Sistemi

Fotoğrafçılık