[OS] 다중 처리 시스템과 플린(Flynn) 분류 - 19

2026. 4. 20. 13:14운영체제(OS)

다중 처리 시스템과 플린 분류

다중 처리 시스템과 플린(Flynn) 분류

여러 프로세서가 협력해 작업하는 다중 처리 시스템의 개념과, 명령어·데이터 흐름에 따라 컴퓨터 구조를 분류하는 플린 분류를 정리한다.

💡 핵심: 다중 처리기는 신뢰성과 연산 성능을 동시에 높이기 위해 사용된다. 플린 분류는 1966년에 제안됐지만, 현대 GPU·멀티코어 CPU를 이해하는 기본 틀로 여전히 유효하다.

1. 다중 처리 시스템(Multi-Processing System)

다중 처리 시스템은 주기억장치1와 입출력장치를 여러 프로세서가 공유하며 처리 능력을 나눠 쓰는 구조다. 프로세서 하나가 고장나도 나머지가 계속 동작해야 하는 환경, 즉 끊기면 안 되는 시스템에서 채택한다.

사용 목적은 두 가지로 나뉜다. 신뢰성(Reliability)은 일부 프로세서가 죽어도 시스템 전체가 멈추지 않게 보장하는 것이고, 컴퓨팅 능력(Computing Power)은 여러 프로세서의 연산을 합쳐 전체 처리 속도를 끌어올리는 것이다. 게임 서버나 결제 시스템처럼 무중단이 중요한 곳이 전자의 사례고, AI 학습 클러스터처럼 순수하게 빠른 연산이 목적인 곳이 후자에 해당한다.

다중 처리기의 핵심 특징

다중 처리기는 강결합(Tightly Coupled) 시스템으로 동작한다. 프로세서들이 기억장치와 입출력 채널을 하나의 공유 자원으로 함께 사용하며, 프로세스 간 통신도 공유 기억장치를 통해 이뤄진다. 단일 운영체제가 전체 프로세서를 관리한다는 점도 특징이다.

강결합 시스템 구조
CPU 0
P0
CPU 1
P1
CPU 2
P2
공유 기억장치 (Shared Memory)

↑ 프로세서들이 하나의 메모리를 통해 데이터를 주고받는다

다중 처리기 시스템의 분류 기준

다중 처리기 시스템은 어떤 기준으로 바라보느냐에 따라 다양하게 분류된다.

분류 기준 종류
구조적 분류 (명령어·데이터 흐름) SISD, SIMD, MISD, MIMD
결합강도 (기억장치·OS 공유 여부) 약결합(Loosely Coupled), 강결합(Tightly Coupled)
기억장치 연결 방식 시분할/공유버스, 크로스바 교환 행렬, 다중포트, 하이퍼큐브
운영체제 구성 주/종(Master/Slave), 분리(Separative), 대칭적(Symmetric)
병렬 처리 기법 파이프라인, 벡터, 배열 프로세서 등

이 분류들은 서로 독립적인 기준이다. 예를 들어 MIMD 구조이면서 강결합일 수도 있고, 약결합일 수도 있다. 어떤 조합이냐에 따라 시스템의 성격이 달라진다.

2. 플린(Flynn) 분류

1966년 스탠퍼드 대학 마이클 플린이 제안한 컴퓨터 아키텍처2 분류 체계다. 기준은 단순하다. 동시에 처리하는 명령어 스트림이 하나인지 여럿인지, 데이터 스트림이 하나인지 여럿인지, 이 두 축의 조합으로 4가지 유형을 정의한다.

SISD
Single Instruction
Single Data

명령어 1개, 데이터 1개.
폰 노이만 구조의 기본 형태. 순차 실행.

SIMD
Single Instruction
Multi Data

명령어 1개로 여러 데이터를 동시 처리.
GPU, 벡터 연산의 핵심 구조.

MISD
Multi Instruction
Single Data

여러 명령어가 하나의 데이터를 처리.
실제로는 사용되지 않는 구조.

MIMD
Multi Instruction
Multi Data

여러 명령어가 여러 데이터를 독립 처리.
멀티코어 CPU가 대표 사례.

SISD — 순차 처리의 시작점

