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

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

tware 2005. 9. 8. 14:30


멀티 스레딩 기술을 데스크톱 및 모바일에도

 "Hyper-Threading 기술은 처음에는 Xeon MP에 구현된다.이 제품은 서버 및 워크 스테이션을 대상으로 내년 초에 등장한다.하지만 우리는 Hyper-Threading 기술을 데스크탑 CPU에 미치는 것도 계획하고 있다. 또한 모바일 CPU도 한다. 우리는 Hyper-Threading을 (데스크톱 / 모바일 CPU에) 추가 능력은 가지고 있다. Microsoft 나 다른 ISV와 긴밀히 협력하면서 (Hyper -Threading 기술을) 투입하는 적절한 타이밍을 도모 "

 Intel의 아난드 찬드라 세커 (Anand Chandrasekher) 씨 (Vice president, Intel Architecture Group, director, Intel Architecture Marketing Group)는 IDF의 그룹 인터뷰에서 이같이 답했다. 이렇게, Intel의 멀티 스레드 프로세서 기술 "Hyper-Threading"는 데스크탑 / 모바일 영역에 들어오는 것이다. 그것도 그리 멀지 않은 장래에. Pentium II에 SSE 명령어가 더해져 Pentium III 된 것처럼, Pentium 4 Hyper-Threading이 플러스 된 확장판 Pentium 4 Northwood (0.13μm 판 Pentium 4)가 등장 할 가능성이 높다.

 그러면 이 확장판 Pentium 4는 어떻게 될까? Intel에 따르면, OS는 CPUID를 보고 Hyper-Threading을 구현한 CPU 여부를 판단한다. 이것은 Hyper-Threading 지원의 수정판을 한 코드가 필요하기 때문이다. Hyper-Threading 지원 CPU 인 경우에는 기존의 듀얼 프로세서 시스템의 경우와 마찬가지로 OS가 스레드를 각 논리적 CPU에 할당한다.

 Intel에 따르면, 멀티 스레드 애플리케이션 및 멀티 태스킹 워크로드에서 20 % 이상의 성능 향상을 가져올 것이다. 하나의 CPU에서 듀얼 프로세서 구성과 비슷한 형태로 성능이 향상 되니까 이것은 맛있는 이야기이다. 일반 PC 사용자에게도 백그라운드 작업이 실행되고 있는 동안도 성능이 떨어지지 않는 장점이있다.

 그러나 이것은 아직 1 세대 Hyper-Threading 으로 Intel의 목표 "스레드 수준 병렬화 (TLP : Thread-Level Parallelism)"의 진가가 발휘되는 것은 그 대상이 Pentium 5와 6에서 될 것이다. 라고 하는 것은, 지금의 Hyper-Threading는 단일 스레드 응용 프로그램의 성능 자체는 향상하지 않기 때문에 PC는 최종 사용자의 체감 성능이 크게 개선되지 않기 때문이다. 하지만 미래의 Intel CPU는 단일 스레드 응용 프로그램도 TLP 가속화 할 것으로 보인다. 사실, Intel은 작년쯤에서 이를 위한 연구 결과를 발표하기 시작했다.

(펜티엄4 이후 네할렘,샌디브릿지,아이비브릿지,하스웰 에서 쓰고 있는 하이퍼쓰레딩 입니다. 아래 내용은 이전에 등록한 기사인 Tejas에서 도립하려던 기술들 입니다. Tejas가 취소되면서 볼수 없죠)



