Sclability
시스템의 리소스를 증가/추가시켜 계속 성능 및 용량이 증가하는 상황 - Scale-Up
- 워드 크기 증가
- 클럭 스피드 증가
- 멀티 코어
- 멀티 프로세서
- 멀티 보드
- 멀티 랙
- 멀티 데이터센터
멀티코어
여러 개의 코어를 가진 프로세서
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) 필요
병렬처리에는 암달의 법칙 적용되지 않음
'전공 > 컴퓨터구조' 카테고리의 다른 글
[컴퓨터구조] #11~12 추가 사설 문제 (0) | 2023.06.11 |
---|---|
[컴퓨터구조] #9~11 추가 사설 문제 (0) | 2023.06.11 |
[컴퓨터구조] #13 가상메모리 (0) | 2023.06.11 |
[컴퓨터구조] #12 가상머신/가상화/클라우드 (0) | 2023.06.11 |
[컴퓨터구조] #11 메모리 계층 구조 (2) | 2023.06.11 |