Lec22 - Interconnect II

한국어판 강의자료 · 38쪽
1쪽
p.1
2쪽
p.2routing algorithm(라우팅 알고리즘)
3쪽
p.3라우팅 개요
  • 네트워크 구조를 가정할 때 이상적인 라우팅을 논의한다.
  • 실제로는…
  • routing algorithm(라우팅 알고리즘)이 이상적이지 않다.
  • 목표: 경로들 사이에 트래픽을 균일하게 분산시킨다.
  • hot spots(핫스팟), contention(경쟁)을 피한다.
  • 더 균형 잡힌 분산 → 이상적인 처리량에 더 가까워짐
  • 복잡성을 고려해야 한다.
  • 복잡한 라우팅은 라우팅 지연이 상당히 커질 수 있다.
  • 기법
4쪽
p.4routing algorithm(라우팅 알고리즘)의 분류
  • adaptivity(적응성): 네트워크 상태(예: 혼잡도)를 고려하는가?
  • oblivious(비적응형) – deterministic(결정론적) vs. non-deterministic(비결정론적)
  • adaptive(적응형)
  • hop count(호프 수): 허용되는 모든 경로가 minimal(최소 경로)인가?
  • minimal(최소 경로)
  • non-minimal(비최소 경로)
  • 라우팅 결정은 어디에서 이루어지는가?
  • source routing(소스 라우팅)
  • per-hop routing(호프별 라우팅)
  • implementation(구현)
  • table(테이블)
  • circuit(회로)
  • randomized(랜덤화)
5쪽
p.5routing deadlock(라우팅 데드락)
  • 각 패킷은 링크를 점유하고 다른 링크를 기다리고 있다.
  • 라우팅 제한이 없으면 resource cycle(자원 사이클)이 발생할 수 있다.
  • 데드락으로 이어진다.
  • 두 가지 일반적인 회피 방법:
  • deadlock-free routing(데드락 없는 라우팅): routing algorithm(라우팅 알고리즘)이 허용하는 턴의 집합을 제한한다.
  • deadlock-free flow control(데드락 없는 흐름 제어): virtual channels(가상 채널)을 현명하게 사용한다.
  • 예: escape VCs(탈출 가상 채널) 사용
6쪽
p.6dimension order routing(차원 순서 라우팅)
  • 네트워크 차원을 하나씩 순차적으로 탐색한다.
  • 2차원에서는 X-Y routing(X-Y 라우팅) 또는 Y-X routing(Y-X 라우팅)을 사용한다.
  • X-Y routing(X-Y 라우팅): X 차원을 완료한 후에야 Y 차원으로 전환할 수 있다.
  • Y-X routing(Y-X 라우팅): Y 차원을 완료한 후에야 X 차원으로 전환할 수 있다.
  • deterministic(결정론적)이고 minimal(최소 경로)이다.
  • X-Y routing(X-Y 라우팅)의 턴
  • Y-X routing(Y-X 라우팅)의 턴
7쪽
p.7Valiant’s oblivious routing algorithm(Valiant의 비적응형 라우팅 알고리즘)
  • oblivious(비적응형) routing algorithm(라우팅 알고리즘)
  • s에서 d로 라우팅하기 위해
  • 임의로 중간 노드 d’를 선택
  • s에서 d’로, 그리고 d’에서 d로 라우팅
  • 모든 트래픽 패턴을 randomized(랜덤화)
  • 모든 패턴이 균일한 랜덤처럼 보임
  • 네트워크 부하를 균형 있게 분산
  • non-minimal(비최소 경로)
  • destroys locality(국소성 파괴)
8쪽
p.8minimal oblivious routing(최소 비적응형 라우팅)
  • Valiant의 방법: load balancing(로드 밸런싱)은 하지만 hop count(호프 수)가 크게 증가
  • minimal oblivious routing(최소 비적응형 라우팅): 일부 load balancing(로드 밸런싱)은 있으나 최단 경로 사용
  • d’는 최소 사분면 내에 있어야 함
  • d’에 대해 6가지 선택지 존재
  • 이 예시에서는 3가지 다른 경로만 존재
9쪽
p.9oblivious(비적응형) 라우팅
  • Valiant의 방법과 minimal adaptive routing(최소 적응형 라우팅)은 X-Y routing(X-Y 라우팅)과 함께 사용 시 데드락 없음
  • X-Y 경로와 Y-X 경로 중에서 임의로 선택한다면?
  • oblivious(비적응형)이지만 데드락 없음은 아님!
  • 어떻게 데드락 없이 만들 수 있나요?
  • 적어도 두 개의 virtual channels(가상 채널) 필요
