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

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

tware 2009. 5. 14. 21:00

 

두가지 throughput 컴퓨팅의 방향


 AMD의 CPU 설계자인 Chuck Moore (척 무어) 씨 (Senior Fellow)는 지난해 (2008 년) 11월에 개최된 CPU 아키텍처의 콘퍼런스 "Micro41"에서 행한 연설에서, throughput 컴퓨팅으로 향하는 AMD의 방향성을 설명했다. 그러나 그중 Moore 씨는 AMD의 throughput 컴퓨팅이 데이터 병렬과 태스크 병렬의 어느쪽에 치우치는지를 명확히 하지 않았다.

 이것은 중요한 포인트다. Web 서버와 같은 워크로드라면 태스크 병렬이 적합하고 (코어 숫자), 미디어 프로세싱이나 과학 기술 연산과 같은 워크로드라면 데이터 병렬이 적합하다 (SSE,AVX 같은 SIMD 명령). 구체적으로 어떻게 하는지, AMD의 프레젠테이션에서 보이지 않는다.

 하지만 지금의 트렌드를 보면, Cell Broadband Engine (Cell BE)와 Intel의 Larrabee와 같이, 데이터 병렬과 태스크 병렬의 조합이 되고 있는 것으로 보인다. 예를 들면, Larrabee는, 데이터 병렬을 강화한 코어를 다수 늘어 놓은 태스크 병렬로 있다. 전통적으로 말하면, SIMD (Single Instruction, Multiple Data)와 MIMD (Multiple Instruction, Multiple Data)의 조합이다.

 Larrabee의 명령어 세트는 GPU의 그것과 마찬가지로 벡터 슈퍼 컴퓨터의 영향을 강하게 받고 있지만, 벡터 길이는 상대적으로 짧다. 한편, La​​rrabee의 각 CPU 코어는 일반적으로 CPU와 마찬가지로 별도의 스레드를 달리게 할 수있다. 데이터 병렬과 태스크 / 스레드 병렬의 중간에 위치한다.

 

 

벡터 프로세싱

 

 

 

Larrabee의 개요

 

 

 

SIMD와 MIMD


클러스터로 세분화된 프로그래머블 GPU


 프로그래머블 GPU도, 긴 안목으로 보면 그 방향으로 진화 할 가능성이 있다. 실제로, 지금의 프로그래머블 GPU는 SIMD 프로세서 클러스터를 복수 내장하고 있으며, 각각의 SIMD 클러스터는 별개의 작업을 처리 할 수​​ 있다. 분기 입도를 작게 유지하고 효율성을 높이고 있다. SIMD와 MIMD의 조합이라고 생각할 수도 있다.

 그러나 현재의 GPU는 제어 문제에서 GPU 전체에서 1개의 커널 프로그램 밖에 실행할 수 없다. 각각의 프로세서 클러스터는 하나의 커널 프로그램을 동기화하지 않고 실행하고 있지만 다른 커널을 달리게 할 수 없다. NVIDIA의 설계자인 John Nickolls (존 니콜스) 씨 (현 Director of Architecture, Nvidia)는 동시에 여러 커널을 실행하려면 커널끼리의 의존성을 감지해야 한다고 설명한다.

 엄밀히 말하면, GPU는 그래픽 처리에서는 버텍스, 지오메트리, 픽셀, 각각 개별의 커널 프로그램을 병렬로 실행할 수 있다. 그러나 이것은 정점 - 기하학 - 픽셀이 나뉜 용도의 처리이기 때문에 의존성 문제가 발생하지 않기 때문이다. 각 워크 그룹마다 달리게하는 커널의 차례가 정해져 있다. 하지만, 컴퓨테이션 작업의 커널과 그래픽스 태스크의 커널을 병렬해 달리게 하면 의존하는 경우가 나와 버린다. 따라서 현재의 GPU는 이 두 종류의 커널은 새롭게 하고 있다. 결과적으로 현재의 GPU는 여전히 라지 SIMD 머신의 성격을 어느 정도 유지하고 있다. 하지만 구조적으로는 MIMD에 한쪽 발을 걸고 있다.

 

GT200의 개요

 


