Files
kernbench2/docs/adr-ko/ADR-0005-dev-diagram-views-distance-layout.md
T
ywkang 168b0c89f0 ADR: translate adr-ko/ to Korean, fix ADR-0013 slug, refine Status check
Follow-up to the bilingual-structure commit: docs/adr-ko/ now holds
only Korean versions (24 files translated from English placeholders),
ADR-0013 slug uses kebab-case in both folders, and the verify tool
allows translated parenthetical commentary in the Status block.

- Translate 24 English files in docs/adr-ko/ to Korean. The previous
  bilingual-structure commit had left these as English copies because
  their source content was already English; this commit fulfills the
  policy that docs/adr-ko/ contains only Korean.
- Rename ADR-0013 in both adr/ and adr-ko/ from
  ver-verification_strategy.md to ver-verification-strategy.md
  (kebab-case consistency with other ADRs).
- CLAUDE.md (ADR Translation Discipline): clarify that only the
  Status lifecycle keyword (Accepted / Proposed / Stub / Draft /
  Superseded by ADR-NNNN / Merged into ADR-NNNN) must match across
  EN and KO; parenthetical commentary and trailing list items may be
  translated.
- tools/verify_adr_lang_pairs.py: replace byte-equal Status check
  with normalize_status_keyword() which strips parenthetical
  commentary and takes only the first non-empty line.
- tests/test_verify_adr_lang_pairs.py: update existing test names,
  add coverage for translated parenthetical, translated trailing
  list, and Superseded-by-NNNN keyword equality.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-20 08:17:56 -07:00

