Apple Neural Engine (ANE) 아키텍처 역설계
Apple Neural Engine는 고정 기능 CNN 가속기이다
Apple Neural Engine (ANE)는 자체 Instruction Set Architecture (ISA)를 가진 일반 목적 프로세서가 아니라, 밀도 높은 텐서 축소와 예측 가능한 재사용 패턴을 가진 합성곱 신경망(Convolutional Neural Networks, CNN)에 특화된 고정 기능 데이터플로우 엔진이다. 비록 트랜스포머 워크로드를 실행할 수 있지만, 2017년대 이미지 처리에 최적화된 데이터경로에 매핑함으로써 현대 LLM 추론에서 심각한 성능 저하를 초래한다.
계산 아키텍처 및 MAC 데이터경로
ANE는 16개의 계산 코어로 구성되며, 각 코어는 128개의 FP16(또는 256개의 INT8) 병렬 곱셈-합산(MAC) 레인을 포함한다.
시간에 대한 스칼라 축소
각 MAC 레인은 시간에 걸쳐 스칼라 축소를 수행하며, 두 연산자를 곱하고 그 결과를 32비트 누산기 레지스터에 더한다. 16코어 ANE는 총 2,048개의 병렬 MAC 레인을 제공하며, 칩 전체에 걸쳐 공간적으로 축소를 수행한다. 하드웨어는 특정 레이어 유형(예: 4채널 CNN)을 인코딩하지 않으며, 대신 연산자 매핑과 작업 스케줄링이 연산이 내적, 행렬 곱셈, 또는 컨볼루션인지 결정한다.
정밀도와 누산
내부 축소는 고정 소수점 수학을 사용한다. 곱셈기는 16비트이며, 결과는 Q16.16 형식으로 32비트 레지스터에 누산된 후 FP16로 읽어들여진다. 누산기는 $\pm 2^{15}$에서 포화되며, 이는 16개의 소수 비트를 가진 부호 있는 32비트 고정 소수점 값의 범위에 해당한다.
비선형 활성화 및 LUT
ANE는 tanh와 같은 비선형 활성화를 33개 항목의 조각별 선형 보간 테이블(LUT)을 사용하여 구현한다. 하드웨어는 입력을 LUT 좌표로 스케일링하고 인접한 항목 사이에서 선형 보간을 수행하여 부드러운 출력을 생성한다. 이 활성화 블록은 MAC 후 처리 경로에 직접 융합되어 중간 메모리 라운드트립을 피한다.
스케줄러와 작업 설명자
GPU가 가변 길이의 명령 스트림을 해석하는 것과 달리, ANE는 작업 설명자(Task Descriptors, TDs)를 통해 제어된다. 이러한 TDs는 실행 가능한 코드가 아니라, ANE의 하드웨어 레지스터를 단일 데이터경로 통과를 위한 설정으로 시리얼라이즈된 레지스터 파일 덤프이다.
명령 제출
드라이버는 고정 크기의 TD 스트림을 작업 관리자에 제출한다. 하드웨어는 "ControlDMA" 엔진을 사용하여 이러한 설정 값을 DRAM에서 ANE의 물리적 레지스터 공간으로 복사한다. 설정이 완료되면 ANE는 작업을 실행하고 완료 시 ARM64 코어에 인터럽트를 발생시킨다.
작업 큐(TQ) 및 BARs
ANE는 8개의 작업 큐(TQ)를 사용하며, 이들은 실행 컨텍스트 역할을 한다. 이 시스템의 핵심 구성 요소는 32개 항목의 기본 주소 레지스터(BAR) 테이블이다. ANE는 GPU 스타일의 동적 로드/스토어 명령어를 갖지 않기 때문에, 모든 가상 주소 접근은 컴파일 시에 하드코딩된 BAR 기본 오프셋에서의 상대 오프셋으로 수행되어야 한다.
메모리 계층 구조와 대역폭 병목
ANE의 성능은 CNN 커널에 대해 DRAM 트래픽을 최소화하도록 설계된 엄격한 메모리 계층 구조에 의해 결정된다.
로컬 메모리 레이아웃
- KMem: 코어당 16개의 64 KiB SRAM, 커널용 (총 1 MiB).
- L1: 코어당 16개의 MAC 입력 스테이징 영역.
- L2: 모든 코어가 공유하는 단일 2 MiB L2 SRAM.
DRAM 루프라인
M1 ANE의 경우, DRAM 대역폭 제한을 피하기 위해 필요한 산술 밀도는 1바이트당 162개의 연산이다. 만약 워크로드가 이 비율보다 적은 온칩 재사용을 제공한다면, 계산 성능을 높여도 성능 향상이 없다.
DMA 엔진 제한
ANE는 세 가지 별도의 DMA 엔진을 사용한다: KernelDMASrc (웨이트 → KMem), TileDMASrc (DRAM → L2), 그리고 TileDMADst (L2 → DRAM).
역설계 결과, 현대 워크로드에 대해 두 가지 핵심 결함이 드러났다:
- 비대칭 경로: 커널 메모리는 로드 전용이며 L2에서 채워질 수 없어, 모든 새로운 커널은 DRAM에서 로드해야 한다. 이는 CNN에 대해 타당한 가정이었지만, 텐서가 자주 역할을 바꾸는 트랜스포머에 있어서는 해로운 영향을 미친다.
- 직렬 실행: 실험 데이터에 따르면, KernelDMA와 TileDMA 요청은 직렬로 전송된다. 실행 시간이 가산되므로, ANE는 가중치와 활성화를 겹쳐 가져올 수 없어 시스템 DRAM 대역폭을 포화시킬 수 없다.
통합된 통찰
기술 분석과 커뮤니티 토론은 CNN 시대의 ANE에서 현대 AI 하드웨어로의 전환을 강조한다:
- CNN vs. 트랜스포머 매핑: 사용자들은 트랜스포머를 ANE에 포팅할 때 "이것이 CNN인 것처럼 행동하게" 해야 하며, 1x1 컨볼루션을 사용해 4차원 텐서로 행렬 곱셈을 시뮬레이션해야 한다고 지적했다.
- 하드웨어 진화: M1 ANE는 독립된 블록이었지만, 최신 아키텍처(예: M5)는 ANE 코어를 GPU 코어에 통합했다고 보고되어 있으며, 이는 트랜스포머 기반 LLM에 필요한 더 유연한 데이터플로우로의 전환을 시사한다.
- 초기 혁신: 현재의 병목에도 불구하고, ANE는 전용 AI 실리콘에 대한 중요한 초기 투자였으며, A-시리즈 칩에서 2017년부터 등장했다.
"ANE의 아키텍처는 일반 목적 가속기 플랫폼을 기반으로 하기에 너무 사려 깊은 설계였다... [이것은] Apple이 A11 Bionic(2017)에서 처음 실리콘에 투자한 ML 워크로드에 대한 가정을 드러내며, CNN 시대의 NPU에서 오늘날 트랜스포머 워크로드를 실행하는 GPU로의 전환을 의미한다."
DRAM 읽기 대역폭 비교
| 장치/엔진 | 지속적인 읽기 대역폭 |
|---|---|
| ANE KernelDMA | 37.99 GB/s |
| ANE TileDMA | 59.08 GB/s |
| GPU (Metal) | 77.70 GB/s |
ANE DMA 요청이 직렬이기 때문에, ANE는 단일 토큰 디코딩(모든 LLM 추론에서 가장 메모리 병목이 심한 부분)에 있어서 GPU보다 본질적으로 느리다. 이는 최대 MAC 처리량과는 무관하다.
Sources
관련
- 프로젝트
- Dispatch
- Dispatch
- 프로젝트
- Dispatch