2011년 5월 31일 화요일

병렬 컴퓨터(parallel computer)

동시에 동작하는 복수의 마이크로프로세서를 사용하는 컴퓨터. 병렬 컴퓨터용으로 작성된 프로그램은 작업(task) 동시에 처리하는 복수의 처리 장치에 골고루 분담시킴으로써 처리 속도를 향상시키고 단위 시간당 작업량을 증가시킬 있다. 수천 규모의 마이크로프로세서를 사용하는 컴퓨터 시스템을 병렬 컴퓨터(massively parallel computer)”라고 한다.

병렬 컴퓨터의 정의
- 다수의 CPU 다수의 프로그램 혹은 분할된 프로그램을 동시에 처리하는 컴퓨터
- 다수의 CPU 결합하여 단일 CPU 성능의 한계를 극복하기 위한 컴퓨터 구조

“Flynn” 병렬 컴퓨터 분류
1. SISD(Single Instruction stream Single Data stream)
- 제어장치와 프로세서를 각각 하나씩 갖는 구조.
- 번에 개의 명령어와 데이터를 처리하는 단일 프로세서 시스템
- 전형적인 노이만 구조로 이루어져 있으며, 실행속도를 높이기 위하여 파이프라이닝(pipelining), 슈퍼스칼라(superscalar) 구조를 이용
2. SIMD(Single Instruction stream Multiple Data stream)
- 하나의 제어장치와 여러 개의 ALU 이루어진 배열 프로세서(array processer) 구성
- 제어장치에 의해 여러 개의 ALU 동기화되어 명령어를 수행한 결과는 메모리에 저장됨
- 데이터의 배열이나 행렬을 이용한 연산에 효과적임
- 벡터 슈퍼컴퓨터, 어레이 컴퓨터
3. MISD(Multiple Instruction stream Single Data stream)
- 여러 개의 처리기가 하나의 데이터 스트림에 대하여 서로 다른 명령어를 실행하는 구조
- 현실적으로 구현되기 어려운 구조임
4. MIMD(Multiple Instruction stream Multiple Data stream)
- 여러 개의 제어기와 처리기가 서로 다른 명령어와 데이터를 처리함
- 각각의 처리기는 자신의 데이터와 프로그램을 가지고 독립적으로 독장
- 각각의 처리기는 상호 데이터를 교환하며(Message-passing 방식), 상호작용 정도에 따라 가지로 분류됨
i. 결합 방식 : 각각의 처리기가 각각의 local memory 가진 독립적인 구조로 구성됨, 처리기 사이의 데이터 교환이 많지 않을 경우에 사용함
ii. 결함 방식 : 각각의 처리기가 하나의 공유 메모리를 사용하는 구조, 처리기 사이의 데이터 교환이 빈번하게 발생할 유리한 구조

메모리 공유에 따른 분류
1. SMP(Symmetric Multi Processing)
- SMP 단일 처리기 시스템에서 나타나는 성능의 한계를 극복하기 위해 여러 개의 처리기를 공유 버스나 상호연결망에 연결시켜 놓은 시스템이라고 있다.
- 단일 OS 단일 Memory 구성된 완전 공유 구조
- 모든 CPU 모든 시스템자원을 공유하며, CPU 데이터 정합성 작업이 필요
- CPU 데이터를 공유하므로 대용량 OLTP 환경에 적합
- SMP 시스템의 최대 장점은 프로그래밍 인터페이스가 기존 단일처리기 시스템과 동일하다는 점이다. , SMP 시스템의 구조가 프로그래머에게는 투명하기 때문에 프로그램을 하는데 별도의 노력을 필요로 하지 않는다.
- SMP 시스템은 캐쉬에 의한 버스 트래픽 증가 등의 이유로 공유 버스에 많은 부하가 발생하기 때문에 확장성이 단점이다.
따라서 업계와 학계에서는 SMP 시스템의 확장성을 향상시키기 위해 다음과 같은 기법들이 연구 또는 구현되고 있다.


