티스토리 뷰

반응형

얼마 전 과학기술정보통신부와 산업통상자원부는 "AI 반도체 선도국가 도약으로 AI·종합반도체 강국 실현" 달성을 위한 전략과 실행 과제를 밝혔는데 여기서 3대 과제 중 하나로 PIM(processing in memory)가 등장합니다. 대한민국의 AI 반도체 경쟁우위 확보를 위해 PIM의 개발이 중요하며 이에 필요한 인력 교육, 연구 개발에 정부가 지원하겠다는 내용입니다. 미래에 AI가 중요하며 경쟁력 확보를 위한 정부의 지원은 이해가 가는데 PIM은 생소한 분들이 많을 겁니다. 이 글에서는 PIM의 개념을 설명하고 AI 시대에 PIM이 왜 중요한지, 정부가 왜 PIM을 육성하려고 하는지 설명하겠습니다.

 

PIM (processing in memory) 이란?

PIM은 단어 그대로 메모리에서 연산이 이뤄짐을 의미합니다. 메모리에서 연산을 한다는 것이 뭐 그리 중요한가 생각할 수도 있지만 기존의 컴퓨터 아키텍처를 생각한다면 이는 상당한 혁신입니다. 이전글(컴퓨터 내 DRAM의 역할과 흐름)에서 설명했듯이 현대 컴퓨터 시스템은 Von Neumann 아키텍처를 따르고 있습니다. Von Neumann 아키텍처에서는 메모리가 명령어 및 연산자의 저장을 담당하고 프로세서는 메모리에서 명령어 및 연산자를 가져와 연산을 수행하죠. 따라서 기존 아키텍처에서 메모리는 정보의 입/출력 및 저장만 수행했습니다. 이러한 상황에서 메모리가 컴퓨터 시스템 내 역할을 확대하여 기존 프로세서가 담당하던 연산 중 일부를 수행하겠다는 것이지요.

Samsung의 PIM 설명자료 (source: Hot Chips 2016)

 

그렇다면 AI 시대에 왜 메모리에서 연산을 수행하려는 것일까요? 그 이유는 AI 연산에서 메모리 입/출력이 상당히 많은 응용이 생겨났고, 프로세서의 연산 속도를 메모리가 따라가지 못해 메모리 입/출력 속도 제한으로 인한 전체 AI 연산 성능 제약이 발생하고 있기 때문입니다. 아래는 Google TPU 논문에서 보였던 유명한 Roofline 그래프입니다. 이 그래프는 컴퓨팅 시스템의 성능 제약이 어떤 원인에서 비롯되었는지 파악하기 위해 사용됩니다. 왼쪽의 컴퓨팅 연산 능력이 증가하는 부분은 메모리 대역폭(Bandwidth)이 성능의 Bottleneck이며 오른쪽의 평평한 부분은 프로세서의 연산 속도가 Bottleneck이 됩니다. 딥러닝 알고리즘 별로 분류하자면 CNN은 프로세서 연산 속도의 개선이 중요한 Compute bound지만 음성 인식에 주로 활용되는 RNN이나 맞춤 서비스에 사용되는 DNN은 메모리 대역폭의 개선이 필요한 Memory bound입니다. CNN은 RNN이나 DNN에 비해 메모리를 가져와 여러 번 연산을 수행하는 메모리 재사용율이 높기 때문에 Compute 연산 속도가 시스템 성능 향상에 중요하죠.

Roofline model (source: codeproject.com)

 

프로세서에서 연산을 하기 위해서는 데이터가 필요하고 이를 메모리에서 가져온 후 결과를 다시 기록해야 하는데, 프로세서와 메모리를 오가는 대역폭의 제약이 있다 보니 전체적인 AI 연산이 느려지게 됩니다. 따라서 많은 연구자와 엔지니어는 메모리에서 일부 연산을 수행하여 프로세서와 메모리가 주고받는 데이터양을 줄인다면 전체적인 성능 향상이 이뤄지지 않을까 하는 생각을 하게 되었고, 이 것이 PIM의 탄생이 되었죠. 또한 메모리를 주고 받는데에는 많은 에너지가 소모되는데, PIM이 도입된다면 데이터 전송에 필요한 에너지를 아낄 수 있는 장점도 있습니다.

 

왜 정부는 PIM이 AI 반도체 선도국가 도약에 필요하다고 봤을까?

많은 전문가들이 지적하듯이 한국 반도체 산업의 특징은 메모리 주도라는 점입니다. 얼마전 SK 하이닉스가 인텔 SSD 사업 부분을 인수하여, DRAM과 Nand 부분 모두 한국 업체 두 곳이 1,2위를 차지고 시장 점유율의 절반 이상을 가져가죠. 하지만 비메모리 분야의 비중과 성장세가 점차 커지는 상황에서 비메모리 분야 중 하나인 프로세서 설계 부분에서 세계 시장을 이끌어가는 기업이 없다는 고민이 있습니다. 이러한 상황에서 장기적으로는 프로세서 설계 역량을 강화해 Qualcomm 같은 Fabless 프로세서 디자인 업체가 나오게 해야 하지만, 단기적으로 AI 시대에 대응할 전략이 정부 입장에서 필요했겠죠. 그 중 우리나라 기업이 잘 하는 메모리에 Processing 기능을 추가하여 AI 응용에 대응할 수 있는 PIM이 매력적인 대안이었을 것입니다. PIM은 SRAM, MRAM 등에서도 구현할 수 있는 개념이지만 우리나라가 잘하며 보다 현실적인 DRAM에서의 PIM을 중심으로 살펴보겠습니다.

 

