벤치리뷰·뉴스·정보/아키텍처·정보분석

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

tware 2009. 5. 13. 19:00

 

100 코어 CPU 시대가 앞으로의 대상


 CPU는 100 코어 시대를 향해 돌진하고 있다. Intel과 AMD 등 주요 CPU 업체의 기술 리더를 시작해 많은 CPU 업계 관계자가 이렇게 말했다. 이미 CPU 메이커에 있어서는, 100코어는 규정된 노선과 같다. AMD가 제창하고 있는 CPU에 다수의 작은 코어와 시스템 기능을 통합하는 시스템 레벨 통합 시대의 CPU도 방향으로 100 코어를 목표로 하고 있다. 이 경우 100개의 코어는 전통적인 CPU코어 이외의 더 소형의 연산 코어가 카운트된다.2011년 새로운 CPU "Bulldozer (불도저)"가 이 방향으로의 출발점이 된다.

 

 

시스템 레벨 통합 CPU

 


 그러나 100코어 CPU에는 아직 큰벽이 엄청나게 가로막고 있다. 그 중에서도 아키텍처 중요한 것이 "Amdahl의 법칙 '벽 이다. 암달씨가 예견한 것은 프로세서가 수행하는 작업에서 병렬(패러렐)할 수없는 부분, 즉 연속(직렬)실행 할 수 밖에 없는 부분이 전체 작업의 실행 시간을 제한해 버리는 것이다 .

 작업 중 병렬화 할 수 있는 부분을 병렬 하드웨어에서 실행 시간을 단축해도, 순서대로 실행해야 하는 부분의 실행 시간은 싱글 스레드 성능에 의존한다. 따라서 순서대로 실행해야 하는 코드부분의 비율이 높으면, 거기서 실행 시간이 걸려 버려, 하드웨어의 병렬도를 (코어수, +a 논리코어(SMT=HT)) 높여도 전체 실행 시간은 단축되지 않는다.

 Amdahl의 법칙 자체는 잘 알려져 있지만, 그것이 얼마나 큰 제약일까는 의외로 실감되지 않는다. 아래 Amdahl의 법칙 슬라이드는 AMD의 CPU 설계자인 Chuck Moore (척 무어) 씨 (AMD Senior Fellow)가 지난해 (2008년) 11 월에 개최 된 CPU 아키텍처의 콘퍼런스 "Micro41"에서 행한 연설 프레젠테이션 것 이다. 8 코어까지의 범위에서, Amdahl의 법칙에 의한 이론적인 속도 차이를 보여주고있다. Moore 씨는 이 일련의 슬라이드에서 AMD의 2010년대의 CPU의 방향성을 부각하고 있지만, 거기서 중요한 포인트로서 다루어지고 있는 것이 Amdahl의 법칙이다.

 

Amdahl의 법칙

(병렬화 할수 없는 = 직렬 코드가 얼마나 있는 가에 따른 코어수 별 성능 증가.

병렬화 할수 없는 부분이 35%가 되면 8코어가 되어도

성능은 1코어 대비 2배 조금 밖에 안됨.

완전한 멀티스레드화 90%가 되어도 8코어가 4.7코어 정도의 성능.)

 

 

Intel 및 AMD CPU의 비교

 


