51
IT CookBook, 컴컴컴 컴컴컴 컴컴 2.0 병병 병병병 병병

병렬 컴퓨터 구조

  • Upload
    chars

  • View
    132

  • Download
    0

Embed Size (px)

DESCRIPTION

15. 병렬 컴퓨터 구조. IT CookBook, 컴퓨터 구조와 원리 2.0. 학습목표. 병렬 프로세서에서 듀얼 프로세서와 듀얼 코어 프로세서의 차이를 이해한다 . 병렬 처리를 위한 선결 조건과 발생되는 문제에 대한 해결책을 학습한다 . 병렬 프로세서의 유형을 분류하고 이를 학습한다 . 배열 프로세서와 다중 프로세서의 개념을 학습한다 . 다중 프로세서에서 SMP, NUMA, 클러스터를 이해한다 . 목 차. 병렬 처리의 개념 병렬 컴퓨터 분류 배열 프로세서와 다중 프로세서의 개념 - PowerPoint PPT Presentation

Citation preview

Page 1: 병렬 컴퓨터 구조

IT CookBook, 컴퓨터 구조와 원리 2.0

병렬 컴퓨터 구조

Page 2: 병렬 컴퓨터 구조

2/51

병렬 프로세서에서 듀얼 프로세서와 듀얼 코어 프로세서의 차이를 이해한다 .

병렬 처리를 위한 선결 조건과 발생되는 문제에 대한 해결책을 학습한다 .

병렬 프로세서의 유형을 분류하고 이를 학습한다 .

배열 프로세서와 다중 프로세서의 개념을 학습한다 .

다중 프로세서에서 SMP, NUMA, 클러스터를 이해한다 .

학습목표

Page 3: 병렬 컴퓨터 구조

3/51

병렬 처리의 개념

병렬 컴퓨터 분류

배열 프로세서와 다중 프로세서의 개념

다중 프로세서 시스템

목 차

Page 4: 병렬 컴퓨터 구조

4/51

01 병렬처리의 개념 (parallel processing) 병렬처리

• 여러 개의 프로세서를 장착한 컴퓨터에 의해 실행될 수 있는 처리방식으로 하나의 프로그램에서 서로 다른 태스크 (task) 를 동시에 처리할 수 있는 방식이다 . 이를 통해 처리 부하를 분담하고 , 처리 속도를 향상시킨다 .

단일 프로세서를 사용하여서 기술의 향상과 구조적 개선의 한계성에 직면하게 되었고 병렬 처리가 주목 받게 되었다 . • VLSI 반도체 기술은 작고 저렴하며 고속인 프로세서들을 하나의 시스템으로

구성될 수 있게 하여 , 병렬 컴퓨터 구조의 구현을 가능하게 하였다 . • 소프트웨어적으로 프로그램을 분할해서 처리할 수 있는 병렬 프로그램

언어와 컴파일러가 개발되었고 상호 공유자원에 대한 경합 (contention) 을 줄이고 이용률을 극대화할 수 있는 운영체제가 개발 되었다 .

• 결과적으로 VLSI 기술 , 병렬 프로그램 언어 , 컴파일러 그리로 병렬 운영체제를 기반으로 제작된 병렬 컴퓨터 시스템은 많은 성능 향상을 가져왔다 .

병렬 구조화에 따른 복잡한 처리가 추가되기 때문에 반드시 처리장치의 개 수만큼의 속도가 향상되지는 않는다 . 또한 병렬 처리들 통한 성능향상뿐만 아니라 병렬 처리로 인한 문제도 발생하게 된다 .

Page 5: 병렬 컴퓨터 구조

5/51

01 병렬처리의 개념 (parallel processing) 병렬 처리로 발생하는 새로운 문제들

분할 문제 (Partition)• 프로그램 내에서 병렬 처리가 가능한 부분을 검사하여 태스크로 만드는 것이

분할이라 하며 , 이렇게 분할된 부분을 그레인 (grain) 이라 한다 .

• 그레인의 크기가 매우 작으면 많은 병렬성을 얻을 수 있지만 동기화와 스케줄링에 많은 과부하가 발생하게 된다 . 반대로 그레인 크기가 크면 동기화와 스케줄링의 과부하가 줄어들게 되지만 병렬성이 떨어지게 된다 .

Page 6: 병렬 컴퓨터 구조

6/51

01 병렬처리의 개념 (parallel processing) 스케줄링 (Scheduling)

• 분할된 태스크들을 실행하기 위해서 , 태스크들을 각 프로세서에 배정하는 것을 스케줄링이라고 한다 . 효과적인 스케줄링은 프로세서의 이용률을 높여서 전체 처리 능력이 향상된다 . 스케줄링 방법에는 정적인 방법과 동적인 방법이 있다 .

• 정적 스케줄링 정해진 스케줄은 실행되는 동안 변하지 않는다 . 장점은 스케줄링 비용이 컴파일

시간에만 들고 실행 시에는 소요되지 않는다 . 반면 , 태스크의 실행 시간과 태스크와의 통신 비용 등을 정확히 예측하지 못하면 비효율적이 되며 , 원시 프로그램 작성과 컴파일 설계 시 많은 노력이 필요하다 .

• 동적 스케줄링 프로그램이 실행될 때 각 태스크를 프로세서에 할당하는 방법이다 . 장점은

프로세서의 이용률을 높일 수 있는 것이며 , 단점은 프로그램 실행 시에 스케줄링을 하므로 실행에 많은 부담을 주게 된다 .

Page 7: 병렬 컴퓨터 구조

7/51

01 병렬처리의 개념 (parallel processing) 동기화 (Synchronization)

• 병렬 처리를 하려면 각 프로세서에 공유된 데이터가 임의의 한 프로세서에 의해 변경되지 않도록 하는 처리 규칙과 처리 규칙에 맞게 공유 데이터가 정확한 값을 유지할 수 있도록 하기 위한 동기화 작업이 필요하다 . 동기화 방식에는 버스 잠금 방식과 상태 표시 방법이 있다 .

