1 / 67

제 3 장 병렬처리를 위한 소프트웨어 기술

제 3 장 병렬처리를 위한 소프트웨어 기술. 3.1 프로세서 동기화와 상호배타 방식 3.2 프로세서 스케줄링 3.3 문제 분할 3.4 병렬 알고리즘. 3.1 프로세서 동기화와 상호배타 방식. MIMD 형 병렬컴퓨터들이 가져야 할 새로운 기능들 프로세서들 간의 데이터 교환 : 데이터 의존성 (data dependency) 에 따른 공유 변수들 (shared variables) 의 상호 교환 시스템 공유 자원의 상호 배타적 사용 : 공유 자원 (shared resources) 에 대한 중복 사용 방지

Download Presentation

제 3 장 병렬처리를 위한 소프트웨어 기술

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. 제3장 병렬처리를 위한 소프트웨어 기술 3.1 프로세서 동기화와 상호배타 방식 3.2 프로세서 스케줄링 3.3 문제 분할 3.4 병렬 알고리즘

  2. 3.1 프로세서 동기화와 상호배타 방식 • MIMD형 병렬컴퓨터들이 가져야 할 새로운 기능들 • 프로세서들 간의 데이터 교환 : 데이터 의존성(data dependency)에 따른 공유 변수들(shared variables)의 상호 교환 • 시스템 공유 자원의 상호 배타적 사용 : 공유 자원(shared resources)에 대한 중복 사용 방지 • 프로그램 실행 시작시간의 동기화 : 계산 과정에서 각 계산 주기마다 프로세서들 간에 처리 시작시간 일치 (동기식 병렬 알고리즘)  병렬처리를 위한 오버헤드(overhead) 발생 : 추가되는 기능들을 위한 H/W, 프로그램 코드 및 처리 시간 Parallel Computer Architecture

  3. 상호배타 메커니즘 (mutual exclusion mechanism) • 임계 영역 (critical section) • S/W를 이용한 상호배타 방식의 구현 방법에서 공유 자원을 이용하기 위하여 수행해야 하는 프로그램 영역 • 프로세서가 어떤 공유자원을 이용하는 것은 이 영역의 프로그램 코드를 실행함으로써 가능 • 상호배타 방식 (mutual exclusion mechanism) : 한 번에 한 프로세서만 임계영역을 수행하도록 허용함으로써 구현 • 임계 영역의 수 : 공유자원 당 한 개, 혹은 같은 종류의 여러 공유 자원들에 대하여 한 개 존재 Parallel Computer Architecture

  4. 프로세서 동기화 (processor synchronization) • 목적 • 시스템의 상태 또는 공유 데이터의 전송 시간에 따라 프로세서들 간의 동작 시간을 일치시키는 것 • 방법 • H/W 기술 + S/W 기술 • S/W 기술 • 시스템 혹은 데이터의 상태를 나타내는 공유 변수가 상호 배타적으로 액세스가 가능해야 함  동기화 방식 = 상호배타 방식 Parallel Computer Architecture

  5. 프로세서 동기화 및 상호배타 방식의 구현 • Bus-locking 방식 • Spin-lock 방식 • 세마포아(semaphore) 방식 • Full/empty 플래그를 이용한 방식 • Fetch-and-Add 명령어를 이용한 방식 Parallel Computer Architecture

  6. 설명을 위한 시스템 환경 • 단일-버스 공유-기억장치 다중프로세서 시스템 (프로세서 수 = n) • 공유 기억장치에 임계영역(프로그램 코드들)과 공유 변수(S)가 저장되어 있는 상태 Parallel Computer Architecture

  7. 3.1.1 Bus-locking 방식 • 프로세서가 버스에 접속된 공유 자원을 액세스하는 동안에는 버스를 독점함으로써 다른 프로세서들이 버스를 사용하지 못하게 하는 방식 • 구현 방법 : bus locking(버스 잠금)을 위한 특수 명령어 및 H/W 사용 [예] 80x86 계열 프로세서의 LOCK 명령어 • 동작 순서 • 버스 요구(bus request)의 발생 • 버스 중재에 의한 버스 사용허가(bus grant) 획득 • 버스 잠금(bus locking) • 임계영역(critical section)의 실행 : 공유 자원의 사용 • 버스 잠금의 해제(bus release) Parallel Computer Architecture

  8. Bus-locking 방식 (계속) • 상호배타 프로그램 LOCK(bus);임계 영역(C.S.)의 실행UNLOCK(bus); • Bus locking 방식을 이용한 경우의 시스템 동작 : Parallel Computer Architecture

  9. Bus-locking 방식 (계속) • 장점 • 구조가 간단 • 버스 경합이 없기 때문에 임계영역 실행 시간이 짧다 • 단점 • 한 프로세서가 임계 영역을 실행하는 동안에는 버스상의 다른 공유 자원을 사용하려는 모든 프로세서들이 기다려야 하므로 시스템 성능이 저하된다 Parallel Computer Architecture

  10. 3.1.2 Spin-lock 방식 • Lock 변수의 상태를 검사하여, 허가된 경우에만 임계 영역을 실행하도록 하는 방식  한 번에 한 프로세서만 공유자원 사용 • 구현 방법 • 공유 변수 S를 lock 변수로 사용 • 공유자원을 사용하려는 프로세서는 Lock 변수 S를 검사하여, • 공유변수 S = 0이면, 임계영역 실행을 시작 • 공유변수 S ≠ 0이면, S에 대한 반복 검사(spin-lock) 수행 Parallel Computer Architecture

  11. Spin-lock 방식 (계속) • Spin-lock에 의한 시스템 동작 Parallel Computer Architecture

  12. Spin-lock 방식 (계속) • 상호배타 프로그램(공유변수 s의 초기값 = 0) do { Test&Set(S) } while (S != 0) ; 임계영역 실행 S = 0 ; • S 검사 및 locking 동작(do while문)에 대한 어셈블리 프로그램 : LOCK(S) LOCK: LOAD AC, S ; S를 레지스터에 적재 CMP AC, #0 ; zero(0) 검사 JNZ LOCK ; 만약 0이 아니라면, 검사 반복 STO S, #1 ; S에 1을 저장 RET Parallel Computer Architecture

  13. Spin-lock 방식 (계속) • Locking release를 위한 루틴 : UNLOCK(S)UNLOCK : STO S, #0 ; S에 0을 저장RET • 문제점: 두 개 이상의 프로세서들이 동시에 S에 대한 검사를 수행하는 경우에, 먼저 S를 읽은 프로세서가 S를 1로 세트하기 전에 다른 프로세서가 S를 읽어간다면, 두 프로세서들이 모두 임계영역에 들어가게 됨 (상호배타가 지켜지지 못함) [원인] S에 대한 검사와 세트가 원자적으로(atomically) 수행되지 않기 때문에 발생. Parallel Computer Architecture

  14. Spin-lock 방식 (계속) • 해결 방법: S에 대한 읽기-수정-쓰기(read-modify-write)를 원자 연산(atomic operation; primitive operation, 혹은 indivisible operation이라고 부름)으로 수행 [예] M68030의 TAS reg, mem명령어 : - 기억장치 mem 번지의 데이터를 읽어서 레지스터에 저장하고, - 그 값에 따라 플래그를 세트한 후에,- mem 번지에 1을 저장( 위의 모든 동작이 수행되는 동안 기억장치는 locking됨 ) Parallel Computer Architecture

  15. Spin-lock 방식 (계속) • ‘TAS 명령어’를 이용한 LOCK(S) 프로그램 LOCK : TAS AC, S ; AC  S, 플래그 세트, & ; s  1 JNZ LOCK ; 만약 S ≠ 0, TAS 반복 수행RET • 상호배타 프로그램 :LOCK(S)임계영역 실행UNLOCK(S) Parallel Computer Architecture

  16. Spin-lock 방식 (계속) • 장점 • 어떤 프로세서가 공유자원을 사용하는 동안에도 다른 프로세서들이 버스를 통한 시스템 동작을 계속할 수 있다 • 단점 • 반복 검사를 수행하는 프로세서들에 의해 버스 통신량(traffic)이 높아져 시스템 성능이 저하된다 • Test&Set 함수 혹은 TAS 명령어의 반복 실행에 따른 S/W 오버헤드 때문에 전체 프로그램 실행 시간이 길어진다 Parallel Computer Architecture

  17. Spin-lock 방식 (계속) • 변형들(variants) • Test&Set with Backoff : 프로세서가 S 검사를 위해 다시 액세스하기 전에 약간의 지연(delay)을 가지도록 하는 방식. [예] 지연 시간 : 처음에는 k, 그 이후는 k x ci (단, c는 시스템에 따른 상수) Parallel Computer Architecture

  18. Spin-lock 방식 (계속) (2) Test-and-Test&Set : S애 대한 반복 검사 과정 동안에 버스 통신이 발생되지 않도록 하는 방법<순서> • Test&Set(S) 수행 S가 캐쉬에도 적재 • 임계영역에 들어가지 못한 프로세서들은 이후의 S에 대한 검사 동작을 내부적으로 수행 :자신의 캐쉬 반복 액세스 (local access) • 공유자원 release (S=0)  캐쉬의 S 무효화  캐쉬 미스  기억장치로부터 S 액세스 • 만약 S=0, Test&Set(S)를 수행하고, 임계영역 실행만약 S≠0, ② 번부터 다시 수행 Parallel Computer Architecture

  19. Spin-lock 방식 (계속) • Test-and-Test&Set을 위한상호배타 프로그램Test&Set(S) ;repeat: do { Load(S) } while (S != 0) ; Test&Set(S) ; if (S != 0) goto repeat ;임계영역 실행S = 0 ; Parallel Computer Architecture

  20. 3.1.3 세마포아 방식 • procedure P(S) --> 최초 S값은 1임 • while S=0 do wait --> S가 0면 1이 될때까지 기다려야 함 • S := S-1 --> S를 0로 만들어 다른 프로세스가 들어 오지 못함 • end P • procedure V(S) --> 현재상태는 S가 0임 • S := S+1 --> S를 1로 원위치시켜 해제하는 과정. 이제는 다른 프로세스가 들어 올수 있음 • end V • P와 V는 쪼갤수 없는 단일 연산이다. | | 즉 한 프로세스가 P나 V를 수행하고 있는 동안에는 프로세스가 인터럽트를 당하지 않는다 Parallel Computer Architecture

  21. 세마포아 방식 (계속) • P & V 연산을 이용한 상호배타 메커니즘P(S)임계영역 실행V(S) 최초에 S의 값은 1이다. 위와 같은 CS를 포함하는 두개의 프로세스 A와 B가 있다고 하자. A와 B는 서로 독립적으로 수행되지만, 두 프로세스가 동시에 CS로 들어가서는 안된다. 위와 같이 세마포어를 사용하면 P(S)를 먼저 수행하는 프로세스가 S를 0으로 해놓고 CS에 들어가므로 나중에 도착하는 프로세스는 P에서 더이상 진행되지 못하고 기다리게 된다. 먼저 들어갔던 프로세스가 V(S)를 해주어야 비로서 P(S)에서 기다리던 프로세스가 위험지역에 들어갈 수 있고 따라서 상호배제가 실현된다. Parallel Computer Architecture

  22. 세마포아 방식 (계속) • P & V 연산의구현 방법struct semaphore { int count ; queueType queue ; } void P (semaphore S) { S.count-- ; if (S.count < 0) { 프로세서는 ID를 S.queue에 저장하고, 대기(wait) } } Parallel Computer Architecture

  23. 세마포아 방식 (계속) void V (semaphore S) { S.count++ ; if (S.count <= 0) { S.queue로부터 프로세서 ID를 꺼내어, 그 프로세서로wakeup 신호 전송 } } Parallel Computer Architecture

  24. 세마포아 방식 (계속) • 장점 • 반복검사가 없으므로 버스 교통량 감소 • 버스 잠금이 없으므로 다른 공유자원 사용 가능 • 단점 • Wakeup 신호 발생을 위한 H/W 필요 • S/W 오버헤드가 크다 • 임계영역 실행 시간이 긴 경우에 적합 (짧은 경우에는 spin-lock 방식이 더 적합) Parallel Computer Architecture

  25. 3.1.4 배리어 동기화 방식 • 배리어(Barrier; 장벽) : 동기식 병렬 알고리즘을 처리하는 과정에서, 계산에 참여한 모든 프로세서들이 다음 동작의 시작 시간을 일치시키기 위하여 기다려야 하는 사건 (예: 모든 프로세서들의 한 주기 계산 종료) • 배리어 동기화 (Barrier Synchronization) : 배리어를 이용하여 프로세서들의 시간을 일치시키는 동작 Parallel Computer Architecture

  26. 배리어 동기화 방식 (계속) • 배리어 동기화 방식을 이용한 반복 계산 프로그램단, bar1 : 동기화 변수, p : 계산에 참여한 프로세서들의 수계산 수행 BARRIER(bar1, p); 계산 수행 BARRIER(bar1, p);계산 수행: Parallel Computer Architecture

  27. 배리어의 구현 방법 struct bar_type {      int counter;      struct lock_type lock;      int flag = 0; } bar_name; BARRIER (bar_name, p) {      LOCK(bar_name.lock);                 if (bar_name.counter == 0)         bar_name.flag = 0;     /* 만약 첫 번째 프로세서라면, 플래그를 리셋 */      mycount = bar_name.counter++; /* 카운터를 증가시키고, 지역 변수에 복사*/      UNLOCK(bar_name.lock);      if (mycount == p)  {          /* 만약 마지막 프로세서라면, */         bar_name.counter = 0;     /* 카운터 값을 0으로 리셋 */         bar_name.flag = 1;         /* 대기 중인 프로세서들에게 종료를 통보 */      }      else         while (bar_name.flag == 0)  { };  /* 플래그가 세트될 때까지 대기 */ } Parallel Computer Architecture

  28. 3.1.5 Full/empty flag를 이용한 방식 • 공급자-소비자 관계(producer-consumer relationship) : 데이터 의존성이 존재하는 경우에, 데이터를 교환하는 두 프로세서들 간의 관계 • 공급자: 공유변수를 보내주는 프로세서 • 소비자: 공유변수를 받아서 사용하는 프로세서 Parallel Computer Architecture

  29. Full/empty flag를 이용한 방식 (계속) • 공유변수의 도착시간과 사용시간의 차이에 따른 상황 • 프로세서 2가 공유변수를 사용할 시점보다 먼저 그 변수가 도착하는 경우 즉시 공유변수 사용 • 프로세서 2가 공유변수를 원하는 시점까지 그 변수가 전송되지 않은 경우 대기(wait) • 공유변수의 도착(혹은 새로운 값으로 갱신)을 확인하는 방법 • Full/empty flag이용 • Flag = 0 : 데이터가 도착(혹은 갱신)되지 않음 • Flag = 1 : 데이터가 도착(혹은 갱신) 되었음 Parallel Computer Architecture

  30. 사례 • Full/empty flag를 이용한 동기화 방식 P1 P2---------- --------------------------------a = f(x) ; while (flag == 0) do nothing ;flag = 1 ; b = g(a) ; Parallel Computer Architecture

  31. Full/empty flag가 H/W로 구현된 기억장치 구조 • H/W로 구현된 full/empty flag를 이용하는 경우P1 P2 ---------- -------------------------------- a = f(x) ; b = g(a) ; Parallel Computer Architecture

  32. 3.1.6 Fetch-and-Add 명령어를 이용한 방식 • 다단계 상호연결망(MIN)인 공유-기억장치시스템에서 Fetch_and_add(V,e) 명령어를 이용한 상호 배타 및 프로세서 동기화 방식 • New York Univ. 전산학과에서 연구용으로 개발한 NYU Ultracomputer에서 구현 (Omega Network 이용 : 238쪽, 그림 6-25 참조) • F&A(V,e) 명령어(단, V : 공유변수, e : 임의의 정수) Pi : F&A(V,ei)  Pi V Pj : F&A(V,ej) Pj V + ei V  V + ei + ej • 기억장치 모듈과 직접 연결된 스위치에 두 개(이상)의 F&A 명령어를 통합 처리하기 위한 H/W 포함  기억장치 액세스 수 = 1 • 동일한 기억장소에 대한 동시 액세스들을 직렬화(serialization) Parallel Computer Architecture

  33. F&A 명령어가 실행되는 과정 Parallel Computer Architecture

  34. F&A 명령어의 사용 예 [예제 3-2]세 개의 프로세서들이 각각 F&A(V,2) 명령어를 동시에 실행하였고, 그에 따른 기억장치 요구들이 스위칭 소자에 도착한 순서가 P2, P3, P1이었다고 가정하자. 명령어 실행들이 종료된 후에 각 프로세서들에게 보내지는 값들과 공유 변수 V의 최종값은 무엇이 되는가?단, V의 초기값은 0이다. [풀이] P2로 보내지는 값 = 0 (V의 초기값) P3로 보내지는 값 = 2 (V+2) P1으로 보내지는 값 = 4 {(V+2)+2} V의 최종값= 6 [{(V+2)+2}+2] Parallel Computer Architecture

  35. F&A 명령어의 사용 예 [예제 3-3]다섯 개의 프로세서들이 다음과 같은 벡터 계산 프로그램을 분담하여 처리하는 경우에, 각 프로세서는 자신이 담당할 벡터 요소(vector element)의 인덱스 i를 할당받기 위하여 F&A(i,1)을 실행한다. 첫 번째 계산을 완료하면, 프로세서는 다시 F&A(i,1) 명령어를 실행하여 다음 인덱스를 할당받는다. 명령어가 실행된 순서가 P1, P2, P3, P4, P5인 경우에, 각 프로세서들이 할당받게 되는 i값들을 구하라. 단, i의 초기값은 1이다. for (i = 1; i <= 10; i++) a[i] = b[i] + c[i]; Parallel Computer Architecture

  36. [예제 3-3] (계속) [풀이] 모든 프로세서들은 아래와 같이 할당되는 인덱스들을 이용하여 두 번씩의 계산을 수행한다. 첫 번째 계산두 번째 계산 P1에게 할당되는 i = 1 6 P2에게 할당되는 i = 2 7 P3에게 할당되는 i = 3 8 P4에게 할당되는 i = 4 9 P5에게 할당되는 i = 5 10 Parallel Computer Architecture

  37. 3.2 프로세서 스케줄링 • 병렬컴퓨터에서 Sp < N이 되는 주요 원인들 • 병렬처리 오버헤드 • 낮은 시스템 효율 : 불균등한 작업 할당, 데이터 의존성  [ 개선 방안 ] • 프로세서들에게 균등한 작업량 할당 • 프로세서간 통신량이 최소화되도록 문제 분할 • 데이터 의존성이 존재하는 부분은 어느 한 프로세서 혹은 근접한 위치의 프로세서에 할당 Parallel Computer Architecture

  38. 프로세서 스케줄링 (processor scheduling) • 분할된 작업(태스크)들을 프로세서들에게 적절히 할당하는 과정 • 프로세서 이용률 향상을 위하여 가능한 한 균등하게 할당 • 데이터 의존성에 따른 데이터 전송량이 최소화되도록 할당 • 스케줄링의 분류 • 결정적 스케줄링(deterministic scheduling) : 스케줄링 단계에서 태스크의 특성(처리 시간, 처리 순서 및 데이터 의존성)에 대한 정보를 미리 알고 있는 상태에서 스케줄링 하는 방식 • 비결정적 스케줄링(non-deterministic scheduling) : 태스크 처리시간을 임의 변수(random variable)인 것으로 가정하고 스케줄링 하는 방식 Parallel Computer Architecture

  39. 3.2.1 처리 시간 및 선행 관계에 따른 스케줄링 • 스케줄링의 목표 • 한정된 수의 프로세서들을 이용하여 최단 시간 내에 처리를 완료하는 것 • 프로세서 수가 무한대일 때 최단 시간 내에 처리 • 선행 그래프 (precedence graph) • 태스크들 간의 처리 순서 관계를 보여주는 그래프 • 그래프의 폭(width) : 동시에 처리될 수 있는 태스크의 최대 수 • 흐름 시간(flow time) : 각 태스크 처리에 걸리는 시간 Parallel Computer Architecture

  40. 선행그래프의 예 • 모든 테스크들의 처리 시간이동일하다고 가정 • T1 < T2 < T4 ... • 그래프 폭 = 3 • 그래프 깊이 = 5 Parallel Computer Architecture

  41. 간트 도표 • 간트 도표 (Gantt chart) : 시간 흐름도 (timing diagram) • 시스템 효율 : (a) : 10/12x100 = 83.3% (b) : 10/15x100 = 66.7% Parallel Computer Architecture

  42. 사용 가능한 최대 프로세서 수 = 선행 그래프의 폭(width) • 처리에 걸리는 최단 시간 = 선행 그래프의 깊이(depth) Parallel Computer Architecture

  43. 스케줄링의 예(I) : 태스크의 흐름 시간이 다른 경우 Parallel Computer Architecture

  44. 스케줄링의 예(II) : 중단(preemption)이 적용된 경우 Parallel Computer Architecture

  45. 스케줄링 예(II)의 간트 챠트 Parallel Computer Architecture

  46. 스케줄링의 예(III) : 프로세서 수의 영향 분석 스케줄링의 예 [III] : 프로세서 수와 처리 시간 같은 시간 내에 처리가 완료될 수 있다면 시스템 효율을 향상시키기 위하여 가능한 적은 수의 프로세서들을 사용하도록 스케줄링 Parallel Computer Architecture

  47. 3.2.2 프로세서간 통신시간을 고려한 스케줄링 • 통신시간과 스케줄링의 상관관계[예] Parallel Computer Architecture

  48. 프로세서간 통신시간을 고려한 스케줄링 (계속) • 효과적인 병렬처리를 위해서는 프로세서간 통신시간에 따라, 스케줄링뿐 아니라 그레인의 크기도 달라져야 한다 [사례] 아래 17개의 태스크들에 대한 스케줄링(단, T1~T6 = 1, T7~T17 = 4, 통신 = 8 단위시간 소요) T1: a = 1; T10: j = e×f T2: b = 2; T11: k = d×f T3: c = 3; T12: l = j×k T4: d = 4; T13: m = 4×l T5: e = 5; T14: n = 3×m T6: f = 6;T15: o = n×i T7: g = a×b;T16: p = o×h T8: h = c×dT17: q = p×g T9: i = d×e Parallel Computer Architecture

  49. 작은 그레인을 이용한 스케줄링의 결과 9 7 Parallel Computer Architecture

  50. 그레인 패킹(grain packing)을 이용한 스케줄링의 결과 • 프로세서간 통신시간이 태스크 수행 과정에서 지연을 발생하지 않도록 스케줄링  전체 처리 시간이 패킹을 하지 않은 경우보다 길어짐 Parallel Computer Architecture

More Related