데비안 리눅스와 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처럼 프로그래밍 언어 개발을 위해 시스템 영역까지 정통한 사람들이니깐 가능한거 같아요.
앞으로 엔터프라이즈 장비 소식들 많이 부탁 드립니다. ^^;
아마 "복잡한 마이크로아키텍처적인 조건"을 만드는게 문제인거 같은데 이제서야 발견된거 보니 확실히 흔한 패턴으로 발생하는 것은 아닌거 같습니다.
ECU로 최대한 그러한 문제가 발생하지 않게 하는 것 같은 느낌적인 느낌?
휴...인텔아...!!!버럭!!
이번 오류는 인텔의 잘못된 마이크로코드로 인하여 발생한 문제로 스카이레이크 몇몇 모델은 이미 능력자들이 직접 마이크로코드를 고쳐서 해결을 했다고 합니다.