지극히 어려운 Amdahl의 법칙의 제


 위의 차트는 왼쪽에서 오른쪽으로 갈수록 CPU 코어 수가 증가하고 있다. 각 라인은 CPU가 수행하는 작업에 얼마나 많은 양의 병렬화 될 수 없는 직렬 코드 부분이 포함되어 있는지를 보여주고 있다. 직렬 부분이 많은 워크로드는 CPU 코어 수가 증가해도 성능 향상이 적다.

 그린의 라인은 직렬 컴포넌트 부분이 전혀없는 이상적인 병렬화의 경우, 이것이라면, CPU 코어 수의 증가에 따라 (메모리 등이 이상적인 경우) 성능이 선형으로 늘인다. 8코어라면 8배의 속도가 된다.

 그런데 노란선 처럼 전체의 10%에서도 직렬 컴포넌트가 있으면 효율은 계속 떨어지고, 8 코어로 이론치 4.7 배의 성능 향상이 되어 버린다. 즉, 이론적으로도 약 60%의 성능 향상 효과 밖에 얻을 수 밖에 없는 것이다. 그러나 이것은 괜찮은 편이고, CPU 코어 수가 증가함에 따라 Amdahl의 법칙 제한은 점점 강화된다.

 아래의 슬라이드에서 슬라이드를 축소하여 128 코어까지의 매니 코어 시대를 응시 한 그래프이다. 이것을 보면, 10%만 직렬 컴포넌트가 있으면 128 코어에서도 이론상의 성능 향상은 단 9.3 배 밖에 달성 할 수 없는 것을 알 수 있다. 이론 값이 최고 128 배가 9.3 배이므로, 피크 값의 7.3 %의 성능에 지나지 않게되어 버린다.

 

Amdahl의 법칙 연장

 


 이것만으로도, Amdahl의 법칙의 제약이 심한 것을 알 수 있지만 더 확대하면 더 중요하다는 것을 알 것이다. 직렬 구성 요소 부분이 10% 이하인 경우도 계산하면 다음 그림과 같다. 위의 차트가 Amdahl의 법칙의 성능 업, 아래의 차트가 Amdahl의 법칙의 성능 효율을 나타내고 있다. 모두 128 코어까지 녹색선은 100% 완벽하게 병렬 코드로 구성되어 있고, 직렬 부분이 없는 이상적인 패턴을 보여주고 있다. 즉, 최대한 그린에 가까운 선이 가장 좋은 것이다.

 차트를 보면 알 수 있듯이 직렬 구성 요소가 5%의 경우에도 이론 값으로 17.4 배의 성능 향상 밖에 되지 않는다. 성능 효율은 13.6%가 된다. 직렬 구성 요소가 1%에서 겨우 56.4 배, 44.1%의 성능을 달성 할 수 있다. 즉, 99%의 코드를 병렬화 할 수 있어야, 결국 이론적인 최대 값의 절반 이하의 성능에 도달 수준이다. 직렬 부분이 0.25 %까지 내려가도 여전히 80%의 성능 효율을 얻을 수 밖에 없다.

 

Amdahl의 법칙에 의한 성능 향상과 효율성


 이렇게 보면 100 코어 시대에는 Amdahl의 법칙이 중요성을 잘 알수 있다. 병렬화 할 수 있는 코드 부분이 컴퓨팅 시간을 압도적인 부분을 차지하는 것이 아니라면, CPU 코어를 늘리는 의미가 적어지고 만다.

 