데이터 병렬의 입도와 데이터 병렬 하드웨어의 관계


 AMD의 프레젠테이션에서는 데이터 병렬과 throughput 컴퓨팅에 대해서도 논하고 있다. 아래의 슬라이드가 그 것이다.

 

데이터 병렬과 throughput 컴퓨팅


 (1) 가장 왼쪽은 대부분이 시리얼 코드의 케이스. 루프도 단순하고 반복 루프를 별로 볼 수 없는 경우를 상정하고 있다. 이 경우는 명령어 수준 병렬로 정렬 가속화 할 여지가 있지만, 데이터 병렬로 떨어 뜨리는 여지는 별로 없다.

 (2) 중간은 파인 그레인의 데이터 병렬 코드의 예. 이 경우, 시리얼 코드 안에 데이터 병렬화가 가능한 부분이 어느 정도 존재한다. 그러나 데이터 병렬 가능 부분의 입도는 작고, 예를 들면, 16 피스의 데이터를 16 회 반복 연산을 행한다 같은 경우다. 이 경우, SSE와 같은 CPU에 내장된 쇼트 SIMD가 잘 작동한다. 위의 케이스 라면, 컴파일러 레벨에서 4way의 SIMD의 4루프로 변환하는 여지가 있기 때문이다. Intel과 AMD가 각각의 CPU 코어 안의 SIMD를 강화하고 있는 것은 이 케이스 때문이다.

 (3) 오른쪽은 코스 그레인의 데이터 병렬 코드의 예. 데이터 병렬화가 가능한 부분의 입도가 매우 크고, 예를 들어, 직렬 처리하면 1M (100 만) 피스의 데이터에 대해서 1M 회의 루프가 되는 경우. 또는 방대한 데이터의 2D 배열 연산 등. 이 경우, throughput 컴퓨팅에 특화한 벡터 연산 엔진에 맵하는 것이 적합한다. 이 좋은 예가 GPU 컴퓨팅이다.

 3 번 과정 코스 그레인 케이스의 경우 대형 벡터 머신의 경우와 마찬가지로 데이터를 셋업 할때 (또는 스타트 업) 오버 헤드가 있다. 데이터 블록의 셋업 등으로 GPU의 경우 드라이버 오버 헤드 안에 포함되어 있다. 따라서 입도가 충분히 크지 않으면, 손실이 커지고, 병렬화의 이익이 줄어 버린다.

 이것에 대해서는, AMD의 전 CTO였던 Phil Hester (필 ·헤스터) 씨가 CTO였던 2년 전에 설명했다.

 "GPU와 같은 벡터 엔진은 셋업을 위한 방대한 오버 헤드가 있다. 거기를 주의해야 한다.

 만약 당신의 코드에서 벡터 할 수 있는 부분이 크면, 충분한 성능 향상을 얻을 수 있을 것이다. 왜냐하면, 벡터에 의한 고속화가 셋업 시간을 충분히 상쇄 할 수 있기 때문이다.

 반면 응용 프로그램이 충분히 긴 벡터 코드를 포함하지 않는 경우. 셋업 로스와 실행의 속도 트레이드 오프가 문제가 된다. 만약 벡터가 너무 작은 경우 x86 프로세서 안의 SSE 자원으로 실행하는 것이 빠를 것이다. 직렬과 병렬이 작은 입도로 혼합되어 있는 경우는 그 것이 좋다. 우리는 병렬 데이터의 특성이 무엇인지를 이해할 필요가 있다 "

 AMD와 Intel이 벡터 크기가 비교적 큰 throughput 컴퓨팅의 연구 개발을 진행하면서, x86 계 CPU 코어 안의 벡터 엔진도 강화하고 있는 이유는 여기에 있다.

 

 

벡터 입도

 


