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

[고전 2003.10.18] 모든 CPU는 멀티 스레드로, 명확하게 된 CPU의 방향

tware 2005. 11. 10. 08:30

 

MPF의 발표는 멀티 스레딩에 집중


 CPU 업계의 트렌드는 명확하게 멀티 스레딩이다. 즉, 여러 스레드 (명령 스트림)를 동시에 처리하는 '스레드 수준 병렬 처리 (TLP : Thread-Level Parallelism) "로 향하고있다.

 이번 Microprocessor ​​Forum (MPF)에서 각 발표자가 잇달아 멀티 스레딩 기술을 발표했다. 그것도 Power5 같은 서버 전용의 대형 CPU뿐만 아니라 MIPS Technologies 및 기타 임베디드 CPU에서 멀티 스레딩을 내거는 상황. Sun Microsystems의 Greg P​​apadopoulos 씨 (CTO, EVP)의 기조 강연에서 출발, IBM의 "Power5"(개요는 8 월 hotchips에서 발표 된), Sun Microsystems의 "UltraSPARC IV"후지쯔의 "SPARC64 VI" MIPS의 "MIPS MT ASE"고 메이저 발표의 대부분은 TLP이었다. 따라서 모든 범위의 CPU가 멀티 스레드로 향해가는 것처럼 보인다.

 각사가 발표 한 것은 (1) Hyper-Threading과 같이 하나의 CPU 코어에서 여러 스레드를 동시에 처리하는 '동시 멀티 스레딩 (Simultaneous Multithreading : SMT) "또는 (2) 복수의 CPU 코어를 1 개의 CPU에 탑재하고 듀얼 프로세서 계열 멀티 스레딩을 실현하는 "멀티 코어 (Multi-Core)"또는 (3) SMT와 멀티 코어를 모두 맞춘 기술. (1) SMT (2) 멀티 코어는 상대적 기술 이라기 보다는, (3)의 두 방식의 채용으로 향해있는 것처럼 보인다. 예를 들어, IBM의 Power5는 듀얼 코어다. Power5 각각의 CPU 코어를 듀얼 스레드 실행 SMT 코어하여 2 × 2 = 4 스레드의 병렬 실행을 가능하게 한다. 소프트웨어 측면에서 보면, 1 칩으로 4way 멀티 프로세서로 보이는 셈이다.

 이러한 움직임은 MPF에서만 볼 수있는 것은 아니다. MPF의 1 개월 전의 Intel Developer Forum (IDF)에서는 Intel이 모든 CPU 라인업을 멀티 코어 채용에 조준을 밝혔다. Intel은 이전에 전체 CPU 라인에 SMT의 Hyper-Threading을 도입 할 것을 제시하고있다. 따라서 Itanium 계도 Xeon 계도 Pentium 계도 Pentium M 계를 포함한 모든 Intel CPU가 SMT + 멀티 코어로 향하게된다. (아이테니엄은 펜티엄4의 하이퍼스레딩(SMT)과 달리 몬테시토에서 동시 멀티스레딩이 (SMT) 아닌 coarse-grained 멀티스레딩 + 듀얼코어. 각각의 코어는 2개의 스레드를 동시에 다룰 수 있지만, 실행은 한번에 하나의 스레드만 실행 합니다.각 코어가 2개의 스레드를 동시에 실행 할 수는 없습니다. 스레드 상태를 2개 가지기 때문에 하나의 스레드가 지연되면 곧 바로 다른 스레드를 실행 합니다. 동시가 아니더라도 멀티 스레딩이 없을 때 보다는 당연히 멀티 성능이 올라 갑니다. 또 이렇게 되는 근본 원인은 아이테니엄의 경우는 VLWI  아키텍처로 애초에  동시에 실행가능한 여러 명령이 하나의 팩으로 들어오기 때문에 (컴파일 되었기 때문에, x86 처럼 내부 하드웨어 스케쥴러에 의한 명령 정렬이 아닌, 컴파일러에 의한 명령 정렬. 물론 x86의 경우도 컴파일러에 따라서 성능 차이는 존재 합니다.) SMT 처럼 다 여러 명령을 동시에 실행할 수 있는 CPU에서 동시에 실행하지 못해서 비어있는 파이프에는 다른 스레드를  동시에 실행해서 성능을 높이는 방식을 근본적으로 쓰기가 어렵기 때문 입니다.)

 이 상태로 가면 3 ~ 4 년 되면 PC에서 서버까지 범위의 CPU는 SMT + 멀티 코어되어 각 CPU가 2 ~ 16 정도의 스레드를 병렬 처리 할 수​​ TLP 아키텍처로 전환 해 버리는 것이다. 또한 10여 년 지나면 CPU라는 것은 8 ~ 수십 개의 CPU 코어가 들어간 CPU 코어어레이 처럼 되어 버릴지도 모른다. 또한 임베디드 디바이스에 SMT 또는 SMT + 멀티 코어가 보통으로 되어 있을지도 모른다. 간단히 말하면, 어떤 CPU도 지금까지의 듀얼 / 멀티 프로세서 시스템 수준의 성능을 갖게 된다는 것이다.

 

 

 