10쪽
p.10adaptive(적응형)
  • path diversity(경로 다양성) 활용
  • network state(네트워크 상태)를 이용해 라우팅 결정
  • buffer occupancies(버퍼 점유율)이 자주 사용됨
  • flow control(흐름 제어) 메커니즘, 특히 back pressure(백프레셔)에 의존
  • local information(로컬 정보)는 쉽게 접근 가능
  • global information(글로벌 정보)는 얻는 데 비용이 큼
  • network state(네트워크 상태)는 빠르게 변화 가능
  • local information(로컬 정보) 사용 시 최적 선택이 아닐 수 있음
  • minimal(최소 경로) 또는 non-minimal(비최소 경로)일 수 있음
11쪽
p.11minimal adaptive routing(최소 적응형 라우팅)
  • local information(로컬 정보)만 사용할 경우 하위 최적 선택이 발생할 수 있음
12쪽
p.12non-minimal adaptive routing(비최소 적응형 라우팅)
  • 완전히 adaptive(적응형)
  • 최단 경로에 제한되지 않음
  • misrouting(오류 라우팅): 생산적인 채널이 아닌 경로로 패킷 유도
  • 생산적인 출력에 우선순위 부여
  • 일부 알고리즘은 u-turn(U턴) 금지
  • livelock(라이브락) 가능성: 목적지에 도달하지 않고 네트워크를 계속 순환
  • forward progress(전진 진행)을 보장하는 메커니즘 필요
  • misrouting(오류 라우팅) 횟수 제한
13쪽
p.13non-minimal(비최소 경로) 라우팅 예시
  • 더 긴 경로이지만 잠재적으로 낮은 지연 시간
  • s
  • d
  • s
  • livelock(라이브락): 사이클 내에서 계속 라우팅
14쪽
p.14adaptive(적응형) 라우팅: turn model(턴 모델)
  • 성공적인 adaptive(적응형) 라우팅을 위해서는 path diversity(경로 다양성)이 필요하다
  • 너무 많은 턴을 제거하면 라우팅의 유연성이 제한된다
  • 예: DOR은 4개의 턴을 제거한다
  • • 북쪽에서 동쪽, 북쪽에서 서쪽, 남쪽에서 동쪽, 남쪽에서 서쪽
  • 질문: 가능한 최소한의 턴만 제거하면서 데드락 없음을 보장하려면 어떻게 해야 하는가?
  • 유효한 turn model(턴 모델)의 예시:
  • west first(서쪽 우선)
  • north last(북쪽 마지막)
  • negative first(음수 우선)
15쪽
p.15turn model(턴 모델) routing deadlock(라우팅 데드락)
  • NW와 WN 턴을 제거하는 것은 어떻게 되는가?
  • 유효하지 않은 턴 제거이다
  • resource cycle(자원 사이클)이 발생한다
  • → 모든 2개 제거가 유효한 turn model(턴 모델)을 만드는 것은 아니다
16쪽
p.16virtual channels(가상 채널)을 이용한 deadlock avoidance(데드락 회피)
  • deadlock-free routing(데드락 없는 라우팅) flow control(흐름 제어)는 데드락 없음을 보장하여 더 유연한 라우팅을 가능하게 한다
  • 라우팅이 데드락 없이 아니라면, 가상 채널(VCs)이 resource cycle(자원 사이클)을 깨뜨릴 수 있다
  • 각 virtual channels(가상 채널)은 물리적 링크에 시간 분할로 할당된다
  • VC를 보유하는 것은 물리적 링크를 보유하는 것이 아니라, VC의 버퍼 큐를 보유하는 것이다
  • 두 가지 옵션을 고려할 것이다:
  • VC 순서
  • escape VCs(탈출 가상 채널)
17쪽
p.17옵션 1: VC 순서
  • dateline(데이트라인)을 넘기 전까지 모든 메시지는 VC 0을 통해 전송된다
  • dateline(데이트라인)을 넘은 후에는 VC 1에 할당된다
  • 다시 VC 0에 할당될 수 없다
  • 0
  • 1
  • 3
  • 2
