« Nintendo Entertainment System'in (NES) Mimarisi (index)

Nintendo Entertainment System'in (NES) Mimarisi

Chapter 4: İşlemci (CPU)


İçindekiler

  1. Biraz bağlam
    1. Ricoh'nun lisanslama muamması
    2. Hurdaya çıkarılan fonksiyonlar
  2. Bellek
    1. Kartuş/oyun verileri
    2. Mevcut yeteneklerin ötesine geçmek

NES'in CPU'su popüler 8-bit MOS Technology 6502 tabanlı bir Ricoh 2A03 olup 1,79 MHz (veya PAL sistemlerinde 1,66 MHz) hızında çalışır.

Biraz bağlam

70'lerin sonu ve 80'lerin başında CPU pazarı oldukça çeşitliydi.

Image
Bir Commodore PET, 6502 CPU taşıyor.

Image
Bir Tandy TRS-80, 6502 CPU taşıyor.

70'lerin sonundaki bilgisayarların panoraması da The Centre for Computing History (Cambridge, Birleşik Krallık) tarafından sağlanmıştır.

Eğer bir şirket uygun fiyatlı bir mikrobilgisayar üretmek istiyorsa, aşağıdaki seçenekler mevcuttu:

Bu seçenekler yetmezmiş gibi, MOS adında başka bir şirket piyasaya çıktı ve 6800'ün yeniden tasarlanmış bir versiyonunu sundu: 6502. Diğerleriyle uyumsuz olsa da, yeni çipin üretimi çok çok daha ucuzdu ve en ünlü bilgisayar üreticilerinin (Commodore, Apple, Atari, Acorn ve diğerleri) makinelerine güç sağlamak için 6502'yi seçmeleri sadece bir zaman meselesiydi.

Japonya'da Nintendo'nun ucuz ama geliştirmeye uygun bir şeye ihtiyacı vardı, bu yüzden 6502'yi seçtiler. CPU tedarikçisi Ricoh, 6502 uyumlu bir CPU'yu başarıyla üretti.

Ricoh'nun lisanslama muamması

Ricoh'un 6502'yi nasıl klonlamayı başardığı bugün bile net değil. MOS'un çip tasarımını Ricoh'a lisanslamış olması beklenebilir, ancak bununla ilgili birçok çelişki var:

Hurdaya çıkarılan fonksiyonlar

Ricoh 2A03, orijinal olarak 6502'de bulunan Binary-Coded Decimal (BCD) modunu içermemektedir . BCD, bir sayının her ondalık basamağını ayrı bir 4 bitlik ikili olarak kodlar. 6502, 8 bit 'words' kullanır - yani her word iki ondalık basamak depolar.

Meraklısı için bir örnek olarak, ondalık sayı 42 olarak gösterilir:

Bu konuda konuşmaya devam edebiliriz, ancak ana hatlarını vermek gerekirse: BCD, her ondalık basamağın ayrı ayrı ele alınmasını gerektiren uygulamalar için kullanışlıdır (örneğin, dijital bir saat). Bununla birlikte, her 8 bitlik kelime yalnızca 99 ondalık sayısına kadar kodlayabildiğinden daha fazla depolama gerektirir - oysa geleneksel ikili 255'e kadar kodlayabilir.

6502, 8 bit 'word' kullanır - yani her kelime iki ondalık basamak depolar. Bu muhtemelen MOS'a telif ücreti ödememek için yapıldı, çünkü BCD'nin patenti onlar tarafından alınmıştı (ve Amerika Birleşik Devletleri'nde entegre devre düzenlerinin telif hakkını sağlayan mevzuat 1984 yılına kadar yürürlüğe girmemişti ).

Bellek

Hem Ricoh 2A03 hem de MOS 6502, 8-bit veri yolu ve 16-bit adres yoluna sahiptir, bu da 64 KB'a kadar belleğe erişmelerini sağlar. Peki, Nintendo bu bellek alanını nasıl doldurdu?

Anakartın bir tarafında 2 KB Statik RAM (SRAM) sağlayan bir yonga bulunmaktadır. Nintendo bu alanı 'Work RAM'i' (WRAM) olarak adlandırır ve depolamak için kullanılabilir:

Diğer taraftan, sistemin bileşenleri memory-mapped , yani bellek adresleri kullanılarak erişilirler, dolayısıyla CPU'nun adres alanının bir kısmını işgal ederler. Bu nedenle CPU'nun bellek alanı oyun kartuşu, WRAM, PPU, APU ve iki denetleyiciye işaret eden adreslerle doldurulur (bu makale boyunca açıklandıkları için her bir bileşen hakkında endişelenmeyin).

Kartuş/oyun verileri

Bilmiyorsanız söyleyeyim, NES oyunları kartuşlar halinde dağıtılır ve kartuşların veri yolları doğrudan CPU'ya bağlanır.

Nintendo kartuş hatlarını sadece 49120 Bayt (~ 49.97 KB) kartuş verisine erişilebilecek şekilde bağladı . Şimdi, 'kartuş verileri' ile ne demek istiyorum? Örneğin, bu veri yollarına bağlı herhangi bir çip:

Farklı kombinasyonların olması, CPU'nun ne tür bir bileşenden okuma yapıldığını önemsememesi, sadece bellek konumlarını görmesi gerçeğinden kaynaklanmaktadır. Dolayısıyla, oyunlarını sığdırmak için uygun bir düzen seçmek (veya bulmak) oyun stüdyolarına kalmıştır.

Image
Super Mario Bros'un PCB'si .

Image
Önemli parçaları etiketlenmiş aynı PCB. 'Kilitleme' çipinin anlamı 'Korsanla Mücadele' bölümünde açıklanmıştır.

Örneğin, Nintendo'nun 'Super Mario Bros' oyunu NES-NROM-256 adını verdikleri bir düzen kullanmıştır ve 32 KB program ROM'u ve grafikler için 8 KB 'Karakter ROM'undan oluşmaktadır ('Grafikler' bölümünde daha fazlasını göreceğiz) . NES-NROM-256 ayrıca 3 KB'a kadar ekstra WRAM barındıracak şekilde hazırlanmıştır, ancak oyun bunu kullanmamaktadır.

Mevcut yeteneklerin ötesine geçmek

16-bit adres veri yollarının en büyük sınırlamalarından biri (3. ve 4. nesil konsolları etkileyen) kompakt adres alanlarıdır. Günümüzde 32-bit bilgisayarlar 4 GB'a kadar bellek adresleyebilmektedir (ve 64-bit makineler 16 exabyte'a kadar cömertçe kullanmaktadır), bu nedenle bu artık bir sorun değildir, ancak o zamanlar NES'in yalnızca 64 KB adres alanı vardı ve bunun büyük bir kısmı bellek eşlemeli donanım tarafından tüketiliyordu (rakiplerin kaçındığı bir şey).

