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

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

tware 2009. 12. 2. 22:00

 

프로그래밍을 용이하게 하는 메모리 통합


 Intel이 일부 고객에게 테스트용으로 제공한 최초의 세대 Larrabee는 개별 코프로세서로 PCI Express 카드로 되어 있었다. 제품도 PCI Express 기반이 될 예정이다. 이것은 CPU와 Larrabee로 메모리가 분단되어 있는 것을 의미한다. 이러한 메모리 모델은 프로그래밍에 큰 장벽이 된다. 그래서 Intel은 "공유 가상 메모리 (Shared Virtual Memory) '기술에 의해 문제를 해결하고자 한다. Intel은 SVM에는 실적이있어, Larrabee 개발을 추진하는 옆에서 이 기술을 Larrabee에 응용하는 연구도 해왔다. 이것은 CPU에 Larrabee 등 데이터 병렬 코어를 통합할 때까지의 사이에 다리가 된다.

 

Justin R. Rattner 씨


 Intel도 AMD도 최종적으로는 CPU에 데이터 병렬 프로세서를 통합하려고 한다. PC 용 CPU 코어와 발전형 GPU나 Larrabee 코어 같은 데이터 병렬 코어를 하나의 다이 (반도체 본체)에 올리는 방향이다. Intel의 CTO 인 Justin R. Rattner (저스틴 R · 래트너) 씨 (Senior Fellow, Vice President, Director of Intel Labs, Intel Chief Technology Officer, Intel)는 통합의 동기는 프로그래밍 모델과 전력 효율에 있다고 설명했다.

 "큰 (CPU) 코어와 큰 벡터 엔진을 갖춘 작은 (CPU) 코어가 있다 경우, 문제는 어떻게 그것을 쉽게 프로그램 할 수 있도록 하는 점에 있다.이 점에 대해서는 (쌍방 통합 하여) 통합된 메모리 주소 공간을 얻음으로써 (프로세서가 2 개로 나누어져 있는 것에서 생기는) 불필요한 프로그램 작업을 피할 수 있다. 프로그래밍 모델은 훨씬 간단하게 되어, 두 코어 장점을 누릴 수 있다.

 물론 상충하는 부분도 있다. CPU는 메모리 용량을 중시하기 때문에 그만큼 빠른 메모리를 사용할 수 없다. 가속기 칩쪽이 고성능의 메모리를 사용할 수 있다. 통합화에 의해 메모리 성능이 떨어지는 것은 가격과 성능의 상충하는 것이다. 한편, 통합화로 전력 효율이 좋아진다는 장점도 있다. 실제로는 이것이 가장 중요한 장점 일 것 "

 


공유 가상 메모리를 가속기에 적


 하지만 당면 Larrabee는 개별의(외장) 코프로세서이며, PCI Express를 통해 CPU에 연결되기 때문에 CPU와 Larrabee의 쌍방의 메모리가 있으며, 데이터를 CPU에서 Larrabee에 전송하여 처리 하지 않으면 안된다.

 CPU 간의 데이터 전송은 GPU의 범용 컴퓨팅에서도 프로그래밍에 큰 병목 현상의 하나다. 그래서 Larrabee는 그것을 완화하기위한 구조로 SVM을 가져온다. CPU와 Larrabee의 사이에서 비교적 작은 비용으로 효율적으로 메모리를 공유 할수 있기 때문이다.

 Rattner 씨는 10월에 일본에서 행한 기자 회견에서 다음과 같이 설명했다. "메모리 공유는 모든 가속 아키텍처를 따라다니는 고전적인 문제의 하나다. 최초의 부동 소수점 연산 가속기 때부터 있었다. 따라서 우리는 이 문제를 어떻게 극복할지, 오랜 세월 연구해 왔다.

 그리고 가상 메모리 기술을 확장하여 문제를 해결하는 것을 발견 했다. 데이터 공유를 (가상 메모리) 페이지 수준에서 수행 할 수 있으면 다른 유형의 IA 코어끼리 효율적으로 메모리를 공유할 수 있게 된다. 이방법이 복잡한 일관성 메커니즘의 하드웨어 비용을 놓고 봐도 훨씬 좋다. 이 기술을, 우리는 "Mine, Yours, Ours (MYO)"라고 부른다.

 Intel은 Larrabee와 메인 CPU 사이에 SVM 기술을 도입하여 효과적인 데이터 공유를 도모하고 있다. Larrabee와 CPU는 각각 물리 메모리를 갖추지만, 가상 메모리 메커니즘에 위에서 메모리를 공유한다. 두 프로세서는 동일한 가상 메모리를 공유하는 것으로 보이므로  데이터 구조를 그대로 전송할 수 있다.

 약간 혼란 스러울 지도 모르지만, 이것은 CPU 사이에서 볼 수있는 NUMA (Non-uniform memory access) 형식의 공유 메모리 시스템과는 다르다. 예를 들어, Intel은 CPU와 Larrabee를 QuickPath Interconnect (QPI)로 접속하여 Larrabee에 일관된 메커니즘을 구현하고 완전한 공유 메모리를 만들 수 있도록 설계하는 것도 하려면 할수 있다.

 그러나 Intel은 Larrabee를 광범위 하게 보급하고자 PCI Express 기반으로 도입 하려 한다. Larrabee는 QPI와 일관된 메모리 메커니즘은 구현하지 않는다. 따라서 CPU와 Larrabee의 간에 NUMA 메모리를 취할수 없다. 그 대안으로 SVM을 가지고 오려 하고있다. 후술하겠지만, SVM은 coherency를 취하기 위한 하드웨어 메커니즘이 불필요 하기 때문이다.

 

