AMD SVM-V 및 Intel Xeon 5500 시리즈와 같은 일부 CPU는 두 계층의 페이지 테이블을 사용하여 메모리 가상화에 대한 하드웨어 지원을 제공합니다.

첫 번째 페이지 테이블 계층에는 게스트 V2P(가상에서 물리로) 변환이 저장되며 두 번째 페이지 테이블 계층에는 게스트 P2M(물리에서 시스템으로) 변환이 저장됩니다. TLB(Translation Look-aside Buffer)는 프로세서의 MMU(메모리 관리 유닛) 하드웨어가 유지하는 변환의 캐시입니다. TLB 누락은 이 캐시의 누락이며 하드웨어는 필요한 변환을 찾기 위해 메모리로 이동해야 할 경우가 많습니다. 특정 게스트 가상 주소에 대한 TLB 누락의 경우 하드웨어는 게스트 가상 주소를 시스템 주소로 변환하기 위해 두 페이지 테이블을 모두 확인합니다. 페이지 테이블의 첫 번째 계층은 게스트 운영 체제에 의해 유지됩니다. VMM은 페이지 테이블의 두 번째 계층만 유지합니다.

성능 고려 사항

하드웨어 지원을 사용하면 소프트웨어 메모리 가상화의 오버헤드가 제거됩니다. 특히 하드웨어 지원은 섀도우 페이지 테이블과 게스트 페이지 테이블의 동기화 상태 유지에 필요한 오버헤드를 제거합니다. 하지만 하드웨어 지원을 사용할 때는 TLB 누락 지연 시간이 조금 더 높습니다. 기본적으로 하이퍼바이저는 TLB 누락의 비용을 줄이기 위해 하드웨어 지원 모드에서 큰 페이지를 사용합니다. 이로 인해 하드웨어 지원을 사용할 때 워크로드에 이점이 있는지 여부는 소프트웨어 메모리 가상화를 사용할 때 메모리 가상화가 초래하는 오버헤드에 따라 달라집니다. 프로세스 생성, 메모리 매핑 또는 컨텍스트 전환 등과 같이 페이지 테이블 작업의 양이 적은 워크로드의 경우에는 소프트웨어 가상화로 인해 발생하는 오버헤드가 크지 않습니다. 이와 반대로 페이지 테이블 작업의 양이 많은 워크로드의 경우 하드웨어 지원을 사용하면 이점을 얻을 수 있습니다.

하드웨어 MMU는 하드웨어에 구현된 광범위한 캐싱과 함께 처음 소개된 이후로 성능이 향상되었습니다. 소프트웨어 메모리 가상화 기술을 사용하면 일반적인 게스트에서 초당 100 ~ 1,000번의 빈도로 컨텍스트 전환이 발생할 수 있습니다. 각 컨텍스트 전환은 소프트웨어 MMU에서 VMM을 트랩합니다. 하드웨어 MMU 방식에서는 이러한 문제가 방지됩니다.

기본적으로 하이퍼바이저는 TLB 누락의 비용을 줄이기 위해 하드웨어 지원 모드에서 큰 페이지를 사용합니다. 게스트 가상 대 게스트 물리 및 게스트 물리 대 시스템 주소 변환 모두에 큰 페이지를 사용하면 가장 높은 성능이 구현됩니다.

LPage.LPageAlwaysTryForNPT 옵션은 게스트 물리 대 시스템 주소 변환에 큰 페이지를 사용하기 위한 정책을 변경할 수 있습니다.​ 자세한 내용은 고급 메모리 특성 항목을 참조하십시오.

참고:

바이너리 변환은 소프트웨어 기반 메모리 가상화에서만 작동합니다.