NVIDIA GPU 기준 접근
기본 계층 구조
- Registers ( 스레드 전용, 가장 빠름)
- Shared Memory + L1 Cache ( 보통 SM 당)
- L2 Cache ( 칩 전체에서 공유 )
- Global Memory ( HBM/GDDR )
그리고 별도로
- Constant Cache
- Tenxture Cache
- Local Memory
L1 Cache
SM 당 하나씩 존재 ( 보통 shared memory 와 자원을 나눠쓰는 구조 )
특징 : warp 가 ld.global 할 때, 우선 L1 에서 찾고, 없으면 L2 로, hit 가 나면 L2/글로벌보다 훨씬 빠름
coalescing 과 밀접한 이유 : L1 은 128 B 캐시라인/세그먼트 단위로 데이터를 끌어온ㄴ다고 보면 됨
warp 의 32 thread 가 float (4B) 32개를 연속으로 읽으면, 딱 128B 한 번
stride 가 크거나 흐트러져 있으면 여러 128B 라인이 필요
L2 Cache
칩 전체에 공유되는 큰 캐시
특징 : 여러 SM 이 공통으로 보는 중간 캐시, 서로 다른 커널/SM 에서 같은 데이터를 읽을 때 L2 hit 가 날 수도 있음, 대략 L1 보단 느리지만 DRAM 보단 훨씬 빠른 속도
접근 경로
스레드 - 레지스터/Shared - (global load) - L1 - (miss) - L2 - (miss) - DRAM
같은 배열을 여러 번 스캔하는 커널, 첫 번엔 L2/DRAM 에서 끌어로고, 반복할수록 L2 hit 비율이 올라가면서 평균 latency 가 줄어든다.
huge working set + 랜덤 접근 : L2 도 자꾸 miss - DRAM 레이턴시를 거의 그대로 맞는다.
'GPU-KERNEL' 카테고리의 다른 글
| 퀴즈 — Register Pressure & Occupancy & Compiler Behavior (0) | 2025.11.18 |
|---|---|
| occupancy_reg_pressure_test_v3 - 실제 register pressure 에 따른 occupancy 감소 확인, (0) | 2025.11.18 |
| Occupancy / Register Pressure (0) | 2025.11.18 |
| Warp Divergence QUIZ - 추가로 조건이 스레드 단위가 아닌 블록 단위면 괜찮은 이유에 대해 (0) | 2025.11.18 |
| Coalescing / Shared Memory Bank Conflict / Warp Divergence 세 가지 개념 익히기 - 스레드 단위 병렬 성능 결정 요소들 (0) | 2025.11.18 |