GPU 칩 디자인 방법
Chapter 8 Interconnect and on Chip Networks

8장: GPU 설계에서의 상호 연결 및 온-칩 네트워크

현대 GPU에서 코어와 메모리 파티션의 수가 계속 증가함에 따라, 온-칩 상호 연결 네트워크의 설계는 높은 성능과 확장성을 달성하는 데 중요해집니다. 상호 연결은 GPU 코어와 메모리 파티션을 연결하고 이들 간의 효율적인 통신을 가능하게 하는 역할을 합니다. 이 장에서는 네트워크-온-칩(NoC) 토폴로지, 라우팅 알고리즘, 흐름 제어 메커니즘, 워크로드 특성화, 트래픽 패턴 및 확장 가능하고 효율적인 상호 연결 설계를 위한 기술을 포함하여 GPU를 위한 상호 연결 및 온-칩 네트워크 설계의 다양한 측면을 탐구할 것입니다.

네트워크-온-칩(NoC) 토폴로지

네트워크-온-칩(NoC)은 현대 GPU에서 증가하는 코어와 메모리 파티션을 상호 연결하기 위한 유망한 솔루션으로 등장했습니다. NoC는 GPU 워크로드의 높은 대역폭과 낮은 지연 요구사항을 효율적으로 처리할 수 있는 확장 가능하고 모듈식 통신 인프라를 제공합니다. 다양한 NoC 토폴로지가 GPU 아키텍처를 위해 제안되었고 연구되었으며, 각각은 자신만의 장단점을 가지고 있습니다.

크로스바 토폴로지

크로스바 토폴로지는 각 코어가 전용 링크를 통해 각 메모리 파티션에 직접 연결된 간단하고 직관적인 상호 연결 설계입니다. 그림 8.1은 4개의 코어와 4개의 메모리 파티션을 가진 GPU에 대한 크로스바 토폴로지를 보여줍니다.

    Core 0   Core 1   Core 2   Core 3
      |        |        |        |
      |        |        |        |
    --|--------|--------|--------|--
      |        |        |        |
      |        |        |        |
    Mem 0    Mem 1    Mem 2    Mem 3

그림 8.1: 4개의 코어와 4개의 메모리 파티션을 가진 GPU를 위한 크로스바 토폴로지.

크로스바 토폴로지는 코어와 메모리 파티션 간의 완전한 연결성을 제공하여 높은 대역폭 통신을 가능하게 합니다. 그러나 링크 수와 크로스바의 복잡성이 제곱 함수적으로 증가합니다.여기는 한국어 번역본입니다:

메시 토폴로지

메시 토폴로지는 확장성과 단순성으로 인해 NoC 기반 GPU 아키텍처에서 인기 있는 선택입니다. 메시 토폴로지에서 코어와 메모리 파티션은 2D 그리드에 배열되며, 각 노드는 인접한 노드들과 연결됩니다. 그림 8.2는 16개의 코어를 가진 GPU의 4x4 메시 토폴로지를 보여줍니다.

    코어 0 --- 코어 1 --- 코어 2 --- 코어 3
      |          |          |          |
      |          |          |          |
    코어 4 --- 코어 5 --- 코어 6 --- 코어 7
      |          |          |          |
      |          |          |          |
    코어 8 --- 코어 9 --- 코어 10-- 코어 11
      |          |          |          |
      |          |          |          |
    코어 12-- 코어 13-- 코어 14-- 코어 15

그림 8.2: 16개의 코어를 가진 GPU의 4x4 메시 토폴로지.

메시 토폴로지는 노드 수가 늘어나도 링크 수와 라우터 복잡도가 선형으로 증가하므로 좋은 확장성을 제공합니다. 그러나 네트워크 크기가 늘어날수록 평균 홉 수와 지연 시간이 증가하여 더 큰 GPU의 성능에 영향을 줄 수 있습니다.

링 토폴로지

