병렬 컴퓨터의 성능 척도

병렬 컴퓨터는 프로세서들을 포함한 많은 하드웨어 자원들을 중복적으로 사용하여 구성하는 시스템이기 때문에, 단일 프로세서 시스테보다 성능이 높아지는 것은 당연한 일이다. 그러나 여러 가지 요인들에 의하여 성능 향상이 그에 비례하여 높아지지는 못하고 있다. 따라서 시스템 개발자들은 투자한 가격 대 성능비를 높이기 위하여 많은 노력을 계속하고 있다. 그를 위해 병렬 컴퓨터의 속도와 성능 향상 및 효율에 대한 척도에 대해서 살펴봐야 한다.

  • 처리 속도

처리 속도는 시스템에서 단위 시간당 처리할 수 있는 연산들의 수로써, 여러 척도들이 사용되고 있다.

MIPS(Millions of Instructions Per Second): 초당 실행 완료되는 명령어들의 수를 나타내는 단위이다. 예를 들어, 1MIPS 및 100MIPS는 각각 초당 백만 개 및 1억 개의 명령어들을 실행하는 속도를 나타낸다. 그리고 1GIPS = 1000MIPS 로서, 초당 10억 개의 명령어들을 실행하는 속도이다. 8개의 프로세서들로 구성된 시스템은 퇴대 80MIPS의 실행 속도를 가질 수 있다. (여러 요인들에 의하여 실제로는 그보다 더 낮아진다.) 이 척도는 SIMD에서는 하나의 명령어가 실행되는 동안에 여러 개의 데이터들에 대한 연산들이 동시에 수행되기 때문이다.

MFLOPS(Millions of Floating-Point Per Second): 부동 소수점 연산에 대한 처리 속도를 나타내는 단위이다. 이 척도는 주로 과학계산 응용들을 처리하는 슈퍼컴퓨터의 처리 속도를 나타내는 데 사용되는데, 최근에 슈퍼컴퓨터로 분류되고 잇는 시스템들은 데부분이 TFLOPS 이상의 처리 속도를 기본으로 가지고 있다.

LIPS(Logical Inferences Per Second): 위의 두 척도들은 모두 수치 계산의 처리 속도를 나타내는 반면, LIPS는 인공지능 프로그램의 처리 속도를 나타내는 척도이다. 즉, 시스템이 단위 시간당 처리하는 논리 추론들의 수를 나타낸다.

  • 속도 향상

속도 향상은 앞에서 설명하였던 바와 같이, 프로세서 수가 p개인 병렬컴퓨터가 단일 프로세서 시스템에 비하여 몇 배의 처리 속도를 가지는지를 나타내는 척도이다. 어떤 프로그램을 단일프로세서 시스템에서 처리하는 데 걸리는 시간을 T1이라 하고, 동일한 프로그램ㅁ을 p개의 프로세서들을 가진 병렬컴퓨터에서 처리하는 데 걸리는 시간을 Tp라고 할 때, 속도 향상 Sp를 나타내는 식을 다시 쓰면 아래와 같다.

스크린샷_2016-06-27_15-40-50

Sp는 일반적으로 프로세서 수보다 더 작은데, 그 주요 요인들로는 불균등한 작업부하 및 각종 병렬처리 오버헤드들을 들 수 있다.

  • 효율

병렬컴퓨터에서 효율이란 아래의 식과 같이 속도 향상과 프로세서의 수의 비율로 정의된다.

스크린샷_2016-06-27_15-40-53

예를 들어, p=10인 병렬컴퓨터를 이용하여 8배의 속도 향상을 얻었담면, Ep=0.8이 된다.  (80%) 즉, 효율은 투자 비용에 따른 효과를 나타내는 척도이다.

  • 중복성

중복성이란 어떤 응용 프로그램ㅁ을 병렬컴퓨터에서 처리하는 경우에 수행되는 연산들의 수와 단일 프로세서 시스템에서 처리하는 경우에 수행되는 연산들의 수의 비율을 말한다. 이 식은 아래와 같이 표현할 수 있는데, 이 값은 항상 1보다 크다. 그 이유는 병렬처리를 위하여 별도의 동작들(프로세서 동기화 및 프로세서 간 통신 등)이 추가적으로 수행되어야 하기 때문이다. 결과적으로, 그 연산들을 처리하는 만큼 시간이 더 소모됨으로써 속도 향상과 효율이 저하되는 것이다.

