본문으로 이동
메뉴 여닫기
환경 설정 메뉴 여닫기
개인 메뉴 여닫기
로그인하지 않음
지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.

다중 프로세서 시스템(Multiprocessor System)은 둘 이상의 프로세서(CPU)가 기억장치와 입출력 장치를 함께 쓰면서 하나의 운영체제 아래에서 작업을 나누어 처리하는 컴퓨터 시스템이다.

프로세서 하나의 속도를 높이는 데는 한계가 있으므로 프로세서 수를 늘려 처리량을 키운다. 여러 프로세서가 동시에 서로 다른 프로세스를 실행할 수도 있고, 한 프로그램을 여러 조각으로 나눠 동시에 실행(병렬 처리)할 수도 있다. 한 프로세서가 고장 나도 나머지가 일을 이어받을 수 있어 신뢰성도 높아진다. 플린 분류로는 여러 명령어 흐름이 여러 데이터를 처리하는 MIMD 에 속한다. 오늘날의 멀티코어 CPU 도 한 칩 안에 들어간 다중 프로세서 시스템이다.

밀결합과 소결합

편집 원본 편집

프로세서들이 기억장치를 공유하는지에 따라 나눈다.

구분 밀결합(강결합) 시스템 소결합(약결합) 시스템
영문 Tightly-Coupled System Loosely-Coupled System
기억장치 모든 프로세서가 공유 기억장치(shared memory)를 함께 쓴다 프로세서마다 자기 기억장치를 갖는다
운영체제 하나의 운영체제가 모든 프로세서를 관리한다 노드마다 운영체제가 따로 있다
통신 방법 공유 기억장치를 읽고 써서 통신한다 통신망으로 메시지를 주고받는다
결합 정도·속도 프로세서 사이 결합이 강하고 통신이 빠르다 결합이 약하고 통신이 느리다
확장성 기억장치 접근 경쟁 때문에 프로세서 수에 한계가 있다 노드를 늘리기 쉽다
다른 이름·예 다중 처리기 시스템, SMP, NUMA 분산 처리 시스템, 클러스터, MPP

좁은 뜻의 다중 프로세서 시스템은 밀결합 시스템을 가리키고, 소결합 시스템은 분산 처리 시스템이라 부르는 경우가 많다.

운영체제 구성 방식

편집 원본 편집
방식 내용
주/종(Master/Slave) 주 프로세서 하나가 운영체제를 실행하고 입출력을 맡으며, 종 프로세서는 사용자 프로그램만 실행한다. 단순하지만 주 프로세서가 고장 나면 전체가 멈춘다
분리 실행(Separate Executive) 프로세서마다 운영체제와 자원을 따로 가진다. 한 프로세서의 고장이 전체로 번지지 않는다
대칭적 처리(Symmetric) 모든 프로세서가 동등하며 어느 프로세서든 운영체제를 실행할 수 있다. 가장 복잡하지만 가장 강력하고 오늘날의 SMP 가 이것이다
  • 시분할 공유 버스 : 모든 프로세서와 기억장치를 버스 하나에 연결한다. 간단하지만 프로세서가 늘면 버스 경쟁이 심해진다
  • 크로스바 교환 행렬 : 프로세서와 기억장치 모듈 사이를 교차점 스위치로 연결해 동시에 여러 경로를 만든다
  • 다중 포트 기억장치 : 기억장치 모듈마다 포트를 여러 개 두어 프로세서들이 각자 접근한다
  • 하이퍼큐브 : 프로세서를 n 차원 정육면체의 꼭짓점에 두고 모서리로 연결한다

캐시 일관성 문제

편집 원본 편집

밀결합 시스템에서 프로세서마다 캐시를 두면 같은 기억장치 블록의 복사본이 여러 캐시에 생긴다. 한 프로세서가 자기 캐시의 값을 바꾸면 다른 캐시에는 옛 값이 남는다. 그래서 다중 프로세서 시스템에서는 캐시 일관성(cache coherence) 문제를 반드시 고려해야 한다. 버스를 엿보는 스누핑 방식(MESI 등)이나 디렉터리 방식으로 해결한다. "캐시 일관성 문제를 고려할 필요가 없다" 는 틀린 설명이다. 캐시가 하나뿐인 단일 프로세서 시스템과 다른 점이 바로 이것이다.

병렬 처리와 데이터 의존성

편집 원본 편집

한 프로그램을 여러 프로세서로 나눠 실행하려면 서로 의존하지 않는 부분을 찾아야 한다. 앞 문장의 결과를 뒤 문장이 쓰는(읽기 후 쓰기 등) 데이터 의존성이 있는 부분은 순서대로 실행해야 하고, 의존성이 없는 부분만 동시에 실행할 수 있다.

  • 프로그래머가 병렬 프로그래밍 도구(스레드, OpenMP, MPI 등)로 직접 나누거나
  • 병렬화 컴파일러가 컴파일 과정에서 반복문 등의 데이터 의존성을 분석해 의존성이 없는 부분을 자동으로 분류한다
  • 나눌 수 없는 순차 부분이 남으므로 프로세서를 늘려도 성능 향상에는 한계가 있다 → 암달의 법칙
  • 여러 프로세서가 같은 자원에 접근할 때는 상호 배제가 필요하다 → 임계 구역, 스핀 락