Peki bu, oyun stüdyolarının yalnızca 49,97 KB sınırını aşmayan oyunlar geliştirebileceği anlamına mı geliyordu? Kesinlikle değil! Tarih bize bir şey öğrettiyse, o da zorlu bir soruna her zaman akıllıca bir çözüm bulunabileceğidir; ve bu sorun bir Mapper ile ele alındı.

Image
Bir eşleyicinin CPU'nun adresleme yeteneklerini nasıl genişlettiğinin basitleştirilmiş gösterimi. CPU, bir mapper'ın dahil edilmesiyle, büyük bir Program ROM'unun ekstra bankalarına (adres grupları) erişebilir. Her ne kadar oyun/program gerektiğinde bankalar arasında manuel geçiş yapma gibi yeni bir göreve sahip olsa da.

Image
Aynı kurulum ancak eşleyici yüklü değil. Daha basit ve ucuz olsa da, CPU yalnızca sınırlı sayıda bankaya erişebilir.

Eşleyici, kartuşta bulunan ve bellek yongaları ile konsolun adres hatları arasında yer alan ekstra bir yongadır. Ana görevi, geliştiricilerin daha fazla yonga sığdırabilmesi için adres alanını genişletmektir. Bu bank switching ile yapılır: Bellek adresleri bankalar halinde gruplandırılır ve eşleyici bankalar arasında geçiş yapmak için anahtarlar (bellek adresleri aracılığıyla kontrol edilir) sağlar. Şimdi, CPU hala aynı miktarda bellek görüyor, bu yüzden onu çalıştırmaktan sorumlu bir eşleyici ile programlanmış olan oyun. Maliyet etkinliği nedeniyle, 80'lerden 90'ların başlarına kadar teknolojide haritacılar ön plandaydı.

Image
Super Mario Bros 2'ün PCB'si . Super Mario Bros 3'de bu tasarıma sahip ama 256 KB Program ROM ile birlikte gelir.

Image
Önemli kısımları etiketlenmiş aynı resim. İlk başta, ekstra WRAM'in kayıtları saklamak için olduğunu düşündüm, ancak daha sonra bu oyunda kayıt olmadığını fark ettim (ve bir pil de yok). Gerçekte, bu RAM yongası sıkıştırılmış bir seviyeyi depolamak için kullanılır.

NES'e geri dönersek, 'Super Mario Bros 2' ve 'Super Mario Bros 3' gibi oyunlar kartuşlarında 'MMC3' eşleyici (Nintendo tarafından yapılmıştır) ile birlikte gönderilmiştir. Karşılaştırma için MMC3, Program ROM'u için 512 KB'a kadar, Karakter belleği için 256 KB'a kadar ve ekstra WRAM için 8 KB'a kadar alan sağlamıştır . Şimdi 'Super Mario Bros 3'ün ilk taksitle karşılaştırıldığında neden kalite açısından önemli ölçüde farklı olduğunu görebilirsiniz.

Sonuç olarak, bu konsol dahili özelliklerini incelerken sınırlı görünse de, Nintendo teknoloji geliştikçe uyum sağlayabileceğinden emin oldu. Diğer taraftan, bu teknik konsolun maliyetlerini düşük tutmaya yardımcı olurken, yükün bir kısmını oyun kartuşuna kaydırdı. Dolayısıyla, oyun kalitesi ve kartuş maliyetleri, oyun stüdyolarının dengelemek zorunda olduğu iki endişeydi.


Previous: 3. Modeller ve varyantlar

Next: 5. Grafikler


Rodrigo Copetti © 2026 RSS Feed

Modern baskıya geçin

Ana sayfa · Yazılar · Destek · Yazar hakkında · Web sitesini hakkında