loading

PC.Div.Soft/Windows.Office

Broadwell 이전 CPU에서도 성능 저하가 거의 없는 Spectre V2 패치가 Windows 10에 구현되다

나에+ 2019. 3. 5. 00:02
반응형

https://pc.watch.impress.co.jp/docs/news/1172863.html

- https://techcommunity.microsoft.com/t5/Windows-Kernel-Internals/Mitigating-Spectre-variant-2-with-Retpoline-on-Windows/ba-p/295618


마이크로소프트가 1일(현지 시간), CPU 투기 실행 취약점 중 하나인 Spectre V2와 관련해 브로드웰(Broadwell) 이전 프로세서에서도 성능 손실을 최소화하면서도 취약점을 완화하는 방법인 'retpoline'을 Windows 10 버전 1809에 구현할 것이라고 밝혔습니다. 


지금까지는 CPU 마이크로코드 업데이트를 통해 구현된 새로운 기능으로, 커널 모드에서 실행시 간접 분기 추측을 제한(IBRS/IBPB)하는 방식이었는데, 이는 보안적인 면에서 보면 효과적이었지만 특정 프로세서나 워크로드에서의 성능이 크게 저하되는 문제가 있었다고 합니다. 그래서 2018년 초반부터 타개책을 생각해 왔으며, 그 중에서도 Google의 retpoline이라는 방법을 유력하게 보고 있었다고 하네요.


간단하게 말하면, retpoline은 커널 모드 바이너리에 있는 모든 간접 호출이나 점프 명령을 안전한 투기적 실행을 하는 관절분기(?) 시퀀스로 대체해서 동작하는 방법입니다. 이렇게하면 일반적인 간접 호출이나 점프 명령보단 빠르지 않지만 프로세서가 위험한 투기적 실행을 하지 않는 부작용이 있다고 하는데요, 이 경우엔 분기투기를 제한하는 것보다 훨씬 빠르게 되고, Google에 따르면 retpoline에 따른 성능 저하는 노이즈 수준이라고 합니다.


다만 Windows에서는 호환성이나 장치 드라이버의 문제와 관련해서 곧장 retpoline을 구현하지 않고, 64bit 인사이더 프리뷰 버전(18272)에서 retpoline을 구현했다고 합니다. 그랬더니 Office 앱의 실행이 25%정도 줄었고, Broadwell CPU의 Diskspd 벤치, NTttcp 벤치 등에서 1.5~2배에 달하는 처리량 향상이 이루어졌다고 합니다. 처음엔 이 기능을 다음 메이저 업데이트(19H1)에서 구현할 예정이었지만, 현재 실행중인 Windows 10에서 retpoline을 지원할 수 있도록 포팅해 Windows 10 1809에서 사용할 수 있도록 했다고 합니다(KB4482887), 이후 순차적으로 적용해 나간다고 하고요.


단, 구현의 복잡성과 변형때문에 Windows 10 1809에서만 Retpoline이 적용되는 것 외에도 RET명령이 간접 분기 예측기의 내용에 따라 추측하지 않는 프로세서에서만 안전하게 동작하기에 Broadwell 이전 Intel 프로세서, 모든 AMD 프로세서 환경에만 적용되고, Intel Skylake 이상의 프로세서 환경에서는 retpoline을 적용하지 않는다고 하네요.


반응형