Power5는 듀얼코어+ 듀얼 쓰레드

 

 

 

Power5의 SMT

 

 

 

CPU가 TLP로 향하는 것

 CPU 설계자들이 TLP로 달리는건 명확한 이유가 있다. 그것은 CPU 성능을 늘리는 것은 그것이 가장 빠른길 이기 때문이다.

 CPU의 성능은 기본적으로 동작 주파수 × IPC (instruction per cycle : 1 사이클에서 실행할 수있는 명령 수)로 결정 된다. 따라서 주파수 이상으로 성능을 향상 시키는건 IPC 향상을 한다. 즉, 1 사이클에 얼마나 효율적으로 많은 명령을 실행 하느냐에 달려있다.

 IPC를 향상시키기 위해 많은 연산 유닛을 준비해 놓고 병렬로 실행할 수있는 명령을 추출하여 정렬 실행하면 된다. 기존 CPU의 성능 향상은 동적 (CPU내부) / 정적의 (컴파일러) 차이는 있어도 이러한 명령어 수준 병렬 처리 (Instruction-Level Parallelism : ILP)에서 행해왔다. Pentium 4도 Athlon 64도 구현 방식은 달라도 기본적으로 이러한 접근 방식을 취하고 있다.

 그러나 여기에는 한계가 있다. 하나의 스레드에서 병렬성을 추출하는 한, 명령 간의 의존 관계 등을 위해 어느 정도 이상의 병렬화가 어렵기 때문이다. 일반적으로 동적으로 (CPU 코어 내부에서)  병렬화한 3 명령 / 사이클이 (클럭당 3명령 실행 = 3 IPC) 벽이라고 알려져 있었다. (슈퍼스칼라 아키텍처로 IPC를 높여도 명령 종속성으로 동시에 여러 명령을 실행하기가 어렵고, 명령 종속성을 더 깨기위해 아웃 오브 오더(비순차 실행)로 명령을 병렬로(여러명령 동시 실행) 실행하려고 해도 그 한계가 3 IPC 라고 말하는 것) 즉, 어느정도 많은 실행 유닛을 갖추고도 평균 3 명령 이상은 병렬 실행 할 수 없다는 것이다. 동적 컴파일러를 사용하여 동적으로 높은 병렬성 (5 명령 /사이클?)를 추출 할 수 Transmeta의 Efficeon은 예외적 인 존재로, 다른 구조는 한계에 접근하고 있다.

 물론, 기술적으로 아직 병렬화의 여지가 있을텐데, 그러기 위해서는 엄청난 트랜지스터 지출에 걸맞는 성능 향상을 얻을 수 있는지에 의문이있다. 예를 들어, 트랜지스터 수를 두 배로 늘려 성능이 20 % 밖에 오르지 않는다면 낭비가 많아지게 된다.

 그러나 여기에는 돌파구가 있다. 두 개 이상의 스레드에서 동시에 실행할 수있는 명령을 거둔다면 더 많은 명령을 병렬로 수행 할 수있는 가능성이 있기 때문이다. 즉, 하나의 스레드의 명령을 무리하게 3 명령 이상 병렬로 실행하려고 하는 것보다 종속성 얇은 두 개의 스레드에서 3 명령 씩 꺼내 병렬로 실행하는 것이 훨씬 쉽다는 것이다. (2개의 스레드나 2개의 태스크라면 2 작업이 서로간에 종속성이 훨신 작겠죠. 하나의 작업에서 아주 가끔 3명령이 동시에 실행되고, 종속성 때문에 평균적 1~2명령만 동시에 실행 할 수 있다면, 1코어가 SMT로 2개의 작업의 각각의 명령을 동시에 실행한다면, 동시 3명령 실행을 쉽게 할 수 있겠죠. 물론 아웃 오브 오더가 아니어도 그냥 슈퍼스칼라 라면 SMT를 구현할 수 있습니다. 그냥 슈퍼스칼라에 SMT를 넣어서 각각의 쓰레드마다의 명령을 동시에 실행 할 수 있죠. 1세대 아톰이  아웃 오브 오더가 없는 그냥 슈퍼 스칼라에 SMT를 구현한 제품 입니다.) 또한 트랜지스터 당 성능도 높다. "Pentium 4와 같은 아웃 오브 오더에 다중 실행 유닛 시스템의 경우 스레드 병렬 처리를 추가하는 것은 큰 문제가 없다. 5% 정도로 매우 작은 개선을 다이에 추가하여 2 스레드를 달리게 할 수 있게 되었다. 그래서 2 ~ 30%의 성능 향상은 효율이 좋다 "고 Intel의 Patrick P. Gelsinger (팻 겔싱어) CTO 겸 수석 부사장 (CTO & Senior Vice President)은 지난해 인터뷰에서 대답했다.

 

 

 

