벤치리뷰·뉴스·정보/고전 스페셜 정보

[고전 2003.02.22] Intel 차세대 하이퍼 쓰레딩 (Hyper-Threading) 기술 공개

tware 2005. 11. 2. 10:30

 

Hyper-Threading에서 싱글 스레드 애플리케이션의 성능도 향상

 

 

(여기서 말하는 차세대 하이퍼 쓰레딩 기술은 이미 나온 하이퍼 쓰레딩이 아닌 하이퍼쓰레딩의 차세대(확장) 하이퍼쓰레딩을 말하는 겁니다. 과거와 현재의 하이퍼쓰레딩 (SMT) 과 전혀 관계가 없습니다.)

 

 

팻 겔싱어 CTO 겸 수석 부사장

 

지금의 Intel CPU는 Hyper-Threading에서 여러 스레드를 병렬로 실행할 수있다. 그러나 미래의 Intel CPU는 이것뿐 아니라, 하나의 스레드에서 자동으로 다른 스레드를 생성하여 마음대로 병렬 실행 해 주게된다. Intel은 18 일부터 미국 산호세에서 개최하는 "Intel Developer Forum (IDF)"에서 이러한 차세대 CPU 아키텍처의 포인트를 설명했다.

현재 하이퍼쓰레딩은 멀티태스킹 환경에서 실행되는 소프트웨어와 멀티스레드 응용 프로그램은 속도가 증가하지만, 단일 스레드 응용 프로그램 실행은 속도가 증가되지 않는다 (듀얼코어와 특성이 똑같습니다. 하이퍼스레딩(SMT)경우 코어의 자원을 독점 혹은 2개의 스레드가 나눠서 쓰기에 멀티시 최대 성능 증가 %가 다를 뿐. 두개의 스레드의 명령을 동시에 실행 가능하다는 점 역시 듀얼코오와 특성이 똑같습니다. 다만 윈도우 백그라운드 작업 등이 있기 때문에, 듀얼이나 하이퍼스레딩 쪽이 단일 코어나 (동코어 단일 코어) 비 하이퍼스레딩 (동 코어일 때, 하이퍼스레딩 ON/OFF 비교시) 단일 코어에 비해서 무조건 좋기는 합니다. 듀얼코어나 하이퍼스레딩이 단일 프로그램만을 실행하는데 성능이 증가하려면, 단일 프로그램 자체가 멀티스레드로 작성되어야 하겠죠.). 그러나 Intel은 다음 단계에서는 개별 응용 프로그램의(단일 쓰레드 프로그램)성능도 Hyper-Threading에서 향상시키려 하고있다. 이것은 "투기 멀티 스레딩 (Speculative Multithreading)"이라는 기술을 사용하여 수행한다. 뒤에서 무거운 작업이 실행되고 있을 때가 아니라도 응용 프로그램의 성능이 향상하게 된다.

Intel의 CPU 연구를 지휘하는 Justin Rattner 씨 (Intel Senior Fellow and Director, Micro-

processor Research Labs)는 향후 자사 CPU 개발의 초점은 "멀티 스레드 + 멀티 코어 '로 넘어간다 말한다. 즉 CPU 코어가 여러 스레드를 병렬로 실행할 수 있도록 하고,1 개의 칩에 코어를 여러개 넣음으로 보다 많은 스레드를 병렬로 실행할 수 있도록 한다는 것이다. 현재는 2 스레드를 병렬 실행하기를 Hyper-Threading으로 하지만 앞으로는 4 스레드, 그리고 8 스레드와 병렬 실행할 수 있는 스레드가 늘어나는 것이다.

 

 

 

CPU 마이크로 아키텍처의 동향

 

그리고 그방향의 다음 단계로 "비대칭 (Asymmetric) Hyper-Threading"와 "자동 스레드 생성 컴파일러(Auto-threading Compilers)"를 도입 해 나간다는 비전을, Rattner 씨는 주장했다. 자동 스레드 생성 컴파일러는 하나의 스레드에서 점점 여러 스레드를 생성, Hyper-Threading CPU 하드에서 실행한다. 이를 통해 단일 ​​스레드 응용 프로그램에도 Hyper-Threading CPU에서 성능을 향상시킬 수 있게된다.


