하이퍼 스레딩이란? - (1)
- 컴퓨터공학
- 2016. 2. 15. 16:49
하이퍼 스레딩(Hyper-threading)이란?
우리가 알고 있는 CPU회사라고 하면 아주 유명한 2개의 회사가 있습니다.
바로 인텔과 AMD.
하이퍼 스레딩이라는 기술은 2000년대 초반에 팬티엄4가 출시되면서 적용되기 시작한 기술입니다.
당시 AMD가 듀얼코어를 출시하자 마음이 급해진 인텔은 듀얼코어 대신 듀얼코어와 비슷한 성능을 내도록 싱글코어(팬티엄4부터)에 하이퍼 스레딩 기술을 적용하기 시작했습니다. 그렇다고 그 이후로 출시된 모든 CPU에 이 기술이 탑재된 것은 아닙니다.
싱글코어가 듀얼코어와 비슷한 성능을 낸다?
CPU의 코어 수가 1개라면 컴퓨터에게는 코어 수가 2개로 보이고, 2개는 4개로, 4개는 8개로 스레드를 늘리는 셈입니다.
결국 기본 CPU 코어 수의 스레드를 2배로 보이게 해서 처리 성능을 향상 시키는 기술입니다.
이렇게 하이퍼 스레딩이라는 기술을 사용하게 되면 멀티코어를 사용해야 할 작업에서 20~30% 성능향상이 있습니다.
단, 멀티코어가 필요없는 싱글코어로도 충분한 작업에서는 오히려 10% 정도의 성능이 저하됩니다.
또한 사무용이나 서핑처럼 가벼운 작업에는 하이퍼 스레딩이 필요없고, 게임이나 그래픽 또는 전문 작업에는 하이퍼 스레딩이 필요하다고 보시면 됩니다. 그리고 전문 작업 중에서도 멀티미디어, 영상 분야 쪽에서 특히나 성능 향상이 좋다고 합니다. 그 이유는 영상 처리 분야 대부분이 컴퓨터 내부적으로 계산 양이 많지만, 계산을 병렬화하기 좋은 먹잇감이기 때문이라고 합니다.
물론 어디까지나 인텔에서 자사 기술의 장점을 설명한 것이니 모든 경우에 적용된다고 맹신하는 것은 금물입니다.
오히려 쿼드코어가 대중화 된 이후로 CPU제조사들이 코어를 주구장창 때력박는걸 SW 개발자들이 못 따라가면서, 싱글코어 시대에 비해서는 빛이 바랜 상황입니다. 코어가 SW의 멀티 스레딩 지원 능력을 이미 능가한 상황에서는 하이퍼 스레딩을 사용하면, 약간이지만 무조건 성능이 저하됩니다.
다음 동영상을 보시면 하이퍼 스레딩을 사용했을 때와 사용하지 않았을 때의 차이를 직접 실험을 통해 명확히 구분할 수 있습니다. (꼭 보세요!)
이제 왜 이런 차이를 보이는지 그 동작원리를 알아보겠습니다.
사실 인텔에서 제시한 그래프 한장이면 거의 설명이 끝나긴합니다.
운영체제 상에서 멀티태스킹이 일어날 때 프로그램에 따라서 리소스를 거의 100%에 가깝게 사용하는 경우도 있지만 대부분의 프로그램은 CPU 점유율이 단지 몇 퍼센트에 불과할 정도로 매우 낮습니다. 그리고 프로세스에 필요한 자원의 양은 프로세스의 진행 과정에 따라 많기도 하고 적기도 합니다.
위의 그래프들은 그와 같은 상황을 묘사하고 있는데, 첫 번째 그래프에서 주황색과 파란색의 막대가 각각 시간적 흐름에 따라 하나의 프로세스에서 필요로 하는 자원의 양을 나타내고 있습니다. 멀티태스킹이 이루어지는 원리는 운영체제 상에서 매우 작은 시간 단위로 각각의 작업을 번갈아가며 실행시키기 때문에 가능한 것입니다. 따라서 두 번째 그래프에서 묘사된 대로 하이퍼스레딩이 적용되기 전의 일반적인 상황에서는 두 개의 작업이 완료될 때까지 각각의 작업을 따로 실행시킨 것과 동일한 시간이 걸리게 됩니다.
세 번째 그래프는 하이퍼 스레딩을 적용했을 때의 구동 원리를 나타낸 것인데, 일반적으로 멀티 태스킹을 위해 쪼개진 사이클마다 번갈아가며 작업이 이루어지는 것과는 달리, 매 사이클마다 자원의 여유 공간에 또 다른 작업을 수행시켜, 두 작업이 필요로 하는 자원의 양이 100%에 못 미칠 경우에는 두 사이클이 걸릴 과정을 한 사이클 내에 끝내도록 하고 있습니다. 물론 합이 100%를 넘는 경우에는 한 사이클에서 처리가 완료되지 않고 부족한 자원만큼은 다음 사이클로 넘어가게 됩니다. 따라서 듀얼프로세서, 혹은 하이퍼스레딩을 이용하더라도 성능이 정확히 2배가 되는 일은 없습니다. 다만 약간의 성능향상은 기대할 수 있습니다.
지금까지 하이퍼 스레딩의 개념과 기본 원리에 대해서 알아 보았는데요. 혹시 좀더 자세한 원리를 알고 싶다면 다음 글을 읽어주시기 바랍니다.
자세한 원리라고 해서 딱히 어려운 내용은 절대 아닙니다. 다만 제가 직접 작성한 글이 아니라서 같은 글에 담지 않았습니다.
'컴퓨터공학' 카테고리의 다른 글
멀티 코어 프로세서란? (1) | 2016.02.15 |
---|---|
하이퍼 스레딩이란? - (2) (2) | 2016.02.15 |
멀티 스레딩이란? (0) | 2016.02.15 |
멀티 프로그래밍이란? (0) | 2016.02.12 |
멀티태스킹이란? (2) | 2016.02.12 |
이 글을 공유하기