삼성 LPDDR5X-PIM: 메모리 내 처리 아키텍처 및 과제
삼성 LPDDR5X-PIM은 내부 메모리 대역폭을 증가시킨다
삼성은 DRAM과 전통적인 계산 코어 사이의 높은 지연 시간 경로를 피하기 위해, Multiply-Accumulate (MAC) 유닛을 LPDDR5X 칩 내부에 직접 통합함으로써 메모리 내 처리(PIM)를 구현하고 있다. 이 아키텍처는 계산 작업을 메모리 칩 내부에서 수행할 수 있게 해주며, 더 높은 내부 대역폭을 활용한다.
표준 LPDDR5X-9600 칩은 외부 인터페이스로 인해 최대 76.8 GB/s에 제한되지만, LPDDR5X-PIM은 각각의 16개 뱅크에 PIM 블록을 탑재하고 있다. 외부 버스의 제약 없이 이러한 뱅크에 접근함으로써 칩은 614 GB/s의 내부 대역폭을 달성한다.
하드웨어 아키텍처 및 계산 처리량
각 PIM 블록은 레지스터 파일과 제어 논리를 지원하는 MAC 트리로 구성된다. 이 아키텍처는 특정 레지스터 구조를 사용하여 작업을 관리한다:
- 명령어 레지스터 파일: 최대 64개의 16비트 명령어를 담을 수 있는 1024비트 파일.
- 소스 레지스터 파일: 활성화 벡터를 위한 4 kbit 파일로, 하나의 소스 오퍼랜드를 제공한다.
- 스케일 레지스터: 모델 가중치를 스케일링하기 위한 2 kbit 레지스터.
- DRAM 뱅크: MAC 어레이에 직접 두 번째 오퍼랜드(모델 가중치)를 공급한다.
성능 지표
MAC 어레이는 저정밀도 형식을 지원한다. 각 PIM 블록은 데이터 클록당 네 개의 INT8 또는 FP8 MAC 연산을 지속적으로 수행할 수 있으며(더블 데이터 레이트를 제외하면 주기당 여덟 개), 4비트 입력 가중치에 대해서는 처리량이 두 배로 증가한다. 단일 칩은 패키지 전체 계산 처리량을 2.4 TOPS로 제공한다. 비교를 위해, 8개의 LPDDR5X 칩 구성은 약 9.6 INT8 TOPS를 제공하며, 이는 인텔 메테오르 레이크에 탑재된 NPU 성능과 비슷하다.
프로토콜 통합 및 모드 전환
삼성은 특수한 행 주소를 메모리 매핑 I/O(MMIO) 주소로 재사용함으로써 표준 LPDDR5X 프로토콜과의 호환성을 유지하도록 LPDDR5X-PIM을 설계했다. 칩은 두 가지 주요 모드에서 작동한다:
- 싱글 뱅크 모드: 일반 DRAM 접근을 위한 표준 운영 모드.
- 멀티 뱅크 모드: 모든 16개 뱅크에 동시에 명령을 적용하여 내부 대역폭을 활용한다.
PIM 작업을 실행하려면 소프트웨어가 칩을 멀티 뱅크 모드로 전환하고 "PIM 레지스터 활성화" 모드로 진입해야 한다. 이 상태에서는 읽기 및 쓰기 명령이 DRAM 내용이 아닌 PIM 레지스터에 접근한다. 칩이 멀티 뱅크 모드이기 때문에 레지스터 쓰기는 모든 16개 뱅크에 브로드캐스트되며, 제약된 SIMD 프로세서처럼 작동한다.
주소 지정 및 재정렬
메모리 컨트롤러의 재정렬로 인한 문제를 방지하기 위해 삼성은 주소 정렬 모드(AAM) 를 구현했다. AAM은 각 명령어가 접근 중인 열 주소로부터 소스 레지스터 인덱스를 추론함으로써, 메모리 컨트롤러가 접근을 어떤 순서로 내보내든 작업의 올바른 순서를 유지한다.
소프트웨어 및 시스템 통합 과제
하드웨어 기능에도 불구하고, 현대 컴퓨팅 환경에 LPDDR5X-PIM을 통합하는 것은 메모리 일관성과 OS 멀티태스킹 측면에서 심각한 과제를 안고 있다.
메모리 격리 및 멀티태스킹
PIM 모드가 DRAM 명령어의 기본 의미를 변경하기 때문에, PIM과 일반 메모리 접근은 동시에 발생할 수 없다. 이로 인해 여러 충돌이 발생한다:
- 스레드 간 간섭: PIM이 아닌 스레드가 읽기를 수행하면 의도하지 않은 계산이 발생하거나 PIM 벡터 레지스터 파일(VRF) 결과가 손상될 수 있다.
- OS 스케줄링: PIM 스레드를 중단하면 OS가 모든 뱅크의 PIM 상태(명령어, 소스, 스케일, VRF 포함)를 저장해야 하며, 이는 계산적으로 비용이 크다.
- 메모리 인터리빙: PIM 영역을 격리하기 위해 시스템은 채널 간 주소 인터리빙을 비활성화해야 할 가능성이 높으며, 이는 PIM이 아닌 응용 프로그램에 사용 가능한 전체 대역폭을 감소시킨다.
캐시 및 사전 실행 충돌
표준 CPU 최적화는 PIM 작업과 호환되지 않는다:
- 캐싱: 삼성은 PIM 메모리를 캐시되지 않도록 매핑하는 것을 권장한다. CPU가 PIM 트리거링 읽기를 캐시하면 계산이 DRAM에 도달하지 않을 수 있으며, 반대로 DRAM에서 생성된 값이 CPU 캐시에 반영되지 않을 수 있다.
- 사전 실행: 현대 CPU는 필요하기 전에 로드를 시작하기 위해 프리패치 및 분기 예측을 사용한다. PIM 시스템에서는 사전 실행 읽기가 무해한 작업이 아니다. 이는 MAC 계산을 트리거하고 PIM VRF를 수정하여 잘못된 프로그램 상태를 초래한다.
커뮤니티의 시각과 분석
LPDDR5X-PIM에 대한 기술적 논의는 광범위한 아키텍처 변화 없이 실용적인 채택이 어렵다는 회의론을 드러낸다.
"메모리 내 계산을 두는 대가로, 당신은 항상 의존 정보가 정확히 어디에 있을지 알아야 한다. 대부분의 문제는 이 패턴에 잘 맞지 않는다. 인공지능, 게임, 암호화폐가 가장 두드러진 예외다."
비판자들은 곱셈과 덧셈이 행렬을 곱하기 위해 정렬하는 데 필요한 데이터 이동보다 에너지 소비가 적다고 지적한다. 일부는 PIM이 실현 가능하려면 메모리 서브시스템이 근본적으로 재설계되어야 한다고 제안하며, 다음과 같은 조치를 제안한다:
- 모드 전환을 피하기 위해 전용 계산 명령어를 포함한 DRAM 인터페이스 확장.
- 메모리 컨트롤러가 피어 CPU 코어처럼 작동하는 캐시 일관성 프로토콜 구현, Read-for-Ownership(RFO) 요청을 사용해 데이터 일관성 보장.
- 데이터 크기와 위치에 따라 캐시 내에서 계산할지 메모리 내에서 계산할지 하드웨어가 결정할 수 있도록 하는 투명한 CPU 명령어(예: 가상의
rep macb) 도입.
Sources
관련
- Dispatch
- Dispatch
- Dispatch
- Dispatch
- Dispatch