맨위로가기

다중 처리

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

다중 처리는 여러 개의 프로세서를 사용하여 여러 작업을 동시에 처리함으로써 작업 속도를 향상시키는 기술이다. 다중 처리 시스템은 프로세서의 대칭성, 결합 방식, 명령어 및 데이터 흐름에 따라 다양한 종류로 분류된다. 대칭형 다중 처리(SMP), 비대칭형 다중 처리(ASMP), 비균일 메모리 접근(NUMA) 방식 등이 있으며, 프로세서 결합 방식에는 밀결합과 소결합이 있다. 명령어 및 데이터 흐름에 따라 SIMD, MIMD, MISD 방식으로 나뉜다. 소프트웨어 구현 시 자원 경합, 데드락, 캐시 일관성 문제 등의 어려움이 발생할 수 있으며, 이러한 문제를 해결하기 위해 동기화 기법과 캐시 동기화 기술이 사용된다.

더 읽어볼만한 페이지

  • 컴퓨터의 유형 - 데스크톱 컴퓨터
    데스크톱 컴퓨터는 독립된 디스플레이, 키보드, 마우스 등을 연결하여 책상 위에 놓고 사용하는 개인용 컴퓨터로, 1970년대 후반 등장 이후 다양한 폼 팩터와 용도로 발전해왔으며, 노트북과 스마트 기기의 등장으로 성장세가 둔화되었으나 고성능을 요구하는 분야에서 중요한 위치를 차지하며 게이밍 데스크톱 시장의 성장과 함께 재조명받고 있다.
  • 컴퓨터의 유형 - 양자 컴퓨터
    양자 컴퓨터는 양자역학적 현상을 이용하여 정보를 처리하는 컴퓨터로, 큐비트를 통해 0과 1을 동시에 표현하여 특정 연산에서 기존 컴퓨터보다 빠른 속도를 보이며 암호 해독, 신약 개발 등 다양한 분야에 혁신을 가져올 것으로 기대된다.
  • 컴퓨터 용어 - 중앙 처리 장치
    중앙 처리 장치(CPU)는 컴퓨터 시스템의 핵심 부품으로, 프로그램 명령어를 해석하고 실행하여 데이터를 처리하는 장치이다.
  • 컴퓨터 용어 - 운영체제 서비스 관리
  • 병렬 컴퓨팅 - 슈퍼컴퓨터
    슈퍼컴퓨터는 일반 컴퓨터보다 훨씬 높은 성능을 가진 컴퓨터로, 복잡한 계산과 시뮬레이션을 수행하며, 프로세서, 메모리, 스토리지, 네트워크 등으로 구성되어 병렬 처리를 통해 높은 성능을 구현하고, 군사, 기상 예측, 과학 기술 분야, 인공지능 등 다양한 분야에서 활용되고 있다.
  • 병렬 컴퓨팅 - 컴퓨터 클러스터
    컴퓨터 클러스터는 여러 대의 상용 컴퓨터를 고속 네트워크로 연결하여 고성능 컴퓨팅 시스템을 구축하는 방식으로, 슈퍼컴퓨터를 포함한 다양한 분야에서 높은 가용성과 확장성을 제공하며, 클러스터 미들웨어를 통해 시스템 관리, 부하 분산, 통신 방식, 데이터 공유 등을 지원하고 노드 장애 관리를 위한 펜싱 기술을 활용한다.
다중 처리
개요
다중 처리 시스템의 예시
다중 처리 시스템의 예시
설명하나의 컴퓨터 시스템 내에서 두 개 이상의 중앙 처리 장치(CPU)를 사용하는 것
특징
목적시스템의 처리량 향상
시스템 유형대칭 다중 처리 (SMP)
비대칭 다중 처리 (AMP)
장점높은 처리량 및 성능
향상된 신뢰성 및 가용성
작업량 공유 및 균형
운영 체제 지원
지원 운영 체제유닉스
리눅스
윈도우 NT 및 이후 버전
macOS
관련 기술
관련 기술병렬 처리
동시성
분산 컴퓨팅
고려 사항
고려 사항자원 공유 및 동기화 문제
소프트웨어 설계의 복잡성 증가
CPU 간 통신 오버헤드

2. 특징

