Windows 10 ARM 관련 글이 나올 때 마다 자주 언급되는 것이 64비트(x64) 앱은 왜 실행이 안 될까? 64비트 앱이 실행이 안 돼서 문제이다. 64비트 앱을 지원할 가능성이 있느냐? 등등….
뭐 나중에 MS가 미친척하고 x64를 지원할 수도 있겠지만, 저는 그럴 가능성도, 그럴 필요도 없다고 봅니다. 이미 ARM CPU 도 64비트 제품이 나왔기 때문에, Window 10 on ARM 은 정확히는 Windows 10 on ARM64 입니다.
초기 64비트(x64) Windows OS가 나왔을 때도, 기존의 x86 앱들의 호환 문제가 많았습니다. 그냥 EXE 야 원래 CPU가 대부분 잘 지원해 주기 때문에 기존 API 만 WoW64(Windows on Windows)로 씌워주면 돌아가는데 별 문제가 없었지만, DLL 은 EXE 와 달리 64비트 EXE 에서 32비트 DLL을 호출하는 것이 불가능해서, 마우스 우 클릭을 했을 때 나오는 셸 메뉴가 제대로 나오지 않는다던 가 하는 여러가지 문제가 있었습니다만, 결국 개발사에서 64비트 OS를 지원하게 되면서 문제가 해결이 되었습니다.
따라서, 지금의 ARM OS 지원 문제도 ARM 네이티브로 컴파일 된 실행 파일이 배포되기 시작하면 더 이상 x64 바이너리가 지원되네 마네 하는 이야기는 사라질 것이라고 보기 때문입니다.
추가적으로 OS 설치 공간의 문제도 있습니다. 아래는 x86을 에뮬레이션 하기 위한 구조를 보여주는 그림인데, 오른쪽 상단을 보시면 x86을 에뮬레이션 하기위한 x86 의 System DLL 이 보이실껍니다. 즉, x86을 지원하기 위해서 x86 Windows 의 기본 OS DLL 이 전부 ARM OS에 같이 들어있다는 의미입니다. 만일 x64를 지원하려고 한다면, x64 DLL 까지 전부 ARM OS 에 포함시켜야 되고 그렇게 되면 가벼운 OS 따위는 이미 산으로 가버리게 되죠.

참고로, 아래는 ARM 기기에서 x86 실행 파일을 에뮬레이션으로 돌린 실행파일과, ARM64(AARCH64) 네이티브 코드로 컴파일 된 실행 파일의 실행 속도 비교입니다.

이렇게 에뮬레이션과 네이티브 컴파일된 바이너리의 수행 속도는 (GPU 나 HDD 의존적인 작업을 할 때는 거의 속도차가 발생하지 않기도 합니다만,) CPU 의존적인 작업을 할 때는 보통 2배, 경우에 따라서는 3배까지 실행 속도에 차이가 발생합니다.
따라서, Windows 10 on ARM 에서 x86 에뮬레이션은 기존 x86 사용자를 자연스럽게 끌어들이기 위한 과도기적인 장치일 뿐이고, 제대로 된 ARM 기기의 성능을 뽑기 위해서는 개발사에서 ARM 네이티브로 컴파일 된 바이너리를 제공해야 됩니다.
긱벤치도 최근 ARM64를 지원하게 되면서 이렇게 아예 x86 에뮬레이션 벤치마크와 ARM64 벤치마크를 선택해서 실행할 수 있도록 되어 있고, 각각 선택해서 테스트해 본 결과, 역시 약 2배 정도 차이나는 점수를 확인할 수 있었습니다.

https://browser.geekbench.com/v4/cpu/10158736

https://browser.geekbench.com/v4/cpu/10158855

