전공/컴퓨터구조

[컴퓨터구조] #14 병렬프로세서

Campus Coder 2023. 6. 11. 18:20
728x90
반응형

Sclability

시스템의 리소스를 증가/추가시켜 계속 성능 및 용량이 증가하는 상황 - Scale-Up

 

  1. 워드 크기 증가
  2. 클럭 스피드 증가
  3. 멀티 코어
  4. 멀티 프로세서
  5. 멀티 보드
  6. 멀티 랙
  7. 멀티 데이터센터

 

멀티코어

여러 개의 코어를 가진 프로세서

 

Multi-core 공유 메모리 프로세서

- SMP(Shared Memory Processor)

 

ILP(Instruction-level Parallellism)의 도움으로 코어 일부 활용

 

모든 코서/CPU를 사용하려면 OS/Program 지원 필요 -> 고난도

- 병렬성을 높이려면 전체적인 프로그램의 구조 변경 필요

 

Scaling

- Strong Scaling: 문제의 크기 고정해서 성능 증가

- Weak Scaling: 프로세서의 수에 비례해서 문제 크기를 증가

 

 

SISD, MIMD, SIMD, SPMD

병렬 하드웨어 분류 - 명령어 스트림수와 데이터 스트림의 수로 구분

  • SISD - 단일 프로세서
  • MIMD - 멀티 프로세서
  • SIMD - 단일 명령어, 멀티 데이터
  • SPMD - 단일 프로그램, 멀티 데이터

 

멀티 프로세서 MISD

- 스트림 프로세서

 

멀티 프로세서 SIMD

- 벡터/행렬 데이터 연산에 최적화

- 병렬실행유닛이 모두 동기화됨

- 데이터 수준 병렬성이 많은 경우에 유용

- switch/case문이 나오면 성능저하

- 벡터 크기가 다르면 opcode를 별도로 추가해야 함

 

벡터의 장점

- 잘 계산하면 계산 성능 증가

- 인덱스를 이용해서 벡터 원소를 메모리에 분산

벡터의 단점

- 계산에 특화

- 벡터레지스터가 커서 문맥전환 비용이 큼

- Page fault 페널티가 큼

- SIMD로도 가능

 

 

하드웨어 멀티스레딩

문맥 전환을 HW에서 지원해서 성능을 높이는 것

Fine-garines

명령어마다 스레드를 전환

- 지연으로 인한 손실 방지

- 개별 스레드의 성능 저하

 

UMA와 NUMA

공유메모리 멀티프로세서

UMA

프로세서, 메모리 주소에 관계없이 접근시간 일정

NUMA

프로세서, 메모리 주소에 따라 접근시간 다름

더 크게 만들 수 있고, 가까운 메모리에 빨리 접근 가능

 

 

GPU 구조

스트림 프로세서가 다수(수 천 개 단위)

SIMD

GPGPU(General Processing GPU)

페이지 계층에서 보호 기능 제공 - 요구 페이징은 지원하지 않음

도메인 특화 구조 - 딥러닝용, CuDNN + CUDA 드라이버

 

Clustering/Warehouse 개념, 특성

컴퓨터 여러대를 붙여 큰 클러스터 구성

- 전용 주소공간

- Message passing 방식으로 동작

- 신용도가 좋아짐

- 빅데이터 특화

- Grid

- 클라우드 IaaS/PaaS/SaaS

 

네트워크 - 크로스바(Crossbar) 필요

 

병렬처리에는 암달의 법칙 적용되지 않음

728x90
반응형