1 / 51

병렬 컴퓨터 구조

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

chars
Download Presentation

병렬 컴퓨터 구조

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 15 병렬 컴퓨터 구조 IT CookBook, 컴퓨터 구조와 원리 2.0

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

  3. 목 차 • 병렬 처리의 개념 • 병렬 컴퓨터 분류 • 배열 프로세서와 다중 프로세서의 개념 • 다중 프로세서 시스템

  4. 01 병렬처리의 개념 (parallel processing) • 병렬처리 • 여러 개의 프로세서를 장착한 컴퓨터에 의해 실행될 수 있는 처리방식으로 하나의 프로그램에서 서로 다른 태스크(task)를 동시에 처리할 수 있는 방식이다. 이를 통해 처리 부하를 분담하고, 처리 속도를 향상시킨다. • 단일 프로세서를 사용하여서 기술의 향상과 구조적 개선의 한계성에 직면하게 되었고 병렬 처리가 주목 받게 되었다. • VLSI 반도체 기술은 작고 저렴하며 고속인 프로세서들을 하나의 시스템으로 구성될 수 있게 하여, 병렬 컴퓨터 구조의 구현을 가능하게 하였다. • 소프트웨어적으로 프로그램을 분할해서 처리할 수 있는 병렬 프로그램 언어와 컴파일러가 개발되었고 상호 공유자원에 대한 경합(contention)을 줄이고 이용률을 극대화할 수 있는 운영체제가 개발 되었다. • 결과적으로 VLSI 기술, 병렬 프로그램 언어, 컴파일러 그리로 병렬 운영체제를 기반으로 제작된 병렬 컴퓨터 시스템은 많은 성능 향상을 가져왔다. • 병렬 구조화에 따른 복잡한 처리가 추가되기 때문에 반드시 처리장치의 개 수만큼의 속도가 향상되지는 않는다. 또한 병렬 처리들 통한 성능향상뿐만 아니라 병렬 처리로 인한 문제도 발생하게 된다.

  5. 01 병렬처리의 개념 (parallel processing) • 병렬 처리로 발생하는 새로운 문제들 • 분할 문제(Partition) • 프로그램 내에서 병렬 처리가 가능한 부분을 검사하여 태스크로 만드는 것이 분할이라 하며, 이렇게 분할된 부분을 그레인(grain)이라 한다. • 그레인의 크기가 매우 작으면 많은 병렬성을 얻을 수 있지만 동기화와 스케줄링에 많은 과부하가 발생하게 된다. 반대로 그레인 크기가 크면 동기화와 스케줄링의 과부하가 줄어들게 되지만 병렬성이 떨어지게 된다.

  6. 01 병렬처리의 개념 (parallel processing) • 스케줄링(Scheduling) • 분할된 태스크들을 실행하기 위해서, 태스크들을 각 프로세서에 배정하는 것을 스케줄링이라고 한다. 효과적인 스케줄링은 프로세서의 이용률을 높여서 전체 처리 능력이 향상된다. 스케줄링 방법에는 정적인 방법과 동적인 방법이 있다. • 정적 스케줄링 • 정해진 스케줄은 실행되는 동안 변하지 않는다. 장점은 스케줄링 비용이 컴파일 시간에만 들고 실행 시에는 소요되지 않는다. 반면, 태스크의 실행 시간과 태스크와의 통신 비용 등을 정확히 예측하지 못하면 비효율적이 되며, 원시 프로그램 작성과 컴파일 설계 시 많은 노력이 필요하다. • 동적 스케줄링 • 프로그램이 실행될 때 각 태스크를 프로세서에 할당하는 방법이다. 장점은 프로세서의 이용률을 높일 수 있는 것이며, 단점은 프로그램 실행 시에 스케줄링을 하므로 실행에 많은 부담을 주게 된다.

  7. 01 병렬처리의 개념 (parallel processing) • 동기화(Synchronization) • 병렬 처리를 하려면 각 프로세서에 공유된 데이터가 임의의 한 프로세서에 의해 변경되지 않도록 하는 처리 규칙과 처리 규칙에 맞게 공유 데이터가 정확한 값을 유지할 수 있도록 하기 위한 동기화 작업이 필요하다. 동기화 방식에는 버스 잠금 방식과 상태 표시 방법이 있다. • 버스 잠금(Bus-locking) 방식 • 하나의 프로세서가 버스를 이용하여 공유기억장치에 액세스할 때, 즉시 버스를 독점한 후 해당 영역을 처리하게 하는 방식이다. • 따라서 프로세서 하나가 버스를 독점하기 때문에 다른 프로세스들은 이 버스에 연결된 다른 자원을 사용할 수 없다. • 즉, 프로세스의 실행이 종료될 때까지 버스를 독점하여, 잘못된 데이터 정보가 공유하지 않도록 하는 방식이다. • 상태 표시(Flag) 방법 • 데이터를 저장하는 자원 각각에 1비트의 상태 레지스터를 두어서 자원의 상태를 표시하도록 한 방식이다. • 대기 중인 프로세서는 상태 레지스터를 검사하여 사용 가능으로 되었을 때에만 액세스할 수 있다.

  8. 01 병렬처리의 개념 (parallel processing) • 병렬 처리 기능을 갖춘 프로세서의 분류 • 파이프라인 프로세서 • 프로세서 하나를 서로 다른 기능을 가진 여러 개의 서브프로세서로 나누어, 각 서브프로세서가 동시에 서로 다른 데이터를 처리하는 방식이다. • 병렬 처리 컴퓨터에서 파이프라인 구조는 서브 프로세서간 중첩되면서 단계별 수행을 하는 수직 형태의 종속적인 구조의 병렬성을 갖는다. • 배열 프로세서(Array Processor) • 데이터를 고속으로 처리하기 위해 연산장치를 병렬로 배열한 처리 구조로 벡터 계산이나 행렬(matrix) 계산에 사용되는 형태다. • 서로 다른 처리 요소기(processing element)들이 하나의 제어장치에 동기화되며, 한 명령에 따라 각 처리요소기는 각각의 데이터를 동시에 처리되는 구조다. • 다중 프로세서(Multiprocessor) • 시스템 상의 여러 프로세서에 여러 개의 독립적인 작업을 각각 배정하여, 동시에 작업을 수행할 수 있도록 하는 방식이다. • 병렬 처리의 가장 일반적인 모델로 기억장치 등의 자원을 공유하며 프로세서들끼리 상호통신을 수행한다.

  9. 02 병렬 컴퓨터 분류 • 제어장치(Control Unit)와 처리장치(Processing Unit) • 제어장치는 명령어를 인출하고 해독하여서 제어신호를 만드는 장치다. • 처리장치는 제어장치에서 만들어진 제어신호에 근거하여 처리할 데이터와 주소 등의 오퍼랜드를 인출하고 명령어를 수행하는 장치다. • 명령어 스트림(Instruction Stream)과 데이터 스트림(Data Stream) • 프로세서에 의해 실행되기 위하여 순서대로 나열된 명령어 코드들의 집합을 명령어 스트림이라고 하며, 명령어들을 실행하는 데 필요한 순서대로 나열된 데이터들의 집합을 데이터 스트림이라 한다. • 플린의 분류학에서 프로세서들이 처리하는 명령어 스트림과 데이터의 스트림의 수에 따라 병렬 프로세서를 분류하며, 다음과 같이 네 종류로 분류된다. • 단일 명령 스트림, 단일 데이터 스트림: SISD • 단일 명령 스트림, 다중 데이터 스트림: SIMD • 다중 명령 스트림, 단일 데이터 스트림: MISD • 다중 명령 스트림, 다중 데이터 스트림: MIMD

  10. 02 병렬 컴퓨터 분류 • 병렬 컴퓨터 프로세서 조직의 분류

  11. 02 병렬 컴퓨터 분류 • SISD • 한번에 한 개씩의 명령어와 데이터를 순서대로 처리하는 단일 프로세서시스템이다. • 단일 프로세서가 하나의 기억장치에 저장되어 있는 데이터들을 처리하기 위하여, 하나의 명령어 흐름을 순차적으로 실행한다. • 이 방법은 명령어가 실행될 때 여러 단계로 나누고 각 단계들이 중첩되며 수행되므로 명령어 파이프라이닝, 슈퍼스칼라구조를 이용하여 처리 효율을 향상 • SISD의 동작 • 제어장치는 기억장치 모듈에서 명령어 스트림(IS, Instruction Stream)을 인출하고, 이 명령어를 처리하기 위해서 처리장치로 보낸다. • 처리장치에서는 명령어가 수행되는 과정에서 필요한 데이터 스트림(DS, Data Stream)을 기억장치 모듈에서 읽고, 그 결과를 다시 기억장치 모듈에 저장한다. • 이때, 단일 제어장치에서 단일 명령어 스트림이이동하고 단일 처리장치에서 단일 데이터 스트림이 이동한다.

  12. 02 병렬 컴퓨터 분류 • SIMD • 하나의 명령어 스트림(IS)이 다수의 처리장치들에서 동시 처리되는 기술이다. • 하나의 명령어는 각 처리요소기가 각 기억장치에 저장된 독립된 데이터를 처리하도록 한다. • 결과적으로 하나의 제어장치는 하나의 명령어를 인출하여 해독하고, 여러 개의 처리장치는 여러 데이터를 동시에 인출하여 명령어를 실행한다. • 벡터 프로세서(vector processor)와 배열 프로세서(array processor)가 대표적인 SIMD 분류에 속한다. • 벡터 또는 배열 프로세서에서는 터 계산을 동일한 개념으로 수행된다. • 각각의 처리장치는 덧셈 명령에 의해서 동일한 덧셈 연산을 수행하지만, 각 처리장치에서의 데이터 기억장치와 교환되는 데이터 스트림은 서로 다른 독립된 값을 갖는다

  13. 02 병렬 컴퓨터 분류 • SIMD의 동작과정 • 여러 개의 처리장치로 구성되고, 각 처리장치들의 동작은 모두 하나의 제어장치에 의해 통제된다. • 처리장치들은 독립된 기억장치 모듈을 별도로 보유한다. 따라서 모든 처리장치는 하나의 명령어 스트림을 실행하지만 독립된 여러 개의 데이터 스트림들을 독립적으로 동시에 처리된다.

  14. 02 병렬 컴퓨터 분류 • MISD • MISD 방식은 SIMD 구조와 반대 개념으로 처리장치들에서 수행되는 명령어는 다르지만, 전체적으로는 하나의 데이터 스트림을 가지게 되는 형태다. • 결과적으로 여러 제어 장치는 동시에 여러 명령어를 인출하여 각각 해독하고 하나의 처리장치는 여러 명령어를 실행하여 하나의 데이터 스트림을 갖는다. • MISD의 개념적인 동작 • 각 처리장치에서 처리한 결과가 다른 처리장치에 입력되는 형태다. • 이 방식은 기상 예보 분석과 같은 복잡한 자료 처리에만 사용된다. • 각 처리장치에서 덧셈, 뺄셈, 곱셈, 나눗셈 명령어가 각각 실행된다고 하면, 이 과정에서 하나의 데이터 스트림이생성될 수는 없다. • 그래서 비현실적인 MISD 구조는 범용 컴퓨터 행태로 구현한 경우는 없다.

  15. 02 병렬 컴퓨터 분류 • MIMD • 다수의 처리장치가 서로 다른 명령어들을 동시에 병렬로 실행하는 형태로, 통상적인 일반 목적(general-purpose)의 다중 프로세서 구조다. • 결과적으로 제어장치들은 동시에 여러 명령어를 각각 인출하고 해독하며, 처리장치들은 여러 데이터들을 동시에 인출하여 각각 명령들을 실행한다. • MIMD의 개념적인 동작 • 순수한 MIMD 구조에서는 각 처리장치 사이에서 데이터의 상호 교환이 일어날 것을 전제하고 있으며, 상호작용 정도에 따라서 통신이 빈번하게 발생하는 밀접 결합(tightly coupled)형의 MIMD 구조와 통신의 빈도가 극히 적게 발생하는 느슨 결합(loosely coupled)형 MIMD 구조로 분류된다.

  16. 02 병렬 컴퓨터 분류 • 밀접 결합 시스템(tightly-coupled system) • 모든 처리장치가 공유된 기억장치를 이용하여 통신하는 공유 기억장치 구조(shared-memory architecture)의 다중프로세서 시스템(multiprocessor system)을 밀접 결합 시스템이라 한다. • 밀접 결합 시스템의 구조 • 처리장치 또는 처리 요소기(Processing element)들은 공유된 기억장치를 이용하여 데이터 스트림을 처리해서 처리장치 간의 통신을 수행한다.

  17. 02 병렬 컴퓨터 분류 • 느슨 결합 시스템(loosely-coupled system) • 각 처리장치가 독립된 지역 기억장치를 소유하고 있으며, 처리장치 간의 정보교환은 메시지 전송(message-passing) 방식을 이용한다. • 느슨 결합 시스템의 구성 • 각 처리장치는 지역 기억장치(local memory)를 가진 독립적인 컴퓨터 모듈로 구성되며, 처리장치 간의 통신은 내부연결 네트워크를 통해서 메시지 전송(message-passing) 방식을 이용한다.

  18. 03 배열 프로세서와 다중 프로세서의 개념 • 하나의 제어장치에 의해 인출된 하나의 명령에 의해서 여러 프로세스가 각각 독립된 데이터를 처리할 수 있는 구조가 배열 프로세서다. • 여러 개의 제어장치에서 인출된 여러 명령으로 여러 프로세서들이 각각 독립된 데이터를 처리하게 하는 구조가 다중 프로세서로, 멀티 프로세서라고도 한다. • 배열 프로세서(Array Processor) • 모든 처리장치가 하나의 제어장치 제어에 의해서 동기적으로 동작하는 시스템을 배열 프로세서라고 한다. • 배열 프로세서에서는 처리장치가 프로세서와 기억장치로 구성되며, 프로세서는 간단한 연산만 수행한다. • 제어장치는 명령을 인출해서 해석하고, 그것이 실행될 처리장치들을 결정한다.

  19. 03 배열 프로세서와 다중 프로세서의 개념 • 배열 프로세서의 구조 • 하나의 제어장치가 제어 버스를 통해서 독립된 기억장치를 소유하고 있는 처리장치들을 제어한다. 그리고 프로세스 간의 통신은 상호 연결된 네트워크 망을 통해서 통신을 수행한다.

  20. 03 배열 프로세서와 다중 프로세서의 개념 • 공유 기억장치 형태의 배열 프로세서 구조 • 배열 프로세서 구조의 또 다른 형태로 처리장치의 각 프로세서가 상호 연결된 네트워크를 통해서 공유된 기억장치를 액세스하는 특징을 갖는다.

  21. 03 배열 프로세서와 다중 프로세서의 개념 • 배열 프로세서의 처리장치 • 산술논리 연산장치(ALU), 데이터 레지스터들(R1, R2, R3), 주소 레지스터, 인덱스 레지스터, 데이터 전송 레지스터 그리고 상태 플래그 레지스터로 구성된다. • 처리장치는 상태 플래그 레지스터가 1이면 명령어 실행에 참여하게 되고, 그렇지 않고 상태 플래그 레지스터가 0이면 명령 실행에 참여하지 않고 대기 상태가 된다.

  22. 03 배열 프로세서와 다중 프로세서의 개념 • 다중 프로세서(multiple processor) • 다수의 프로세서로 여러 작업을 동시에 처리하여 시스템의 전반적인 처리율을 향상시킨다. 그리고 각 프로세서에 제어장치가 있어 자율적인 실행이 가능하며, 전체 시스템은 단일 운영체제에 의해 운영된다. • 다중 프로세서에서 추가 되어야 할 운영체제 기능 • 동시 처리 가능한 프로세스들의 스케줄링 기능이 필요하다. • 상호배타 및 사건 순서 메커니즘을 이용하여, 주소공간과 I/O 자원을 공유하는 프로세스들 간의 동기화(synchronization)가 제공되어야 한다. • 다수의 프로세스가 사용하는 기억장치들의 일관성 유지를 위해 기억장치 관리자원이 필요하다. • 성능이 크게 저하되지 않도록 신뢰성 및 결함허용(Reliability & fault tolerance)이 지원되어야 한다. • 상호연결 구조 • 다중 프로세서에서 프로세서와 기억장치의 연결형태를 상호연결 구조라고 한다. 상호연결 구조의 종류에는 버스, 크로스바 스위치, 다단 교환망, 하이퍼큐브 상호연결이 있다.

  23. 03 배열 프로세서와 다중 프로세서의 개념 • 버스(Bus)를 이용한 상호연결 • 공유 버스 방법과 다중 버스 방법이 있다. • 공유 버스(Shared Bus) • 한 순간에 오직 하나의 프로세서만 전송할 수 있으며, 여러 프로세서가 동시에 버스를 사용하기 원할 경우 버스 사용에 대한 중재가 필요하다. • 하드웨어가 매우 간단하지만 버스 경합이 발생하면 지연 시간이 증가한다는 단점을 갖는다. 단점 보완을 위해 버스의 전송 속도를 높이거나 캐시를 사용한다. • 공유 버스의 구조 • (a) 단일 버스에 프로세서인 버스 마스터가 일렬로 연결되어 있어 버스 경합이 발생하면 지연이 증가하는 단점이 존재한다. • (b) 버스 경합에 의한 지연을 개선하기 위해서 각 버스 마스터가캐시를 사용하는 경우다. 캐시가 적중상태가 되면 공유버스를 통한 데이터의 전송이 필요가 없으므로 버스 경합이 줄어들고 지연도 감소하게 된다.

  24. 03 배열 프로세서와 다중 프로세서의 개념 • 다중 버스(Multiple Bus) • 연결되는 버스 마스터의 용도에 따라 버스 계층으로 연결되는 형태가 계층 버스 구조(hierarchical bus structure)다. • 계층 버스 구조는 여러 개의 버스가 존재하는 다중 버스 구조이며, 다중 버스의 계층별 전송을 통해서 버스 경합을 감소 시킨다. • 다중 버스의 구조 • 시스템 버스에는 가장 빈번하게 액세스가 일어나는 공유 기억장치가 바로 연결되지만 그 외의 다른 버스 마스터들은 지역 버스에 연결된다. • 시스템 버스 제어기는 지역버스와 시스템 버스를 연결해주는 역할을 한다. 용도에 맞게 지역버스로 분류되었기 때문에 버스 경합이 그 만큼 감소하게 된다.

  25. 03 배열 프로세서와 다중 프로세서의 개념 • 크로스바 스위치를 이용한 상호연결 • 연결을 요구하는 장치들 간의 완전한 연결성(full connectivity)을 제공한다. • 프로세서들과 기억장치들 사이의 완전 연결성 제공할 수 있는 방법으로 모든 기억장치 모듈에서 동시 전송을 할 수 있다. • 그러나 스위치를 구성하는 비용이 많이 들고 하드웨어가 너무 크고 복잡하다는 단점을 가진다. • 크로스바 스위치를 이용하여 상호연결된 구조 • 프로세서와 기억장치의 교차점이 스위치로 되어 있어 상호연결을 형성한다. 그리고 스위치의 on 동작을 통해서 프로세서가 기억장치로 액세스할 수 있다.

  26. 03 배열 프로세서와 다중 프로세서의 개념 • 다단 교환망을 이용한 상호연결 • 두 개의 입력과 두 개의 출력을 갖는 스위치를 이용하여 단계별로 연결을 구성한 방식을 다단 교환망이라고 한다. • 다중 프로세서의 요소들이 다단 교환망에 상호 연결되어 통신을 수행하며, 통신 경로가 하나이상 존재한다. • 그래서 한 경로가 블로킹되어 연결할 수 없더라도 다른 경로를 경유해 연결할 수 있으므로 통신 지연을 감소할 수 있다. • 전달되는 메시지가 여러 단계를 통해서 전달되므로 제어체계가 복잡하다. • 이 방식은 느슨 결합 형태에서 사용되는 상호연결 방식이다. • 다단 교환망의 연결 구조의 예

  27. 03 배열 프로세서와 다중 프로세서의 개념 • 하이퍼큐브상호연결 • 프로세서 2n개가 n차원 이진 큐브로 연결되어서 느슨 결합 시스템에서 사용 • 하이퍼큐브의 연결 구조 • 프로세서 2(= 21)개가 존재하면 1차원 이진 큐브로연결된다. • 프로세서 4(= 22)개가 존재하면 2차원 이진 큐브로연결된다. • 2차원 이진 큐브에서는 각 프로세서가 2회선 채널을 갖는다. • 프로세서 8(= 23)개가 존재하면, 3차원 이진 큐브로 연결되어 각 꼭지점이 프로세서가 되며 각 프로세서는 3회선 채널을 갖는다. • 하이퍼큐브 연결은 다수의 프로세서를 효과적으로 연결시킬 수 있으며 인접한 번지는 한 비트만 차이가 존재하는 장점을 갖는다. • 그래서 2차원 이진 큐브의 경우를 보면 01의 인접 번지는 11과 00의 한 비트만 차이가 난다.

  28. 03 배열 프로세서와 다중 프로세서의 개념 • 기억장치 모듈을 소유하는 방식에 따른 분류 • 공유-기억장치 시스템 구조 (shared-memory system) • 기억장치가 특정한 프로세서에 소속되어 있지 않고 시스템 내의 모든 프로세서에 의해 공유되는 구조다. • 프로세서 간의 상호작용이 원활하게 일어나는 밀접 결합 구조에 해당된다. • 프로세서들이 공통으로 사용하는 데이터를 공유 기억장치에 저장하므로 프로세서 간에 데이터 교환을 위한 별도의 매커니즘이 필요하지 않다. 그리고 프로그램 실행시간 동안에 각 프로세서들이 처리할 작업들을 동적으로 균등하게 할당할 수 있으므로 프로세서 이용률을 극대화해 시스템 효율을 높일 수 있다. • 프로세서들과 기억장치들 간의 통신량이 많아지기 때문에 경합으로 인한 지연 시간이 길어질 수 있다는 단점이 있다. 그리고 두 개 이상의 프로세서가 공유하는 기억장치 모듈 또는 입출력장치를 동시에 사용하려는 경우에 한 개 이외의 프로세서들은 대기해야 한다. 그런데 동시 액세스로 발생하는 지연의 단점은 고속 상호연결 망과 캐시기억장치의 사용으로 보완할 수 있다.

  29. 03 배열 프로세서와 다중 프로세서의 개념 • 분산-기억장치 시스템 구조 (distributed-memory system) • 느슨 결합 구조(loosely-coupled structure)로서 각 프로세서가 자신의 지역 기억장치(local memory)를 소유하고, 다른 프로세서들과의 통신은 메시지 전송(message-passing)을 이용한다. • 이 방식은 공유자원에 대한 경합이 감소한다는 장점을 가지나, 메시지 전송을 위한 통신 프로토콜 때문에 지연 시간이 증가한다. • 프로세서를 통신 네트워크에 연결하므로 시스템 수가 늘어나면 전달되는 메시지의 오버헤드가 증가하는 단점이 있다.

  30. 03 배열 프로세서와 다중 프로세서의 개념 • 다중 프로세서 시스템에서의 캐시 일관성 문제 • 다중 프로세서 시스템에서 하나의 데이터가 여러 캐시에 복사되어 있으므로, 어떤 프로세서가 데이터에 대한 쓰기 동작을 수행할 경우 나머지 프로세서의 캐시에서는 데이터의 불일치 현상이 발생하게 된다. • 캐시의 일관성 문제를 해결 방법으로는 즉시 쓰기(write-though) 방식과 나중 쓰기(write-back) 방식이 있다. • 나중 쓰기 방식은 나머지 캐시들이 즉시 갱신되지 못하므로 불일치(inconsistency)가 발생한다. • 즉시 쓰기(write through) 방식의 경우에서도 나머지 캐시가 갱신 통보를 받지 못하는 경우 불일치가 발생할 수 있다. • 캐시의 일관성 문제를 해결하기 위한 방법으로 소프트웨어적 해결 방법과 하드웨어적 해결 방법이 제시 되었다.

  31. 03 배열 프로세서와 다중 프로세서의 개념 • 캐시 일관성 문제의 해결법 • 소프트웨어 해결법 • 프로그램 컴파일러가 코드를 분석하여 공유 변수에 대하여 적절하게 표시를 하고, 운영체제는 표시된 공유 변수들이 캐시에 저장되지 않도록 하는 방법이다. • 소프트웨어에 의해서 동작하므로 하드웨어만큼 복잡하지 않은 장점을 가지나 캐시에 공유 변수가 저장되지 않으므로 캐시의 이용률이 저하되는 단점을 가진다. • 하드웨어적 해결법 • 캐시의 일관성을 위해서 추가적인 하드웨어를 설치하여 해결하는 방법으로 디렉토리를 추가하는 디렉토리 프로토콜(Directory protocols) 방법과 버스 감시기를 이용하는 스누피 프로토콜(Snoopy protocols) 방법이 있다.

  32. 03 배열 프로세서와 다중 프로세서의 개념 • 캐시 일관성 문제의 하드웨어적 해결법 • 디렉토리프로토콜의 원리 • 데이터 복사본들이 존재하는 캐시들의 위치에 관한 정보들이 수집되어 디렉토리에 보관되며, 이 디렉토리는 중앙 제어기 및 주기억장치에 저장된다. • 캐시 제어기는 중앙 제어기로 데이터 갱신 또는 이동을 위한 요구를 보내고, 중앙 제어기는 요구에 응답하는 명령을 보내면 디렉토리 내의 상태 정보도 갱신된다. • 따라서 한 프로세서가 공유된 데이터를 갱신하려고 하면, 중앙 제어기는 그 허가를 보내기 전에 복사본을 가진 모든 다른 프로세서에 무효화 메시지를 전송하게 된다. • 이러한 방법은 병목 현상이 발생하고 캐시 제어기들과 중앙 제어기 간의 통신 오버헤드를 가지는 단점이 존재하지만, 다중 버스 혹은 복잡한 상호연결 망을 포함하고 있는 대규모 시스템에 적합하다

  33. 03 배열 프로세서와 다중 프로세서의 개념 • 스누피 프로토콜의 원리 • 캐시 일관성 유지의 책임을 모든 캐시 제어기로 분산 시키는 방식으로, 캐시 제어기는 캐시가 가지고 있는 블록이 공유(shared)되는 것인지를 파악한다. • 그리고 그 공유 블록을 갱신할 때는 다른 캐시에 방송(broadcast)을 한다. 이 때, 각 캐시 제어기는 방송되는 내용을 관찰할 수 있도록 버스를 감시하는 스누피(snoop) 능력을 가지고 있어야 한다. • 공유 버스가 방송과 스누핑을 위한 간단한 수단들을 제공하기 때문에 버스-기반 다중프로세서에 적합하다. 그리고 스누피 프로토콜은 쓰기-무효(write-invalidate)와 쓰기-갱신(write-update)의 두 가지 기본적인 기법이 있다. • 쓰기-무효 • 동시에 여러 읽기가 가능(multiple readers)하지만, 한 번에 하나의 쓰기만 가능(one writer)한 방법이다. • 어떤 블록에 대한 쓰기가 요구될 때는, 다른 캐시들에 저장된 그 블록은 모두 무효화된다. 따라서 쓰기를 수행하는 프로세서는 블록에 대한 배타적 액세스 권한을 가진다. • 쓰기-갱신 • 쓰기-방송(write-broadcast)이라고도 하며, 동시에 여러 읽기 및 여러 쓰기 (multiple readers and writers)가 가능하다. • 쓰기 동작에 의해 갱신된 블록은 즉시 다른 모든 캐시들에 전달되어서 갱신되어 일관성을 유지하도록 한다.

  34. 04 다중 프로세서 시스템 • 대칭형 다중 프로세서(Symmetric Multiprocessor) • 다중 프로세서 시스템을 구성하는 프로세서들이 동일한 성능으로 수행하고 동일한 기능을 가진다. • 모든 프로세서들이 동등한 수준으로 구성되고, 버스 또는 다른 상호 연결 망에 의해 프로세서들이 서로 연결된다. • 공유된 기억장치는 각 프로세서가 액세스하는 데 걸리는 시간이 거의 동일하며, 모든 프로세서는 입출력장치의 액세스를 위한 채널을 공유한다. • 하나의 통합 운영체계가 모든 프로세서와 입출력장치, 기억장치를 관리 • 여러 프로세서가 하나의 운영 체계를 사용하므로 상호 배제와 재진입 부호가 필요하다. • 운영체제는 프로세서들 간의 상호작용(interaction)을 지원하고 작업(job), 태스크(task), 파일(file) 및 데이터 요소 수준에서 프로그램들 간의 상호작용을 지원할 수 있다.

  35. 04 다중 프로세서 시스템 • 밀접 결합 다중 프로세서 시스템의구성 • 각 프로세서는 주기억장치와 입출력장치와 내부 상호연결 망을 통해 연결된다. • 효과적인 내부 상호연결 망인 경우 프로세스 간의 통신과 주기억장치와 입출력 장치와의 액세스 속도가 빨라져서 성능이 더 좋아 진다.

  36. 04 다중 프로세서 시스템 • 대칭형 다중프로세서의 장점 • 대칭적 특성으로 인해서 작업 부하를 효과적으로 분산시킬 수 있으며 신뢰성도 높다. • 한 프로세서가 고장일 경우 운영 체제는 그 프로세서를 제거한 뒤 성능이 조금 떨어진 상태에서 계속 작동할 수 있다. • 또한 한 프로세서에서 실행하던 작업을 다른 프로세서로 옮겨 실행할 수 있으며, 어떤 작업은 처리기가 협력하여 실행할 수도 있다. • 장점을 정리하면 다음과 같다. • 각 프로세서의 작업들이 병렬로 분산 처리되기 때문에 성능(Performance)이 더 높아진다. • 어느 한 프로세서가 고장 나도 나머지 다른 프로세서들이 대신해서 작업을 수행할 수 있으므로 시스템의 중단 없이 계속 동작할 수 있다. • 프로세서들의 추가를 통해서 성능을 높일 수 있다. 그래서 점진적인 확장이 가능(Incremental growth)하다. • 제조 회사들은 프로세서 수에 따라 가격과 성능이 다양한 제품들을 제공할 수 있다.

  37. 04 다중 프로세서 시스템 • 상호연결 망(Interconnection Network) • 대칭형 다중 프로세서에서 사용하는 상호연결 망에는 시분할 버스(time shared bus), 다중포트 기억장치(multiport memory), 중앙제어장치(central control unit) 등이 있다. • 시분할 버스 • 어느 한 프로세서가 버스를 사용 중일 때, 다른 프로세서는 대기(wait)하는 것으로 시간을 나누어서 사용하는 개념이다. • 시분할 버스를 이용한 대칭형 다중 프로세서 시스템의 구성도 • 각 프로세서는 버스 마스터로 동작을 하며, 그리고 버스 경합으로 발생하는 지연을 해결하기 위해서 2계층의 캐시를 이용한다.

  38. 04 다중 프로세서 시스템 • 시분할 버스의 장점과 단점 • 시분할 버스의 장점 • 단순성(simplicity) : 단일 프로세서 시스템과 동일하게 동작하므로 단순하다. • 융통성(Flexibility) : 버스에 프로세서들을 추가적으로 연결함으로써 시스템을 쉽게 확장할 수 있기 때문에 유연하다. • 신뢰성(Reliability) : 접속된 어떤 장치에 결함이 발생하는 경우에도 전체 시스템의 동작이 중단되지 않는다. • 시분할 버스의 단점 • 시분할 버스의 성능은 버스 사이클 시간(bus cycle time)에 의해 결정되는 단점이 존재한다. • 이런 단점은 프로세서에 캐시를 추가하여서 버스 액세스 수를 줄여서 해결할 수 있다. 그렇지만 다른 문제로 캐시의 일관성 유지 문제가 유발된다.

  39. 04 다중 프로세서 시스템 • 다중포트 기억장치의 원리 • 다수의 액세스 포트들을 가지고 있어 프로세서와 입출력장치들이 독립적 액세스 통로를 제공 받는다. • 프로세서들이 동일한 기억장치 모듈을 액세스하는 경우, 각 기억장치 포트에 고정 우선순위를 부여해서 이 문제를 해결할 수 있다. • 결과적으로 기억장치 주변에 회로가 추가되어 복잡하지만 각 기억장치 모듈에 대하여 독립적인 통로를 가지므로 성능이 더 우수하다. • 각 프로세서는 개별적으로 기억장치에 액세스 할 수 있으므로, 모든 쓰기 동작은 캐시뿐만 아니라 주기억장치에도 동시에 이루어지는 즉시-쓰기방법이 필요하다. • 그래서 주기억장치의 내용이 항상 캐시의 내용과 동일한 유효(valid) 상태가 유지된다

  40. 04 다중 프로세서 시스템 • 다중포트 기억장치로 구성된 다중 프로세서 시스템 • 각 프로세서와 입출력장치는 공유된 기억장치에 액세스할 수 있는 전용 통로들이 존재하여 독립적인 액세스가 가능하다.

  41. 04 다중 프로세서 시스템 • 중앙 제어 장치 방법을 이용한 상호연결 망 • 중앙 제어 장치는 프로세서, 입출력장치, 기억장치 간의 데이터 흐름 제어를 수행하고 버퍼 기능, 중재 및 시간 제어 기능을 수행한다. • 프로세서들 간에 상태 및 제어 메시지를 전달하고 캐시 갱신 감시(cache update alerting) 기능을 수행한다. • 이 방법은 버스 구조가 단순화된다는 장점을 가진다. 그렇지만 제어장치가 여러 기능을 수행하므로 그 구조가 많이 복잡해져서 성능 병목의 요인이 된다.

  42. 04 다중 프로세서 시스템 • 불균일 기억장치 액세스 • 시스템 내의 모든 프로세서가 동일한 기억 장치를 공유하고 있지만 기억 장치를 접속하는 시간이 기억 장치의 위치에 따라 달라지는 구조를 불균일 기억장치 액세스(NUMA, Non-Uniform Memory Access) 시스템이라고 한다. • NUMA 시스템은 대칭형 다중 프로세서(SMP)가 버스 병목 현상으로 프로세서의 수가 제한되는 것을 극복하기 위해서 등장 • 기억장치의 투명성을 제공하고 다수의 프로세서 노드 사용이 가능하다. • 각 노드는 버스를 통해서 지역 기억장치뿐만 아니라 고속의 상호 연결 버스를 통하여 원격 기억장치에 접속할 수 있다. • 모든 프로세서는 일정한 전역 기억장치를 공유하며, 접속하는 데 소요되는 시간은 기억장치의 물리적 위치에 따라 달라진다. • 인접한 곳에 위치한 기억장치에는 빠른 접속이 가능해서 우수한 시스템 성능을 발휘할 수 있다. •  NUMA 시스템에서 캐시의 일관성 문제를 해결한 시스템을 캐시 일관 NUMA(CC-NUMA, Cache-Coherent Non-uniform Memory Access)이라고 한다. • 여러 프로세서의 캐시들 사이에 캐시 일관성이 유지되는 NUMA 시스템이다.

  43. 04 다중 프로세서 시스템 • CC-NUMA 조직의 일반적인 구성도

  44. 04 다중 프로세서 시스템 • CC-NUMA 조직의 일반적인 구성도 • 상호연결 망을 중심으로 일반 다중 프로세서 조직들이 각 입출력 시스템을 통해서 연결되어 있다. • 다중 프로세서 조직 내에 주기억장치를 가지고 있고, 각 프로세서는 2계층의 캐시를 가지고 있다. • 해당 다중 프로세서 조직 내에서, 프로세서들이 공유된 해당 주기억장치에 액세스하는 속도는 거의 동일하다. • 다른 다중 프로세서 조직에 있는 주기억장치에 액세스하려면 상호연결 망을 통해서 액세스되므로 다중 프로세서 조직내의 액세스 속도보다는 느리다. 결과적으로 어느 영역을 액세스하느냐에 따라서 액세스 속도 또는 시간이 다르다. • 각각의 프로세서에 연결되어 있는 캐시들은 각각의 주기억장치와 일관성을 유지한다.

  45. 04 다중 프로세서 시스템 • CC-NUMA의 장점과 단점 • 소프트웨어를 거의 변경하지 않아도 대칭형 다중 프로세서(SMP)보다 더 높은 수준의 병렬성을 이용하여 효과적인 성능을 제공할 수 있다. • 그리고 원격 노드에 대한 기억장치 액세스로 인한 성능저하를 피할 수 있다. 그래서 캐시의 사용은 원격 액세스를 포함하여 기억장치 액세스를 최소화할 수 있다. • 이 방법은 운영체제와 응용을 대칭형 다중 프로세서(SMP)에서 CC-MUMA로 이동시키기 위해서는 소프트웨어를 변경해야 하며, 시스템을 구성방법에 따라 가용성 문제가 발생할 수 있다

  46. 04 다중 프로세서 시스템 • 클러스터(Clusters) • 최신으로 설계되는 컴퓨터는 더 발전된 형태의 새롭게 고안된 다중 프로세서, 고성능(high performance) 및 고가용성(high availability)을 만족하여야 한다. 특히, 대형 서버 구성에 적합하여야 한다. • 클러스터는 이러한 의도에 의해서 등장하게 되었다. • 클러스터는 여러 대의 전체 컴퓨터들(whole computers)이 상호 연결되어 협력하며 하나의 컴퓨터로서 동작하는 통합 컴퓨팅 자원이다. • 클러스터를 구성하는 전체 컴퓨터는 클러스터에서 분리되면 독립적으로 동작할 수 있는 컴퓨터 시스템을 말한다. • 클러스터에서는 이러한 각 컴퓨터를 노드(node)라고도 한다. • 대용량의 수치 연산에서 좀 더 고품질의 결과를 얻고 그리고 빠른 결과를 얻기 위해서는 대규모 계산이나 데이터를 처리해야 한다. • 기존에는 워크스테이션이나 슈퍼 컴퓨터들이 활용되어 왔으나 단일 워크스테이션으로는 충분한 성능을 제공받기에 한계가 있다. • 슈퍼 컴퓨터는 구축비용이 매우 높아 일반적인 연구 환경에서 사용하기에는 어려움이 따른다. • 결과적으로 클러스터는 이를 해결하기 위한 좋은 선택방안이 될 수 있다.

  47. 04 다중 프로세서 시스템 • 클러스터의 특징 • 클러스터는 절대적 선형 확장성, 점진적 선형 확장성, 높은 가용성, 월등한 가격/성능 등의 장점이 존재한다. • 절대적 선형 확장성(Absolute Scalability) • 제일 큰 독립적 시스템보다 훨씬 더 큰 클러스터의 구성도 가능하다. • 점진적 선형 확장성(Incremental Scalability) • 새로운 시스템을 점차적으로 추가하면 성능 향상이 가능하다. • 높은 가용성(High Availability) • 각 노드는 독립적인 컴퓨터이므로, 독립 컴퓨터의 결함에도 서비스를 계속제공할 수 있다. 즉, 높은 가용성을 갖는다. • 월등한 가격/성능(Superior price/performance) • 클러스터는 독립적 컴퓨터의 집합으로, 고가의 대형시스템보다 더 높은 성능을 가지지만 더 낮은 비용으로 구성 가능하다

  48. 04 다중 프로세서 시스템 • 클러스터 분류 • 디스크가 공유되지 않는 구조와 디스크가 공유되는 구조로 분류된다. • 디스크가 공유되지 않는 구조 • 전체 컴퓨터들이 디스크를 공유하지 않는 클러스터 방법 • 전체 컴퓨터 간의 연결은 LAN(Local Area Network) 또는 전용 연결 망으로 연결된다. • 그리고 전체 컴퓨터들 간의 통신은 고속의 메시지의 전달로 이루어진다.

  49. 04 다중 프로세서 시스템 • 디스크가 공유되는 구조 • 전체 컴퓨터가 디스크를 공유, 공유되는 디스크 시스템은 RAID를 사용 • 데이터는 배열을 이루고 있는 디스크 드라이브들에 분산 저장된다. 여분의디스크는 디스크 오류 발생시, 데이터 복구를 보장하기 위한 패리티 정보를 저장 • 디스크를 공유하는 클러스터의 구성 • 기본적으로 전체 컴퓨터들 간에는 고속의 메시지로 연결된다. 그리고 RAID가 전체 컴퓨터 사이에서 공유된다.

  50. 04 다중 프로세서 시스템 • 클러스터에서 추가되어야 할 운영체제 기능 • 클러스터를 지원하는 운영체제에서는 결함관리 기능과 부하 균등 기능을 포함하고 있다. • 결함관리(failure management) 기능 • 발생할 수 있는 결함들에 대한 관리를 수행하면, 모든 자원들에 서비스를 제공할 확률을 높아진다. • 결과적으로 운영체제에서 지원하는 결함관리 기능은 모든 자원들이 효과적으로 운영이 되어서 고가용성클러스터링(highly available clustering)을 만족시키게 될 것이다. • 그리고 결함-허용 클러스터링(fault-tolerant clustering)을 형성해서 모든 자원이 항상 사용 가능하도록 보장하며, 고장이 발생한 시스템에서 프로그램과 데이터 자원들을 클러스터 내 다른 시스템으로 전환하는 기능을 제공할 수 있다.   • 부하 균등(load balancing) 기능 • 클러스터는 사용 가능한 컴퓨터 간에 부하를 균등하게 분할해야 성능을 높일 수 있다. 따라서 운영체제는 부하를 균등하게 분할해 주는 기능을 지원해 주어야 한다.

More Related