« 닌텐도 엔터테인먼트 시스템 (NES) 아키텍처 (index)

닌텐도 엔터테인먼트 시스템 (NES) 아키텍처

Chapter 4: CPU


목차

  1. 약간의 설명
    1. 리코의 라이선스 수수께끼
    2. 없어진 기능들
  2. 메모리
    1. 카트리지/게임 데이터
    2. 기존 기능을 넘어서기

NES의 CPU는 널리 사용됬던 8비트 모스 테크놀로지 6502에 기반을 둔 리코 2A03 이며 1.79 MHz (또는 PAL 시스템에서 1.66 MHz) 로 작동합니다.

약간의 설명

70년대 후반과 80년대 초반 CPU 시장은 상당히 다양했었습니다.

Image
6502 CPU를 탑재한 Commodore PET.

Image
Z80 CPU를 탑재한 Tandy TRS-80.

컴퓨팅 역사 센터가 제공한 70년대 후반 컴퓨터의 파노라마(영국, 케임브리지).

회사에서 원하는 마이크로컴퓨터를 만들고자 한다면 다음과 같은 옵션을 선택할 수 있었습니다.

이러한 옵션으로는 충분하지 않아서, 모스 테크놀로지사에서 6800의 재설계 버전인 6502을 출시하고 나왔습니다. 다른 칩들과 호환되지 않지만, 이 새로운 칩은 생산비용이 훨씬 저렴했고, 가장 유명한 컴퓨터 제조업체(코모도어, Tandy, 애플, 아타리, 에이콘 등)가 6502를 선택하여 컴퓨터에 공급하는 것은 시간문제였습니다.

일본에선 닌텐도 가격이 비싸진 않았지만 개발하기 익숙한 6502를 선택했습니다. 그리고 그들의 CPU 공급업체인 리코는 성공적으로 6502 호환 CPU를 생산해냈습니다.

리코의 라이선스 수수께끼

리코가 어떻게 6502를 복제할 수 있었는지는 오늘날까지 분명하지 않습니다. 모스 테크놀로지사에서 리코에게 칩 디자인 라이선스를 주었다고 생각할 수도 있지만, 이렇다고 한다면 모순이 생깁니다.

없어진 기능들

리코 2A03은 원래 6502에 있던 이진화 십진법 (Binary-coded decimal, BCD) 모드를 생략했습니다. BCD는 이진수 네 자리를 묶어 십진수 한 자리로 사용하는 기수법입니다. 6502는 8비트를 '워드'로 사용합니다. 즉, 각 워드는 십진수 두 자리를 저장할 수 있습니다.

예를 들면, 십진수 42는 다음과 같이 표현됩니다.

이것에 대해서 계속 설명해 드리겠습니다. 짧게 말해서, BCD는 각 십진수 숫자를 개별적으로 처리해야 하는 응용 프로그램에 유용합니다. (예: 디지털 시계). 그러나 각 8비트 워드가 십진수로 99까지만 인코딩할 수 있기 때문에 더 많은 저장공간이 필요합니다. (반면 기존 2진수는 255까지 인코딩할 수 있습니다).

어쩄든, 리코는 의도적으로 그 칩에서 BCD 모드를 작동시키는 제어라인을 분리하므로써 기능을 없애버렸습니다. 아마도 BCD가 MOS에 의해 특허를 받았기 때문에 로열티를 지불하지 않기 위해 수행되었습니다 (미국에서 집적 회로 설계를 저작권으로 보호할 수 있게 한 법률은 1984년까지 제정되지 않음) .

메모리

리코 2A03과 모스 6502는 모두 8-비트 데이터 버스16-비트 주소 버스를 특징으로 하여 최대 64 KB의 메모리에 접근할 수 있습니다. 그래서 닌텐도는 그 메모리 공간을 어떻게 채웠을까요?

한쪽 면에는 2 KB의 정적 RAM (SRAM) 을 제공하는 칩이 있습니다. 닌텐도는 이 영역을 '작업 RAM' (WRAM)이라고 부르며, 다음을 저장하는 데 사용할 수 있습니다:

다른 한편으로 시스템의 구성 요소는 메모리 맵핑됩니다. 즉, 메모리 주소를 사용하여 액세스되므로 CPU의 주소 공간의 일부를 차지합니다. 따라서 CPU의 메모리 공간은 게임 카트리지, WRAM, PPU, APU 및 두 개의 컨트롤러를 가리키는 주소들로 채워집니다(각 구성 요소에 대한 설명은 이 기사 전반에 걸쳐 다루어질 것입니다).

카트리지/게임 데이터

아시다시피 NES 게임은 카트리지 형태로 배포되며, 카트리지의 버스는 CPU에 직접 연결됩니다.

닌텐도는 게임 카트리지 데이터 중 49120 바이트(~49.97 KB)만 접근할 수 있도록 배선했습니다 . '카트리지 데이터'가 무엇을 의미하는 걸까요? 음, 예를 들어, 그 버스에 연결된 모든 칩들:

다른 조합이 있는 이유는 CPU가 어떤 구성 요소에서 데이터를 읽는지 신경 쓰지 않고, 단지 메모리 위치를 보기 때문입니다. 따라서 게임 스튜디오가 그들의 게임에 맞는 실현 가능한 레이아웃을 선택하거나 고안하는 것은 그들의 몫입니다.

