병렬컴퓨터 만들기 - byeonglyeolkeompyuteo mandeulgi

병렬 컴퓨팅 은 많은 계산이나 프로세스 가 동시에 수행되는 계산 유형입니다 . [1] 큰 문제는 종종 작은 문제로 나눌 수 있으며 동시에 해결할 수 있습니다. 병렬 컴퓨팅에는 비트 수준 , 명령 수준 , 데이터 및 작업 병렬 처리 와 같은 여러 가지 형태가 있습니다 . 병렬 처리는 고성능 컴퓨팅 에서 오랫동안 사용되어 왔지만 주파수 스케일링 을 방해하는 물리적 제약으로 인해 더 넓은 관심을 받았습니다 . [2]최근 몇 년 동안 컴퓨터의 전력 소비(및 결과적으로 열 발생)가 문제가 됨에 따라 [3] 병렬 컴퓨팅은 주로 멀티 코어 프로세서 형태의 컴퓨터 아키텍처 에서 지배적인 패러다임이 되었습니다 . [4]

병렬 컴퓨팅은 동시 컴퓨팅 과 밀접하게 관련되어 있습니다 . 둘은 별개이지만 함께 사용되는 경우가 많으며 종종 병합됩니다. 동시성이 없는 병렬 처리(예: 비트 수준 병렬 처리 ) 및 병렬 처리 없는 동시 처리(예: 멀티태스킹)가 가능합니다. 에 의해 시간 공유 ) 단일 코어 CPU에. [5] [6] 병렬 컴퓨팅에서 계산 작업은 일반적으로 독립적으로 처리될 수 있고 나중에 완료되면 결과가 결합되는 매우 유사한 여러 하위 작업으로 나뉩니다. 대조적으로, 동시 컴퓨팅에서는 다양한 프로세스가 관련 작업을 처리하지 않는 경우가 많습니다. 분산 컴퓨팅 에서 일반적으로 그러하듯이, 별도의 작업은 다양한 특성을 가질 수 있으며 종종 실행 중에 일부 프로세스 간 통신이 필요합니다 .

병렬 컴퓨터는 하드웨어가 병렬 처리를 지원하는 수준에 따라 대략적으로 분류할 수 있습니다. 멀티 코어 및 멀티 프로세서 컴퓨터 는 단일 시스템 내에 여러 처리 요소가 있는 반면 클러스터 , MPP 및 그리드 는 여러 컴퓨터를 사용하여 동일한 작업을 수행합니다. 직무. 특정 작업을 가속화하기 위해 특수 병렬 컴퓨터 아키텍처가 기존 프로세서와 함께 사용되기도 합니다.

어떤 경우에는 병렬 처리는 비트 - 레벨 또는 명령 레벨 병렬 같이 프로그래머에 투명하지만, 명시 적으로 병렬 알고리즘 , 특히 그 사용 동시성은보다 쓰기하기가 더 어렵다 순차 , 사람 [7] 신규 때문에 동시성 컨덕터 여러 가능성의 클래스 소프트웨어 버그 ,있는 경쟁 조건이 가장 일반적이다. 서로 다른 하위 작업 간의 통신 및 동기화 는 일반적으로 최적의 병렬 프로그램 성능을 얻는 데 가장 큰 장애물 중 일부입니다.

병렬화의 결과로 단일 프로그램 의 속도 향상 에 대한 이론적 상한 은 Amdahl의 법칙에 의해 제공됩니다 .

전통적으로 컴퓨터 소프트웨어 는 직렬 계산 용으로 작성되었습니다 . 문제를 해결하기 위해 일련의 명령어 스트림으로 알고리즘 을 구성하고 구현합니다. 이러한 명령은 한 컴퓨터 의 중앙 처리 장치 에서 실행됩니다 . 한 번에 하나의 명령어만 실행할 수 있습니다. 해당 명령어가 완료된 후 다음 명령어가 실행됩니다. [8]


Amdahl의 법칙을 그래픽으로 표현한 것입니다 . 병렬화로 인한 프로그램의 속도 향상은 얼마나 많은 프로그램을 병렬화할 수 있는지에 따라 제한됩니다. 예를 들어, 프로그램의 90%가 병렬화될 수 있다면 병렬 컴퓨팅을 사용하는 이론적인 최대 속도 향상은 얼마나 많은 프로세서를 사용하든 10배가 됩니다.

작업에 A 와 B 라는 두 개의 독립적인 부분이 있다고 가정합니다 . 파트 B 는 전체 계산 시간의 약 25%를 차지합니다. 아주 열심히 일하면 이 부분을 5배 더 빠르게 만들 수 있지만 전체 계산 시간을 약간만 줄일 수 있습니다. 대조적으로 파트 A 를 두 배 빠르게 만들기 위해 더 적은 작업을 수행해야 할 수도 있습니다 . 이 계산은 매우 빨리 부품 최적화함으로써보다 것 B를 부분에도, B ' (2 회에 비해 5 배), (S)의 단축 비율에 의하여 더 크다.

파이프라인이 없는 표준 프로세서 . 하나의 명령어를 완료하는 데 5개의 클록 사이클이 필요하므로 프로세서는 서브스칼라 성능( IPC = 0.2 < 1 )을 발행할 수 있습니다 .

표준 5단계 파이프라인 프로세서. 최상의 시나리오에서 하나의 명령을 완료하는 데 하나의 클록 사이클이 걸리므로 프로세서는 스칼라 성능( IPC = 1 )을 발행할 수 있습니다 .