링 토폴로지는 코어와 메모리 파티션을 원형으로 연결합니다. 각 노드는 시계 방향과 반시계 방향으로 두 개의 인접 노드와 연결됩니다. 그림 8.3은 8개의 코어를 가진 GPU의 링 토폴로지를 보여줍니다.

      코어 0 --- 코어 1
        |           |
        |           |
    코어 7         코어 2
        |           |
        |           |
      코어 6 --- 코어 5
        |           |
        |           |
        코어 4 --- 코어 3

그림 8.3: 8개의 코어를 가진 GPU의 링 토폴로지.

링 토폴로지는 구현이 간단하고 트래픽 분배가 균형적입니다. 하지만 노드 수가 증가할수록 평균 홉 수와 지연 시간이 선형으로 증가하여 더 큰 GPU 설계에는 적합하지 않습니다.

###위계층적 및 하이브리드 토폴로지

개별 토폴로지의 확장성 제한을 해결하기 위해 계층적 및 하이브리드 토폴로지가 GPU 상호 연결을 위해 제안되었습니다. 이러한 토폴로지는 더 큰, 더 확장 가능한 상호 연결을 만들기 위해 다수의 더 작은 네트워크 또는 다른 토폴로지를 결합합니다.

예를 들어, 계층적 메시 토폴로지는 큰 메시를 더 작은 서브 메시로 나누고 상위 수준 네트워크를 통해 연결하여 생성할 수 있습니다. 이 접근 방식은 평면 메시 토폴로지와 비교하여 평균 홉 수와 지연 시간을 줄입니다.

메시와 링 조합과 같은 하이브리드 토폴로지도 확장성과 성능 사이의 trade-off를 균형 잡는 데 사용될 수 있습니다. 메시 토폴로지는 코어 클러스터 내의 로컬 통신에 사용될 수 있는 반면, 링 토폴로지는 클러스터 간 전역 통신에 사용될 수 있습니다.

라우팅 알고리즘 및 흐름 제어

라우팅 알고리즘과 흐름 제어 메커니즘은 상호 연결을 통한 데이터 흐름 관리와 네트워크 리소스의 효율적인 활용에 있어 핵심적인 역할을 합니다. 이들은 소스에서 목적지까지 패킷이 어떻게 라우팅되고 네트워크 혼잡이 어떻게 처리되는지 결정합니다.

라우팅 알고리즘

라우팅 알고리즘은 크게 두 가지 범주로 분류됩니다: 결정적 라우팅과 적응형 라우팅.

  1. 결정적 라우팅:

    • 결정적 라우팅 알고리즘은 네트워크 상태와 관계없이 주어진 소스-목적지 쌍 간 항상 동일한 경로를 선택합니다.
    • 결정적 라우팅 알고리즘의 예로 차원 순서 라우팅(DOR) 및 XY 라우팅 등이 있습니다.
    • DOR은 메시 토폴로지에서 먼저 X 차원 방향으로, 그 다음 Y 차원 방향으로 패킷을 라우팅합니다.
    • 결정적 라우팅은 구현이 간단하고 예측 가능한 지연 시간을 제공하지만, 트래픽의 불균형 분포와 혼잡을 야기할 수 있습니다.
  2. 적응형 라우팅:

    • 적응형 라우팅 알고리즘은 링크 활용률 또는 혼잡과 같은 현재 네트워크 상태를 동적으로 고려하여 경로를 선택합니다.
    • 예여기는 한국어 번역입니다.

적응형 라우팅 알고리즘의 예에는 최소한의 적응형 라우팅(minimal adaptive routing)과 완전히 적응형 라우팅(fully adaptive routing)이 있습니다.

  • 최소한의 적응형 라우팅은 패킷이 소스에서 목적지까지의 최단 경로를 사용할 수 있습니다.
  • 완전히 적응형 라우팅은 패킷이 혼잡한 구간을 피하기 위해 비최단 경로도 사용할 수 있습니다.
  • 적응형 라우팅은 트래픽 부하를 더 잘 분산시키고 혼잡을 완화할 수 있지만, 더 복잡한 하드웨어를 요구하고 지연 시간이 추가될 수 있습니다.