2. MPP(Massively Parallel Processing)
- MPP 노드별 각각의 CPU 전용 메모리로 구성되어 메모리를 공유하지 않음
- 다수의 CPU들이 서로 독립적으로 작동하여 최고의 성은을 발휘하도록 하는 구조
- 프로세스와 메모리, 운영체제로 구성된 각각의 노드로 작동하여 시스템 확장시에도 성능의 감소가 없음
- 주로 과학계산용 Application이나 노드간 통신이 적은 분야에 사용
- 확장성이 뛰어나고, 대용량의 DB 지원, 개발비용이 저렴하며, 많은 수의 프로세서 연경이 가능한 장점이 있다.
- 프로그램이 복잡하여 Application 개발, 이식 운용이 어렵고, 적용되는 시스템 소프트웨어가 많지 않은 단점이 있다.

3. NUMA(Non-Uniform Memory Access)
NUMA 멀티프로세싱 시스템에서 지역적으로는 메모리를 공유하며, 성능을 향상시키고, 시스템 확장성이 있도록 마이크로프로세서 클러스터를 구성하기 위한 방법이다. NUMA SMP 시스템에서 사용된다. SMP 시스템은 서로 밀접하게 결합되어, 모든 것을 공유하는 시스템으로서, 다중 프로세서들이 하나의 단일 운영체계 하에서 공통의 버스를 통해 각자의 메모리를 액세스한다. 보통, SMP 한계는 마이크로프로세서가 추가됨에 따라, 공유 버스나 데이터 경로가 과중한 부하가 생기게 되어, 성능에 병목현상이 일어나는데 있다. NUMA 개의 마이크로프로세서들 간에 중간 단계의 공유메모리를 추가함으로써, 모든 데이터 액세스가 버스 상에서 움직이지 않아도 되도록 한다.

- NUMA 시스템은 MPP Node 유사한 하나 이상의 Quad 구성됨
- CC(Cache Coherent) – NUMA : 하나의 운영체제가 탑재되는 단일 노드 개념으로 캐시 Coherence 하드웨어적으로 구현하여 메모리 접근 지연 시간을 단축시킬 있음, 분산된 메모리들이 결합하여 하나의 메모리를 구성하므로 데이터나 페이지의 복사본이 메모리들 사이에 존재하지 않는 구조
- RMC(Reflective Memory Cluster) : Quad 마다 하나의 운영체제 복사본을 갖는 다수 Quad 구성됨, Quad 사이에 데이터의 복사나 이동 메커니즘이 있으며, Lock Traffic 연결망을 갖는 클러스터 시스템, 메모리 이동은 소프트웨어적이 일관성 기법을 이용하며, 운영체제의 간섭없이 데이터가 전송되어 메모리 접근 시간이 빠름
- COMA(Cache-Only Memory Architecture) : CC-NUMA 구조처럼 단일 노드 개념에 하드웨어적 캐시 일치성을 갖지만 보드 내에 메모리를 갖지 않고 단지 캐시로 구성됨
- 장점 : 확장성이 뛰어나다. 1 이상의 Quad 구성된 NUMA 시스템을 대상으로 Clustering 기법을 적용하여 수평적으로 확장 가능
- 단점 : 지원되는 Application 시스템 소프트웨어가 적음
비교항목
SMP
MPP
NUMA
구 조
시스템 버스와 같은 인터커넥션을 통해 프로세스, 메모리, I/O 등의 시스템 자원을 균등하게 공유하는 구조
개별 프로세스, 메모리, I/O 등의 시스템 자원을 가지는 노드들을 독점된 상호 연결로 결합한 구성
복수개의 CPU 보드를 연결하여 통합된 멀티 프로세서 시스템을 만드는 구조
운영 형태
하나의 OS 커널이 존재표준 개방형 OS 지원
각 노드별로 OS 커널 존재 표준 개방형 OS 지원 안함.
표준의 개방형 OS 지원
InterConnection
멀티 프로세싱, 멀티 쓰레드 , 메모리 공유 프로그래밍 / 통신 방식
데이터 병렬 처리 또는 메시지 패싱 프로그래밍 방식
글로벌 메모리 공유 방식
데이터 전달방식
공유 메모리에 직접 접근
명시적인 메시지 전달
공유 메모리 접근 및 로컬 캐쉬 메모리 사용
원격데이터 접근
자동
주소 변환, 메시지 전달
패킷 전송
프로그래밍
프로그래밍 용이 표준화된 개발 툴이 다양
프로그래밍이 어려움. 불완전한 병렬 SW 제공
프로그래밍이 용이
확장성
업무량 증가 또는 추가시 단위 SMP 내에서 CPU, 메모리 등을 증설 가능
일정 규모까지 시스템 노드 내에서 증설 가능 또는 시스템 노드를 증가
일정 규모까지 시스템 노드 내에서 증설 가능 또는 시스템 노드 증가
안정성
HW 이중화 및 이중 운영 기능, 장애 발생의 자동 감지 및 장애 부분 절단 가능, 디스크 미러링
HW 이중화 및 상호 감시, 장애의 자동 감지 및 자동 절환, 디스크 미러링
Application
다양한 유틸리티 지원
극히 제한됨
가 격
저, 중가
고가
중, 고가


