GPU 칩 디자인 방법
Chapter 4 Gpu Memory System Design

제 4장: GPU 메모리 시스템 설계

그래픽 처리 장치(GPU)는 다양한 응용 프로그램에서 높은 성능과 에너지 효율을 달성할 수 있는 고도로 병렬화된 프로그래밍 가능한 가속기로 발전해왔습니다. 메모리 시스템은 수많은 동시 스레드에 빠른 데이터 액세스를 제공해야 하므로 현대 GPU 아키텍처의 핵심 구성 요소입니다. 이 장에서는 1차 메모리 구조, 온-칩 상호 연결 네트워크, 메모리 파티션 유닛, 미래 GPU 메모리 시스템을 위한 연구 방향 등 GPU 메모리 시스템 설계의 핵심 요소를 살펴보겠습니다.

1차 메모리 구조

GPU의 1차 메모리 구조는 자주 사용되는 데이터에 대한 빠른 액세스를 제공하고 메모리 계층의 하위 수준에 대한 액세스 횟수를 줄이는 역할을 합니다. 이러한 구조에는 스크래치패드 메모리, L1 데이터 캐시, L1 텍스처 캐시가 일반적으로 포함됩니다.

스크래치패드 메모리와 L1 데이터 캐시

스크래치패드 메모리(NVIDIA의 CUDA 프로그래밍 모델에서는 공유 메모리, OpenCL에서는 로컬 메모리로 알려짐)는 협력 스레드 배열(CTA) 또는 작업 그룹 내의 모든 스레드가 공유하는 저지연 소프트웨어 관리 메모리 공간입니다. 스크래치패드 메모리는 일반적으로 여러 스레드의 병렬 액세스를 가능하게 하는 뱅크 SRAM 구조로 구현됩니다.

그림 4.1은 NVIDIA의 Fermi 및 Kepler 아키텍처에서 사용되는 설계와 유사한 통합 L1 데이터 캐시 및 스크래치패드 메모리 구조를 보여줍니다 [Minkin et al., 2012].

                                    주소 크로스바
                                          |
                                          v
                        데이터 배열 (캐시 또는 스크래치패드로 구성 가능)
                                          |
                                          v  
                                    데이터 크로스바
                                          |
                                          v
                                 로드/저장 유닛

그림 4.1: 통합된 L1 데이터 캐시와 스크래치패드 메모리 구조.

이 설계의 주요 구성 요소는 다음과 같습니다:

  1. 데이터 배열: 스크래치패드 메모리 또는 L1 데이터 캐시로 구성될 수 있는 고도로 뱅크화된 SRAM 구조. 각 뱅크는 32비트 폭이며 독립적인 액세스를 위한 자체 디코더를 가지고 있습니다.

  2. 주소 크로스바: 로드/스토어 유닛에서 오는 메모리 주소를 데이터 배열의 적절한 뱅크로 분배합니다.

  3. 데이터 크로스바: 뱅크에서 로드/스토어 유닛으로 데이터를 라우팅하며, 이후 레지스터 파일에 데이터를 씁니다.

  4. 로드/스토어 유닛: 메모리 주소를 계산하고, 병합 규칙을 적용하며, 메모리 액세스를 개별 병합 액세스로 분할합니다.

스크래치패드 메모리 액세스는 태그 조회 단계를 우회하며, 메모리가 직접 매핑되기 때문입니다. 뱅크 충돌은 충돌하는 액세스를 여러 사이클로 분할하고, 충돌하는 부분을 후속 사이클에서 재실행하여 처리합니다.

L1 데이터 캐시는 전역 메모리 주소 공간의 일부를 저장하는 데 사용됩니다. L1 데이터 캐시 액세스에는 요청된 데이터가 존재하는지 확인하기 위한 태그 조회가 포함됩니다. 캐시 블록 크기는 일반적으로 128바이트이며, 이는 그래픽스 DRAM(예: GDDR5)에서 단일 액세스로 읽을 수 있는 최소 데이터 크기인 32바이트 섹터로 더 세분화될 수 있습니다.