그림 8.4는 메시 토폴로지에서 결정론적 XY 라우팅과 최소한의 적응형 라우팅의 차이를 보여줍니다.

    (0,0) --- (1,0) --- (2,0) --- (3,0)
      |          |          |          |
      |          |          |          |
    (0,1) --- (1,1) --- (2,1) --- (3,1)
      |          |          |          |
      |          |          |          |
    (0,2) --- (1,2) --- (2,2) --- (3,2)
      |          |          |          |
      |          |          |          |
    (0,3) --- (1,3) --- (2,3) --- (3,3)

    XY 라우팅:
    (0,0) -> (1,0) -> (1,1) -> (1,2) -> (1,3)

    최소한의 적응형 라우팅:
    (0,0) -> (1,0) -> (2,0) -> (3,0) -> (3,1) -> (3,2) -> (3,3)
    또는
    (0,0) -> (0,1) -> (0,2) -> (0,3) -> (1,3) -> (2,3) -> (3,3)

그림 8.4: 메시 토폴로지에서 결정론적 XY 라우팅과 최소한의 적응형 라우팅의 비교.

흐름 제어(Flow Control)

흐름 제어 메커니즘은 버퍼와 링크와 같은 네트워크 리소스의 할당을 관리하여 혼잡을 방지하고 공평한 활용을 보장합니다. GPU 상호 연결에서 사용되는 두 가지 일반적인 흐름 제어 기술은 신용 기반 흐름 제어(credit-based flow control)와 가상 채널 흐름 제어(virtual channel flow control)입니다.

  1. 신용 기반 흐름 제어:

    • 신용 기반 흐름 제어에서, 각 라우터는 다운스트림 라우터의 사용 가능한 버퍼 공간(신용)의 개수를 유지합니다.
    • 라우터가 패킷을 전송할 때, 신용 개수를 감소시킵니다. 다운스트림 라우터가 버퍼 공간을 비울 때, 업스트림 라우터에게 신용을 다시 보냅니다.
    • 업스트림여기는 라우터 패킷 전송을 위한 크레딧 기반 흐름 제어와 가상 채널 흐름 제어에 대한 설명입니다.
  2. 가상 채널 흐름 제어:

    • 가상 채널 흐름 제어를 통해 여러 개의 논리적 채널이 하나의 물리적 링크를 공유할 수 있어 네트워크 자원의 활용도가 향상됩니다.
    • 각 가상 채널은 자체적인 버퍼와 흐름 제어 메커니즘을 가지므로, 서로 다른 트래픽 흐름을 격리하고 우선순위를 지정할 수 있습니다.
    • 가상 채널을 통해 헤드 오브 라인 차단 문제를 해결할 수 있습니다. 이는 버퍼의 선두에 있는 패킷이 차단되면서 다른 패킷들의 진행을 막는 문제입니다.

그림 8.5는 라우터에서의 가상 채널 개념을 보여줍니다.

    입력 포트 0    입력 포트 1    입력 포트 2    입력 포트 3
        |                |                |                |
        |                |                |                |
    VC0 VC1 VC2     VC0 VC1 VC2     VC0 VC1 VC2     VC0 VC1 VC2
        |                |                |                |
        |                |                |                |
        --------- 크로스바 스위치 ---------
                         |
                         |
                  출력 포트 0

그림 8.5: 라우터의 가상 채널

작업량 특성화와 트래픽 패턴

GPU 작업량의 특성과 트래픽 패턴을 이해하는 것은 효율적인 상호 연결 장치를 설계하는 데 필수적입니다. 다양한 애플리케이션은 서로 다른 통신 패턴을 보이며 대역폭, 지연 시간, 로컬리티 면에서 다른 요구 사항을 가집니다.

작업량 특성화