18쪽
p.18옵션 2: escape VCs(탈출 가상 채널)
  • 순서를 강제하는 것은 VC 이용률을 낮춘다
  • 이전 예시: VC 1이 과도하게 미사용된다
  • escape VCs(탈출 가상 채널):
  • 하나의 virtual channel(가상 채널)은 deadlock-free routing(데드락 없는 라우팅)을 사용한다
  • 예: VC 0은 DOR을 사용하고, 다른 virtual channels(가상 채널)들은 임의의 라우팅 함수를 사용한다
  • virtual channels(가상 채널) 접근은 공정하게 조정된다: 패킷은 항상 escape VCs(탈출 가상 채널)에 도착할 기회를 가진다
19쪽
p.19protocol level deadlock(프로토콜 레벨 데드락)
  • Request-Reply dependency(요청-응답 의존성)
  • 네트워크가 요청으로 가득 차서 네트워크 인터페이스가 응답을 생성하기 전까지는 소비될 수 없음
  • 다중 메시지 클래스 간의 데드락 의존성
  • 해결책: 가상 채널(VCs)의 집합을 통해 여러 개의 logical networks(논리적 네트워크) 생성
  • 예: VC0는 요청용, VC1은 응답용
  • coherence protocols(코히어런스 프로토콜)로부터 추가 의존성을 처리하기 위해 더 많은 VCs가 필요함
  • 요청 큐(RequestQ)
  • 응답 큐(ReplyQ)
  • 메모리 / 캐시
  • 컨트롤러
  • 상호연결 네트워크
  • network end node(네트워크 종단 노드)
20쪽
p.20router microarchitecture(라우터 마이크로아키텍처)
21쪽
p.21router microarchitecture(라우터 마이크로아키텍처) 개요
  • virtual channel router(가상 채널 라우터)의 마이크로아키텍처에 초점
  • 대역폭 요구 증가에 따라 라우터 복잡도 증가
  • 고대역폭이 필요하지 않을 때 간단한 라우터 설계
  • wormhole flow control(웜홀 흐름 제어), virtual channels(가상 채널) 없음, DOR 라우팅, 파이프라인 없음 등
22쪽
p.22virtual channel router(가상 채널 라우터)
  • route computation(경로 계산)
  • VC allocator(가상 채널 할당기)
  • switch allocator(스위치 할당기)
  • input buffers(입력 버퍼)
  • virtual channels(가상 채널) VC1, VC2, VC3, VC4
  • crossbar switch(크로스바 스위치)
  • input(입력) 5, input(입력) 1, output(출력) 5, output(출력) 1
  • credits in(크레딧 입력), credits out(크레딧 출력)
  • input buffers(입력 버퍼), route computation(경로 계산) 논리, VC allocator(가상 채널 할당기), switch allocator(스위치 할당기), crossbar switch(크로스바 스위치)
  • 대부분의 NoC 라우터는 input buffers(입력 버퍼) 기반
  • 버퍼는 라우터 내부에 플릿을 저장
23쪽
p.23baseline router pipeline(기본 라우터 파이프라인)
  • 표준적인 논리적 라우터 파이프라인
  • 목표 주파수와 스테이지 지연에 따라 물리적 스테이지에 맞춤
  • BW (버퍼 쓰기): 입력 VC를 디코딩하고 버퍼에 쓰기
  • RC (경로 계산): 출력 포트 결정
  • VA (가상 채널 할당): 출력 포트에서 사용할 VC 결정
  • SA (Switch Allocation)(스위치 할당): 크로스바의 입력 및 출력 포트에 대해 중재
  • ST (스위치 통과): 출력 포트 승인 후 스위치 통과
  • LT (링크 통과): 안전한 여정!
  • contention(경쟁)이 발생하여 VA 또는 SA가 실패하면 패킷이 정지
24쪽
p.24기본 라우터 파이프라인 (2)
  • head flit(헤드 플릿)은 모든 6개 스테이지 통과
  • body flit(바디 플릿)과 tail flit(테일 플릿)은 RC 및 VA 스킵
  • route computation(경로 계산)과 VA (VC Allocation)(가상 채널 할당)은 패킷당 한 번만 수행
  • 바디 및 tail flit(테일 플릿)은 head flit(헤드 플릿)으로부터 이 정보 inherit(상속)
  • tail flit(테일 플릿)은 virtual channel(가상 채널)을 해제
