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

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

tware 2005. 10. 10. 01:30

 

 

4 스레드를 병렬 처리?


 지난달 30일 칼럼 "특종! Intel이 새로운 아키텍처의 CPU [Nehalem]을 2004년에 투입" 으로 차세대 CPU [Nehalem]의 정보가 실려 있다고 소개했던 Intel의 Web 사이트의 페이지에 접근할 수 없게됐다. 삭제되어 버렸을지도 모른다. Nehalem 뉴스는 이 칼럼으로 부터 전세계의 CPU 워치계 사이트를 뛰어 다니고 있기에, 과연 Intel도 깨달은 것이다.

 

 다만 실제로는 Intel의 사이트에서 (잘못해서) 밝혀진 정보는 코드 네임 이외는 대단한 것은 없다. 핵심에 접근한 것은 2004년에 등장하는 풀 스크래치 CPU로 된다는 정도다. 그러나, Intel의 지금까지의 CPU 흐름을 보면 Nehalem과 "Tejas (테자스 / 테하스)"의 대략적인 모양은 떠오른다. 지난 칼럼 "2세대에 병존하는 Intel의 차세대 CPU 군 "Nehalem" 과 "Tejas" 에서는 이러한 차세대 CPU의 다이 사이즈와 트랜지스터 수를 추측했다. 이번에는 아키텍처를 추측해 보고 싶다. (이 초기 네할렘과 테자스등 넷버스트 확장 아키텍처는 모두 취소 됐습니다. 실제 출시된 네할렘은 이름만 재활용 입니다.)

 

 

[그림 : CPU와 트랜지스터 수의 관계]

 

 계산 상 Nehalem의 트랜지스터 수는 1억 6,000만 이상이 된다. Intel은 이 트랜지스터를 물론  CPU의 성능 향상을 위해 사용한다. 그럼 어떻게 Intel은 Nehalem의 성능을 올리는 것인가. 그것은 명확하다. Hyper-Threading 기술을 확장하는 것이다.

 

 아마도 Nehalem에서는 4개의 스레드를 병렬로 처리 할 수​​ 있는 CPU가 될 것이다. 즉, 소프트웨어에서 가상으로 4CPU가 보이는 프로세서가 될 것이다. 물론, 4 스레드를 병렬로 처리하기 위해서는, CPU의 리소스도 나름대로 확장해야 한다. 적어도 10개 이상의 실행 유닛은 필요할 것이며, CPU 내부 명령 (Micro-OPs) 대역과 x86 명령어 인출 대역폭의 확장도 필요하다. 또한 캐시도 물론 늘려야 한다. 그러나 Nehalem 세대라면 4스레드 수준도 도달 할 수 있는 것이다. 뭐라 말해도 Pentium 4 4개 분량의 트랜지스터를 하나의 칩에 탑재하기 때문이다.

 

 

Hyper-Threading이 Intel의 다음의 핵심 기술

 

 Pentium 4 이후 Intel의 IA-32 CPU의 장기 전략은 명확하게 Hyper-Threading에 있다. Hyper-Threading과 같은 여러 스레드의 명령에서 병렬성을 추출하는 "스레드 수준 병렬화 (TLP : Thread-Level Parallelism)" 이야말로 IA-32 CPU의 성능을 계속 뻗게할 수 있는 키 기술이라고 Intel 설계자들이 생각하고 있기 때문이다. 예를 들면, Intel의 연구 부문을 이끄는 패트릭 겔싱어 CTO 겸 부사장은 반년 정도 전에 인터뷰 할 때 다음과 같이 말했다.

 

 "미래에 우리는 "IPC (instruction per cycle : 1사이클로 실행할 수 있는 명령 수)" 대신 "TPC (Threads per clock) ", 즉 1 사이클에서 처리 할 수​​있는 스레드로 CPU의 효율성을 측정하게된다는 것이다. 지금의 PC 용 CPU는 1 스레드 / 클럭으로만 수행 할 수 밖에 없지만, Hyper-Threading는 2 스레드를 병렬로 실행할 수 있게 된다. 그위에 미래는 더욱 많은 스레드를 동시에 실행할 수 있게 된다고. 이것은 꼭 CPU 실행 유닛의 지금까지의 변화와 비슷하다 .486 때에는 1개의 명령 실행 파이프 밖에 없었던 것이, Pentium에서 2개로 되고, Pentium Pro에서 7개 ( x86 명령의 디코딩은 3명령 / 클럭)가 된 것과 동일한 진화다 "

 

 즉, 지금까지의 CPU가 슈퍼 스칼라화에 의해 최대 "1 IPC (486)"에서 "2 IPC (Pentium)", 그리고 "3 IPC (Pentium Pro)"로 진화해온 것과 같이, 앞으로의 Intel CPU는 "1 TPC (Pentium III)"에서 "2 TPC (Pentium 4)", 그리고 "4 TPC (Nehalem?)"로 진화한다는 것이다. 이것은 알기 쉬운 스토리다.

 

 