Image
슈퍼 마리오 브라더스의 PCB.

Image
중요 부품이 라벨링된 동일한 PCB. '락아웃' 칩의 의미는 '안티-피라시' 섹션에 설명되어 있습니다.

예를 들어, 닌텐도의 '슈퍼 마리오 브라더스'는 NES-NROM-256 레이아웃을 사용하며, 32 KB의 프로그램 ROM과 8 KB의 그래픽용 '캐릭터 ROM'으로 구성되어 있습니다 ('그래픽' 섹션에서 더 자세히 알아볼 예정입니다) . NES-NROM-256은 최대 3 KB의 추가 WRAM을 수용할 수 있도록 준비되었지만, 게임에서는 이를 사용하지 않습니다.

기존 기능을 넘어서기

16비트 주소 버스의 큰 제한 사항 중 하나는 (3세대 및 4세대 콘솔에 영향을 미치는) 작은 주소 공간입니다. 현재 32비트 컴퓨터는 최대 4GB의 메모리를 주소 지정할 수 있으며 (64비트 컴퓨터는 최대 16엑사바이트까지 가능) 이는 더 이상 문제가 되지 않지만, 당시 NES는 64 KB의 주소 공간만 가지고 있었으며, 그 많은 부분이 메모리 매핑 하드웨어에 의해 소비되었습니다 (이 점은 경쟁작들이 피한 것이었습니다).

그러면 이것이 게임 스튜디오가 49.97 KB의 한도를 초과하지 않는 게임만 개발할 수 있다는 의미인가요? 절대 그렇지 않습니다! 역사가 우리에게 가르쳐준 것이 있다면, 도전적인 문제에 항상 영리한 해결책이 있다는 것입니다. 이 문제는 매퍼를 사용하여 해결되었습니다.

Image
매퍼가 CPU의 주소 지정 기능을 확장하는 방법의 단순화된 표현입니다. 매퍼가 포함되면 CPU는 큰 프로그램 ROM의 추가 뱅크(주소 그룹)에 접근할 수 있습니다. 게임/프로그램이 필요할 때마다 뱅크 간 수동 전환이라는 새 작업을 수행해야 합니다.

Image
매퍼가 설치되지 않은 동일한 설정입니다. 더 단순하고 저렴하지만, CPU는 유한한 수의 뱅크에만 접근할 수 있습니다.

매퍼는 메모리 칩과 콘솔의 주소 라인 사이에 위치한 추가 칩으로 카트리지에 포함됩니다. 그 주요 작업은 주소 공간을 확장하여 개발자가 더 많은 칩을 맞출 수 있도록 하는 것입니다. 이것은 뱅크 전환을 통해 이루어집니다: 메모리 주소는 뱅크로 그룹화되며, 매퍼는 뱅크 간 전환을 제어할 수 있는 스위치를 제공합니다(메모리 주소를 통해 제어됩니다). 이제 CPU는 여전히 동일한 양의 메모리를 보지만, 매퍼가 있는 게임이 이를 작동하도록 프로그래밍되어 있습니다. 경제성 덕분에 매퍼는 80년대 중반부터 90년대 초반까지 기술의 필수품이었습니다.

Image
슈퍼 마리오 브라더스 2의 PCB . 슈퍼 마리오 브라더스 3도 이 레이아웃을 사용하지만, 256KB 프로그램 ROM을 함께 번들합니다.

Image
중요한 부품들이 표시된 같은 사진. 처음에는 추가 WRAM이 저장 공간을 위해 있다고 생각했지만, 이 게임에는 저장 기능이 없다는 것을 깨달았습니다 (그리고 배터리도 없습니다). 실제로, 그 RAM 칩은 압축 해제된 레벨을 저장하는 데 사용됩니다.

닌텐도에서 만든 'MMC3' 매퍼와 함께한 카트리지와 함께 'Super Mario Bros 2'와 'Super Mario Bros 3' 게임이 NES로 돌아왔습니다. 비교를 위해, MMC3는 프로그램 ROM에 최대 512 KB, 캐릭터 메모리에 최대 256 KB, 추가 WRAM에 최대 8 KB를 제공합니다 . 이제 '슈퍼 마리오 브라더스 3'가 첫 번째 시리즈와 비교하여 품질이 크게 다른 이유를 이해할 수 있을 것입니다.

총체적으로, 이 콘솔의 내부 기능을 살펴보면 제한된 것처럼 보일 수 있지만, 닌텐도는 기술이 발전함에 따라 적응할 수 있도록 했습니다. 반면, 이 기술은 콘솔의 비용을 절감하는 데 도움이 되었지만, 일부 부담을 게임 카트리지로 전환했습니다. 따라서 게임 품질과 카트리지 비용은 게임 스튜디오가 균형을 맞춰야 하는 두 가지 관심사였습니다.


Previous: 3. 모델과 변형

Next: 5. 그래픽


Rodrigo Copetti © 2026 RSS Feed

모던 에디션으로 전환

· · 후원 · 작성자에 대해 · 웹사이트에 대해