Windows 8의 Hyper-V를 쓰기위해서는 CPU가 SLAT(Second Level Address Translation) 를 지원해야 한다. 이게 뭔소리?

Posted by 빵빵빵
2012/10/31 13:45 전산(컴퓨터)/PC-Windows



Window8의 Hyper-V(VM웨어 같은 가상머쉰 툴)를 쓰기위해서는 CPU가 SLAT(Second Level Address Translation) 를 지원해야 한다.
이게 뭔소린가???

일단 SLAT가 뭘까??? 삼성 슬레이트PC인가?? 아... 모르겠고...


다음은 원문을 해석한 거다.

윈도우8의 새로운 기능 Hyper-V를 사용하려면 CPU가 반드시 SLAT(Second Level Address Translation)를 지원해야 한다.
윈도우8에서 하이퍼V가 안된다면 CPU가 SLAT를 지원하지 않아서 일 수 있다.


SLAT가 뭐냐?
직역하자면 "2차 주소변환"?? 정도 되려나??
이 기술은 인텔에서는 ETP(Extended Page Tables)라고 하고 AMD에서는 RVI(Rapid Virtualization Indexing)이라는 이름으로 발표했다.
인텔은 Nehalem(네할렘) 아키텍쳐에서 구현되었고, AMD는 3세대 프로세서 코드네임 Barcelona(바르셀로나?)에서 발표했다.

Hyper-V는 이 기능(SLAT)으로 가상 머신(VM) 메모리 관리를 효율적으로 하고 메모리 주소를 변환하는데 오버헤드(부하?)를 줄였다. 이렇게 함으로써 Hypervisor(가상 머신의 메모리 주소와 실제 메모리 상의 주소 변환기) CPU 사용시간을 줄이고 각각의 VM의 메모리를 절약한다. => 역자 주. Hypervisor가 메모리도 쓰고 CPU 시간도 쓰서 오버해드가 발생했는데 이젠 CPU 내에 SLAT라는 기능이 빠르게 작동한다는 말이다.

동작원리
프로세서는 TLB(Translation Lookaside Buffer; 옆 해석 버퍼??)이라고 하는 가상 메모리 주소를 물리(실제) 메모리 주소로 변환하는 기능을 가지고 있다. TLB는 CPU에 존재하고, 페이지 테이블에서 최근에 사용된 (메모리)맵핑을 가지고 있는 캐쉬이다. 가상 메모리 주소에서 물리(실제) 메모리 주소로 변환이 요청되면 TLB는 맵핑 정보가 있는지 캐쉬를 체크하고 TLB가 동일하면 메모리 주소를 제공해서 데이터를 접근한다. 당연하겠지만 반대의경우(맵핑 정보가 틀리면) 페이지 에러가 발생하고 윈도우는 맵핑 정보를 찾기위해 페이지 테이블을 체크한다.
윈도우가 맵핑 정보를 찾으면 이를 TLB에 저장하고 메모리 주소를 변환하여 데이터를 접근한다.
이 버퍼 덕분에 Hypervisor의 오버해드는 실질적으로 감소한다.

그래서?
윈도우7의 XP모드 같은것과 비슷해 보이는데, 윈도우8에서는 Hyper-V를 위해서는 SLAT가 필요하다.
(속도 빠르게 할려고 캐쉬 끼워 넣었다는건가???)

내 CPU가 SLAT가 되는지 어떻게 알지?
CoreInfo라는 프로그램을 받아서 체크해보면 된다. 다음과 같은 프로그램이다.
커멘드 창에서 실행해야 하고 커멘드 창관리자 권한으로 실행해야 한다.
사용자 삽입 이미지

커멘드 창에서 다음과 같이 실행한다.

C:\> CoreInfo.exe -v

인텔 CPU를 사용하고 있다면 다음과 같이 EPT 항목에서 다음과 같이 * 표시가 보일 것이다.
사용자 삽입 이미지


AMD CPU를 사용한다면 다음과 같이 NPT 항목에 * 표시가 될것이다.
사용자 삽입 이미지

만일 SLAT를 지원하지 않는다면 EPT와 NPT 항목에 - 표시가 되 있을 것이다.


결국 가상 머신을 돌리는데 기존에 Hypervisor를 안쓰고, 메모리 맵핑 정보를 캐쉬화 해서 CPU가 바로 처리하니까 속도가 빨라진다.... 이런 이야기..
2012/10/31 13:45 2012/10/31 13:45

이 글에는 트랙백을 보낼 수 없습니다