NOC(Normally-Off Computing): 전력 게이팅과 웨이크업 아키텍처로 대기전력 없애기

유휴 시간 전원을 사실상 차단해 대기전력을 제로 수준으로 낮추는 NOC의 전력 게이팅·상태 보존·부트 경량화 설계와 배터리 IoT 적용 사례를 정리한다.

2026-08-13 · 최초 발행 2025-11-28

에지·IoT 기기가 늘어날수록 배터리로 몇 달, 몇 년을 버텨야 하는 장치도 함께 늘어난다. 이런 장치는 대부분의 시간을 아무 일도 하지 않으며 보내는데, 그 유휴 시간의 전력 소비를 사실상 0으로 만들 수 있다면 배터리 수명은 완전히 다른 이야기가 된다. NOC(Normally-Off Computing)는 유휴시간 동안 시스템 전원을 사실상 차단해 대기전력을 제로 수준으로 낮추고, 이벤트가 발생하면 즉시 가동하는 컴퓨팅 패러다임이다. 기존 저전력 기법과 비교하면 전력 소비의 체감적 절감과 응답성 유지 사이의 균형을 다르게 잡는다.

전력을 유지하는 대신 끊는다

NOC는 유휴 구간 동안 메인 연산 도메인을 오프로 유지하고, 초저전력 감지 회로만 상시 동작시킨다. 이벤트가 감지되면 파워 도메인을 켜고 부트 경량화 경로로 즉시 작업을 수행한 뒤 안전 종료 후 다시 오프로 복귀한다. 작동 메커니즘은 전력 게이팅(power gating), 항상온(always-on) 웨이크업 블록, 상태 보존(retention/NVRAM)의 조합이며 처리 흐름은 이벤트 구동형(event-driven) 설계에 기반한다.

DVFS·클록 게이팅·딥슬립은 "저전력 유지"를 지향하는 반면, NOC는 "전력 차단" 자체를 지향한다는 점이 결정적인 차이다. 그만큼 웨이크 지연(latency) 관리와 상태 일관성 보장이 핵심 과제로 남는다.

구성 요소가 맞물려야 한다

전력 게이팅 및 도메인 분리는 PMIC/SoC 전력 도메인을 연산부·메모리·I/O로 세분화하고 연산부는 오프, 항상온 도메인만 µW 수준으로 유지하는 것으로 시작한다. 파워 온 순차(Sequencing)와 브라운아웃 보호 회로를 하드웨어 상태 머신으로 구성해야 안전성을 확보할 수 있다.

초저전력 이벤트 감지는 RTC/저주파 타이머, GPIO 엣지, 센서 임계 비교기(analog comparator) 기반 웨이크업 소스로 구성한다. 디바운스·무결성 검증·스푸핑 방어(임계 지속시간, 다중 센서 합의)를 함께 적용해야 잡음을 이벤트로 오인하지 않는다.

상태 보존 및 일관성은 Retention SRAM/NVRAM(FRAM, MRAM)을 활용하고, 저널링 또는 더블버퍼 방식으로 원자적 커밋을 보장한다. 전원 차단 전 페일세이프 체크포인트를 수행해야 재부팅 후 신속하게 복원할 수 있다.

부트 경량화 및 핫스타트는 Boot ROM → Secure Boot → 드라이버 최소화 → 앱 진입으로 경로를 단축해 지연 목표(ms~수십 ms)를 세우는 일이다. 지연에 민감한 컴포넌트는 항상온 코프로세서·MCU로 오프로딩한다.

신뢰성·운영성 확보는 최소 온/오프 시간, 히스테리시스, 이벤트 레이트 리미팅으로 전원 채터링을 방지하는 데서 나온다. 원격 업데이트는 듀얼뱅크/롤백을 지원해야 하고, 전력 이벤트를 로깅해두면 현장 진단이 쉬워진다.

이벤트가 드문 곳에서 빛을 본다

배터리 IoT 센서 노드는 환경 센서, 미터링, 도어/진동 감지처럼 저빈도 이벤트 처리형 워크로드에서 평균 전력 1mW 이하를 목표로 한다. 초저전력 감지기와 NVRAM 상태 스냅샷을 갖추고 이벤트가 오면 측정 → 전송 → 컷오프의 순서로 움직인다.