투기 (Spectulative) 스레드 실행

 그러면 단일 스레드 응용 프로그램을 어떻게 멀티 스레딩 가속화 하는 것인가. Intel은 IDF에서 이를 위한 방법의 일례에 대한 설명도 실시했다. Intel의 Justin Rattner 씨 (Intel Fellow, Director of Microprocessor ​​Research Labs)에 따르면,투기(Speculative) 스레드를 실행하여 단일 스레드 응용 프로그램의 성능이 획기적으로 향상 된다고 한다.

 Intel은 이 연구를 얼마 전부터 행하고 있어 "유사 멀티 스레딩 (Pseudo Multithreading)"라고 부르는 기술 논문을 일부 발표하고 있다고 한다. 이것은 단일 스레드 응용 프로그램을 스레드로 나누어 병렬로 실행하는 것이다. IDF에서는 그 중 "Speculative Pre-computation" 이라는 기술에 대한 설명이 이루어졌다.

 Speculative Pre-computation에서는 투기 쓰레드를 사용하여 메모리 레이턴시를 은폐한다. 무슨 말인가 하면, 프로그램이 데이터 로드 대기에서 스톨한 경우나 스톨 할 것 같은 로드의 앞에 기본 스레드와 다른 스레드를 생성 해 버린다. 그리고 그 스레드에서 주 스레드가 스톨하고 있는 동안, 먼저 코드를 계속적 실행해 버리게 된다.

 이번 설명된 기법의 경우 다른 스레드 분은 삭제해 버리지만, 그래도 본론의 주 스레드가 로드 명령을 실행할 때, L1 캐시에 이미 데이터가 들어있는 셈이다. 즉, 반드시 L1 데이터 캐시에 히트하면서 L1 캐시 미스가 없어지는 셈이다.

 지금의 CPU의 경우 성능을 떨어 뜨리는 가장 큰 원인은 메모리에서 로드 지연이다. 그것은 CPU 코어 클럭이 빨라지고 메모리와 격차가 벌어져 버렸기 때문이다. 메인 메모리는 물론, L2 캐시도 지금은 대기 시간이 길다. 따라서 로드 시간을 은폐하기만 하면 성능이 훨씬 상승한다.

 이 경우, 투기 쓰레딩은 프리 페치로 사용되고 있는 셈이다. 그러면 이 Speculative Pre-computation은 어디가 하드웨어 프리 페치보다 좋은 것인가. 그것은 하드웨어 프리 페치라도 메모리 액세스 패턴을 예측할 수 있는 경우에만 유효했기 때문이다. 이 방법이라면 기존의 프리 페치에서 주울 수 없었던 로드를 포함한 완벽한 프리 페치 할수 있다고 한다. Rattner 씨에 따르면, 99 %의 캐시 미스가 없어진다. 거의 이상적인 메모리 머신이 된다고 한다.





   
CPU가 자동으로 멀티 스레드로 만들어 버리는

 Rattner 씨에 따르면,이 연구는 Itanium에서 컴파일러를 완화해 행했다고 한다. 그러나 Intel의 목표는 이러한 투기 멀티 쓰레딩을 CPU의 하드웨어 (또는 CPU에 씌운 소프트웨어 레이어)에서 컨트롤하는 것이라고 생각된다. 사실, Rattner 씨는 질의 응답에서 " Dynamic Thread Creation " 이라고 부르는 미래의 확장을 시사했다. 이것은 CPU 측이 스레드에 분해 할 수 있는 블록을 찾아 자동으로 투기 쓰레드를 생성, 실행 해 버리는 방법과 같다. 이에 대해서는 Intel의 MRL의 논문 "Better Exploration of Region-Level Value Locality with Integrated Computation Reuse and Value Prediction"(Youfeng Wu & Dong-Yuan Chen & Jesse Fang, July 2001) 등에서 이미 구체적으로 언급 했다.

 동적 쓰레드 생성을 사용하면 애플리케이션 측은 투기 멀티 쓰레드를 의식 할 필요가 없다. 응용 프로그램은 단일 스레드의 노력으로 달리고 있는데, 자동으로 멀티 스레드로 분해되어 병렬로 실행되어 버리기 때문이다. 즉, 지금까지 사용하고 있던 단일 스레드 응용 프로그램이 CPU를 바꾼 것만으로 다중 스레드 되어 버린다.



 그러면 구체적으로 자동 생성된 스레드에서 어떻게 프로그램 실행 속도 하는가. 이에 대해서는 Intel의 Fred Pollack 씨 (Intel Fellow, Director, Intel Architecture Strategic Planning, Intel Architecture Group)가 PACT 2000에서 행한 프레젠테이션 "New Challenges in M​​icroarchitecture and Compiler Design"에서 설명하고 있다.

 이에 따르면, 예를 들어 call에서 건너뛰어 먼저 실행을 하는 때에 다른 스레드에서 call로 부터 먼저 명령어 스트림을 실행한다. 또는 루프의 몸을 각각 다른 스레드로 나누어 병렬로 실행 해 버린다. 또는 명령 스트림의 끝 부분을 다른 스레드에서 먼저 실행 해 버리는 루프에서 빠진 뒤의 코드를, 루프를 실행하는 동안 실행해 버린다. 이를 도식하면 그림과 같이된다. 즉, 스레드로 분해하여 병렬로 실행해 버리는 것으로, 프로그램 실행의 처리량을 올리려는 것이다.

 아까 Speculative Pre-computation에서는 투기 쓰레드의 결과는 폐기해 버리고 있었지만, 투기 쓰레드의 결과가 고침 여부를 체크 할 수 있는 스레드 간의 커뮤니케이션의 구조를 만들면, 폐기하는건 없게 된다.


