CS/컴퓨터 구조론

컴퓨터 구조론 8장 [고성능 컴퓨터시스템 구조 / 병렬컴퓨터의 분류]

devrabbit22 2025. 4. 22. 13:41

Flynn의 분류

  • 컴퓨터 시스템을 분류하는 방법으로는 프로그램 처리의 동시성을 기준으로 하는 Flynn의 분류(Flynn's classification)가 널리 사용되고 있다.
  • 이 분류에서는 프로세서들이 처리하는 명령어와 데이터의 스트림의 수에 따라 디지털 컴퓨터를 네 가지로 분류하고 있다.
  • 여기서 스트림이란 하나의 프로세서에 의해 순서대로 처리되는 일련의 명령어들과 데이터들의 흐름을 말한다.

명령어 스트림(instruction stream)

  • 실행되기 위하여 순서대로 프로세서로 들어오는 명령어 코드들의 흐름

데이터 스트림(data stream)

  • 명령어 실행에 사용되기 위하여 순서대로 프로세서로 들어오는 데이터들의 흐름

명령어 스트림과 데이터 스트림을 처리하기 위한 하드웨어 구조에 따른 Flynn의 분류

  • 단일 명령어 스트림 - 단일 데이터 스트림(SISD) 조직
  • 단일 명령어 스트림 - 복수 데이터 스트림(SIMD) 조직
  • 복수 명령어 스트림 - 단일 데이터 스트림(MISD) 조직
  • 복수 명령어 스트림 - 복수 데이터 스트림(MIMD) 조직

SISD 조직

  • 이 조직은 한 번에 한 개씩의 명령어와 데이터를 순서대로 처리하는 단일 프로세서 시스템에 해당된다. 이러한 시스템에서는 명령어가 한 개씩 순서대로 실행되지만, 실행 과정은 파이프라이닝 되어 있다.

SIMD 조직 (배열 프로세서 라고도 부른다.)

배열 프로세서 : 다수의 PU들을 이용하여 여러 개의 데이터들에 대한 연산을 동시에 처리하는 프로세서

  • 이러한 시스템은 여러 개의 프로세싱 유니트(Processing unit : PU)들로 구성되고, PU들의 동작은 모두 하나의 제어 유니트에 의해 통제된다. 제어 유니트는 명령어를 해독하고, 그 실행을 위한 제어 신호를 모든 PU들로 동시에 보낸다. 그에 따라 PU들은 동일한 연산을 수행하게 되지만, 각 연산에서 처리하는 데이터는 서로 다르다.
  • 결과적으로 모든 PU들은 하나의 명령어 스트림을 실행하지만, 여러 개의 데이터 스트림을 동시에 처리하게 되는 것이다.
  • 이 조직은 고속 계산을 전담하는 보조 프로세서 역할을 수행하던 과거의 슈퍼컴퓨터에서 많이 사용되었다.
  • 최근에는 CPU 내부에서 하나의 명령어에 의해 여러 개의 데이터들을 동시에 처리하는 SIMD 확장(SSE) 명령어들로도 구현되고 있다.

MISD 조직

  • 한 시스템 내에 N개의 프로세서들이 있고, 각 프로세서들은 서로 다른 명령어들을 실행하지만, 처리하는 데이터들은 하나의 스트림이다.
  • 프로세서들이 배열 형태로 연결되고, 한 프로세서가 처리한 결과가 다음 프로세서로 보내져 다른 연산이 수행되는 방식
  • 이 조직은 실제 구현된 경우가 거의 없으며, 분류상으로 존재한다.

 

MIMD 조직

  • 대부분의 다중 프로세서시스템들과 다중 컴퓨터 시스템들이 이 분류에 속한다.
  • 이 조직에서는 N개의 프로세서들이 서로 다른 명령어들과 데이터들을 처리한다. 
  • MIMD 시스템은 프로세서들 간의 상호작용 정도에 따라 두 가지로 나누어진다.
  • 밀결합 시스템(tightly-coupled system), 소결합 시스템(loosely-coupled system)

밀결합 시스템

  • 프로세서들 간의 상호작용 정도가 높은 다중프로세서 시스템
  • 밀결함 시스템의 전형적인 구조는 기억장치가 모든 프로세서들에 의해 공통으로 사용되는 공유-기억장치 구조이다.

다중컴퓨터 시스템이라고도 불리는 소결합 시스템

  • 프로세서들 간의 상호작용 정도가 낮고 거의 독립적으로 동작하는 다중프로세서 시스템
  • 소결합 시스템은 각 프로세서들이 자신의 지역 기억장치를 가진 독립적인 컴퓨터 모듈로 구성되고, 프로세서들 간의 통신은 메시지 전송 방식에 의해 이루어지는 구조를 가지고 있다.
  • 병렬컴퓨터는 프로그램 코드와 데이터를 병렬로 처리하는 시스템이므로, Flynn의 컴퓨터 분류들 중에서 SIMD 조직과 MIMD 조직이 그에 해당한다.
  • SIMD 조직에 해당하는 배열 프로세서와 MIMD 조직으로 분류되는 다중 프로세서 시스템의 근본적인 차이점
  • 프로세서의 독립성에 있다.
  • 배열 프로세서에서는 모든 프로세서들이 동일한 프로그램을 동기적으로 실행하고, 다중 프로세서 시스템에서는 각 프로세서들이 서로 다른 별도의 프로그램을 비동기적으로 실행한다.

기억장치 액세스 모델에 따른 분류

MIMD 조직은 기억장치의 위치와 주소지정 방식 및 기억장치 액세스 유형에 따라 모델이 구분된다.

  • 균일 기억장치 액세스(Uniform Memory Access UMA) 모델
  • 불균일 기억장치 액세스(Non-uniform Memory Access NUMA) 모델
  • 무-원격 기억장치 액세스(No-Remote Memory Access NORMA) 모델

UMA 모델

UMA 모델의 일반적인 구성도

  • 모든 프로세서들이 기억장치를 공유하며 액세스에 걸리는 시간도 같은 시스템 구조
  • 모든 프로세서들이 상호 연결망에 의해 접속된 기억장치들을 공유한다. 그리고 프로세서들은 기억장치의 어느 영역이든 액세스할 수 있으며, 그에 걸리는 시간이 모두 동일하다.

장점

  • 이 모델에 기반을 둔 시스템은 하드웨어가 간단하고 프로그래밍이 용이하다.

단점

  • 공유자원들(상호연결망, 기억장치 등)에 대한 경합이 높아지기 대문에 시스템 규모에 한계가 있다.
  • 이 모델의 시스템은 상호연결망으로서 버스가 사용되는 경우 최대 30개 정도의 프로세서들로 구성될 수 있으며, 크로스바 스위치(crossbar switch) 혹은 다단계 상호 연결마(multistage interconnection network:MIN) 등이 사용되는 경우에는 그보다 더 많은 프로세서들로 구성될 수 있다.

NUMA 모델

  • 공유 기억장치들과 프로세서들 간의 거리에 따라 액세스 시간이 달라지는 시스템 구조
  • NUMA 모델은 시스템 크게에 대한 UMA 모델의 한계를 극복하고 더 큰 규모의 시스템을 구성하기 위한 것으로서, 다수의 UMA 모듈들이 상호 연결망에 의해 접속되며, 전역 공유-기억장치(global shared-memory:GSM)도 가질 수 있다.
  • 시스템 내 모든 기억장치들이 하나의 주소 공간을 형성하는 분산 공유-기억장치(distributed shared-memory) 형태로 구성되기 때문에, 프로세서들은 자신이 속한 UMA 모듈 내의 지역 공유-기억장치(local shared-memory:LSM) 뿐 아니라 GSM 및 다른 UMA 모듈의 LSM들도 직접 액세스할 수 있다.
  • 기억장치 액세스 시간은 어느 위치의 기억장치를 액세스하는지에 따라 달라진다. 

프로세서에 의한 기억장치 액세스들의 세 가지 패턴

  • 지역 기억장치 액세스(local memory access) : 자신이 속한 UMA 모듈 내의 기억장치(LSM)에 대한 액세스로서, 가장 짧은 시간이 소요된다.
  • 전역 기억장치 액세스(global memory access) : 프로세서가 원하는 데이터가 전역 공유-기억장치(GSM)에 있는 경우에 이루어지는 액세스이다.
  • 원격 기억장치 액세스(remote memory access) : 다른 UMA 모듈에 위치한 기억장치LSM로부터 데이터를 액세스하는 경우로서, 가장 긴 시간이 소요된다.

NORMA 모델(no-remote memory)

NORMA 모델의 일반적인 구성도(P : 프로세서, M: 기억장치)

  • 각 프로세서들이 별도의 기억장치를 가지며, 공유 기억장치는 없는 구조로서, 분산-기억장치 시스템이라고도 한다.
  • 즉, 프로세서가 원격 기억장치(다른 노드의 기억장치)는 직접 액세스할 수 없는 시스템 구조이다.
  • 이 모델을 기반으로 하는 시스템에서는 프로세서와 기억장치로 구성되는 노드들이 메시지-전송 방식을 지원하는 상호연결망에 의해 서로 접속된다.
  • 어느 한 노드의 프로세서가 다른 노드의 기억장치에 저장되어 있는 데이터를 필요로 하는 경우에, 그 기억장치를 직접 액세스하지 못한다.
  • 대신에 그 노드로 기억장치 액세스 요구 메시지(memory access request message)를 보내며, 메시지를 받은 노드는 해당 데이터를 인출하여 그것을 요구한 노드로 다시 보내준다.
  • 각 노드가 별도의 기억장치를 가지고 있기 때문에 분산-기억장치 시스템(distributed-memory system)이라고도 부른다.
  • 이 모델을 위한 상호 연결망으로는 매시(mesh), 하이퍼큐브(hypercube), 링(ring), 토러스(torus) 등이 사용된다.

시스템 구성 방법에 따른 분류

고성능 컴퓨터 시스템들은 프로세서와 기억장치 및 상호연결망의 접속 방법에 따라 분류

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

SMP

  • 프로세서들이 모든 시스템 자원들을 공유하며 동등한 권한을 가지는 시스템 구조
  • 대략 16~64개 정도의 프로세서들로 구성되는 중형급 시스템으로서, 일반적으로 완전-공유 구조(shared-everything architecture)를 가진다. 즉, 프로세서들이 시스템 내의 모든 자원들(버스, 기억장치, I/O 장치 등)을 공유한다.
  • 시스템 내에는 하나의 운영체제(OS)만 존재하며, 어느 프로세서든 공유 기억장치에 적재된 OS 코드를 수행할 수 있다. 대칭적(symmetric)이라는 명칭이 의미하듯이 모든 프로세서들은 동등한 권한으로 자원들을 공유하고, OS를 수행하며, 자신을 위한 작업 스케줄링도 직접 한다.

이 분류에 속하는 시스템들의 주요 특징 정리

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

공유-기억장치 다중프로세서시스템의 기본 구성도

MPP(massively parallel processors)

  • 프로세서와 기억장치로 이루어지는 많은 수의 노드들로 구성되며 자원 공유가 없는 시스템 구조
  • SMP와 반대되는 설계 개념으로서, 무공유 구조(shared-nothing architecture)를 기반으로 구성되는 대규모 병렬처리시스템이다. 이 시스템은 고속의 상호 연결망을 통하여 서로 연결되는 수백 혹은 수천 개의 프로세싱 노드(processing node)들로 이루어진다. 각 노드는 일반적으로 간단한 구조의 프로세서와 기억장치들로 구성되며, 때로는 여러 개의 프로세서들이 하나의 노드에 포함되기도 한다.
  • 또한 노드들 중의 일부분은 디스크와 같이 주변장치들과의 인터페이스를 가지고 있다. 그리고 각 노드에는 내부 자원 관리와 통신 지원을 위한 독립적인 OS가 탑재되어 있다. 노드들 간의 통신은 메시지-전송 방식을 주로 사용하며, 통신 거리를 최대한 단축시키고 대역폭을 높이기 위하여 복잡도가 높은 상호연결망들을 사용한다.
  • 이 분류에 속하는 시스템들의 일반적인 구성도는 NORMA 모델과 유사하다.

CC-NUMA(cache-coherent NUMA)

  • 노드들에 포함된 모든 캐시들과 기억장치들 간에 데이터 일관성이 유지되는 분산-기억장치시스템 구조
  • CC-NUMA에서는 노드로서 UMA 혹은 NUMA 시스템이 사용되며, 그러한 노드들이 상호연결망에 의해 접속된다.
  • 캐시 일관성 프로토콜에 의해 모든 노드에 포함된 캐시들과 주기억장치들 간에 데이터 일관성(data consistency)이 유지된다. 
  • 이 모델의 시스템을 구성하기 위해서는 모든 노드들이 가지고 있는 기억장치들이 전체적으로 하나의 공통 주소 공간을 가지는 분산 공유-기억장치시스템(distributed shared-memory system)으로 구성되어야 한다.

CC-NUMA 시스템의 일반적인 구성도

  • 독립적인 노드들이 상호연결망에 의해 접속된 전형적인 CC-NUMA 조직을 보여주고 있다. 이 경우에는 각 노드가 사실상 하나의 SMP에 해당한다.
  • 즉, 각 노드는 주기억장치를 공유하는 여러 개의 프로세서들을 포함하고 있으며, 각 프로세서는 캐시를 가지고 있다.
  • 시스템 전체적으로 보면 각 노드가 별도의 기억장치를 가지고 있지만, 프로세서의 관점에서 보면 시스템 내 모든 기억 장소는 시스템 전체적으로 유일한 주소를 가지고있다.
  • 프로세서가 어떤 데이터를 액세스 할 때, 만약 원하는 데이터가 그 프로세서의 캐시에 있지 않다면, 주기억장치 액세스 동작이 시작된다. 만약 그 데이터를 포함하는 블록이 그 노드 내의 기억장치에 있다면, 그 블록은 지역 버스(local bus)를 통하여 즉시 인출된다.
  • 그러나 만약 그 블록이 다른 노드의 기억장치에 저장되어 있다면, 그 블록을 인출하기 위한 요구(request)가 자동적으로 상호연결망을 통해 해당 노드로 보내져서 인출 동작이 진행된다. 이러한 모든 동작들은 하드웨어에 의해 자동적으로 발생하며, 프로세서에게는 보이지 않는다. 
  • 이와같은 시스템에서 데이터 일관성은 디렉토리를 이용하여 유지된다.

여기서 디렉토리란? 캐시에 적재된 주기억장치 블록들에 대한 상태 정보 및 포인터를 포함하는 데이터 구조

CC-NUMA의 주요 장점

  • 소프트웨어를 거의 변경하지 않고도 SMP 수준의 병렬성을 이용할 수 잇는 대규모 병렬 컴퓨터시스템을 구성할 수 있다.
  • 그러나 기억장치 액세스의 많은 부분이 원격 노드에 대한 것이라면, 성능은 떨어질 것이다. 그러한 성능 저하는 캐시를 사용함으로써 어느 정도 방지될 수 있다. 그리고 프로그램 코드와 데이터들의 지역성이 높다면, 원격 기억장치 액세스의 빈도는 낮아지게 된다.
  • 분산 시스템은 독립적인 컴퓨터 시스템들이 전통적인 네트워크에 의해 연결되어 있는 컴퓨팅 환경을 말한다. 이것은 노드 수만큼의 시스템 이미지들(system images)을 가진다. 즉, 각 노드는 별도의 OS를 가지고 독립적인 컴퓨터로서 기능을 수행하며, 다른 노드들과 정보를 교환하거나 병렬 처리를 수행할 때만 네트워크를 통하여 서로 통신한다. 노드는 PC, 워크스테이션, SMP, MPP 혹은 그들의 조합으로 이루어진다.

클러스터 컴퓨터(cluster computer)

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

Reference

컴퓨터 구조론 개정 5판

https://velog.io/@chocaprio/08%EC%9E%A5-%EA%B3%A0%EC%84%B1%EB%8A%A5-%EC%BB%B4%ED%93%A8%ED%84%B0%EC%8B%9C%EC%8A%A4%ED%85%9C-%EA%B5%AC%EC%A1%B0

 

08장 고성능 컴퓨터시스템 구조

8.1 병렬처리의 개념 및 필요성 8.2 병렬처리의 단위 8.3 병렬컴퓨터의 분류 8.3.1 Flynn의 분류 8.3.2 기억장치 액세스 모델에 따른 분류 8.3.3 시스템 구성 방법에 따른 분류 8.4 다중 프로세서시스템 구

velog.io