168b0c89f0
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>
101 lines
4.7 KiB
Markdown
101 lines
4.7 KiB
Markdown
# ADR-0002: 라우팅 거리, 순서 및 우회 규칙
|
|
|
|
## Status
|
|
Accepted
|
|
|
|
## Date
|
|
2026-02-27
|
|
|
|
## Context
|
|
KernBench Graph Latency Simulator는 서로 다른 아키텍처·토폴로지에 대한
|
|
커널 실행 시간을 비교해야 하며, 그래프 순회로부터 end-to-end 레이턴시를
|
|
계산하여 이를 달성한다.
|
|
|
|
의미 있는 비교를 지원하려면:
|
|
- 라우팅이 결정론적이어야 한다
|
|
- 레이턴시가 실제 인터커넥트 구조를 반영해야 한다
|
|
- 로컬과 리모트 트래픽이 구분 가능해야 한다
|
|
- "우회(bypass)" 최적화가 디버깅 가능성이나 정확성을 훼손해서는 안 된다
|
|
|
|
또한 시뮬레이터는 소프트웨어가 관리하는 메타데이터 및 제어 경로를
|
|
가리는 숨겨진 지름길을 피하는 것을 목표로 한다.
|
|
|
|
## Decision
|
|
|
|
### D1. 거리(distance)는 hop 수가 아니라 누적 레이턴시이다
|
|
- 라우팅 "거리"는 **노드별·링크별 레이턴시의 합**으로 정의된다.
|
|
- 순서 결정이나 경로 선택에 hop 수만을 사용해서는 안 된다.
|
|
- 크기 인지(size-aware) 직렬화 레이턴시(bytes / BW)가 거리에 기여한다.
|
|
|
|
### D2. 라우팅 순서는 그래프 순회에서 유도된다
|
|
- 선택된 경로는 구성된 그래프와 라우팅 정책 하에서
|
|
누적 레이턴시가 최소인 경로이다.
|
|
- 동일 입력(토폴로지 + 정책 + 요청)에 대해 결정론적 순서가 보장되어야 한다.
|
|
|
|
### D3. 우회는 명시적이며 그래프로 표현된다
|
|
- 모든 경로는 그래프에 명시적으로 표현되며 레이턴시 누적의 대상이 되어야 한다.
|
|
- 예: PE_DMA는 NOC 라우터 메시(ADR-0017 D7)에 연결된다. 모든 목적지
|
|
(HBM, 공유 SRAM, 큐브 간 UCIe)는 명시적 메시 hop을 통해 도달한다.
|
|
로컬 HBM 접근은 hop 수가 최소(스위칭 오버헤드만)이며, 리모트 접근은
|
|
추가 라우터를 거친다.
|
|
- 암묵적이거나 "마법 같은" 우회 경로는 금지된다.
|
|
|
|
### D4. end-to-end 레이턴시가 0인 경로는 없다
|
|
|
|
- 모든 라우팅 요청은 **end-to-end** 레이턴시가 > 0이어야 한다.
|
|
- 개별 패브릭 세그먼트(예: NOC hop)는 패브릭이 분산되어 있고 해당 granularity에서
|
|
거리가 의미가 없을 때 distance_mm = 0을 가질 수 있다.
|
|
이는 같은 경로상의 다른 컴포넌트(예: PE_DMA, SRAM, UCIe 엔드포인트)가
|
|
0이 아닌 레이턴시에 기여하여 end-to-end 불변성을 유지하므로 허용된다.
|
|
- end-to-end가 완전히 0 레이턴시인 경로는 금지된다. 단, 명시적으로
|
|
표시된 테스트 전용 stub만 예외이다.
|
|
|
|
### D5. 정책과 토폴로지의 책임 분리
|
|
- 토폴로지 빌더:
|
|
- 노드와 링크 및 그들의 레이턴시/BW 파라미터를 정의한다
|
|
- 라우팅 정책:
|
|
- 디코딩된 도메인을 바탕으로 사용 가능한 그래프 경로 중에서 선택한다
|
|
- 라우팅 정책은 누락된 링크를 가정해서는 안 된다. 누락된 연결성은
|
|
토폴로지 구성 오류이다.
|
|
|
|
### D6. 소프트웨어 관리 라우팅 메타데이터 금지
|
|
- 라우팅 결정은 그래프 모델 외부에서 거리·hop 수·순서를 추적하는
|
|
요청별 소프트웨어 관리 메타데이터에 의존해서는 안 된다.
|
|
- 모든 거리·순서 계산은 순회 자체에서 유도된다.
|
|
|
|
## Alternatives Considered
|
|
|
|
1) **Hop 수 기반 라우팅**
|
|
- 기각: 이질적인 레이턴시·BW를 무시하고 아키텍처 차이를 잘못 표현한다.
|
|
|
|
2) **암묵적 로컬 지름길**
|
|
- 기각: 디버깅 가능성을 해치고 순회 기반 레이턴시 원칙을 위반한다.
|
|
|
|
3) **소프트웨어 관리 거리 메타데이터**
|
|
- 기각: 제어 오버헤드를 증가시키고 라우팅 시맨틱을 모호하게 만든다.
|
|
|
|
## Consequences
|
|
|
|
### 긍정적
|
|
- 명확하고 디버깅 가능한 hop-by-hop 트레이스 (SPEC R2, R4).
|
|
- 아키텍처 비교가 실제 인터커넥트 구조를 반영한다.
|
|
- 라우팅 동작이 재현 가능하고 결정론적이다.
|
|
|
|
### 트레이드오프 / 비용
|
|
- 그래프 구성이 정확하고 완전해야 한다.
|
|
- 우회 모델링이 명시적 그래프 표현을 요구하므로 토폴로지 기술이
|
|
약간 더 복잡해진다.
|
|
|
|
## Implementation Notes (Non-normative)
|
|
- 권장 책임 분담:
|
|
- 그래프 빌더: 필요한 모든 경로가 존재함을 보장.
|
|
- 라우터: 디코딩된 도메인과 정책을 바탕으로 다음 hop 선택.
|
|
- 테스트가 검증해야 할 항목:
|
|
- end-to-end 레이턴시 > 0
|
|
- 동일 입력에 대한 결정론적 라우팅
|
|
- 우회 경로가 출력 트레이스에 명시적으로 나타남
|
|
|
|
## Links
|
|
- SPEC.md: R1 (라우팅), R2 (레이턴시), R3 (토폴로지), R5 (다중 도메인 통신)
|
|
- ADR-0001: PhysAddr 레이아웃 및 디코딩 계약
|