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) : 단일 명령 + 단일 데이터
- 하나의 명령에 하나의 데이터가 순차적으로 처리되는 전통적인 폰 노이만 구조를 따른다.
- 일반적인 싱글코어가 이 분류에 속한다.
- 성능을 향상시키기 위해 파이프 라이닝이나 슈퍼스칼라 등의 명령어 수준의 병렬컴퓨팅 기법을 사용
(2) SIMD(Single Instruction Multiple Data stream) : 단일 명령 + 복수 데이터
- 비슷한 패턴을 갖는 데이터들 처리할 때 효율적인 구조
- 복수의 처리장치와 프로세서를 사용하여 하나의 명령어로 여러 비슷한 유형의 데이터를 처리
- ex) 벡터 프로세서나 그래픽 처리장치(GPU)가 이에 해당한다.
(3) MISD(Multiple Instruction Single Data stream) : 복수 명령 + 단일 데이터
- 여러개의 명령어로 하나의 데이터를 처리하는 구조
- 실용적인 측면에서 사용하기 힘든 구조이다.
(4) MIMD(Multiple Instruction Mutilple Data stream) : 복수 명령 : 복수 명령 + 복수 데이터
- 여러개의 데이터를 여러개의 명령어로 처리
- 복수의 처리 장치와 프로세서 사용
- 서로 다른 명령과 데이터가 독립적으로 실행된다. ex) 분산처리 시스템
- 성능 향상을 위해서 각 처리 장치에 일을 균등하게 배분하고, 장치간 통신 부담을 감소 시켜야 한다.
- 병렬처리를 위해 사용하는 컴파일러 기술도 큰 영향을 미친다.
벡터 프로세서란?
벡터 프로세서(vector processor)는 복수의 연산장치를 병렬로 연결해 큰 규모의 행렬이나 배열 연산을 고속으로 한꺼번에 처리할 수 있는 장치이다.
- 그래픽 데이터나 수치해석 데이터를 빠른 속도로 처리하기 위한 용도로 자주 사용된다.
- ex) DirectX12에서 행렬 계산이나 벡터 계산을 할 때 사용됨
- SIMD 구조이다.
*스칼라 프로세서(scala processor) : SISD 구조로 벡터 프로세서와 대조되는 개념이다.
References
'운영체제' 카테고리의 다른 글
프로세스(Process) (0) | 2020.10.23 |
---|---|
메모리(memory) (0) | 2020.10.06 |
중앙처리장치(CPU) - 4 (명령어 파이프라인) (0) | 2020.09.28 |
중앙처리장치(CPU) - 3 (CPU 명령어 사이클) (0) | 2020.09.21 |
중앙처리장치(CPU) - 2 (CPU 명령어) (0) | 2020.09.21 |