25쪽
p.25라우터의 모듈과 의존성
  • 모듈 간 출력과 입력 사이의 의존성
  • 라우터를 통과하는 핵심 경로를 결정
  • 라우팅 수행 전에는 스위치 포트를 contention(경쟁)할 수 없음
  • Decode + Routing
  • Switch Arbitration
  • Crossbar Traversal
  • Wormhole Router
  • Decode + Routing
  • Switch Arbitration
  • Crossbar Traversal
  • Virtual Channel Router
  • VC Allocation
  • Decode + Routing
  • Speculative
  • Switch Arbitration
  • Crossbar Traversal
  • Speculative Virtual Channel Router
  • VC Allocation
  • → speculation(추측)이 실패할 경우는 어떻게 되는가?
26쪽
p.26라우터 파이프라인 성능
  • 기본(부하 없음) 상태에서 네트워크를 통과하는 지연
  • 라우팅 지연이 추가되어 메시지 지연에 영향
  • 이상적으로는 링크 지연만 지불
  • 또한 buffer turnaround time(버퍼 전환 시간)을 증가시킴
  • 더 많은 버퍼가 필요
  • 클럭 주기 시간에 영향
  • 파이프라인 단계를 줄이는 기법
  • (5 사이클 + 링크 지연) × hop count(호프 수) + t_serialization
27쪽
p.27최적화: lookahead routing(미리 라우팅)
  • 현재 라우터에서 다음 라우터에 대한 라우팅 계산 수행
  • 버퍼 쓰기(BW)와 겹침
  • 경로 사전 계산을 통해 플릿이 BW 이후 즉시 가상 채널(VCs) contention(경쟁) 가능
  • BW
  • RC
  • VA
  • SA
  • ST
  • LT
  • BW
  • RC
  • SA
  • ST
  • LT
  • 헤드
  • 바디/테일
28쪽
p.28헤드 / 바디/테일
  • 파이프라인 최적화: speculation(추측)
  • virtual channels(가상 채널) 할당(VA)이 성공할 것이라고 가정
  • 저~중간 부하에서 유효
  • VA와 SA를 병렬로 수행
  • VA 실패 시(가상 채널이 반환되지 않음)
  • 다음 사이클에서 VA/SA를 다시 수행
  • 비추측 요청 우선순위 부여
  • 바디/tail flit(테일 플릿)은 이미 VC 정보를 가지고 있으므로 speculation(추측)이 아님
  • BW
  • RC
  • VA
  • SA
  • ST
  • LT
  • BW
  • RC
  • VA
  • SA
  • ST
  • LT
29쪽
p.29파이프라인 최적화: bypassing(바이패스)
  • input buffers(입력 버퍼)에 플릿이 없을 경우
  • 스위치 통과(ST)를 speculation(추측)적으로 수행
  • 포트 충돌 시 speculation(추측) 중단
  • 첫 번째 단계(설정 단계)
  • • lookahead routing(미리 라우팅) → head flit(헤드 플릿)만 디코딩
  • • VA와 SA를 병렬로 수행
  • • BW 생략: speculation(추측) 실패하지 않으면 버퍼에 쓰지 않음
  • Setup
  • ST
  • LT
  • Setup
  • ST
  • LT
  • 헤드
  • 바디/테일
30쪽
p.30arbiter(중재기)와 allocator(할당기)
  • allocator(할당기): N개의 요청을 M개의 자원에 매칭
  • arbiter(중재기): N개의 요청을 1개의 자원에 매칭
  • VC allocator(가상 채널 할당기) (VA)
  • 출력 virtual channels(가상 채널)에 대한 contention(경쟁) 해결
  • 입력 virtual channels(가상 채널)에 할당
  • switch allocator(스위치 할당기) (SA)
  • 입력 virtual channels(가상 채널)에 crossbar switch(크로스바 스위치) 포트 할당
  • 매칭 확률이 높은 arbiter(중재기)/allocator(할당기)는 네트워크 대역폭 증가로 이어짐
  • 또한 빠르거나 pipelined(파이프라인화) 가능해야 함
31쪽
p.31round robin arbiter(라운드 로빈 중재기)
  • 마지막으로 서비스된 요청은 가장 낮은 우선순위를 가짐
  • 현재 grant vector(승인 벡터)에서 다음 priority vector(우선순위 벡터)를 생성함
  • fairness(공정성)을 보여줌
  • Gi가 승인되면 다음 사이클에 Pi+1이 높아짐