명령어 하나가 데이터 하나를 처리하는 가장 단순한 구조다. 우리가 교과서에서 배우는 폰 노이만 구조 컴퓨터가 바로 이 형태다. 매 명령어마다 메모리에서 명령어와 데이터를 따로 가져와야 하기 때문에 처리 속도에 한계가 있다.

명령어
ADD
처리기
CPU
데이터
D0

파이프라인(Pipeline)3을 적용하면 명령어 처리 단계를 겹쳐 실행해 성능을 끌어올릴 수 있다. 지금도 단일 코어 기준의 동작을 설명할 때 SISD 개념이 기준점이 된다.

SIMD — 하나의 명령으로 대량 처리

제어장치(Control Unit) 하나가 명령어를 내리면, 여러 처리기가 각자 맡은 데이터에 동일한 연산을 동시에 수행하는 구조다. 데이터 간 의존성이 없고 같은 연산을 반복해야 하는 작업에서 위력을 발휘한다.

명령어
MUL
처리기 ×4
PE0 PE1 PE2 PE3
데이터 ×4
D0 D1 D2 D3

이미지의 모든 픽셀에 같은 밝기 보정을 적용하거나, 행렬 곱셈처럼 수천 개의 원소에 동일 연산을 반복하는 경우가 전형적인 사례다. 벡터 프로세서, 배열(Array) 프로세서가 이 구조를 사용한다. 현대에는 GPU의 기본 연산 모델이 SIMD 계열이며, 딥러닝 행렬 연산의 핵심 토대가 됐다. Intel AVX, ARM NEON 같은 CPU 내장 SIMD 명령어 세트도 이 개념의 연장선이다.

MISD — 이론상의 구조

여러 명령어가 단 하나의 데이터 스트림을 처리하는 구조다. 교재에서도 명시하듯 실제로는 사용되지 않는 구조다. 결함 허용 시스템에서 동일 데이터를 여러 방식으로 검증할 때 일부 적용 사례가 논의되는 정도다.

⚠️ MISD는 시험에서 "실제로 사용되지 않는 구조"로 묻는다. 존재하긴 하지만 상업적으로 구현된 사례가 없다는 점을 기억해둔다.

MIMD — 현대 멀티코어의 실체

각 프로세서가 서로 다른 명령어로 서로 다른 데이터를 독립적으로 처리하는 구조다. 프로세서들은 비동기적으로 동작하며, 공유 메모리나 분산 메모리를 통해 데이터를 주고받는다.

명령어 A
ADD
CPU 0
P0
데이터 A
D0
명령어 B
MUL
CPU 1
P1
데이터 B
D1

우리가 쓰는 PC의 멀티코어 CPU, 게임 서버의 멀티스레드 처리, AI 학습 클러스터까지 현대 병렬 컴퓨팅의 주류가 바로 MIMD다. Unity에서 C# Job System을 쓸 때 워커 스레드들이 서로 다른 작업을 병렬로 처리하는 것도 MIMD 구조 위에서 동작한다.

💡 SIMD vs MIMD 용도 정리:
GPU처럼 같은 연산을 대량 데이터에 반복 → SIMD 계열
멀티코어 CPU처럼 각 코어가 독립적인 작업 처리 → MIMD

플린 분류 한눈에 비교

분류 명령어 데이터 대표 사례 현황
SISD 1개 1개 초기 단일 CPU 단일 코어 기준 개념
SIMD 1개 여러 개 GPU, 벡터 프로세서 AI·그래픽의 핵심
MISD 여러 개 1개 사실상 미사용
MIMD 여러 개 여러 개 멀티코어 CPU, 슈퍼컴퓨터 현대 컴퓨팅의 표준

📎 용어 설명

  1. 주기억장치 — RAM으로 대표되는 메모리 영역. CPU가 직접 접근하는 작업 공간.
  2. 아키텍처(Architecture) — 컴퓨터 시스템의 구조와 동작 방식을 정의하는 설계 체계.
  3. 파이프라인(Pipeline) — 명령어 처리 단계(IF→ID→OF→EX)를 겹쳐서 동시에 수행해 처리량을 높이는 기법.
운영체제 다중처리시스템 플린분류 SIMD MIMD 병렬처리 컴퓨터구조