Tech News

제목AMX, 애플 M1의 숨겨진 보조프로세서2021-01-18 23:45
작성자 Level 10

https://medium.com/swlh/apples-m1-secret-coprocessor-6599492fc1e1 


Apple Matrix Coprocessor

- M1 발표에서 전혀 얘기되지 않았던 행렬 전용 프로세서

- 행렬은 이미지처리, 머신러닝, 음성/필기인식, 얼굴인식, 압축, 음성/영상 미디어 처리등에서 많이 사용됨


- 그거 Neural엔진이 처리해주는거 아냐 ? Neural Engine과 뭐가 달라 ?

ㅤ→ GPU 나 Neural Engine 은 Accelerator(가속기)

ㅤ→ 가속기 들이 사용할 메모리 공간을 채우기 위해서 CPU가 작업하는 것은 비효율

ㅤ→ 이때 명령어들을 보고 있다가(spy) 이걸 Coprocessor가 대신 처리함

ㅤ→ 이걸 이용하려면 별도의 명령어 셋을 정의해야함

ㅤ→ ARM은 커스텀 명령을 넣는것을 거부해 왔지만 2019년부터는 가능한 확장을 제공하기 시작

ㅤ→ 이게 아마도 AMX명령이 공식 문서에 나와있지 않은 이유일 것


- 그럼 ARM에 들어있는 SIMD Vector Engine 이랑은 뭐가 달라 ?

ㅤ→ SIMD : Single Instruction Multiple Data

ㅤ→ 여러 개의 데이터에 같은 Operation을 실행할때 높은 성능을 내는 방법

ㅤ→ 매트릭스 연산과 관련되어 있음

ㅤ→ 하지만 SIMD는 ALU,FPU처럼 CPU내장이고, 코프로세서는 외장임

ㅤ→ 예전 인텔의 8087(FPU)은 8086보다도 트랜지스터 수가 많아서, 그 시절엔 같이 넣는게 어려웠음. 기술 발전으로 트랜지스터 갯수가 많아지고 CPU에 FPU가 내장되면서 사라짐


- 왜 AMX가 Firestorm 코어 안에 안 들어 간건지는 명확하지 않음

ㅤ→ 아마도 별도로 두어서 CPU와 병렬적으로 작업하도록 하는게 쉬웠을 것이고,

ㅤ→ 애플 입장에선 ARM표준이 아닌 것들을 외부에 두는걸 원했을 수도.


- 왜 그럼 AMX 는 숨겨둔거지 ?

ㅤ→ AMX가 공식 문서에 없는데, 어떻게 알게 된거야 ?

ㅤ→ Dougal Johnson 이 리버스 엔지니어링을 통해서 알아냄

ㅤ→ 애플은 행렬연산용 프레임워크인 Accelerate 를 통해서 다양한 기능을 제공함

ㅤㅤㅤ⇨ vImage : 고수준 이미지 처리. 포맷 변환 및 이미지 조작

ㅤㅤㅤ⇨ BLAS : 선형대수 ( 행렬과 벡터 연산 )

ㅤㅤㅤ⇨ BNNS : 신경망 및 학습

ㅤㅤㅤ⇨ vDSP : 푸리에 변환등의 디지털 신호처리. 이미지 또는 오디오 처리용 수학 연산

ㅤㅤㅤ⇨ LAPACK : 고수준 선형대수 함수, 선형방정식 등

ㅤ→ 이 Accelerate 라이브러리가 AMX를 이용해서 계산을 가속

ㅤ→ 명령 자체를 공개했다면 ARM 에코시스템이 파편화가 되었을 것(이건 ARM도 애플도 원하지 않음)

ㅤ→ 애플은 이걸 공개 안하고 프레임워크로 열어서, 고성능을 제공하면서도 언제라도 명령어 세트를 수정할 수 있게 됨

ㅤㅤㅤ⇨ 애플이 하드웨어/소프트웨어를 동시에 제어하는 것때문에 가능

ㅤㅤㅤ⇨ 개발자는 Accelerate 를 통해서만 작업하면 차후 개선되는 것도 누리게 됨


- Apple Matrix Coprocessor 의 장점은 ?

ㅤ→ Nod Labs가 ARMv8.6의 SIMD 표준 명령인 NEON이랑 비교한 바에 의하면 AMX가 2배 이상 빠름

ㅤ→ 모든 것에서 AMX가 좋다는 것은 아니지만, 적어도 머신러닝이나 고성능 컴퓨터(HPC)에서는 AMX가 우위를 차지 한다는 것

G
M
T
Text-to-speech function is limited to 200 characters
댓글
자동등록방지
(자동등록방지 숫자를 입력해 주세요)