• 버스 잠금 (Bus-locking) 방식 하나의 프로세서가 버스를 이용하여 공유기억장치에 액세스할 때 , 즉시 버스를

독점한 후 해당 영역을 처리하게 하는 방식이다 . 따라서 프로세서 하나가 버스를 독점하기 때문에 다른 프로세스들은 이 버스에

연결된 다른 자원을 사용할 수 없다 . 즉 , 프로세스의 실행이 종료될 때까지 버스를 독점하여 , 잘못된 데이터 정보가

공유하지 않도록 하는 방식이다 .

• 상태 표시 (Flag) 방법 데이터를 저장하는 자원 각각에 1 비트의 상태 레지스터를 두어서 자원의 상태를

표시하도록 한 방식이다 . 대기 중인 프로세서는 상태 레지스터를 검사하여 사용 가능으로 되었을 때에만

액세스할 수 있다 .

Page 8: 병렬 컴퓨터 구조

8/51

01 병렬처리의 개념 (parallel processing) 병렬 처리 기능을 갖춘 프로세서의 분류

파이프라인 프로세서• 프로세서 하나를 서로 다른 기능을 가진 여러 개의 서브프로세서로 나누어 ,

각 서브프로세서가 동시에 서로 다른 데이터를 처리하는 방식이다 . • 병렬 처리 컴퓨터에서 파이프라인 구조는 서브 프로세서간 중첩되면서

단계별 수행을 하는 수직 형태의 종속적인 구조의 병렬성을 갖는다 . 배열 프로세서 (Array Processor)

• 데이터를 고속으로 처리하기 위해 연산장치를 병렬로 배열한 처리 구조로 벡터 계산이나 행렬 (matrix) 계산에 사용되는 형태다 .

• 서로 다른 처리 요소기 (processing element) 들이 하나의 제어장치에 동기화되며 , 한 명령에 따라 각 처리요소기는 각각의 데이터를 동시에 처리되는 구조다 .

다중 프로세서 (Multiprocessor)• 시스템 상의 여러 프로세서에 여러 개의 독립적인 작업을 각각 배정하여 ,

동시에 작업을 수행할 수 있도록 하는 방식이다 . • 병렬 처리의 가장 일반적인 모델로 기억장치 등의 자원을 공유하며

프로세서들끼리 상호통신을 수행한다 .

Page 9: 병렬 컴퓨터 구조

9/51

02 병렬 컴퓨터 분류

제어장치 (Control Unit) 와 처리장치 (Processing Unit)• 제어장치는 명령어를 인출하고 해독하여서 제어신호를 만드는 장치다 .• 처리장치는 제어장치에서 만들어진 제어신호에 근거하여 처리할 데이터와

주소 등의 오퍼랜드를 인출하고 명령어를 수행하는 장치다 .

명령어 스트림 (Instruction Stream) 과 데이터 스트림 (Data Stream)• 프로세서에 의해 실행되기 위하여 순서대로 나열된 명령어 코드들의 집합을

명령어 스트림이라고 하며 , 명령어들을 실행하는 데 필요한 순서대로 나열된 데이터들의 집합을 데이터 스트림이라 한다 .

• 플린의 분류학에서 프로세서들이 처리하는 명령어 스트림과 데이터의 스트림의 수에 따라 병렬 프로세서를 분류하며 , 다음과 같이 네 종류로 분류된다 . 단일 명령 스트림 , 단일 데이터 스트림 : SISD 단일 명령 스트림 , 다중 데이터 스트림 : SIMD 다중 명령 스트림 , 단일 데이터 스트림 : MISD 다중 명령 스트림 , 다중 데이터 스트림 : MIMD

Page 10: 병렬 컴퓨터 구조

10/51

02 병렬 컴퓨터 분류

병렬 컴퓨터 프로세서 조직의 분류

Page 11: 병렬 컴퓨터 구조

11/51

02 병렬 컴퓨터 분류

SISD• 한번에 한 개씩의 명령어와 데이터를 순서대로 처리하는 단일 프로세서

시스템이다 . • 단일 프로세서가 하나의 기억장치에 저장되어 있는 데이터들을 처리하기

위하여 , 하나의 명령어 흐름을 순차적으로 실행한다 . • 이 방법은 명령어가 실행될 때 여러 단계로 나누고 각 단계들이 중첩되며

수행되므로 명령어 파이프라이닝 , 슈퍼스칼라 구조를 이용하여 처리 효율을 향상

SISD 의 동작• 제어장치는 기억장치 모듈에서 명령어 스트림 (IS, Instruction Stream) 을

인출하고 , 이 명령어를 처리하기 위해서 처리장치로 보낸다 . • 처리장치에서는 명령어가 수행되는 과정에서 필요한 데이터 스트림 (DS,

Data Stream) 을 기억장치 모듈에서 읽고 , 그 결과를 다시 기억장치 모듈에 저장한다 .

• 이때 , 단일 제어장치에서 단일 명령어 스트림이 이동하고 단일 처리장치에서 단일 데이터 스트림이 이동한다 .

Page 12: 병렬 컴퓨터 구조

12/51

02 병렬 컴퓨터 분류

SIMD• 하나의 명령어 스트림 (IS) 이 다수의 처리장치들에서 동시 처리되는 기술이

다 . • 하나의 명령어는 각 처리요소기가 각 기억장치에 저장된 독립된 데이터를

처리하도록 한다 . • 결과적으로 하나의 제어장치는 하나의 명령어를 인출하여 해독하고 , 여러

개의 처리장치는 여러 데이터를 동시에 인출하여 명령어를 실행한다 .• 벡터 프로세서 (vector processor) 와 배열 프로세서 (array processor) 가

대표적인 SIMD 분류에 속한다 .• 벡터 또는 배열 프로세서에서는

터 계산을 동일한 개념으로 수행된다 .