다중 처리는 프로세서를 여러 개 사용하여 여러 개의 작업을 동시에 수행함으로써 작업 속도를 높일 수 있다. 또한, 프로세서 중 일부에 문제가 발생하더라도 다른 프로세서를 이용해 처리할 수 있으므로 신뢰성이 높다.

3. 다중 처리의 종류

다중 처리 시스템은 여러 개의 프로세서(CPU)를 사용하여 여러 작업을 동시에 처리함으로써 작업 속도를 높이고 시스템의 안정성을 향상시키는 기술이다. 다중 처리는 프로세서 대칭성, 프로세서 결합 방식, 명령어 및 데이터 흐름에 따라 다양한 종류로 분류될 수 있다.
1. 프로세서 대칭성다중 처리 시스템에서 모든 CPU가 동일한 기능을 수행하는지, 아니면 일부 CPU가 특수한 기능을 수행하는지에 따라 대칭형과 비대칭형으로 나뉜다.


  • 대칭형 다중 처리(SMP): 모든 CPU가 동등하게 시스템 자원을 공유하고 작업을 처리한다. 운영 체제 및 응용 프로그램 개발이 비교적 용이하며, 인텔 제온(Xeon) 프로세서, AMD 옵테론(Opteron) 프로세서 기반 시스템이 대표적이다.
  • 비대칭형 다중 처리(ASMP): CPU마다 특정 역할이 할당되거나 일부 CPU만 특정 작업을 수행한다. 시스템 설계는 복잡하지만 특정 작업에 최적화된 성능을 제공할 수 있다. 초기 예시로는 불 감마 60, 벌로스 대형 시스템, TRS-80 모델 16 등이 있다.[11]
  • 비균일 메모리 접근(NUMA): 각 CPU가 자신에게 가까운 메모리 영역(로컬 메모리)에는 빠르게 접근하고, 다른 CPU의 메모리 영역(공유 메모리)에는 상대적으로 느리게 접근하는 방식이다.

2. 프로세서 결합 방식프로세서들이 시스템 자원(메모리, 입출력 장치 등)을 공유하는 정도에 따라 밀결합과 소결합으로 분류된다.

  • 밀결합 다중 처리 (Tightly Coupled): 여러 프로세서가 메모리를 공유하며, 일반적으로 더 높은 성능을 가진다. 멀티코어는 가장 진보된 형태의 밀결합 멀티프로세싱이라고 할 수 있다.
  • 소결합 다중 처리 (Loosely Coupled): 독립된 컴퓨터들이 네트워크로 연결되어, 저렴하고 구축이 쉽지만, 성능은 상대적으로 낮다. 리눅스 Beowulf 클러스터는 소결합 시스템의 대표적인 예이다.

3. 명령어 및 데이터 흐름프로세서가 명령어와 데이터를 처리하는 방식에 따라 MIMD, SIMD, MISD로 분류된다.

  • 다중 명령어, 다중 데이터(MIMD): 여러 프로세서가 각자 다른 명령어와 데이터를 처리하는 방식이다. 대부분의 다중 처리 시스템이 이 방식을 채택한다.
  • 단일 명령어, 다중 데이터(SIMD): 여러 프로세서가 동일한 명령어를 여러 데이터에 동시에 적용하는 방식이다. 벡터 처리라고도 불린다.
  • 다중 명령어, 단일 데이터(MISD): 여러 처리 장치가 동일한 데이터에 대해 서로 다른 명령어를 실행하는 방식이다. 주로 결함 허용 시스템에서 중복성을 제공하는 데 사용된다.

3. 1. 프로세서 대칭성

다중 처리 시스템에서 모든 CPU가 동일한 기능을 수행하는지, 아니면 일부 CPU가 특수한 기능을 수행하는지에 따라 분류된다. 주어진 시스템의 대칭성(또는 그 부재)은 하드웨어와 운영 체제 소프트웨어 설계 고려 사항의 조합에 의해 결정된다.[1]

예를 들어, 하드웨어 또는 소프트웨어 고려 사항에 따라 특정 CPU만 모든 하드웨어 인터럽트에 응답해야 하는 반면, 시스템의 다른 모든 작업은 CPU 간에 동일하게 분산될 수 있다. 또는 커널 모드 코드 실행이 특정 CPU로만 제한될 수 있으며, 사용자 모드 코드는 프로세서의 모든 조합에서 실행될 수 있다. 이러한 제한이 있는 다중 처리 시스템은 설계하기 더 쉬운 경우가 많지만, 모든 CPU가 활용되는 시스템보다 효율성이 떨어진다.[1]

