프로세스 성능향상

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메모리를 지원
  • 메모리계층의 성능 및 지원메모리를 증가시켜 신속한 처리로 병렬처리 환경 구축
  • 주기억장치를 이용하면 훨씬 신속한 작업처리가 가능

 

댓글