병렬처리 시스템 개요
병렬운영체제, 컴파일러, 메모리 공유 등 관련 소프트웨어 및 여러 기술들이 발전함에 따라, 직렬처리 시스템 구조에서 병렬처리 시스템 구조로 그 양상이 변화하게 되었습니다.
병렬처리 시스템 구조
병렬처리 시스템은 크게 다중장치 구조, 파이프라인 구조로 분류됩니다.
다중장치구조는 공간을 병렬화하는 방식으로, 다수의 CPU로 여러개의 작업을 병렬로 처리할 수 있는 시스템입니다.
파이프라인구조는 시간을 병렬화하는 방식으로, 하나의 CPU에서 작업을 계층적으로 구분(segment)하여 병렬로 처리할 수 있는 시스템입니다.
멀티프로세서
멀티프로세서는 위 병렬처리 시스템 중 2개 이상의 CPU를 갖는 시스템으로, MIMD의 흐름을 가지고 있습니다.
멀티컴퓨터와는 별개의 개념으로, 하나의 운영체제에 의해 프로세서들의 상호동작이 제어되고 이슈 발생 시 프로세서간 co work를 통해 문제를 해결합니다.
즉 다수의 독립적인 작업들이 병렬적으로 처리되며, 이러한 작업들은 여러 부분으로 나뉘게 됩니다.
멀티프로세서는 사용자가 작업명령(=API, 프로그램 언어)을 명시적으로 기재해주거나, 컴파일러가 자동적으로 프로그램 병렬성을 감지하여 처리를 합니다.
멀티프로세서의 종류
멀티프로세서는 연관성 있는 작업을 처리하기 위해 공유메모리 및 밀착결합 멀티프로세서 구조를 활용하며, 연관성이 크지 않은 작업을 처리할 경우엔 분산메모리 및 loosely coupled 구조를 활용합니다(Round Robin처럼 Rotational 처리).
시분할 공용 버스 구조
단일 공통 버스 시스템이라고도 하며, 여러 CPU가 1개의 공통버스라인(common bus line)을 통해 1개의 공유메모리에 접근하는 구조입니다.
동일 시점에서 하나의 프로세서만이 전송을 수행하며, 충돌가능성이 있을 경우 버스 제어기에 의해 해결이 가능합니다.
단일경로 속도가 시스템 성능에 많은 영향을 주는 구조입니다.
다중 포트 메모리
CPU, I/O Processor, 메모리 모듈 등 각 처리 주체들이 독립적인 Bus line을 따로 가지고 있는 시스템입니다.
Memory에 접근하는 입구, 즉 포트가 여러 개 존재하여 다중 포트 메모리라고 일컫습니다.
각 모듈은 특정 시점에 어떤 포트가 메모리에 접근할 지 결정하기 위한 내부적인 논리회로를 보유하고 있으며, 보통은 매모리와 가까운 곳에 위치한 순서대로 포트를 지정합니다.
프로세서와 메모리 사이의 높은 전송률을 보이지만, 메모리 제어 논리회로 등으로 가격이 비싸다는 단점이 있습니다.
크로스바 스위치
다중 포트 메모리 구조가 각 처리주체(CPU 등)별 독립적인 Bus line이 따로 존재하였다면, 크로스바 스위치는 프로세서와 메모리 간의 완전 연결성이 구현된 구조입니다.
프로세서의 Bus line에서 메모리 모듈과의 교차점이 존재하며, 이 교차점을 크로스 포인트로 구성하여 모든 프로세서와 메모리간 경로가 이어질 수 있도록 구성합니다.
이때 크로스포인트는 경로 역할도 하면서, 주어진 순위에 따른 중재 역할을 수행하기도 합니다.
하드웨어 구성이 그만큼 복잡해져 구현이 상당히 어려운 단점이 있습니다.
하이퍼큐브 상호연결
2^n 개의 프로세서가 n차원 이진큐브로 입체적인 연결구조를 가지고 있는 방식입니다.
loosely coupled의 일종으로, 연관성이 크지 않는 자료들을 처리할 때 활용할 수 있습니다.
큐브 내 프로세서들은 노드로 표현할 수 있으며, CPU, 로컬메모리, I/O 인터페이스 등을 포함합니다.
크로스바 스위치처럼 각 프로세서들이 메모리 연결 간 완전 독립성을 구현하기 위하여 고안되었으며, 하드웨어 복잡성을 감소하였습니다.