## 배경 ##
# MS가 ARM 용 윈도우를 처음 출시한 것은 2012년입니다.
https://en.wikipedia.org/wiki/Windows_RT
ARM 용으로 포팅된 오피스를 기본 제공했으며, x86 앱은 실행되지 않았습니다. 문제는 "내가 만든 ARM 용 EXE"도 실행이 되지 않았습니다.
아마도 MS는 ARM Windows는 iOS 나 안드로이드처럼 실행파일 실행 조건을 강하게 제한하여, 보안성을 강화하고 Windows 스토어를 강제하려고 한 것이 아닌가 합니다만... 생긴 건 윈도우인데, 핸드폰처럼 작동하는 OS를 사람들이 좋아할 리 없었죠. 그리고 느렸습니다. 그 당시 ARM CPU는 데스크톱을 돌리기에는 무리였습니다.
# 2018년 ASUS, HP 등에서 스냅드래곤을 사용한 ARM64용 Windows 기기가 출시되기 시작합니다. 이전과 다른 점은 일반 EXE를 ARM64를 타겟으로 컴파일만 하면 실행이 가능하고, 기존 x86 용 EXE도 내부 에뮬레이션을 통해서 실행이 가능하다는 점이었습니다.
https://www.pcmag.com/reviews/asus-novago-tp370ql
내부 에뮬레이션의 성능은 나쁘지 않아 동일한 소스를 x86과 ARM64로 빌드해 속도를 비교해 보면 50% 정도의 성능은 나왔습니다. ARM과 X86의 인스트럭션이 전혀 다른 상황에서 50% 정도면 나쁘지 않았다고 생각합니다.
초기 버전에서는 V8의 JIT 때문인지 크롬이 정상 작동하지 않았지만, 나중에는 크롬도 에뮬 모드로 정상적으로 실행이 되었습니다.
# 2019년 삼성은 갤럭시 북 S를 출시합니다.
https://www.samsung.com/sec/support/model/NT767XCL-KC58S/
저도 이때부터 암도우에 애정을 가지게 되었습니다. 메모리도 8GB로 준수하였고, 무엇보다 맥이 부럽지 않은 모양새, 색상, 가벼움, 긴 배터리 시간 등이 특징이었습니다.
하지만 아직 문제가 많았습니다.
ARM 네이티브 앱은 쓸만한 속도가 나왔지만, X86 앱을 에뮬레이션으로 실행하기에는 ARM CPU는 아직 너무 느렸습니다.
MS의 지원도 문제였습니다. 개발툴인 Visual studio는 ARM용 EXE를 빌드는 할 수 있지만, Visual Studio 자체는 x86 EXE여서 개발툴을 ARM 장비에서 직접 돌리는 것은 너무 큰 고통이었습니다.
더군다나 이때까지 MFC는 ARM64용으로 포팅도 안 해줘서, MFC를 사용하는 제품들은 아예 포팅 시도도 못했습니다. (현재는 MFC 지원합니다.)
브라우저도 문제였습니다. 구글이 크롬의 ARM64용 바이너리를 제공하기 시작한 것은 수년이 지난 2024년입니다. 애플이 ARM 전환을 선언하고 M1을 출시하자 일주일 만에 ARM 용 크롬을 내놓은 것과는 비교됩니다.
# 애플은 2020년 macOS의 100% ARM 전환을 선언하고 M1 노트북을 출시합니다. 이때까지만 해도 'ARM은 모바일용 CPU이다, 긱벤치 점수 높아도 데탑은 안된다...' 등등 헛소리가 많았지만 M1의 성능은 ARM CPU가 데탑에도 경쟁력이 있음을 보여줬습니다.
이후 ARM의 아키텍처 자체가 x86보다 우월할 수 있다는 인식이 생기기 시작했고 https://news.hada.io/topic?id=3315
M2, M3 등등 계속 애플은 macOS의 100% ARM 전환을 성공시켜 나가지만, MS는 서피스GO, 갤럭시 북 GO 등 느린 CPU에 메모리를 4G 박아서 내놓는 등 암도우는 느리다는 이미지만 강화해 줬습니다.
# 2022년 Visual Studio가 드디어 ARM 바이너리로 실행되기 시작합니다.
https://devblogs.microsoft.com/visualstudio/arm64-visual-studio-is-officially-here/
OS가 포팅되고 무려 10년이 지나서야 자사의 메인 개발 툴이 포팅이 된 것입니다.
# 2023 MS는 ARM OS가 나온 지 11년 만에 Project Volterra라는 이름으로 개발자 키트를 공개합니다.
한국에서는 구매할 수 없습니다.
https://learn.microsoft.com/ko-kr/windows/arm/dev-kit/
# 2023년 퀄컴이 스냅드래곤 X 엘리트를 공개합니다.
# 2024년 삼성 갤럭시 북4 엣지를 포함해 서피스, 에이서, ASUS, DELL에서 동시에 스냅드래곤 X 엘리트 기반의 노트북이 발표됩니다.
그전까지 찔끔찔끔 나오던 암 노트북이 한꺼번에 나오는 이유는 명확해 보입니다. 퀄컴의 쓸만한 ARM CPU 등장으로 기존의 x86보다 우월한 전성비, 하이엔드 데탑에 버금가는 성능, 우월한 절전모드, 여기에 개선된 x86/x64 에뮬레이션(프리즘) 등이 결합하여 노트북 개발사 입장에서 시장에 진입하지 않을 이유가 없었기 때문일 것입니다.
## 개발자 입장에서 본 갤럭시 북4 엣지 사용기 ##
# 위에도 적었듯이 기존의 ARM CPU는 개발 툴을 돌리기에 너무 느렸습니다만, 이번 갤북엣지는 벤치마크 점수가 증명하듯이 쓸만한 속도를 보여줍니다.
예를 들어 제가 빌드 속도 테스트용으로 쓰는 프로젝트가 하나 있습니다.
빌드 과정이
pch 컴파일 (싱글) - 소스 컴파일 (멀티) - 링킹(싱글)
를 거치기 때문에 멀티와 싱글을 결합한 체감 속도를 측정하기 좋은 프로젝트이며, 아래 결과는 갤북 엣지가 개발용으로 전혀 부족함이 없음을 보여줍니다.
- 13900k (하이엔드 데탑 - 32스레드) - 15 초
- Ryzen 9 7940HS (하이엔드 모바일 cpu, 미니pc, 16스레드) - 21초
- 갤북4 엣지(12코어 12스레드) - 20초
# 개발 환경을 꾸미는 과정에서 알게 된 사실인데, 이제 거의 모든 개발툴이 ARM64용 바이너리를 제공하고 있습니다.
Visual Studio, Visual Studio code, Tortois SVN, Tortoise GIT, cmake, python 등등이 전부 ARM64 바이너리를 제공하고 있으며, WSL2도 ARM64로 잘 작동합니다.
(php, pearl 은 X64용을 설치하였으며, 에뮬레이션으로 잘 작동했습니다.)
# 결론적으로 이제 편안하게 ARM 앱을 개발할 수 있게 되어 반갑습니다.
사용자 입장에서는 기기 자체의 단점도 있고 조만간 많은 분들이 물고 뜯고 씹고 하실겁니다만, 개인적으로는 만족합니다.
: )
- 해당 빌드속도는 arm 네이티브 cl.exe 속도입니다.
- 다만, 일부 툴(ninja) 에서는 arm 폴더가 아닌 x64 의 cl.exe 를 사용해서 느리더군요.
- 발열관리는 솔직히 아쉽습니다. cpu 로드 100% 지속이 안됩니다.
내일이면 올거 같은데요.
기대반 걱정반이네요.
m1맥북을 대체할 수 있으면 좋겠습니다.
사실 아직까지는 암도우는 X86대비 명확한 배터리, 가격에 장점을 보여주지 못했으며, 이때문에 AI를 강조하는게 아닌가 합니다.
다만, 애플의 M1/M2/M3 는 X86대비 확실히 배터리 및 가격 장점을 보여줬기 때문에 AARCH64에 기대를 하고 있는거죠.
같은 ARM 이라도 아이폰에서 안드로이드 앱 안돌아 가는것처럼, OS 가 지원을 해줘야 합니다.
다만, Windows 에서 x86 안드로이드 지원을 하기는 했고, (아마도 arm 네이티브도 가능했던듯 합니다만, )
결론은 현재 MS 은 안드로이드 지원을 포기한 상태입니다.
https://support.microsoft.com/ko-kr/windows/windows%EC%97%90-%EB%AA%A8%EB%B0%94%EC%9D%BC-%EC%95%B1-%EB%B0%8F-amazon-appstore-%EC%84%A4%EC%B9%98-f8d0abb5-44ad-47d8-b9fb-ad6b1459ff6c
슬프게도 서피스 Go 에는 아직 암도우를 탑재한 적이 한 번도 없었습니다.
제가 맥으로 arm 전성비를 굉장히 만족스럽게 사용한 후, 서피스 프로 X 또한 만족스럽게 사용해 보고 나서, 서피스고 크기에 ARM 이 들어가면 바로 사려고 서피스고 나올때마다 체크했어서 ㅜ.ㅜ