그림 추가.

그림으로 보면 이해가 더 쉽게 되겠죠? 노란색,녹색, 푸른색, 노란색은 각각의 스레드

 

1. 90년대 중반 이후 CPU들이 사용하고 있는 슈퍼스칼라 아키텍처 (여러 명령을 동시 실행 가능한 CPU. 여기에 아웃 오브 오더도 들어가 있겠죠.). : 때로는 CPU가 동시에 실행 가능한 최대치를 실행할 때도 있지만, 그렇지 못할 때도 있죠. CPU를 효율적으로 만든다고 노력을 해도 원래 이렇습니다. (슈퍼 스칼라에서는 (아웃 오브 오더가 있던지 없던지) 2개의 스레드를 실행을 못하냐? 그건 아닙니다. 단지 동시에 다룰 수 없고, 동시에 실행을 못할 뿐 입니다. 그러니까 싱글코어 CPU에서도 멀티 태스킹이 되죠. 번갈아 가면서 실행을 합니다. 다만 스레드 상태는 1개 뿐이기 때문에 비효율적 입니다. 어떤 경우에는 차라리 1개씩 처리가 끝나면 처리하는 것이 더 빠를지도....  SMT가 아닌 멀티 스레드의 경우 역시 번갈아 가면서 실행을 하지만, 스레드 상태를 여러개 가지고 있기 때문에, 즉시 번갈아 실행이 가능 합니다. 아이테니엄 같은 경우가 대표적.)

 

2.멀티프로세싱 (멀티 코어) : 코어가 2개니까 각 코어에 1개씩 총 2개의 스레드를 동시에 실행 합니다. 코어가 2개라서 총 2스레드를 실행하지만, 역시 1번과 같이 각각의 코어는 각각의 스레드를 CPU 피크 능력만큼 실행하지는 못합니다.

 

3. SMT (하이퍼스레딩) : 코어는 1개지만, 2스레드의 명령을 1코어에서 동시에 혼합해서 실행이 가능합니다. 2스레드의 명령을 실행하기 때문에, 100% 까지는 아니지만 최대한 명령을 실행 합니다. 1스레드만 실행가능 하다면 1번과 같이 중간중간 실행하지 노는 부분이 생기지만, 2스레드를 실행하기 때문에 노는 부분조차 2스레드의 명령을 실행 합니다.

 

4. 멀티코어 + 하이퍼스레딩 : 2번과 3번의 결합으로 4개의 스레드를 동시에 실행 합니다.

 

다른 그림으로도 살펴보면..

 

 

역시 그림 추가

 

또 다른 하이퍼 스레딩 (SMT)의 설명인데, 노란색 막대와 파란색 막대가 각각의 스레드죠. 막대가 길면 길수록 슈퍼스칼라 CPU에서 최대 병렬로(여려 명령 동시에) 명령을 실행하는 부분이고, 짧으면 짧을 수록 적게 실행하는 부분 입니다.  SMT (하이퍼스레딩)가 아니면 동시에 작업을 실행한다면 한번씩 번갈아 가면서 실행하게 됩니다 (일반 멀티 스레딩도 마찬가지 입니다. 동시에 실행을 못 합니다. 다만 그에 따른 레지스터를 2중화로 가지고 있고, 스레드 상태를 가지기 때문에  그냥 CPU에 비해 스레드 전환이 매우 빠릅니다.). SMT 동시 멀티 스레딩은 동시에 2스레드를 실행하기 때문에 가장 아래처럼 2개의 스레드가 동시에 실행이 됩니다.

 

 