32쪽
p.32separable allocator(분리형 할당기)
  • 간단하고 pipelined(파이프라인화) 가능한 allocator(할당기)의 필요성
  • allocator(할당기)는 arbiter(중재기)들로 구성됨
  • arbiter(중재기)는 단일 자원에 대한 N개의 요청 중 하나를 선택함
  • separable switch allocator(분리형 스위치 할당기)
  • 첫 번째 단계: 각 입력 포트에서 단일 요청을 선택함
  • 두 번째 단계: 각 출력 포트에 대해 단일 요청을 선택함
33쪽
p.33separable allocator(분리형 할당기)
  • 3:4 allocator(할당기)
  • 첫 번째 단계: 3:1 – 각 입력에 대해 단일 승인을 보장함
  • 두 번째 단계: 4:1 – 각 출력에 대해 단일 승인만 설정함
  • 요청자 1이 자원 A를 요청함
  • 요청자 1이 자원 C를 요청함
  • 요청자 4가 자원 A를 요청함
  • 자원 A가 요청자 1에게 승인됨
  • 자원 A가 요청자 2에게 승인됨
  • 자원 A가 요청자 3에게 승인됨
  • 자원 A가 요청자 4에게 승인됨
  • 자원 C가 요청자 1에게 승인됨
  • 자원 C가 요청자 2에게 승인됨
  • 자원 C가 요청자 3에게 승인됨
  • 자원 C가 요청자 4에게 승인됨
34쪽
p.34separable allocator(분리형 할당기) 예시
  • 4개의 요청자, 3개의 자원
  • 요청들 사이에서 로컬로 할당함
  • 로컬 승자들을 두 번째 단계로 전달함
  • 요청자 1이 A를 승리함
  • 요청자 4가 C를 승리함
35쪽
p.35VC allocator(가상 채널 할당기) 구성
  • 라우팅 함수에 따라 달라짐
  • 라우팅 함수가 단일 virtual channel(가상 채널)을 반환하는 경우
  • VCA는 동일한 출력 virtual channels(가상 채널)을 contention(경쟁)하는 입력 가상 채널들 사이에서 할당해야 함
  • 라우팅 함수가 동일한 물리적 채널에 대해 다수의 후보 virtual channels(가상 채널)을 반환하는 경우
  • 승자 요청을 두 번째 단계로 전달하기 전에 첫 번째 단계 요청들 사이에서 할당이 필요함
36쪽
p.36adaptive(적응형) 라우팅 및 allocator(할당기) 설계
  • deterministic(결정론적) 라우팅
  • 단일 출력 포트
  • switch allocator(스위치 할당기)가 출력 포트를 입찰함
  • adaptive(적응형) 라우팅
  • 옵션 1: 다수의 후보 출력 포트를 반환함
  • • switch allocator(스위치 할당기)가 모든 포트에 대해 입찰할 수 있음
  • • 승인된 포트는 승인된 virtual channels(가상 채널)과 일치해야 함
  • 옵션 2: 단일 출력 포트를 반환함
  • • VA (VC Allocation)(가상 채널 할당)에 실패하면 패킷을 다시 라우팅함
37쪽
p.37speculative virtual channel router(추측형 가상 채널 라우터)
  • non-speculative(비추측형) 스위치 요청은 speculative(추측형) 요청보다 높은 우선순위를 가져야 한다.
  • 두 개의 병렬 switch allocator(스위치 할당기) — speculative(추측형)용 1개, non-speculative(비추측형)용 1개 — 존재
  • 출력에서 non-speculative(비추측형) 요청을 speculative(추측형) 요청보다 우선시한다.
  • 플릿이 speculative switch allocation(추측형 스위치 할당)에서는 성공할 수 있지만, VA (VC Allocation)(가상 채널 할당)에서는 실패할 수 있다.
  • 이 두 과정은 병렬로 수행된다.
  • speculation(추측)이 잘못되었을 경우 → switch reservation(스위치 예약)이 낭비된다.
  • body flit(바디 플릿)과 tail flit(테일 플릿): non-speculative(비추측형) 스위치 요청
  • VA (VC Allocation)(가상 채널 할당)을 수행하지 않음 → head flit(헤드 플릿)에서 inherit(상속)한다.
38쪽
p.38질문?
  • 더 깊이 있는 인터커넥션 네트워크에 대해 알고 싶다면 다음 책들을 참고하세요.
단축키
Ctrl K · s자료 검색
[ ]이전·다음 강의
Space영상 재생·정지
j k다음·이전 section
n p다음·이전 slide
b강의 목록 접기·펴기
t맨 위
/강의 검색
Esc닫기