병렬 하드웨어로 달리지 않을 수 없는 CPU 측의 사정


 Amdahl의 법칙이 그렇게 힘들면, 무리하게 병렬화를 추진하지 않아도 좋은 것이 라고 생각할지 모른다. 그러나 그렇게는 가지 않는 상황이 있다. 그것은 직렬 구성 요소의 고​​속화가 어쩔 도리가 없기 때문이다.

 직렬 구성 요소를 빠르게 하려면 CPU의 싱글 스레드 성능을 올리지 않으면 안된다. 하지만 다른 벽에 막혀있다. 물러설래야 물러설 수 없는 것이 현실의 CPU이다.

 먼저 근본적으로 "무어의 법칙"자체가 벽에 가까워지고 있어 동 법률의 기하 급수적인 성장에 업혀가는 것이 안되게 진행 되고 있다. 한편, 소비 전력의 벽은 엄연히 존재하고 점점 어려워지고 있다. 오히려 TDP (Thermal Design Power : 열 설계 전력) 및 평균 소비 전력의 인하에 대한 요구는 강해지는 반면 것이다.

 그리고 CPU의 동작 주파수도 지금은 올리기 어렵게 되어있다. 속도를 위해 파이프 라인을 깊게하면 일반적으로 래치 오버 헤드가 늘어난다. 또한 파이프 라인의 심화는 늘리기 (깊게하기, 길게하기) 보다는 유지를 하며, (처리 할 수 있는) 명령수를 늘린다 (IPC 증가). 이들은 모두 트랜지스터 수의 증가를 초래하여 전력 소비를 밀어 올린다. (즉 파이프 라인을 길게해서 클럭을 올려서 성능을 높이기 보다는, 파이프 라인 수 자체를 늘려서 IPC(클럭당 명령처리 능력)를 증가시켜서 성능을 올리는 방향이라는 얘기. 또 파이프 라인을 길게해도 회로가 필요하고, IPC를 증가시키는 방향으로 해도 회로가 필요하다는 얘기. 회로가 필요하다는 얘기는 CPU 다이가 커진다는 얘기고(생산량 저하), 전력을 사용한다는 얘기. 오랜만에 읽어 보니 저도 잘 이해가 안가 다시 읽어보고 이해가 가서 설명 추가와 본글 조사 수정. 파이프 라인을 길게하면(깊게하면) 클럭을 쉽게 올릴 수 있는 이유는 아래의 글을 참고)

 

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

 

 

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

 


 CPU의 싱글 스레드 성능은 주파수 × 사이클 당 명령어 수 (IPC 클럭당 명령처리 능력. 파이프라인의 숫자. CPU마다 IPC가 달라서 동클럭 성능이 다르죠.) × 명령 단계수에 (파이프 라인의 깊이(길이).) 달려있다. 그렇다면 더 많은 명령어를 병렬로 처리하여 사이클 당의 명령 실행 성능 "Instruction-per-Clock (IPC)"을 높이면 좋다. 하지만 지금은 하드웨어를 복잡하게 해도, IPC는 조금 밖에 향상하지 않는다. IPC의 벽에 막혀 버리고 있다. (클럭을 올리거나, IPC를 높이는 것은 프로그램과 관계없이 무조건 성능이 증가. 클럭은 거의 그대로 증가이고, IPC 증가는 프로그램 자체가 명령 병렬화에 따라서 차이가 있겠죠.)

 국소성을 이용하여 성능을 끌어 올리는 것은 어떨까. 이것도, 포화점에 도달하여 캐시 메모리의 양을 늘려 가도, 조금 밖에 성능이 오르지 않는다. 이런 상황에서 단일 스레드 성능이 향후 어떻게 될지 매우 물음표가 켜지고 있다.

 그렇게 되면 남는 수단은 명령 레벨 이외의 부분의 병렬성으로 성능을 올릴 수 밖에 없다. 즉, 스레드 또는 태스크를 병렬로 하거나 데이터를 병렬로 하는가? 하지만 그 경우도 Amdahl의 법칙이 가로막고 선다. 그리고 Amdahl의 법칙의 제약을 넘어 성능을 낼 수 있는 작업 군의 대부분이 병렬화 가능한 예에 한정되는 셈이다. 그리고 작업 사이의 동기화 및 의사 소통 또는 데이터 무브먼트 오버 헤드가 적어야 한다.

 

단일 스레드 성능

 

 

 

고성능화 수단

 


throughput 컴퓨팅이 2010 년 이후 CPU의 해


