|
| 1 | +--- |
| 2 | +sidebar_position: 13 |
| 3 | +title: 고성능 컴퓨터시스템 구조 |
| 4 | +description: 병렬처리 개념, 병렬처리 단위, 병렬 컴퓨터 분류, MIMD 조직의 다중 프로세서 시스템 구조에 대한 개요 |
| 5 | +--- |
| 6 | + |
| 7 | +## 1. 병렬처리의 개념 및 필요성 |
| 8 | + |
| 9 | +병렬처리(Parallel Processing)는 정보 처리 속도를 향상시키기 위해 다수의 프로세서들이 여러 개의 프로그램들이나 한 프로그램의 분할된 부분들을 동시에 처리하는 기술입니다. 슈퍼컴퓨터 및 고성능 서버 시스템의 설계 원리에서 핵심적인 부분입니다. |
| 10 | + |
| 11 | +**병렬처리를 위한 선결 조건:** |
| 12 | + |
| 13 | +- **작고 저렴하며 고속인 프로세서의 사용 가능성:** |
| 14 | + - 반도체 기술의 발전과 VLSI 집적도 향상으로 가능해졌습니다. |
| 15 | +- **프로그램 분할 및 결과 동일성:** |
| 16 | + - "한 프로그램을 여러 개의 작은 부분들로 분할하는 것이 가능해야 하며, 분할된 부분들을 병렬로 처리한 결과가 전체 프로그램을 순차적으로 처리한 경우와 동일한 결과를 얻을 수 있어야 함" |
| 17 | + |
| 18 | +**병렬처리로 인해 야기되는 새로운 문제들:** |
| 19 | + |
| 20 | +- 병렬 프로그램 언어와 컴파일러 개발 |
| 21 | +- 상호 배타 메커니즘(mutual exclusion mechanism) 지원 |
| 22 | +- 공유 자원에 대한 경합(contention)을 줄이고 이용률을 극대화할 수 있는 운영체제 개발 |
| 23 | + |
| 24 | +**필요한 관련 기술:** |
| 25 | + |
| 26 | +- **문제 분할(Problem Partition):** 문제(혹은 프로그램)를 병렬처리를 위해 여러 개로 나누는 것. |
| 27 | +- **프로세서간 통신(Inter-processor Communication):** 분할된 부분을 처리하는 프로세서 간 데이터 교환 메커니즘. |
| 28 | + |
| 29 | +--- |
| 30 | + |
| 31 | +## 2. 병렬처리의 단위 |
| 32 | + |
| 33 | +병렬처리는 다양한 수준에서 이루어질 수 있습니다. |
| 34 | + |
| 35 | +- **작업-단위 병렬성(Job-level parallelism):** |
| 36 | + - 독립적인 작업 프로그램(job program) 단위의 병렬처리. (예: 성적관리 프로그램과 실험 데이터 처리 프로그램) |
| 37 | +- **태스크-단위 병렬성(Task-level parallelism):** |
| 38 | + - 하나의 큰 작업을 기능에 따라 분할한 작은 프로그램(태스크) 단위의 병렬처리. (예: 로봇 제어 프로그램) |
| 39 | +- **스레드-단위 병렬성(Thread-level parallelism):** |
| 40 | + - 동시에 처리될 수 있는 가장 작은 크기의 독립적인 단위 프로그램인 스레드 단위의 병렬처리. |
| 41 | +- **명령어-단위 병렬성(Instruction-level parallelism):** |
| 42 | + - 데이터 의존성이 존재하지 않는 여러 개의 명령어들을 동시에 수행하는 병렬처리. |
| 43 | + |
| 44 | +--- |
| 45 | + |
| 46 | +## 3. 병렬 컴퓨터의 분류 |
| 47 | + |
| 48 | +### 3.1. Flynn의 분류 (구조적 특징에 따른 분류) |
| 49 | + |
| 50 | +Flynn의 분류는 프로세서들이 처리하는 명령어 스트림(instruction stream)과 데이터 스트림(data stream)의 수에 따라 컴퓨터를 분류합니다. |
| 51 | + |
| 52 | +| 분류 | 명령어 스트림 | 데이터 스트림 | 설명 | |
| 53 | +| ---- | ------------- | ------------- | ------------------------------------------------------------------------------------------------------------------- | |
| 54 | +| SISD | 단일 | 단일 | 한 번에 한 개씩의 명령어와 데이터를 순서대로 처리하는 단일 프로세서 시스템. 파이프라이닝, 슈퍼스칼라 구조 이용 | |
| 55 | +| SIMD | 단일 | 복수 | 여러 개의 프로세싱 유니트(PU)들이 하나의 명령어 스트림을 실행, 여러 데이터 스트림을 동시에 처리 (예: 배열 프로세서) | |
| 56 | +| MISD | 복수 | 단일 | N개의 프로세서들이 서로 다른 명령어를 실행하지만 데이터 스트림은 한 개. 실제 구현 사례는 없음 | |
| 57 | +| MIMD | 복수 | 복수 | N개의 프로세서들이 서로 다른 명령어와 데이터를 처리. 밀결합/소결합 시스템으로 분류 | |
| 58 | + |
| 59 | +- **밀결합 시스템:** 공유-기억장치 구조(shared-memory architecture), 다중프로세서 시스템(multiprocessor system) |
| 60 | +- **소결합 시스템:** 지역 기억장치(local memory)를 가진 독립적 컴퓨터 모듈, 메시지 전송(message-passing) 방식, 다중컴퓨터 시스템 |
| 61 | + |
| 62 | +### 3.2. 기억장치 액세스 모델에 따른 분류 |
| 63 | + |
| 64 | +- **균일 기억장치 액세스(UMA: Uniform Memory Access) 모델:** |
| 65 | + - 모든 프로세서가 상호연결망에 의해 접속된 주기억장치를 공유, 동일한 시간으로 액세스 |
| 66 | + - 하드웨어가 간단, 프로그래밍 용이, 시스템 크기에 한계 |
| 67 | +- **불균일 기억장치 액세스(NUMA: Non-uniform Memory Access) 모델:** |
| 68 | + - 다수의 UMA 모델이 상호연결망에 의해 접속, 분산 공유-기억장치 구조 |
| 69 | + - 액세스 시간은 기억장치 위치(지역/전역/원격)에 따라 다름 |
| 70 | +- **무-원격 기억장치 액세스(NORMA: No-Remote Memory Access) 모델:** |
| 71 | + - 프로세서가 원격 기억장치를 직접 액세스할 수 없음, 메시지-전송 상호연결망 |
| 72 | + - 분산-기억장치 시스템, 매시/하이퍼큐브/토러스 등 상호연결망 사용 |
| 73 | + |
| 74 | +### 3.3. 시스템 구성방법에 따른 분류 |
| 75 | + |
| 76 | +- **대칭적 다중프로세서(SMP):** |
| 77 | + - 64개 이하 프로세서, 완전-공유 구조(shared-everything), 하나의 OS, 동등 권한 |
| 78 | +- **대규모 병렬프로세서(MPP):** |
| 79 | + - 무공유 구조(shared-nothing), 수백~수천 개 노드, 메시지 전송 방식 |
| 80 | +- **캐시-일관성 NUMA(CC-NUMA):** |
| 81 | + - 독립 노드(UMA/NUMA)가 상호연결망으로 연결, 캐시 및 주기억장치 일관성 유지, 전역 주소공간 |
| 82 | +- **분산 시스템(Distributed System):** |
| 83 | + - 독립 노드가 네트워크로 연결, loosely-coupled system |
| 84 | +- **클러스터 컴퓨터(Cluster Computer):** |
| 85 | + - 고속 LAN/스위치로 연결된 PC/워크스테이션 집합, 단일 시스템 이미지(SSI), 저비용/고가용성 |
| 86 | + |
| 87 | +--- |
| 88 | + |
| 89 | +## 4. 다중 프로세서 시스템 구조 (MIMD 조직) |
| 90 | + |
| 91 | +MIMD 조직의 다중 프로세서 시스템은 여러 개의 프로세서들이 비동기적으로 프로그램을 실행하는 시스템입니다. 기억장치 모듈을 사용하는 방식에 따라 공유-기억장치 시스템과 분산-기억장치 시스템으로 분류됩니다. |
| 92 | + |
| 93 | +### 4.1. 공유-기억장치 시스템 구조 (Shared-Memory System) |
| 94 | + |
| 95 | +- **특징:** 밀결합 구조, 주기억장치가 모든 프로세서에 의해 공유 |
| 96 | +- **장점:** 프로그래밍 용이, 프로세서 이용률 극대화 |
| 97 | +- **단점:** 통로(버스/상호연결망)상 통신량 증가로 경합 및 지연, 프로세서 수 증가 시 선형적 성능 향상 어려움 |
| 98 | + |
| 99 | +**상호연결 구조:** |
| 100 | + |
| 101 | +- **버스(Bus):** 공유-버스(하드웨어 간단, 버스 경합), 다중-버스(경합 완화, 계층버스) |
| 102 | +- **크로스바 스위치(Crossbar Switch):** 완전 연결성, 비용/복잡도 높음 |
| 103 | +- **다단계 상호연결망(MIN):** 크로스바와 버스 중간 복잡성 (예: 오메가 네트워크) |
| 104 | + |
| 105 | +### 4.2. 분산-기억장치 시스템 구조 (Distributed-Memory System) |
| 106 | + |
| 107 | +- **특징:** 소결합 구조, 각 프로세서가 자신의 지역 기억장치(local memory) 소유, 메시지 전송 이용 |
| 108 | +- **장점:** 공유 자원 경합 감소 |
| 109 | +- **단점:** 통신 프로토콜에 의한 지연 증가 |
| 110 | + |
| 111 | +**주요 상호연결망 (네트워크 지름 고려):** |
| 112 | + |
| 113 | +- **선형 배열(Linear Array):** 네트워크 지름 N-1 |
| 114 | +- **링(Ring):** 양방향 N/2, 단방향 N-1, 코달 원형 변형 |
| 115 | +- **트리(Tree):** 층수 k, N=(2^k-1) 노드, 지름 2(k-1), 팻 트리(fat tree)로 병목 해결 |
| 116 | +- **매시(Mesh Network):** Illiac IV, MPP, DAP, CM-2, Intel Paragon 등, 토러스 네트워크(torus network)로 확장 가능 |
| 117 | +- **하이퍼큐브(Hypercube):** m=log2N 차원, E-큐브 라우팅으로 자동 경로설정 |
| 118 | + |
| 119 | +--- |
| 120 | + |
| 121 | +## 요약 |
| 122 | + |
| 123 | +- 병렬처리의 개념과 필요성 |
| 124 | + - 여러 프로세서가 동시에 작업을 처리하여 정보 처리 속도 향상 |
| 125 | +- 병렬처리의 단위 |
| 126 | + - 작업 단위, 태스크 단위, 스레드 단위, 명령어 단위 병렬성 |
| 127 | +- 병렬 컴퓨터의 분류 |
| 128 | + - Flynn의 분류: SISD, SIMD, MISD, MIMD |
| 129 | + - 기억장치 액세스 모델: UMA, NUMA, NORMA |
| 130 | + - 시스템 구성 방식: SMP, MPP, CC-NUMA, 분산 시스템, 클러스터 컴퓨터 |
| 131 | +- MIMD 기반 다중프로세서 시스템 구조 |
| 132 | + - 공유-기억장치 구조: 프로그래밍 용이, 경합 발생 가능 |
| 133 | + - 분산-기억장치 구조: 경합 감소, 통신 지연 발생 가능 |
| 134 | +- 슈퍼컴퓨터 및 고성능 서버 설계의 기본 원리 이해에 중요 |
0 commit comments