아키텍처 구성
Intel AMX는 x86 명령어 세트에 추가된 행렬 연산 최적화 확장으로, 타일(Tiles)과 TMUL(Tile Matrix Multiply Unit)이라는 두 가지 핵심 구성요소로 이루어져 있습니다. 타일은 8개의 2D 레지스터(TMM0~TMM7)로 구성되며, 각 타일은 16행×64바이트 크기로 총 1KB의 저장공간을 제공합니다. 이를 통해 대규모 행렬 데이터를 CPU 코어에 더 가깝게 보관하여 메모리 대역폭 요구사항을 줄이고 데이터 재사용성을 극대화합니다.
TMUL 가속 엔진
TMUL은 타일 레지스터들을 직접 조작하는 융합 곱셈-누적(FMA: Fused Multiply-Add) 유닛의 격자로 구성됩니다. TMUL이 수행하는 기본 연산은 Tile_C[M][N] += Tile_A[M][K] × Tile_B[K][N]이며, 모든 연산은 호스트 메모리 접근과 일관성을 유지하는 동기식으로 작동합니다. TMUL 명령어들은 타일 구성(LDTILECFG/STTILECFG), 데이터 로드/스토어(TILELOADD/TILESTORED), 연산(TDPBSSD 등) 세 가지 범주로 분류됩니다.
데이터 타입과 실무 주의점
AMX는 INT8(추론 최적화)과 BF16(학습/추론 겸용) 두 가지 저정밀도 데이터 타입을 지원하여 정밀도 대신 처리량을 확대합니다. 프로그래머는 CPUID 명령어를 통해 하드웨어별 최대 타일 수와 크기를 런타임에 확인해야 하며, 타일 구성은 일회성으로 수행 후 코드에서 명시적으로 변경하거나 해제할 때까지 유지됩니다. 특히 INT8 연산의 경우 16×64×64, BF16의 경우 16×32×32의 최대 행렬 기하학을 초과하면 안 됩니다.