# AMX, 애플 M1의 숨겨진 보조프로세서

> Clean Markdown view of GeekNews topic #3596. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=3596](https://news.hada.io/topic?id=3596)
- GeekNews Markdown: [https://news.hada.io/topic/3596.md](https://news.hada.io/topic/3596.md)
- Type: news
- Author: [xguru](https://news.hada.io/@xguru)
- Published: 2021-01-18T11:51:56+09:00
- Updated: 2021-01-18T11:51:56+09:00
- Original source: [medium.com](https://medium.com/swlh/apples-m1-secret-coprocessor-6599492fc1e1)
- Points: 14
- Comments: 2

## Topic Body

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가 우위를 차지 한다는 것

## Comments



### Comment 4249

- Author: godrm
- Created: 2021-01-19T14:53:32+09:00
- Points: 1

OpenCL사라지고 Metal 가속 이외에 Accelerate는 그렇게 강조하지는 않았지만

매년 라이브러리를 늘려가고 있었는데 하드웨어 가속을 하는 전용 코프로세스가 들어갔다니 놀랍네요.

### Comment 4237

- Author: xguru
- Created: 2021-01-18T11:52:03+09:00
- Points: 3

아래 두 글을 쓴 엔지니어의 후속 글입니다. 같이 읽어보시는걸 추천해 드려요.

- Apple M1칩은 왜 그렇게 빠를까? https://news.hada.io/topic?id=3315

ㅤ→ 유튜브로 설명 듣기 : https://youtu.be/71LlixEBK0o

- M1은 RISC-V의 상승을 예고한다 https://news.hada.io/topic?id=3447

ㅤ→ 유튜브로 설명 듣기 : https://youtu.be/F5sIQZvlJc8
