GPU 칩 디자인 방법
Chapter 10 Reliability and Fault Tolerance Gpu Design

제 10 장: GPU 설계에서의 신뢰성 및 장애 허용

GPU가 자율 주행 차량, 로봇 공학, 의료 기기와 같은 안전 필수 애플리케이션에서 점점 더 널리 사용되면서, GPU의 신뢰성과 장애 허용성을 보장하는 것이 매우 중요해졌습니다. GPU는 시스템 장애, 데이터 손상 또는 잘못된 결과를 초래할 수 있는 다양한 유형의 결함과 오류에 취약합니다. 이 장에서는 GPU의 결함과 오류 유형, 오류 감지 및 수정 체계, 체크포인트 및 복구 메커니즘, 신뢰성과 복원력을 위한 설계 원칙을 살펴볼 것입니다.

GPU의 결함 및 오류 유형

GPU의 결함과 오류는 그 기원, 지속 시간 및 시스템에 미치는 영향에 따라 여러 범주로 분류할 수 있습니다. 이러한 다양한 유형의 결함과 오류를 이해하는 것은 효과적인 완화 전략을 개발하는 데 필수적입니다.

소프트 오류

소프트 오류, 또는 일시적 결함이라고도 불리는 것은 우주선, 알파 입자 또는 전자기 간섭과 같은 외부 요인으로 인해 발생하는 일시적인 오류입니다. 이러한 오류는 하드웨어에 영구적인 손상을 주지 않으며 영향을 받은 데이터를 다시 쓰거나 영향을 받은 작업을 다시 시작하여 수정할 수 있습니다.

소프트 오류는 GPU의 다음과 같은 다양한 부분에서 발생할 수 있습니다:

  1. 플립-플롭 및 래치: 단일 이벤트 오류(SEU)로 인해 플립-플롭 또는 래치의 상태가 변경되어 잘못된 데이터 또는 제어 흐름이 발생할 수 있습니다.

  2. SRAM 셀: 캐시 및 레지스터 파일에 사용되는 SRAM 셀의 소프트 오류로 인해 저장된 데이터가 손상될 수 있습니다.

  3. DRAM 셀: SRAM 소프트 오류보다는 드물지만, DRAM 셀에서도 외부 요인으로 인한 비트 플립이 발생할 수 있습니다.

그림 10.1은 소프트 오류가 플립-플롭에 미치는 영향을 보여줍니다.

           우주선
               |
               |
               v
        +------------+
        |            |
D ----->|  Flip-Flop |----> Q
        |            |
        +------------+
               |
               |
               v
