사용기

애플 M1 칩 X86 에뮬 성능은 왜 빠른가?

드리프트 2021. 5. 2. 20:13
728x170

 

 

 

 

애플 M1 칩을 이용한 맥북이 처음 나왔을 때 시장에서 반향이 컸었는데요.

 

최근에는 M1 칩을 이용한 iMac이나 iPad Pro 등 점점 더 많은 제품이 M1 칩을 이용하고 있습니다.

 

애플이 인텔에서 Arm 베이스의 M1 칩으로 이동할 수 있었던 배경에는 M1 칩을 이용한 인텔 X86 프로그램의 에뮬레이팅이 상상을 초월할 정도로 빨라서 일까도 싶습니다.

 

아래 번역본은 인터넷에서 Robert Graham, provocateur의 트윗을 번역한 것인데 한번 읽어 볼만 합니다.

 

특히 애플이 로제타를 이용해서 X86 에뮬레이팅을 어떻게 하는지 쉽게 이해할 수 있을 겁니다.

 


 

Apple의 Intel 프로세서 대체품이 정말 잘 작동하는 것으로 나타났습니다. 일부 회의적인 기술자들은 이것을 "블랙 매직"이라고 부르고 있습니다. Apple M1 칩에서 인텔 코드를 매우 잘 실행되고 있습니다.

 

기본적인 이유는 Arm과 Intel 아키텍처가 비슷하게 수렴됐기 때문입니다. 예를 들어, 인스트럭션 세트는 다르지만 근본적인 아키텍처는 매우 유사 해졌습니다.

 

가장 큰 장애물은 두 CPU가 메모리에서 변경된 사항을 보는 순서인 "메모리 순서 지정(memory-ordering)"이었습니다. 이는 Arm 기반 Surface 랩톱에서 Microsoft의 x86 에뮬레이션에 영향을 미치는 가장 큰 문제였습니다.

 

그래서 애플은 단순하게 컴퓨터를 속였습니다. 그들은 인텔의 메모리 순서를 CPU에 추가했습니다. 번역된 x86 코드를 실행할 때 인텔의 메모리 순서를 따르도록 CPU 모드를 전환합니다.

 

근본적인 아키텍처 문제가 해결 된 상태에서 x86 코드를 실행한다는 것은 단순히 해당 명령어를 Arm에 해당하는 것으로 번역하는 것을 의미합니다. 이것은 매우 효율적이며 종종 동일한 속도로 실행되는 코드를 생성합니다.

 

때로는 완벽하게 똑같은 변환 코드가 될 수 없기 때문에 변환 결과 코드가 약간 느려지지만 벤치 마크에서는 지속적으로 속도가 네이티브의 70 % 이상임을 보여줍니다.

어쨌든 많은 수의 인기 있는 앱이 이미 실행되고 있습니다. 애플은 몇 달 전에야 개발자 시스템을 시드 하여 사람들이 코드를 준비할 수 있도록 했습니다.

일반적으로 충분한 시간이 아니었습니다. 새 아키텍처 용 코드를 다시 컴파일하면 일반적으로 컴파일이 중단됩니다. 그러나 위에서 말했듯이 Arm과 Intel 아키텍처는 코드가 깨질 가능성이 훨씬 적어 재 컴파일이 더 쉬워 질만큼 충분히 수렴되었습니다.

Apple은 놀라운 선택을 했습니다. 그들은 특별한 JavaScript 관련 지침, 두 배 크기의 L1 캐시 및 아마도 내가 모르는 다른 트릭으로 JavaScript를 최적화했습니다.

따라서 웹을 탐색 할 때 새 노트북은 다른 벤치 마크에서 Intel / AMD와 거의 동일한 속도를 보여 주지만 JavaScript로 인해 배터리에서 더 빠르고 오래 지속되는 것처럼 보입니다.

구형 MacBook Air에는 3.8 GHz로 실행되는 듀얼 코어 CPU가 있었지만 저전력 모드에서는 1.2 GHz였습니다. 빠른 모드와 느린 모드 사이를 전환하면 모바일 전력을 절약할 수 있습니다.

 

그러나 그것은 궁극적으로 비효율적입니다. Intel CPU는 5GHz에서 실행되도록 설계되었습니다. 1 GHz로 다운 클러킹 하면 전력이 절약되지만 처음부터 1 GHz에서 실행되도록 프로세서를 설계한 것만 큼은 아닙니다.

Apple의 전략은 2 개의 프로세서를 사용하는 것입니다. 하나는 3GHz 이상에서 빠르게 실행되도록 설계되고 다른 하나는 2 GHz 이하에서 느리게 실행되도록 설계되었습니다. Apple은 이를 "고효율 프로세서" 및 "저전력 프로세서"라고 부릅니다. 각자 자신의 목표를 달성하기 위해 최적화되었습니다.

전력을 절약해야 할 때 "고효율 프로세서"를 끄고 "저전력 프로세서"에서 코드를 실행합니다. 4개의 "고효율 프로세서" (이전 Mac의 두 배)와 4개의 "저전력 프로세서"를 갖추고 있습니다.

8개 모두 활성화 할 수 있습니다. 코드 컴파일과 같이 8개의 프로세서를 사용할 수 있는 작업을 수행하면 실제 속도가 빠릅니다. 8개의 프로세서와 기존 노트북의 2개의 프로세서가 차이를 만듭니다.

이 이야기의 큰 부분은 인텔이 무어의 법칙에서 약 3년 뒤처졌다는 것입니다. Apple Silicon은 TMSC의 최신 5nm 기술을 사용하는 반면 Intel은 이전 10nm / 7nm 세대를 사용합니다. 인텔의 많은 제품 라인은 훨씬 더 오래된 14nm / 10nm 세대를 사용합니다.

 

이것은 실제 "블랙 매직"이 아닙니다. 이해할 수 있습니다. 다양한 작업이 잘 수행되어 결과적으로 큰 도약을 이루었습니다.

또 다른 "매직" 트릭은 "Swift"프로그래밍 언어가 Android에서 "가비지 컬렉터"대신 "레퍼런스 카운팅"을 사용하는 방법입니다. 그들은 레퍼런스 카운팅 속도를 두 배로 높이기 위해 CPU에서 무언가를 했습니다.

x86 코드를 번역할 때에도 모든 레퍼런스 카운팅 오버 헤드(이미 가비지 컬렉터보다 효율적)가 절반으로 줄어듭니다. 또 다른 이상한 성능이 다른 모든 성능에 추가됩니다.

 

 

그리드형