메모리 레이턴시의 은폐에도 효과가 있다

 

 

 

SUN이 제시한 미래 컴퓨팅의 모습

(나이아가라 역시 코어당 4스레드 멀티 스레딩을 지원하지만 SMT가 아닌 fine-grained 멀티 스레딩으로, 각 코어는 4 스레드를 동시가 아닌 번갈아 가면서 실행 합니다. 4개의 스레드 상태를 갖기 때문에, 계속 각각의 스레드를 즉시 즉시 번갈아 가면서 실행하기 때문에 각각의 스레드의 지연시간이 문제가 되지 않습니다. SMT가 아닌 멀티스레딩 코어는 슈퍼스칼라가 아니어도 가능합니다. SMT는 동시에 2스레드 이상을 실행시키기 때문에 반드시 슈퍼스칼라 아키텍처여야 합니다.)

 

 

Sun 다중 멀티 쓰레드 코어가 활성화

 

TLP 화는 CPU 성능 향상의 가장 큰 병목이되고 있는 메모리 레이턴시 문제의 해결도된다. CPU의 처리 성능과 DRAM 속도의 간격은 벌어지는 방향으로,이에 CPU가 메인 메모리에 액세스하면 엄청난 주기를 기다려야 된다. 즉, CPU 내부에서 어느정도 빨리 처리 할 수​​ 있지만 일단 메모리에 가버리면,로드 대기에 많은 시간이 낭비되어 버리는 셈이다.

 "가장 큰 문제는 메모리 지연의 제약을 넘어 IPC 증가를 계속 해야 하는 것이다. 그러나 TLP는 메모리 지연 시간을 허용 할 수있게 된다. 예를 들어, 10 스레드를 동시에 실행할 수 있다면, 하나의 스레드가 캐시 미스 에서 기다리는 동안 다른 9 스레드를 실행하는 것을 계속할 수있다. 즉, 사실상 메모리 레이턴시를 은폐 하고 있다 "고 Intel의 Gelsinger 씨는 설명한다.

 실제로 많은 CPU 개발자가 TLP의 가장 큰 효용은 메모리 레이턴시의 은폐라고 지적한다. 예를 들어, VLIW적인 아키텍처의 정적 (컴파일러에 의한) ILP 기술 IA-64 프로세서도 TLP를 도입하면 메모리 레이턴시를 은폐함으로써 성능을 올릴 수 있다고 말한다. 메모리 레이턴시를 은폐 할 수 있다면, 메모리 지연 시간을 무리하게 줄이려고 하지 않고도, 메모리 대역을 넓혀 가면 성능이 나름대로 오르게 된다.

 또한 Sun은 멀티 스레드로 향하는 이유는 네트워크 컴퓨팅 워크로드는 다중 스레드 된 것을 꼽는다.

 


미래는 TLP가 기준으로?

 이렇게 보면 CPU의 고속화 기술 트렌드가 명령 기반에서 스레드 기반으로 옮겨 가고 있는 이유를 잘 알 수 있다. 이제 CPU 벤더는 1 사이클에 얼마나 많은 스레드를 효율적으로 처리 할 수​​ 있는지 경쟁을 시작했다.

 "우리는 CPU 개발에 초점을 TLP 기술로 옮겼다. 미래에 우리는 IPC가 아닌 'TPC (Threads per clock)', 즉 1 사이클에서 처리 할 수​​있는 스레드 수에서 CPU의 효율성을 측정하게 된다는 것 "(Gelsinger 씨)

 그래서, 이번 MPF는 TLP 노력 일색이었다. Sun의 Papadopoulos 씨는 높은 처리량 컴퓨팅을 칩 레벨에서 실현하려면 "Multiple Multithreaded Core"즉 SMT + 멀티 코어를 필요로 강연. Multiple Multithreaded Core에서 칩의 효율을 올리고 애플리케이션 성능을 비약적으로 향상시킨 다고 설명했다. Sun의 UltraSPARC IV (Jaguar)도 후지쯔 SPARC64 VI도 듀얼 코어 구성으로 향하고 있다.

 또한 IBM은 Power5에서 SMT + 듀얼 코어의 구현을 소개. 각 CPU 코어마다 "Retune Stack", "Program Counter", "Instruction Buffer", "Group Completion", "Store Queue"를 2 중화하여 두 개의 스레드를 병렬로 제어 할 수 있도록했다고 설명했다. IBM이 Power4를 스케일 다운 한 PowerPC 970 (PowerPC G5)이 Macintosh에 있었다는 것을 생각하면, 차세대 IBM PowerPC가 SMT 구현으로 향할 가능성이 높다. 즉, Macintosh도 2 ~ 3 년 이내에는 Hyper-Threading에 상당하는 SMT 기능을 갖추게 될 가능성은 높다.

 그래서, CPU는 TLP 기술로 한꺼번에 몰아치며 움직이기 시작했다.

 

 