CPU 유형에 따른 분류
1. RISC(reduced instruction set computer)
마이크로프로세서를 설계하는 방법 중의 하나로, CPU 명령어 개수를 줄여, 하드웨어 구조를 간단하게 만드는 방식을 사용한다. SPARC, MIPS 등의 아키텍처에서 사용된다. 전통적인 CISC CPU에는 프로그래밍을 돕기 위한 많은 개수의 명령과 주소 모드가 존재하지만, 실제로 사용되는 명령은 한정된 극히 되는 명령이라는 사실을 바탕으로, 명령 집합을 간단한 개의 명령으로 줄이고 많은 수의 명령어에서 주소 모드를 생략함으로써 프로세서의 전체적인 고속화 파이프라이닝를 지향한다. 또한, 메모리의 동작속도에 비해 CPU 속도가 비약적으로 빨라짐에 따라, 메모리 접근 회수를 줄이는 일은 성능향상을 가져온다. RISC CISC보다 단순한 구조 덕분에 많은 레지스터 용량의 캐쉬를 가지고 있어 메모리 접근 회수가 적다.

특징
    • 축약된 명령어 표를 이용한 정보처리 방식
    • 빠른 명령어 해석을 위해 고정 명령어 길이를 사용한다.
    • 모든 연산은 1클럭으로 실행하므로 파이프라인을 대기시키지 않는다.
    • 연산은 ­레지스터간 연산만 실행하며 메모리 접근은 save load 몇개의 명령어로 제한한다. 이로서 회로가 단순화되고 불필요한 메모리 접근을 줄일 있다.
    • 마이크로코드 로직을 사용하지 않아 높은 클럭을 유지할 있다.
    • 메모리 접근을 줄이기 위해 많은 수의 레지스터를 사용한다.
    • 파이프라인 해저드를 피하기 위해 지연 실행 기법을 사용한다.
    • 워크스테이션 같은 중형 컴퓨터에서 일반적으로 사용됨
    • CISC보다 50%~75% 정도 빠른 처리 속도