• 각각의 처리장치는 덧셈 명령에 의해서 동일한 덧셈 연산을 수행하지만 , 각 처리장치에서의 데이터 기억장치와 교환되는 데이터 스트림은 서로 다른 독립된 값을 갖는다

Page 13: 병렬 컴퓨터 구조

13/51

02 병렬 컴퓨터 분류

SIMD 의 동작과정• 여러 개의 처리장치로 구성되고 , 각 처리장치들의 동작은 모두 하나의

제어장치에 의해 통제된다 . • 처리장치들은 독립된 기억장치 모듈을 별도로 보유한다 . 따라서 모든

처리장치는 하나의 명령어 스트림을 실행하지만 독립된 여러 개의 데이터 스트림들을 독립적으로 동시에 처리된다 .

Page 14: 병렬 컴퓨터 구조

14/51

02 병렬 컴퓨터 분류

MISD• MISD 방식은 SIMD 구조와 반대 개념으로 처리장치들에서 수행되는

명령어는 다르지만 , 전체적으로는 하나의 데이터 스트림을 가지게 되는 형태다 .

• 결과적으로 여러 제어 장치는 동시에 여러 명령어를 인출하여 각각 해독하고 하나의 처리장치는 여러 명령어를 실행하여 하나의 데이터 스트림을 갖는다 .

MISD 의 개념적인 동작• 각 처리장치에서 처리한 결과가

다른 처리장치에 입력되는 형태다 . • 이 방식은 기상 예보 분석과 같은

복잡한 자료 처리에만 사용된다 .

• 각 처리장치에서 덧셈 , 뺄셈 , 곱셈 , 나눗셈 명령어가 각각 실행된다고 하면 , 이 과정에서 하나의 데이터 스트림이 생성될 수는 없다 . 그래서 비현실적인 MISD 구조는 범용 컴퓨터 행태로 구현한 경우는 없다 .

Page 15: 병렬 컴퓨터 구조

15/51

02 병렬 컴퓨터 분류

MIMD• 다수의 처리장치가 서로 다른 명령어들을 동시에 병렬로 실행하는 형태로 ,

통상적인 일반 목적 (general-purpose) 의 다중 프로세서 구조다 . • 결과적으로 제어장치들은 동시에 여러 명령어를 각각 인출하고 해독하며 ,

처리장치들은 여러 데이터들을 동시에 인출하여 각각 명령들을 실행한다 . MIMD 의 개념적인 동작

• 순수한 MIMD 구조에서는 각 처리장치 사이에서 데이터의 상호 교환이 일어날 것을 전제하고 있으며 , 상호작용 정도에 따라서 통신이 빈번하게 발생하는 밀접 결합 (tightly coupled) 형의 MIMD 구조와 통신의 빈도가 극히 적게 발생하는 느슨 결합 (loosely coupled) 형 MIMD 구조로 분류된다 .

Page 16: 병렬 컴퓨터 구조

16/51

02 병렬 컴퓨터 분류

밀접 결합 시스템 (tightly-coupled system)• 모든 처리장치가 공유된 기억장치를 이용하여 통신하는 공유 기억장치 구조

(shared-memory architecture) 의 다중프로세서 시스템 (multiprocessor system) 을 밀접 결합 시스템이라 한다 .

밀접 결합 시스템의 구조• 처리장치 또는 처리 요소기 (Processing element) 들은 공유된 기억장치를

이용하여 데이터 스트림을 처리해서 처리장치 간의 통신을 수행한다 .

Page 17: 병렬 컴퓨터 구조

17/51

02 병렬 컴퓨터 분류

느슨 결합 시스템 (loosely-coupled system)• 각 처리장치가 독립된 지역 기억장치를 소유하고 있으며 , 처리장치 간의

정보교환은 메시지 전송 (message-passing) 방식을 이용한다 .

느슨 결합 시스템의 구성• 각 처리장치는 지역 기억장치 (local memory) 를 가진 독립적인 컴퓨터 모듈로

구성되며 , 처리장치 간의 통신은 내부연결 네트워크를 통해서 메시지 전송(message-passing) 방식을 이용한다 .

Page 18: 병렬 컴퓨터 구조

18/51

03 배열 프로세서와 다중 프로세서의 개념

• 하나의 제어장치에 의해 인출된 하나의 명령에 의해서 여러 프로세스가 각각 독립된 데이터를 처리할 수 있는 구조가 배열 프로세서다 .

• 여러 개의 제어장치에서 인출된 여러 명령으로 여러 프로세서들이 각각 독립된 데이터를 처리하게 하는 구조가 다중 프로세서로 , 멀티 프로세서라고도 한다 .

배열 프로세서 (Array Processor) 모든 처리장치가 하나의 제어장치 제어에 의해서 동기적으로 동작하는

시스템을 배열 프로세서라고 한다 . 배열 프로세서에서는 처리장치가 프로세서와 기억장치로 구성되며 ,

프로세서는 간단한 연산만 수행한다 . 제어장치는 명령을 인출해서 해석하고 , 그것이 실행될 처리장치들을

결정한다 .

Page 19: 병렬 컴퓨터 구조

19/51

03 배열 프로세서와 다중 프로세서의 개념

배열 프로세서의 구조• 하나의 제어장치가 제어 버스를 통해서 독립된 기억장치를 소유하고 있는

처리장치들을 제어한다 . 그리고 프로세스 간의 통신은 상호 연결된 네트워크 망을 통해서 통신을 수행한다 .

Page 20: 병렬 컴퓨터 구조

20/51

03 배열 프로세서와 다중 프로세서의 개념

공유 기억장치 형태의 배열 프로세서 구조• 배열 프로세서 구조의 또 다른 형태로 처리장치의 각 프로세서가 상호 연결된

네트워크를 통해서 공유된 기억장치를 액세스하는 특징을 갖는다 .

Page 21: 병렬 컴퓨터 구조

21/51

03 배열 프로세서와 다중 프로세서의 개념

