Files
kernbench2/docs/adr-ko/ADR-0002-lat-routing-distance.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

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 레이아웃 및 디코딩 계약