GPU 작업량은 다음과 같은 요소를 기반으로 특성화될 수 있습니다:

  1. 계산 강도:

    • 계산 집약적인 작업은 메모리 접근에 비해 계산 작업의 비율이 높습니다.
    • 이러한 작업은 일반적으로 코어와 메모리 파티션 간의 높은 대역폭 통신을 필요로 하여 계산 장치에 데이터를 공급할 수 있습니다.
  2. 메모리 접근 패턴:

    • 일부 작업에서는 순차적 또는 stride 접근과 같은 규칙적인 메모리 접근 패턴을 보입니다.Here is the Korean translation for the provided markdown file. For the code, I have not translated the code, only the comments.

다른 이들은 불규칙하거나 무작위 접근 패턴을 가지고 있습니다.

  • 규칙적인 접근 패턴은 메모리 통합 및 프리페칭과 같은 기술의 이점을 받을 수 있지만, 불규칙한 패턴은 더 정교한 메모리 관리 기술이 필요할 수 있습니다.
  1. 데이터 공유 및 동기화:

    • 그래프 알고리즘 또는 물리 시뮬레이션과 같이 데이터 공유 및 동기화 요구가 높은 작업 부하는 코어 간 통신 트래픽을 크게 발생시킬 수 있습니다.
    • 이러한 작업 부하에는 장벽과 원자 연산과 같은 동기화 기본 요소에 대한 효율적인 지원이 중요합니다.
  2. 지역성:

    • 높은 공간적 및 시간적 지역성을 가진 작업 부하는 캐싱과 데이터 재사용의 이점을 받을 수 있습니다.
    • 지역성을 활용하면 상호 연결 장치의 트래픽 양을 줄이고 전반적인 성능을 향상시킬 수 있습니다.

트래픽 패턴

다양한 GPU 작업 부하는 통신 요구 사항에 따라 다양한 트래픽 패턴을 보여줍니다. 일반적인 트래픽 패턴에는 다음이 포함됩니다:

  1. 균일 무작위 트래픽:

    • 균일 무작위 트래픽에서 각 노드는 동일한 확률로 무작위로 선택된 대상으로 패킷을 전송합니다.
    • 이 트래픽 패턴은 최악의 시나리오를 나타내며 상호 연결 장치의 스트레스 테스트에 자주 사용됩니다.
  2. 최근접 이웃 트래픽:

    • 최근접 이웃 트래픽에서 노드는 주로 네트워크의 인접 노드와 통신합니다.
    • 이 트래픽 패턴은 스텐실 계산 또는 이미지 처리와 같이 강한 공간적 지역성을 가진 응용 프로그램에서 일반적입니다.
  3. 핫스팟 트래픽:

    • 핫스팟 트래픽에서 소수의 노드(핫스팟)가 다른 노드에 비해 상대적으로 높은 양의 트래픽을 받습니다.
    • 공유 데이터 구조 또는 중앙 집중식 제어 메커니즘이 있는 응용 프로그램에서 핫스팟 트래픽이 발생할 수 있습니다.
  4. 모두-대-모두 트래픽:

    • 모두-대-모두 트래픽에서 각 노드는 네트워크의 모든 다른 노드로 패킷을 보냅니다.
    • 이 트래픽 패턴은 행렬 전치 또는 FFT와 같은 집합 통신 작업에서 일반적입니다.

그림 8.6메시 토폴로지의 다양한 트래픽 패턴 예시

    균일 무작위 트래픽:
    (0,0) -> (2,3)
    (1,1) -> (3,2)
    (2,2) -> (0,1)
    ...

    최근접 이웃 트래픽:
    (0,0) -> (0,1), (1,0)
    (1,1) -> (0,1), (1,0), (1,2), (2,1)
    (2,2) -> (1,2), (2,1), (2,3), (3,2)
    ...

핫스팟 트래픽: (0,0) -> (1,1) (1,0) -> (1,1) (2,0) -> (1,1) ...