모든 CPU를 동등하게 처리하는 시스템은 대칭형 다중 처리(SMP) 시스템이라고 하며, 모든 CPU가 동등하지 않은 시스템에는 내부 자원 분할 방식에 따라 비대칭형 다중 처리(ASMP), NUMA 다중 처리, 컴퓨터 클러스터 등이 있다.[1] 비대칭형 다중 처리의 예로는 IBMOS/360DECVMS가 있다.[1]

3. 1. 1. 대칭형 다중 처리 (SMP)

모든 CPU를 동등하게 취급하는 시스템을 대칭형 다중 처리(SMP) 시스템이라고 한다. 모든 CPU가 동일하지 않은 시스템에서는 시스템 리소스를 비대칭형 다중 처리(ASMP), 비균일 메모리 접근(NUMA) 다중 처리 및 클러스터링 다중 처리 등 여러 가지 방식으로 나눌 수 있다.[1] 프로세서를 여러 개 사용하여 여러 개의 작업을 동시에 수행함으로써 작업 속도를 높이고, 프로세서 중 일부에 문제가 발생하더라도 다른 프로세서를 이용해 처리할 수 있으므로 신뢰성이 높다.[1]

대칭형 다중 처리는 운영 체제 및 응용 프로그램 개발이 비교적 용이하다는 장점이 있다.[2] 인텔 제온(Xeon) 프로세서, AMD 옵테론(Opteron) 프로세서 기반 시스템이 대표적인 예시이다.[2]

3. 1. 2. 비대칭형 다중 처리 (ASMP)

CPU마다 특정 역할이 할당되거나, 일부 CPU만 특정 작업을 수행하는 방식이다. 시스템 설계는 복잡하지만, 특정 작업에 최적화된 성능을 제공할 수 있다. 초기 예시로는 불 감마 60, 벌로스 대형 시스템, TRS-80 모델 16 등이 있다.[11]

마스터/슬레이브 다중 처리 시스템에서 마스터 CPU는 컴퓨터를 제어하고 슬레이브 CPU는 할당된 작업을 수행한다. CPU는 속도와 아키텍처 측면에서 완전히 다를 수 있다. 일부 CPU는 공통 버스를 공유할 수 있으며, 각 CPU는 개인 자원을 위한 전용 버스를 가질 수도 있고, 공통 통신 경로를 제외하고는 격리될 수도 있다. CPU는 공통 RAM을 공유하거나 다른 프로세서가 접근할 수 없는 전용 RAM을 가질 수 있다. 마스터와 슬레이브의 역할은 CPU 간에 변경될 수 있다.

1982년에 출시된 TRS-80 모델 16은 두 개의 마이크로프로세서를 가지고 있었는데, 하나는 8비트 자일로그 Z80 CPU이고 다른 하나는 16비트 모토로라 68000 CPU였다. 시스템 부팅 시 Z-80이 마스터 역할을 하고, 제닉스 부팅 후에는 68000이 운영 체제 및 응용 프로그램을 실행하고 Z-80은 입출력 작업을 담당하는 슬레이브 프로세서가 되었다.

3. 1. 3. 비균일 메모리 접근 (NUMA)

비균일 메모리 접근(NUMA) 다중 처리 시스템에서 모든 CPU가 동일하지는 않다. 각 CPU는 자신에게 더 가까운 메모리 영역(로컬 메모리)에 빠르게 접근하고, 다른 CPU의 메모리 영역(공유 메모리)에는 상대적으로 느리게 접근한다. 따라서 메모리 접근 속도 차이를 고려하여 시스템을 설계해야 한다.

3. 1. 4. 마스터/슬레이브 다중 처리

마스터/슬레이브 다중 처리 방식에서 마스터 CPU는 컴퓨터 시스템을 제어하고, 슬레이브 CPU는 마스터 CPU로부터 할당받은 작업을 수행한다.[11] CPU는 속도와 아키텍처 면에서 완전히 다를 수 있다. 일부 또는 모든 CPU가 공통 버스를 공유할 수 있으며, 각 CPU는 개인 자원을 위한 전용 버스를 가질 수도 있고, 공통 통신 경로를 제외하고는 격리될 수도 있다. 마찬가지로, CPU는 공통 RAM을 공유하거나 다른 프로세서가 접근할 수 없는 전용 RAM을 가질 수 있다. 마스터와 슬레이브의 역할은 CPU 간에 변경될 수 있다.