배열 프로세서의 처리장치• 산술논리 연산장치 (ALU), 데이터 레지스터들 (R1, R2, R3), 주소 레지스터 ,

인덱스 레지스터 , 데이터 전송 레지스터 그리고 상태 플래그 레지스터로 구성된다 .

• 처리장치는 상태 플래그 레지스터가 1 이면 명령어 실행에 참여하게 되고 , 그렇지 않고 상태 플래그 레지스터가 0 이면 명령 실행에 참여하지 않고 대기 상태가 된다 .

Page 22: 병렬 컴퓨터 구조

22/51

03 배열 프로세서와 다중 프로세서의 개념

다중 프로세서 (multiple processor)• 다수의 프로세서로 여러 작업을 동시에 처리하여 시스템의 전반적인

처리율을 향상시킨다 . 그리고 각 프로세서에 제어장치가 있어 자율적인 실행이 가능하며 , 전체 시스템은 단일 운영체제에 의해 운영된다 .

다중 프로세서에서 추가 되어야 할 운영체제 기능• 동시 처리 가능한 프로세스들의 스케줄링 기능이 필요하다 . • 상호배타 및 사건 순서 메커니즘을 이용하여 , 주소공간과 I/O 자원을

공유하는 프로세스들 간의 동기화 (synchronization) 가 제공되어야 한다 . • 다수의 프로세스가 사용하는 기억장치들의 일관성 유지를 위해 기억장치 관리자원이 필요하다 .

• 성능이 크게 저하되지 않도록 신뢰성 및 결함허용 (Reliability & fault toler-ance) 이 지원되어야 한다 .

상호연결 구조• 다중 프로세서에서 프로세서와 기억장치의 연결형태를 상호연결 구조라고

한다 . 상호연결 구조의 종류에는 버스 , 크로스바 스위치 , 다단 교환망 , 하이퍼큐브 상호연결이 있다 .

Page 23: 병렬 컴퓨터 구조

23/51

03 배열 프로세서와 다중 프로세서의 개념

버스 (Bus) 를 이용한 상호연결• 공유 버스 방법과 다중 버스 방법이 있다 .

공유 버스 (Shared Bus)• 한 순간에 오직 하나의 프로세서만 전송할 수 있으며 , 여러 프로세서가

동시에 버스를 사용하기 원할 경우 버스 사용에 대한 중재가 필요하다 . • 하드웨어가 매우 간단하지만 버스 경합이 발생하면 지연 시간이 증가한다는

단점을 갖는다 . 단점 보완을 위해 버스의 전송 속도를 높이거나 캐시를 사용한다 .

• 공유 버스의 구조 (a) 단일 버스에 프로세서인 버스 마스터가 일렬로 연결되어 있어 버스 경합이 발생하면 지연이 증가하는 단점이 존재한다 .

(b) 버스 경합에 의한 지연을 개선하기 위해서 각 버스 마스터가 캐시를 사용하는 경우다 . 캐시가 적중상태가 되면 공유버스를 통한 데이터의 전송이 필요가 없으므로 버스 경합이 줄어들고 지연도 감소하게 된다 .

Page 24: 병렬 컴퓨터 구조

24/51

03 배열 프로세서와 다중 프로세서의 개념

다중 버스 (Multiple Bus) • 연결되는 버스 마스터의 용도에 따라 버스 계층으로 연결되는 형태가 계층

버스 구조 (hierarchical bus structure) 다 . • 계층 버스 구조는 여러 개의 버스가 존재하는 다중 버스 구조이며 , 다중

버스의 계층별 전송을 통해서 버스 경합을 감소 시킨다 .• 다중 버스의 구조

시스템 버스에는 가장 빈번하게 액세스가 일어나는 공유 기억장치가 바로 연결되지만 그 외의 다른 버스 마스터들은 지역 버스에 연결된다 .

시스템 버스 제어기는 지역버스와 시스템 버스를 연결해주는 역할을 한다 . 용도에 맞게 지역버스로 분류되었기 때문에 버스 경합이 그 만큼 감소하게 된다 .

Page 25: 병렬 컴퓨터 구조

25/51

03 배열 프로세서와 다중 프로세서의 개념

크로스바 스위치를 이용한 상호연결• 연결을 요구하는 장치들 간의 완전한 연결성 (full connectivity) 을 제공한다 . • 프로세서들과 기억장치들 사이의 완전 연결성 제공할 수 있는 방법으로 모든

기억장치 모듈에서 동시 전송을 할 수 있다 . • 그러나 스위치를 구성하는 비용이 많이 들고 하드웨어가 너무 크고

복잡하다는 단점을 가진다 . 크로스바 스위치를 이용하여 상호연결된 구조

• 프로세서와 기억장치의 교차점이 스위치로 되어 있어 상호연결을 형성한다 . 그리고 스위치의 on 동작을 통해서 프로세서가 기억장치로 액세스할 수 있다 .

Page 26: 병렬 컴퓨터 구조

26/51

03 배열 프로세서와 다중 프로세서의 개념

다단 교환망을 이용한 상호연결• 두 개의 입력과 두 개의 출력을 갖는 스위치를 이용하여 단계별로 연결을

구성한 방식을 다단 교환망이라고 한다 . • 다중 프로세서의 요소들이 다단 교환망에 상호 연결되어 통신을 수행하며 ,

통신 경로가 하나이상 존재한다 . • 그래서 한 경로가 블로킹되어 연결할 수 없더라도 다른 경로를 경유해 연결할

수 있으므로 통신 지연을 감소할 수 있다 . • 전달되는 메시지가 여러 단계를 통해서 전달되므로 제어체계가 복잡하다 . • 이 방식은 느슨 결합 형태에서 사용되는 상호연결 방식이다 .

다단 교환망의 연결 구조의 예

Page 27: 병렬 컴퓨터 구조

27/51

03 배열 프로세서와 다중 프로세서의 개념

하이퍼큐브 상호연결 프로세서 2n 개가 n 차원 이진 큐브로 연결되어서 느슨 결합 시스템에서

