# ADR-0003: 타겟 시스템 계층 및 모델링 범위

## Status

Accepted

## Context

자사 AI Accelerator 플랫폼에서 LLM 커널 성능을 평가하기 위해 시스템 수준의 시뮬레이터가 필요하다.
해당 플랫폼은 PCIe 또는 UAL을 통해 스위칭 패브릭으로 연결된 다수의 동일한 SIP를 포함하는 컴퓨트 트레이로 구성되며,
호스트 CPU가 명령/커널을 발급한다.

## Decision

시스템 계층을 다음과 같이 명시적으로 모델링한다.

### D1. Tray-level

- 하나의 컴퓨트 트레이는 다음을 포함한다:
  - 호스트 CPU (요청 발급 / 런타임 및 데이터 배치 조정)
  - 다수의 동일한 SIP (가속기)
  - SIP 간 인터커넥트 패브릭 (스위치를 통한 PCIe 및/또는 UAL)

### D2. SIP-level

- SIP는 다음으로 구성된 멀티 다이 패키지이다:
  - 다수의 CUBE (HBM 다이 + 컴퓨트 PE + UCIe)
  - 하나 이상의 IO 칩렛 (호스트/SIP 인터페이스)
- IO 칩렛:
  - 다음 인터페이스를 제공한다: PCIe-EP, IO_CPU, 선택적으로 UAL-EP
  - SIP 당 다수가 존재할 수 있다
  - 배치는 SIP shoreline(상/하/좌/우)으로 제약되며, 각 shoreline에는 1~2개의 IO 칩렛이 위치할 수 있다

### D3. CUBE-level

- 하나의 CUBE는 다음을 포함한다:
  - HBM + 메모리 컨트롤러 (HBM_CTRL)
  - NoC (on-die 패브릭): HBM 데이터, 큐브 간(UCIe) 트래픽, 명령(M_CPU↔PE_CPU),
    공유 SRAM 액세스를 포함한 모든 큐브 내부 트래픽을 운반한다.
    반드시 제공해야 하는 것: 풀-대역폭 PE↔로컬 HBM 경로, PE↔SRAM 연결성,
    PE↔UCIe 연결성, M_CPU↔PE 명령 경로.
    NoC 토폴로지는 구현 선택사항(예: 2D 메시, 링, 크로스바)이며,
    현재 구현은 XY 라우팅 방식의 2D 메시를 사용한다(ADR-0017 참조).
    HBM_CTRL은 각 PE의 로컬 NoC 포트에 부착된다(로컬 HBM = 최소 홉).
  - 공유 SRAM: 모든 PE가 NoC를 통해 액세스 가능한 큐브 수준 공유 메모리
  - PE 명령 분배 및 완료 집계를 조정하는 관리/제어 CPU (M_CPU)
  - 다수의 PE
  - CUBE↔CUBE 및 CUBE↔IO 연결성을 위한 최대 4개의 UCIe 엔드포인트 (N/E/W/S)

### D4. PE-level

- 하나의 PE는 하나의 커널 인스턴스를 실행할 수 있다
- PE는 내부 제어 + 가속기를 포함한다 (PE 뷰 단위로 모델링):
  - PE_CPU, 명령 핸들러, PE_TCM, DMA/GEMM/MATH 엔진, 내부 큐

## Consequences

- 시뮬레이터는 "뷰" 단위의 추상화를 지원한다:
  - SIP 뷰는 PE 내부를 숨긴다
  - CUBE 뷰는 각 PE를 단일 블록으로 다룬다
  - PE 뷰는 PE 내부를 전개한다
- 토폴로지는 매개변수화된 상태로 유지되며, 크기/개수/링크는 설정으로부터 주어진다.

## Links

- SPEC R3/R5
- ADR-0005 (다이어그램 뷰)
- ADR-0017 (큐브 NoC 2D 메시 아키텍처)