새로운 패러다임을 맞이한 CPU 아키텍처

 Intel에 따르면, 이러한 투기 멀티 쓰레딩에서 CPU 병렬 처리는 새로운 단계에 오른다. 지금까지 보다 병렬화가 광역 코드에서 행해진다. 지금까지의 지침 수준 병렬화가 아니라 코드 블록 수준에서 병렬 처리된다고 한다. CPU의 실행 유닛이 지금까지 보다 훨씬 효율적으로 사용하게 되면 성능은 크게 향상된다.

 하지만, 투기 멀티 스레딩에는 과제도 많다. 예를 들어, 데이터 의존도(종송석)가 문제가 된다. 따라서 Intel은 밸류 프레딕션 이라는 방법도 조합할 것이다. 지금까지의 CPU 프레딕션은 조건 분기만 예측했지만 앞으로는 데이터 값까지 예측하고 만다. 이 밸류 프레딕션은 CPU 아키텍처 개발의 최전선의 트렌드 기법 답게 다양한 논문이 나오고있다. 정직하게 말해​​, 초심자 에게는 힘겨운 아키텍트들의 내부세계 논의 단계다. 다. 그냥 Pollack 씨의 프레젠테이션을 보면 80 ~ 90%의 예측이 가능하다는 연구 결과가 나왔다. 어쨌든, 이만큼 연구가 활발해져 가면 구현되는 것도 시간 문제일 것이다.

 그래서, CPU 기술은 분명히 새로운 단계를 맞이 것 같다. CPU 아키텍처는 각각 다음과 같이 변화 할 가능성이 높다.

인스트럭션 레벨 → 스레드 수준
· 투기 실행 → 투기 쓰레딩
브랜치 프레딕션 → 밸류 프레딕션

 즉, 패러다임이 바뀌려 하고 있다. 그리고 이번에 새로운 패러다임에 제일 먼저 도착을 완수하는 것은, Intel이 될 것 같다.



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



[아키텍처] Core Microarchitecture"속도의 비밀은 "CISC의 아름다움"



[아키텍처] 환경 조건을 이용하여 성능을 끌어 올리는 터보 모드(전압 레귤레이터 전압 조절기)


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


[아키텍처] Intel 차세대 하이퍼 쓰레딩 (Hyper-Threading) 기술 공개

(지금쓰고 있는 하이퍼 쓰레딩 보다 더 확장한)




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



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



[분석정보] 슈퍼 스칼라에 의한 고속화와 x86의 문제점은



[분석정보] 명령의 실행 순서를 바꿔 고속화 하는 아웃 오브 오



[분석정보] x86을 고속화하는 조커기술 명령변환 구조



[분석정보] CPU와 메모리의 속도 차이를 해소하는 캐시의 기초지식



[분석정보] 캐쉬 구현 방식으로 보는 AMD와 인텔이 처한 상황



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