x86 에뮬레이션의 메모리 모델 문제를 풀다
원제 The scourge of x86 emulation
122 포인트댓글 18
Key Point
ARM 기반 시스템에서 x86 소프트웨어를 실행하려는 개발자들이 알아야 할 에뮬레이션의 근본적 한계와 성능 트레이드오프를 설명한다.
핵심 요약
- x86의 강력한 메모리 일관성 모델(TSO)을 ARM의 약한 메모리 모델에서 에뮬레이션할 때 성능 문제가 발생한다.
- x86 TSO는 메모리 저장이 즉시 모든 프로세서에 보여지는 강한 순서를 보장하지만, ARM은 캐시라인 무효화 비용을 줄이기 위해 기본적으로 약한 일관성을 허용한다.
- FEX 에뮬레이터는 x86의 메모리 로드를 ARM의 acquire 명령어로, 저장을 release 명령어로 변환해 TSO 의미론을 맞춘다.
- 이 방식은 필요 이상으로 엄격하며, ARM CPU가 이런 희귀한 명령어를 대량으로 실행하도록 설계되지 않아 상당한 성능 저하를 초래한다.
- ARMv8.0-a부터 부분적 해결책이 제시되었지만, 원자적 명령어, 분할 잠금, 캐시되지 않은 메모리 등 여전히 해결해야 할 문제들이 있다.