PlayStation 1 아키텍처 심층 분석
PlayStation 1 아키텍처 개요
오리지널 PlayStation은 초기 3D 개발의 복잡성을 관리하기 위해 단순화되고 실용적인 하드웨어 설계를 채택했습니다. 이 아키텍처는 MIPS 기반 CPU, 독자적인 Graphics Processing Unit (GPU), 그리고 전용 Sound Processing Unit (SPU)를 특징으로 하는 System-on-Chip (SoC)를 중심으로 하며, 고용량 데이터 스트리밍을 위한 CD-ROM 서브시스템에 의해 지원됩니다.
CPU: MIPS 기반 코어
PlayStation은 MIPS R3000A 제품군과 바이너리 호환되는 CPU 코어를 탑재한 Sony CXD8530BQ SoC를 사용하며, 33.87 MHz로 동작합니다. 이 설계 선택은 Sony가 검증된 RISC (Reduced Instruction Set Computer) 아키텍처를 활용하면서도 경쟁력 있는 비용을 유지할 수 있게 해주었습니다.
기술 사양
- ISA: MIPS I (32-bit words).
- Registers: 32개의 범용 레지스터와 2개의 곱셈/나눗셈 레지스터.
- Pipeline: 5단계 파이프라인.
- Memory: 일반 용도를 위한 2 MB의 Extended Data Out (EDO) RAM, 4 KB의 명령어 캐시 및 데이터 캐시 대신 1 KB의 Scratchpad (fast SRAM)를 탑재.
- Bus Architecture: 32-bit 메인 버스는 MDEC와 GPU를 연결하며, 서브 버스는 기타 I/O 구성 요소를 처리합니다.
코프로세서 및 가속
코어의 기능을 확장하기 위해 Sony는 세 가지 특화된 코프로세서를 통합했습니다:
- System Control Coprocessor (CP0): 캐시, 인터럽트, 예외 상황, 브레이크포인트를 관리합니다.
- Geometry Transformation Engine (GTE/CP2): 벡터 및 행렬 계산을 가속화하는 고정 소수점 수학 프로세서로, 3D 투영, 조명, 클리핑을 처리합니다.
- Motion Decoder (MDEC): JPEG와 유사한 매크로블록을 압축 해제하여 320x240 px 및 30 fps의 Full-Motion Video (FMV) 스트리밍을 가능하게 합니다.
특히, 시스템에는 Floating-Point Unit (FPU/CP1)이 없어 개발자들이 게임 로직과 물리 연산을 위해 고정 소수점 산술을 사용하도록 강제하며, 이는 절대적인 정밀도보다 성능을 우선시합니다.
파이프라인 해저드 및 지연 슬롯
MIPS I 아키텍처는 인터록 단계가 없는 파이프라인 프로세서이므로 제어 및 데이터 해저드에 취약합니다. 계산 오류를 방지하기 위해 개발자들은 branch delay slots를 사용해야 합니다. 즉, 분기(branch) 또는 점프(jump) 명령어 뒤에 채우기 명령어(또는 의미 있는 연산)를 삽입하여 다음 연산이 실행되기 전에 파이프라인이 올바르게 채워지도록 해야 합니다.
그래픽스 처리 및 렌더링
PlayStation GPU는 GTE가 전송하는 기하학적 구조를 정수 좌표 모델을 사용하여 렌더링하는 단일 칩 솔루션입니다. 이 단순함은 효율적이지만 특정 시각적 제한을 유래합니다.
렌더링 파이프라인
- VRAM: 1 MB의 듀얼 포트 Video RAM (이후 일부 개정판에서는 single-port SGRAM로 교체됨).
- Primitives: GPU는 선, 사각형, 삼각형을 렌더링합니다. 삼각형은 3D 모델의 기본 구성 요소이며 텍스처링과 셰이딩을 지원합니다.
- Visibility: 시스템에는 하드웨어 Z-buffer가 없습니다. 대신, CPU가 GPU로 데이터를 보내기 전에 수동으로 폴리곤의 깊이(Z-value)를 기준으로 정렬하는 ordering table을 사용합니다.
셰이딩 및 텍스처링
- Shading: Flat 셰이딩(일정한 조명 레벨)과 Gouraud 셰이딩(정점점 간의 보간된 조명 레벨)을 지원합니다.
- Texture Mapping: 2D 좌표에서 텍스처를 보간하는 Affine Texture Mapping을 사용하며, 이는 깊이(Z)를 무시합니다. 이로 인해 카메라가 표면에 가까워질 때