본문으로 건너뛰기
Embedded Performance Engineering · 28/57

Thermal Throttling 분석 — Junction Temp·Trip Point·냉각

· Hawk · 4분 읽기

#한 줄 요약

“Thermal throttle = CPU 자기보호” 입니다. 정격 온도를 넘기면 frequency가 자동으로 내려갑니다.

#온도 등급

GradeJunction T용도
Commercial0 ~ 70°C데스크탑·소비자
Industrial-40 ~ 85°C산업 컨트롤러
Extended-40 ~ 105°C자동차 캐빈
Automotive (AEC-Q100)-40 ~ 125°CECU
Mil-Spec-55 ~ 125°C군용
Space-55 ~ 150°C (rad-hard)위성·LV

LV와 항공은 외부 환경이 영하에서 직사광선까지 넓게 변하므로, 패키지와 재료 선택이 결정적입니다.

#Thermal Sensor

On-die diode based:
V_BE diff (PTAT — Proportional To Absolute Temp)
→ ADC conversion → ° C
정확도 ±2~5°C, 해상도 1°C
/* STM32 internal TS */
HAL_ADC_Start(&hadc1);
HAL_ADC_PollForConversion(&hadc1, 100);
uint32_t raw = HAL_ADC_GetValue(&hadc1);
float temp = ((float)raw * 3.3 / 4096 - V25) / AVG_SLOPE + 25;

각 chip에는 factory calibration이 들어 있고, ROM에 25°C와 85°C의 raw 값이 저장됩니다.

#Linux Thermal Framework

Terminal window
# Thermal zone 목록
ls /sys/class/thermal/
# thermal_zone0 thermal_zone1 thermal_zone2 cooling_device0
cat /sys/class/thermal/thermal_zone0/type
# cpu_thermal
cat /sys/class/thermal/thermal_zone0/temp
# 47000 (= 47°C)
cat /sys/class/thermal/thermal_zone0/trip_point_0_temp
# 75000 (= 75°C, hot)
cat /sys/class/thermal/thermal_zone0/trip_point_1_temp
# 90000 (= 90°C, critical — shutdown)

#Trip Point

75°C "hot" → cpufreq throttle (frequency ↓)
85°C "passive" → fan speed ↑
90°C "critical" → kernel panic·shutdown

각 trip point가 해당하는 cooling action을 trigger합니다.

#Cooling Device

Terminal window
ls /sys/class/thermal/cooling_device*/
# thermal-cpufreq-0 thermal-cpufreq-1 thermal-cpufreq-2
cat .../thermal-cpufreq-0/cur_state
# 0 (none)
cat .../thermal-cpufreq-0/max_state
# 8 (8 throttle level)

Step-wise throttling 방식으로, 한 단계당 200 MHz씩 감소시키는 식으로 동작합니다.

#STM32 — Junction T Monitoring

/* CMSIS-style */
float temp = read_internal_temp();
if (temp > 85.0f) {
/* Throttle — clock 분주 ↑ */
RCC->CFGR |= RCC_CFGR_HPRE_DIV2; // AHB /2 → CPU 절반
}
if (temp > 105.0f) {
/* Shutdown — safe mode */
enter_safe_mode();
}

자동차 ECU는 DAPA 표준에 온도 fault 발생 시 safe state로 진입한다는 동작을 명시합니다.

#big.LITTLE — Thermal Distribution

if (temp > THRESH) {
/* Big core off, little만 사용 */
cpu_hotplug_off(BIG_CORE_4, 5, 6, 7);
/* → 발열 ½ */
}

스마트폰은 game이나 burst 구간에서는 big을 쓰고, 평소에는 little만 사용합니다.

#Cooling — Passive·Active

Type동작
Passive방열판 (heatsink) — 항상 동작
Active팬 (fan) — 변속 가능
Liquid액체 냉각 — 서버·고급
ThrottlingSW — frequency ↓
MigrationTask 다른 core로 이동

자동차 ECU는 먼지와 물 위험 때문에 fanless로 설계하고, heatsink와 enclosure만으로 냉각을 처리합니다.

#TDP·SDP·CTDP

TDP (Thermal Design Power) — sustained 최대 발열 (cooling 설계 기준)
SDP (Scenario Design Power) — 일반 workload 평균
cTDP (Configurable TDP) — OEM이 BIOS에서 조정 가능

Intel i7-12700:

  • TDP 65 W (base)
  • Max Turbo Power 180 W (peak, short)
  • SDP ~30 W (idle + light)

