병렬 컴퓨터 아키텍처와 메모리 접근 모델

병렬 컴퓨터의 구성 방식과 Flynn 분류, UMA·NUMA·NORMA·COMA 메모리 모델, 병렬 처리 설계 과제를 정리합니다.

2026-08-14 · 최초 발행 2025-12-28

단일 프로세서의 한계를 넘는 방식

병렬 컴퓨터는 여러 프로세서를 연결하고, 서로 독립적인 프로세스를 동시에 실행하도록 만든 시스템이다. 단일 프로세서 성능을 계속 끌어올리는 데에는 물리적 한계가 있으므로, 전체 작업을 나누어 처리하는 방식이 현대 컴퓨팅의 중요한 축이 됐다.

슈퍼컴퓨터와 클라우드 서버, 스마트폰의 멀티코어 프로세서, GPU 컴퓨팅, 분산 시스템은 모두 병렬 처리 개념을 바탕으로 한다. 핵심은 프로세서를 많이 두는 데만 있지 않다. 프로세서 간 통신, 메모리 공유 방식, 작업의 분할과 재결합이 함께 설계되어야 한다.

병렬 컴퓨터(Parallel Computer)다수의 프로세서상호 연결독립적인 프로세스동시 처리시스템 성능향상상호 연결망(Interconnection Network)병렬 처리(Parallel Processing)응용 분야과학 계산·빅데이터·AI/ML

병렬 컴퓨터는 다수의 프로세싱 유닛(CPU, Core, GPU 등)을 사용하며, 상호 연결망으로 통신한다. 이 구조는 동시성(Concurrency)과 병렬성(Parallelism)을 지원하고, 요구에 따라 성능을 확장할 수 있다.

명령어와 데이터 흐름으로 보는 Flynn 분류

Michael J. Flynn의 분류 체계는 명령어 스트림과 데이터 스트림의 수를 기준으로 컴퓨터 구조를 구분한다.

Flynn's ClassificationSISD(Single Instruction,Single Data)SIMD(Single Instruction,Multiple Data)MISD(Multiple Instruction,Single Data)MIMD(Multiple Instruction,Multiple Data) 노이만일반 컴퓨터벡터 프로세서GPU이론적 존재(실용성 낮음)멀티코어 CPU분산 시스템

SISD는 하나의 명령어가 하나의 데이터를 처리하는 일반적인 폰 노이만 컴퓨터 구조다. SIMD는 하나의 명령어로 여러 데이터를 처리하며 벡터 프로세서와 GPU가 여기에 해당한다. MISD는 여러 명령어가 하나의 데이터를 다루는 형태로 이론적으로는 존재하지만 실용성은 낮다. MIMD는 여러 명령어와 여러 데이터 스트림을 처리하며 멀티코어 CPU와 분산 시스템에서 볼 수 있다.

공유 메모리와 분산 메모리의 선택

병렬 시스템의 구성은 프로세서와 메모리를 어떤 관계로 묶는지에 따라 달라진다.

SMP: 하나의 메모리를 함께 쓰는 구조

SMP(Symmetric Multi-Processing)는 여러 프로세서가 하나의 공유 메모리를 사용하는 대칭형 다중 처리 방식이다.

SMP 구조Processor 1공유 버스(Shared Bus)Processor 2Processor 3Processor 4공유 메모리(Shared Memory)I/O

모든 프로세서가 같은 메모리를 공유하고 단일 운영체제에서 실행되므로, 프로세서 간 통신과 데이터 공유가 비교적 간단하다. 부하 분산(Load Balancing)도 자동으로 이루어진다.

반면 공유 메모리에 대한 접근이 몰리면 메모리 경합(Contention)이 생기며, 공유 버스의 대역폭이 병목이 될 수 있다. 캐시 일관성(Cache Coherence) 문제도 함께 다뤄야 한다. 확장성에는 한계가 있으며 일반적으로 8~16개 프로세서 범위에서 언급된다.

멀티코어 데스크톱과 서버, 워크스테이션, 중소규모 서버가 이 방식의 적용 사례다.

MPP: 노드마다 메모리를 분리하는 구조

MPP(Massively Parallel Processing)는 각 프로세서가 로컬 메모리를 보유하는 대규모 병렬 처리 방식이다.