대형 범용 CPU 코어의 주변에 다수의 처리량 엔진을 탑재


 여기까지 오면, 2010 년대의 CPU의 대범한 구도가 보인다.

 먼저 일반 PC & 서버 전용 CPU는 향후 throughput 컴퓨팅을 목표로 해야한다. 그러나 중핵 CPU 코어는 현재 PC 용 CPU 코어와 비슷한, 단독의 프로세서 성능이 매우 높은 범용 코어가 된다. 그러한 강력한 코어를 1개 또는 복수 탑재한다. 이 메인 코어는 싱글 스레드 성능은 유지 또는 슬로우 페이스면서 향상시킨다. AMD의 프레젠테이션에서는 이 코어의 후보로서 차세대 Opteron (= Bulldozer : 불도저)를 들고있다.

 싱글 스레드 성능이 높은 코어를 탑재하는 목적은 (1) 레거시 응용 프로그램을 충분한 성능으로 지원하는 것 뿐만 아니라 (2) throughput 컴퓨팅 때의 중앙 컨트롤러로 충분한 성능을 발휘할 수 있도록 하는 이유이다. 벡터 셋업 및 스케쥴 등은 중앙 컨트롤러의 역할이 커지기 때문에 여기를 강화하지 않으면 암달의 법칙 (Amdahl law)의 병목이 될수 있다.

 강력한 범용 코어의 주변에 다수의 작고 전력 효율이 좋은 특정 분야에 최적화 된 컴퓨트 오프로드 엔진을 추가한다. 이 엔진은 데이터 병렬과 태스크 병렬의 균형일 것이라고 추측된다. 또한 이러한 처리량 최적화 코어는 반드시 x86과 호환 프론트 엔드를 가지는 엔진일 필요는 없다. 원래 AMD의 Hester 씨는 이전, 부분적으로는 x86의 명령 공간에 맵 할 가능성을 시사하고 있었지만, 이것은 어떻게 되었는지 아직 모른다.

 

오프로드 엔진 추가

 

 

 

시스템 레벨 통합 CPU

 


시스템 레벨의 통합으로


 이러한 코어 군에 대해서 최적화된 메모리 시스템도 준비한다. 메모리는 공유되어 최적화된 코어 간의 통신 및 동기화 데이터 전송 구조를 구축한다. 처음부터 이것을 목표로하는 것이 GPU와의 큰 차이다. 또한 열쇠가 되는 ​​메모리 대역을 확보하기 위해 CPU의 다이 (반도체 본체)에 메모리 다이를 거듭한 3D 다이 스택이 궁극적으로 채택 될 가능성도 높다.

 또한 클라이언트 PC 용 CPU의 구성이라면 쓰루풋 엔진 이외에도 PC의 기능이 완전하게 CPU 안에 통합된 단일 칩으로 PC의 거의 모두를 구성할수 있게 된다. DRAM 컨트롤러와 칩 사이 고속 인터페이스는 이미 통합되어 있지만, 다음은 PCI Express 등 고속 I / O 등이 통합되어 갈 것이다. 반도체로 말하면, CPU가 시스템 LSI 화 된다.

 그 원동력의 하나는 CPU 코어가 남아 버리는 것이다. CPU 코어가 CMOS 스케일링 공정 세대마다 작아지기 때문에, 적극적으로 다른 기능을 캡처 수밖에 없다.

 

남는 CPU의 다이

 

 

AMD의 프로세스 별 CPU 코어 크기


 또한 CPU에 탑재되는 다양한 리소스와 이벤트를 관리하기 위한 컨트롤 시스템도 정비된다. 전력 제어를 위한 프로그래머블 마이크로 컨트롤러를 탑재하여 실시간 모니터링을 기반으로 필요한 부분에만 전력이 공급된다. 이러한 시스템 통합적에 복잡한 하드웨어 위에, 하드의 복잡성을 은폐하고, 프로그래밍을 쉽게하기 위한 프로그래밍 모델이 구축된다.

 이러한 포인트의 대부분은 AMD뿐만 아니라 Intel도 공유하고 있다. 양사는 의미에서 같은 방향으로 진행되고 있어 2010년대는 throughput 컴퓨팅으로의 싸움이 될 것이다.

 

AMD CPU의 이행도

 

 

AMD CPU의 die size 이행도

 

 

2009년 5월 14일 기사 입니다.

 

 

 

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

 

[분석정보] 메모리가 큰 벽이 되는 AMD의 퓨전 (FUSION) 프로세서

 

[분석정보] AMD가 2009년의 CPU 코어와 통합 CPU의 개요를 발표

 

 

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

 

 

[분석정보] AMD가 확장판 K10 코어 기반의 APU Llano 를 첫 공개

 

 

[분석정보] 정체를 보인 Haswell의 eDRAM 솔루션