```여기는 한국어 번역입니다:

           소프트 에러

그림 10.1: 우주선이 플립-플롭을 강타하여 발생한 소프트 에러.

하드 에러

하드 에러, 또는 영구적 결함이라고도 알려진 것은 하드웨어의 불가역적인 물리적 결함으로, 시간이 지나도 지속됩니다. 이러한 에러는 제조 결함, 마모, 또는 장치의 물리적 손상으로 인해 발생할 수 있습니다.

GPU에서 발생할 수 있는 하드 에러의 예는 다음과 같습니다:

  1. 고정 결함(Stuck-at faults): 입력과 관계없이 신호 또는 저장 요소가 논리 '0' 또는 '1' 값에 영구적으로 고정되어 있습니다.

  2. 브리징 결함(Bridging faults): 두 개 이상의 신호 라인이 우연히 연결되어 단락이 발생합니다.

  3. 개방 결함(Open faults): 신호 라인이 우연히 단절되어 부유 상태 또는 불확정적인 값이 됩니다.

  4. 지연 결함(Delay faults): 신호가 예상보다 더 오래 경로를 통과하여 타이밍 위반이 발생합니다.

그림 10.2는 논리 게이트에서 발생한 고정 결함의 예를 보여줍니다.

        고정 결함-0
               |
               |
               v
           +---+
        -->| & |-->
           |   |
        -->|   |
           +---+

그림 10.2: AND 게이트의 고정 결함-0.

간헐적 에러

간헐적 에러는 불규칙적으로 발생하며 일관되게 재현하기 어려운 결함입니다. 이러한 에러는 다음과 같은 다양한 요인으로 인해 발생할 수 있습니다:

  1. 한계 하드웨어: 지정된 한계 근처에서 작동하는 구성 요소로, 환경 요인 또는 노화에 더 취약합니다.

  2. 환경 요인: 온도 변동, 전압 변동 또는 전자기 간섭이 간헐적 에러를 유발할 수 있습니다.

  3. 노화 효과: 장치가 노화됨에 따라 특정 구성 요소가 마모 또는 열화로 인해 간헐적 고장에 더 취약해질 수 있습니다.

간헐적 에러는 전통적인 테스트 또는 모니터링 기술로 포착되지 않을 수 있어, 에러 감지 및 수정에 큰 어려움을 야기합니다.

무음 데이터 손상

무음 데이터 손상(Silent Data Corruption, SDC)은 데이터가 손상되었지만 이를 감지하지 못하는 에러를 말합니다.여기는 하드웨어나 소프트웨어에 의해 감지되지 않는 SDC(Silent Data Corruption)에 대한 설명입니다.

SDC는 장기간 동안 발견되지 않은 채 잘못된 결과나 시스템 오류를 초래할 수 있습니다.

GPU에서 발생할 수 있는 SDC의 예는 다음과 같습니다:

  1. 산술 오류: 가산기나 곱셈기와 같은 산술 장치의 오류로 인해 오류 플래그 없이 잘못된 결과가 발생할 수 있습니다.

  2. 메모리 오류: 메모리 셀의 소프트 오류나 하드 오류로 인해 오류 검사 메커니즘에 의해 감지되지 않고 데이터가 손상될 수 있습니다.

  3. 제어 흐름 오류: 제어 로직이나 명령 디코더의 오류로 인해 예외 없이 프로그램의 실행 경로가 벗어날 수 있습니다.

SDC는 시스템을 통해 전파되어 어떤 증상도 없이 최종 출력에 영향을 줄 수 있기 때문에 특히 위험합니다. SDC를 감지하고 완화하려면 하드웨어와 소프트웨어 기술의 조합이 필요합니다.

오류 감지 및 수정 체계

GPU의 오류와 결함의 영향을 완화하기 위해 다양한 오류 감지 및 수정 체계가 개발되었습니다. 이러한 체계는 오류의 존재를 식별하고, 일부 경우에는 이를 수정하여 시스템의 올바른 작동을 보장하는 것을 목표로 합니다.

패리티 검사

패리티 검사는 데이터 단어에 추가 비트(패리티 비트)를 추가하여 '1' 비트의 총 개수를 짝수(짝수 패리티) 또는 홀수(홀수 패리티)로 만드는 간단한 오류 감지 기술입니다. 데이터 단어의 패리티를 확인하여 단일 비트 오류를 감지할 수 있습니다.

그림 10.3은 짝수 패리티 검사의 예를 보여줍니다.

    데이터 단어: 1011010
    패리티 비트:      1
    전송: 10110101

    수신:   10110111
    패리티 비트:      0
    오류 감지!

그림 10.3: 오류 감지를 위한 짝수 패리티 검사.

패리티 검사는 레지스터, 캐시, 메모리 인터페이스와 같은 GPU의 다양한 구성 요소에 적용될 수 있습니다. 그러나 패리티 검사는 홀수 개의 비트 오류만 감지할 수 있으며 오류를 수정할 수는 없습니다.

오류 정정 코드(ECC)

오류 정정 코드(ECC)는여기는 한국어 번역입니다:

오류 감지 및 수정 기술에 대한 더 발전된 방법들이 있습니다. 이러한 기술들은 오류를 감지할 뿐만 아니라 오류를 수정할 수 있습니다. ECC(Error Correction Code)는 데이터에 여분의 비트를 추가하여, 수신자가 제한된 수의 비트 오류를 식별하고 수정할 수 있게 합니다.

하나의 일반적인 ECC 기술은 Single Error Correction, Double Error Detection (SECDED) 코드입니다. SECDED 코드는 단일 비트 오류를 수정하고 이중 비트 오류를 감지할 수 있습니다. SECDED 코드는 DRAM과 캐시와 같은 메모리 시스템에서 소프트 오류를 방지하기 위해 자주 사용됩니다.

그림 10.4는 SECDED 코드의 예를 보여줍니다.

    Data Word: 1011010
    ECC Bits:    01101
    Transmitted: 101101001101

    Received:   101101011101
                       ^
                       |
                   Bit Error

    Corrected:  101101001101

그림 10.4: 오류 수정 및 감지를 위한 SECDED 코드.

Bose-Chaudhuri-Hocquenghem (BCH) 코드와 Reed-Solomon 코드와 같은 다른 ECC 기술들은 더 높은 중복성과 복잡성의 대가로 여러 비트 오류를 수정할 수 있습니다.

중복 실행

중복 실행은 동일한 계산을 여러 번 수행하고 결과를 비교하여 오류를 감지하는 기술입니다. 결과가 일치하지 않으면 오류가 감지되며, 시스템은 계산을 다시 시도하거나 복구 프로세스를 시작할 수 있습니다.

중복 실행은 GPU에서 다양한 수준에서 구현될 수 있습니다:

  1. 명령어 수준 중복성: 각 명령어가 여러 번 실행되고 결과가 레지스터 파일 또는 메모리에 커밋되기 전에 비교됩니다.

  2. 스레드 수준 중복성: 여러 스레드가 동일한 계산을 수행하고 결과를 비교하여 오류를 감지합니다.

  3. 커널 수준 중복성: 전체 커널이 여러 번 실행되고 최종 출력이 비교되어 오류를 감지합니다.

그림 10.5는 GPU에서의 스레드 수준 중복성을 보여줍니다.

    Thread 0   Thread 1   Thread 2   Thread 3
```여기는 한국어 번역본입니다. 코드 부분은 번역하지 않고 주석만 번역했습니다.