pc watch

 

 

[고전 2002.09.12] Hyper-Threading Technology를 지원하는 HTT Pentium 4 3.06GHz

 

 

[02년11월14일]Pentium 4 3.06GHz 빠른 리뷰 ~ Hyper-Threading의 효과는 얼마나?

 

 

[고전 2003.03.10] 하이퍼 쓰레딩 대응 게임 엔진이 등장 GDC 2003

 

 

[분석정보] TOP500 슈퍼컴퓨터 순위 2013년 6월

 

 

[분석정보] 4만 8000개의 제온파이로 중국 톈허2 세계에서 가장 빠른 슈퍼 컴퓨터

 

 

[제품뉴스] Intel Xeon Phi 새로운 폼 팩터 채용 포함 5모델 추가



[정보분석] 인텔 60코어 매니코어 "Xeon Phi" 정식발표

 

 

[분석정보] 인텔 슈퍼컴퓨터용 가속기 Xeon Phi 5110P 발표

 

 

[분석정보] Intel, HPC 전용 보조 프로세서 Xeon Phi 2013년 1월부터 일반용으로 출시

 

 

[분석정보] IDF 2012에서 주목한 한가지, 매니 코어 "Knights Corner"

 

 

[정보분석] 엔비디아 세계 최다 트렌지스터 칩 GK 110 공개

 

 

[정보분석] IDF 2011 Justin Rattner 기조연설 매니코어 시대가 다가옴 1/2부

 

 

[정보분석] IDF 2011 Justin Rattner 기조연설 매니코어 시대가 다가옴 2/2부

 

 

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

 

 

[분석정보] Intel은 Larrabee 계획과 아키텍처를 어떻게 바꾸나?

 

 

[분석정보] 다시 처음부터 시작된 라라비 무엇이 문제였나?

 

 

[분석정보] 라라비 (Larrabee)의 비장의 카드 공유 가상 메모리

 

 

[분석정보] 인텔의 스칼라 CPU + 라라비의 이기종 CPU 비전

 

 

[분석정보] Larrabee는 SIMD와 MIMD의 균형 - Intel CTO가 말한다.

 

 

[정보분석](암달의 법칙) 2010년대 100 코어 CPU 시대를 향해서 달리는 CPU 제조사

 

 

[분석정보] GDC 2009 드디어 소프트 개발자 정보도 나온 "Larrabee"

 

 

[분석정보] 그래픽 및 DirectX 로드맵을 정리

 

 

[정보분석] Intel 힐스보로가 개발하는 CPU 아키텍처의 방향성

 

 

[정보분석] 팀스위니 미래의 게임 개발 기술. 소프트웨어 렌더링으로 회귀

 

 

[분석정보] 정식 발표된 라라비(Larrabee) 아키텍처

 

 

[아키텍처] 베일을 벗은 인텔 CPU & GPU 하이브리드 라라비(Larrabee)

 

 

[정보분석] 암달의 법칙(Amdahl's law)을 둘러싼 Intel과 AMD의 싸움

 

 

[정보분석] Penryn의 1.5 배 CPU 코어를 가지는 차세대 CPU "Nehalem"

 

 


[01년01월11일] Intel의 0.13μm 공정 P860/P1260에서 CPU는 어떻게 바뀌나

 


[분석정보] IBM이 기술의 집대성 괴물 CPU "Power8"발표


 

 

[고전 2004.09.06] intel의 듀얼 코어 CPU 1번타자 Montecito

 

 

[분석정보] 멀티 코어 + 멀티 스레드 + 동적 스케줄링으로 향하는 IA-64