병렬컴퓨터의 분류 – 기억장치 엑세스 모델

이전에 작성한 Flynn의 분류들 중에서 병렬 컴퓨터의 구조로써 가장 널리 채택되고 있는 MIMD 조직은 기억장치의 위치와 주소지정 방식 및 프로세서들에 의한 기억장치 엑세스 시간에 따라 4가지 모델로 구분될 수 있다.

  • 균일 기억장치 액세스(Uniform Memory Access: UMA) 모델
  • 불균일 기억장치 액세스(Nonuniform Memory Access: NUMA) 모델
  • 개쉬-온리 기억장치 액세스(Cache-Only Memory Access: COMA) 모델
  • 무원격 기억장치 엑세스(No-Remote Memory Access: NORMA) 모델

UMA 모델에서는 모든 프로세서들이 상호연결망에 의해 접속된 주기억장치 모듈들을 공유한다. 그리고 프로세서들은 공유 기억장치의 어느 영역이든 같은 방법으로 액세스할 수 있으며, 그에 걸리는 시간도 동일하다. 이 모델에 기반을 둔 시스템은 하드웨어가 간단하고 프로그래밍이 용이하다는 장점이 있는 반면에, 공유 자원들에 대한 경합이 높아지기 때문에 시스템 크기에 한계가 있다. 일반적으로, 상호연결망으로 버스가 사용되는 경우에는 최대 30개의 프로세서들, 크로스바 스위치 혹은 다단계 상호연결망 등이 사용되는 경우에는 최재 64개의 프로세서들로 구성될 수 있다.

NUMA 모델은 시스템 크기에 대한 UMA 모델의 한계를 극복하고 더 큰 규모의 시스템을 구성하기 위한 것으로써, 다수의 UMA 모델들이 상호연결망에 의해 접속되며, 전역 공유 기억장치(Global Shared Memory)도 가질 수 있다. 이 모델에서는 시스템 내의 모든 기억장치들이 하나의 주소 공간을 형성하는 분산 공유 기억장치 구조를 가지기 때문에, 프로세서들은 자신이 속한 UMA 모듈의 기억장치뿐 아니라 GSM 및 다른 UMA 모듈의 기억장치들도 직접 액세스 할 수 있다. 그러나 기억장치 액세스 시간은 액세스 할 기억장치의 위치에 따라 잘라진다. 즉, 프로세서에 의한 기억장치 액세스는 세 가지 패턴으로 분류된다.

  1. 지역 기억장치 엑세스: 자신이 속한 UMA 모듈 내의 기억장치에 대한 액세스로써, 가장 짧은 시간이 소요된다.
  2. 전역 기억장치 액세스: 프로세서가 원하는 데이터가 전역 공유 기억장치에 있는 경우에 이루어지는 액세스다.
  3. 원격 기억장치 액세스: 다른 UMA 모둘에 위치한 기억장치로부터 데이터를 액세스하는 경우로, 가장 긴 시간이 소요된다.

COMA 모델에서는 시스템 내에 주기억장치가 존재하지 않으며, 각 프로세서가 가지고 있는 기억장치는 모드 캐쉬로부터 동작한다. 모든 캐쉬들은 하나의 공통 시억장치 주소공간을 형성하며, 다른 프로세서의 개쉬에 대한 엑세스는 분산 캐귀 디렉토리들에 의해 지원된다. 초기 단계에서는 데이터들이 임의의 캐쉬에 저장되어 있으며, 실행 시간 동안에 실제 그 데이터들을 사용할 프로세서의 캐쉬로 이동된다.

NORMA 모델은 이름에서 의미하듯, 프로세서가 원격 기억장치는 직접 액세스할 수 없는 병렬컴퓨터 구조이다. 프로세서와 기억장치로 구성되는 노드들은 메시지 전송 방식을 지원하는 상호연결망에 의해 서로 접속된다. 그러나 어떤 노드의 프로세서가 다른 노드의 기억장치에 저장되어 있는 데이터를 원하는 경우에, 그 기억장치를 직접 액세스하지 못한다. 그 대신에, 그 노드로 기억장치 액세스 요구 메시지를 보내며, 메시지를 받은 노드는 해당 데이터를 인출하여 그것을 요구한 노드로 보내준다. 이러한 시스템에서는 각 노드가 별도의 기억장치를 가지고 있기 때문에 분산 기억장치 시스템이라고도 부른다. 이 모델을 위한 상호 연결망들이 별도로 존재하므로 이것들은 나중에 별도의 문서로 다룬다.

병렬컴퓨터의 분류 – 구조적 특징

병렬 컴퓨터는 구조적 특징에 따라서도 분류가 될 수 있다. 구조적인 부분에 대해서는 지속적으로 새로운 것들이 많이 만들어지고 하지만, 대표적인 것들만 우선 살펴보려 한다.

  • 파이프라인 컴퓨터

파이프라인 컴퓨터는 시간적 병렬성을 이용한 중첩 계산을 수행하는 시스템이다. 즉, 체인 평태로 연결된 연산 요소들이 동시에 연산을 수행함으로써 병렬성을 제공하는 것이다. 일반적으로 파이프라이닝은 프로세서의 명령어 실행 유니트와 ALU 내부 회로에 적용된다. 그리고 파이프라인된 ALU들은 벡터 처리 유니트의 구현으로 확장될 수 있다. (벡터는 1차원 데이터 배열을 말한다.) 만약 n개의 데이터들로 구성된 두 개의 벡터들에 대한 덧셈 ㅁ연산을 수행한다면, 같은 위치의 두 데이터들을 각각 더해야 한다. 이와 같이 n개의 동일한 연산들이 반복 수해오디는 경우에 파이프라인이 매우 효과적이며, Cray Y-MP와 같은 슈퍼컴퓨터들이 여러 개의 벡터 유니트들을 이용하는 대표적인 시스템이다.

  • 배열 프로세서

배열 프로세서는 SIMD  조직에 해당되며, 공간적 병렬성을 실현하기 위해 여러 개의 동기화된 프로세싱 유니트들을 사용한다. 이 유니트들은 하나의 제어 유니트로부터 동시에 전송되는 동일한 연산 명령을 서로 다른 데이터에 대하여 수행한다. 따라서 이러한 처리 방식을 데이터 병렬모델이라고 부른다.

  • 다중프로세서 시스템

다중프로세서 시스템은 MIMD 조직에 해당되며, 시스템 자원들(기억장치, IO 등)을 공유하는 여러 개의 프로세서들을 이용하여 비동기적 병렬성을 실현하는 시스템이다.

배열 프로세서와 다중 프로세서 시스템의 근본적인 차이점은 프로세서들이 수행하는 프로그램의 독립성에 있다. 배열 프로세서에서는 모든 프로세서들이 동일한 프로그램을 동기적으로 실행하고, 다중프로세서 시스템에서는 각 프로세서들이 서로 다른 별도의 프로그램을 비동기적으로 실행한다.

이 시스템들에 대해서는 이것들 말고도 정리할 것들이 많은데 아예 별도의 문서를 또 만들어서 작성해야겠다.