초기 메인프레임 마스터/슬레이브 다중 처리기의 예시로는 불 감마 60과 벌로스 B5000이 있다.[11]

3. 2. 프로세서 결합 방식

프로세서 결합 방식은 CPU들이 시스템 자원(메모리, 입출력 장치 등)을 공유하는 정도에 따라 밀결합과 소결합으로 분류된다.

  • 밀결합(Tightly Coupled): 여러 프로세서가 메모리를 공유하며, 일반적으로 더 높은 성능을 가진다. 하지만, 더 비싸고 복잡하다. 멀티코어는 가장 진보된 형태의 밀결합 멀티프로세싱이라고 할 수 있다.
  • 소결합(Loosely Coupled): 독립된 컴퓨터들이 네트워크로 연결되어, 저렴하고 구축이 쉽지만, 성능은 상대적으로 낮다.


과거에는 밀결합 시스템이 고성능, 소형화되었지만 가격이 비쌌다. 최근에는 일반적인 컴퓨터의 소형화로 소결합 시스템 구축 비용이 저렴해졌다. 또한, 멀티코어화로 인해 일반 PC에서도 밀결합 시스템이 일반화되면서, 프로세서 결합 방식은 더욱 복잡한 체계로 발전했다. 이에 따라 메모리 국지성 관리와 메시지 패싱 시스템 최적화가 더 중요한 과제가 되고 있다.

3. 2. 1. 밀결합 다중 처리 (Tightly Coupled)

밀결합 다중 처리 시스템은 버스 레벨에서 결합된 여러 개의 CPU를 가진다. 해당 CPU들은 공유 메모리에 접근할 수 있다(SMP 또는 UMA). 혹은, 로컬 메모리와 공유 메모리를 모두 갖춘 메모리 계층 구조에 참여할 수 있다(SM)(NUMA). IBM p690 Regatta는 하이엔드 SMP 시스템의 한 예이다. 인텔 제온 프로세서는 비즈니스 PC용 멀티 프로세서 시장을 지배했으며, 2004년 AMD옵테론 프로세서가 출시되기 전까지 유일한 주요 x86 옵션이었다. 두 종류의 프로세서 모두 자체 온보드 캐시를 가지고 있었지만, 공유 메모리에 접근할 수 있었다. 제온 프로세서는 공통 파이프를 통해, 옵테론 프로세서는 시스템 RAM에 대한 독립적인 경로를 통해 접근했다.

칩 멀티 프로세서, 즉 멀티코어 컴퓨팅은 단일 칩에 여러 개의 프로세서를 배치하는 것을 포함하며, 가장 극단적인 형태의 밀결합 다중 처리로 간주될 수 있다. 여러 개의 프로세서를 가진 메인프레임 시스템은 종종 밀결합되어 있다.

3. 2. 2. 소결합 다중 처리 (Loosely Coupled)

소결합 다중 처리 시스템(종종 클러스터라고 함)은 여러 대의 독립적인 컴퓨터를 고속 통신망(예: 기가비트 이더넷)으로 연결한 것이다. 각 컴퓨터는 자체 운영 체제를 가질 수 있다. 리눅스 Beowulf 클러스터는 소결합 시스템의 대표적인 예이다.

소결합 시스템은 일반적으로 저렴한 범용 컴퓨터를 사용하며, 클러스터에서 사용이 끝난 후에는 독립적인 컴퓨터로 재활용할 수 있다. 소결합 시스템은 긴밀하게 결합된 시스템에 비해 구성 요소가 해당 시스템을 위해 특별히 설계되지 않아 전력 소비 효율이 낮은 경향이 있다.

3. 3. 명령어 및 데이터 흐름

프로세서는 명령어와 데이터를 처리하는 방식에 따라 분류된다. 다중 처리에서 프로세서는 여러 컨텍스트에서 단일 명령어 시퀀스(단일 명령어, 다중 데이터 또는 SIMD, 종종 벡터 처리에 사용됨)를 실행하거나, 단일 컨텍스트에서 여러 명령어 시퀀스(다중 명령어, 단일 데이터 또는 MISD, 고장 안전 설계의 중복성에 사용되며 때로는 파이프라인 프로세서 또는 하이퍼 스레딩을 설명하는 데 적용됨)를 실행하거나, 여러 컨텍스트에서 여러 명령어 시퀀스(다중 명령어, 다중 데이터 또는 MIMD)를 실행한다.