SVM의 개요

 

 

가상 메모리가 다른 종류의 IA 간의 효율적인 메모리 공유를 실현한다.

 


공유 가상 메모리에 적극적으로 움직이는 Intel


 사실 공유 가상 메모리 자체는 새로운 아이디어는 아니다. Intel은 이 기술을 과거 초병렬 슈퍼 컴퓨터에 도입하고 있었다. Rattner 씨 자신이 다룬 Intel 슈퍼 컴퓨터 "Paragon"은 메모리 일관성을 유지하기 위해 이 기술을 사용하고 있어 그 때의 기술 이름은 "MYOAN"이었다 (처음 도입한 것은 iPSC / 2로 기술 이름은 KOAN).

 여기서 흥미로운 것은, Intel은 Larrabee 개발에 있어서는, 슈퍼 컴퓨터에서의 경험을 광범위하게 반영하고 있는 것이다. Larrabee 아키텍처 자체가 슈퍼 컴퓨터 전쟁때 SIMD와 MIMD (Multiple Instruction, Multiple Data)의 연구에서 태어났다. 그리고 메모리 공유도 슈퍼 컴퓨터의 때의 기술이 전용​​되려 하고 있다.

 

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


 무엇보다, SVM 관해서는 Intel은 과거 2 ~ 3 년 사이에 몇번 언급하고 있다. 가속기 (CPU에 부가하는 전용 처리 칩)에 쓰는 아이디어로 이 기술을 꺼냈기 대문이다. 2007 년에는 Intel Developer Forum (IDF)에서 가속기를 이용한 이기종 시스템 구성을 위한 프로그래밍 환경 "Accelerator Exoskeletons"의 중요 기술로서 SVM을 꼽았다.

 게다가 올해 3월 GDC (Game Developers Conference)에서는 "MYO"라는 명칭으로 이 기술을 시현했다. Rattner 씨가 10월 일본 방문시의 기자 회견에서 시현한 것은, GDC 때의 시현과 같은 것이다. 11월 SC09 에서도 동일한 시현을 보인 것 같다. MYO의 "Mine, Yours, Ours '는 물론 SVM의 권한을 나타내고 있다.

 

Accelerator Exoskeletons 모델

 

 

 

데모 개요

 


