제8부 자율주행
8.9 기능안전 II — 안전 메커니즘·아키텍처 패턴
8.9.1 이 장에서 배우는 것 / 선수 지식
8.8에서 위험을 분석(HARA)하고 ASIL을 정하고 안전 목표·요구를 캐스케이드했다. 이제 질문은 "그 요구를 어떻게 충족하나" 다 — 안전 메커니즘(결함을 탐지·처리)과 아키텍처 패턴(중복화·fail-operational). 이 장은 기능안전 4부작의 II로, 결함→오류→고장 사슬을 끊는 메커니즘과 고장에도 안전을 유지하는 아키텍처를 본다.
핵심 통찰: 안전 메커니즘은 "결함이 위험한 고장이 되기 전에 탐지·처리" 한다 — 결함(원인)이 오류(잘못된 상태)가 되고 그것이 고장(기능 미제공)이 되는 사슬을, 메커니즘(락스텝·ECC·워치독·플로지빌리티)으로 중간에 끊는다. 그리고 자율 레벨이 높으면(8.1) "안전하게 멈추기(fail-safe)"로는 부족 — 운전자가 즉시 인수 못 하므로 고장에도 안전하게 계속(fail-operational) 해야 하고, 그것은 중복화·다양성으로만 가능하다.
배우는 것:
- 결함→오류→고장 사슬 — 안전의 기본 모델, 메커니즘이 끊는 지점.
- 안전 메커니즘 — 락스텝·ECC·워치독·플로지빌리티·CRC·진단, 진단 커버리지.
- 안전 상태 — fail-safe(안전 정지) vs fail-operational(고장에도 계속), 레벨과의 관계(8.1).
- 중복화·다양성 — fail-operational의 수단, 공통원인 고장 회피.
- ASIL 분해 아키텍처 — 고ASIL을 독립적 저ASIL 채널로(8.8), 독립성=FFI(8.6).
- 아키텍처 패턴 — doer/checker(모니터·액추에이터)·이중 채널.
선수 지식: 8.8(안전 목표·ASIL·요구·분해)·8.2(락스텝·안전 섬·ECC)·8.6(FFI·결정성·워치독)·8.1(fail-operational·레벨). SOTIF는 8.10, AI 안전은 8.11. 환경은 자동차 안전 공학.
정직: safety-critical — 이 장은 메커니즘·패턴의 개념·원리를 가르치되, 실제 안전 메커니즘 설계·진단 커버리지·하드웨어 메트릭(SPFM/LFM/PMHF)·인증은 자격 있는 기능안전 엔지니어·표준(ISO 26262)·검증의 영역이다. 제품의 안전 기능·인증 범위는 구성·시점 의존(확인 필요).
8.9.2 결함→오류→고장 — 안전의 기본 모델
기능안전의 토대 모델: 결함(fault) → 오류(error) → 고장(failure) 의 사슬.
안전 메커니즘의 역할:
핵심: 안전은 "결함을 없애기"(불가능)가 아니라 "결함이 위험한 고장이 되지 못하게" 다 — 결함은 일어난다(방사선·노이즈·마모). 안전 메커니즘이 탐지·처리해 사슬을 끊는다. 얼마나 끊나가 진단 커버리지이고, ASIL이 그 엄격도를 정한다(8.8).
8.9.3 안전 메커니즘 — 결함 탐지·처리
요구를 충족하는 구체 메커니즘들(8.2·8.6의 하드웨어·OS 기능):
| 메커니즘 | 탐지하는 것 | 어떻게 |
|---|---|---|
| 락스텝(lockstep) | 컴퓨트 결함 | 두 코어가 동일 실행·출력 비교, 불일치=결함(8.2) |
| ECC | 메모리 비트 오류 | 정정 가능 오류는 정정, 불가는 탐지·보고 |
| 워치독(watchdog) | 타이밍 고장·행(hang) | 주기적 갱신 없으면 행 탐지(데드라인, 8.6) |
| 플로지빌리티/범위 체크 | 비합리적 출력 | 출력이 물리·논리적으로 타당한가(예: 조향각이 물리 한계 안) |
| CRC/체크섬 | 데이터 무결성 | 통신·저장 데이터 오류 탐지(8.7) |
| BIST·진단 | 하드웨어 결함 | 자가 테스트·주기 진단(안전 섬, 8.2) |
| 교차 검증 | 센서·채널 불일치 | 다센서·다채널 결과 비교 |
플로지빌리티 체크가 특히 중요하다 — "이 출력이 말이 되나"를 독립적으로 확인:
핵심: 안전 메커니즘은 "결함의 종류마다 맞는 탐지" 를 쌓는다 — 컴퓨트는 락스텝, 메모리는 ECC, 타이밍은 워치독, 출력 타당성은 플로지빌리티, 통신은 CRC. 이들의 진단 커버리지 합이 ASIL 요구를 충족. 8.2(락스텝·ECC·안전 섬)·8.6(워치독·결정성)이 하드웨어·OS 차원에서 제공.
8.9.4 안전 상태 — fail-safe vs fail-operational
결함을 탐지하면 안전 상태(safe state) 로 가야 한다. 그런데 "안전 상태"가 무엇인지는 상황에 따라 다르다:
| 구분 | fail-safe(안전 정지) | fail-operational(고장에도 계속) |
|---|---|---|
| 동작 | 고장 시 '안전한 비동작 상태'로 | 고장 시에도 '안전하게 기능을 계속' |
| 예 | 제어를 멈추고 운전자에게 넘김, 안전하게 정차 | 주 컴퓨트 고장 시 백업이 안전하게 운전을 계속/안전 정지까지 |
| 적용 | '멈추는 것이 안전'할 때 — 운전자가 인수 가능(L0~L2, 8.1) | '멈출 수 없을' 때 — 운전자가 즉시 인수 못 함(L3+, 8.1) |
왜 레벨에 따라 다른가(8.1 연결):
- fail-safe: 고장 시 "안전하게 멈추기"가 답일 때. L0~L2는 운전자가 항상 인수 가능해, 시스템이 안전하게 손을 떼면 운전자가 받는다. 단순.
- fail-operational: 고장 시 "멈출 수 없을" 때. L3+는 운전자가 즉시·항상 인수 못 한다 — 고속에서 조향·제동을 갑자기 끄면 위험. 그래서 고장에도 안전하게 계속(백업으로 운전 지속 또는 안전한 정지까지 제어)해야 한다.
핵심: fail-safe는 "안전하게 멈출 수 있을 때", fail-operational은 "멈출 수 없을 때" 다. 자율 레벨이 오르면(운전자 인수 불가) fail-operational이 필수가 되고, 그것은 중복화·다양성으로만 달성된다 — 단일 채널이 죽으면 끝이므로. 안전 상태의 정의가 레벨·상황으로 갈린다.
8.9.5 중복화·다양성 — fail-operational의 수단
fail-operational은 중복화(redundancy) 로 달성한다 — 한 채널이 고장 나도 다른 채널이 계속.
핵심 개념:
- 중복화: 안전 기능을 둘 이상으로 — 컴퓨트(다중 SoC, 8.3)·센서·전원·통신 경로. 한 경로 실패 시 다른 경로.
- 공통원인 고장(common-cause failure): 같은 원인이 중복 채널을 동시에 무력화 — 같은 SW 버그·같은 칩 결함·같은 전원 차단. 단순 복제(같은 설계)는 이를 못 막는다.
- 다양성(diversity): 중복 채널을 다른 설계(다른 하드웨어·소프트웨어·알고리즘)로 → 공통원인 회피. 실질적 fail-operational의 핵심.
- 독립성(independence): 중복 채널이 간섭 없이 독립이어야(FFI, 8.6) — 한 채널 결함이 다른 채널에 전파 못 하게. ASIL 분해(8.8)의 전제.
핵심: fail-operational = 중복화 + 다양성 + 독립성. 단순히 두 개 두는 것이 아니라, 다른 설계로(공통원인 회피) 독립적으로(FFI, 한 결함이 둘을 못 죽임) 두어야 실질적 고장 내성. L3+ 자율(8.1)의 안전 아키텍처가 여기서 나온다 — 다중 SoC·다양한 경로.
8.9.6 ASIL 분해·아키텍처 패턴
8.8의 ASIL 분해가 중복화의 안전 근거다:
아키텍처 패턴(요구를 구조로):
- doer/checker: 주 기능(doer) + 독립 감시(checker). 체커는 "타당한가"만 보면 되어 더 단순할 수 있음(비대칭 — 두 경로가 다름).
- 이중 채널: 두(보통 동일) 채널 비교(결함 탐지) 또는 한쪽 실패 시 다른쪽 계속(fail-operational). 락스텝이 컴퓨트 레벨의 대칭 이중 채널(doer/checker와 달리 두 코어가 동일).
- 계층적: 칩 안(락스텝·안전 섬, 8.2) → 시스템(다중 SoC·다양성) → 차량(중복 경로).
핵심: 안전 아키텍처는 "독립적 중복 + 감시(checker) + 다양성" 의 패턴으로 ASIL을 충족한다. ASIL 분해가 그 수학적 근거(독립성 전제), FFI(8.6)가 독립성을 보장, 락스텝·안전 섬(8.2)이 메커니즘을 제공, 다중 SoC가 시스템 중복화를. 8.2·8.6·8.8가 여기서 하나로 묶인다.
8.9.7 중간 점검 (체크포인트)
- [ ] 결함→오류→고장 사슬과, 안전 메커니즘이 이를 고장 전에 끊음을 안다.
- [ ] 안전 메커니즘(락스텝·ECC·워치독·플로지빌리티·CRC)이 각각 무슨 결함을 탐지하는지 제시한다.
- [ ] fail-safe vs fail-operational 의 차이와, 자율 레벨(8.1)이 어느 것을 요구하는지 안다.
- [ ] fail-operational = 중복화 + 다양성 + 독립성 이고, 공통원인 고장을 다양성이 막음을 안다.
- [ ] ASIL 분해(독립성 하에 고ASIL을 저ASIL 중복으로)와 doer/checker·이중 채널 패턴을 안다.
증상→의심: 컴퓨트 결함이 검출되지 않음 → 락스텝 없음(8.2). 메모리 오류 → ECC. 타이밍 행 → 워치독·결정성(8.6). 비합리적 명령이 나감 → 플로지빌리티 체크 없음 → doer/checker. L4인데 단일 컴퓨트 → fail-operational 부재 → 중복화. 중복인데 함께 고장 남 → 공통원인(같은 설계) → 다양성. 중복 채널이 서로 영향 → 독립성 부족 → FFI(8.6). ASIL 분해했는데 무효 → 독립성 없음.
8.9.8 트레이드오프·대안
| 결정 | 트레이드오프 |
|---|---|
| fail-safe vs fail-operational | 단순·정지 가능 vs 비용·중복화(레벨 의존) |
| 단순 중복 vs 다양성 중복 | 비용이 낮고 공통원인 취약 vs 비용이 크고 공통원인 회피 |
| 이중 채널 vs doer/checker | 대칭·비용 vs 비대칭·체커 단순화 |
| 진단 커버리지 높음 vs 낮음 | 안전·비용·복잡 vs 위험(ASIL에 비례) |
| 단일 고ASIL vs ASIL 분해 | 단일 고무결성 부품 vs 독립 중복(독립성 필요) |
견해: 자율 레벨이 fail-safe/operational을 정한다 — L0~L2는 fail-safe(운전자 인수), L3+는 fail-operational(중복화·다양성) 필수(8.1). 중복화는 다양성·독립성이 있어야 실질적 효과(공통원인 회피, FFI). 메커니즘·진단 커버리지는 ASIL에 비례. doer/checker로 체커를 단순화해 비용을 낮추기도. 모든 안전 설계는 자격 있는 엔지니어·표준·검증(8.8).
비엔비디아 정직: 안전 메커니즘·중복화·다양성·doer/checker는 항공·산업 등 안전공학의 표준 패턴이고 ISO 26262가 자동차에 적용한 것 — NVIDIA만의 것이 아니다. DRIVE의 기여는 칩·OS가 안전 메커니즘(락스텝·안전 섬·ECC·FFI)을 갖추고 다중 SoC로 fail-operational을 지원하는 것. 실제 안전 아키텍처·검증·인증은 OEM·자격 있는 엔지니어·표준의 영역.
8.9.9 흔한 함정
- 결함을 없애려 함. 결함은 일어난다 — 목표는 탐지·처리로 위험한 고장이 안 되게. 진단 커버리지.
- 단일 채널로 L3+. 운전자가 인수 못 하는 레벨엔 fail-operational(중복화) 필수 — fail-safe(정지)로 부족.
- 단순 복제 = fail-operational 오해. 같은 설계 두 채널은 공통원인(같은 버그·결함)에 함께 고장 남 → 다양성 필요.
- 독립성 없는 중복. 한 채널 결함이 다른 채널에 전파(간섭)되면 중복 무효 → FFI(8.6).
- ASIL 분해를 독립성 없이. 독립성이 분해의 전제 — 없으면 분해가 무효(공통원인).
- 플로지빌리티 체크 누락. 주 컴퓨트가 틀린 명령을 내도 독립 체커가 없으면 그대로 나감 → doer/checker.
- 메커니즘을 ASIL 무관하게. 진단 커버리지·엄격도는 ASIL에 비례(8.8) — 과소·과대 둘 다 문제.
- 안전을 사후 메커니즘으로. 메커니즘은 요구(8.8)에서 도출·검증 — 아키텍처 처음부터.
8.9.10 연습문제
연습 1 (결함 사슬). 결함→오류→고장 모델을 설명하고, 비트 플립이 위험한 고장이 되는 과정과 안전 메커니즘이 어디서 끊는지 예로 들어라.
정답
모델: 결함(fault) = 비정상의 근본 원인 → 오류(error) = 그로 인한 잘못된 상태 → 고장(failure) = 시스템이 기능을 못/잘못 제공. 예(비트 플립): ① 결함 — 방사선·노이즈로 메모리/레지스터의 비트가 뒤집힘. ② 오류 — 그 값을 쓴 계산이 틀림(예: 제동 명령 값이 잘못됨, 상태가 오염). ③ 고장 — 잘못된 제동/조향 명령이 차량에 전달 → 위험한 사건(8.8 HARA). 안전 메커니즘이 끊는 지점: 결함→오류 사이 — ECC가 메모리 비트 오류를 정정(정정 가능)하거나 탐지(불가) → 오류로 진행 못 하게. 오류→고장 사이 — 락스텝(8.2)이 두 코어 출력 비교로 계산 오류를 탐지, 플로지빌리티 체크가 비합리적 명령을 검출해 안전 상태로 → 고장(잘못된 명령 전달)을 막음. 워치독이 행(타이밍 고장)을 탐지. 핵심: 결함은 일어나지만(없앨 수 없음), 안전 메커니즘이 고장이 되기 전에 탐지·처리해 사슬을 끊는다. 얼마나 끊나가 진단 커버리지이고 ASIL이 엄격도를 정함(8.8). 안전 = 결함 제거가 아니라 위험한 고장 방지.
연습 2 (메커니즘 매핑). 다음 결함을 탐지할 안전 메커니즘을: (a) 컴퓨트 코어의 계산 오류, (b) 메모리 비트 오류, (c) 소프트웨어 행(무한루프), (d) 인지가 물리적으로 불가능한 조향각 출력, (e) 통신 데이터 손상.
정답
(a) 락스텝(lockstep) — 두 코어가 동일 명령을 실행해 출력을 매 사이클 비교, 불일치=계산 결함 탐지(8.2). (b) ECC — 메모리 비트 오류를 정정(정정 가능)하거나 탐지·보고(불가). (c) 워치독(watchdog) — 태스크가 주기적으로 워치독을 갱신해야 하는데 행이면 갱신이 멈춤 → 타임아웃으로 행/타이밍 고장 탐지(데드라인, 8.6). (d) 플로지빌리티/범위 체크 — 조향각이 차량 물리(속도·곡률 한계) 안인지 독립적으로 검증, 불가능한 값이면 비합리적 출력으로 검출해 안전 상태로. (e) CRC/체크섬 — 통신·저장 데이터에 검증값을 붙여 손상 탐지(8.7). 추가: 교차 검증(다센서·다채널 비교), BIST·진단(안전 섬, 8.2). 각 메커니즘이 다른 종류의 결함을 탐지하므로 여러 개를 쌓아 진단 커버리지를 높임 — ASIL이 요구 커버리지를 정함(8.8). 8.2(락스텝·ECC·안전 섬)·8.6(워치독·결정성)이 하드웨어·OS로 제공. 결함 종류마다 맞는 메커니즘.
연습 3 (fail-operational). L2 ADAS와 L4 로보택시에서 주 컴퓨트가 고장날 때 각각 안전 상태가 어떻게 다르고, L4가 왜 중복화를 요구하는지 설명하라.
정답
L2 ADAS — fail-safe: 운전자가 항상 책임·인수 가능(8.1)하므로, 주 컴퓨트 고장 시 시스템이 안전하게 기능을 멈추고 운전자에게 넘기면 됨(예: ADAS 비활성화 경고, 운전자가 운전). 안전 상태 = "안전한 비동작(정지)". 단일 컴퓨트로 가능(중복화 불필요). L4 로보택시 — fail-operational: 운전자가 없거나 즉시 인수 못 함 → 주 컴퓨트가 고장났다고 조향·제동을 갑자기 끄면 통제 불능(고속이면 치명적). 그래서 고장에도 안전하게 기능을 계속해야 — 백업 컴퓨트가 운전을 이어받아 안전하게 갓길 정차까지 제어(또는 안전 운행 지속). 안전 상태 = "안전하게 계속/제어된 정지". L4가 중복화 요구 이유: fail-operational은 한 채널이 고장 나도 다른 채널이 계속해야 하므로 단일 채널로 불가 — 이중(이상) 컴퓨트·센서·전원·다양성·독립성(8.9.5)이 필수. 단순히 멈출 수 없으니(운전자 부재) 중복으로 가용성을 유지. 정리: 멈춤이 안전(L2)=fail-safe·단일 가능, 멈출 수 없음(L4)=fail-operational·중복화 필수. 레벨이 안전 상태와 중복화 요구를 정함(8.1).
연습 4 (다양성). "L4 안전을 위해 같은 컴퓨트를 두 개 두면 fail-operational"이라는 설계를 비판하고, 실질적 fail-operational에 필요한 것을 설명하라.
정답
비판: 같은 설계(같은 하드웨어·소프트웨어)의 두 컴퓨트는 공통원인 고장(common-cause failure) 에 함께 고장 난다 — 같은 SW 버그가 두 채널 모두에 있어 같은 입력에 같이 오작동, 같은 칩 결함·같은 전원 차단·같은 환경(과열·EMI)이 둘을 동시에 무력화. 한 채널이 버그로 고장 나는 상황은 다른 채널도 같은 버그라 죽으므로, 단순 복제는 고장 내성을 못 준다(둘 다 같은 약점). 실질적 fail-operational에 필요한 것: ① 다양성(diversity) — 중복 채널을 다른 설계(다른 하드웨어·소프트웨어·알고리즘·공급자)로 → 같은 결함이 둘에 동시에 없게(공통원인 회피). 예: 주 인지는 카메라 기반, 백업은 레이더/라이다 기반·다른 SW. ② 독립성(independence) — 채널 간 간섭 없음(FFI, 8.6) — 한 채널 결함이 다른 채널에 전파 못 하게(전원·통신·메모리 분리). ASIL 분해(8.8)의 전제. ③ 독립 전원·경로 — 공통 전원·통신이 단일 실패점이면 안 됨. ④ 감시·전환(switchover) — 주 고장을 탐지해 백업으로 안전하게 전환. 정리: fail-operational = 중복화 + 다양성 + 독립성 — 단순 복제(같은 설계)는 공통원인에 취약해 부족. 다른 설계로 독립적으로 두어야 한 채널이 고장 나도 다른 채널이 실제로 계속. 안전 아키텍처는 자격 있는 엔지니어가 공통원인 분석·검증(8.8).
연습 5 (아키텍처 설계). ASIL D "조향 오작동 방지" 안전 목표를 doer/checker·ASIL 분해·중복화로 충족하는 아키텍처를 설계하라.
정답
설계: ① doer/checker(모니터·액추에이터) — 주 채널(doer)이 조향 명령을 계산하고, 독립 체커(checker) 가 그 명령의 타당성을 감시(플로지빌리티: 조향각이 차량 물리·속도·곡률 한계 안인가, 다른 센서·직전 프레임과 일관한가). 체커가 비합리적 명령을 잡으면 안전 상태로 전환. 체커는 "타당한가"만 보면 되어 doer보다 단순(비대칭). ② ASIL 분해 — ASIL D 요구를 독립적인 저ASIL 채널로(예: ASIL B(D) + ASIL B(D), 8.8) — 독립성(FFI, 8.6) 이 전제. doer가 ASIL B(D), checker가 ASIL B(D)로 각각 만족하면 합쳐 ASIL D 효과(충분한 독립성 하에). ③ 컴퓨트 레벨 메커니즘 — doer 컴퓨트를 락스텝(8.2)으로 계산 결함 탐지, ECC로 메모리, 워치독으로 타이밍(8.6). ④ fail-operational 중복화(L3+면) — 주 컴퓨트(다중 SoC, 8.3)와 다양성 있는 백업(다른 설계·다른 전원·통신 경로, 공통원인 회피) — 주 고장 시 백업이 안전하게 조향을 계속/안전 정지까지. ⑤ 독립성·전환 — 채널 간 FFI(전원·통신·메모리 분리), 주 고장 탐지·안전 전환. ⑥ 검증 — 각 메커니즘의 진단 커버리지·공통원인 분석·하드웨어 메트릭(SPFM/LFM/PMHF)·통합 검증으로 ASIL D 안전 케이스(8.8). 정리: doer/checker로 오류 탐지 + ASIL 분해(독립 채널)로 엄격도 + 다양성 중복화로 fail-operational + 락스텝·ECC·워치독으로 결함 탐지 + FFI로 독립성. 8.2(락스텝·안전섬)·8.6(FFI·워치독)·8.8(ASIL·분해)·8.3(다중 SoC)이 하나로 묶임. 실제 설계·검증·인증은 자격 있는 기능안전 엔지니어·표준의 영역 — 이것은 개념 아키텍처.
8.9.11 요약 · 다음 장
- 안전은 결함→오류→고장 사슬을 안전 메커니즘으로 고장 전에 끊는다 — 결함은 일어나지만(없앨 수 없음) 탐지·처리로 위험한 고장을 막는다. 진단 커버리지가 얼마나 끊나, ASIL이 엄격도.
- 안전 메커니즘: 락스텝(계산)·ECC(메모리)·워치독(타이밍)·플로지빌리티(타당성)·CRC(통신) — 결함 종류마다 맞는 탐지(8.2·8.6 제공).
- 안전 상태: fail-safe(안전 정지, 운전자 인수 가능 L0~L2) vs fail-operational(고장에도 계속, 운전자 인수 불가 L3+, 8.1) — 레벨이 정함.
- fail-operational = 중복화 + 다양성 + 독립성 — 단순 복제는 공통원인 고장에 취약, 다양성(다른 설계)으로 회피, 독립성(FFI, 8.6) 으로 전파 차단. ASIL 분해(8.8)가 수학적 근거.
- 아키텍처 패턴: doer/checker(주+독립 감시)·이중 채널·락스텝. 8.2·8.6·8.8가 메커니즘·독립성·근거로 묶임. 정직: 실제 설계·진단 커버리지·메트릭·인증은 자격 있는 엔지니어·표준(8.8)의 영역.
- 이 장의 안전 메커니즘은 무작위(우연) 고장을 전제로 한다 — 의도적 공격(메시지 위조·침투)으로 안전 메커니즘 자체가 무력화되는 위험은 별개 기둥인 사이버보안(8.12) 의 영역이다.
다음 장: 8.10 기능안전 III — SOTIF(ISO 21448). 기능안전(오작동)을 봤으니, 그 빈틈 — 고장이 없어도 의도된 기능의 한계로 인한 위험 — 을 다루는 SOTIF를 본다. 인지가 정상 동작해도 엣지케이스·악천후·미지의 상황을 못 다루는 위험, 그 분석·검증·시나리오 기반 접근을 본다.