전자 가격표(E-paper)·웨어러블은 표시 장치의 유지 전력을 거의 0으로 두고 갱신할 때만 활성화하며, 블루투스 광고 스니핑은 항상온 MCU가 담당한다. OTA 갱신은 유지 전력 구간에서 예약해두고 트리거를 수신했을 때만 메인 도메인을 켠다.

산업·스마트미터·원격 검침은 계량 주기나 이상 징후가 있을 때만 활성화하고, 보안 모듈(AE/TPM)은 항상온으로 인증 토큰을 유지한다. 정전·서지 환경에 대비해 서지 보호와 커밋 원자성을 함께 갖춰야 한다.

전원이 들어오고 나가는 흐름

이벤트유효무효/노이즈부팅 실패Power Off (메인 도메인)Always-on 감지기디바운스/검증PMIC 전력 인가/시퀀싱Boot ROM Secure Boot드라이버 최소 초기화Retained/NVRAM 상태 복원업무 로직 실행상태 커밋(더블버퍼/저널링)종료 실행 전력 차단이벤트 폐기/로그롤백/세이프모드

이벤트 무결성 검증에 실패하면 폐기하고 카운터를 증가시키며, 임계값에 도달하면 진단 이벤트를 생성한다. 부팅에 실패하면 롤백 파티션으로 부팅하고 NVRAM 저널을 재생하며, 재시도 상한을 초과하면 안전 종료로 넘어간다.

NOC·딥슬립·DVFS, 무엇이 다른가

구분 성능(응답지연) 확장성(빈도↑) 일관성(상태 보존) 안정성(전원 이벤트) 운영 편의
NOC 1–50 ms 부트 경량화 시 예시 이벤트 빈도 높아지면 온/오프 오버헤드 증가 NVRAM/저널 필요, 설계 난이도 높음 시퀀싱·채터링 제어 필수 OTA 듀얼뱅크/측정 체계 필요
딥슬립 <1–5 ms(리텐션) 빈도↑에도 안정적, 유지전력 증가 리텐션 메모리로 간단 안정적, 전원 전환 적음 운영 간편
DVFS/클록게이팅 µs급 반응 가장 유연, 고빈도에 유리 상태 유지 용이 안정적, 단 유지전력 큼 가장 간편

대기전력은 플랫폼별로 상이하지만 예시로 보면 NOC의 always-on 블록이 5–20µW, 딥슬립이 수십–수백µW, DVFS가 수mW 이상 수준이다.

숫자로 보는 절감 효과

활성전력 100mW, 듀티 1%, 딥슬립 대기 5mW, NOC always-on 0.01mW를 가정하면 평균전력은 딥슬립이 100×0.01 + 5×0.99 = 5.95mW, NOC가 100×0.01 + 0.01×0.99 ≈ 1.01mW로 계산된다. 절감률은 약 83%에 달하고, 3.7V·2000mAh 배터리(7.4Wh) 기준 수명은 52일에서 305일 수준으로 늘어난다.

정성적으로는 발열·고장률이 줄고 CO2 배출이 감소하며 현장 유지보수 주기가 늘어난다. 부트 체인을 측정하는 과정에서 에지 보안이 강화되고 비정상 이벤트 패턴을 탐지하기도 쉬워진다.

설계는 이런 순서로 밟는다

워크로드 분석 및 목표 정의는 이벤트 빈도·지연 SLO·데이터 일관성 요구를 정의하고 평균전력 목표와 배터리 수명을 산정하는 단계다. 전력 도메인 아키텍처는 PMIC 선택, 도메인 시퀀싱, 항상온 감지기 설계를 다루며 최소 온/오프 시간과 히스테리시스를 정한다. 상태 보존 전략은 Retention과 NVRAM 사이의 트레이드오프를 결정하고 더블버퍼·저널링과 버전 관리를 갖춘다. 부트 경량화는 드라이버 지연을 제거하고 병렬 초기화, Secure Boot 측정 최적화로 목표 웨이크 지연(예: 20ms 미만)을 달성하는 단계다. 신뢰성·보안은 이벤트 인증(예: MAC 태그 포함 브로드캐스트), 글리치·EMI 방어와 함께 OTA 듀얼뱅크·롤백·전력 중단 대비 원자 커밋을 갖춘다. 계측·검증은 전류 프로파일링(µA 해상도), 웨이크 지연 측정, 채터링 FMEA와 현장 텔레메트리 삽입으로 마무리한다.