L1 텍스처 캐시

텍스처 메모리는 공간적 지역성에 최적화된 읽기 전용 메모리 공간이며, 그래픽스 워크로드에서 일반적으로 사용됩니다. L1 텍스처 캐시는 텍스처 액세스에 존재하는 2D 공간적 지역성을 활용하도록 설계되었습니다.

그림 4.2는 일반적인 L1 텍스처 캐시 구조를 보여줍니다.


                                  |
                                  v
                           텍스처 필터링
                                  |
                                  v
                           필터링된 텍셀

그림 4.2: L1 텍스처 캐시 구조.

L1 텍스처 캐시의 주요 구성 요소는 다음과 같습니다:

  1. 주소 매핑: 텍스처 좌표를 캐시 주소로 변환합니다.

  2. 태그 배열: 요청된 데이터가 존재하는지 확인하기 위해 각 캐시 라인의 태그를 저장합니다.

  3. 데이터 배열: 실제 텍스처 데이터를 저장합니다.

  4. 텍스처 필터링: 가져온 텍스처 데이터에 대해 보간 및 필터링 작업을 수행하여 최종 필터링된 텍셀을 생성합니다.

L1 텍스처 캐시는 일반적으로 공간적 지역성을 활용하기 위해 타일 기반 구조를 사용합니다. 캐시는 더 작은 타일(예: 4x4 또는 8x8 텍셀)로 나뉘며, 각 타일은 연속적으로 저장되어 특정 텍스처 가져오기에 대해 접근해야 하는 캐시 라인 수를 최소화합니다.

통합 텍스처 및 데이터 캐시

최근 NVIDIA의 Maxwell 및 Pascal과 같은 GPU 아키텍처에서는 캐시 활용도를 높이고 전체 캐시 크기를 줄이기 위해 통합 텍스처 및 데이터 캐시를 도입했습니다 [Heinrich et al., 2017]. 이 설계에서는 L1 데이터 캐시와 L1 텍스처 캐시가 단일 물리적 캐시로 결합되며, 워크로드의 요구 사항에 따라 두 캐시 간에 용량을 동적으로 할당할 수 있습니다.

그림 4.3은 통합 텍스처 및 데이터 캐시 구조를 보여줍니다.

                                메모리 요청
                                       |
                                       v
                                  캐시 컨트롤러
                                 /             \
                                /               \
                               /                 \
                              v                   v
                      데이터 캐시 파티션   텍스처 캐시 파티션
                              |