MPP 구조노드 4노드 3노드 2노드 1고속 상호연결망고속 상호연결망고속 상호연결망고속 상호연결망Processor 4Processor 1Local Memory 1Processor 2Local Memory 2Processor 3Local Memory 3Local Memory 4

노드는 독립적으로 동작하고, 노드 사이의 데이터 교환은 메시지 패싱(Message Passing)으로 수행한다. 수천~수만 개 프로세서까지 확장할 수 있으며 메모리 경합이 없고 장애 격리(Fault Isolation)도 가능하다.

그 대가로 MPI 등이 필요한 만큼 프로그래밍 복잡도가 높아지고, 통신 오버헤드와 데이터 분할·동기화 문제가 생긴다. 슈퍼컴퓨터, 대규모 클라우드 인프라, 빅데이터 처리 시스템에서 주로 활용된다.

메모리 접근 모델이 만드는 차이

메모리까지의 거리를 어떻게 취급하는지는 병렬 시스템의 성능과 확장성에 직접 영향을 준다.

UMA: 접근 시간이 같은 공유 메모리

UMA(Uniform Memory Access)에서는 모든 프로세서가 모든 메모리 위치에 같은 시간으로 접근한다. SMP 시스템에서 주로 사용되며, 프로그래밍이 단순하다는 특징이 있다.

UMA 아키텍처CPU 1상호 연결망CPU 2CPU 3CPU 4공유 메모리모든 CPU가메모리에동일한 접근 시간

NUMA: 로컬과 원격 메모리의 거리 차이

NUMA(Non-Uniform Memory Access)는 로컬 메모리와 원격 메모리의 접근 시간이 다른 모델이다. 로컬 메모리가 원격 메모리보다 빠르므로, 대규모 SMP 시스템에서는 OS 수준의 메모리 관리 최적화가 필요하다.

NUMA 아키텍처노드 2노드 1느린 접근CPU 3CPU 1Local MemoryCPU 2Local MemoryCPU 4빠른 접근:로컬 메모리느린 접근:원격 메모리

UMA보다 확장성과 메모리 대역폭을 높일 수 있지만, 데이터가 어느 메모리에 배치되는지를 최적화해야 하고 프로그래밍 복잡도도 커진다.

NORMA: 원격 메모리에 직접 접근하지 않는 구조

NORMA(No Remote Memory Access)는 각 프로세서가 자신의 메모리에만 직접 접근하는 완전 분산형 구조다. 다른 노드의 데이터는 메시지 패싱으로만 다룬다.

NORMA 아키텍처노드 3노드 2노드 1메시지 패싱메시지 패싱메시지 패싱ProcessorProcessorMemoryProcessorMemoryMemory

MPP 시스템의 전형적인 구조이며, 최고 수준의 확장성과 명확한 메모리 소유권을 제공한다. 통신 오버헤드가 가장 크고 프로그래밍도 가장 복잡해진다.

COMA: 캐시 사이를 이동하는 데이터

COMA(Cache Only Memory Access)는 전통적인 메인 메모리 대신 각 프로세서의 캐시만 두는 방식이다. 데이터는 상호 연결망을 통해 캐시 사이를 이동하며, 접근 패턴에 따라 자동 데이터 마이그레이션이 일어난다.

COMA 아키텍처상호 연결망상호 연결망상호 연결망상호 연결망Processor 1Cache 1Processor 2Cache 2Processor 3Cache 3Processor 4Cache 4메인 메모리 없음모든 데이터는캐시에만 존재

자주 사용하는 데이터가 사용 지점 가까이에 자동으로 놓이고, 캐시 일관성 프로토콜을 자연스럽게 적용할 수 있으며 메모리 계층 구조를 단순화한다. 다만 구현 복잡도가 매우 높고, 캐시 일관성 유지에 따른 오버헤드가 있으며 상용화 사례는 적고 주로 연구 단계에 머문다.

병렬화를 어렵게 만드는 설계 과제

병렬 시스템은 작업을 나누는 일부터 결과를 맞추는 일까지 여러 문제를 풀어야 한다.

병렬 컴퓨터주요 이슈문제 분할(Problem Partitioning)스케줄링(Scheduling)동기화(Synchronization)캐시 메모리(Cache Memory)어떻게 작업을나눌 것인가?어떤 프로세서에할당할 것인가?프로세서협력 방법은?일관성을어떻게 유지?