CISC에서는 하드웨어에서 스택을 지원하지만, RISC에는 없다. 스택 조작(데이터의 PUSH, POP 발생할 레지스터의 퇴피, 서브루틴에 점프 했을 때의 리턴 주소의 보존, 복귀) 처리는 단순한 명령을 조합하여 소프트웨어로 구현한다. 명령의 순서로 인해 발생하는 파이프라인 해저드는 컴파일시 최적화 과정에서 제거된다. 명령어의 길이를 고정하면 파이프라인 처리의 고속화를 꾀할 있지만, 컴파일러의 최적화 과정이 복잡해지기 쉽다. RISC 대부분의 현대 프로세서 디자인에 채택되고 있고, 또한 비교적 전력 소모가 적기 때문에 임베디드 프로세서에도 채택되고 있다. 근래에는, 펜티엄과 같은 CISC CPU 내부적으로는 복잡한 명령들을 단순한 명령들로 나누어 파이프라인에서 처리하기 때문에, 실제 작동 원리는 RISC 같다.

2. CISC (Complex Instruction Set Computer)
복잡한 명령어 세트를 갖는 CPU 아키텍쳐이다. 주로 메인프레임이나 X86 호환 프로세서, 모토롤라사의 MC 680x0 (68K)계열 프로세서에 채용되고 있다. 명령어가 복잡하기 때문에 명령어를 해석하는 시간이 오래 걸리며 명령어 해석에 필요한 회로도 복잡하다. 보통 풍부한 어드레싱 기능을 갖추고 있어 명령의 직교성이 좋다. 명령에서 행하는 처리가 복잡하기 때문에, 마이크로 프로그램 방식을 채택하는 경우가 많다.펜티엄 시리즈와 같은 CISC CPU 내부적으로는 복잡한 명령들을 단순한 명령들로 나누어 파이프라인에서 처리하기 때문에, 실제 작동 원리는 RISC 같다.

특징
    • 하나의 명령은 하나의 특정 기능을 수행할 있는 많은 명령어 셋으로 구성
    • 명령어의 포맷이 복잡하고, 길이가 일정치 않음
    • 하나의 명령어 처리를 위하여 여러 개의 Cycle 수행하며 수행시간이 길어질 있음
    • 개인용 컴퓨터에서 주로 사용
    • 복합 명령을 가짐으로써 하위 호환성을 충분히 확보할 있음
    • 하나의 명령어를 이용하여 복잡한 작업을 처리할 있어 프로그래밍 과정이 간단하다.
    • 성능 향상이 어려우며, 트랜지스터 집적도의 효율성이 떨어짐
    • 처리 속도가 느리고 제어 회로를 복잡하게 구성하여야


3. EPIC(Explicitly Parallel Instruction Computing)
    • 연산의 안과관계를 효과적으로 제어하고 분기 코드를 최소화하기 위해 VLIW(Very Long Instruction Word) 방식과 SIMD(single Instruction Multiple Data) 방식을 동시에 구현
    • 컴파일러가 소스코드로부터 명시적으로 병렬성을 찾고, 병렬처리가 가능하도록 기계어 코드 생성, 병렬 수행됨
    • 병렬수행이 가능한 RISC 명령어등을 컴파일러가 모아서 명령어 워드에 채워두고 명령어가 하나 수행되면 여러 개의 RISC 명령어들이 병렬 수행되는 구조
    • 다중 유니트에 의한 동시 다발적인 처리가 주된 핵심으로 이를 위한 명렬 처리과정이 소프트웨어를 기계어로 번역하는 과정에서 명확하게 지정된 병렬 처리 명령어를 사용
    • Itanium이라는 브랜드로 알려져 있으며 개인용 워크스테이션용으로 사용
    • 다중 운영체제(Unix, Linux, Windows ) 지원
    • 컴파일러에서 동시에 실행해야 2 이상의 명령어를 명시적으로 표현해야 함으로 컴파일러의 성능이 좋아야

댓글 없음:

댓글 쓰기

ETL 솔루션 환경

ETL 솔루션 환경 하둡은 대용량 데이터를 값싸고 빠르게 분석할 수 있는 길을 만들어줬다. 통계분석 엔진인 “R”역시 하둡 못지 않게 관심을 받고 있다. 빅데이터 역시 데이터라는 점을 볼때 분산처리와 분석 그 이전에 데이터 품질 등 데이...