09 TLP
Parallelism vs Concurrency
Parallelism
- 같은 시간에 많은 일을 하는 것
- 여러 HW resource (cores, pipeline, SIMD)가 필요
- Instruction-level parallelism / Data-level parallelism / Task-level parallelism
Concurrency
- 많은 일들을 한꺼번에 하는 것 (동시에 X)
- 하나의 cpu core로도 달성 가능 (context switching)
- Fine-grained multithreading / OS scheduler
Security Issues in Concurrency/Parallelism
Dirty COW (Concurrency)
- copy를 하고, write를 해야 하는데, madvise가 자꾸 mapping을 끊어서, 원본 file에 write 하게 됨
- root 권한을 가져올 수 있음
side-channel attack
- watch the side effects (발열, 지연 시간) of computation

Dirty COW

Side-channel attack
PortSmash (Parallelism)
- a side-channel attack, Simultaneous Multithreading + Intel 시스템에서 뚫림
- Simultaneous: parallel 하게 여러 thread를 동시에 실행시키는 것을 의미
- ex) thread 0이랑 1을 일부러 같은 port에서 돌리면서 latnecy 증가 여부를 보고 어떤 instr을 수행 중인지 유추

Thread/task-level parallelism
- MIMD → multiprocessor, multithreaded processor
- 같은 작업이라 해도 여러 core에 나눠서 동시에 처리하면 각 core에 freq를 낮추는 만큼 전압도 낮출 수 있어서 전력 소모가 줄어듦 → 전력 효율 개선 (reduce power consumption)
Multiprocessor Types
- Loosely coupled multiprocessor
- shared global memory가 존재하지 않음
- 각자 자신만의 address space가 존재함
- 각 노드는 서로 msg를 주고받으며 소통
- Tightly coupled multirocessor
- shared global memory가 존재함
- 각 processor는 같은 address space를 공유
- Sync / cache coherence / memory consistency / shared resource management / Interconnection / Thermal coupling / load imbalance / contention 문제가 존재
Multithreaded Categories
- superscalar → 한 cylce에 여러 instr을 issue, 근데 그 instr은 모두 같은 thread로부터 옴 (ILP)
- SMT → 같은 코어에서 여러 thread가 동시에 issue. superscalar issue slot을 여러 thread가 공유

Superlinear Speedup
- 자원을 P개 투자했을 때 speedup이 P보다 크다면 superlinear speedup이라고 함
Utilization, Redundancy, Efficiency
- Utilization: P들이 최대로 낼 수 있는 성능 대비 얼마나 성능을 기록했는지 (operation 수 비교)
- Redundancy: best single processor 대비 parallel로 실행했을 때 얼마나 일을 더 했는지 (op 비교)
- Efficiency = U/R, single seq이 걸린 시간 / paralle에서 걸린 시간 * 프로세서 수

Amdahl’s Law
- 자원을 아무리 투자해도 sequential bottleneck이 존재하기 때문에 최대 성능 향상에 제한 O
- crticial section, lock, barrier, load imbalance, resource contention

- 그러나 heterogeneous/asymmetric multi-core를 사용하면 극복할 수 있다.
Heterogeneous/Asymmetric Multi-core
- serialized code sectoin → one powerful large core
- parallel code section → many wimpy small cores
- 단순히 크기만 차이 나는 게 아니라 코어 내부 hw 요소 차이나 내부 동작 방식에도 차이가 존재

- Asymmetric Chip Multiprocessor (ACMP)

- ACMP vs Parallelism

- ACMP에서의 Amdahl’s Law