187 lines
5.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# ADR-0005: 다이어그램 뷰 및 거리 기반 레이아웃 규칙
## Status
Accepted
## Context
대규모, 매개변수화된 AI Accelerator 시스템에 대해 검증 가능하고 점검 가능한
시스템 모델링이 필요하다.
사람이 다음을 할 수 있어야 한다:
- 모델링된 토폴로지를 시각적으로 점검하고,
- 통신 구조와 상대적 거리에 대해 추론하고,
- 세부 사항에 압도되지 않으면서 여러 추상화 수준에서 이를 수행한다.
시뮬레이터는 거리(누적 레이턴시)를 1급 개념(first-class concept)으로 모델링한다.
다이어그램은 기본적으로 이 거리를 반영해야 한다.
---
## Decision
### D1. Global Defaults
- 모든 다이어그램은 기본적으로 **거리 인식(distance-aware)** 이어야 한다.
- 모든 다이어그램은 아키텍처의 **대표 뷰(representative view)** 를 렌더링해야 한다.
- 인스턴스 인덱스(예: sip0, cube2, pe3)는 다이어그램 생성에 필수가 아니어야 한다.
- 인스턴스 인덱스는 다음의 경우에만 사용될 수 있다:
- 비대칭 또는 디버깅 시나리오에서 거리 앵커를 정의하기 위한 경우, 또는
- 명시적으로 요청된 경우.
---
### D2. Representative Rendering Rule
- 모든 CUBE는 동일한 내부 구조를 공유한다.
- 모든 PE는 동일한 내부 구조를 공유한다.
따라서:
- SIP 수준 다이어그램은 대표 CUBE와 IO 칩렛을 렌더링한다.
- CUBE 수준 다이어그램은 대표 PE를 불투명 블록으로 렌더링한다.
- PE 수준 다이어그램은 내부가 완전히 전개된 대표 PE를 렌더링한다.
다이어그램은 명시적으로 요청되지 않는 한
특정 SIP, CUBE, 또는 PE 인덱스에 의존해서는 안 된다.
---
### D3. Diagram Views
#### View A — SIP 수준 다이어그램
**목적**
시스템 규모의 구조와 연결성을 설명한다.
**가시 요소**
- SIP 경계 (선택사항)
- CUBE (불투명 블록)
- IO 칩렛 (불투명 블록)
- 연결성 명확화에 필요한 경우에만 선택적 UCIe 스텁
**비가시 요소**
- PE 내부
- CUBE 내부 패브릭
- IO 칩렛 내부
**가시 링크**
- 호스트 ↔ IO 칩렛 (PCIe)
- SIP ↔ SIP (스위치를 통한 PCIe / UAL)
- IO ↔ CUBE (온패키지 링크)
---
#### View B — CUBE 수준 다이어그램
**목적**
큐브 내부 구조와 데이터/제어 흐름을 설명한다.
**가시 요소**
- 라우터 메시: NoC 라우터의 2D 격자 (cube_mesh.yaml로부터), 모든 트래픽은 메시를 통해 라우팅됨
- PE 라우터에 부착된 HBM_CTRL (로컬 HBM = 0 홉)
- HBM 서브시스템 (HBM_CTRL)
- 공유 SRAM: 큐브 수준 공유 메모리
- 관리 CPU (M_CPU)
- 불투명 블록으로 표현된 PE (PE[0..N1])
- 포트로 표현된 UCIe 엔드포인트 (N/E/W/S)
**비가시 요소**
- PE 내부
**가시 링크**
- PE → 라우터 (메시를 통한 HBM + 비-HBM 데이터 경로)
- 라우터 ↔ HBM_CTRL (로컬 HBM 액세스)
- 라우터 ↔ 라우터 (원격 액세스를 위한 메시 홉)
- 라우터 ↔ UCIe 엔드포인트
- 라우터 ↔ 공유 SRAM
- M_CPU ↔ 라우터 (명령 경로)
- 라우터 → PE_CPU (명령 전달, PE 블록 내부로 축약됨)
---
#### View C — PE 수준 다이어그램
**목적**
PE 내부 동작과 실행 구조를 설명한다.
**가시 요소**
- PE_CPU
- 명령 핸들러 / 스케줄러
- PE_TCM (로컬 SRAM)
- HW 가속기 (DMA, GEMM, MATH 등)
- 로컬 HBM 인터페이스
- 선택적 IPCQ / 메시징 엔드포인트
**가시 링크**
- 제어 경로 (CPU → 스케줄러 → 엔진)
- 데이터 경로 (엔진 ↔ TCM, DMA ↔ 로컬 HBM)
- 외부 패브릭 포트는 추상 포트로만 표현
---
### D4. 거리 기반 레이아웃 (기본)
#### 거리 정의
- 거리는 ADR-0002와 정합되도록 **누적 레이턴시(accumulated latency)** 로 정의된다.
- 거리는 단일 앵커 노드로부터 계산된다.
#### 기본 앵커 선택
- SIP 뷰: IO 칩렛 (또는 존재한다면 호스트 CPU)
- CUBE 뷰: 대표 PE
- PE 뷰: PE_CPU 또는 명령 핸들러
앵커는 **암묵적 기본값**이며, 지정이 강제되어서는 안 된다.
#### 레이아웃 규칙
- 다이어그램은 거리 버킷에 기반한 레이어로 배치되어야 한다.
- 레이아웃 방향은 뷰 유형 내에서 일관되어야 한다
(선호: 좌→우).
- 동일 거리의 노드는 결정론적으로 안정된 순서를 가져야 한다
(역할 또는 식별자 기준).
가독성을 위해 사이클은 점선 또는 곡선 엣지로 렌더링될 수 있으며,
이는 거리 의미에 영향을 주지 않는다.
---
### D5. 생성 컨트랙트 (도구 / Claude Code용)
다이어그램 생성 시:
- 기본적으로 거리 기반 레이아웃을 가정한다.
- 기본적으로 대표 렌더링을 가정한다.
- 필요한 경우가 아니면 SIP/CUBE/PE 인덱스를 묻지 않는다.
- 숨겨진 추상화 수준을 전개하지 않는다.
- 마이크로 홉의 정밀도보다 아키텍처적 명확성을 우선한다.
---
## Consequences
- 다이어그램은 토폴로지 스케일링에 걸쳐 안정적으로 유지된다.
- 거리 또는 라우팅 정책의 변경이 시각적으로 반영된다.
- 다이어그램은 수작업으로 유지되는 문서가 아닌, 시뮬레이터 모델로부터
파생된 검증 가능한 산출물의 역할을 한다.
---
## Links
- SPEC Section 4 (Output, Debuggability, and Diagrams)
- ADR-0002 (라우팅 거리 의미)
- ADR-0006 (토폴로지 컴파일 및 자동 다이어그램 생성)