프로세스 성능향상
태그 :
I. 멀티프로세스의 효율적인 처리를 위한 병렬처리의 개요
가. 병렬처리의 정의
- 폰노이만구조 범용컴퓨터의 단점을 해결하고자 프로그램 명령어를 여러 프로세서에 분산시켜 동시에 수행함으로써 빠른 시간에 원하는 답을 구하는 프로세싱 기술
나. 병렬처리의 발전 유형
유형 |
설명 |
PipeLine |
명령어의 단위 수행시간을 변하지 않고, 단위시간 내에 수행되는 명령어의 수를 늘림으로써, 유효 명령어 수행시간을 단축시키는 설계방식 |
멀티프로그래밍 |
시스템에서 여러 프로그램이 있을 때 한 프로그램이 프로세서를 짧은 시간 동안 차지하여 작업을 수행시키고, 운영체계가 그 다음 프로그램이 수행되도록 하는 방식 |
벡터 프로세싱 |
하나의 벡터 처리기로 여러 자료를 동시에 처리하는 수평적 병렬 처리 |
멀티 프로세싱 |
한 프로세서(master)가 시스템의 모든 작업을 관장하도록 설계되었고, 다른 프로세서(slave)는 주 프로세서가 부여한 일만을 수행 |
SMP (symmetric multiprocessing) |
두 개 또는 그 이상의 프로세서가 한 개의 공유된 메모리를 사용하는 다중 프로세서 컴퓨터 아키텍처 |
MPP (Massive parallel processing) |
한 시스템 내에 프로그램을 여러 부분으로 나누어 수백 개나 수천 개의 프로세서가 효율적으로 함께 작동하는 네트워크 이용 방식 |
다. 병렬처리와 병행처리의 특징비교
구분 |
병렬처리(Parallel) |
병행처리(Concurrency) |
의미 |
계산과정에 동시성을 강조하는 정보처리형태, 명령어 사이에 상관관계 없음 |
2개 이상의 관련 있는 프로세스가 동시에 실행되는 동시처리 프로세스 |
수행대상 |
복수연산 |
복수 프로세스 |
고려사항 |
병행성의 개념을 완벽히 수용, Array Computer |
프로세스 동기화/통신, 상호배제, Deadlock |
구현방법 |
Pipeline computer, Array Computer, 다중처리 다중처리 |
세마포어 Dekken’s 알고리즘 |
II. 명령어의 수행과정 및 병렬화 기법별 유형 분류
가 명령어의 수행과정(명령문 주기)
- 하나의 처리과정을 여러 단계로 세분화해 각 단계에 독립적으로 다른 작업들이 수행되도록 하여 병렬성을 높임
나 병렬화 기법 분류
다 병렬화 기법 유형
기법 |
설명 |
Pipelining |
-하드웨어 장치의 연속적 사용을 위해 몇 가지 동작을 중첩하는 기술 |
Super Pipelining |
-파이프라이닝 단계를 더욱 세분화, 수행시간 단축 -명령어를 중첩하되 엇갈리게 함 |
Super Scalar |
-파이프라이닝 기능 유닛을 여러 개 포함, 한 사이클당 여러 개의 명령어 처리 -Pipelining * n -2세대 RISC기법 |
Super Pipelined Super Scalar |
-슈퍼 스칼라 기법에 슈퍼 파이프라이닝 기법 적용하여 수행시간 더 단축 |
VLIW |
-동시에 수행될 수 있는 명령어들을 컴파일러 수준에서 추출하여 하나의 명령어로 압축 -여러 개의 기능 유닛에 의해 분산되어 실행 -인텔-HP의 IA64 EPIC(Explicitly Parallel Instruction Computing)구조에서 응용 -EPIC기법은 컴파일러가 소스 코드로부터 명시적 병렬성을 찾아 병렬처리 가능하도록 기계어 생성
|
III. Pipeline 구성도
가. Depth
- 파이프라인의 stage 수
- 한 instruction 당 stage를 늘려주어서 clock cycle time을 감소시켜 clock rate를 증가시킨다
나. Width
- 파이프라인의 stage마다 처리되는 instruction의 수
- cycle 당 처리되는 instruction의 수를 늘려서 IPC를 증가시킨다
IV. 병렬 프로세스의 종류
가 단일 Pipeline
- 효과적인 병렬처리를 위해 몇 가지 동작을 명령어 수행과정에서 각 단계에 한번만 중첩하는 기술
나 Super Pipeline
- 하드웨어 장치의 연속적인 사용을 위해 몇 가지 동작을 명령어 수행과정에서 각 단계에 중첩하되 엇갈리게 중첩하는 기술(각 명령어 수행단계를 두 개 또는 그 이상으로 분할한 구조)
- 이전의 명령어 cycle이 끝나기 전에 다음 명령어의 cycle이 시작
- n : degree of superpipeline인 경우
- clock time = 1/n
- T(1,n) = K + 1/n(N-1)
다) Super Scalar
- 파이프라이닝 기능 유닛을 여러 개 포함하여 한 사이클 당 여러 개의 명령어가 동시에 처리될 수 있도록 한 2세대 RISC기법
- 정수연산 유닛, 실수연산 유닛, 분기예측 유닛 등으로 구성
- 예를 들면 하나의 사이클에 정수연산 2개, 실수연산 4개 등을 동시에 처리하는 구조
주요 특징
특징 |
설명 |
분기 예측 |
Branch Prediction, 프로그램 실행 도중 go to와 같은 분기 명령이 발생할 경우 메모리 상의 분기 할 곳을 추측하는 기능 |
추측 실행 |
Speculative Execution, 메모리 상의 분기된 곳으로 직접 이동하지 않고, 그곳에 있을 것을 예측하여 처리하고, 계속 다른 명령을 실행하는 기능 |
다중명령 스케줄링 |
다수개의 명령어 수행 시 사전 예약에 의해 충돌을 회피하여 실행 |
- 제약조건 : 두 명령어간 데이터의 의존성이 존재하지 않아야 실행 가능
- 여러 개의 명령어를 동시에 처리하는 구조
- T(1,1) = K + N – 1(K단계, N개 명령어)
- T(m,1) = K + (N/m – 1)(m:동시수행 명령어갯수)
라) 슈퍼 파이프라인을 이용한 슈퍼 스칼라
- 슈퍼스칼라 기법에 슈퍼 파이프라이닝 기법을 적용하여 수행시간을 더 단축
- (최근 고성능 컴퓨터 이용)
- T(m,n) = K + (N-m)/mn
- N : 처리할 명령어 개수
- m : 동시수행 명령어 갯수
- n : degree of superpipeline인 경우
마) VLIW (Very long Instruction Word)
- 동시에 수행될 수 있는 명령어들을 컴파일러 수준에서 추출하여 하나의 명령어로 압축
- EPIC기법 : 컴파일러가 소스코드로부터 명시적으로 병렬성을 찾아 병렬처리가 가능하도록 기계어 코드 생성, 병렬 수행됨
- FI와 DI는 한 회로에 의해 수행됨
- 실행 Cycle만 여러 개의 기능 Unit으로 나누어져 동시에 처리
- VLIW의 특징
- 동시성 검출 : 컴파일러가 동시 실행 가능 명령어들을 검출해 하나의 명령어로 압축하여 동시 수행
- 호환성 부족 : 일정 크기의 VLIW명령어로 압축되므로 기존 H/W, S/W와의 호환성 결여 발생 가능
- 단순반복처리에 활용 : 예측이 상대적으로 쉬운 과학 계산 분야, 3차원 그래픽처리 멀티미디어 가속 등의 단순자료의 반복처리에 활용
- VLIW프로세스는 덜 복잡하고 더 작고 높은 클럭 속도를 냄
V. 병렬처리 비교
가. VLIW와 Superscalar의 비교
구분 |
Superscalar |
VLIW |
병렬성 검출 |
Run Time |
Compile Time |
호환성 |
호환성 높음 |
다른 시스템들과 Object Code 수준의 호환성 없음 |
프로그래밍 |
컴파일러가 지원 할당 |
프로세스간 독립 수행 |
나. 파이프라인의 응용 비교
구분 |
Super Pipeline |
Super Scalar |
VLIW |
명령어 해독 |
별개 해독, 동시 인출 |
별개 해독, 동시 인출 |
하나의 회로에서 인출, 해독 |
명령어 밀도 |
클럭주파수에 좌우 |
ALU 수에 좌우 |
병렬성에 따라 좌우 |
병렬성 검출 |
컴파일시 |
실행시 |
실행시 |
문제점 |
명령어 병렬성에 따라 성능이 좌우됨 |
- ALU(Arithmetic Logic Unit) : 산술논리 연산장치
Ⅵ. 확장성의 향상 NUMA(Non-Uniform Memory Access) 시스템 및 비교
가. NUMA 시스템의 정의
- 멀티프로세싱 시스템에서 지역적으로는 메모리를 공유하며, 성능을 향상시키고, 시스템 확장성이 있도록 마이크로프로세서 클러스터를 구성하기 위한 방법
나. NUMA 시스템의 특징
- SMP 시스템에서 사용되며 몇 개의 마이크로프로세서들 간에 중간단계의 공유메모리를 추가하여 모든 데이터 액세스가 주버스 상에서 움직이지 않게 하여 SMP에서 발생되는 병목현상을 완화 (시스템의 확장성 제한 극복)
- 표준의 개방형 OS 지원
- 글로벌 메모리 공유 방식
다. NUMA 시스템의 개념도
- 특정 메모리버스의 CPU개수를 제한하고 고속 연결로 여러개의 노드를 연결
라. SMP, MPP, NUMA 의 비교
구분 |
SMP |
MPP |
NUMA |
의미 |
시스템 버스와 같은 인터커넥션을 통해 프로세스, 메모리, IO 등이 시스템 자원을 균등하게 공유하는 구조 |
개별 프로세스, 메모리, IO등의 시스템 자원을 가지는 노드들을 독접된 상호 연결로 결합한 구성 |
복수개의 CPU 보드를 연결하여 통합된 멀티 프로세스 시스템을 만드는 구조 |
OS |
표준 개방형 OS 지원 |
표준 개방형 OS지원안함 |
표준 개방형 OS 지원 |
구성 |
하나의 OS 커널이 존재 |
각 노드별로 OS 커널 존재 |
글로벌 메모리 공유방식 |
Ⅶ. 병렬성 구현을 위한 기술
가. 듀얼코어 -> 멀티코어
- 두개 이상의 독립코어를 단일 집적회로로 이루어진 하나의 패키지로 통합한것
나. 하이퍼스레딩(Hyper-Threading, HTT) 기술
- 하나의 프로세스 자원을 공유하여 여러 작업을 수행하는 스레스 수준의 병렬기술 슈퍼스칼라 방식을 기반
- 네개의 코어가 동시에 두 개의 쓰레드를 처리하며 OS상에선 8개의 CPU로 보임
다. SMP(Symmetric Multi-Processing, 대칭형 멀티프로세싱) 기술
- 보통 MPP시스템에 비해 병렬 프로그래밍이 훨씬 쉽고, 프로세서간 작업 분산(workload balance)시키는 것은 훨씬 용이하지만 MPP에 비해 확장성이 취약함
- 여러 대의 처리기가 제각기 다른 명령을 병렬로 수행하기 때문에 전체적인 작업속도와 신뢰성을 높일 수 있다는 것이 가장 큰 특징
라. CUDA(GPU을 활용한 그래픽 병렬 컴퓨팅 아키텍처)
- CPU중심의 Central Processing에서 CPU+CPU의 공동 프로세싱(Co-processing)로 진화하여 CUDA 병렬 컴퓨팅 아키텍처가 등장
- GPU를 사용해 고성능 그래픽 카드로 인한 CPU의 부하를 줄이면서 성능을 향상 시킬 수 있어 복잡한 연산을 처리해야 하는 다양한 응용프로그램에 적용하는 연구가 진행
- 최근의 멀티코어는 집적되는 하나의 칩내에 32-256개의 코어를 집적하고 NoC를 통해 프로세스간 통신을 하는 매니코어 기술로 그래픽 프로세싱을 위한 GPU가 대표적
마. 메모리 지원 용량의 증가
- 최근 인텔의 제온 7500시리즈를 보면 메모리 지원 용량이 4배 늘어나 4소켓 구성시 최대 1TB메모리를 지원
- 메모리계층의 성능 및 지원메모리를 증가시켜 신속한 처리로 병렬처리 환경 구축
- 주기억장치를 이용하면 훨씬 신속한 작업처리가 가능