title: PIM/NMP 아키텍처 개요
date: 2025-06-26
category: system
tags: [PIM, NMP, Processing-In-Memory, Near-Memory Processing, In-memory computing, Bank-level PIM, Row-level PIM, UPMEM, Samsung PIM, DRISA, Fulcrum]
PIM/NMP 아키텍처 개요
개요
PIM(Processing-In-Memory)은 메모리 칩 내부에 연산 요소를 통합하여 CPU와 메모리 간 데이터 이동으로 인한 병목을 줄이는 컴퓨터 아키텍처이다. 전통적인 von Neumann 구조에서는 CPU가 데이터를 가져와 처리한 후 다시 메모리에 저장해야 하지만, PIM은 데이터가 저장된 위치에서 직접 연산을 수행하여 에너지 효율성과 성능을 크게 향상시킨다.
NMP(Near-Memory Processing)는 PIM의 더 넓은 범주로, 메모리 컨트롤러 근처나 3D 적층 메모리의 로직 레이어에 연산 유닛을 배치하는 방식을 포함한다. 현대 AI/ML 워크로드, 그래프 처리, 유전체 분석 등 대용량 데이터 처리가 필요한 응용에서 PIM/NMP 기술이 주목받고 있으며, UPMEM의 PIM-DRAM, Samsung의 HBM-PIM, SK hynix의 AiM처럼 실제 제품과 평가 플랫폼도 등장했다.
특히 PIM/NMP는 연산량보다 데이터 이동량이 더 큰 워크로드에서 효과가 크다. 벡터-행렬 곱, 패턴 검색, BFS류 그래프 순회처럼 메모리 대역폭과 접근 지연이 지배적인 경우에는 CPU나 GPU가 반복적으로 데이터를 가져오는 비용을 줄일 수 있지만, 미세한 분기 제어가 많거나 강한 캐시 일관성이 필요한 일반 목적 코드에는 여전히 호스트 프로세서가 더 적합하다.
핵심 개념
PIM/NMP 분류 체계
PIM/NMP 구현 방식은 연산 요소의 배치 위치에 따라 네 가지 주요 카테고리로 분류된다:
| 분류 | 설명 | 접근 방식 | 대표 사례 |
|---|---|---|---|
| DIMM-level | DIMM 모듈 근처에 연산 유닛 배치 | Processing-near-memory | Chameleon, RecNMP |
| Logic-layer-level | 3D 적층 메모리의 로직 레이어에 연산 유닛 | Processing-near-memory | TOP_PIM |
| Bank-level | 각 메모리 뱅크 근처에 연산 유닛 배치 | Processing-near-memory | UPMEM, Samsung PIM |
| Subarray-level | 각 서브어레이 내부에서 데이터 처리 | Processing-using-memory | DRISA, Fulcrum |
Processing-using-memory vs Processing-near-memory
| 구분 | Processing-using-memory (PuM) | Processing-near-memory (PnM) |
|---|---|---|
| 원리 | 메모리 셀/회로 자체를 연산에 활용 | 메모리 근처에 별도의 연산 유닛 배치 |
| 장점 | 매우 높은 병렬성, 낮은 지연 | 범용 연산 가능, 프로그래밍 용이 |
| 단점 | 단순 연산만 가능 | 면적/전력 오버헤드 |
| 적용 | 비트 연산, 행 복사, 제로 초기화 | 벡터 연산, AI 추론, 그래프 처리 |
메모리 대역폭 병목 문제
전통적인 CPU-메모리 접근 구조에서 발생하는 문제:
- 데이터 이동 비용: CPU가 메모리에서 데이터를 가져오고 다시 저장하는 데 전력 소모
- 대역폭 제한: CPU와 메모리 간 버스 대역폭이 연산 속도를 제한 (von Neumann 병목)
- 지연 시간: 메모리 접근 지연 시간이 연산 지연 시간보다 훨씬 큼
- 에너지 비효율: 데이터 이동에 소모되는 에너지가 연산 에너지보다 수십 배 높음
PIM은 이 문제를 해결하기 위해 데이터가 있는 곳에서 직접 연산을 수행한다.
3D 적층 메모리와 PIM
3D 적층 메모리(예: HBM)는 로직 레이어와 DRAM 레이어를 수직으로 적층하여 높은 대역폭을 제공한다:
- 로직 레이어: 하단에 위치하며 메모리 컨트롤러 역할
- DRAM 레이어: 여러 층이 적층되어 대용량 저장
- Through-Silicon Via (TSV): 레이어 간 고속 연결
PIM은 이 로직 레이어에 연산 유닛을 추가하거나, DRAM 레이어 근처에 연산 기능을 통합한다.
프로그래밍 모델과 일관성 경계
실제 시스템에서 PIM 성능은 연산 유닛 자체보다도 명령 전달 방식과 데이터 일관성 규칙에 크게 좌우된다:
- 오프로드 단위: 많은 PIM 시스템은 캐시 라인 단위보다 큰 버퍼, 행, 타일, 벡터 단위로 작업을 넘긴다.
- 메모리 일관성 경계: 호스트 CPU 캐시와 PIM 로컬 상태가 동시에 같은 데이터를 수정하면 coherence 비용이 급격히 증가하므로, 보통은 DMA나 명시적 flush/sync 지점으로 경계를 만든다.
- 소프트웨어 스택: UPMEM처럼 전용 SDK와 tasklet 모델을 제공하는 경우도 있고, HBM-PIM처럼 라이브러리나 런타임이 특정 GEMV/GEMM 패턴을 오프로드하는 경우도 있다.
따라서 PIM 적용 여부는 하드웨어 구조뿐 아니라, 데이터 배치, 동기화 주기, 오프로드 가능한 커널의 형태까지 함께 검토해야 한다.
비교/분석
PIM 구현 방식 비교
| 항목 | DIMM-level | Logic-layer | Bank-level | Subarray-level |
|---|---|---|---|---|
| 연산 유닛 위치 | DIMM 모듈 | 3D 적층 로직 레이어 | 메모리 뱅크 내부 | 서브어레이 내부 |
| 대역폭 | 중간 | 높음 (3D TSV) | 높음 | 매우 높음 |
| 지연 시간 | 중간 | 낮음 | 낮음 | 매우 낮음 |
| 연산 유연성 | 높음 | 중간 | 중간 | 낮음 |
| 면적 오버헤드 | 높음 | 중간 | 중간 | 낮음 |
| 프로그래밍 모델 | 기존 호환 | 별도 SDK | 별도 SDK | 특수 명령어 |
| 캐시 일관성 관리 | 상대적으로 쉬움 | 런타임/드라이버 의존 | 소프트웨어 관리 필요 | 가장 까다로움 |
| 성숙도 | 높음 | 중간 | 높음 | 낮음 |
| 대표 제품 | Chameleon | TOP_PIM | UPMEM, Samsung | DRISA, Fulcrum |
기존 CPU-메모리 구조 vs PIM 비교
| 항목 | 기존 CPU-메모리 | PIM (Bank-level) | PIM (Subarray-level) |
|---|---|---|---|
| 데이터 흐름 | CPU ←→ 메모리 ←→ CPU | CPU ←→ PIM-DRAM | CPU ←→ PIM 셀 |
| 대역폭 | 50-100 GB/s | 200-500 GB/s | 1+ TB/s |
| 에너지 효율 | 1x (기준) | 5-10x 향상 | 10-100x 향상 |
| 적합 워크로드 | 범용 | 패턴 기반 검색, 통계 | 비트 연산, 행 단위 처리 |
| 프로그래밍 | 표준 C/C++ | PIM SDK | 하드웨어 특수 |
상용 PIM 제품 비교
| 제품 | 제조사 | 타입 | 특징 |
|---|---|---|---|
| UPMEM PIM-DRAM | UPMEM | Bank-level | DRAM 뱅크마다 RISC 코어, DDR 인터페이스 호환 |
| Samsung PIM | Samsung | Bank-level | HBM 기반, AI 추론 특화, GEMV 연산 가속 |
| SK Hynix AiM | SK Hynix | Logic-layer | HBM3 기반, AI 추론/학습, AXI 인터페이스 |
| Intel MDF | Intel | Logic-layer | DIMM 폼팩터, 데이터 처리 가속 |
동작 원리
1단계: PIM 아키텍처 구성
PIM 시스템은 다음 요소로 구성된다:
- 메모리 어레이: 기존 DRAM/SRAM 셀 어레이
- 연산 유닛: 메모리 근처에 배치된 ALU, MAC 유닛
- 제어 로직: 연산 유닛의 동작을 관리하는 제어 회로
- 인터페이스: CPU/PIM 간 통신을 위한 인터커넥트 (예: AXI, CXL)
2단계: 연산 요청 처리
CPU가 PIM 연산을 요청할 때의 흐름:
- CPU가 PIM 명령어를 메모리 컨트롤러에 전달
- 메모리 컨트롤러가 해당 뱅크/서브어레이의 PIM 유닛에 전달
- PIM 유닛이 로컬 메모리에서 데이터를 직접 읽기
- 연산 수행 (벡터 연산, 비트 연산 등)
- 결과를 메모리에 저장하거나 CPU에 반환
3단계: 데이터 병렬 처리
PIM의 핵심 장점은 데이터 병렬 처리이다:
- 행 단위 처리: DRAM 행(보통 8KB)을 한 번에 읽어 병렬 연산
- 뱅크 독립성: 각 뱅크가 독립적으로 연산 수행 가능
- 서브어레이 수준: 서브어레이마다 독립된 연산 유닛으로 최고 수준의 병렬성
4단계: 메모리 인터페이스 관리
PIM은 기존 메모리 인터페이스와의 호환성을 유지하면서 확장된다:
- DDR 인터페이스: DIMM-level PIM은 기존 DDR 슬롯 호환
- HBM 인터페이스: Logic-layer PIM은 HBM의 로직 레이어 활용
- CXL 인터페이스: 차세대 PIM은 CXL 프로토콜로 메모리 풀링 지원
이 단계에서 중요한 것은 주소 변환과 동기화 정책이다. 호스트는 어떤 버퍼를 PIM이 직접 다뤄도 되는지 표시해야 하고, 런타임은 캐시 flush, DMA 완료, 결과 반영 시점을 관리해야 한다. 이 제어 비용이 너무 커지면 PIM의 데이터 이동 절감 효과가 상쇄될 수 있으므로, 실제 구현은 대개 반복성이 큰 커널을 긴 배치 단위로 오프로드한다.
장단점
| 장점 | 단점 |
|---|---|
| 메모리 대역폭 병목 제거 | 복잡한 프로그래밍 모델 |
| 에너지 효율성 대폭 향상 (10-100x) | 하드웨어 설계 복잡도 증가 |
| 데이터 근처에서 직접 연산 | 기존 소프트웨어 호환성 제한 |
| 높은 수준의 데이터 병렬성 | 디버깅/프로파일링 도구 부족 |
| AI/ML, 그래프 처리 등에 최적화 | 상용 제품 생태계 미성숙 |
| 기존 메모리 인터페이스 호환 가능 | 온도 관리 문제 (PIM 칩 열 발산) |
| 메모리 에러 수정 등 부가 기능 통합 | 캐시 일관성 관리 복잡 |
관련 기술
- Memory Hierarchy: 메모리 계층 구조와 PIM의 위치
- CPU Cache Architecture: 캐시 계층과 PIM 캐시 관리
- Memory Controller: 메모리 컨트롤러와 PIM 통합
- NUMA Architecture: NUMA 구조와 PIM 메모리 배치
- Memory Interconnect: 메모리 인터커넥트와 PIM 통신
- UPMEM PIM-DRAM: 상용 Bank-level PIM 제품 (DDR 인터페이스)
- Samsung HBM-PIM: HBM 기반 AI 추론 특화 PIM
- SK Hynix AiM: HBM3 기반 AI 가속 PIM
- DRISA: DRAM 기반 재구성 인시추 가속기
- Fulcrum: 유연하고 실용적인 인시추 가속기 제어/접근 메커니즘
- Berkeley IRAM Project: 초기 PIM 연구 프로젝트 (Vector IRAM, RADram)
- CXL (Compute Express Link): 차세대 메모리 인터커넥트로 PIM과의 통합 가능성
- Processing-in-Memory (PIM) Survey: IBM, CMU 등에서의 PIM 워크로드 연구
- Ghose et al., IBM JRD 2019: 워크로드 기준으로 PIM 적합성을 정리한 대표 survey
- UPMEM Documentation: DPU/tasklet 기반 Bank-level PIM 프로그래밍 모델 참고 자료
- Samsung HBM-PIM 자료: HBM 로직 다이에 연산 기능을 붙여 AI 추론 효율을 높이는 상용 접근 사례
핵심 정리
PIM/NMP는 von Neumann 병목을 해결하기 위해 메모리 근처나 내부에 연산 요소를 통합하는 아키텍처이다. DIMM-level, Logic-layer-level, Bank-level, Subarray-level의 네 가지 주요 구현 방식이 있으며, Processing-using-memory와 Processing-near-memory로 구분된다. UPMEM, Samsung, SK Hynix 등의 상용 제품이 출시되어 AI/ML 추론, 그래프 처리, 패턴 검색 등 대용량 데이터 처리 응용에서 활용되고 있다. PIM은 기존 메모리 대비 10-100배의 에너지 효율성 향상과 높은 수준의 데이터 병렬성을 제공하지만, 프로그래밍 모델의 복잡성과 생태계 미성숙이라는 과제가 남아있다. CXL 등 새로운 인터커넥트 기술과의 통합을 통해 향후 PIM은 현대 컴퓨팅 시스템의 핵심 구성 요소가 될 것으로 기대된다.