Linux 커널은 Spectre 변형 1에만 패치되고 변형 2에는 패치되지 않은 최신 칩을 어떻게 처리합니까?

Linux 커널은 Spectre 변형 1에만 패치되고 변형 2에는 패치되지 않은 최신 칩을 어떻게 처리합니까?

칩 패치 방법귀신변형 1 및무너지다Whisky Lake 및 Amber Lake와 마찬가지로 Spectre Variant 2도 처리할 수 있습니까? 새 노트북에 대한 사양을 찾고 있습니다. 현재 Lenovo x390을 검토 중입니다. Meltdown 및 Spectre Variant 1에 대한 하드웨어 수정이 있다고 주장하는 Whisky Lake와 함께 출시됩니다.

에이낸드테크에 따르면

가장 큰 성능 지표는 Spectre Variant 2를 해결하는 것입니다. 인텔은 소프트웨어 수정 후 3~10% 성능 저하 예상워크로드에 따라 다름 - 하드웨어에 고정된 경우 Intel은 성능 저하가 훨씬 적다고 말하지만 Cascade Lake와 같은 새로운 플랫폼은 관계없이 더 나은 전체 성능을 제공할 것으로 기대합니다. Whisky Lake나 Amber Lake 모두 v2에 대한 완화 기능은 없지만 Whisky Lake는 확실히 v3 및 L1TF와 같은 더 위험한 공격을 해결하는 과정에 있습니다. Whisky Lake는 또한 플랫폼이 14++에 있으므로 새로운 성능 옵션을 제공하여 성능과 전력 소비를 개선하는 데 도움이 됩니다.

그래서 제 질문은 새로운 칩(Whisky Lake 및 Amber Lake)에서Spectre Variant 1과 Meltdown을 수정하면 어떻게 성능이 향상되나요?CPU 취약점의 2/3에 대해서만 하드웨어 패치를 제공한다는 사실이 커널에 하드웨어 이점을 제공합니까? 아니면 Linux 커널이 Spectre 변종 2를 방어하기 위해 동일한 심각한 소프트웨어 완화를 적용하게 될까요?

답변1

이는 인텔 중심의 답변이 될 것입니다.

커널 수준에서 Spectre/Meltdown 완화는 모놀리식이 아니지만 각 Spectre/Meltdown 변형에는 자체 완화 세트가 있습니다.

무너지다

Meltdown에 대한 커널 수준 완화를 페이지 테이블 격리라고 합니다. 커널은 이 작업을 자체적으로 수행할 수 있으며 이는 성능에 상당한 영향을 미칠 수 있습니다.

프로세스 컨텍스트 식별자(PCID)가 프로세서 + 마이크로코드에 의해 제공되는 경우 INVPCID 명령이 프로세서에 제공되는 것이 더 좋습니다. 마이크로코드가 수행할 수 있는 작업에 따라 Meltdown Fix 마이크로코드 업데이트는 이러한 기능 중 하나 또는 둘 다를 추가합니다. 특정 프로세서 모델별로. Linux는 가능한 경우 확실히 이를 사용할 수 있으며 Meltdown 완화가 성능에 미치는 영향을 크게 줄일 수 있습니다.

물론 가장 좋은 시나리오는 페이지 테이블 격리가 전혀 필요하지 않다는 것입니다. 이는 명백히 Meltdown의 "하드웨어" 수정 사항입니다.

시스템이 충분히 안전하고 성능이 더 중요하다고 생각되면 Meltdown 복구를 끄도록 선택할 수 있습니다.

고스트 변종 1

이는 패치를 통해 완화될 수 있습니다.번역가특정한 경우에는 포인터를 더 주의 깊게 처리한 다음 패치가 적용된 컴파일러를 사용하여 커널(및 하이퍼바이저)과 보안에 중요한 바이너리를 다시 빌드하세요. 이 작업이 완료되었습니다. 컴파일된 코드의 전략적 위치에 몇 가지 추가 명령을 추가하여 프로그램을 약간 더 크게 만들고 실행 속도를 느리게 만들지 만 운 좋게도 그 차이는 일반적으로 작습니다.

내가 이해한 바에 따르면 마이크로코드와 프로세서 설계는 여기서 큰 역할을 하지 않습니다. Cascade Lake조차도 이에 대한 OS/VMM 수준 수정만을 나타냅니다.

고스트 변종 2

이는 어려운 문제이며 아마도 해결하기 가장 어려울 것입니다. 실제 솔루션에는 다음 수준의 혁신이 필요하기 때문입니다.CPU 설계 이론.

커널은 CPU 하드웨어 + 마이크로코드의 도움 없이도 이를 달성할 수 있습니다.레볼린, 즉.RETURN 명령 트램펄린. 이는 어셈블리 수준 프로그래밍 기술입니다. 멜트다운 완화와 마찬가지로 이 조치를 구현하면 시스템 성능이 저하되므로 보안보다 성능이 더 필요하므로 이 완화를 비활성화하도록 선택할 수 있습니다.

CPU+마이크로코드는 커널이 Spectre V2에 대해 더 쉽게 완화할 수 있도록 몇 가지 새로운 기능을 다시 제공할 수 있습니다.

  • IBRS(간접 분기 제한 추측)는 기본적으로 사용자->커널 모드 전환 중에 사용자 공간 코드가 커널 공간의 분기 예측에 영향을 주지 않도록 하는 CPU 분기 예측기의 전환 가능한 모드입니다.
  • IBPB(간접 분기 예측 장벽): 기본적으로 IPBB 명령어 다음의 코드에서 분기 예측에 영향을 미치기 전에 모든 코드를 중지하는 새로운 CPU 명령어입니다.
  • STIBP(Single-threaded Indirect Branch Predictor): 동일한 코어의 하이퍼스레드가 분기 예측 정보를 공유하지 못하도록 방지하는 방법입니다.

Linux 커널은 적절한 상황에서 이러한 기능을 사용하여 리트폴린 기술로 인한 성능 저하를 최소화할 수 있습니다.

자세한 내용은 이 인텔 PDF를 참조하십시오.

관련 정보