PIM의 구현 방법 분류

구체적으로 PIM을 구현하는 방법으로는 Processing-near-memory와 Processing-in-chip라는 2가지 방법이 있습니다.

Processing-near-memory

Near-memory processing은 실제 메모리 Chip 내부가 아닌 메모리 Package에 별도의 연산 장치를 넣고 필요 연산을 수행하는 개념입니다. 왜 Chip 외부에 연산 Logic을 다시 추가하는 것일까요? DRAM은 Commodity의 개념을 갖는 제품입니다. 동일한 DRAM chip이 노트북, 핸드폰, TV 등 다양한 제품에 동일하게 들어가죠. 따라서 원가 절감이 매우 중요합니다. 각 DRAM 회사들이 EUV 도입 등 공정 미세화에 힘을 쏟는 이유 중 가장 중요한 것은 동일 사이즈의 웨이퍼에 보다 많은 Chip을 생산해서 원가를 절감하려는 목적입니다. 따라서 PIM을 위해 DRAM chip에 연산 Logic을 추가한다면 Chip size가 커지고 원가가 높아지며 수익성 악화로 이어집니다. PIM 기능을 요구하지 않는 응용에서의 PIM 기능 추가는 쓸데 없는 원가 상승이며, PIM을 필요로 한다고 하더라도 각 응용마다 요구하는 연산의 형태가 달라 모든 응용의 요구에 부합하는 연산 기능을 추가하기도 힘든 상황이지요. 따라서 DRAM Chp은 그대로 유지하며 PIM을 필요로 하는 응용에 맞춰 Logic processor를 추가하여 이러한 부담을 최소화 하고자 합니다.

 

그렇다면 DRAM 근처 어디에 PIM 기능을 추가하는 것인가요? 지금까지 고려된 주요 설치 위치는 DDR DIMM과 HBM의 Buffer die입니다.

DDR은 채널 효율성 및 집적도를 높이기 위해 하나의 PCB위에 여러 개의 DDR Chip을 부착한 DIMM 형태로 많이 판매되고 있습니다. 당연히 DIMM PCB에는 여유 공간이 생기는데 여기에 PIM을 추가하는 것이지요. 현재 DIMM에서도 Reliability 강화를 위한 ECC chip, Data 및 명령어 제어를 위한 별도의 Chip이 탑재된 제품이 있기 때문에 Processing을 위한 Chip 추가가 상대적으로 어렵지 않습니다. 다음 시간에 소개할 Facebook 논문도 DLRM (deep learning recommendation model)의 성능 향상을 위해 DIMM에 특수 목적의 PIM용 Logic chip 추가를 제안하고 있습니다.

Memory buffer Chip이 추가로 포함된 DDR DIMM (source: frankdenneman.nl)

 

HBM은 TSV(through silicon via)를 활용해 DRAM chip과 외부 PKG 사이의 통신 속도 및 대역폭을 높인 메모리 Interface입니다. TSV를 통해 모인 Data가 외부로 나가기 전에 맨 아래의 Logic(Buffer die)에서 순서를 맞춘 후 내보내지죠. HBM의 Buffer die는 상당히 여분 공간이 많이 남아 있는 상황이므로 활용 여지가 많습니다. 또한 HBM이 딥러닝 응용에 주로 활용되는 고성능 메모리이기 때문에 딥러닝 응용의 전체적인 성능을 향상시켜줄 수 있는 PIM에도 많은 관심이 있죠. 실제로 Google이 발표한 PIM 논문에서도 HBM의 Buffer die에의 PIM 적용을 가정하고 있습니다.

Logic die(갈색)이 포함된 HBM (3D-stacked die) (source: researchgate.net)

 

Processing-in-chip

Processing-in-chip은 데이터가 저장된 DRAM Cell 근처에 연산을 수행하는 Logic을 포함하는 방식입니다. Processing-near-memory는 기존 Processor가 하던 역할을 DRAM PKG로 가져오는 Offloading의 성격이 크기 때문에, 메모리 대역폭 절감이라는 목표는 달성할 수 있었지만 효율성 관점에서는 많은 개선이 없다는 단점이 없습니다. 하지만 Processing-in-chip은 Data의 입/출력과 동시에 필요한 연산이 이뤄질 수 있기 때문에 Processing-near-memory보다 훨씬 효율적이라는 장점이 있지요. 물론 앞에서 설명했듯이, DRAM chip 내에 연산을 위한 Logic을 추가한다는 것이 비용 부담으로 이어지기 때문에 어떠한 필수적인 연산을 수행하도록 할 것인가에 대한 고민은 남을 수 밖에 없습니다. 이러한 이유 때문에 Processing-near-memory에 비해서는 상용화 속도가 늦고 관련 논문도 Concept 제안인 경우가 많습니다.

 

이번 글에서는 PIM의 개념과 DRAM에의 적용 방법에 대해 알아봤습니다. 다음 글(Processing in memory(PIM)이란? (2) - 사례)에서는 Facebook과 Google을 중심으로 기업에서 PIM을 적용하려는 움직임 및 PIM을 적용하는데 따르는 어려움에 대해 소개하겠습니다. 

반응형
댓글
글 보관함