복잡한 데이터 구조의 전송이 병목의 한가지


 Rattner 씨가 슈퍼 컴퓨터 시대부터 키워온 SVM 기술에는 본래 응용 프로그램 수준에서 어떤 장점이 있는가? Larrabee에 비해 말하면, 복잡한 데이터 구조를 그대로 CPU와 공유 할 수 있다는 점에있다.

 "문제는 범용 CPU 측의 메모리에 있는 많은 복잡한 데이터 구조를 가속기로 전송해야 한다는 점이다. 일반적으로 CPU와 가속기, 이것은 GPU, FPU, FPGA 등 모두를 포함하지만, 그 사이에 복잡한 데이터 구조를 그대로 전송하는 수단이 없다.

 그래서 CPU는 우선 데이터 구조를 분해하여 플랫하고 PCI 등의 인터 커넥트를 통해 전송하고 그 위에 가속기에서 컴퓨 테이션을 위해 재구축해야한다. 또한 종종 같은 일을 반대 방향으로해야한다. 즉, 가속기가 데이터를 업 데이트 한 후 그 구조를 분해하여 CPU로 보내 다시 구축해야 한다.

 우리는 실제로 GPU에서 실행되는 연체 물리 시뮬레이션 코드를 살펴 보았다. 이 경우에는 연체 데이터는 CPU에서 GPU로 전송된다.

 그 결과 우리는 물리 엔진 자체는 완전히 GPU 아키텍처를 향해 있음에도 불구하고 데이터 전송에 큰 오버 헤드가 있다는 것을 발견했다. 데이터 구조를 분해하여 이동시켜 다시 구축하여 프로세스 후에 다시 반대로 작업한다. 이것이 속도를 크게 저하시켜 버린다.

 또한 이 방식은 오류가 생기는 경우가 매우 많다. 매우 복잡한 데이터 구조가 되면 데이터의 플랫화 및 재 구축 과정에서 부정확한 결과가 생길 가능성이 높다. 게다가 그러한 오류는 찾을 것이 매우 어렵다. 오류는 개발 생산성을 낮추고 시간이 걸리게 한다. 게임 프로그래머를 예로 들면, 데이터 구조의 프로그래밍만 며칠이나 걸린다. 우리는 그러한 노력을 제거 할 수 있으면 생산성이 큰 점프가 된다고 생각했다 "(Rattner 씨)

 최대의 문제는GPU와 Larrabee에서 처리하고자 하는 데이터가 종종 복잡한 구조를 가지고 있는 경우에 있다. 물론 이 문제는 응용 프로그램에 따라 다르지만, 큰 병목의  하나인 것은 틀림 없다. 그리고 구조가 너무 복잡하기 때문에 GPU 측으로 오프로드 하는 것이 사실상 불가능한 처리도 존재한다.

 

왜 메모리 인터페이스를 취하는가

 

 

연체의 물리 엔진

 


데이터 전송을 은폐하고 데이터 구조를 유지


 Intel은 SVM을 이 문제를 해결하는 수단으로 들여왔다. Rattner 씨는 다음과 같이 설명한다.

 "그래서 우리는 Larrabee가 IA (Intel Architecture) 프로세서라는 장점을 사용하기로 결정했다. Larrabee는 IA CPU의 메모리 관리 관리의 모든 기능을 갖추고 있다. 따라서 Nehalem이나 Westmere 같은 범용 프로세서와 사이에서 매우 효율적인 SVM을 구축 할 수 있다.

 다양한 메모리 페이지와 공유 공간에 액세스의 교환을 통해, 우리는 두 종류의 프로세서에 효과적으로 데이터에 어드레스 하게 할 수 있다. 일상적인 데이터 구조의 분해 와 구성을 할 필요 없이 데이터 공유가 가능하다.

 구체적으로는 다음과 같이 작동한다. CPU의 프로세서가 있는 공유 메모리 페이지를 "Own"하는 경우를 생각해 보자. 그 페이지는 다른 프로세서, 예를 들면 Larrabee로 부터 보호되고 있다. CPU가 Larrabee에 대해 명시적으로 권한을 부여할때 까지 Larrabee는 해당 페이지에 액세스 할 수 없는 상태가 계속된다.

 그리고 CPU가 해당 페이지에서 작업을 완료하면 "OK, 이쪽은 메쉬 데이터를 포함하는 페이지 모두에서 메시의 리모델링 작업을 마쳤다. 이제는 이러한 모든 페이지는 Larrabee의 것"  이라고 선언한다. CPU는 이제 그 페이지에 대한 액세스를 행하지 않는 것이 메모리 관리 유닛에 확약된다.

 그러자 Larrabee는 해당 페이지에 액세스 할 수 있게 된다. 페이지에서 데이터를 읽어 들여, 물리 시뮬레이션 계산을 수행하고 데이터 구조를 업데이트 한다. 그러자 이번에는 Larrabee가 "OK, 이쪽의 처리는 끝났다,이들 페이지의 엑세스 권한을 CPU로 되돌린다"고 선언한다 "

 CPU 측이 설정한 데이터 구조를 그대로 GPU 측에서 가상 메모리 공간의 데이터로 나타나기 때문에 이야기는 간단하다. 엑세스 권한도 CPU 측에서 주어지면 데이터 구조를 무너 뜨리는 일 없이 직접 가지고 올 수 있다.

 