멀티프로세싱에서 단일 시스템 내의 여러 프로세서에서 독립적인 여러 명령 열을 각각 다른 여러 컨텍스트에 대해 실행하는 경우를 MIMD라고 한다. 동일한 명령 열을 여러 컨텍스트에서 병행하여 실행하는 경우는 SIMD 또는 벡터 컴퓨터라고 한다. 여러 명령 열을 하나의 컨텍스트에 대해 실행하는 것은 MISD라고 하며, 결함 허용 시스템을 의미하지만, 파이프라인 처리나 하이퍼 스레딩 기술을 의미하기도 한다. SISD는 일반적인 멀티프로세싱이 아닌 시스템을 가리킨다.

3. 3. 1. MIMD (Multiple Instruction, Multiple Data)

MIMD(Multiple Instruction, Multiple Data)는 여러 프로세서가 각자 다른 명령어와 데이터를 처리하는 방식이다.[1] 독립적인 여러 작업을 병렬로 처리하는 데 적합하며, 대부분의 다중 처리 시스템이 MIMD 방식을 채택하고 있다.[1]

MIMD는 처리를 여러 스레드로 분할하며, 각 스레드는 하드웨어적인 프로세서 상태를 가진다.[1] 이 스레드들은 하나의 프로세스 내에 존재할 수도 있고, 별도의 프로세스에 속해 있을 수도 있다.[1] 여러 스레드가 디스패치되기를 기다리는 상태가 되므로, MIMD는 하드웨어 자원 이용 효율이 높다.[1]

MIMD에서는 데드락이나 자원 경합이 발생할 수 있지만,[1] 스레드가 자원에 접근할지 여부는 예측하기 어려워 경합을 효율적으로 관리하기는 어렵다.[1] MIMD는 운영 체제에 특별한 코딩을 필요로 하지만,[1] 응용 프로그램은 멀티 스레드화되지 않는 한 이러한 고려가 필요하지 않다.[1] 싱글 스레드 응용 프로그램에게 MIMD용 운영 체제는 투명한 경우가 많다. (응용 프로그램에서 자체적으로 여러 프로세스의 스케줄링 등을 수행하는 경우는 예외이다.)[1] 시스템 소프트웨어와 사용자 소프트웨어는 세마포어(락 또는 게이트라고도 함)와 같은 소프트웨어 상호 배제 기구를 사용하여 다른 스레드가 같은 데이터에 접근하지 못하도록 방지한다.[1]

MIMD 시스템에서는 캐시 동기화가 중요한데,[1] 각 프로세서가 개별 캐시를 가지고 데이터를 처리하므로, 메모리 상의 정보를 공유하려면 캐시 간의 일관성을 유지해야 하기 때문이다.[1] 이를 위해 하드웨어적인 캐시 동기화 기구가 필요하며, 다음과 같은 방법들이 사용된다.[1]

  • 메모리에 쓸 때 캐시에 쓰는 것과 동시에 버스에 주소를 브로드캐스트한다. (데이터는 메모리에 쓰지 않는다.)[1]
  • 쓰기를 수행한 프로세서 외의 프로세서는 통지된 주소에 해당하는 캐시 라인을 가지고 있다면, 그것을 삭제한다.[1]
  • 메모리 읽기로 캐시 미스가 발생했을 때, 메모리를 읽으러 가지만, 메모리가 아닌 최신 내용을 가진 프로세서의 캐시가 자동으로 응답한다.[1]


하지만 캐시를 동기화하면 싱글 프로세서보다 버스를 사용하는 빈도가 많아지므로, 버스의 고성능화가 시스템 성능 향상에 필수적이다.[1] 즉, 단일 버스에 다수의 프로세서를 연결하면 버스가 병목 현상이 되어 성능이 정체될 수 있다.[1]

3. 3. 2. SIMD (Single Instruction, Multiple Data)