사용 하이퍼큐브의 연결 구조

• 프로세서 2(= 21) 개가 존재하면 1 차원 이진 큐브로 연결된다 . • 프로세서 4(= 22) 개가 존재하면 2 차원 이진 큐브로 연결된다 . • 2 차원 이진 큐브에서는 각 프로세서가 2회선 채널을 갖는다 . • 프로세서 8(= 23) 개가 존재하면 , 3 차원 이진 큐브로 연결되어 각 꼭지점이

프로세서가 되며 각 프로세서는 3회선 채널을 갖는다 . • 하이퍼큐브 연결은 다수의 프로세서를 효과적으로 연결시킬 수 있으며

인접한 번지는 한 비트만 차이가 존재하는 장점을 갖는다 . • 그래서 2 차원 이진 큐브의 경우를 보면 01 의 인접 번지는 11 과 00 의 한

비트만 차이가 난다 .

Page 28: 병렬 컴퓨터 구조

28/51

기억장치 모듈을 소유하는 방식에 따른 분류 공유 - 기억장치 시스템 구조 (shared-memory system)

• 기억장치가 특정한 프로세서에 소속되어 있지 않고 시스템 내의 모든 프로세서에 의해 공유되는 구조다 .

• 프로세서 간의 상호작용이 원활하게 일어나는 밀접 결합 구조에 해당된다 .

• 프로세서들이 공통으로 사용하는 데이터를 공유 기억장치에 저장하므로 프로세서 간에 데이터 교환을 위한 별도의 매커니즘이 필요하지 않다 . 그리고 프로그램 실행시간 동안에 각 프로세서들이 처리할 작업들을 동적으로 균등하게 할당할 수 있으므로 프로세서 이용률을 극대화해 시스템 효율을 높일 수 있다 .

• 프로세서들과 기억장치들 간의 통신량이 많아지기 때문에 경합으로 인한 지연 시간이 길어질 수 있다는 단점이 있다 . 그리고 두 개 이상의 프로세서가 공유하는 기억장치 모듈 또는 입출력장치를 동시에 사용하려는 경우에 한 개 이외의 프로세서들은 대기해야 한다 . 그런데 동시 액세스로 발생하는 지연의 단점은 고속 상호연결 망과 캐시기억장치의 사용으로 보완할 수 있다 .

03 배열 프로세서와 다중 프로세서의 개념

Page 29: 병렬 컴퓨터 구조

29/51

03 배열 프로세서와 다중 프로세서의 개념

분산 - 기억장치 시스템 구조 (distributed-memory system)• 느슨 결합 구조 (loosely-coupled structure) 로서 각 프로세서가 자신의 지역

기억장치 (local memory) 를 소유하고 , 다른 프로세서들과의 통신은 메시지 전송 (message-passing) 을 이용한다 .

• 이 방식은 공유자원에 대한 경합이 감소한다는 장점을 가지나 , 메시지 전송을 위한 통신 프로토콜 때문에 지연 시간이 증가한다 .

• 프로세서를 통신 네트워크에 연결하므로 시스템 수가 늘어나면 전달되는 메시지의 오버헤드가 증가하는 단점이 있다 .

Page 30: 병렬 컴퓨터 구조

30/51

03 배열 프로세서와 다중 프로세서의 개념

다중 프로세서 시스템에서의 캐시 일관성 문제• 다중 프로세서 시스템에서 하나의 데이터가 여러 캐시에 복사되어 있으므로 ,

어떤 프로세서가 데이터에 대한 쓰기 동작을 수행할 경우 나머지 프로세서의 캐시에서는 데이터의 불일치 현상이 발생하게 된다 .

• 캐시의 일관성 문제를 해결 방법으로는 즉시 쓰기 (write-though) 방식과 나중 쓰기 (write-back) 방식이 있다 . 나중 쓰기 방식은 나머지 캐시들이 즉시 갱신되지 못하므로 불일치

(inconsistency) 가 발생한다 . 즉시 쓰기 (write through) 방식의 경우에서도 나머지 캐시가 갱신 통보를 받지

못하는 경우 불일치가 발생할 수 있다 .

• 캐시의 일관성 문제를 해결하기 위한 방법으로 소프트웨어적 해결 방법과 하드웨어적 해결 방법이 제시 되었다 .

Page 31: 병렬 컴퓨터 구조

31/51

03 배열 프로세서와 다중 프로세서의 개념

캐시 일관성 문제의 해결법 소프트웨어 해결법

• 프로그램 컴파일러가 코드를 분석하여 공유 변수에 대하여 적절하게 표시를 하고 , 운영체제는 표시된 공유 변수들이 캐시에 저장되지 않도록 하는 방법이다 .

• 소프트웨어에 의해서 동작하므로 하드웨어만큼 복잡하지 않은 장점을 가지나 캐시에 공유 변수가 저장되지 않으므로 캐시의 이용률이 저하되는 단점을 가진다 .

하드웨어적 해결법• 캐시의 일관성을 위해서 추가적인 하드웨어를 설치하여 해결하는 방법으로 디렉토리를 추가하는 디렉토리 프로토콜 (Directory protocols) 방법과 버스 감시기를 이용하는 스누피 프로토콜 (Snoopy protocols) 방법이 있다 .

Page 32: 병렬 컴퓨터 구조

32/51

03 배열 프로세서와 다중 프로세서의 개념

캐시 일관성 문제의 하드웨어적 해결법디렉토리 프로토콜의 원리

• 데이터 복사본들이 존재하는 캐시들의 위치에 관한 정보들이 수집되어 디렉토리에 보관되며 , 이 디렉토리는 중앙 제어기 및 주기억장치에 저장된다 .

• 캐시 제어기는 중앙 제어기로 데이터 갱신 또는 이동을 위한 요구를 보내고 , 중앙 제어기는 요구에 응답하는 명령을 보내면 디렉토리 내의 상태 정보도 갱신된다 .