그럼, 어떤 컴퓨팅의 스타일이 그 예에 해당 것인가. 그것은 큰 규모의 "throughput 컴퓨팅(Throughput Computing) '이다. throughput 컴퓨팅에서는 의존성이 없는 작업을 대량으로 달리기 때문에 병렬 하드웨어로 쉽게 병렬화가 된다. 역으로 말하면, throughput 컴퓨팅을 안하면 100코어 같은 대량 병렬 하드웨어를 활용하기 어렵다. (슈퍼컴퓨터와 같은 대규모 연산 분야는 그나마 활용하기 쉽고, PC는 어렵다. 활용하기 쉬운 분야가 그래픽 분야, 그래픽도 결국 대규모 연산. 그렇기 때문에 라라비 라는 그래픽 카드를 인텔도 만들려고 했었고, 그래픽 카드중 배정밀도가 높은 수백만원짜리가 연산용 카드로 슈퍼컴에서 쓰임. PC에서 그나마 잘 활용할 수 있는 분야는 3D 렌더링, 동영상 인코딩 분야. 그런데 보통 사람들은 해봐야 인코딩 정도 까지만 하죠. 대부분은 인코딩 마저 거의 안하고 그냥 남이 인코딩 해둔거 디코딩(영상 재생)만 하는 정도. 최근에 올수록 영상 인코딩은 좀더 하는 사람이 늘기는 했지만요. 참고로 라라비에 관한 것은 제 블로그가 가장 많을 거에요.)

 Intel도 이전, AMD의 설명과 비슷한 Amdahl의 법칙의 제약을 설명하고 있다. 그때, Intel은 미래의 응용 프로그램에서 병렬화 할 수 있는 부분이 매우 많아지기 때문에 Amdahl의 법칙의 제약이 가벼워지는 것이라고 결론이 있었다. 미래 응용 프로그램은 "RMS"로 불리는 "Recognition (인식)" "Mining (분석 & 추출)" "Synthesis (합성)"같은 장르의 프로그램이다. 이것은 필연적으로 100코어 CPU의 성능을 살릴 수 있는 응용 프로그램도 정해져 있는 것을 의미하고 있다.

 그러나 throughput 컴퓨팅을 위한 하드웨어가 간다해도, 여전히 싱글 스레드 성능은 중요하다. 그것은 Amdahl의 법칙이 살아 있기 때문에, 직렬 구성 요소는 반드시 남기 때문이다. 특히 OS는 코드의 대부분은 기본적으로 직렬 구성 요소이기 때문에 OS의 확장성이 어느 시점에서 병목 현상, 그리고 AMD의 슬라이드에서는 지적되고 있다. (윈도 10에 와서야 어느정도 병렬화)

 이것은 뒤집어 어찌 보면 직렬 구성 요소인 OS에서 병렬화 가능한 작업이 다른 프로세서 코어군에 오프로드 된다고 생각할 수도 있다. 또한 응용 프로그램 자체에서 처리 컴퓨팅 작업을 수행 할 수도 있다고 말한다. 아래의 슬라이드는 HPC (High Performance Computing, 슈퍼컴퓨터) 애플리케이션 중에서 데이터 병렬을 태스크 수준의 throughput 컴퓨팅으로 변환 할 수 있는 것을 꼽고있다. 또한 미래는 런타임 환경이 그러한 스케줄링을 처리 할 수​​ 있다고도 지적되고 있다. 이 런타임에서의 처리량 컴퓨팅의 스케줄링은 Intel도 비슷한 것을 말하고 있다. 또, Intel과 AMD의 목표로 하고 있는 방향이 근본에서는 일치하는 것을 알 수있다.

 


에지 서버와 GPU가 throughput 컴퓨팅의 예


 그러면 실제 쓰루풋 컴퓨팅의 구현은 어떤 스타일이 되어가는 것인가? AMD의 Moore 씨의 Micro41 슬라이드는 throughput 컴퓨팅의 고찰에서, 2010년대 회사의 CPU의 모습을 엿볼수 있다.

 Moore 씨의 슬라이드는 먼저 현재의 대형 스케일 쓰루풋 시스템으로 두 가지 예를 들고있다. 그것은 Web 에지 서버와 프로그래머블 GPU이다. Web 에지 서버의 경우 작업 수준의 처리량 컴퓨팅, GPU의 경우 거의 데이터 레벨의 throughput 컴퓨팅 된다.

 