|          |          |          |
       v          v          v          v
    +-------+  +-------+  +-------+  +-------+
    | 컴퓨터 |  | 컴퓨터 |  | 컴퓨터 |  | 컴퓨터 |
    +-------+  +-------+  +-------+  +-------+
       |          |          |          |
       v          v          v          v
    +------------+------------+------------+
    |          비교기                 |
    +------------+------------+------------+
                 |
                 v
            오류 감지

그림 10.5: 오류 감지를 위한 스레드 수준 중복 실행.

중복 실행은 소프트 오류, 하드 결함, SDC를 포함한 다양한 오류를 감지할 수 있습니다. 그러나 이는 실행 시간과 에너지 소비가 증가하는 비용이 발생합니다.

워치독 타이머

워치독 타이머는 GPU 실행을 모니터링하고 시스템이 응답하지 않거나 지정된 시간 내에 작업을 완료하지 못하는 경우 오류를 감지하는 하드웨어 또는 소프트웨어 메커니즘입니다. 워치독 타이머가 만료되면 오류가 발생한 것을 나타내며, 시스템은 GPU 재설정 또는 영향을 받은 작업 재시작과 같은 복구 프로세스를 시작할 수 있습니다.

워치독 타이머는 GPU에서 다양한 수준에서 구현될 수 있습니다:

  1. 커널 수준 워치독: 각 커널의 실행 시간을 모니터링하고 지정된 시간 내에 커널이 완료되지 않으면 감지합니다.

  2. 스레드 수준 워치독: 각 스레드의 실행 시간을 모니터링하고 지정된 시간 내에 스레드가 완료되지 않으면 감지합니다.

