다중 프로세서 시스템
IT 위키
더 많은 작업
다중 프로세서 시스템(Multiprocessor System)은 둘 이상의 프로세서(CPU)가 기억장치와 입출력 장치를 함께 쓰면서 하나의 운영체제 아래에서 작업을 나누어 처리하는 컴퓨터 시스템이다.
프로세서들이 기억장치를 공유하는지에 따라 나눈다.
| 구분 | 밀결합(강결합) 시스템 | 소결합(약결합) 시스템 |
|---|---|---|
| 영문 | Tightly-Coupled System | Loosely-Coupled System |
| 기억장치 | 모든 프로세서가 공유 기억장치(shared memory)를 함께 쓴다 | 프로세서마다 자기 기억장치를 갖는다 |
| 운영체제 | 하나의 운영체제가 모든 프로세서를 관리한다 | 노드마다 운영체제가 따로 있다 |
| 통신 방법 | 공유 기억장치를 읽고 써서 통신한다 | 통신망으로 메시지를 주고받는다 |
| 결합 정도·속도 | 프로세서 사이 결합이 강하고 통신이 빠르다 | 결합이 약하고 통신이 느리다 |
| 확장성 | 기억장치 접근 경쟁 때문에 프로세서 수에 한계가 있다 | 노드를 늘리기 쉽다 |
| 다른 이름·예 | 다중 처리기 시스템, SMP, NUMA | 분산 처리 시스템, 클러스터, MPP |
좁은 뜻의 다중 프로세서 시스템은 밀결합 시스템을 가리키고, 소결합 시스템은 분산 처리 시스템이라 부르는 경우가 많다.
| 방식 | 내용 |
|---|---|
| 주/종(Master/Slave) | 주 프로세서 하나가 운영체제를 실행하고 입출력을 맡으며, 종 프로세서는 사용자 프로그램만 실행한다. 단순하지만 주 프로세서가 고장 나면 전체가 멈춘다 |
| 분리 실행(Separate Executive) | 프로세서마다 운영체제와 자원을 따로 가진다. 한 프로세서의 고장이 전체로 번지지 않는다 |
| 대칭적 처리(Symmetric) | 모든 프로세서가 동등하며 어느 프로세서든 운영체제를 실행할 수 있다. 가장 복잡하지만 가장 강력하고 오늘날의 SMP 가 이것이다 |
- 시분할 공유 버스 : 모든 프로세서와 기억장치를 버스 하나에 연결한다. 간단하지만 프로세서가 늘면 버스 경쟁이 심해진다
- 크로스바 교환 행렬 : 프로세서와 기억장치 모듈 사이를 교차점 스위치로 연결해 동시에 여러 경로를 만든다
- 다중 포트 기억장치 : 기억장치 모듈마다 포트를 여러 개 두어 프로세서들이 각자 접근한다
- 하이퍼큐브 : 프로세서를 n 차원 정육면체의 꼭짓점에 두고 모서리로 연결한다
밀결합 시스템에서 프로세서마다 캐시를 두면 같은 기억장치 블록의 복사본이 여러 캐시에 생긴다. 한 프로세서가 자기 캐시의 값을 바꾸면 다른 캐시에는 옛 값이 남는다. 그래서 다중 프로세서 시스템에서는 캐시 일관성(cache coherence) 문제를 반드시 고려해야 한다. 버스를 엿보는 스누핑 방식(MESI 등)이나 디렉터리 방식으로 해결한다. "캐시 일관성 문제를 고려할 필요가 없다" 는 틀린 설명이다. 캐시가 하나뿐인 단일 프로세서 시스템과 다른 점이 바로 이것이다.
한 프로그램을 여러 프로세서로 나눠 실행하려면 서로 의존하지 않는 부분을 찾아야 한다. 앞 문장의 결과를 뒤 문장이 쓰는(읽기 후 쓰기 등) 데이터 의존성이 있는 부분은 순서대로 실행해야 하고, 의존성이 없는 부분만 동시에 실행할 수 있다.