• 따라서 한 프로세서가 공유된 데이터를 갱신하려고 하면 , 중앙 제어기는 그 허가를 보내기 전에 복사본을 가진 모든 다른 프로세서에 무효화 메시지를 전송하게 된다 .

• 이러한 방법은 병목 현상이 발생하고 캐시 제어기들과 중앙 제어기 간의 통신 오버헤드를 가지는 단점이 존재하지만 , 다중 버스 혹은 복잡한 상호연결 망을 포함하고 있는 대규모 시스템에 적합하다

Page 33: 병렬 컴퓨터 구조

33/51

03 배열 프로세서와 다중 프로세서의 개념

스누피 프로토콜의 원리• 캐시 일관성 유지의 책임을 모든 캐시 제어기로 분산 시키는 방식으로 , 캐시

제어기는 캐시가 가지고 있는 블록이 공유 (shared) 되는 것인지를 파악한다 .

• 그리고 그 공유 블록을 갱신할 때는 다른 캐시에 방송 (broadcast) 을 한다 . 이 때 , 각 캐시 제어기는 방송되는 내용을 관찰할 수 있도록 버스를 감시하는 스누피 (snoop) 능력을 가지고 있어야 한다 .

• 공유 버스가 방송과 스누핑을 위한 간단한 수단들을 제공하기 때문에 버스 -기반 다중프로세서에 적합하다 . 그리고 스누피 프로토콜은 쓰기 -무효(write-invalidate) 와 쓰기 -갱신 (write-update) 의 두 가지 기본적인 기법이 있다 .

• 쓰기 -무효 동시에 여러 읽기가 가능 (multiple readers) 하지만 , 한 번에 하나의 쓰기만 가능

(one writer) 한 방법이다 . 어떤 블록에 대한 쓰기가 요구될 때는 , 다른 캐시들에 저장된 그 블록은 모두 무효화된다 .

따라서 쓰기를 수행하는 프로세서는 블록에 대한 배타적 액세스 권한을 가진다 . • 쓰기 -갱신

쓰기 - 방송 (write-broadcast) 이라고도 하며 , 동시에 여러 읽기 및 여러 쓰기 (multiple readers and writers) 가 가능하다 .

쓰기 동작에 의해 갱신된 블록은 즉시 다른 모든 캐시들에 전달되어서 갱신되어 일관성을 유지하도록 한다 .

Page 34: 병렬 컴퓨터 구조

34/51

04 다중 프로세서 시스템

대칭형 다중 프로세서 (Symmetric Multiprocessor) 다중 프로세서 시스템을 구성하는 프로세서들이 동일한 성능으로

수행하고 동일한 기능을 가진다 . 모든 프로세서들이 동등한 수준으로 구성되고 , 버스 또는 다른 상호

연결 망에 의해 프로세서들이 서로 연결된다 . 공유된 기억장치는 각 프로세서가 액세스하는 데 걸리는 시간이 거의

동일하며 , 모든 프로세서는 입출력장치의 액세스를 위한 채널을 공유한다 .

하나의 통합 운영체계가 모든 프로세서와 입출력장치 , 기억장치를 관리• 여러 프로세서가 하나의 운영 체계를 사용하므로 상호 배제와 재진입 부호가

필요하다 . • 운영체제는 프로세서들 간의 상호작용 (interaction) 을 지원하고 작업 (job),

태스크 (task), 파일 (file) 및 데이터 요소 수준에서 프로그램들 간의 상호작용을 지원할 수 있다 .

Page 35: 병렬 컴퓨터 구조

35/51

04 다중 프로세서 시스템

밀접 결합 다중 프로세서 시스템의 구성• 각 프로세서는 주기억장치와 입출력장치와 내부 상호연결 망을 통해

연결된다 . • 효과적인 내부 상호연결 망인 경우 프로세스 간의 통신과 주기억장치와 입출력 장치와의 액세스 속도가 빨라져서 성능이 더 좋아 진다 .

Page 36: 병렬 컴퓨터 구조

36/51

04 다중 프로세서 시스템

대칭형 다중프로세서의 장점 대칭적 특성으로 인해서 작업 부하를 효과적으로 분산시킬 수 있으며

신뢰성도 높다 . • 한 프로세서가 고장일 경우 운영 체제는 그 프로세서를 제거한 뒤 성능이

조금 떨어진 상태에서 계속 작동할 수 있다 . • 또한 한 프로세서에서 실행하던 작업을 다른 프로세서로 옮겨 실행할 수

있으며 , 어떤 작업은 처리기가 협력하여 실행할 수도 있다 .

장점을 정리하면 다음과 같다 .• 각 프로세서의 작업들이 병렬로 분산 처리되기 때문에 성능 (Performance)

이 더 높아진다 . • 어느 한 프로세서가 고장 나도 나머지 다른 프로세서들이 대신해서 작업을

수행할 수 있으므로 시스템의 중단 없이 계속 동작할 수 있다 .• 프로세서들의 추가를 통해서 성능을 높일 수 있다 . 그래서 점진적인 확장이

가능 (Incremental growth) 하다 . • 제조 회사들은 프로세서 수에 따라 가격과 성능이 다양한 제품들을 제공할 수

있다 .

Page 37: 병렬 컴퓨터 구조

37/51

04 다중 프로세서 시스템

상호연결 망 (Interconnection Network)• 대칭형 다중 프로세서에서 사용하는 상호연결 망에는 시분할 버스 (time

shared bus), 다중포트 기억장치 (multiport memory), 중앙제어장치(central control unit) 등이 있다 .

시분할 버스• 어느 한 프로세서가 버스를 사용 중일 때 , 다른 프로세서는 대기 (wait) 하는

것으로 시간을 나누어서 사용하는 개념이다 . • 시분할 버스를 이용한 대칭형 다중 프로세서 시스템의 구성도

각 프로세서는 버스 마스터로 동작을 하며 , 그리고 버스 경합으로 발생하는 지연을 해결하기 위해서 2 계층의 캐시를 이용한다 .