2개의 실행 장치가 있는 표준 5단계 파이프라인 프로세서입니다. 최상의 시나리오에서는 두 개의 명령을 완료하는 데 한 클록 주기가 걸리므로 프로세서는 슈퍼스칼라 성능( IPC = 2 > 1 )을 실행할 수 있습니다 .

NUMA( Non-Uniform Memory Access) 아키텍처 의 논리적 보기입니다 . 한 디렉토리의 프로세서는 다른 디렉토리의 메모리에 액세스할 수 있는 것보다 짧은 대기 시간으로 해당 디렉토리의 메모리에 액세스할 수 있습니다.

MPICH는 메시지 전달 인터페이스(Message Passing Interface, MPI) 표준을 구현한 것으로, MPI는 1990년대 초에 40개 조직들의 토론에 의해 태어났다. 초기에는 ARPA 및 미국 국립과학재단(NSF)에 의해 주도 되었다. 아주 처음부터 새롭게 시작하는 것 대신에 MPI는 상용 시스템에서 사용되는 기능들 위에서 설계되었다. MPI 규격은 규격 보충으로 증가 되었으며 MPI는 일반적으로 TCP/IP 와 소켓 연결을 사용한다. MPI는 지금 광범위하게 사용되는 통신 모델이며 C, 포트란, Python과 같은 언어를 사용하여 병렬 프로그래밍을 구현한다(출처: 위키피디어).↩

각각의 프로세서가 각자의 역할이 존재하며, 마스터(master)프로세서와 노예(slave) 프로세서들로 구성되어 있다. 마스터 프로세서(CPU)가 노예 프로세서들에게 일을 할당하는 구조이다. 거대한 시스템에서 사용하고 있다.

 

장점 

1. 경제적이다.

2. 처리량이 높다. (High Throughput)

3. garceful degradation, fail-soft system : 시간이 지날 수록 실패하는 비율이 작다.

4. 신뢰성이 높다. : 하나의 CPU가 고장이 나더라도 다른 CPU가 일을 수행할 수 있다.

 

병렬컴퓨터 만들기 - byeonglyeolkeompyuteo mandeulgi
https://techdifferences.com/difference-between-symmetric-and-asymmetric-multiprocessing.html

쉬운 이해 : 공장에서 여러 사람들이 각자의 물품을 만들어 내는 과정을 생각하면 병렬 시스템입니다.

 

분산 시스템(Distributed System)

분산 시스템의 등장은 개인용 컴퓨터가 보급되면서 인터넷이 활성화되기 시작하고 분산 시스템의 개념이 나왔습니다. 대형 메인 프레임 컴퓨터를 사용하는 것보다 개인용 컴퓨터를 여러 개 사용하여 하나로 묶어 대형 컴퓨터에 버금가는 시스템을 만드는데 이것이 바로 분산 시스템입니다. 

LAN 같은 네트워크 인프라를 필요로 한다. 구조는 클라이언트 - 서버로 되어있다.

Loosely coupled system - 각각의 프로세서는 각자의 로컬 메모리를 가지고 있다. 병렬 시스템과의 차이점이다. (병렬 시스템은 메모리를 공유) 또한 high-speed 버스와 네트워크를 통해서 다른 프로세서와의 소통을 한다.

병렬컴퓨터 만들기 - byeonglyeolkeompyuteo mandeulgi
https://subscription.packtpub.com/book/application_development/9781787126992/1/ch01lvl1sec9/distributed-computing

장점

1. 자원의 공유

2. 속도가 빠르다.

3. 신뢰성이 높다.

4. Communication을 한다.

쉬운 이해 : 하나의 작품을 만들기 위해서 여러 사람들이 붙어서 제작하는 것이 분산 시스템입니다.

 

클러스터 시스템(Clustered System)

네트워크에 있는 여러 컴퓨터들을 병렬적으로 하나의 거대한 시스템으로 만드는 것. 분산 시스템이든 병렬 시스템이든 하나의 단일 시스템구조가 목표이다. 여러 시스템들에게 공유 저장소를 허용한다. 

 

비동기식 클러스터링(Asymmetric clustering) : 다른 서버들이 대기하는 동안 하나의 서버가 응용 프로그램을 실행하는 구조

동기식 클러스터링(Symmetric clustering) : 모든 N개의 호스트 서버들이 응용 프로그램을 실행하는 구조 

장점

높은 신뢰성을 띈다.

 

Real-Time 시스템

특정 분야에 특화된 시스템으로 보통 과학 실험과 의학적 시스템, 산업 제어 시스템, 가상현실, 전투기 등에 쓰이는 시스템이다. 제한된 고정 시간 안에 처리되는 구조이다. Hard-real time과 Soft-real time으로 구분된다. 또한 Real-Time 시스템은 정확성이 핵심이다.

Hard real-time

일반적인 OS는 지원하기 어렵다. ms 단위로 처리되기 때문에 시간을 준수하지 못한다면 심각한 일이 발생할 수 있다. 또한 항상 시스템의 모든 환경과 동기를 유지하고 있어야 한다. 보조 저장소가 제한되거나 없는 경우가 있으며, 데이터는 short-term memory나 ROM에 저장된다. 

ex) 전투기, 항공관제, 미사일 자동 조준, 무기 제어 등

Soft real-time

Hard real-time에 비해서 시간 준수의 엄격함이 조금 떨어지긴 하나, 시간을 넘어간다면 불편함이나 잘못됨이 발생할 수 있다. 시스템의 과부하가 발생할 시에는 응답 시간이 증가할 수 있는 단점이 있다. Soft real-time에 오류가 발생한다면 체크포인트 이전으로 복구를 진행하여 처리한다.