throughput 컴퓨팅


 둘 다 공통점은 하드웨어 스레드 슬롯보다 더 많은 스레드를 실행하는 점. 중앙 컨트롤러가 스레드 스케줄링을 담당하는 점. 즉, 이기종 (Heterogeneous : 이종 혼합) 형태의 시스템으로 제어하고있다.

 이러한 시스템에서 보면 throughput 컴퓨팅의 모습이 있다고 한다.

 첫째, throughput 컴퓨팅은 병렬 처리 할 수​​ 있는 자원은 얼마든지 있다. 따라서 기존의 CPU처럼 병렬화가 병목 안된다. 병목 현상은 프로세서와 메모리의 데이터 전송이다. 따라서 throughput 컴퓨팅의 목표는 메모리에 파이프 라인을 포화시키는 것에 있다고 한다. 메모리 지연 시간은 스레드에 의해 은폐 할 수 있기 때문에 메모리 대역폭을 얼마나 효율적으로 다 사용하는지가 중요하다.

 또한 마이크로 아키텍처는 엄청난 수의 스레드 (활성뿐만 아니라 대기 포함)을 지원해야한다. 한 스레드에서 메모리 스톨이 발생하면 즉시 다른 스레드로 전환하여 메모리 파이프 라인을 채울수 있도록 해야하기 때문이다. 메모리 컨트롤러 측도 엄청난 수의 요청을 보유 할 수 있게 해야한다.

 소프트웨어 측면에서는 자연스러운 병렬성을, 방대한 수의 독립적인 스레드로 나눌 필요가 있다. 스레드를 하드웨어에 맞게 데이터 병렬 작업과 태스크 병렬 워크로드에 적용해 간다. 여기에는 CUDA 및 OpenCL 같은 언어 모델과 런타임 지원이 필요할 것으로 보인다.

 

throughput 컴퓨팅의 특성


 여기에서 아마 포인트가 된다고 생각되는 것은 데이터 병렬과 태스크 병렬의 어느쪽으로 기술이 흘러가느냐는 점이다. AMD는 데이터 병렬과 태스크 병렬의 어느 쪽을 선택 하는가를 명시하고 있지 않다. 이 리뷰는 슈퍼 컴퓨터에서 큰 논란이 된, SIMD (Single Instruction, Multiple Data) 대 MIMD (Multiple Instruction, Multiple Data)의 논쟁과도 관련있다. 지금은 데이터 병렬과 태스크 병렬의 흐름 속에서 균형 지점을 모색하고있는 것으로 보인다.

 

벡터 프로세싱

 

 

 

SIMD와 MIMD

 

 

 

슈퍼 컴퓨터의 역사

 

 

 

[분석정보] Sandy Bridge와 Bulldozer 세대의 CPU 아키텍처

 

 

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

 

 

[아키텍처] IDF 2012 인텔 차세대 주력 CPU Haswell(하스웰) 공개.

 

 

[정보분석] 모든 CPU는 멀티 스레드로, 명확하게 된 CPU의 방향

 

 

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

 

 

[아키텍처] 정수 연산 성능을 희생해서 효율성을 거둔 AMD의 "Bulldozer"

 

 

[아키텍처] Nehalem(네할렘)으로 볼 수 있는 인텔 CPU 마이크로 아키텍처의 미래

 

 

[아키텍처] Intel의 차기 CPU "Nehalem"의 설계 개념은 "1 for 1"

 

 

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

 

 

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

 

 

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

 

 

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

 

 

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

 

 

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

 

 

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

 

 

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

 

 

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

 

 

[분석정보] TOP500 슈퍼컴퓨터 순위 2017년 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가 말한다.

 

 

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

 

 

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

 

 

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

 

 

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

 

 

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

 

 

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

 

 

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

 

 

[정보분석] 모든 CPU는 멀티 스레드로, 명확하게 된 CPU의 방향

 

 

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