SIMD(Single Instruction, Multiple Data)는 여러 프로세서가 동일한 명령어를 여러 데이터에 동시에 적용하는 방식이다. 벡터 처리라고도 불리며, 대규모 데이터에 대한 반복적인 연산에 효율적이다. 특히 주어진 작업을 완료하는 데 걸리는 시간이 문제가 되는 경우에 유효하다. 단일 명령 스트림이 여러 처리 유닛에 제공되고, 해당 처리 유닛이 대량의 데이터에 동시 병렬적으로 동일한 처리를 수행한다.[2]

이러한 아키텍처는 일부 계산 애플리케이션에서 막대한 성능 향상을 가져오지만, 애플리케이션이나 시스템 작업이 병렬로 실행 가능한 부분으로 분할될 수 없는 경우 시스템의 대부분이 유휴 상태가 된다는 단점이 있다.[2]

애플리케이션은 아키텍처의 이점을 최대한 활용하기 위해 신중하고 특수한 코딩이 필요하며, SIMD 환경에 맞는 코드를 생성하도록 설계된 특수한 최적화 컴파일러를 사용해야 한다. 이러한 컴파일러에서는 명시적으로 병렬 실행해야 할 부분을 지정하기 위한 확장 구문 등이 제공될 수 있다(예: SIMD형 슈퍼컴퓨터인 ILLIAC IV용 FORTRAN에 있는 DO FOR ALL 문).[2]

SIMD 멀티프로세싱은 컴퓨터 시뮬레이션 등 특정 분야에서 널리 사용되지만, 범용 데스크톱 및 상업용 컴퓨터 환경에서는 그다지 사용되지 않는다.[2]

1990년대 후반부터 범용 프로세서에 SIMD 실행 유닛이 채택되었다. 수퍼스칼라 실행 유닛이 동시에 모두 예약/종료되도록 마이크로 코드를 스케줄링하도록 전용 명령을 마련하여, 프로세서 내부의 모든 실행 유닛을 사용하여 여러 데이터를 일제 처리하는 방식이 일반화되었다. 현재 SIMD라고 하면 이 설계를 가리킨다. 기초 기술은 VLIW를 크게 참고했으며, SIMD 실행 유닛의 발전형으로 EPIC 아키텍처 등이 개발되었다.[2]

3. 3. 3. MISD (Multiple Instruction, Single Data)

MISD(Multiple Instruction, Single Data, 다중 명령어, 단일 데이터) 다중 처리는 주로 결함 허용 시스템에서 중복성을 제공하는 데 유용하다. 여러 처리 장치가 동일한 데이터에 대해 서로 다른 명령어를 실행하여, 하나의 처리 장치에서 고장이 발생하더라도 처리를 계속할 수 있다. 이러한 MISD 아키텍처에서는 장애를 감지하기 위해 처리 장치 간에 처리 결과를 비교해야 한다. 그 외의 용법에서는 이점이 없고, 비용 효율이 떨어진다. MISD에 의해 성능이 향상되는 일은 없다. 소프트웨어에서는 MISD임을 의식하지 않아도 되도록 구현할 수도 있다.

극한 환경에서의 신뢰성 확보가 필요한 우주 개발에서의 탐사선이나 심해 작업 로봇, 잠수정 제어 등에 이용되는 경우가 많다. 소행성 탐사로 유명한 하야부사에는 3중으로 중복화되어 다수결 제어에 의한 처리를 수행하는 컴퓨터가 탑재되었다.

또한, 프로세서의 이상이 치명적인 사태를 초래할 수 있는 항공기의 항공 전자 공학이나, 절대적인 신뢰성이 원칙인 원자력 발전 등에서는 법적으로 MISD 또는 이에 준하는 신뢰성을 가지고 있음을 증명해야 한다.

4. 소프트웨어 구현 상의 문제점

여러 스레드 또는 프로세스의 데이터를 병합할 때 충돌 해결, 데이터 일관성, 버전 관리, 동기화 등으로 인해 상당한 오버헤드가 발생할 수 있다.

4. 1. 자원 경합 및 데드락

MIMD 방식의 멀티프로세싱 환경에서는 여러 스레드가 프로세스 자원을 공유하므로 데드락(교착 상태)이나 자원 경합과 같은 문제가 발생할 수 있다. 스레드가 어떤 자원에 접근할지는 예측하기 어렵기 때문에 경합 관리가 쉽지 않다. 이러한 문제를 해결하기 위해 운영 체제 수준의 특별한 코딩이 필요하며, 시스템 소프트웨어와 사용자 소프트웨어 모두 "세마포어"(또는 "락" 또는 "게이트")와 같은 소프트웨어 상호 배제 기법을 사용하여 다른 스레드가 동일한 데이터에 접근하는 것을 방지해야 한다. 이러한 락 처리는 코드의 복잡성을 증가시키고 성능을 저하시킬 수 있지만, 멀티프로세싱의 장점을 상쇄할 정도는 아니다.