3 IPC의 벽을 깰 수 있는 기술

 

 Intel이 "TPC"를 올리는 방향으로 돌아선 것은 지금의 슈퍼 스칼라형의 접근 방식으로는 또

 IPC를 올리는 것은 어렵다고 생각하고 있기 때문이다. CPU 아키텍처의 발달은 항상 IPC 벽과의 싸움이었다. CISC 형 CPU 시대는 우선 0.5 IPC가 한계라고 말했다. 겔싱어씨가 아키텍트였던 Intel 486은 이 벽을 조금이지만 깼다(약 0.55 IPC). 그 시기, RISC는 1 IPC를 목표했다. 하지만 다음 단계에서는 CISC도 RISC도 슈퍼스칼라 아키텍처로 옮기며 2 IPC 이상을 목표로 하게 되었다.

 

 하지만 여기에서 다음의 벽이 보였다. Pentium Pro가 등장 할 때에는 IA-32 명령어 세트 아키텍처는 IPC를 피크로 3명령 / 사이클 이상으로 높일 수 없다고 말하기 시작한 것이다. 그 원인은 하나의 스레드에서 CPU의 하드웨어가 실시간으로 병렬 실행 가능한 명령을 추출하는 방법으로는 3 IPC 이상의 병렬 처리를 효율적으로 달성 할 수 없기 때문이라고 알려져 있었다.

 

 

[그림 : IPC와 CPU 아키텍처]

 

 Intel이 IA-64 아키텍처의 개발을 향한 것은 그 때문으로, IA-64 명령어 세트 아키텍처 자체를 바꿔 명령어 수준에서 병렬화 하는 "인스트럭션 레벨 패러렐리즘 (Instruction-Level Parallelism : ILP)"에서 5 ~ 6 IPC 또는 그 이상을 노리게 됐다. 한편, IA-32 CPU 개발팀 쪽은 별도의 솔루션으로 향했다. 그것이 "TLP (Thread-Level Parallelism)" 였다는 것이다.

 

 ILP는 컴파일러가 컴파일시에 병렬 실행할 수 있도록 명령을 정렬한다. 컴파일러는 시간이 지나며 병렬로 실행할 수 있는 명령을 추출하기 때문에 IPC를 6 근처까지 향상시킬 수 있다는 것이다. 6 IPC를 달성하면, 슈퍼 스칼라 CPU와 같은 클럭에서도 2배의 성능을 달성 할 수 있는 것이다.

 

 한편, TLP 기술은 CPU의 하드웨어가, 여러 스레드에 걸쳐 병렬 실행 가능한 명령을 추출하여 정렬시킨다. 1CPU 코어에서 이러한 TLP를 실현한 Hyper-Threading과 같은 기술은 일반적으로 "Simultaneous Multithreading (SMT)"로 불린다. 스레드를 걸치면 병렬성 추출은 훨씬 쉬워진다. 따라서 IPC를 3 이상으로 높일 수 있다는 논리다.

 

 

[그림 : CPU 아키텍처의 원리적인 차이]

 

 