스크린샷_2016-06-27_15-40-56

  • 시스템 이용률

시스템 이용률은 아래 식과 같이 표현된다.

스크린샷_2016-06-27_15-40-58

이것은 하드웨어 자원들이 어느 정도 효율적으로 사용되는지를 나타내는 척도이다. 즉, 프로그램을 처리하는 전체 시간 동안에 하드웨어 자원들이 실제 사용중인 상태에 있었던 비율을 가리킨다.

단일 프로세서 시스템에서는 O1 = T1인 것으로 가정한다면, 식은 더 간단해진다. 병렬 컴퓨터의 시스템 이용률은 대부분 1보다 더 적은데, 그 주요 이유는 프로세서들이 처리할 작업량이 균등하지 못하여 일부 프로세서들은 대기 상태에 있게되는 것과, 데이터 의존성으로 인하여 다른 프로세서로부터 데이터가 전송되어 올 때까지 기다려야 하는 경우가 있기 때문이다. 이 부분은 나중에 별도로 상세 설명이 필요하다.

  • 병렬처리의 질

병렬처리가 어느 정도 효과적으로 이루어졌는지를 나타내는 질을 이전까지 작성한 식을 토대로 하여 종합적으로 작성하면 아래와 같이 정리된다.

스크린샷_2016-06-27_15-41-00

즉, 병렬처리의 질은 속도향상과 효율에 비례하며, 중복성에는 반비례한다. 여기서 Ep는 항상 1보다 작고, Rp는 1과 p 사이의 값을 가지므로, Qp의 상한값(limit)은 속도 향상인 Sp가 된다.

일단 이정도의 내용만 가지고 병렬 컴퓨터의 성능 척도에 대해서 간단하게 살펴볼 수 있었다.

병렬컴퓨터의 분류 – 시스템 구성 이미지

설명은 이전 글에서 간략하게 진행했었는데, 실제로 이해가 쉽기 위한 이미지를 그려서 올리는 것이 더 좋을 거 같아서 같이 올립니다.20160614_121323328_iOS

UMA 구조입니다.

20160614_121333230_iOS.jpg

NUMA 구조입니다.

20160614_121341534_iOS.jpg

COMA 구조입니다.

20160614_121349305_iOS.jpg

NORMA 구조입니다.

20160614_121357310_iOS.jpg

CC-NUMA 구조입니다.

이 구조들은 이미 다 봤을법한 구조입니다만.. 혹시나 해서 올립니다. 이전 글과 같이 보면 좋습니다.

병렬컴퓨터의 분류 – 시스템 구성

최근 병렬 컴퓨터의 공성능화를 위하여 여러 가지 형태의 시스템들이 구성되고 있다. 그들은 시스템의 크기, 용도, 사용자 환경, 비용, 프로세서간 통신 방버 및 OS의 수 등에 있어서 매우 다양하다. 이러한 시스템들은 프로세서, 기억장치 및 상호 연결망을 어떻게 구성하는지에 따라 일반적으로 아래와 같이 분류되고 있다.

  • 대칭적 다중프로세서(Symmetric Multiprocessors: SMP)
  • 대규모 병렬프로세서(Massively Parallel Processors: MPP)
  • 캐쉬-일관성 NUMA(Cache-Coherent NUMA: CC-NUMA)
  • 분산 시스템(Distributed Systems)
  • 클러스터 컴퓨터(Cluster Computer)

어디선가 많이 본 시스템 구성들이 있을 것이다. 그것들을 일단 간단하게 설명하려한다.

SMP는 대략 2~64개의 프로세서들로 구성되는 중대형급 단일 시스템으로서, 일반적으로 완전-공유 구조를 가진다. 즉, 프로세서들이 시스템 내의 모든 자원들을 공유한다. 그리고 시스템 내에는 하나의 OS만 존재하며, 어느 프로세서든 공유 기억장치에 적재된 OS 코드를 수행할 수 있다. 대칭적이라는 명칭이 의미하듯, 모든 프로세서들은 동등한 권한으로 자원들을 공유하고, OS를 수행하며, 자신을 위한 작업 스케쥴링도 직접 수행한다. 이 분류에 속하는 시스템들의 주요 특징들을 정리하면 아래와 같다.

  • 능력이 비슷한 다수의 프로세서들로 구성된다
  • 프로세서들은 주기억장치와 IO 장치들을 공유하고, 버스 혹은 간단한 연결 방식에 의해 상호연결된다.
  • 모든 프로세서들은 동등한 권한을 가지며, 같은 수준의 기능들을 수행할 수 있다.
  • 프로세서들간의 통신은 공유-기억장치를 통하여 이루어진다.
  • 작업 스케줄링 및 파일/데이터 수준에서의 프로그램들간 상호 작용은 하낭의 OS에 의해 통합적으로 지원된다.
  • 상호연결망의 병목 현상으로 인하여 시스템 크기에 한계가 있다.

