데비안 리눅스와 OCaml 개발진이 인텔 스카이레이크와 카비레이크 CPU에서 치명적인 하이퍼쓰레딩 오류를 발견하였습니다. 데비안 리눅스측은 해당 문제는 OS에 상관없이 일어나는 것이며 해당 문제를 수정하는 메인보드 바이오스 업데이트가 나올 때 까지 하이퍼쓰레딩을 즉시 비활성화하라고 경고했습니다.
이 오류는 프로세서의 마이크로코드 관련 결함으로, 해당 오류가 발생하면 예기지 못한 시스템 동작을 일으킬 수 있으며 데이터 오염이나 데이터 손실을 야기할 수 있습니다. 이것은 리눅스 커뮤니티에서 발견된 문제이지만 리눅스에만 해당하는 문제가 아닌 것으로 판명되었습니다. 이 오류는 발생하는 조건이 복잡하여 흔히 일어나지는 않지만 반대로 얼마나 많은 프로그램이 이 오류에 영향을 받는지 알 수 없으며, 또한 이 영향을 받는 프로그램을 감지해내기가 힘들다고 밝혔습니다.
인텔은 이미 해당 오류를 인지하여 내부적으로 수정한 것으로 보입니다. 인텔이 명시한 해당 오류는 아키텍처별로 Errata SKZ7, SKW144, SKL150, SKX150, SKZ7, KBL095, KBW095 이며 이 Errata는 다음과 같습니다.
해석)
- Errata: AH/BH/CH/DH레지스터를 이용하는 짧은 루프는 예기치 못한 시스템 동작을 일으킬 수 있습니다.
- 문제점: 복잡한 마이크로아키텍처적인 조건 하에, AH, BH, CH, DH레지스터 뿐만 아니라 그것과 상응하는 더 넓은 레지스터(예: AH의 경우는 RAX, EAX, AX 레지스터)를 이용하는 64 개 명령어 보다 짧은 루프는 예기치 못한 시스템 동작을 일으킬 수 있습니다. 이것은 두개의 논리 프로세서가 같은 물리 프로세서 위에서 동작중일때만 발생합니다.
- 영향: 이 오류로 인해 시스템은 예기치 못한 시스템 동작을 겪을 수 있습니다.
- 해결책: 바이오스가 이 문제를 수정하는 패치를 넣을 수 있습니다.
해당 문제를 경고한 데비안 리눅스 측은 Errata SKZ7/SKW144/SKL150/SKX150/SKZ7/KBL095/KBW095를 수정하는 BIOS/UEFI 패치를 받기 전까지는 바이오스를 통하여 하이퍼쓰레딩을 끄도록 권장하고 있습니다.
지금까지 이 오류로 인한 보고된 증상은 컴파일러와 어플리케이션 튕김, 올바르지 않은 프로그램 동작, 잘못된 프로그램 출력입니다.
출처:
- https://lists.debian.org/debian-devel/2017/06/msg00308.html
macOS도 포함되는거 아닌가요;;;
데비안리눅스는 거의 발표만 한거고 실제로 찾은 것은 OCaml측에서 거의 5달동안 노력한 결과입니다. 1월쯤에 문제 발견하고 몇달동안 해본 결과 스카이레이크 하이퍼쓰레딩 문제라는 것을 인지하고, CPU의 x86명령어 보다 더 밑단에 있는 마이크로코드를 직접 수정해서 문제를 해결해 보임으로써 오류를 증명해냈습니다.
OCaml처럼 프로그래밍 언어 개발을 위해 시스템 영역까지 정통한 사람들이니깐 가능한거 같아요.
앞으로 엔터프라이즈 장비 소식들 많이 부탁 드립니다. ^^;
아마 "복잡한 마이크로아키텍처적인 조건"을 만드는게 문제인거 같은데 이제서야 발견된거 보니 확실히 흔한 패턴으로 발생하는 것은 아닌거 같습니다.
이번 오류는 인텔의 잘못된 마이크로코드로 인하여 발생한 문제로 스카이레이크 몇몇 모델은 이미 능력자들이 직접 마이크로코드를 고쳐서 해결을 했다고 합니다.