전체 대 전체 트래픽: (0,0) -> (1,0), (2,0), (3,0), (0,1), (1,1), (2,1), (3,1), ... (1,0) -> (0,0), (2,0), (3,0), (0,1), (1,1), (2,1), (3,1), ... (2,0) -> (0,0), (1,0), (3,0), (0,1), (1,1), (2,1), (3,1), ... ...

그림 8.6: 메시 토폴로지의 다양한 트래픽 패턴 예시.

GPU 워크로드의 트래픽 패턴을 이해하는 것은 효율적인 상호 연결을 설계하는 데 있어 핵심적입니다. 프로파일링 도구와 시뮬레이션 프레임워크를 사용하여 대표적인 워크로드의 통신 패턴을 특성화하고, 상호 연결 토폴로지, 라우팅 알고리즘, 흐름 제어 메커니즘 설계를 안내할 수 있습니다.

## 확장 가능하고 효율적인 상호 연결 설계

GPU를 위한 확장 가능하고 효율적인 상호 연결을 설계하는 것에는 코어 및 메모리 파티션 개수, 예상되는 트래픽 패턴, 전력 및 면적 제약 등 다양한 요인을 신중히 고려해야 합니다. GPU 상호 연결의 고성능 구축을 위한 핵심 설계 원칙 및 기법에는 다음과 같은 것들이 포함됩니다:

1. **토폴로지 선택**: 확장성 요구 사항, 예상되는 트래픽 패턴, 설계 제약 사항에 따라 적절한 상호 연결 토폴로지 선택. 메시와 크로스바 토폴로지가 GPU에서 일반적으로 사용되지만, 대규모 설계의 경우 계층적 및 혼합 토폴로지가 사용될 수 있습니다.

2. **라우팅 알고리즘 설계**: 예상되는 트래픽 패턴을 효율적으로 처리하면서 혼잡과 지연을 최소화하는 라우팅 알고리즘 개발. GPU에서는 네트워크 상황에 동적으로 적응할 수 있는 적응형 라우팅 알고리즘이 자주 사용되어 성능 향상을 달성합니다.여기는 한국어 번역본입니다. 코드 부분은 번역하지 않았고, 주석 부분만 번역했습니다.

3. **흐름 제어 최적화**: 네트워크 활용도를 최대화하고 버퍼 요구 사항을 최소화하기 위해 흐름 제어 메커니즘을 최적화합니다. 가상 채널 흐름 제어 및 크레딧 기반 흐름 제어와 같은 기술은 네트워크 효율성을 향상시키고 교착 상태를 방지할 수 있습니다.

4. **대역폭 프로비저닝**: 대상 워크로드의 성능 요구 사항을 충족시키기 위해 코어와 메모리 파티션 간의 충분한 대역폭을 보장합니다. 이를 위해 메모리 채널 수를 늘리거나 고대역폭 메모리 기술을 사용하거나 고급 신호 기술을 적용할 수 있습니다.

5. **전력 및 면적 최적화**: 전력 게이팅, 클록 게이팅, 저전압 신호 전송과 같은 기술을 사용하여 상호 연결 장치의 전력 소비와 면적 오버헤드를 최소화합니다. 또한 신중한 물리적 설계와 레이아웃 최적화를 통해 상호 연결 장치의 면적과 전력 영향을 줄일 수 있습니다.

6. **신뢰성 및 결함 허용성**: 결함 또는 고장이 있는 상황에서도 올바른 작동을 보장하기 위해 상호 연결 설계에 신뢰성 및 결함 허용 기능을 포함합니다. 여기에는 오류 감지 및 수정, 중복성, 적응형 라우팅과 같은 기술이 포함될 수 있습니다.

예시: 대규모 GPU를 위한 계층적 메시 상호 연결 설계

128개의 코어와 16개의 메모리 파티션을 가진 GPU를 고려해 보겠습니다. 평면 메시 상호 연결은 12x12 메시(144개 노드)가 필요하므로 너무 크고 전력 소모가 클 수 있습니다. 대신 계층적 메시 상호 연결을 다음과 같이 설계할 수 있습니다:

- 128개의 코어를 각각 8개 코어를 가진 16개 클러스터로 나눕니다.
- 각 클러스터 내에서는 8x8 메시를 사용하여 코어와 로컬 메모리 파티션을 연결합니다.
- 16개 클러스터를 4x4 글로벌 메시로 연결합니다.

이 계층적 설계를 통해 상호 연결 장치의 전체 복잡성과 전력 소비를 줄일 수 있지만, 여전히 높은 대역폭과 확장성을 제공할 수 있습니다. 로컬 메시는 클러스터 내 통신을 효율적으로 처리하고, 글로벌 메시는 클러스터 간 통신을 가능하게 합니다.여기는 원격 메모리 파티션에 대한 접근입니다.

그림 8.7은 계층적 메시 상호 연결 설계를 보여줍니다.

전역 메시 (4x4)

클러스터 0 클러스터 1 클러스터 2 클러스터 3 +-----------+-----------+-----------+-----------+ | | | | | | 로컬 | 로컬 | 로컬 | 로컬 | | 메시 | 메시 | 메시 | 메시 | | (8x8) | (8x8) | (8x8) | (8x8) | | | | | | +-----------+-----------+-----------+-----------+ | | | | | | 로컬 | 로컬 | 로컬 | 로컬 | | 메시 | 메시 | 메시 | 메시 | | (8x8) | (8x8) | (8x8) | (8x8) | | | | | | +-----------+-----------+-----------+-----------+ | | | | | | 로컬 | 로컬 | 로컬 | 로컬 | | 메시 | 메시 | 메시 | 메시 | | (8x8) | (8x8) | (8x8) | (8x8) | | | | | | +-----------+-----------+-----------+-----------+ | | | | | | 로컬 | 로컬 | 로컬 | 로컬 | | 메시 | 메시 | 메시 | 메시 | | (8x8) | (8x8) | (8x8) | (8x8) | | | | | | +-----------+-----------+-----------+-----------+

그림 8.7: 대규모 GPU를 위한 계층적 메시 상호 연결 설계.

## 결론

상호 연결과 온-칩 네트워크 설계는 현대 GPU의 성능, 확장성, 효율성에 매우 중요한 역할을 합니다. 코어와 메모리 파티션 수가 계속 늘어남에 따라, 상호 연결은 이러한 구성 요소 간에 높은 대역폭, 낮은 지연 시간, 효율적인 통신을 제공해야 합니다.

GPU 상호 연결 설계의 핵심 측면에는 네트워크 토폴로지, 스위칭 기술, 라우팅 알고리즘, 품질 보장 등이 포함됩니다.여기는 한국어 번역본입니다:

GPU 네트워크 설계 고려사항

GPU 아키텍처에는 네트워크 토폴로지, 라우팅 알고리즘, 흐름 제어 메커니즘, 워크로드 특성화 등이 중요합니다. 메시와 크로스바 토폴로지는 GPU에서 일반적으로 사용되지만, 대규모 설계를 위해 계층적이고 하이브리드 토폴로지가 사용될 수 있습니다. 적응형 라우팅 알고리즘과 발전된 흐름 제어 기술은 네트워크 성능과 효율을 향상시킬 수 있습니다.

확장성 있고 효율적인 상호 연결을 설계하려면 대역폭 프로비저닝, 전력 및 면적 최적화, 신뢰성 등의 요인을 신중히 고려해야 합니다. 계층형 설계, 전력 게이팅, 결함 허용 기술 등이 이러한 과제를 해결하는 데 도움이 될 수 있습니다.

GPU 아키텍처가 계속 발전하고 병렬 워크로드의 요구가 증가함에 따라, 상호 연결 및 온-칩 네트워크 설계는 연구와 혁신의 활발한 분야로 남을 것입니다. 새로운 토폴로지, 라우팅 알고리즘, 전력 효율적인 설계가 차세대 고성능, 에너지 효율적 GPU를 실현하는 데 필수적일 것입니다.