machine learning

딥러닝 하드웨어 담론 (3)

moderated-coder 2024. 11. 24. 23:18

이전 글에서는 RISC 아키텍쳐는 무엇이고 이것을 통해 어떻게 그래픽, ai 행렬 연산이 가속되는지를 살펴보았습니다. 또, 이런 구조의 컴퓨터 아키텍쳐는 memory, cpu, gpu 등 여러 요소들로 구성되고 cuda와 같은 라이브러리가 이런 과정을 담당한다는 사실 또한 알게 되었습니다.

 

또한 첫 담론에서 애플 맥시리즈는 m1 칩 등장 이후로 이러한 구조를 차용하지 않는 것처럼 보이고, 경우에 따라 매우 저렴한 gpu vram 확보용도로 활용될 수도 있음을 이야기했습니다.

 

그렇다면 애플은 어떤 마법이라도 부려서 하나의 칩에서 모든 작업을 수행하고, gpu도 필요없게 만든 것일까요? 이를 이해하기 위해서는 SoC라는 개념에 대해서 알아볼 필요가 있습니다.

 

SoC (Sysytem on a Chip)

SoC는 위 그림과 같이 전체 시스템 요소들이 하나의 칩 안에 구현되어 있습니다.

SoC는 의미 그대로 "칩 위의 시스템" 이라는 뜻입니다. 전자기기를 구성하는데 필요한 전체 시스템을 하나의 칩으로 만드는 기술, 플랫폼을 의미한다고 보면 되겠습니다. 연산 소자(CPU), 메모리 소자(D램, 플래시 등), 디지털신호처리 소자(DSP) 등 주요 반도체 소자를 하나의 칩에 구현해 칩 자체가 하나의 시스템이 되도록 하는 것입니다.

 

여러 장치들이 하나의 칩 위에 모여있으므로 일부 발열 등의 문제가 있긴하지만, 자연스럽게 소형화에 유리하고 여러 반도체 칩을 별도로 생산하는 것보다 제조비용이 절감되는 효과가 있습니다. 애플의 m 시리즈 칩들 또한, 이러한 SoC 구조를 차용하고 있어 별도의 gpu 장비를 탑재하지 않습니다.

 

그런데, 그 동안 SoC 기반으로 구성된 값싼 컴퓨팅 시스템들은 하나의 결점이 있었습니다. 바로 cpu와 gpu는 하나의 메모리를 사용하더라도 각각 구분된 영역을 갖고 있다는 것입니다.

그래서 cpu 가진 데이터 꾸러미를 "자 여기 내 메모리에서 데이터 가져가."라고 gpu로 직접 넘길 수 없습니다. gpu는 자기가 가진 데이터를 무조건 복사해서 gpu의 메모리 영역에 붙여넣어야합니다. 또, gpu는 보통 발열이 심한 편이기에 같은 칩 안에 존재하는 다른 처리장치에도 영향을 주게 됩니다.

 

이러한 컴퓨터공학적인 구조를 잘 모르시는 분들이라고 "내장 그래픽으로 게임을 돌리면 발열이 심하고 답답해서 사용 못한다." 라는 말을 들어보셨을텐데, 바로 이러한 이유 때문입니다.

 

애플은 이러한 문제를 해결하기 위해 UMA라고 불리는 혁신적인 기술을 도입했습니다.

 

Unified Memory Architecture

 

애플은 이전의 메모리 공유방식의 문제점들을 해결하고자 다음과 같은 접근을 했습니다.

 

먼저 cpu와 gpu에게 따로 할당된 영역을 제거하고, 메모리가 두 프로세서 모두에게 할당되어 두 프로세서가 동시에 같은 메모리를 사용하여 데이터 복사-붙여넣기의 필요성을 제거했습니다.

 

(24년 현재 기준으로) LPDDR 시리즈가 적용되어 있습니다. 스마트폰, 웨어러블 및 AI 기술의 데이터 수요를 처리하는데 필수적인 고대역폭 스토리지와 메모리를 갖추고 있습니다. 덕분에 cpu와 gpu가 각각 특수한 메모리 타입에 연결될 필요가 없어졌습니다.

 

또, 애플은 gpu의 전류 사용량을 낮춰서, 비교적 전력소모가 강력한 gpu가 SoC를 과열시키지 않으면서 작동할 수 있도록 했습니다. 그리고 애플이 사용 중인 ARM 기반의 칩은 같은 크기의 Intel이나 AMD같은 경쟁사의 x86 기반 칩보다 더 적은 열을 내기 때문에 비교적 설계하기가 더 용이해졌습니다.

 

 

결론

이러한 공학적인 고민들을 통해 애플은 별도의 gpu 장치를 달지 않아도 크고 무거운 그래픽과 AI 연산을 하나의 제품에서 구동할 수 있는 제품을 출시하게 되었습니다. 물론, 이렇게 시스템과 칩을 구성했다고 곧바로 연산들을 사용할 수 있는 것은 아닙니다. 딥러닝 하드웨어 담론 1편에서 이야기했듯이, 우리가 작성한 코드와 칩이 호환될 수 있도록 metal과 같은 라이브러리 지원이 필요합니다.

 

이런 지식을 조금 더 곱씹어보면, 지금 내가 가지고 있는(사용하고 있는) 장비의 구성과 제품 종류에서 내가 사용하려는 연산이 (최적화되어 잘) 지원되는지, 효율은 어떻게 되는지를 판단해볼 수 있는 접근이 됩니다.

 

 

 

참고자료