Untitled

<aside> 💡

하이퍼 스레딩은 캐시미스 등으로인해 여유가 생길 때 파이프라인에서 명령어 로드/패치 메모리적재 등과 같은 과정을 번갈아가면서 시도하는 것.

</aside>

pause가 하는일은 명령은 없고 이번타임 쉬는 것으로, 일부러 명령어 하나 버려서 하이퍼스레딩이 옆스레드가 돌게끔 하는 것. 때문에 하이퍼 스레딩이 지원되지않는다면 pause 명령어는 아무 일도 하지 않는다.

만약에 A스레드옆에 B스레드가 A스레드자원을 쓰는 스레드로 같이 배정이 되었다면 좋은 효과를 볼수 있을 것이고, 다른코어에 배정된다면 어차피 루프를 도는것이므로 전혀 다른 스레드의 일을 시키면서 돌게 되는것. (OS입장에서는 하이퍼스레딩 CPU는 2개의 CPU로 본다.)

하이퍼스레딩이 지원되는 환경에서 SpinLock을 돈다면, 혼자서 점유율을 모두 차지하면서 기다리지않고 다른쪽 코어에 한번씩 기회를 주는 것. (하이퍼스레딩은 보통 2~30%의 성능향상이 있다고 한다.)

하이퍼스레딩은 실제 CPU의 물리코어 하나를 OS는 두개로 인식하게끔 하는 기술이지만 실제 성능 향상은 2~30%수준이며 캐시,메모리 대역폭 경쟁이 증가하므로 동기화 오버헤드(소프트웨어 락)가 커질 수 있다.

또한 보안 이슈: SMT/Hyper-Threading 관련 사이드채널(타이밍/캐시) 공격 가능성으로 보안 민감 환경에서는 비활성화 권장한다고 하며, 단일 코어 성능을 떨어뜨린다는 얘기도 있어 게임플레이 시에는 하이퍼 스레딩을 비활성화 하는것이 좋다는 얘기도 있다.

또한 CPU바운드(벡터화·플로팅 연산으로 코어 완전 점유) 작업이나 캐시 민감한 대형 작업에는 불리할 수 있다고 한다.

코어가 많을수록 유리한 멀티프로세스/멀티스레드 환경, I/O바운드, 메모리I/O가 많은 대기 서비스, 짧은 CPU작업을 병렬로 처리하는 환경에서는 명확한 성능향상을 볼 수 있음.

하이퍼스레딩 설계 제거

Intel Lunar Lake CPU Architecture Deep-Dive: Lion Cove +14% IPC, Skymont IPC More Than Raptor Cove, Next-Gen Power Managment & Scheduling

로직을 아예 다 빼고 최적화 설계를 하면, 그냥 하이퍼스레드 끈 1코어 1스레드보다 전성비(電性比; 전력 대비 성능 비율)가 15%, 면적비가 10% 늘어나며 종합적인 효율이 30%가까이 오른다고 한다.

최종적으로는 하이퍼스렐딩을 켠 1코어 2스레드보다 (1코어 1스레드여도) 전성비가 5%좋아지고 최종효율도 15%좋아진다고 한다. 다만 같은 면적, 같은 다이 사이즈일때 최종적인 성능은 떨어진다고 한다. 결론적으로는 성능을 극한으로 노리는 것보다는 효율성을 위해 이렇게 했다는 것.

하이퍼스레딩 기능 OFF

하이퍼스레딩(논리코어)을 끄면 스케줄링/캐시 간섭이 줄어들어 일부 서버 워크로드(특히 레이턴시 민감·단일 스레드 성능 의존)에 유리할 수 있다는 관점이 있음!!! 공부해볼것