Page 38: 병렬 컴퓨터 구조

38/51

04 다중 프로세서 시스템

시분할 버스의 장점과 단점 시분할 버스의 장점

• 단순성 (simplicity) : 단일 프로세서 시스템과 동일하게 동작하므로 단순하다 .• 융통성 (Flexibility) : 버스에 프로세서들을 추가적으로 연결함으로써

시스템을 쉽게 확장할 수 있기 때문에 유연하다 . • 신뢰성 (Reliability) : 접속된 어떤 장치에 결함이 발생하는 경우에도 전체

시스템의 동작이 중단되지 않는다 .

시분할 버스의 단점 • 시분할 버스의 성능은 버스 사이클 시간 (bus cycle time) 에 의해 결정되는

단점이 존재한다 . • 이런 단점은 프로세서에 캐시를 추가하여서 버스 액세스 수를 줄여서 해결할

수 있다 . 그렇지만 다른 문제로 캐시의 일관성 유지 문제가 유발된다 .

Page 39: 병렬 컴퓨터 구조

39/51

04 다중 프로세서 시스템

다중포트 기억장치의 원리• 다수의 액세스 포트들을 가지고 있어 프로세서와 입출력장치들이 독립적

액세스 통로를 제공 받는다 . • 프로세서들이 동일한 기억장치 모듈을 액세스하는 경우 , 각 기억장치 포트에

고정 우선순위를 부여해서 이 문제를 해결할 수 있다 . • 결과적으로 기억장치 주변에 회로가 추가되어 복잡하지만 각 기억장치

모듈에 대하여 독립적인 통로를 가지므로 성능이 더 우수하다 . • 각 프로세서는 개별적으로 기억장치에 액세스 할 수 있으므로 , 모든 쓰기

동작은 캐시뿐만 아니라 주기억장치에도 동시에 이루어지는 즉시 -쓰기방법이 필요하다 .

• 그래서 주기억장치의 내용이 항상 캐시의 내용과 동일한 유효 (valid) 상태가 유지된다

Page 40: 병렬 컴퓨터 구조

40/51

04 다중 프로세서 시스템

다중포트 기억장치로 구성된 다중 프로세서 시스템• 각 프로세서와 입출력장치는 공유된 기억장치에 액세스할 수 있는 전용

통로들이 존재하여 독립적인 액세스가 가능하다 .

Page 41: 병렬 컴퓨터 구조

41/51

04 다중 프로세서 시스템

중앙 제어 장치 방법을 이용한 상호연결 망 중앙 제어 장치는 프로세서 , 입출력장치 , 기억장치 간의 데이터 흐름

제어를 수행하고 버퍼 기능 , 중재 및 시간 제어 기능을 수행한다 .

프로세서들 간에 상태 및 제어 메시지를 전달하고 캐시 갱신 감시(cache update alerting) 기능을 수행한다 .

이 방법은 버스 구조가 단순화된다는 장점을 가진다 . 그렇지만 제어장치가 여러 기능을 수행하므로 그 구조가 많이 복잡해져서 성능 병목의 요인이 된다 .

Page 42: 병렬 컴퓨터 구조

42/51

04 다중 프로세서 시스템

불균일 기억장치 액세스• 시스템 내의 모든 프로세서가 동일한 기억 장치를 공유하고 있지만 기억

장치를 접속하는 시간이 기억 장치의 위치에 따라 달라지는 구조를 불균일 기억장치 액세스 (NUMA, Non-Uniform Memory Access) 시스템이라고 한다 .

NUMA 시스템은 대칭형 다중 프로세서 (SMP) 가 버스 병목 현상으로 프로세서의 수가 제한되는 것을 극복하기 위해서 등장• 기억장치의 투명성을 제공하고 다수의 프로세서 노드 사용이 가능하다 .• 각 노드는 버스를 통해서 지역 기억장치뿐만 아니라 고속의 상호 연결 버스를

통하여 원격 기억장치에 접속할 수 있다 . • 모든 프로세서는 일정한 전역 기억장치를 공유하며 , 접속하는 데 소요되는

시간은 기억장치의 물리적 위치에 따라 달라진다 . • 인접한 곳에 위치한 기억장치에는 빠른 접속이 가능해서 우수한 시스템

성능을 발휘할 수 있다 .  NUMA 시스템에서 캐시의 일관성 문제를 해결한 시스템을 캐시 일관

NUMA(CC-NUMA, Cache-Coherent Non-uniform Memory Ac-cess) 이라고 한다 . • 여러 프로세서의 캐시들 사이에 캐시 일관성이 유지되는 NUMA

시스템이다 .

Page 43: 병렬 컴퓨터 구조

43/51

04 다중 프로세서 시스템

CC-NUMA 조직의 일반적인 구성도

Page 44: 병렬 컴퓨터 구조

44/51

04 다중 프로세서 시스템

CC-NUMA 조직의 일반적인 구성도 상호연결 망을 중심으로 일반 다중 프로세서 조직들이 각 입출력

시스템을 통해서 연결되어 있다 . 다중 프로세서 조직 내에 주기억장치를 가지고 있고 , 각 프로세서는 2

계층의 캐시를 가지고 있다 . 해당 다중 프로세서 조직 내에서 , 프로세서들이 공유된 해당

주기억장치에 액세스하는 속도는 거의 동일하다 . 다른 다중 프로세서 조직에 있는 주기억장치에 액세스하려면 상호연결 망을 통해서 액세스되므로 다중 프로세서 조직내의 액세스 속도보다는 느리다 . 결과적으로 어느 영역을 액세스하느냐에 따라서 액세스 속도 또는 시간이 다르다 .

각각의 프로세서에 연결되어 있는 캐시들은 각각의 주기억장치와 일관성을 유지한다 .

Page 45: 병렬 컴퓨터 구조

45/51

04 다중 프로세서 시스템

