Ryotta's Basic

System
🖥️ System 검증완료

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 Taxonomy

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 추론, 그래프 처리

메모리 대역폭 병목 문제

Memory Wall

전통적인 CPU-메모리 접근 구조에서 발생하는 문제:

  1. 데이터 이동 비용: CPU가 메모리에서 데이터를 가져오고 다시 저장하는 데 전력 소모
  2. 대역폭 제한: CPU와 메모리 간 버스 대역폭이 연산 속도를 제한 (von Neumann 병목)
  3. 지연 시간: 메모리 접근 지연 시간이 연산 지연 시간보다 훨씬 큼
  4. 에너지 비효율: 데이터 이동에 소모되는 에너지가 연산 에너지보다 수십 배 높음

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 시스템은 다음 요소로 구성된다:

  1. 메모리 어레이: 기존 DRAM/SRAM 셀 어레이
  2. 연산 유닛: 메모리 근처에 배치된 ALU, MAC 유닛
  3. 제어 로직: 연산 유닛의 동작을 관리하는 제어 회로
  4. 인터페이스: CPU/PIM 간 통신을 위한 인터커넥트 (예: AXI, CXL)

2단계: 연산 요청 처리

CPU가 PIM 연산을 요청할 때의 흐름:

  1. CPU가 PIM 명령어를 메모리 컨트롤러에 전달
  2. 메모리 컨트롤러가 해당 뱅크/서브어레이의 PIM 유닛에 전달
  3. PIM 유닛이 로컬 메모리에서 데이터를 직접 읽기
  4. 연산 수행 (벡터 연산, 비트 연산 등)
  5. 결과를 메모리에 저장하거나 CPU에 반환

3단계: 데이터 병렬 처리

PIM Parallel Processing

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은 현대 컴퓨팅 시스템의 핵심 구성 요소가 될 것으로 기대된다.