Intel의 Patrick Gelsinger (팻 겔싱어) CTO 겸 수석 부사장은 IDF에서 이자동 스레드 생성 등은 처음에는 정적 컴파일러 실현, 다음은 동적 컴파일러 실현. 또한 CPU의 마이크로 코드로 실현하는 것도 연구하고 있다고 설명했다. 즉 우선 Intel 컴파일러로  재 컴파일 되어있는 어플리케이션만을 투기 멀티 스레딩으로 성능이 향상한다. 그러나 다음 단계는 Intel이 제공하는 동적 컴파일러 계층이 자동으로 스레드를 만들기 때문에, 어떤 애플리케이션도 빠르게된다. 이 동적 컴파일러는 Transmeta처럼 OS 아래의 레이어 될지 여부는 아직 알 수 없다. 하지만 결국 스레드 생성은 CPU 내부에서 이뤄지는 가능성이 높다.

 


비대​​칭 Hyper-Threading에 투기 멀티 스레딩을 쉽게

그러면 왜 비대칭 Hyper-Threading과 자동 스레드 생성 컴파일러 단일스레드 응용 프로그램의 성능이 올라가는지? 그것은 DRAM 액세스 지연 시간을 거의 완전하게 은폐하기 때문이다.

현재 CPU에서 소프트웨어의 성능이 꽤 오르지 않는 가장 큰 원인은 DRAM 메모리의 지연에 있다. 일단 DRAM 메모리에 액세스 되면, CPU가 그동안 처리를 정지 해 버려, 단숨에 성능이 떨어져 버린다 (물론 이렇기 때문에 캐시가 있는 겁니다. 그러나 캐시라고 해도 모든 정보가 다 캐시에 있을 수 없죠.). Rattner 씨는 CPU의 속도는 CPU와 DRAM 메모리의 격차가 점점 확대되고 있다고 설명. 향후 이 문제의 해결이 CPU 성능 향상의 열쇠가 될 것을 시사했다.

 

[분석정보] CPU 고속화의 기본 수단 파이프라인 처리의 기본 2/2

 

 

점점 확대되는 CPU와 DRAM 메모리의 차이

 

 

 

비대칭 멀티 스레딩

 

 

투기 멀티 스레딩이 문제를 해결할 " 도깨비 방망이 '다. 투기 스레드를 달리게 함으로써 필요한 데이터를 완전히 인출해 버린다. 이에 따라 DRAM 액세스 지연을 완전히 은폐하고, CPU의 성능을 향상한다. Intel은 지금까지도 투기 멀티 스레딩에 관한 논문을 일부 발표했지만, 이번 IDF에서는 구체적인 CPU 연구에서 이 방법을 검토하고 있음을 처음으로 분명히 했다.

투기 멀티 스레딩을 위해, Intel은 비대칭 Hyper-Threading 이라는 스레드 병렬화 기술을 구현한다. 이것은 모든 스레드를 평등하게 실행하는 현재의 "대칭 (Symmetric) Hyper-Threading"와 달리, 메인이 되는 스레드와 다른 하위 스레드 그룹의 스위칭을 분리한다. Rattner 씨의 설명으로는 메인스레드는 1 물리적 스레드로 실행하는 한편, 하위 도우미 스레드는 스레드 스위치 전환 1 물리적 스레드 하는 형태로 되어 있다. "도우미 스레드는 일반적으로 수 명령 작은 스레드에서 좀 더 큰 때도 있지만, 일반적으로 그렇게 커지지 않는다"(Rattner 씨)라고 한다. 메인 스레드의 실행을 군소 하위 스레드 그룹의 실행에 방해되지 않도록 하는 것이다. 그래서 메인 스레드에서 하위 스레드를 점점 생성하는 투기 멀티 스레딩을 향하고 있는 셈이다.

 


투기 스레드에서 DRAM 액세스 지연 시간을 제거


Intel이 투기 멀티 스레딩에서 먼저 도입하려고 하고 있는 것은 "투기 프리컴퓨테이션 (Speculative Precomputation)"이라는 기술. 이 기술은 메인 스레드에 대해 "투기 쓰레드"라는 하위 스레드 그룹을 준비한다. 이것은 본래의 메인 스레드 중 로드명령 (메모리에서 데이터를 읽는 명령)과 거기에 종속되는 명령만을 뽑아 낸 스레드가 된다. 그리고 이 스레드와 병행하여 이합작 스레드를, Hyper-Threading 하드웨어에서 실행해 버린다. 즉 투기 스레드가 메모리 레이턴시 때문에 시간이 걸리는 로드 명령을 미리 투기 실행되는 것이다. 그러면 본래의 스레드가 로드 명령을 실행할 때 필요한 데이터가 모두 L1 캐시에 로드되어 있는 것이다.