```여기는 한국어 번역입니다:

그림 4.3: 통합 텍스처 및 데이터 캐시 구조.

통합 캐시 설계의 주요 구성 요소는 다음과 같습니다:

  1. 캐시 컨트롤러: 메모리 요청을 받아 데이터 캐시 파티션 또는 텍스처 캐시 파티션에서 처리해야 할지 결정합니다.

  2. 데이터 캐시 파티션: 독립형 L1 데이터 캐시와 유사하게 전역 메모리 공간에 대한 액세스를 처리합니다.

  3. 텍스처 캐시 파티션: 독립형 L1 텍스처 캐시와 유사하게 텍스처 메모리 액세스를 처리합니다.

  4. 데이터 어레이: 전역 메모리 데이터와 텍스처 데이터를 모두 저장하는 공유 데이터 어레이.

통합 캐시 설계를 통해 사용 가능한 캐시 용량을 더 효율적으로 활용할 수 있습니다. 파티션 크기를 워크로드의 액세스 패턴에 따라 조정할 수 있기 때문입니다. 이러한 유연성은 고정 크기의 별도 L1 캐시에 비해 성능과 에너지 효율성 향상으로 이어질 수 있습니다.

온-칩 상호 연결 네트워크

온-칩 상호 연결 네트워크는 GPU 코어(스트리밍 멀티프로세서 또는 컴퓨팅 유닛이라고도 함)와 메모리 파티션 유닛을 연결하는 역할을 합니다. 이 상호 연결은 GPU 워크로드의 대규모 병렬 처리를 지원하기 위해 높은 대역폭과 낮은 지연 시간을 제공해야 합니다.

최신 GPU는 일반적으로 크로스바 또는 메시 토폴로지를 사용하여 온-칩 상호 연결을 구현합니다. 크로스바는 모든 코어와 메모리 파티션 간의 완전한 연결성을 제공하여 높은 대역폭 통신을 가능하게 하지만, 면적과 전력 소비가 증가합니다. 메시 토폴로지는 각 코어를 인접 코어와 메모리 파티션에 연결하는 격자 구조를 형성하여 더 확장 가능한 솔루션을 제공합니다.

그림 4.4는 GPU의 메시 상호 연결 예를 보여줍니다.


|      |
        Core   Core   Core   Core
         |      |      |      |
        ——     ——     ——     ——  
         |      |      |      |
        Core   Core   Core   Core
         |      |      |      |
        ——     ——     ——     ——
         |      |      |      |  
        Mem    Mem    Mem    Mem
        Part.  Part.  Part.  Part.

그림 4.4: GPU의 메시 상호 연결

메시 상호 연결은 영역과 전력 오버헤드를 최소화하면서 코어와 메모리 파티션 간의 효율적인 데이터 전송을 가능하게 합니다. 고성능과 혼잡 방지를 위해 고급 라우팅 알고리즘과 흐름 제어 메커니즘이 사용됩니다.

## 메모리 파티션 유닛

메모리 파티션 유닛은 GPU 코어의 메모리 요청을 처리하고 오프-칩 DRAM을 관리하는 역할을 합니다. 각 메모리 파티션에는 일반적으로 L2 캐시, 원자 연산 지원, 메모리 액세스 스케줄러가 포함됩니다.

### L2 캐시

L2 캐시는 GPU 코어와 오프-칩 DRAM 사이에 위치한 공유 캐시입니다. 주요 목적은 자주 액세스되는 데이터를 캐싱하여 고지연 시간, 에너지 집약적인 DRAM에 대한 액세스 횟수를 줄이는 것입니다.

GPU L2 캐시는 일반적으로 대용량(예: 2-4MB)이고 높은 대역폭을 가진 세트 연관 방식의 write-back 캐시로 설계됩니다. L2 캐시는 병렬 액세스와 처리량 향상을 위해 여러 메모리 파티션에 걸쳐 분할됩니다.

그림 4.5는 GPU 메모리 파티션의 L2 캐시 구조를 보여줍니다.

메모리 요청 | v L2 캐시 컨트롤러 | v 태그 배열 | v 데이터 배열 | v 메모리 스케줄러

그림 4.5: GPU 메모리 파티션의 L2 캐시 구조.

L2 캐시 컨트롤러는 GPU 코어로부터 메모리 요청을 받고 태그 배열을 확인하여 요청된 데이터가 캐시에 있는지 확인합니다. 캐시 히트 시, 데이터는 데이터 배열에서 가져와 요청한 코어로 전송됩니다. 캐시 미스 시, 요청은 메모리 스케줄러로 전달되며, 스케줄러는 DRAM에서 데이터를 가져옵니다.

원자성 연산

원자성 연산은 병렬 작업에서 스레드 간 동기화와 통신에 필수적입니다. GPU는 원자 더하기, 최소값, 최대값, 비교-교환 등 다양한 원자성 연산을 지원하며, 이는 여러 스레드가 동시에 동일한 메모리 위치에 접근할 때 원자성을 보장합니다.

원자성 연산은 일반적으로 메모리 파티션 유닛에서 구현되어 저지연 및 고처리량 실행을 보장합니다. 원자 연산 유닛(AOU)과 같은 전용 하드웨어 유닛이 원자 요청을 효율적으로 처리합니다.

그림 4.6은 GPU 메모리 파티션의 원자 연산 유닛의 예를 보여줍니다.

                            원자성 요청
                                   |
                                   v
                          원자 연산 유닛
                                   |
                                   v
                            L2 캐시/DRAM

그림 4.6: GPU 메모리 파티션의 원자 연산 유닛.

AOU는 GPU 코어로부터 원자성 요청을 받아 대상 메모리 위치에서 요청된 연산을 수행합니다. 메모리 위치가 L2 캐시에 있는 경우, AOU는 직접 캐시 데이터를 업데이트합니다. 메모리 위치가 캐시되지 않은 경우, AOU는 DRAM에서 데이터를 가져와 원자성 연산을 수행한 후 결과를 DRAM에 다시 기록합니다.

메모리 접근 스케줄러

메모리 접근 스케줄러는 메모리 요청의 흐름을 관리할 책임이 있습니다.


GPU 메모리 스케줄러는 다양한 스케줄링 알고리즘과 최적화를 사용하여 높은 성능을 달성합니다. 일반적인 기술에는 다음과 같은 것들이 포함됩니다:

1. **Out-of-order scheduling**: 행 버퍼 히트를 최대화하고 DRAM 프리차지 및 활성화 오버헤드를 최소화하기 위해 메모리 요청을 재정렬합니다.

2. **Bank-level parallelism**: 여러 DRAM 뱅크에 걸쳐 병렬성을 활용하여 다른 메모리 영역에 대한 동시 액세스를 가능하게 합니다.

3. **Write-to-read turnaround optimization**: DRAM에서 쓰기 및 읽기 작업 간 전환 시 발생하는 지연 시간 페널티를 최소화합니다.

4. **Address interleaving**: 병렬성을 최대화하고 경합을 방지하기 위해 메모리 액세스를 다른 채널, 랭크 및 뱅크에 분산시킵니다.

그림 4.7은 GPU 메모리 파티션의 메모리 액세스 스케줄러의 개요를 보여줍니다.

Memory Requests | v Memory Scheduler | v Channel Channel Channel Channel | | | | v v v v Rank Rank Rank Rank | | | | v v v v
Bank Bank Bank Bank

그림 4.7: GPU 메모리 파티션의 메모리 액세스 스케줄러.

메모리 스케줄러는 L2 캐시와 원자 연산 장치에서 메모리 요청을 받아 DRAM에 이러한 요청을 발행할 시기와 순서를 결정합니다. 메모리 액세스를 신중하게 스케줄링함으로써 스케줄러는 DRAM 대역폭 활용을 크게 향상시키고 평균 메모리 액세스 지연 시간을 줄일 수 있습니다.

## 연구다음은 GPU 메모리 시스템에 대한 지침의 한국어 번역입니다. 코드 부분은 번역하지 않고 주석만 번역했습니다.

GPU 아키텍처가 계속 발전하고 병렬 작업 부하의 요구가 증가함에 따라, GPU 메모리 시스템의 성능과 효율성을 향상시키기 위한 여러 가지 연구 방향이 있습니다. 주요 연구 분야에는 다음과 같은 것들이 있습니다:

### 메모리 액세스 스케줄링 및 상호 연결 네트워크 설계
GPU에서 코어와 메모리 파티션의 수가 계속 증가함에 따라, 메모리 액세스 스케줄러와 상호 연결 네트워크의 설계가 높은 성능을 달성하는 데 매우 중요해집니다. 이 분야의 연구는 GPU 작업 부하의 대규모 병렬성과 복잡한 메모리 액세스 패턴을 효율적으로 처리할 수 있는 새로운 스케줄링 알고리즘과 상호 연결 토폴로지를 개발하는 데 초점을 맞추고 있습니다.

예를 들어, Jia et al. [2012]은 DRAM 뱅크 수준의 병렬성을 향상시키고 메모리 액세스 지연 시간을 줄이는 것을 목표로 하는 "Staged Memory Scheduling(SMS)" 이라는 메모리 스케줄링 알고리즘을 제안했습니다. SMS는 메모리 요청 대기열을 두 단계로 나눕니다: 배치 형성 단계와 배치 스케줄링 단계. 배치 형성 단계에서는 뱅크와 행 주소를 기반으로 요청을 배치로 그룹화하여 행 로컬리티를 활용합니다. 배치 스케줄링 단계에서는 배치의 나이와 중요도를 기준으로 우선순위를 지정하여 공정성을 보장하고 지연을 줄입니다.

또 다른 예로, Kim et al. [2012]은 GPU용 고대역폭 메모리(HBM) 아키텍처를 제안했습니다. HBM은 여러 개의 DRAM 다이를 서로 쌓아올리고 TSV(Through-Silicon Via)로 연결하여 기존 GDDR 메모리에 비해 훨씬 더 높은 대역폭과 낮은 지연 시간을 제공합니다. 저자들은 또한 HBM의 증가된 병렬성과 복잡성을 효율적으로 관리할 수 있는 새로운 메모리 컨트롤러 설계를 제안했습니다.

### 캐싱 효과
GPU는 오프-칩 메모리 액세스 횟수를 줄이고 성능을 향상시키기 위해 다양한 캐싱 메커니즘을 사용합니다. 그러나 이러한 캐시의 효과는 작업 부하의 특성과 캐시 설계에 따라 크게 달라질 수 있습니다.이 분야의 연구는 캐시 우회, 캐시 압축, 적응형 캐시 관리와 같은 기술을 통해 GPU 캐시의 효과성을 높이는 것을 목표로 합니다.

예를 들어, Huangfu and Xie [2016]는 메모리 요청의 재사용 거리를 기반으로 캐싱 여부를 결정하는 간단하지만 효과적인 휴리스틱을 사용하는 동적 캐시 우회 방식을 제안합니다. 이 방식은 애플리케이션의 런타임 동작에 적응하며 캐시 오염을 크게 줄이고 성능을 향상시킬 수 있습니다.

또 다른 예로, Vijaykumar et al. [2015]의 연구가 있습니다. 이들은 GPU 애플리케이션에서 상당한 데이터 중복성이 관찰되며, 이를 활용하여 캐시의 효과적인 용량을 늘릴 수 있다고 제안합니다. 그들은 지연 오버헤드를 최소화하면서도 높은 압축률을 달성할 수 있는 새로운 압축 방식을 제안합니다.

### 메모리 요청 우선순위화 및 캐시 우회
GPU에서 다양한 워프와 스레드의 메모리 요청은 전체 성능에 미치는 영향이 다를 수 있습니다. 중요한 요청을 우선순위화하고 중요하지 않은 요청을 우회하면 메모리 지연 시간을 줄이고 리소스 활용도를 높일 수 있습니다.

이 분야의 연구는 중요한 메모리 요청을 식별하고 우선순위화하는 기술, 그리고 선택적으로 캐시를 우회하는 메커니즘을 탐구합니다.

예를 들어, Jog et al. [2013]은 "Critical-Aware Warp Acceleration" (CAWA)라는 메모리 요청 우선순위화 방식을 제안합니다. CAWA는 파이프라인 스톨을 유발할 가능성이 높은 중요한 워프를 식별하고, 이들의 메모리 요청을 비중요 워프의 요청보다 우선순위화합니다. 이 방식은 종속 명령어 수와 워프 나이와 같은 정적/동적 정보를 조합하여 중요도를 결정합니다.

Lee et al. [2015]는 캐시 오염을 줄이고 메모리 접근 시간성을 향상시키기 위한 GPU 캐시 우회 방식을 제안합니다. 이 방식은 프로그램 카운터 기반의 예측 모델을 사용하여 캐시 우회 여부를 결정합니다.이 마크다운 파일의 한국어 번역은 다음과 같습니다. 코드의 경우 코드 자체는 번역하지 않고 주석만 번역했습니다.

메모리 요청 중 캐싱의 이점을 받지 못할 것으로 예상되는 요청을 식별하고 이를 직접 하위 메모리 계층으로 전달하는 우회 메커니즘. 저자들은 이 방식이 기본 GPU 대비 성능과 에너지 효율을 크게 향상시킬 수 있다고 보여줍니다.

### 워프 간 이질성 활용하기
GPU는 메모리 지연 시간을 숨기고 높은 처리량을 달성하기 위해 많은 수의 워프를 동시에 실행합니다. 그러나 각 워프는 자원 요구 사항, 메모리 액세스 패턴, 성능 특성 등에서 상당한 이질성을 보일 수 있습니다.

이 분야의 연구는 이러한 워프 간 이질성을 활용하여 GPU의 자원 할당, 스케줄링, 메모리 관리를 개선하는 것을 목표로 합니다.

예를 들어, Kayıran et al. [2014]은 각 워프의 분기 특성에 따라 동적으로 캐시 할당 및 교체 정책을 적응시키는 워프 수준 분기 인식 캐시 관리 방식을 제안했습니다. 분기가 높은 워프에는 더 많은 캐시 자원을 할당하여 메모리 분기를 줄이고, 분기가 낮은 워프에는 더 적은 자원을 할당하여 캐시 활용도를 높였습니다.

또 다른 예로, Sethia et al. [2015]의 연구에서는 워프 간 이질성을 활용하여 DRAM 뱅크 수준 병렬성을 향상시키는 메모리 컨트롤러 설계를 제안했습니다. 저자들은 서로 다른 워프가 다른 수준의 뱅크 수준 병렬성을 가질 수 있음을 관찰하고, 뱅크 수준 병렬성이 높은 워프에 우선순위를 부여하는 워프 인식 메모리 스케줄링 알고리즘을 제안했습니다.

### 협조적 캐시 우회
캐시 우회는 메모리 요청이 캐시를 건너뛰고 직접 하위 메모리 계층에 접근할 수 있게 하는 기술입니다. 우회를 통해 캐시 오염을 줄이고 메모리 액세스의 시간성을 향상시킬 수 있지만, 코어와 메모리 파티션 간 조정되지 않은 우회 결정은 성능 저하를 초래할 수 있습니다.

이 분야의 연구는 이러한 문제를 해결하기 위한 기술을 탐구합니다.여기는 GPU의 캐시 우선순위화에 대한 내용입니다.

GPU의 전반적인 시스템 성능과 자원 활용도를 향상시키기 위해 GPU 전반에 걸쳐 캐시 우회 결정을 조정하는 기법들에 대해 설명합니다.

예를 들어, Li et al. [2015]는 중앙 집중식 우회 제어기를 사용하여 GPU의 코어별 최적의 우회 전략을 결정하는 조정된 캐시 우회 기법을 제안했습니다. 이 제어기는 각 코어의 캐시 누락률과 메모리 접근 패턴과 같은 런타임 정보를 수집하고, 이 정보를 바탕으로 각 코어의 최적의 우회 전략을 결정합니다. 저자들은 이 기법이 조정되지 않은 우회 기법에 비해 성능과 에너지 효율을 크게 향상시킬 수 있다고 보여줍니다.

적응형 캐시 관리

GPU 애플리케이션에 대한 최적의 캐시 구성은 메모리 접근 패턴, 작업 집합 크기, 자원 요구 사항 등에 따라 크게 달라질 수 있습니다. 설계 시 고정된 정적 캐시 관리 정책은 다양하고 동적인 애플리케이션 동작에 적응하기 어려울 수 있습니다.

이 분야의 연구는 애플리케이션의 런타임 동작을 기반으로 캐시 구성과 관리 정책을 동적으로 적응시키는 기술을 탐구합니다.

예를 들어, Wang et al. [2016]은 애플리케이션의 메모리 접근 패턴에 따라 캐시 파티션 크기와 교체 정책을 동적으로 조정하는 적응형 캐시 관리 기법을 제안했습니다. 이 기법은 하드웨어와 소프트웨어 기술을 결합하여 캐시 동작을 모니터링하고 캐시 활용도와 성능을 향상시키기 위한 동적 조정을 수행합니다.

또 다른 예로, Dai et al. [2018]의 연구는 GPU의 적응형 캐시 관리를 위한 기계 학습 기반 접근 방식을 제안합니다. 저자들은 강화 학습을 사용하여 각 애플리케이션의 런타임 동작에 기반한 최적의 캐시 구성을 자동으로 학습합니다. 학습된 정책은 각 애플리케이션의 특정 요구 사항에 맞게 적응할 수 있는 재구성 가능한 캐시 아키텍처를 통해 구현됩니다.

캐시 우선순위화

GPU에서는 다양한 유형의


이 분야의 연구는 GPU 캐시 계층에서 다양한 유형의 메모리 요청을 우선순위화하는 기술을 탐구합니다.

예를 들어, Zhao et al. [2018]은 GPU에 대한 캐시 우선순위 지정 체계를 제안합니다. 이 체계는 메모리 요청의 중요도와 대기 시간 민감도에 따라 다른 우선순위를 할당합니다. 이 체계는 명령어 유형과 종속 명령어 수와 같은 정적 및 동적 정보를 조합하여 각 요청의 우선순위를 결정합니다. 저자들은 이 체계가 우선순위화 없이 기본 GPU에 비해 성능과 에너지 효율을 크게 향상시킬 수 있다고 보여줍니다.

### 가상 메모리 페이지 배치
GPU는 전통적으로 프로그래머가 메모리를 명시적으로 할당하고 해제하는 수동 메모리 관리를 사용해 왔습니다. 그러나 최근 GPU는 운영 체제가 메모리 할당과 배치를 자동으로 관리할 수 있는 가상 메모리를 지원하기 시작했습니다.

이 분야의 연구는 GPU에서 가상 메모리 페이지 배치를 최적화하여 메모리 액세스 지역성을 향상시키고 주소 변환 오버헤드를 줄이는 기술을 탐구합니다.

예를 들어, Zheng et al. [2016]은 GPU에 대한 페이지 배치 체계를 제안합니다. 이 체계는 함께 자주 액세스되는 페이지를 동일한 메모리 채널 또는 뱅크에 배치하여 메모리 액세스 지역성을 향상시키는 것을 목표로 합니다. 이 체계는 하드웨어와 소프트웨어 기술을 결합하여 애플리케이션의 메모리 액세스 패턴을 모니터링하고 동적 페이지 배치 결정을 내립니다.

또 다른 예로, Ganguly et al. [2019]의 연구는 GPU에 대한 가상 메모리 관리 체계를 제안합니다. 이 체계는 주소 변환 오버헤드를 줄이는 것을 목표로 합니다. 이 체계는 하드웨어와 소프트웨어 기술을 결합합니다.여기는 한국어 번역본입니다. 코드 부분은 번역하지 않고 주석만 번역했습니다.

### 데이터 배치
GPU 메모리 계층에서 데이터의 배치는 메모리 접근 로컬리티와 성능에 큰 영향을 미칠 수 있습니다. 데이터 배치를 최적화하면 메모리 지연 시간을 줄이고, 캐시 활용도를 높이며, 메모리 대역폭 활용도를 높일 수 있습니다.

이 분야의 연구에서는 애플리케이션의 메모리 접근 패턴과 리소스 요구 사항을 기반으로 GPU에서 데이터 배치를 최적화하는 기술을 탐구합니다.

예를 들어, Agarwal et al. [2015]은 GPU에 대한 데이터 배치 방식을 제안했는데, 이는 자주 함께 접근되는 데이터를 동일한 메모리 채널 또는 뱅크에 배치하여 메모리 접근 로컬리티를 향상시키는 것을 목표로 합니다. 이 방식은 정적 및 동적 분석의 조합을 사용하여 각 애플리케이션에 대한 최적의 데이터 배치를 결정합니다.

또 다른 예로, Tang et al. [2017]의 연구에서는 GPU의 데이터 배치 방식을 제안했는데, 이는 메모리 접근 패턴에 따라 데이터를 다른 메모리 채널에 배치하여 메모리 대역폭 활용도를 높이는 것을 목표로 합니다. 이 방식은 기계 학습 기반 접근법을 사용하여 애플리케이션의 메모리 접근 패턴을 예측하고 동적 데이터 배치 결정을 내립니다.

### 멀티 칩 모듈 GPU
GPU의 성능과 전력 요구 사항이 계속 증가함에 따라 기존의 단일 칩 설계로는 이를 따라가기 어려울 수 있습니다. 여러 GPU 칩을 단일 패키지에 통합하는 멀티 칩 모듈(MCM) 설계가 이 문제에 대한 유망한 솔루션으로 등장했습니다.

이 분야의 연구에서는 메모리 시스템 아키텍처, 상호 연결 설계, 리소스 관리 등 MCM GPU의 설계 및 최적화를 탐구합니다.

예를 들어, Arunkumar et al. [2017]은 고대역폭, 저지연 상호 연결을 사용하여 여러 GPU 칩을 연결하는 MCM GPU 설계를 제안했습니다. 또한 저자들은 메모리 시스템 아키텍처를 제안했는데, 이는 번역 버퍼 (TLB) 프리페칭 및 페이지 테이블 압축과 같은 기술을 활용하여 주소 변환의 지연 시간과 대역폭 오버헤드를 줄입니다.여기는 한국어 번역본입니다. 코드 부분은 번역하지 않고 주석만 번역했습니다.

MCM 설계의 증가된 대역폭과 용량을 활용하여 성능과 에너지 효율을 향상시킬 수 있습니다.

또 다른 예로, Milic et al. [2018]의 연구에서는 MCM GPU의 자원 관리 체계를 제안하여 자원 활용도를 높이고 칩 간 통신 오버헤드를 줄이고자 했습니다. 이 체계는 하드웨어와 소프트웨어 기술을 결합하여 애플리케이션의 자원 사용량과 통신 패턴을 모니터링하고 동적으로 자원 할당 결정을 내립니다.

## 결론
메모리 시스템은 현대 GPU 아키텍처의 핵심 구성 요소이며, 그 설계와 최적화는 전체 시스템 성능과 효율에 중요한 영향을 미칩니다. 병렬 워크로드의 요구사항이 계속 증가함에 따라, 연구자들은 GPU 메모리 시스템의 성능, 확장성, 적응성을 향상시키기 위한 다양한 기술을 탐구하고 있습니다.

이 분야의 주요 연구 방향에는 메모리 액세스 스케줄링 및 상호 연결 설계, 캐싱 효과, 메모리 요청 우선순위 지정 및 캐시 우회, 워프 간 이질성 활용, 협조적 캐시 우회, 적응형 캐시 관리, 캐시 우선순위 지정, 가상 메모리 페이지 배치, 데이터 배치, 멀티 칩 모듈 설계 등이 포함됩니다.

이러한 기술들을 탐구함으로써 연구자들은 높은 성능과 에너지 효율을 유지하면서도 병렬 워크로드의 증가하는 요구사항을 충족할 수 있는 GPU 메모리 시스템을 개발하고자 합니다. GPU가 기계 학습, 과학 컴퓨팅, 데이터 분석 등 새로운 분야에서 계속 발전함에 따라, 메모리 시스템의 설계와 최적화는 중요한 연구 및 혁신 분야로 남을 것입니다.