MPP는 주로 무공유 구조(shared-nothing architecture)를 기반으로 구성되는 대규모 병렬처리시스템이다. 이 시스템은 고속의 상호연결망을 통하여 서로 연결되는 수백 혹은 수천 개의 프로세싱 노드들로 이루어진다. 각 노드는 일반적으로 간단한 구조의 프로세서와 기억장치로 구성되며, 여러 개의 프로세서들이 하나의 노드에 포함되기도 한다. 또한 노드들 중의 일부분은 디스크와 같은 주변장치들과의 인터페이스를 가지고 있다. 그리고 대부분의 경우에 각 노드는 내부 자원 관리와 통신 자원을 위한 마이크로 커널 수준의 독립적인 운영체제를 탑제한다. 노드들 간의 통신은 메시지-패싱(message-passing) 방식을 주로 사용하며, 통신 거리를 최대한 단축시키고 대역폭을 높이기 위하여 복잡도가 높은 상호연결망(interconnection network)들을 사용한다.

CC-NUMA에서는 UMA 혹은  NUMA 시스템으로 구성되는 독립적인 노드들 여러개가 상호연결망에 의해 접속되며, 캐쉬 일관성 프로토콜에 의해 모든 노드의 캐쉬들과 주기억장치에 저장된 데이터들 간에 일관성이 유지된다. 이 모델의 시스템을 구성하기 위해서는 모든 노드들이 가지고 있는 기억장치들이 전체적으로 하나의 전역 주소 공간을 가지는 분산 공유 기억장치시스템으로 구성되어야 한다. 구성도를 그려서 좀 더 자세한 설명을 다른 문서에서 진행하겠다.

CC-NUMA의 주요 장점은 소프트웨어를 거의 변경하지 않고도 SMP보다 더 높은 수준의 병렬성을 이용할 수 있기 때문에 효율적인 성능을 제공할 수 있다는 점이다. 그러나 만약 기억장치 액세스의 많은 부분이 원격 노드에 대한 것이라면, 성능은 떨어질 것이다. 그러한 성능 저하는 캐쉬를 사용함으로써 어느 정도 방지될 수 있다. 그리고 프로그램 코드와 데이터들의 지역성이 높다면, 원격 기억장치 액세스의 빈도는 더 낮아질 것이다.

분산 시스템은 독립적인 컴퓨터시스템들이 전통적인 네트워크에 의해 연결되어 있는 컴퓨팅 환경을 말한다. 이것은 노드 수만ㅁ큼의 시스템 이미지들을 가진다. 즉, 각 노드는 별도의 OS를 가지고 독립적인 컴퓨터로서 기능을 수행하며, 다른 노드들과 정보를 교호나하거나 병렬처리를 수행할 때만 네트워크를 통하여 서로 통신한다. 각 노드는 PC, 워크스테이션, SMP, MMP 혹은 그들의 조합으로 이루어진다.

클러스터 컴퓨터랑 고속 LAN이나 네트워크 스위치에 의해 서로 연결된 PC들 혹은 워크스테이션들의 집합체를 말한다. 분산 시스템과는 달리, 클러스터 컴퓨터에서는 모든 자원들이 단일 시스템 이미지로 사용될 수 있다. 즉, 어느 한 노드 컴퓨터에 접속한 사용자는 클러스터를 코든 노드들에 포함된 프로세서들과 주기억장치 및 디스크들로 구성되는 하나의 큰 시스템으로 간주하고 사용할 수 있다. 그리고 클러스터 내의 어느 한 컴퓨터에 결함ㅁ이 발생하더라도 다른 컴퓨터가 신속히 대체될 수 있기 때문에 가용성도 높다. 이와 같은 새로운 시스템 설계 개념을 이용하면, 저렴한 가격으로도 높은 성능과 신뢰도를 가지는 병렬처리 환경을 구축할 수 있기 때문에, 최근 웹 컴퓨팅 서버 등의 개발에 널리 사용되고 있다.