#Cortex-A 모바일 — Heat Map

Snapdragon 865:
Big core full load → +35°C
GPU full load → +25°C
Modem → +10°C
→ peak 75°C, 충분히 throttle 영역

게임에서는 5분쯤 지나면 frame rate가 절반으로 떨어지는 경우가 흔하고, 게이밍 폰은 대형 vapor chamber로 이를 보완합니다.

#항공·우주 — Cooling 어려움

지상: 공기 + 방열판 충분
비행기: 캐빈 공기 + airflow 활용
위성·LV: 진공 → *방열 어려움*
→ conduction 방열 (heat pipe → 외부 panel → radiation)
→ 발열 자체 minimize → CPU 50-100 MHz (KSLV-II 누리 등)

낮은 전력과 낮은 frequency를 근본 설계 원칙으로 삼습니다.

#Cold Boot — Extreme Cold

-55°C에서 부팅:
Crystal oscillator drift (수 ppm)
Flash retention 영향 미미
Capacitor (전해질) — *frozen*, ESR 큼
DRAM refresh — 정상 작동

군용과 우주 영역에서는 cold start test가 필수입니다.

#측정 — IR Camera

PCB를 적외선으로 촬영하면 다음과 같은 정보를 얻을 수 있습니다.

  • Hot spot 식별 (BGA나 QFP의 중심)
  • 방열판 효과 확인
  • 단락이나 과전류 detect

FLIR이나 Seek Thermal 같은 장비가 임베디드 개발실의 표준 도구로 쓰입니다.

#자주 하는 실수

⚠️ Benchmark 시 thermal 무시

loop_benchmark_5_sec(); // ← 처음 1초만 peak, 후 throttle

지속 가능한 성능을 보려면 10분 이상 장시간 측정해야 합니다. CPU specs에 표기된 base clock이 보통 지속 가능 기준입니다.

⚠️ Junction T vs Case T 혼동

데이터시트의 T_J는 die 온도를 가리키고, 사용자가 외부에서 측정하는 값은 T_C입니다. 둘 사이에는 10°C 정도의 차이가 날 수 있습니다.

⚠️ Tair 가정 잘못

/* "데이터시트가 -40~85 °C 작동" */
/* → ambient 기준. 내부 발열 시 *junction 100°C* 도달 가능 */

thermal margin은 ambient + (P × Rja)로 계산해야 합니다.

⚠️ Throttling 무시한 RT design

/* RT task가 1 ms 안에 끝나야 함 */
/* throttle 시 — frequency 절반 → 2 ms → deadline miss */

Hard RT는 fixed frequency를 보장하고, 발열도 예산 안에서 관리해야 합니다.

#정리

  • Junction T로 chip 자체를 보호하며, trip point 단계별로 throttle이 동작합니다.
  • 자동차와 우주 영역은 온도 등급 specification이 매우 엄격합니다.
  • Cooling 방식에는 passive, active, throttle, migration이 있습니다.
  • TDPSDP는 각각 평균과 peak 발열을 가리킵니다.
  • IR camera로 PCB의 hot spot을 식별할 수 있습니다.
  • 우주에서는 진공에서 방열이 어렵기 때문에 근본적으로 저전력 설계를 채택합니다.

다음 part는 Toolchain & Profiling을 다룹니다.

#관련 항목