실제로 구현하면 이런 모습이다

예시 1) STM32L4 Standby + RTC/EXTI 웨이크. 전제는 HAL 1.10+, CubeMX 기본 설정, LSE 크리스털 사용, RTC/EXTI 라인 설정 완료다.

#include "stm32l4xx_hal.h"

extern RTC_HandleTypeDef hrtc;

static void commit_state_to_bkp(void) {
  // NVRAM/백업 레지스터에 원자 커밋(더블버퍼 인덱스 토글)
}

void enter_standby_with_wakeup(void) {
  __HAL_PWR_CLEAR_FLAG(PWR_FLAG_WU);
  HAL_RTCEx_SetWakeUpTimer_IT(&hrtc, 1024, RTC_WAKEUPCLOCK_RTCCLK_DIV16); // ~1s 예시
  HAL_PWR_EnableWakeUpPin(PWR_WAKEUP_PIN1); // EXTI 라인 웨이크 소스
  commit_state_to_bkp();
  HAL_SuspendTick();
  HAL_PWR_EnterSTANDBYMode(); // 소비전류 µA급
}

void HAL_RTCEx_WakeUpTimerEventCallback(RTC_HandleTypeDef *hrtc) {
  // 부팅 후 복원 경로
}

예시 2) Linux(systemd 255+, kernel 6.x) suspend-then-hibernate + 이벤트 웨이크. 전제는 RTC/키보드/GPIO/LAN 웨이크 지원, 스왑/하이버네이션 설정 완료다.

# /etc/systemd/sleep.conf.d/10-noc.conf
[Sleep]
SuspendState=mem
HibernateDelaySec=30min
AllowSuspendThenHibernate=yes
HibernateMode=shutdown
# 테스트 실행
sudo systemctl suspend-then-hibernate
# 웨이크 소스 확인
cat /proc/acpi/wakeup

일반 Linux는 완전한 NOC(하드 파워 오프) 대신 s2idle/hibernate 조합을 쓴다는 점에 유의해야 한다. 외부 PMIC와 항상온 MCU를 연동하면 NOC에 근사한 구현이 가능하다.

지연과 대기전력은 계속 저울질해야 한다

두 단계 커밋(임시 레코드 → CRC 확정 플래그 → 가동 중단)은 전원 상실 시에도 재생 가능해야 한다는 원칙에서 나온다. 웨이크 이벤트 인증은 비인가 패킷 스푸핑을 막아야 하므로 임계 지속시간과 이벤트 퀘럼을 함께 쓴다. 최소 온타임/오프타임을 강제하고 레이트 리미팅으로 채터링을 억제하는 것도 같은 맥락이다.

부트 지연과 대기전력 절감은 서로 맞바꿔야 하는 관계다. 이벤트가 빈번한 환경에서는 오히려 딥슬립이 유리할 수 있다. 하드웨어 복잡도와 BOM이 오를 수 있고 NVRAM 쓰기 내구성 관리(웨어 레벨링)도 필요하며, OTA·보안 체인을 추가하면 부트 시간이 늘어나므로 경량화와 보안 강도를 동시에 최적화해야 한다.

NOC는 "전력 차단을 기본값으로" 설계해 대기전력을 본질적으로 제거하는 접근이다. 이벤트 구동형 워크로드, 저빈도 처리, 긴 배터리 수명이 요구되는 환경에서 효과가 극대화되며, 성공 여부는 전력 도메인 설계, 상태 보존 원자성, 부트 경량화, 웨이크 이벤트 보안에 달려 있다. PoC 단계에서 전류·지연을 계측해 딥슬립 대비 편익을 검증한 뒤 점진적으로 도입하는 편이 안전하다.

대기전력전력게이팅웨이크업저전력설계임베디드시스템