작업 분할과 결과 통합

문제 분할(Problem Partitioning)은 전체 문제를 여러 프로세서가 처리할 수 있는 작업으로 나누는 일이다.

전체 문제분할Task 1Task 2Task 3Task 4Processor 1Processor 2Processor 3Processor 4결과 통합

분할할 때는 모든 프로세서가 비슷한 양의 작업을 수행하도록 부하 균형(Load Balancing)을 고려해야 한다. 작업 간 의존성을 줄여 병렬성을 높이고, 프로세서 사이의 통신 오버헤드를 줄이며, 작업 크기인 입도(Granularity)를 세밀하게 할지 조대하게 할지도 결정해야 한다.

정적 할당과 실행 중 조정

스케줄링(Scheduling)은 분할한 작업을 프로세서에 배정하는 전략이다. 정적 스케줄링은 실행 전에 작업 할당을 결정하므로 오버헤드는 낮지만 실행 중 변화에 대응하기 어렵다. 동적 스케줄링은 실행 중에 작업 할당을 조정해 부하 균형을 유지할 수 있으나 오버헤드가 발생한다.

동기화가 필요한 지점

프로세서가 협력하면서 데이터 일관성을 유지하려면 동기화(Synchronization)가 필요하다.

Processor 3Processor 2Processor 1Processor 3Processor 2Processor 1동기화 포인트 (Barrier)모두 완료 후 다음 단계작업 수행작업 수행작업 수행완료 신호완료 신호완료 신호다음 작업다음 작업다음 작업

Lock/Mutex는 상호 배제로 임계 구역을 보호한다. Barrier는 모든 프로세서가 특정 지점에 도달할 때까지 대기하게 한다. Semaphore는 자원 접근을 제어하며, Message Passing은 메시지 교환 자체로 동기화를 수행한다.

캐시 복사본을 일관되게 유지하는 법

여러 캐시가 같은 데이터의 복사본을 보유한 상태에서 한 프로세서가 데이터를 바꾸면, 다른 프로세서의 캐시를 어떻게 처리할지가 캐시 일관성 문제의 핵심이다.

캐시 일관성문제시나리오:여러 캐시가같은 데이터 복사본 보유Processor 1이데이터 수정다른 프로세서의캐시는?Write-Through(즉시 메모리 갱신)Write-Back(나중에 메모리 갱신)Cache CoherenceProtocol(MESI, MOESI)

Write-Through는 데이터를 수정하면 즉시 메모리를 갱신하고, Write-Back은 나중에 메모리를 갱신한다. 캐시 일관성 프로토콜로는 MESI(Modified, Exclusive, Shared, Invalid), MOESI(MESI + Owned), 디렉토리를 통한 중앙 관리 방식인 Directory-based가 있다.

병렬 처리가 쓰이는 영역

병렬 컴퓨터과학 계산기후 모델링·분자시뮬레이션·천체 물리학빅데이터데이터 분석·검색 엔진·추천시스템AI/ML딥러닝 훈련·이미지처리·자연어 처리그래픽스렌더링·게임·VR/AR

과학 계산에서는 기후 모델링, 분자 시뮬레이션, 천체 물리학에 쓰인다. 빅데이터 영역에서는 데이터 분석, 검색 엔진, 추천 시스템을 처리하고, AI/ML에서는 딥러닝 훈련, 이미지 처리, 자연어 처리에 활용된다. 렌더링, 게임, VR/AR 같은 그래픽스 작업도 대표적인 적용 영역이다.

성능을 읽는 지표

가속비(Speedup)는 순차 실행 시간과 병렬 실행 시간의 비율이다.

Speedup = 순차 실행 시간 / 병렬 실행 시간

효율성(Efficiency)은 가속비를 프로세서 수로 나눈 값이다.

Efficiency = Speedup / 프로세서 수

확장성(Scalability)은 프로세서 수가 증가할 때 성능이 얼마나 향상되는지를 뜻한다. 강한 확장성은 문제 크기를 고정하고, 약한 확장성은 프로세서당 작업량을 고정한다.

병렬 컴퓨터병렬 처리컴퓨터구조메모리 아키텍처SMPMPP