CS 전공/리뷰2010. 1. 6. 15:13
Univ. of Wisconsin-Madison(이 대학은 CS 특히 컴퓨터 구조 분야에서 아주 독보적인 위치에 있다.)의 Mark D. Hill 교수가 IEEE Computer 2008년 7월호에 기고한 글이다. HPCA'08 에서 키노트로, 또 2009년 2월에는 Google techtalk에서도 발표를 하였다.[Paper][Slides]




 이 논문은 멀티코어 환경에서의 병렬화를 통한 속도향상을 설명하기 위해 멀티코어의 종류와 특징을 설명하고, 이를 위해 자신들의 수정된 암달의 법칙에 대해 설명한다. 사실 암달의 법칙이 바뀐 것은 아니다. 다만, 멀티코어에 맞추어서 암달의 법칙을 보완한 정도이다. 컴퓨터 아키텍트를 주대상으로 발표한 듯 싶지만, 나같은 SW업자에게도 좋은 내용이라 생각된다.

 멀티코어는 크게 대칭형(symmetric)과 비대칭형(asymmetric)으로 구분할 수 있는데, Core2Duo 같은 것이 대칭형이고, Cell Broadband Engine  또는 셀 프로세서라 불리는 것이 비대칭형이다. 이들 각각에 환경에 있어 프로그램 내 병렬 실행 부분(F)에 따른 속도향상의 한계를 보인다. 
식을 간단하게 하기 위해 BCE(Base Core Equivalent)라고 하는 논리적 구성 요소를 가지고, 각 코어는 1개 이상의 BCE를 가진다고 가정하고, r개의 BCE로 구성된 한 코어의 성능을 perf(r)이라고, 정의하고 암달의 법칙을 설명한다.  자세한 내용은 식을 직접 참고하는 편이 낫다. 여기에서는 간단하게 정리만 하자면 결과는:

대칭형 멀티 코어의 경우:
  • 암달의 법칙은 멀티코어 환경에서도 그대로 적용된다. 즉 멀티코어의 성능은 코어 수에 따라 선형으로 증가되지 못하고 제한된다.
  • f 값의 증가, 즉 병렬화 부분을 증가시키는 것이 멀티코어 환경에서도 중요하다. f 값이 충분히 크지 않으면 그냥 CPU 하나의 성능을 증가시키는 것이 더 나은 속도 향상을 보인다.
  • 많은 경우 각 코어에 BCE는 여러개 있는 것이 효과적이다.(즉 코어 수를 많이 늘리는 것보다, 코어 성능을 개선하는 것이 나을 수 있다.) (F=90~99%)
  • 프로그램의 99% 이상이 병렬화 되었다면, 한 칩에 코어가 많은 것이 더 낫다.

비대칭형 멀티 코어의 경우: 
  • 언제나 대칭형 멀티코어보다 더 나은 성능을 보인다. (그래서 셀 프로세서가 인기있는가 보군)
  • r-BCE 코어 하나의 성능을 논할 때, r 값을 클수록 좋은 성능이 나왔다.
  • 상대적으로 작은 F값에 대해서도 주목할만한 속도향상이 있다.

이외에 동적(dynamic) 멀티코어를 논했는데, 이는 필요에 따라 제한된 BCE를 가지고 코어 수를 맘대로 변경할 수 있는 멀티코어를 의미한다. 시뮬레이션 결과는 이것이 가장 좋은 성능을 보인다. 하지만, 아직 존재하지 않으므로 컴퓨터 아키텍트들에겐 최종적인 골이 되어야 한다고. 물론 이 논문은 off-chip bandwidth에 따른 성능 저하나 cache hit에 따른 성능 향상을 고려하지는 않는다.

발표 또한 아주 훌륭하다. 사실 발표 후반부 가면 논문에는 없는 구글의 데이터 센터의 병렬성의 평가를 위한 Karp-Flatt metric도 잠깐 소개한다. 클라우드를 구성하는 노드들 중 성능이 좋은 노드를 r-BCE 코어로 생각함으로써. 이들 간의 연관성을 찾아볼 수 있다. 사실 멀티코어나 mapReduce 같은 비공유 구조의 병렬 컴퓨팅은 크게 다른게 아니다. 요새는 참 좋은 강의들을 인터넷으로 구할 수 있는 좋은 시대인 거 같다. 

PS. 암달의 법칙 자체에 대한 설명은 이 블로그의 http://bart7449.tistory.com/244 를 참고하세요.

written by bart7449 
Posted by Bart