닌텐도 64의 카트리지는 16개의 주소/데이터 버스 겸용 핀이 달려있으며, ALE_L과 ALE_H 핀을 통해 이들 핀에 무슨 데이터가 오갈 것인지 결정된다. (주소 하위 16비트, 주소 상위 16비트, 데이터 16비트)
이는 이른바 '멀티플렉스된 주소, 데이터 버스 (multiplexed address and data bus)' 방식으로써, 주소/데이터 버스용 핀의 개수를 줄일 수 있지만 이를 제어하는 데 추가적인 하드웨어와 사이클이 필요하다는 단점도 추가된다. 이는 인텔 8086/8088 CPU에도 적용된 유서깊은 방식이다.
닌텐도 64의 카트리지는 위의 구조상 이론상 32비트 주소 (4GiB) 값을 사용할 수 있으나, 실제 사용되는 값은 데이터 저장장치의 주소 + 게임 데이터가 저장된 ROM의 주소 (적어도 닌텐도 제조 카트리지는 64MiB로 제한) 값만 사용되지만, 사실 데이터 저장용 128MiB + 카트리지 ROM 256MiB 중 IPL 영역을 제외한 252MiB 영역에 접근할 수 있다. 또한 카트리지에 읽기/쓰기, 스테레오 사운드 출력 핀이 달려있어 뱅크스위칭을 통한 ROM 용량 확장 (메모리 매퍼 등), 사운드 확장, NAND 플래시 등을 카트리지에 달 수 있으나, 이런 경우는 본 적이 없다. 하드웨어 차원에서 접근을 막아놓은 것인지 아니면 다른 이유가 있는지는 모르겠다.
닌텐도 64의 CPU 메모리 맵에서, 데이터 저장 영역은 0x08000000-0x0fffffff, 카트리지 ROM 영역은 0x10000000-0x1fbfffff에 매핑된다.

EDIT: 사실 닌텐도 64 카트리지의 내용물은 메인보드와 64DD용으로 예약된 영역을 제외한 CPU의 아무 영역이나 매핑 가능한데, 정품 카트리지에 달린 ROM은 닌텐도 64 카트리지의 버스 구조에 최적화해 16개의 어드레스/데이터 겸용 버스와 ALE_L/ALE_H 핀이 달려있고, 용량은 원가문제로 제한된 것 같다.

'기타' 카테고리의 다른 글

CPU의 비트수와 명령어, 데이터 버스의 크기와의 관계  (0) 2025.12.07
하드웨어에 대한 잡설  (0) 2025.11.30
슈팅 게임 이야기  (0) 2025.11.14
무제  (0) 2025.11.14
Zealer Board의 사양에 대해  (0) 2025.11.01
by SHOOTING_STAR 2025. 11. 30. 12:03