CPU 간 하드웨어 수준에서도 캐시 경합 및 손상과 같은 유사한 경합이 발생할 수 있으며, 이는 하드웨어나 하드웨어와 소프트웨어의 협력을 통해 해결해야 한다. 예를 들어, 각 프로세서마다 캐시를 두고, 캐시 동기화 기법을 통해 데이터 일관성을 유지해야 한다. 캐시 동기화 방법으로는 메모리에 쓸 때 캐시와 버스에 동시에 브로드캐스트하거나, 쓰기를 수행한 프로세서 외에는 해당 주소의 캐시 라인을 삭제하는 등의 방법이 있다. 하지만 캐시 동기화를 시도하면 단일 프로세서보다 버스 사용 빈도가 높아져 버스가 병목 현상이 될 수 있으므로, 버스의 고성능화가 시스템 성능 향상에 중요하다.

4. 2. 캐시 일관성 문제

각 프로세서가 자체 캐시를 가지고 있을 때, 메모리 상의 공유 데이터 일관성을 유지하기 어렵다. 한 프로세서의 캐시 변경 사항을 다른 프로세서에 알리지 않으면 데이터 불일치가 발생한다.

이 문제는 프로그래밍 기법만으로는 해결할 수 없으며, 하드웨어적인 캐시 동기화 기구가 필요하다. 캐시 동기화를 위한 몇 가지 해결 방법은 다음과 같다.

  • 쓰기 작업 시 캐시와 버스에 동시에 브로드캐스트한다. (주소만 해당, 메모리에는 쓰지 않음)
  • 쓰기를 수행한 프로세서 외 다른 프로세서들은 통지된 주소에 해당하는 캐시 라인을 가지고 있다면 삭제한다.
  • 캐시 미스 발생 시 메모리를 읽으러 가지만, 최신 데이터를 가진 다른 프로세서의 캐시가 자동 응답한다.


간단한 방법으로, 다른 프로세서가 읽으려는 캐시 라인을 메모리에 다시 쓰고(셧다운) 사용 시 메모리에서 읽게 할 수 있지만, 성능 저하가 발생한다. 캐시 동기화는 싱글 프로세서보다 버스 사용 빈도를 높여, 고성능 버스가 시스템 성능 향상에 중요해진다. 따라서 단일 버스에 많은 프로세서를 연결하면 병목 현상으로 성능이 정체될 수 있다.

참조

[1] 서적 Introduction to Microsoft Windows NT Cluster Server: Programming and Administration https://books.google[...] CRC Press
[2] 웹사이트 Multiprocessor dictionary definition - multiprocessor defined http://www.yourdicti[...] 2018-03-16
[3] 웹사이트 multiprocessor http://www.thefreedi[...] 2018-03-16
[4] 서적 The architecture of Computer Hardware and Systems Software. An Information Technology Approach. Wiley 2009
[5] 서적 Understanding Computers: Today and Tomorrow, Comprehensive https://books.google[...] Cengage Learning 2012-02-13
[6] 서적 Introduction to Embedded Systems https://books.google[...] Tata McGraw-Hill Education
[7] 서적 Introduction to the New Mainframe: z/OS Basics https://books.google[...] IBM
[8] 서적 Foundations of Computer Science https://books.google[...] Laxmi Publications
[9] 서적 Advanced Computer Architectures https://books.google[...] CRC Press 2005-09-20
[10] 서적 Network Processors: Architecture, Programming, and Implementation https://books.google[...] Morgan Kaufmann
[11] manual The Operational Characteristics of the Processors for the Burroughs B5000 http://www.bitsavers[...] Burroughs Corporation 2023-06-27
[12] 서적 TRS-80 Model II Technical Reference Manual Radio Shack 1980
[13] 서적 Concurrent Programming: Algorithms, Principles, and Foundations Springer
[14] 웹인용 보관된 사본 http://www.computerw[...] 2011-03-11



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com