폴락의 법칙을 깨기 위해
먼저 어제의 칼럼 에서 이상한 점이 있었다. 폴락 씨의 법칙의 표에서 단위가 "mm"가 "제곱 mm"로 되어 있었다. 이것은 원래 원고는 mm 였지만, 편집부가 단위의 표기를 통일했을 때의 실수이다. Web에서 기사를 정정했지만 다시 한번 폴락의 법칙 표를 게재하면 다음과 같이된다. (예전에 올린 기사는 제곱mm로 계산해서 올림.통일을 위해 같은 표)
공정 | 예전 CPU | 면적 | 새로운 CPU | 면적 | 면적비 |
1.0μm | i386 | 6.5mm (42.25 ㎟) | i486 | 11.5mm (132.25 ㎟) | 3.1 |
0.7μm | i486 | 9.5mm (90.25 ㎟) | Pentium | 17mm (289 ㎟) | 3.2 |
0.5μm | Pentium | 12.2mm (148.84 ㎟) | Pentium Pro | 17.3mm (299.29 ㎟) | 2.1 |
0.18μm (180nm) | Pentium III | 10.3mm (106.09 ㎟) | Pentium 4 | 14.7mm (216.09 ㎟) | 2 |
면적 부분의 수치는 어떤 변의 mm 에 해당하는 것을 가르키기 때문에 실제 면적은 값을 제곱한 것이다. 예를 들어, Pentium Pro (P6)는 변이 약 17.3mm로 약 306 제곱 mm 다. 그래서 12.2mm 변의 Pentium (P54C)는 약 148 제곱 mm로 약 2.1 배의 면적이 되는 의미다.
그리고,이 법칙이 보여주는 것은, 지금까지 Intel은 트랜지스터와 다이 사이즈를 듬뿍 사용하여 성능을 높여 왔지만, 그것은 결코 효율적인 것은 아니라는 것이다. 그 결과, CPU의 발열은 핵 반응로에 접근해 버렸다.
그러면 어떻게 전력 소비 측면에서 볼 때 효율적인 아키텍처로 하는가? 지난 칼럼에서는 Intel의 팻 겔싱어 부사장 겸 CTO (Intel Architecture Group)가 설명한 솔루션 중 대용량 L2 캐시를 탑재하는 방향에 대해 설명했다. 그러나 그것만으로는 부족하다. 효율적인 프로세서는 다양한 기법을 혼합시킬 필요가 있다.
하나는 파이프 라인의 효율을 더 높이는 것이라고 겔싱어는 설명한다. 즉, 같은 파이프라인에서도 더 효율적으로 가동시킬 수 있다면 좋은 것이다.
CPU의 소비 전력이 최대가 되는 것은 파이프라인이 풀로 모든 유닛이 바쁜 경우다. 그리고 서멀 솔루션과 전력 공급은 맥스 전력에 맞춰야 한다. 그런데 실제로는 맥스 전력을 사용하는 애플리케이션은 적어, 효율이 매우 나쁘다. 현재는 파이프 라인을 넓게 하거나 깊이 할수록 점점 비효율적이 되고 있다고 한다. (예전에는 지금 CPU처럼 한가하면, 한가한 내부회로 부분 부분을 off 할수도 없었기 때문에 더 비요율적.)
이 문제를 해결하려면 실행 코어의 성능에 대한 효율성을 높일 수 있도록 하면 된다고 겔 싱어는 설명한다. 즉, 로직을 팍팍 늘려서 성능을 올리는 것이 아니라, 최소의 로직으로 성능을 올리는 것을 하면 좋다고.
다음 파도는 쓰레드 수준 병렬화
그래서 등장하는 것이 "쓰레드 수준 패러렐리즘 (TLP : Thread-Level Parallelism)"라든가 "멀티 쓰레딩 (Multithreading)"이라고 불리는 기술이다. 이는 "99년의 CPU 관련 컨퍼런스 "Microprocessor Forum"에서 매우 화제가 된 기술로 CPU 코어가 여러 쓰레드를 병렬로 실행할 수 있도록 하는 것이다.
지금까지의 CPU는 다른 쓰레드의 처리를 병렬로 실행할 수 없었다. 어느정도 연산기를 가지고 있어도 한번에 하나의 쓰레드만 실행할 수 밖에 없었던 것이다. 그러나 실제로는 서버 및 워크 스테이션에서는 멀티 쓰레드로 처리하는 경우가 많다. 그래서 CPU 내부에서 복수의 쓰레드를 병렬로 실행할 수 있도록 해, 성능을 향상시키려는 TLP가 2년의 새로운 조류가 되고 있다.
이 TLP를 가장 급진적으로 채용하는 구조가 Compaq의 "Alpha EV8"로 이 CPU는 최대 4개의 쓰레드를 관리하는 "Simultaneous Multithreading (SMT)"라고 부르는 기술을 채택한다. EV8의 SMT는 CPU는 가상으로 4개의 "TPU (Tread Processing Unit)"를 가지고 최대 4스레드를 병렬로 실행한다. 그러나 이것은 개별 CPU 코어가 있는 것이 아니라 CPU의 자원을 유연하게 각 스레드에 분산해 효과적인 병렬 처리를 행한다. 즉, EV8는 복수의 쓰레드를 실행하는 경우에는 레지스터나 실행 유닛 등 CPU 리소스를 사용 가능한 것 부터 점점 각 스레드에 할당된다. 한편, 쓰레드가 1개밖에 달리고 있지 않을 때는, 그 쓰레드가 CPU 자원을 최대한 사용함으로써 성능을 발휘할 수 있다. 즉, CPU 리소스가 낭비없이 사용된다는 것이다.
겔싱어의 설명에 따르면, Intel도 분명히 이 EV8과 유사한 접근 방식을 생각하고 있는 것 같다. TLP의 구현은 하드웨어 리소스가 많이 필요할 것처럼 보이지만, 의외로 그렇지도 않은 것 같다. 겔싱어에 따르면, Intel의 연구에서는 5 ~ 10%의 로직을 추가함으로써 CPU 처리량이 20 ~ 40% 향상된다고 한다. 즉, 소비 전력의 증가는 10% 이하에서 최대 40% 성능이 오르는, 버는(이익) 기술이라는 의미다. 사고방식은 현재의 아키텍처는 자원이 있어도 그것을 효율적으로 사용할 수 없으니까, TLP의 채용으로 자원을 효율적으로 사용할 수 있도록 하자는 접근이라고 생각된다.
투기 멀티 스레딩 성능을 높이기
TLP의 장점은 IA-64과 같은 명령 수준 병렬화 (Instruction-Level Parallelism : ILP)과 달리 기존의 코드에서 그대로 효율을 높일 수 있는 것이다. 그러나 프로그램이 팍팍 멀티 스레드로 달리지 않으면 효과가 없다는 단점도 있다. 그렇게 되면, 클라이언트 측에서는 어떤가라는 의문도 있지만, 프로그램이 멀티 스레드로 달리지 않더라도 "투기 멀티 스레딩 (Speculative Multithreading) " 이라는 기술로 성능을 향상시킬 수 있다고 한다.
이것은 겔싱어의 설명이 아니라 Intel Microprocessor Research Labs (MRL)의 프레드 폴락 (Fred Pollack) 이사겸 Intel Fellow의 프레젠테이션 안에 있던 것인데, Intel은 분명히 투기 멀티 스레딩으로 프로그램을 멀티 쓰레드로 분해해 버리는 방법도 생각하고 있는 것 같다.
예를 들어, call로 점프 (진행방향의) 앞을 실행하는 때에 다른 쓰레드에서 call 부터 앞으로의 명령 스트림을 실행한다. 혹은 루프의 반복을 각각 다른 스레드로 나누어 병렬로 실행한다. 또는 명령 스트림의 앞 부분을 다른 쓰레드에서 먼저 실행해 버린다. 즉, 쓰레드로 분해해 병렬로 실행해 버리는 것으로, 프로그램 실행의 처리량을 올리려는 것이다.
폴락씨에 따르면, 멀티 쓰레딩은 메모리 레이턴시의 은폐에도 도움이 된다. 그것은 쓰레드가 데이터를 기다리고 있는 동안에도 CPU는 다른 쓰레드를 실행시킬 수 있기 때문이다. 그리고, 투기 멀티 쓰레딩이 미스인 경우에도 데이터는 캐시에 이미 취해져 있기 때문에 재실행은 보다 빠르게 된다고 한다.
밸류 예측으로 한층 병렬도를 올린다.
그리고, 파이프 라인의 효율을 높이는 기타 접근방법에는 CPU의 예측 정확도를 높여 의미없는 투기 실행을 줄이는 것도 있다. 현재의 투기 실행 프로세서는 투기 실행한 것의 예측 실수로 투기 실행한 경로를 파기하는 경우가 상당히 있다. 그러나 예측 정확도를 높이거나 혹은 예측이 불확실한 경우에는 투기 실행을 하지 않고, 다른 쓰레드가 실행 유닛을 효율적으로 사용할 경우에는 그쪽에 자원을 넘겨준다 같은 것을 하면 이러한 낭비는 적어진다. 즉, TLP를 채용하면 그만큼 투기 실행을 더 확실한 것만으로 좁히기에 성능에 대한 전력 효율도 오른다는 것이다.
또한 폴락씨는 밸류 예측 (Value Prediction)라는 기술도 들었다. 지금까지의 CPU의 예측 기능은 조건 분기에서 분기가 성립하는지 어떤지를 예측하는 제어 흐름 예측이었다. 그러나 이제부터는 연산 결과나 주소나 플래그의 예측을 하는 밸류 예측, 즉 데이터 흐름의 예측 채용이 효과가 있다고 한다. 데이터 밸류를 예측하는 것으로 데이터 종속성을 제거해, 보다 효율적인 병렬 실행을 가능하게 한다는 것이다. CPU의 효율화 기술이라는 것은 아직도 끝나지 않고 나오는 것 같다. 그러나 멀티 쓰레딩과 밸류 예측의 구현은 바로 있지는 않다. 아마 그 전에 "칩 멀티 프로세서 (CMP : Chip MultiProcessor)"가 올 것이다. 이에 대해서는 다음 칼럼에서 리포트 한다.
[고전 2001.02.06] 2010년 CPU 전력은 600W?
[고전 2001.02.07] 인텔 폴락의 법칙이 등장 Intel 겔싱어 CTO의 ISSCC 강연
[고전 2001.02.08] 서버용 CPU는 멀티 CPU 온 다이, PC용은 통합화? Intel 겔싱어 CTO ISSCC강연
[고전 2001.08.29] IDF에서 보이는 새로운 방향 IA-32의 장래를 담당하는 하이퍼 쓰레딩
[고전 2001.08.30] 인텔 하이퍼 쓰레딩 펜티엄4 계획, 인텔 투기 (Spectulative) 스레드 실행
[고전 2003.02.22] Intel 차세대 하이퍼 쓰레딩 (Hyper-Threading) 기술 공개
[고전 2003.10.18] 모든 CPU는 멀티 스레드로, 명확하게 된 CPU의 방향
[고전 2003.02.27] Prescott,Tejas는 5GHz대, 65nm Nehalem은 10GHz이상
[고전 2002.09.12] Hyper-Threading Technology를 지원하는 HTT Pentium 4 3.06GHz
[고전 2001.08.29] 모바일 Northwood, Xeon MP의 실물을 공개,McKinley의 상세 사양도 공개
[아키텍처] 폴락의 법칙에 찢어지고 취소된 테하스(Tejas)
[분석정보] IBM이 기술의 집대성 괴물 CPU Power8 발표
[정보분석] Penryn의 1.5 배 CPU 코어를 가지는 차세대 CPU "Nehalem"
[분석정보] 멀티 코어 + 멀티 스레드 + 동적 스케줄링으로 향하는 IA-64
[분석정보] intel의 듀얼 코어 CPU 1번타자 Montecito
[분석정보] 2008년 중에 95%를 듀얼 코어로 하는 Intel CPU로드맵의 비밀
[분석정보] 심플 코어로 향하는 차세대 CPU 아키텍처
[분석정보] TOP500 슈퍼컴퓨터 순위 2015년 6월
'벤치리뷰·뉴스·정보 > 고전 스페셜 정보' 카테고리의 다른 글
[고전 2001.02.28] Intel McKinley 데모를 공개 (0) | 2005.09.02 |
---|---|
[고전 2001/02/27] Northwood? Intel이 478핀 새 패키지를 처음 공개 (0) | 2005.09.02 |
[고전 2001.02.27] Intel 차세대 IA-64프로세서 McKinley 시스템을 전시 (0) | 2005.09.02 |
[고전 2001.02.08] 서버용 CPU는 멀티 CPU 온 다이, PC용은 통합화? Intel 겔싱어 CTO ISSCC강연 (0) | 2005.09.02 |
[고전 2001.02.07] 인텔 폴락의 법칙이 등장 Intel 겔싱어 CTO의 ISSCC 강연 (0) | 2005.09.02 |
[고전 2001.02.06] 2010년 CPU 전력은 600W? (0) | 2005.09.02 |
[고전 2001.01.17] 10GHz CPU를 실현하는 Intel 0.03μm 트랜지스터 기술 (0) | 2005.09.01 |
[고전 2001.01.11] Intel의 0.13μm 공정 P860/P1260에서 CPU는 어떻게 바뀌나 (0) | 2005.09.01 |