본문 바로가기

운영체제

중앙처리장치(CPU) - 5 (병렬 컴퓨팅, 병렬 컴퓨터)

728x90
반응형

Goal

  • 병렬 컴퓨팅이 필요한 이유에 대해 설명할 수 있다.
  • 병렬 컴퓨터의 예시를 들 수 있다.

병렬 컴퓨팅이란?

병렬 컴퓨팅이란 여러 개의 연산을 동시에 병렬적으로 처리하는 방법을 의미한다.

병렬 컴퓨팅

예를 들어, 두 개의 연산이 서로 의존성이 없다면 한 개 연산이 완료될 때까지 나머지 연산이 기다리지 않고 동시에 수행하는 것이 바로 병렬컴퓨팅의 기본 개념이다.

여기서 동시에 수행할 수 있는 대상을 찾는 것이 병렬처리의 가장 시작점이라고 할 수 있으며, 이러한 일련의 과정을 병렬화라고 한다.

 

병렬 처리 분류

  • 비트 레벨 병렬 처리(bit-level parallelism) : 컴퓨터 워드 크기에 따른 처리
    • ex) 32 / 64 비트
  • 명령어 레벨 병렬 처리(instruction-level parallelism) : 명령어 순서를 재배열하고 그룹으로 묶어 병렬로 실행
    • ex) 파이프라인, 슈퍼스칼라, VLIW
  • 데이터 병렬 처리(data parallelism) : 데이터를 병렬로 처리하는 여러 노드에 데이터를 분산하는 데 중점
    • ex) 벡터 프로세서, SIMD
  • 작업 병렬 처리(task parallelism) : 다중프로세서를 이용하여 작업을 분산하는데 중점
    • ex) 다중 프로세서, MIMD

병렬 컴퓨터란? (parrallel computer)

병렬컴퓨터란 다수의 프로세서들이 수많은 연산을 동시에 병렬처리할 수 있는 형태로 조직된 컴퓨터를 의미

 

싱글 프로세서만으로는 한계가 있어 다수의 프로세서를 사용하는 방법이 고안됨

 

병렬 컴퓨터 결합 구조에 따른 분류

약결합(Loosely Coupled) 시스템

  • 각 프로세서마다 독립된 메모리를 가진 시스템
  • 각 시스템마다 독자적인 운영체제
  • 네트워크를 통해 상호 연결
  • ex
    • 클러스터 컴퓨팅 : 여려 대의 컴퓨터가 LAN으로 연결되어 하나의 컴퓨터처럼 동작하는 기술
    • 그리드 컴퓨팅 : WAN으로 연결된 이기종(heterogeneous) 컴퓨들의 집합 (분산 컴퓨팅)

 

강결합(Tightly Coupled)시스템

  • 다수의 프로세서가 메모리를 공유하는 시스템
  • 하나의 운영체제가 모든 프로세서를 관리하는 구조
  • 프로세서 간의 통신은 공유 메모리를 통해서 이루어짐
  • 하나의 메모리를 사용하므로 CPU 간의 결합력이 강함
  • 공유 메모리를 차지하려는 프로세서 간의 경쟁을 최소화해야 함
  • ex)
    • 멀티코어 프로세서

강결합 시스템 예시

 

 

플린의 분류법(Flynn's taxonomy)

컴퓨터를 명령어(instruction)와 자료의 흐름(data stream)에 따라 분류하는 방법

최신 설계되는 컴퓨터는 SIMD, MIMD 병렬 컴퓨터 구조를 채택하고 있다.

 

(1) SISD(Single Instruction Single Data stream) : 단일 명령 + 단일 데이터

  • 하나의 명령에 하나의 데이터가 순차적으로 처리되는 전통적인 폰 노이만 구조를 따른다.
  • 일반적인 싱글코어가 이 분류에 속한다.
  • 성능을 향상시키기 위해 파이프 라이닝이나 슈퍼스칼라 등의 명령어 수준의 병렬컴퓨팅 기법을 사용

SISD

 

(2) SIMD(Single Instruction Multiple Data stream) : 단일 명령 + 복수 데이터

  • 비슷한 패턴을 갖는 데이터들 처리할 때 효율적인 구조
  • 복수의 처리장치와 프로세서를 사용하여 하나의 명령어로 여러 비슷한 유형의 데이터를 처리
  • ex) 벡터 프로세서그래픽 처리장치(GPU)가 이에 해당한다.

SIMD

 

(3) MISD(Multiple Instruction Single Data stream) : 복수 명령 + 단일 데이터

  • 여러개의 명령어로 하나의 데이터를 처리하는 구조
  • 실용적인 측면에서 사용하기 힘든 구조이다.

MISD

 

(4) MIMD(Multiple Instruction Mutilple Data stream) : 복수 명령 : 복수 명령 + 복수 데이터

  • 여러개의 데이터를 여러개의 명령어로 처리
  • 복수의 처리 장치와 프로세서 사용
  • 서로 다른 명령과 데이터가 독립적으로 실행된다. ex) 분산처리 시스템
  • 성능 향상을 위해서 각 처리 장치에 일을 균등하게 배분하고, 장치간 통신 부담을 감소 시켜야 한다.
  • 병렬처리를 위해 사용하는 컴파일러 기술도 큰 영향을 미친다.

MIMD

 

벡터 프로세서란?

벡터 프로세서(vector processor)는 복수의 연산장치를 병렬로 연결해 큰 규모의 행렬이나 배열 연산을 고속으로 한꺼번에 처리할 수 있는 장치이다.

  • 그래픽 데이터나 수치해석 데이터를 빠른 속도로 처리하기 위한 용도로 자주 사용된다.
    • ex) DirectX12에서 행렬 계산이나 벡터 계산을 할 때 사용됨
  • SIMD 구조이다.

*스칼라 프로세서(scala processor) : SISD 구조로 벡터 프로세서와 대조되는 개념이다.

 

References

 

병렬 컴퓨팅(1~6편)

병렬 컴퓨터

728x90
반응형