PIM 메모리, 데이터를 옮기지 않고 계산하는 원리
보고서를 쓰려고 도서관에서 책 수십 권을 빌려 집으로 나른다고 생각해 보겠습니다. 정작 필요한 건 책마다 몇 쪽씩인데, 시간과 힘은 대부분 책을 옮기는 데 들어가죠. 차라리 도서관 열람실에 앉아 필요한 부분만 읽고 메모 한 장만 들고 나오는 편이 훨씬 효율적입니다.
PIM 메모리는 이 열람실 같은 발상에서 출발합니다. 데이터를 프로세서까지 실어 나르는 대신 메모리 안에서 간단한 계산을 끝내고 결과만 내보내자는 것이죠. 이 글에서는 왜 이런 구조가 필요해졌는지, 연산기를 어디에 두는지, 어떤 작업에 잘 맞고 무엇이 상용화를 어렵게 하는지 차례로 살펴보겠습니다.
PIM 메모리란 무엇인가
PIM(Processing-in-Memory, 메모리 내 연산)은 메모리 칩 내부에 연산 장치를 넣어 데이터가 저장된 자리 가까이에서 계산하는 구조를 말합니다. 지금까지의 컴퓨터는 메모리는 저장만, 프로세서는 계산만 맡는 분업 구조였는데, PIM은 이 경계를 일부 허무는 시도이죠.
여기서 메모리 안에 들어가는 연산기는 CPU나 GPU처럼 복잡한 장치가 아닙니다. 곱셈과 덧셈을 반복하는 단순한 연산기와 작은 레지스터 정도로, 자주 반복되고 단순한 계산만 메모리 쪽으로 떼어 내는 것이 핵심입니다.
메모리 벽, 계산보다 비싼 데이터 이동
프로세서의 연산 속도는 수십 년 동안 빠르게 늘었지만, 메모리에서 데이터를 꺼내 오는 속도와 대역폭은 그만큼 따라오지 못했습니다. 연산기는 놀고 있는데 데이터가 도착하지 않아 기다리는 현상을 메모리 벽(Memory Wall)이라고 부르죠. 저장과 연산을 나눈 폰 노이만 구조(Von Neumann Architecture)에서 둘을 잇는 통로가 병목이 된다는 점에서 폰 노이만 병목이라고도 합니다.
더 큰 문제는 에너지입니다. 칩 밖의 DRAM에서 데이터를 한 번 읽어 오는 데 드는 에너지는 같은 데이터로 덧셈 한 번을 하는 에너지보다 수백 배 이상 크다는 분석이 널리 인용됩니다. 계산 자체보다 데이터를 옮기는 비용이 전체 전력의 큰 몫을 차지하게 된 것이죠.
대역폭에도 숨은 낭비가 있습니다. DRAM 안에는 여러 개의 뱅크가 있고, 각 뱅크가 한 번에 열어 두는 데이터의 양을 모두 합치면 칩 밖으로 나가는 입출력 핀이 실어 나를 수 있는 양보다 훨씬 많습니다. 칩 내부의 넓은 길을 두고 좁은 출구로만 데이터를 내보내는 셈이니, 계산을 내부에서 끝내면 이 내부 대역폭을 그대로 쓸 수 있죠.
연산기를 어디에 둘 것인가
메모리 가까이에서 계산한다는 생각은 같아도, 연산기를 얼마나 가까이 두느냐에 따라 방식이 나뉩니다. 이 구분을 정확히 알아 두면 기술 기사나 발표 자료를 읽을 때 헷갈리지 않습니다.
뱅크 옆에 연산기를 두는 PIM
좁은 의미의 PIM은 DRAM 다이 안, 각 뱅크 옆에 연산기를 둡니다. 뱅크에서 읽어 낸 데이터가 칩 밖으로 나가기 전에 바로 연산기로 들어가므로 이동 거리가 가장 짧죠. 여러 뱅크의 연산기가 동시에 일하므로 뱅크 수만큼의 병렬성을 얻습니다.
뱅크 단위 PIM에서 행렬과 벡터를 곱하는 흐름(단순화)
- 호스트가 가중치 행렬을 여러 뱅크에 나누어 미리 저장해 둡니다.
- 호스트가 곱할 입력 벡터를 각 뱅크의 연산기 레지스터로 보냅니다.
- 각 뱅크가 자기 몫의 행을 읽어 입력 벡터와 곱하고 더하는 연산을 동시에 수행합니다.
- 뱅크별 부분 결과를 모아 호스트로 내보냅니다. 큰 행렬은 칩 안에 남고 작은 결과만 나갑니다.
실제 제품으로는 삼성전자의 HBM-PIM과 SK하이닉스의 GDDR6-AiM처럼, 기존 메모리 규격에 연산 기능을 더한 사례가 발표된 적이 있습니다. 다만 구현 방식과 성능 수치는 회사와 세대마다 다르므로, 개념을 보여 주는 예로 이해하는 편이 좋습니다.
메모리 근처에 두는 PNM
PNM(Processing-near-Memory, 근접 메모리 연산)은 연산기를 메모리 셀 다이가 아니라 메모리 바로 옆의 로직 다이나 버퍼 칩에 둡니다. HBM의 맨 아래 베이스 다이나 메모리 모듈의 버퍼 칩에 연산 기능을 넣는 식이죠. 셀과의 거리는 PIM보다 멀지만 로직 공정으로 만들 수 있어 연산기를 더 빠르고 크게 설계할 수 있습니다.
셀 자체로 계산하는 인메모리 컴퓨팅
한 걸음 더 나아가 메모리 셀 배열 자체를 계산기로 쓰는 연구도 있습니다. 셀의 저항을 가중치로 두고 전압을 입력으로 주면, 옴의 법칙으로 곱셈이, 같은 선으로 모이는 전류의 합으로 덧셈이 한꺼번에 이루어지죠. 이런 아날로그 방식의 인메모리 컴퓨팅(In-Memory Computing)은 효율이 높지만 정밀도와 소자 편차 문제가 커서 아직 연구 성격이 강합니다.
PIM 메모리가 잘 맞는 작업
PIM 메모리가 빛나는 곳은 메모리 바운드(Memory-bound) 작업, 즉 계산량에 비해 읽어야 할 데이터가 많은 작업입니다. 데이터 하나를 가져와 한두 번 계산하고 버리는 일이 반복되면 연산기는 데이터를 기다리느라 대부분의 시간을 보내죠.
대표적인 예가 행렬과 벡터의 곱셈인 GEMV(General Matrix-Vector Multiplication)입니다. 대규모 언어 모델이 답을 한 토큰씩 만들어 내는 단계에서는 거대한 가중치 행렬을 매번 읽어 와 작은 벡터 하나와 곱하는데, 가중치 하나당 계산이 거의 한 번뿐이라 데이터 이동이 성능을 좌우합니다. 추천 시스템의 임베딩 조회나 대규모 데이터 검색도 비슷한 성격을 띠죠.
반대로 행렬과 행렬을 곱하는 GEMM(General Matrix-Matrix Multiplication)처럼 한 번 가져온 데이터를 여러 번 재사용하는 컴퓨트 바운드(Compute-bound) 작업은 GPU나 NPU의 강력한 연산기가 훨씬 유리합니다. 모델 학습이나 긴 입력을 한꺼번에 처리하는 단계가 여기에 가깝죠.
상용화를 가로막는 과제
흔히 PIM이 자리 잡으면 CPU나 GPU가 필요 없어진다고 생각하기 쉽지만, PIM은 프로세서를 대체하는 기술이 아니라 특정 작업을 덜어 주는 보조 장치에 가깝습니다. 그리고 그 보조 역할조차 넘어야 할 산이 많습니다.
첫째는 공정의 차이입니다. DRAM 공정은 셀을 촘촘히 만들고 누설을 줄이는 데 맞춰져 있어, 같은 다이에 만든 로직 트랜지스터는 로직 전용 공정보다 느리고 배선 층도 적습니다. 연산기가 차지하는 면적만큼 저장 용량이 줄어드는 손해도 감수해야 하죠.
둘째는 열과 전력입니다. DRAM은 온도가 오르면 셀의 전하가 빨리 새어 리프레시를 더 자주 해야 하는데, 메모리 안에서 연산까지 하면 발열이 늘어 이 부담이 커집니다.
셋째는 소프트웨어입니다. 어떤 연산을 메모리로 보낼지, 데이터를 어느 뱅크에 어떻게 배치할지를 프로그래머와 컴파일러가 알아야 하는데, 이를 쉽게 해 주는 프로그래밍 모델과 업계 공통 표준이 충분히 자리 잡지 않았다는 점이 과제로 꼽힙니다. 하드웨어가 있어도 쓰는 방법이 제각각이면 생태계가 커지기 어렵죠.
메모리 연산 방식 비교 표
| 구분 | 기존 구조 | PNM | PIM | 아날로그 인메모리 컴퓨팅 |
|---|---|---|---|---|
| 연산 위치 | CPU·GPU | 메모리 옆 로직 다이·버퍼 | 메모리 다이 안 뱅크 옆 | 셀 배열 자체 |
| 데이터 이동 | 가장 많음 | 줄어듦 | 크게 줄어듦 | 거의 없음 |
| 연산기 성능 | 높음 | 비교적 높음(로직 공정) | 제한적(DRAM 공정) | 정밀도 제한 |
| 잘 맞는 작업 | 범용, 컴퓨트 바운드 | 메모리 바운드 연산 일부 | GEMV 같은 단순 반복 연산 | 신경망 추론 연구 |
| 주요 과제 | 메모리 벽, 전력 | 설계 복잡도, 비용 | 용량 손실, 발열, 프로그래밍 모델 | 소자 편차, 정확도 |
핵심 정리
PIM 메모리는 데이터를 프로세서로 옮기는 비용이 계산 비용보다 커진 시대에, 단순하고 반복적인 연산을 메모리 안에서 끝내 이동량을 줄이려는 구조입니다. 뱅크마다 연산기를 두어 칩 내부의 넓은 대역폭을 쓰는 것이 핵심이고, GEMV처럼 메모리 바운드인 작업에서 효과가 큽니다.
책을 다 들고 집에 가는 대신 열람실에서 필요한 부분만 정리해 나오듯, 모든 계산을 메모리로 옮기는 것이 아니라 옮기는 편이 이득인 계산만 골라내는 것이 요점입니다. 관련 소식을 볼 때는 연산기가 셀 다이 안에 있는지 옆 로직 다이에 있는지, 어떤 작업을 겨냥하는지, 소프트웨어 지원이 어디까지 왔는지를 함께 보면 기술의 위치를 정확히 가늠할 수 있습니다.
면접 대비 질문
면접 대비 질문PIM이 대규모 언어 모델의 추론 중 어떤 단계에서 특히 유리하며, 그 이유는 무엇입니까?
[답변 포인트] 토큰을 하나씩 생성하는 단계는 큰 가중치 행렬을 매번 읽어 작은 벡터와 곱하는 GEMV 연산이 중심이라, 가중치 하나당 연산 횟수가 적은 메모리 바운드 작업이라고 설명합니다. 이런 작업은 연산기보다 메모리 대역폭과 데이터 이동 에너지가 성능을 좌우하므로, 뱅크마다 연산기를 둔 PIM이 칩 내부 대역폭을 활용해 이동량과 전력을 줄일 수 있다고 답합니다. 반면 데이터 재사용이 많은 GEMM 중심 단계는 GPU가 유리하다는 점, 그리고 공정 한계로 인한 연산기 성능과 용량 손실, 프로그래밍 모델 같은 과제를 함께 언급하면 균형 잡힌 답이 됩니다.









