다음을 통해 공유


Arm에서 에뮬레이션이 작동하는 방식

에뮬레이션을 사용하면 Arm에서 Windows 앱의 풍부한 에코시스템을 사용할 수 있으므로 사용자는 앱을 수정하지 않고도 관심 있는 앱을 실행할 수 있습니다. 에뮬레이션은 사용자에게 투명하며 Windows의 일부입니다. 추가 구성 요소를 설치할 필요가 없습니다.

Windows 11 on Arm은 x86 및 x64 앱의 에뮬레이션을 지원하며 Windows 11 24H2에서 새로운 에뮬레이터 Prism이 도입되어 성능이 향상되었습니다. 또한 Windows 10 on Arm은 에뮬레이션을 지원하지만 x86 앱에 대해서만 지원합니다.

Prism

Prism은 Windows 11 24H2에 포함된 새로운 에뮬레이터입니다. Windows에 포함된 이전 에뮬레이션 기술에 비해, 에뮬레이션에서 앱의 성능을 향상시키고 CPU 사용량을 줄이는 상당한 최적화가 포함되어 있습니다.

Prism은 특히 퀄컴 스냅드래곤 프로세서에 맞게 최적화되고 조정됩니다. Prism 내의 일부 성능 기능에는 Snapdragon X 시리즈에서만 사용할 수 있는 하드웨어 기능이 필요하지만, Prism은 Windows 11 24H2를 사용하는 Arm 디바이스에서 지원되는 모든 Windows 11에서 사용할 수 있습니다.

에뮬레이션 작동 방식

에뮬레이션은 내보낸 Arm64 코드의 성능을 향상시키기 위해 최적화를 통해 x86 명령의 Just-In-Time 컴파일 블록인 소프트웨어 시뮬레이터로 Arm64 명령으로 작동합니다.

서비스는 지침 번역의 오버헤드를 줄이고 코드를 다시 실행할 때 최적화를 위해 이러한 번역된 코드 블록을 캐시로 저장합니다. 처음 시작 시 다른 앱이 활용할 수 있도록 캐시는 각 모듈에 대해 생성됩니다.

x86 앱 의 경우 x86 코드가 x64 버전의 Windows에서 실행되도록 허용하는 것처럼 Windows의 WOW64 계층에서는 x86 코드를 Arm64 버전의 Windows에서 실행할 수 있습니다. 즉, Arm의 x86 앱은 파일 시스템 및 레지스트리 리디렉션으로 보호됩니다.

x64 앱의 경우 WOW64 계층이 없으며 Windows 시스템 이진 파일의 별도 레지스트리 또는 폴더가 없습니다. 대신 시스템 이진 파일은 파일 시스템 리디렉션 없이도 동일한 위치에서 x64 및 Arm64 프로세스 모두에 로드할 수 있는 Arm64X PE 파일컴파일됩니다. 즉, x64 애플리케이션은 특수 코드 없이 파일 시스템 및 레지스트리의 전체 OS에 액세스할 수 있습니다.

에뮬레이션은 사용자 모드 코드만 지원하며 드라이버를 지원하지 않습니다. 모든 커널 모드 구성 요소는 Arm64로 컴파일되어야 합니다.

에뮬레이션 검색

x86 또는 x64 앱은 IsWoW64Process2와 같은 Arm64 호스트에 대한 지식을 전달하도록 설계된 특정 API를 호출하지 않는 한 Windows on Arm PC에서 실행 중임을 알 수 없습니다. 메타데이터 또는 기능 기능을 포함한 프로세서 세부 정보를 쿼리하는 에뮬레이션 중인 앱은 에뮬레이트된 가상 프로세서에 해당하는 세부 정보를 받습니다. 호환성을 위해 API GetNativeSystemInfo 는 에뮬레이션 중인 앱에서 실행할 때 에뮬레이트된 프로세서 세부 정보도 반환합니다.

운영 체제의 에뮬레이션 기능을 검색하려는 앱의 경우 API GetMachineTypeAttributes를 사용합니다.

Arm 버전의 앱을 지원하도록 업데이트

Arm 디바이스에서 에뮬레이션으로 앱을 실행하는 것은 시작하기에 좋은 장소이지만, Arm 지원을 앱에 추가하도록 다시 빌드하는 경우 앱은 기본 성능 향상 및 Arm 기반 디바이스의 고유한 특성을 활용할 수 있습니다.

Arm 버전의 앱을 만드는 방법 및 어떤 종류의 이점, 챌린지 및 도구가 관련될 수 있는지, 그리고 Arm 버전의 앱(및 관련 종속성)을 만드는 데 사용할 수 있는 지원에 대한 지침은 Windows 앱에 Arm 추가 지원을 참조하세요.