체크포인트 및 복구 메커니즘

체크포인트 및 복구 메커니즘은 GPU 애플리케이션의 상태를 정기적으로 저장하고 장애 발생 시 상태를 복원하는 데 사용됩니다. 애플리케이션의 상태를 주기적으로 저장함으로써 전체 계산을 처음부터 다시 시작하지 않고도 장애로부터 복구할 수 있습니다.

체크포인트 및 복구 메커니즘은 GPU에서 다양한 수준에서 구현될 수 있습니다:

  1. 애플리케이션 수준 체크포인팅: 애플리케이션 자체가 주기적으로 상태를 저장하고 복구할 책임이 있습니다.여기는 한국어 번역본입니다:

  2. 애플리케이션 수준 체크포인팅: 애플리케이션 자체가 주기적으로 메모리와 레지스터의 상태를 체크포인트 파일에 저장할 수 있습니다.

  3. 시스템 수준 체크포인팅: GPU 런타임 시스템 또는 드라이버가 애플리케이션의 상태를 저장합니다. 이는 애플리케이션 코드 수정 없이 투명하게 수행될 수 있습니다.

  4. 하드웨어 수준 체크포인팅: GPU 하드웨어 자체가 애플리케이션 상태를 저장하고 복원할 수 있는 기능을 제공합니다. 이는 비휘발성 메모리나 특수 목적 레지스터와 같은 전용 하드웨어 메커니즘을 사용하여 수행할 수 있습니다.

그림 10.8은 일반적인 체크포인팅 및 복구 프로세스를 보여줍니다.

    정상 실행
          |
          |
          v
      체크포인팅
          |
          |
          v
    정상 실행
          |
          |
          v
       장애 발생
          |
          |
          v
        복구
          |
          |
          v
    정상 실행

그림 10.8: 체크포인팅 및 복구 프로세스.

정상 실행 중에 시스템은 주기적으로 애플리케이션의 상태를 체크포인트에 저장합니다. 장애가 발생하면 시스템은 가장 최근의 체크포인트에서 상태를 복구하고 해당 지점부터 실행을 재개합니다.

체크포인팅 및 복구 메커니즘은 특히 장시간 실행되는 계산에 대한 GPU 애플리케이션의 신뢰성과 복원력을 향상시킬 수 있습니다. 그러나 상태를 저장하고 복원하는 데 추가적인 리소스가 필요하므로 저장 공간과 실행 시간 측면에서 오버헤드가 발생할 수 있습니다.

신뢰성과 복원력을 위한 설계

GPU의 신뢰성과 복원력을 위한 설계에는 하드웨어와 소프트웨어 기술의 조합이 필요합니다. 주요 설계 원칙과 기술에는 다음과 같은 것들이 포함됩니다:

  1. 오류 감지 및 수정: 메모리, 캐시, 인터커넥트 등 GPU의 다양한 수준에서 ECC(오류 정정 코드) 및 패리티 검사와 같은 오류 감지 및 수정 메커니즘을 포함시킵니다.

  2. 중복성: 중복 하드웨어 구성 요소를 사용하여 장애 발생 시 대체 경로를 제공합니다.안녕하세요. 여기는 한국어 번역본입니다:

  3. 중복성 및 다양성: GPU 아키텍처에 여분의 코어나 메모리 모듈과 같은 하드웨어 구성 요소를 포함하여 장애 허용 및 장애 발생 시 점진적 성능 저하를 가능하게 합니다.

  4. 체크포인트 및 복구: 애플리케이션의 상태를 저장하고 장애로부터 복구할 수 있는 체크포인트 및 복구 메커니즘을 구현합니다.

  5. 장애 격리: GPU 아키텍처를 설계하여 오류의 전파를 제한하고 시스템 전체로의 장애 확산을 방지합니다. 이를 위해 분할, 격리, 오류 격리 장벽과 같은 기술을 사용할 수 있습니다.

  6. 소프트웨어 복원력: 알고리즘 기반 오류 허용(ABFT)과 같은 소프트웨어 기술을 개발하여 소프트웨어 수준의 중복성과 검사를 통해 오류를 감지하고 복구할 수 있습니다.

  7. 신뢰성 인식 스케줄링: GPU에서 작업과 자원의 스케줄링을 수행할 때 다양한 구성 요소의 신뢰성 특성을 고려하여 성능과 신뢰성을 최적화합니다.