Embedded Performance Engineering · 29 of 57

  1. 1Embedded Performance Engineering — 임베디드 성능 엔지니어링 시리즈 소개
  2. 2임베디드 성능 분석 방법론 — Measure → Analyze → Optimize 사이클
  3. 3성능 지표 정의 — Latency·Throughput·Utilization 분석
  4. 4성능 측정의 기본 — Wall-Clock·CPU Cycle·Instruction Count
  5. 5성능 데이터 통계적 분석 — Percentile·Histogram·평균의 함정
  6. 6실시간 성능 분석 — WCET·Jitter·Deadline Miss 측정
  7. 7임베디드 벤치마킹 기초 — 재현성·Warmup·노이즈 제거
  8. 8성능 모델링 — Amdahl·Gustafson·Roofline Model 적용
  9. 9프로파일링 기법 개요 — Sampling vs Instrumentation·PGO·LTO
  10. 10CPU 파이프라인 분석 — 5-stage·Cortex-M·Cortex-A 비교
  11. 11Pipeline Stall 분석 — Data·Structural·Control Hazard·Forwarding
  12. 12Branch Prediction 분석 — Static·2-bit·BTB·BHT·Mispredict 비용
  13. 13Speculative Execution 분석 — OoO·Reorder Buffer·Register Renaming
  14. 14CPU Cache 기초 — L1·L2·L3·Set Associative·Replacement Policy
  15. 15Cache Miss 3C Model 분석 — Compulsory·Capacity·Conflict
  16. 16Cache Line 최적화 — Alignment·Prefetch·False Sharing 처리
  17. 17메모리 대역폭 분석 — STREAM·Roofline·Bus Saturation 측정
  18. 18SIMD·NEON 활용 — 128-bit Vector·Auto-Vectorization·SVE/SVE2
  19. 19PMU·HPM 하드웨어 카운터 분석 — 정밀 성능 진단
  20. 20임베디드 Bus Architecture — AHB·AXI·CHI 진화와 5-Channel
  21. 21Bus Contention 진단 — Arbitration·QoS·Starvation 측정
  22. 22DMA 성능 최적화 — Burst·Scatter-Gather·Chain·Cache 일관성
  23. 23DMA vs CPU Copy 성능 비교 — Break-even·Setup Overhead 실측
  24. 24Interrupt Latency 분석 — 진입·종료·Tail-Chaining·Late Arrival
  25. 25Interrupt Storm 처리 — NAPI·Rate-Limit·Polling 전환
  26. 26MMIO 접근 성능 — Cache Policy·Write-Combining·Volatile·Barrier
  27. 27Peripheral Clock 분석 — PLL·Divider·Gating·DVFS
  28. 28Power vs Performance 트레이드오프 — DVFS·Race-to-Idle·Big.LITTLE
  29. 29Thermal Throttling 분석 — Junction Temp·Trip Point·냉각
  30. 30CXL Interconnect 분석 — AI 시대 메모리 대역폭 확장
  31. 31Concurrency 기초 — Concurrency vs Parallelism·Race·Memory Model
  32. 32False Sharing 진단 — Cache Line Ping-Pong·Padding·측정
  33. 33Lock Contention 분석 — Wait·Hold·Convoy·측정 기법
  34. 34Spinlock 성능 분석 — Spin-Wait vs Context Switch·Ticket·MCS
  35. 35Mutex 성능 분석 — Futex·Adaptive·Priority Inheritance
  36. 36Reader-Writer Lock 성능 — Reader/Writer Priority·RCU·Seqlock
  37. 37Lock-Free 자료구조 성능 — CAS·ABA·Hazard Pointer·Epoch Reclamation
  38. 38Memory Ordering 분석 — Acquire·Release·Seq-Cst·ARM Relaxed Model
  39. 39Cache Coherency 프로토콜 — MESI·MOESI·Snoop·Directory
  40. 40SMP 성능 분석 — Per-Core·Affinity·Load Balance·Scalability
  41. 41Linux perf 기초 — stat·record·report 활용
  42. 42Linux perf 고급 — Raw Event·Tracepoint·perf script
  43. 43ftrace 활용 — function·function_graph·latency tracer
  44. 44eBPF·bpftrace 동적 트레이싱 — 커널 무수정 관측
  45. 45Flamegraph 분석 — On-CPU·Off-CPU·Differential
  46. 46ARM DS·Lauterbach 분석 — Hardware Trace 전문 도구
  47. 47Bare-metal 프로파일링 — GPIO·DWT·SysTick·ITM 활용
  48. 48NVIDIA Nsight Systems — GPU·NPU 포함 시스템 분석
  49. 49모던 프로파일러 비교 — Tracy·Hotspot·uftrace·Coz
  50. 50연속 프로파일링 — Parca·Pixie·Pyroscope·Tetragon
  51. 51실전 사례 — ISR Latency 100µs Deadline Miss 추적
  52. 52실전 사례 — Matrix Multiply가 예상의 10배 느린 이유
  53. 53실전 사례 — 8-core가 4-core를 넘으면 throughput이 떨어지는 이유
  54. 54실전 사례 — 카메라 1080p 60fps가 30fps로 떨어지는 이유
  55. 55CXL.mem 지연·대역폭 실측 — Direct·Switch·Pooled 토폴로지 비교
  56. 56CXL 성능 프로파일링 도구 — cxl-cli·DAMON·perf-mem 활용
  57. 57실전 사례 — CXL.mem 추가로 LLM inference KV cache 처리량 회복