ARM64용으로 전환하는데 그리 큰 이슈는 없나보네요
요새 쓰는 프로그램들이 하나 둘씩 32비트 지원을 종료하면서 ARM64용 윈도우를 사도 제대로 못쓰지 않을까 싶었는데
하나 둘 씩 지원 프로그램이 늘어나면 크게 걱정 안해도 되겠습니다
기존 c/c++/c# 프로그램은 비교적 쉽게 포팅할 수 있습니다.
특히 32/64비트를 동시 지원하는 앱이라면 대부분 무리 없이 ARM64를 지원할껍니다.
안드로이드/iOS태블릿에 비해서 윈태블릿은 불편한점이 많은데, ARM CPU 채용으로 불편함이 해소되면 UWP 앱도 좋아질 수 있겠습니다만.... 솔직히 이 부분은 저도 기대를 못하겠네요.
여기에 리눅스 깔아서 사용할 수 도 있겠지만, 반대로 싼 크롬북이나 안드로이드 폰에
Windows 깔아 쓰는 사용자도 나올듯 합니다.
이번에 출시한 스냅드래곤 850 제품들이 있지않나요?
스냅 850은 845와 동등한 구성이라고 본거같은데...
어찌되었건 x86 호환이 되니 윈도우로서 기본은 갖췄다고 생각되긴 히지만...
문제는 말씀하신것처럼 x86-64에 대응이 가능할만큼 SW들의 ARM64 네이티브 지원을 이끌어내려면 그만큼 하드웨어의 강점이 있어야하는데 그게 될지 모르겠네요.
인텔 대비 스펙 우위를 점하던가, 가격을 공격적으로 내놓던가 둘중 하나는 되야하는데 이도저도 아닌거같습니다. 모뎀 통합 말고는 딱히.... 현재대로 나가면 특정 수요외엔 확대가 힘들어보여요.
하다못해 마소의 오피스도 ARM64지원은...ㅠㅠ
ARM64 용 오피스는 문제 없을듯 합니다.
해줄거면 윈도우 런칭이랑 같이했어야하는거 아닌가 싶어서요.. 그리고 윈RT의 그 윈도우는 솔직히 너무너무 별로였으니까요.... ㅜㅠ
동일하거나 더 나은 경험을 제공해야하는데 당시엔 쫌... ㅠㅠ
여튼 이러나 저러나 HW, SW 모두 이제서야 출발지점이란 느낌이고 여러모로 갈길이 멀어서 현시점에서 판단하기긴 어려운거같습니다. ㅠㅠ
그닥 잘된 경우가 드물죠
특히나 입력시 스크린 키보드 불러왔을때 textbox가리는거 정말 아니라고 생각합니다.
그리고 winform앱들 태블릿모드에서 화면크기 변하면서 이상해지는것 보면 아직도 갈길이 멀고 먼 os 입니다.
(제가 꿀뷰에서 이런현상이 생긴다고 불평불만하는거 아닙니다. 언제나 감사하게 사용하고 있습니다.)
사실 wpf 앱을 사용해야 하지만 저도 winform으로 짜서 ^^:
상당수의 개발자들은 아예 ARM 윈도우즈에 대한 존재 자체를 모르고 있지 않을까 싶어요.
에뮬 모드와 네이티브 모드의 성능 차이가 두배 이상이 되는군요.
x64 지원 안하는 이유는 법적으로 못하기 때문이죠?
x64를 지원할 필요는 x86을 지원할 필요보다 큽니다.
ARM 네이티브를 지원하면 된다면 세상 모든 에뮬레이션이 필요없습니다.
꾸역꾸역 RT앱 밀던 것도 터치/ARM 네이티브 지원을 늘리기 위해서였지만 그게 말처럼 쉽나요.
Windows On ARM이 x64를 지원 한다면 x86지원이 따라오는거 아닌가요...(이부분은 과감한 추측입니다)그렇다면 역시 x64를 지원할 필요가 훨씬 크다고 보여집니다.그러나 그렇게 하지 못한/안한 이유는 따로 있을것 같습니다.
그래서 제목과 본문이 잘 안맞네요.
본문과 같은 흐름의 전개라면, 다음과 같은 이야기도 할 수 있을것 같습니다."64비트 운영체제는 32비트 앱의 실행을 지원할 필요는 없다. 시간이 지나면 64비트 앱이 늘어날 것이기에."