CA / OS
[CA] 컴퓨터 구조 - 2 ( 병렬처리 )
부레두
2024. 3. 22. 21:34
병행성과 병렬성
→몇 개의 코어가 몇 개의 함수를 처리하는지 ?
병행성 ( Concurrency ) | 병렬성 ( Parallelism ) |
하나의 코어가 다수의 프로그램 처리 | 다수의 코어 하나의 프로그램 처리 |
한 순간에 하나의 프로세스만 처리 | 한 순간에 두 개 이상의 프로그램이 처리 |
Multi-Programming, Multi-Processing | Multi-Processor, Multi-Threading |
→ Race Condition 발생 가능
⇒ Mutex 안 Critical Section으로 해결 가능
⇒ Semapore
메모리 공유 방식
→ 프로세서들이 처리하는 명령어들과 데이터들의 흐름 수로 분류한 방식
- Flynn의 분류
멀티코어
→ 2개 이상의 독립적인 프로세서들을 단일 패키지로 통합한 것
→ 하나의 CPU에 여러 독립 실행코어로 프로그램을 병렬적으로 처리
- 멀티코어 SW 기술
구분 | 설명 |
OpenCL (Open Computing Language) |
크로노스 그룹에서 유지 및 관리 개방형 범용 병렬 프레임워크 여러 CPU, GPU 및 기타 프로세서로 이루어진 다중 플랫폼에서의 구동하는 데이터 및 테스크 병렬성을 고려해 작성 |
WebCL | OpenCL이 지원되는 시스템에서 ‘이기종 멀티코어’ 기능을 활용해 웹브라우저 성능을 가속할 수 있도록 지원하는 인터페이스 |
CUDA | 2006년 NVDIA에서 발표한 병렬 컴퓨팅 시스템 |
- AMP ( Asymmetric Multicore Processor )
→ 이종형의 다른 아키텍처의 프로세서를 사용해 병렬 처리가 가능하도록 한 프로세서 - APU ( Accelerated Processing Unit )
→ 발열, 전력 소모가 심한 그래픽카드의 대체제
→ 연산을 책임지는 CPU와 그래픽 연산을 책임지는 GPU를 합해 만든 성능 가속 프로세서 - GPU, GPGPU
→ GPU를 그래픽 연산만 아니라 일반 컴퓨팅 영역에서도 사용하고자 하는 컴퓨터 체계
CPU | GPU | GPGPU |
큰 용량의 캐시 메모리 | ||
제한된 CPU 코어로 구성 | control, cache 부분을 간소화한 많은 수의 코어 집적 구성 | 여러 개의 GPU를 집적해 벡터연산을 병렬성을 수행 |
복잡한 계산을 수행 | 단순한 병렬 계산을 수행 | GPU 계산결과를 CPU와 교환 |
- CUDA ( Compute Unified Device Architecture )
→ NVDIA에서 개발한 ‘GPU에서 수행하는 알고리즘을 C 언어를 비롯한 산업 표준 언어로 작성할 수 있게 하는 GPGPU 기술