100년 전 물리학자의 이름이 자율주행차 시대에 거론되는 이유는?
[기고] 1901년 12월 5일에 태어난 베르너 하이젠베르크(Werner Heisenberg)는 불확실성 원리의 아버지로 유명하다. 또한 시스템을 관찰하는 행동 만으로도 상태를 변화시킨다는 양자역학의 '관찰자 효과(observer effect)'를 처음 거론한 사람이다.
기능적 안전성(Functional Safety)이란 시스템 혹은 기계의 전반적인 안전성의 일부로, 일반적으로 전자 및 관련 소프트웨어에 집중되어 있다. 기기나 시스템의 기능과 관련된 측면의 안전성을 담당하며 명령대로 정확하게 움직이도록 하는 것이다. 시스템적인 접근 방식에서 기능적 안전성은 사고로 귀결되거나 인적 상해나 물적 파괴를 일으킬 수 있는 잠재적으로 위험한 조건, 상황 또는 사건을 파악하는 것이다. 차량용 전기/전자 시스템용으로 IEC 61508를 세분화한 ISO 26262는 차량 내 시스템 또는 하부시스템의 오작동을 일으킬 수 있는 고장을 두 가지 유형으로 구분하고 있다.
- 시스템 고장(Systematic failures)
- 무작위 고장(Random failures)
시스템 고장은 개발 과정에서 인간의 오류로 인해 설계에서 나타난 실수 또는 관리 미흡을 의미한다. 무작위 고장의 경우, 자동차 제조사가 설치한 최첨한 하드웨어와 소프트웨어가 장착된 자율주행 차량을 떠올려보자. 자율주행이라는 공학 분야의 경이로운 성과로 인해 자동차 산업에서 강력한 CPU, GPU 및 멀티프로세서 연산 엔진에 대한 수요가 늘어나고 있다. 반도체 제조사는 이처럼 강력한 차세대 연산 엔진을 구축하느라 분주하며, 이를 위해 기술을 특정 수준으로까지 끌어 올리고 있는데, 그 수준이 인류 역사상 처음으로 하드웨어의 안정성이 떨어지는 지점인 것이다. 이러한 문제점이 발생하는 원인은 두 가지로, 물리학과 복잡성이며, 이 두가지가 무작위 고장을 일으킬 수 있다.
하드웨어 물리학의 측면에서 보면, CPU는 갈수록 빠른 클락 속도에서 가동하면서 더 많은 열을 발생하며 갈수록 작아져 이제는 원자 단위로 측정이 가능한 트랜지스터를 사용한다. 열은 마모(wear-out)를 가속화하며, 부품의 작동 온도가 높아질 수록 고장도 더욱 빠르게 나타난다. 트랜지스터가 작아질 수록 전자파 간섭, 알파 입자 및 중성자의 영향, 그리고 인접 셀 간의 혼선(cross-talk)에 의한 결함에 더욱 취약해진다.
복잡성 측면에서 보면, 제조업체들은 CPU마다 상호 관계적인 기능을 더 많이 추가해왔다. 불행히도 CPU는 여러 가지 버그를 안고 출고되는데, 이 중 대다수가 해당 칩이 생산에 돌입한 이후에나 발견된다. 알려진 버그는 제조사의 오류 정보에 서술된다. 이러한 버그는 연산에 영향을 미치고 잘못된 결과를 도출할 수 있으며, 여기에서 안전성 취약 부분이 발생하게 된다. 이러한 오류의 발생 가능성은 ISO 26262 ASIL 등급에 직접적인 영향을 준다. ASIL은 '자동차 안전 무결성 수준(Automotive Safety Integrity Levels)'의 약자로, 발생 가능성을 감안해 부상의 정도를 측정한다. ASIL은 A, B, C, D의 네 가지 등급으로 구분되며, ASIL D가 가장 높은 등급이다.
복잡성을 더욱 부채질하는 요인이 있으니, 소프트웨어는 차량의 주변 상황을 모델링하고 안전한 결정을 내려 차량을 제어하기 위해 카메라, 라이다(LiDAR) 및 레이더 등 센서에서 전달된 대량의 데이터를 실시간으로 처리해야 한다. 이를 위해선 비전 프로세싱 및 딥 뉴럴 네트워크 기반 머신 러닝 알고리즘을 위한 특수 목적 하드웨어(액셀러레이터)를 사용할 수 있는 고효율의, 안전성이 검증된 보안 소프트웨어가 필요하다.
베르너 하이젠베르크의 이름에서 따온 '하이젠버그(Heisenbug)'는 조사 또는 분리를 시도하면 사라지거나 혹은 행동을 바꿔버리는 버그를 의미한다. 소프트웨어 버그 용어에 익숙한 이들이라면, 하이젠버그는 정확하게 알 수는 없지만 명확하게 알려진 조건 하에서는 안정적으로 실행되는 반복적인 버그를 의미하는 보어 버그(Bohr bug)의 반의어이다. 하이젠버그의 예측불가능한 특성 탓에 오류의 재생성이나 디버거(debugger)의 사용을 시도하면 해당 오류가 바뀌거나 사라지기도 한다.
자율주행 시스템에서 이와 같은 하드웨어 및 소프트웨어 오류가 발생하면 해당 시스템의 안전성에 영향을 줄 수 있다. ISO 26262 안전 인증을 받으려면, 이러한 오류를 감지해 효율적으로 처리해야 한다. 이러한 오류 및 기능적 안전성 문제를 해결할 수 있도록, BlackBerry QNX는 자율주행 시스템에서 발생되는 하드웨어 및 소프트웨어 오류를 감지하고 이를 복구할 수 있도록 QNX Loosely Coupled Lock Step (LCLS)를 개발했으며, 시스템 디자이너들은 이러한 오류에 대처할 수 있는 메커니즘을 구현해야 한다.
이전 세대 시스템에선, 동일한 코드를 처리하는 CPU를 이중으로 두어 CPU 동작 결함을 감지하는 하드웨어 락스텝(hardware lock step)이 사용됐다. CPU 중 하나가 오작동하면, 문제가 발생했음을 감지할 수 있는 것이다. 그러나, 두 개의 CPU가 동일한 코드를 '올바르게' 처리할 경우, 하드웨어 락스텝은 메모리의 무작위 비트 플립이나 하이젠버그에 대처하지 않는다. 하드웨어 분석기를 이용해 내부 상태를 점검하고 문제 발생 여부를 확인할 수 있다. 하지만, 이러한 기법은 하나의 하드웨어 검사기로 실시간 분석을 하기엔 수 많은 내부 상태가 존재하는 오늘날의 고성능 하드웨어엔 적합하지 않다.
분명, 자체적인 하드웨어 진단만으로는 모든 오류를 감지할 수 없다. 실시간 소프트웨어 검사 기능이 함께 이루어질 경우, 시스템 작동을 검증하는 효율적이고 완전한 수단을 갖출 수 있다. 이러한 시스템에서는 각각의 안전 필수 연산(safety-critical calculation)을 수행하는 복잡다단한 소프트웨어가 사용되며, 이러한 소프트웨어들의 결과물은 검증을 위해 비교 과정을 거친다. 이것이 바로 QNX Loosely Coupled Lock Step의 기본 컨셉이다.
글 / 카이반 카리미(Kaivan Karimi) 블랙베리 테크놀로지 솔루션 영업 마케팅 수석 부사장
카이반 카리미는 블랙베리 테크놀로지 솔루션(BlackBerry Technology Solutions)의 영업 마케팅 부문의 수석 부사장으로, 영업, 마케팅, 파트너 관리 및 성장 전략 운영 등을 총괄하고 있다. 카이반 수석 부사장은 엔지니어링 석사학위와 경영학 석사학위를 취득했으며, 블랙베리에서 일하기 전에는 아트멜(Atmel) 무선 MCU 및 IOT 부문의 부사장 겸 총책임자로 근무했다.
- 본 콘텐츠의 내용은 IT동아의 편집 방향과 다를 수 있습니다