페이지 수준에서 공유하는 SVM


 이 구조는 조금 들은 것으로는 보통 공유 메모리 시스템처럼 들린다. 그러나 실제로는 큰 차이가 있다. 먼저 눈에 띄는 것은 메모리의 일관성을 유지하는 단위가 페이지 인 점과 소프트웨어 처리 또는 부분적인 소프트웨어 처리가 가능하다는 점이다.

 "포인트는 페이지 수준에서 일관성을 유지하는 것이다. 물론, 일관성 유지를 위한 비용은 지불해야 한다.하지만 데이터를 공유하는데 필요한 계산량은 매우 작다. 오버 헤드는 그리 크지는 않을 것이다. 비용에 대해 적절한 성능을 얻을 수 있을 것 "이라고 Rattner 씨는 설명한다.

 보통 공유 메모리는 CPU의 캐시 블록 단위로 일관성을 유지한다. "이 캐시 블록은 지금 여기의 CPU가 읽고 있으니까 다른 프로세서가 고쳐 쓸 수 없다"등의 작업을 한다. 그런데 공유 가상 메모리의 경우는 그것을 메모리 페이지 단위로 행한다. 관리의 입도가 훨씬 크기 때문에 특정 조건 하에서 공유 메모리의 관리가 용이​​하게 된다. 입도가 크기 때문에 하드웨어 비용을 들여 제어하지 않아도 성능을 낼 수 있다.

 

SVM의 메모리 관리

 

 

SVM에서의 소프트웨어 아키텍처에 관한 제안


 그리고 또 하나의 차이점은 이것이 가상 공유 메모리인 점. 사실, 런타임 소프트웨어가 관리하는 공유 가상 메모리 주소 공간이 CPU와 Larrabee 모두 동일한 물리적 메모리 어드레스 공간에 매핑된다. 그리고 CPU의 물리 메모리와 Larrabee의 물리 메모리 사이에 일관된 페이지 수준에서 유지된다. SVM은 2개의 물리적 메모리에 걸쳐 한쪽 메모리 페이지는 다른 한쪽의 동일한 메모리 페이지의 캐시처럼 행세한다.

 Rattner 씨의 설명에 따라 설명하면 다음과 같다. CPU 측이 CPU의 물리 메모리에 매핑 된 SVM의 어떤 페이지에 존재하는 데이터를 설정한다. 그 사이, La​​rrabee 측의 물리 메모리에 동일한 주소는 Larrabee가 액세스 할 수 없도록 차단되어 있다. CPU 측이 데이터의 설치가 완료되면 런타임이 2 개의 물리 메모리 사이에서 이 메모리 페이지의 일관성을 취한다. 실질적으로 데이터가 전송되어 CPU가 권한을 놓는다. 그러자 Larrabee 측의 엑세스가 허용된다. 런타임 핸들하고 있기 때문에, OS 자체의 대응은 필요가 없다.

 그리고 여기에 Larrabee가 IA (x86) CPU 인 점이 살아 온다. Larrabee는 일반 Intel의 IA CPU와 똑같은 메모리 관리 기능을 가지고 있다. 메모리 페이지 크기나 구성 같은 페이지 테이블 형식이 동일하다. 그 때문에 Intel이 비 IA 코어를 상정하고 개발한 Accelerator Exoskeletons에 보이는 것과 같은 페이지 테이블 변환 메커니즘이 필요 없다. 지금까지 Intel이 Accelerator Exoskeleton 프레임 워크로 발표해 온 것보다 더 단순한 제어가 된다.

 또 이번 경우는 Larrabee에 오프로드 하려는 작업이 데이터 병렬이며, 큰 데이터 덩어리에 대한 처리인 점도 유리하게 작용. 데이터와 컴퓨테이션의 입도가 크기 때문에 coherency를 취하는 메모리 입도가 커도 피트하기 쉽기 때문이다. 데이터의 입도가 작 으면 페이지 기반의 일관성은 비효율적이 될 수도 있지만 Larrabee에서는 그 문제는 없다.

 

MYO 프로그래밍 환경

 

 

다양한 이기종 구성


 이렇게 보면 Intel은 Larrabee를 도입하기 위한 기술적인 사전 준비는 순조롭게 잘 되어가는 것을 알 수 있다. 개발자에 따라서는 SVM의 1 점으로도 Larrabee를 갖고 싶다고 느끼는 경우도 있을 것 같다. 그럼에도 불구하고 제품 전략상에는 Larrabee의 동향이 보이지 않는다. 이 언밸런스가 Intel의 현재 전략의 흔들림을 나타내고 있다.

 

2009년 12월 2일 기사 입니다.

 

 

 

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

 

 

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

 

 

[제품뉴스] 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 계획과 아키텍처를 어떻게 바꾸나?

 

 

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

 

 

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

 

 

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

 

 

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

 

 

[분석정보] 인텔 GDC에서 라라비 명령 세트의 개요를 공개

 

 

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

 

 

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

 

 

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

 

 

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

 

 

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

 

 

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

 

 

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

 

 

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