M1 Issue?

JunHyeok Kim·2024년 5월 2일
0
post-thumbnail

M 맥북 시리즈 에서는 왜 이렇게 점수 차이가 클까?

당연히 RISC 기반의 프로세서 위에서, Apple Rosetta 번역기를 통해 x86 프로그램을 구동하므로 성능저하가 있을 수 있습니다. 아무리 성능저하가 있을지라도, 이렇게 간단한 C 프로그램을 구동하는 데 왜 성능 차이가 이렇게 크게 나는걸까요??

가능한 상황들..?

  1. 에뮬레이션 오버헤드: x86 프로그램을 ARM 프로세서에서 실행하기 위해 Rosetta와 같은 에뮬레이션 기술을 사용하는 경우, 명령어 번역 및 실행에 따른 오버헤드가 발생합니다. 이는 원본 명령어를 번역하고 ARM 아키텍처에 맞게 실행하는 과정에서 발생하는 것으로, 이로 인해 성능 저하가 발생할 수 있습니다.
  2. 최적화 부재: Rosetta는 x86 명령어를 ARM 명령어로 번역하는 과정에서 최적화를 수행하지만, 이는 완벽하지 않을 수 있습니다. 따라서 특정 프로그램이나 작업에 대해서는 최적화가 충분하지 않을 수 있으며, 이로 인해 성능 저하가 발생할 수 있습니다.
  3. 메모리 및 캐시 관리: x86과 ARM 아키텍처는 서로 다른 메모리 및 캐시 구조를 가지고 있습니다. 따라서 x86 프로그램을 ARM 프로세서에서 실행할 때 메모리 및 캐시 관리에 대한 차이로 인해 성능 저하가 발생할 수 있습니다.
  4. 하드웨어 호환성: x86과 ARM 아키텍처는 하드웨어 수준에서도 차이를 가지고 있습니다. 따라서 x86 프로그램을 ARM 프로세서에서 실행하는 경우 하드웨어 호환성 문제로 인해 성능 저하가 발생할 수 있습니다.

위와 같이 몇몇 케이스로 나눠봤지만, 해답을 찾을 순 없었습니다. 그래서 중간중간 궁금해진 내용들을 찾아봤습니다.

Docker on Mac

최신 Mac App들은 Swift로 개발되는데, 어떻게 Docker와 같은 가상 환경을 구동하는지 궁금해졌습니다.

Apple에서는 위와 같은 가상환경 API를 제공하여 경량 가상 환경을 제공한다고 합니다. 아마 위 프레임워크를 사용하여 개발했지 않을까 추측해봅니다!

Apple Rosetta 2

Intel Instruction ( CISC ) 인스트럭션을 만나면, 로제타는 자동적으로 실행되고 (OS 단에서 실행되는 것 같음) 해당 인스트럭션을 ARM프로세서가 이해할 수 있는 RISC로 자동으로 번역합니다.

문뜩 든 생각..?

RISC <-> CISC 방식의 프로그램 구동 차이가 인스트럭션 셋에 의한 것 이라면, 번역기 (Apple Rosetta)는 단순히 번역만 해주는 것 일까?

0개의 댓글