🌐 CS:APP | μ•”λ‹¬μ˜ 법칙

μ΄μˆœκ°„Β·2025λ…„ 3μ›” 27일

CS:APP

λͺ©λ‘ 보기
7/23

βš™οΈ CS:APP | μ•”λ‹¬μ˜ 법칙(Amdahl's Law)

❓ μ•”λ‹¬μ˜ λ²•μΉ™μ΄λž€?

μ‹œμŠ€ν…œμ˜ μΌλΆ€λ§Œ κ°œμ„ ν–ˆμ„ λ•Œ, 전체 μ„±λŠ₯이 μ–Όλ§ˆλ‚˜ ν–₯상될 수 μžˆλŠ”μ§€λ₯Ό κ³„μ‚°ν•΄μ£ΌλŠ” 법칙
β†’ 즉, β€œλ³‘λ ¬ν™” 해도 전체 μ„±λŠ₯은 κ±°κΈ°κΉŒμ§€λ°–μ— λͺ» μ˜¬λΌκ°„λ‹€β€λŠ” κ±Έ λ³΄μ—¬μ£ΌλŠ” ν˜„μ‹€μ μΈ ν•œκ³„


πŸ“ μˆ˜μ‹

S = 1 / [(1 - P) + (P / N)]

기호의미
S전체 속도 ν–₯상 배수 (Speedup)
P전체 μž‘μ—… 쀑 병렬화 κ°€λŠ₯ν•œ λΉ„μœ¨
Nλ³‘λ ¬λ‘œ μ²˜λ¦¬ν•  수 μžˆλŠ” ν”„λ‘œμ„Έμ„œ 수

πŸ” P / N의 μ˜λ―ΈλŠ”?

기호의미
P병렬화 κ°€λŠ₯ν•œ 전체 μž‘μ—…μ˜ λΉ„μœ¨
Nλ³‘λ ¬λ‘œ μ²˜λ¦¬ν•  수 μžˆλŠ” ν”„λ‘œμ„Έμ„œ(CPU) 개수
P / N병렬화 κ°€λŠ₯ν•œ μž‘μ—…μ„ N개의 ν”„λ‘œμ„Έμ„œκ°€ λ‚˜λˆ μ„œ μ²˜λ¦¬ν•˜λŠ” 데 κ±Έλ¦¬λŠ” μ‹œκ°„

🧠 μ‰½κ²Œ 말해보면?

λ³‘λ ¬λ‘œ μ²˜λ¦¬ν•  수 μžˆλŠ” 일의 μ–‘ Pλ₯Ό, N개의 CPUκ°€ λ‚˜λˆ μ„œ μ²˜λ¦¬ν•œλ‹€κ³  μƒκ°ν•΄λ³΄μž.

  • CPUκ°€ 1개면 P / 1 = P β†’ λ³‘λ ¬ν™”λœ 뢀뢄을 혼자 λ‹€ 함
  • CPUκ°€ 2개면 P / 2 β†’ λ³‘λ ¬ν™”λœ 뢀뢄을 2λͺ…이 λ‚˜λˆ μ„œ 함
  • CPUκ°€ λ§Žμ•„μ§ˆμˆ˜λ‘ P / N 값이 점점 μž‘μ•„μ§€λ©° 속도 ν–₯상이 생김

πŸ” 직관적인 λΉ„μœ  (빨래 λΉ„μœ )

μ„Ένƒλ¬Όμ˜ 80%λŠ” μΉœκ΅¬λ“€μ΄ 도와쀄 수 있고, 20%λŠ” λ‚΄κ°€ 혼자 ν•΄μ•Ό ν•œλ‹€.
μΉœκ΅¬κ°€ λ§Žμ„μˆ˜λ‘ 도와쀄 뢀뢄이 뢄산돼 λΉ¨λΌμ§€μ§€λ§Œ,
λ‚΄κ°€ 혼자 ν•΄μ•Ό ν•˜λŠ” 20%λŠ” μ ˆλŒ€ 빨라지지 μ•ŠλŠ”λ‹€!

β†’ 1 - PλŠ” μ–΄λ–€ κ²½μš°μ—λ„ 빨라지지 μ•ŠλŠ” 병λͺ©
β†’ P / N은 N이 컀질수둝 μž‘μ•„μ§ (도움 λ°›λŠ” 뢀뢄은 λΆ„μ‚°)


πŸ“Œ κ²°κ΅­ μ•”λ‹¬μ˜ 핡심 ν¬μΈνŠΈλŠ”?

  • N이 컀져도 (1 - P)λŠ” κ·ΈλŒ€λ‘œ β†’ λ³‘λ ¬ν™”μ˜ μ ˆλŒ€μ μΈ ν•œκ³„
  • P / N이 아무리 μž‘μ•„μ Έλ„, (1 - P)κ°€ 클수둝 전체 μ„±λŠ₯ ν–₯상은 μ œν•œλ¨
  • κ·Έλž˜μ„œ Pλ₯Ό ν‚€μš°λŠ” λ…Έλ ₯(더 λ§Žμ€ μ½”λ“œ 병렬화)이 정말 μ€‘μš”ν•œ μ΅œμ ν™” μ „λž΅μ΄λ‹€.

βœ… 정리

ν•­λͺ©μ˜λ―Έ
P병렬화 κ°€λŠ₯ν•œ 전체 비쀑
N병렬 ν”„λ‘œμ„Έμ„œ 수
P / Nλ³‘λ ¬λ‘œ μ²˜λ¦¬ν•˜λŠ” 데 κ±Έλ¦¬λŠ” μ‹œκ°„
(1 - P)아무리 CPUλ₯Ό 많이 넣어도 빨라지지 μ•ŠλŠ” 병λͺ© μ‹œκ°„

✨ μ•”λ‹¬μ˜ 법칙 = λ³‘λ ¬ν™”μ˜ 희망과 ν˜„μ‹€μ„ λ™μ‹œμ— λ³΄μ—¬μ£ΌλŠ” μˆ˜μ‹
λΉ λ₯΄κ²Œ μ²˜λ¦¬λ˜λŠ” 뢀뢄은 P / N, 발λͺ© μž‘λŠ” 뢀뢄은 1 - P


πŸ“‰ κ·Έλž˜ν”„μ  직관

  • 병렬 CPU μˆ˜κ°€ λ§Žμ•„μ§ˆμˆ˜λ‘ μ΄ˆκΈ°μ—λŠ” κΈ‰κ²©νžˆ μ„±λŠ₯ ν–₯상,
  • ν•˜μ§€λ§Œ 점점 ν–₯상 속도가 쀄어듀고,
  • κ²°κ΅­μ—λŠ” λ³‘λ ¬ν™”λ˜μ§€ μ•ŠλŠ” 뢀뢄이 병λͺ©μ΄ 됨.
μ„±λŠ₯ ↑
β”‚       β”Œβ”€β”€β”€β”€
β”‚      /
β”‚     /
β”‚    /
β”‚   /
│──┼──────────────────────▢ 병렬 CPU 수 ↑

πŸ” μ™œ μ€‘μš”ν• κΉŒ?

  • μ΅œμ ν™”/λ³‘λ ¬ν™”μ˜ 효과λ₯Ό κ³ΌλŒ€ν‰κ°€ν•˜μ§€ μ•ŠκΈ° μœ„ν•΄
  • 투자 λŒ€λΉ„ 효율 뢄석 (예: CPU 좔가해도 μ„±λŠ₯이 거의 μ•ˆ 였λ₯΄λ©΄ λ‚­λΉ„!)
  • μ†Œν”„νŠΈμ›¨μ–΄ 병렬 섀계 μ‹œ ν•œκ³„ 인식

🚧 μ•”λ‹¬μ˜ λ²•μΉ™μ˜ μ „μ œ

  • μž‘μ—… 크기 κ³ μ •(Fixed workload)
  • ν”„λ‘œμ„Έμ„œ κ°„ 톡신 λΉ„μš© κ³ λ € X
  • μ‹€μ œ μ‹œμŠ€ν…œμ—μ„œλŠ” κ΅¬μŠ€νƒ€ν”„μŠ¨μ˜ 법칙(Gustafson’s Law)도 ν•¨κ»˜ κ³ λ €ν•˜λ©΄ 더 ν˜„μ‹€μ 

βœ… ν•œ 쀄 정리

μ•”λ‹¬μ˜ 법칙은 전체 μž‘μ—… 쀑 병렬화 κ°€λŠ₯ν•œ λΉ„μœ¨μ΄ μž‘μ„μˆ˜λ‘, CPUλ₯Ό 아무리 많이 λŠ˜λ €λ„ 속도 ν–₯상이 μ œν•œλœλ‹€λŠ” 법칙이닀.


πŸ“Œ κΈ°μ–΅ 팁

  • β€œλΉ λ₯΄κ²Œ ν•  수 μ—†λŠ” 뢀뢄이 μ„±λŠ₯ ν–₯μƒμ˜ 발λͺ©μ„ μž‘λŠ”λ‹€β€
profile
μ„œνˆ΄μ§€μ–Έμ • 늘 행동이 먼저이기λ₯Ό

0개의 λŒ“κΈ€