CC-NUMA 의 장점과 단점 소프트웨어를 거의 변경하지 않아도 대칭형 다중 프로세서 (SMP) 보다 더 높은 수준의 병렬성을 이용하여 효과적인 성능을 제공할 수 있다 .

그리고 원격 노드에 대한 기억장치 액세스로 인한 성능저하를 피할 수 있다 . 그래서 캐시의 사용은 원격 액세스를 포함하여 기억장치 액세스를 최소화할 수 있다 .

이 방법은 운영체제와 응용을 대칭형 다중 프로세서 (SMP) 에서 CC-MUMA 로 이동시키기 위해서는 소프트웨어를 변경해야 하며 , 시스템을 구성방법에 따라 가용성 문제가 발생할 수 있다

Page 46: 병렬 컴퓨터 구조

46/51

04 다중 프로세서 시스템

클러스터 (Clusters)최신으로 설계되는 컴퓨터는 더 발전된 형태의 새롭게 고안된 다중

프로세서 , 고성능 (high performance) 및 고가용성 (high availabil-ity) 을 만족하여야 한다 . 특히 , 대형 서버 구성에 적합하여야 한다 . • 클러스터는 이러한 의도에 의해서 등장하게 되었다 .

클러스터는 여러 대의 전체 컴퓨터들 (whole computers) 이 상호 연결되어 협력하며 하나의 컴퓨터로서 동작하는 통합 컴퓨팅 자원이다 .• 클러스터를 구성하는 전체 컴퓨터는 클러스터에서 분리되면 독립적으로

동작할 수 있는 컴퓨터 시스템을 말한다 . • 클러스터에서는 이러한 각 컴퓨터를 노드 (node) 라고도 한다 .

대용량의 수치 연산에서 좀 더 고품질의 결과를 얻고 그리고 빠른 결과를 얻기 위해서는 대규모 계산이나 데이터를 처리해야 한다 . • 기존에는 워크스테이션이나 슈퍼 컴퓨터들이 활용되어 왔으나 단일 워크스테이션으로는 충분한 성능을 제공받기에 한계가 있다 .

• 슈퍼 컴퓨터는 구축비용이 매우 높아 일반적인 연구 환경에서 사용하기에는 어려움이 따른다 .

• 결과적으로 클러스터는 이를 해결하기 위한 좋은 선택방안이 될 수 있다 .

Page 47: 병렬 컴퓨터 구조

47/51

04 다중 프로세서 시스템

클러스터의 특징• 클러스터는 절대적 선형 확장성 , 점진적 선형 확장성 , 높은 가용성 , 월등한

가격 / 성능 등의 장점이 존재한다 .

절대적 선형 확장성 (Absolute Scalability)• 제일 큰 독립적 시스템보다 훨씬 더 큰 클러스터의 구성도 가능하다 .

점진적 선형 확장성 (Incremental Scalability)• 새로운 시스템을 점차적으로 추가하면 성능 향상이 가능하다 .

높은 가용성 (High Availability)• 각 노드는 독립적인 컴퓨터이므로 , 독립 컴퓨터의 결함에도 서비스를 계속

제공할 수 있다 . 즉 , 높은 가용성을 갖는다 . 월등한 가격 / 성능 (Superior price/performance)

• 클러스터는 독립적 컴퓨터의 집합으로 , 고가의 대형시스템보다 더 높은 성능을 가지지만 더 낮은 비용으로 구성 가능하다

Page 48: 병렬 컴퓨터 구조

48/51

04 다중 프로세서 시스템

클러스터 분류• 디스크가 공유되지 않는 구조와 디스크가 공유되는 구조로 분류된다 .

디스크가 공유되지 않는 구조• 전체 컴퓨터들이 디스크를 공유하지 않는 클러스터 방법• 전체 컴퓨터 간의 연결은 LAN(Local Area Network) 또는 전용 연결 망으로

연결된다 . • 그리고 전체 컴퓨터들 간의 통신은 고속의 메시지의 전달로 이루어진다 .

Page 49: 병렬 컴퓨터 구조

49/51

04 다중 프로세서 시스템

디스크가 공유되는 구조• 전체 컴퓨터가 디스크를 공유 , 공유되는 디스크 시스템은 RAID 를 사용• 데이터는 배열을 이루고 있는 디스크 드라이브들에 분산 저장된다 . 여분의 디스크는 디스크 오류 발생시 , 데이터 복구를 보장하기 위한 패리티 정보를 저장

• 디스크를 공유하는 클러스터의 구성 기본적으로 전체 컴퓨터들 간에는 고속의 메시지로 연결된다 . 그리고 RAID 가

전체 컴퓨터 사이에서 공유된다 .

Page 50: 병렬 컴퓨터 구조

50/51

04 다중 프로세서 시스템

클러스터에서 추가되어야 할 운영체제 기능 • 클러스터를 지원하는 운영체제에서는 결함관리 기능과 부하 균등 기능을 포함하고 있다 .

결함관리 (failure management) 기능• 발생할 수 있는 결함들에 대한 관리를 수행하면 , 모든 자원들에 서비스를

제공할 확률을 높아진다 . • 결과적으로 운영체제에서 지원하는 결함관리 기능은 모든 자원들이

효과적으로 운영이 되어서 고가용성 클러스터링 (highly available clustering)을 만족시키게 될 것이다 .

• 그리고 결함 -허용 클러스터링 (fault-tolerant clustering) 을 형성해서 모든 자원이 항상 사용 가능하도록 보장하며 , 고장이 발생한 시스템에서 프로그램과 데이터 자원들을 클러스터 내 다른 시스템으로 전환하는 기능을 제공할 수 있다 .  

부하 균등 (load balancing) 기능• 클러스터는 사용 가능한 컴퓨터 간에 부하를 균등하게 분할해야 성능을 높일

수 있다 . 따라서 운영체제는 부하를 균등하게 분할해 주는 기능을 지원해 주어야 한다 .

Page 51: 병렬 컴퓨터 구조

Thank YouIT CookBook, 컴퓨터 구조와 원리 2.0