예시: GPU에서의 신뢰성 인식 스케줄링

여러 코어가 있는 GPU에서 일부 코어가 다른 코어에 비해 오류에 더 취약한 것으로 알려져 있다고 가정합니다. 신뢰성 인식 스케줄러는 중요한 작업 또는 높은 신뢰성이 요구되는 작업을 더 신뢰할 수 있는 코어에 할당하고, 덜 중요한 작업은 신뢰성이 낮은 코어에 할당할 수 있습니다.

그림 10.9는 신뢰성 인식 스케줄링 접근 방식을 보여줍니다.

    작업 대기열
    +-------+
    | 작업1 |
    | 작업2 |
    | 작업3 |
    | 작업4 |
    +-------+
        |
        |
        v
    신뢰성 인식 스케줄러
        |
        |
        v
    +--------+--------+
    | 코어 1 | 코어 2 |
    |  (높은 신뢰성)  |  (낮은 신뢰성)  |
    +--------+--------+
    | 작업1  | 작업3  |
    | 작업2  | 작업4  |
    +--------+--------+

그림 10.9: GPU에서의 신뢰성 인식 스케줄링 (높은 신뢰성, 낮은 신뢰성).

이 예에서 스케줄러는 높은 신뢰성이 요구되는 작업 1과 작업 2를 더 신뢰할 수 있는 코어 1에 할당하고, 작업 3과 작업 4를 상대적으로 신뢰성이 낮은 코어 2에 할당합니다.여기는 한국어 번역입니다:

결론

신뢰성과 내고장성은 GPU 설계 및 운영에 있어 매우 중요한 측면입니다. 특히 GPU가 안전 필수 애플리케이션에 점점 더 사용되고 있기 때문입니다. GPU에서 발생할 수 있는 다양한 종류의 오류와 결함을 이해하고, 이를 감지하고 수정하며 복구하는 기술을 숙지하는 것은 신뢰할 수 있고 복원력 있는 GPU 시스템을 설계하는 데 필수적입니다.

ECC(오류 정정 코드)와 패리티 검사와 같은 오류 감지 및 수정 기법은 GPU의 다양한 구성 요소에서 발생하는 일시적 오류와 영구적 결함을 식별하고 완화하는 데 중요한 역할을 합니다. 체크포인트 및 복구 메커니즘을 통해 애플리케이션의 상태를 저장하고 장애로부터 복구할 수 있어 시스템의 전반적인 복원력이 향상됩니다.

신뢰성과 복원력을 갖춘 GPU를 설계하려면 하드웨어와 소프트웨어 기술을 결합한 통합적인 접근 방식이 필요합니다. 중복성, 결함 격리, 소프트웨어 복원력, 신뢰성 인식 스케줄링 등은 GPU의 신뢰성과 내고장성을 높이는 데 활용할 수 있는 주요 기술입니다.

GPU가 계속 발전하고 자율 주행 차량, 로봇, 의료 분야 등 새로운 애플리케이션 영역에 적용됨에 따라 GPU의 신뢰성과 복원력을 보장하는 것이 점점 더 중요해질 것입니다. 오류 감지 및 수정, 체크포인트 및 복구, 신뢰성 인식 자원 관리를 위한 새로운 기술이 미래 신뢰할 수 있고 내고장성 있는 GPU를 실현하는 데 필수적일 것입니다.