향후 TPC를 높이는 방향으로 향하는 IA-32 CPU

 

 이러한 흐름에 있기 때문에 Intel의 IA-32 CPU는 앞으로 확실히 TPC를 높이는 방향으로 향한다. TPC를 높임으로써 결과적으로 IPC의 벽을 깬다. "나는 IPC를 향상이 계속 가능하다고  확신을 가지고 있다. x86 아키텍처에서는 IPC 더 이상 오르지 않는 논의는 지금까지 몇번이나 있었다" "그러나 실제로는 IPC는 계속 향상이 이어졌다. 앞으로도 개선은 계속" 이라고 겔싱어씨는 확신을 갖는다.

 

 현재 Pentium 4 아키텍처의 Hyper-Threading에서는 병렬 처리 스레드 수는 둘 이지만 이것은 단지 시작에 불과하다. Northwood는 2스레드의 병렬 실행조차 리소스와 대역폭이 부족한 것으로 보인다. 아마 다음 Tejas에서 이것은 개선되고 Hyper-Threading을 더 효율적으로 수행 할 수 있게 될 것이다. 그리고 Nehalem에서는 Hyper-Threading을 기반으로 CPU가 설계되어 4개의 스레드를 지원하는 것으로 예상된다. 아마도 Nehalem의 다음 세대에서는 8 쓰레드가 될 것이다.

 

 그러한 레벨이 되면, TLP를 강화하는 새로운 기술도 점점 투입되어 가는 것으로 예상된다. 예를 들면, Intel의 CPU 아키텍처 연구를 선도해온 Fred Pollack 씨 (Intel Fellow, Director, Intel Architecture Strategic Planning, Intel Architecture Group)는 2000년 10월 PACT 2000에서 진행한 프레젠테이션 "New Challenges in Microarchitecture and Compiler Design"에서 Intel의 "밸류 예측 (Value Prediction)" 기술을 연구하고 있음을 밝혔다. 지금까지의 CPU의 예측 기능은 조건 분기에서 분기가 성립하는지 여부를 예측하는 제어 흐름의 예측이었다. 그러나 이제는 연산 결과나 주소와 플래그의 예측을 해 버리는 밸류 예측, 즉 데이터 흐름 예측의 채용이 유효하다고 한다. 데이터의 값을 예측하여 스레드 간의 진정한 데이터 의존성을 제거하고, 더 효율적인 병렬 실행을 가능하게 한다는 것이다. 이 밖에, 스레드 실행 자체의 예측도 Intel은 연구하고 있는 것 같다.

 

 또한 Intel은 다음 단계에서는, TLP 기술을 응용한 새로운 접근 방식도 생각하고 있다. 예를 들면, TLP 기술을 사용하여 완전한 데이터 프리페치를 실현하려고 계획하고 있다.

 

 이것은 "Speculative Precomputation"라고 부르는 수법으로, 하나의 스레드에 대해 "투기 스레드"라 부르는 스레드 무리를 컴파일러로 생성한다. 이것은 본래의 스레드 중 로드 명령 (메모리에서 데이터를 읽어내는 명령)과 그것에 의존하는 명령만을 뽑은 스레드가 된다. 그리고 본 스레드와 병행으로 이 투기 스레드를 TLP 아키텍처에서 실행 시킨다. 즉, 투기 쓰레드가 시간이 걸리는 로드 명령을 미리 투기 실행해 버리는 것이다. 그러면 본래의 스레드가 로드 명령을 실행할 때에는 필요한 데이터가 전부 L1 캐시에 로드되어 있는 것이다. 즉, 메모리 대기 지연 시간은 제로가 될 것이다.

 

 이러한 기술은 하드웨어가 아닌 소프트웨어 계층에 구현 될 것으로 보인다. Intel은 따라서 런타임 계층을 개발하고 있는 것으로 생각된다. 즉, 미래의 Intel CPU는 TLP 화를 진행함과 동시에 지원하는 소프트웨어 레이어를 갖게 될 것으로 추측된다.

 

 

[고전 2002.01.31] Intel은 IA-32의 64bit 확장 "Yamhill"을 개발하는 이유

 

 

 

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

 

 

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

 

 

[고전 2003.02.27] Prescott,Tejas는 5GHz대, 65nm Nehalem은 10GHz이상

 

 

[고전 1997.10.15] Intel과 HP공동으로 "Merced"의 기초 기술을 발표 및 단신 모음

 

 

[분석정보] 차세대 CPU 힌트가 나왔다 IDF

 

 

[분석정보] 왜 인텔은 샌디브릿지에 AVX를 구현하는가?

 

 

[정보분석] 인텔의 2013년 CPU 하스웰로 이어지는 네할렘 개발 이야기

 

 

[정보분석] 같은 무렵에 시작된 Nehalem과 Larrabee와 Atom

 

 

[고전 2000.2.25] 인텔 사내경합이 낳은 Willamette 1.4GHz

 

 

[분석정보] IPC가 40%향상된 AMD의 차세대 CPU Zen과 2017년 까지의 로드맵

 

 

[분석정보] Bulldozer가 후퇴한 AMD의 로드맵의 의미

 

 

[분석정보] 시리얼이 되는 FSB와 메모리. CTO Gelsinger 인터뷰 2/2부

 

 

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

 

 

[분석정보] 5W 이하의 저전력 프로세서의 개발로 향하는 Intel

 

 

[고전 1997.10.31] Intel과 DEC 전격 제휴 MPU의 판도가 바뀐다