Parallel & Multicore Mechanics
단일 코어의 한계를 넘어 명령어, 데이터, 태스크 수준에서 병렬 처리를 수행하는 물리적 메커니즘을 다루는 학습 노드입니다.
sys.entry
M
Me
hyunyoun's Blog
posts6 min read
1. Overview
병렬 및 멀티코어 역학(Parallel & Multicore Mechanics, PMM)은 개별 연산의 속도를 올리는 대신 동시에 여러 연산을 처리하여 전체 성능(Throughput)을 극대화하는 아키텍처를 연구합니다.
학습자는 무어의 법칙(Moore's Law) 한계 이후 대두된 멀티코어 패러다임을 이해하고, SIMD(Vector Processing), 하이퍼스레딩, 멀티프로세서 일관성 시스템의 물리적 메커니즘을 학습합니다. 하드웨어가 제공하는 병렬성(Instruction-Level Parallelism, ILP)을 소프트웨어 관점에서 어떻게 정합성 있게 활용할 수 있는지에 대한 설계 원칙을 확보합니다.
2. Scope & Boundaries
In-Scope
- 명령어 수준 병렬성(ILP): 파이프라이닝, 슈퍼스칼라, 분기 예측 및 투기적 실행
- 데이터 수준 병렬성(DLP): 벡터 프로세싱, SIMD(SSE/AVX) 명령어의 하드웨어 구현
- 스레드 수준 병렬성(TLP): 동시 멀티스레딩(CMT), 전용 멀티코어 캐시 공유 구조
- 하드웨어 일관성 모델: 버스 스누핑, 디렉토리 기반 캐시 일관성 시스템
Out-of-Scope
- 분산 컴퓨팅 네트워크 스케줄링 (07. System Architecture 영역으로 위임)
- 고수준 병렬 프로그래밍 언어 라이브러리 (e.g. OpenMP, MPI) (04. Algorithms 보조 영역)
- GPU를 이용한 CUDA/GPGPU 심화 프로그래밍 (12. Graphics 영역으로 위임)
Boundaries
- PMM vs. Distributed Systems: PMM은 '단일 머신 내 캐시와 하드웨어 버스를 공유하는 밀결합(Tight-coupled)' 병렬성을 다루며, 분산 시스템은 '네트워크를 통한 소결합'을 다룹니다.
3. Counterexample
- 단순히 스레드 개수를 늘리는 코드를 작성하는 것은 PMM 학습이 아닙니다. 왜 특정 개수를 넘어서는 스레드가 **Amdahl's Law(암달의 법칙)**에 의해 성능 향상을 멈추는지, 그리고 하드웨어의 캐시 핑퐁(Cache Ping-pong) 현상이 병렬 성능을 어떻게 저하시키는지 물리적으로 분석 가능해야 학습이 완료된 것입니다.
4. Prerequisites
- 디지털 논리 및 프로세서 물리 (Basic): 기본 파이프라인 구조와 데이터패스에 대한 이해가 선행되어야 합니다. (01. Digital Logic)
- 메모리 시스템 및 저장 물리 (Recommended): 공유 메모리 모델에서의 캐시 계층 구조 이해가 필수적입니다. (02. Memory Systems)
5. Learning Map
- Pipeline Evolution: 단일 명령어 실행을 쪼개고 겹치는 파이프라인 최적화를 익힙니다.
- Beyond Serial: 동일 명령어를 다수 데이터에 적용하는 SIMD와 하드웨어 벡터 엔진을 배웁니다.
- Multicore Logic: 다수의 코어가 하나의 메모리를 공유할 때 발생하는 일관성 문제를 물리적으로 다룹니다.
- Synchronization Hardware: 하드웨어가 제공하는 원자적 연산(Atomic Ops)과 배리어(Barrier) 메커니즘을 학습합니다.
6. Learning Topics
Basic
Core: 파이프라인과 명령어 병렬성 (Pipelining & ILP)
- Why to Learn: 명령어 하나하나의 대기 시간을 줄이고 사이클 당 처리량(IPC)을 높이기 위함입니다.
- What to Learn:
- 기본 5단계 파이프라인(Fetch-Decode-Ex-Mem-WB) 구조
- 데이터 해저드(RAW)와 제어 해저드(분기)의 물리적 발생 원인
- 파이프라인 지연(Stall) 및 포워딩(Forwarding) 처리
- How to Learn:
- 파이프라인 시뮬레이션 프로그램을 통해 명령어 흐름의 빈 공간(Bubble) 추적
- 분기 예측 미스가 발생했을 때의 사이클 페널티 수치화 실습
- Implement: 데이터 해저드를 감지하고 리졸브하는 파이프라인 흐름 시뮬레이터
Recommended
Core: 데이터 병렬성과 SIMD (Data Parallelism & SIMD)
- Why to Learn: 수치 연산 및 미디어 처리 시 하드웨어의 벡터 레지스터를 활용해 처리 성능을 비약적으로 높이기 위해서입니다.
- What to Learn:
- SIMD(Single Instruction Multiple Data) 개념 및 하드웨어 구성
- SSE, AVX 명령어 세트의 레지스터 폭과 데이터 정렬(Alignment)
- 루프 언롤링(Loop Unrolling)의 하드웨어적 보조 효과
- How to Learn:
- 행렬 곱셈 연산을 스칼라 연산과 AVX 내재 함수(Intrinsics) 연산으로 각각 구현하여 성능 비교
- 벡터화(Vectorization)를 방해하는 메모리 의존성(Aliasing) 사례 연구
- Implement: SIMD를 활용한 고속 이미지 필터링 또는 벡터 연산 모듈
Practical
Core: 멀티코어 캐시 일관성 (Multicore Coherency & Bus)
- Why to Learn: 다중 코어가 같은 메모리 주소를 참조할 때 발생하는 데이터 불일치를 물리적으로 방어하기 위해서입니다.
- What to Learn:
- 캐시 일관성 프로토콜(MESI, MOESI) 상태 전이 로직
- 버스 스누핑(Bus Snooping)과 디렉토리 기반 방식의 장단점
- 공유 자원 경합(Lock Contention)이 버스 트래픽에 미치는 영향
- How to Learn:
- 여러 코어에서 동일 변수를 업데이트할 때 발생하는 '캐시 핑퐁' 현상을 프로파일러로 관측
- 일관성 유지 과정에서 발생하는 지연 시간(Coherence Latency) 산출
- Implement: MESI 프로토콜의 상태 변이 과정을 시각화하는 시뮬레이션
Advanced
Core: 특수 병렬 아키텍처와 최적화 (Advanced Parallel Architectures)
- Why to Learn: 전성비(Watt당 성능)를 극대화하고 칩 내부 네트워킹의 성능 한계를 돌파하기 위해서입니다.
- What to Learn:
- 이종 멀티코어(big.LITTLE) 아키텍처의 부하 분산 전략
- NoC(Network-on-Chip) 토폴로지(Mesh, Ring) 및 라우팅 역학
- 비순차 실행(OoO) 분석 및 리오더 버퍼(ROB)의 역할
- How to Learn:
- 모바일 AP와 데스크탑 CPU의 코어 구성 차이를 물리적 사용 시나리오에 따라 분석
- 투기적 실행(Speculative Execution)의 한계와 최신 공격/방어 사례 연구
- Implement: NoC 기반의 다중 코어 간 데이터 패킷 전송 로직 시뮬레이션
7. Terminology
8. References
Primary References
- [P1] CS2023 - SF/Parallelism — Basic parallel concepts.
- [P1] CS2023 - AR/Multiprocessing — Hardware support for parallelism.
Secondary References
- [Computer Architecture: A Quantitative Approach] Hennessy & Patterson — Advanced reference.
- [A Primer on Memory Consistency and Cache Coherence] Sorin et al. — Deep dive into multi-core logic.
Industry References
- [Intel 64 and IA-32 Architectures Optimization Reference Manual] — Real-world parallel tuning.
- [NVIDIA GPGPU Programming Guide] — Foundation for data parallelism.
9. Final Checklist
Primary Checklist
- 파이프라인의 구조적/데이터 해저드를 식별하고 이를 해결하기 위한 하드웨어 기법을 설명할 수 있는가? (P1)
- SIMD 명령어와 일반 Scalar 명령어의 하드웨어 실행 유닛 사용 차이를 아는가? (P1)
Secondary Checklist
- 캐시 일관성 유지를 위해 버스에서 발생하는 신호 부하와 데이터 동기화 비용을 인지하고 있는가?
- 암달의 법칙을 적용하여 특정 태스크에 대한 멀티코어 확장의 상한 성능을 예측할 수 있는가?
Industry Checklist
- 멀티코어 환경에서 메모리 배리어(Memory Barrier)가 필요한 물리적 이유를 하드웨어 재배치 관점에서 설명 가능한가? (SFIA)
- big.LITTLE과 같은 이종 아키텍처 환경에서 전력 효율을 고려한 작업 할당 원리를 이해했는가?