"전체 인출이 이루어지기 때문에, 메모리에 액세스 할 필요가 거의 없어진다. 매우 강력하다"고 Patrick Gelsinger (팻 겔싱어) CTO 겸 수석 부사장은 이전 인터뷰에서 설명했다.

 

 

Speculative Precomputation

 

 

자동 스레드 생성

 

 

 

음성 데이터와 입술의 움직임 데이터를 합성하여 음성 인식의 정확도를 향상

 

 

이번 Intel이 투기 프리컴퓨테이션을 비대칭 Hyper-Threading에서 실행한다는 생각을 나타냈다.투기 스레드를 도우미 스레드로 실행하면, 투기스레드를 실행하게 되면 메인 쓰레드가 오히려 늦어지는 공포는 없어진다. 또한 도우미 스레드가 메인 스레드와 맥락을 많이 공유하면 자원도 낭비되지 않는다.

투기 스레드는 비대칭 Hyper-Threading 컴파일러에 인해 메인 스레드에서 도우미 스레드로 자동 생성된다. 생성된 도우미 스레드는 원래 코드는 "기호연결"된다고 한다. 하드웨어 측도 연결된 스레드를 도우미 스레드로 인식하고 실행하는 것으로 보인다.

투기 멀티 스레딩의 장점은 멀티 태스킹과 멀티 스레드뿐만 아니라 단일 스레드 실행이 가속화 되는 것. 실시간 컴파일러에서 도우미 스레드를 생성하면, 기존 코드의 응용 프로그램과 OS의 실행도 빠르게 할 수 있다.

당연히 Intel이 요구에 들어가는 것에는 워드프로세서의 고속화는 없는 것 같다.

(원문을 아무리 봐도.. 뭔 소리인지 잘 모르겠네요.; 프로그래머에게 고속으로 프로그래밍 타자 치는걸 요구하지 않는다. 즉 프로그램을 다시 짜야 하는 걸 요구하지 않는다. 프로그램 기법이나.....    이런말인지.컴파일러가 해주니까.. 대충 보세요-_-;;)

 

Intel은 이러한 접근 가속화 함으로써 새로운 응용 프로그램이 열린다고 설명한다. 그 일례는 시끄러운 데이터 속에서 패턴을 추출하는 것으로, 보다 음성 인식의 정확도를 높일 같은 기술이다. 음성 데이터 뿐만 아니라 화자의 입술의 움직임을 읽어 보면 보다 정확한 음성 인식을 실현 한다고 한다.

Intel은 향후 Hyper-Threading을 발전시켜 병렬로 실행할 수 있는 스레드 수를 늘려 간다. 동시에 투기 스레딩과 같은 다양한 새로운 기술도 도입 해 오는 것이다.

 

pc watch

 

(여기서 말하는 내용들은 펜티엄4 부터 현재의 하이퍼쓰레딩과 관계가 없습니다. 본래 계획으로는 취소된 Tejas 에서 구현하려던 방식 입니다. 펜티엄4나 코어 i3, i7의 하이퍼쓰레딩은 아래 고전 [2001.08.29] 하이퍼쓰레딩 기사를 참고하세요.)

 

 

[정보분석] 하이퍼쓰레딩은 게임에서 효과가 없는가?

 

 

[2001.08.29] IDF에서 보이는 새로운 방향 IA-32의 장래를 담당하는 하이퍼 쓰레딩

 

 

[정보분석] Merom(메롬) 이후인 Nehalem(네할렘) 과 Gilo(길로)

 

 

[아키텍처] 폴락의 법칙에 찢어지고 취소된 테자스(Tejas)

 

 

[고전 2001.08.30] 인텔 하이퍼 쓰레딩 펜티엄4 계획, 인텔 투기 (Spectulative) 스레드 실

 

 

[고전 2002.10.04] Pentium 8 후보 Nehalem 아키텍처