NASA의 우주선용 WASM 인터프리터, SpaceWASM 공개

by DD
19시간 전
조회수 0

NASA/JPL이 우주선 시퀀싱(Spacecraft Sequencing)을 위해 WASM 1.0 사양을 구현한 SpaceWASM을 개발했음

고정 크기 블록 기반 동적 메모리 할당스트리밍 디코딩으로 리소스 제약 환경에 최적화됨

결정론적 메모리 사용(Deterministic Memory Usage)을 보장하여 우주선 소프트웨어 표준을 충족함

Coremark 벤치마크로 성능 회귀를 테스트하고, fuzzing을 통한 안정성 확보에 집중함

우주선 환경을 위한 WASM 인터프리터 설계

SpaceWASM은 고정 크기 블록 기반의 페이지 할당 모델을 채택하여 우주선 소프트웨어의 결정론적 메모리 사용(Deterministic Memory Usage) 요구사항을 충족합니다. 일반적인 Rust 할당 방식과 달리, 페이지 내 하위 영역의 크기 변경이나 선행 할당 없는 해제가 불가능하도록 설계되어 메모리 사용 예측 가능성을 극대화했습니다. 이는 데이터 격리 아키텍처(Data Isolation Architecture)를 통해 엄격하게 관리됩니다.

스트리밍 WASM 디코딩 및 IR 변환

우주선의 제한된 메모리 환경을 고려하여, SpaceWASM은 WASM 바이너리를 스트리밍 방식으로 디코딩 및 검증합니다. 전체 바이너리를 메모리에 로드하는 대신, 파일 시스템에서 읽어오는 대로 동기식 청크(Synchronous Chunks)를 처리합니다. 이 과정에서 WASM 바이트코드는 중간 표현(Intermediate Representation, IR)으로 변환되어 해석 실행에 더 적합한 형태로 최적화됩니다.

자원 제약 환경을 위한 인터프리터 제한

SpaceWASM은 WebAssembly 1.0 사양을 준수하면서도, 모듈 및 스토어 제한(Module & Store Limits), 함수 파라미터 및 지역 변수 제한 등 엄격한 제약을 적용합니다. 또한 제어 흐름 중첩 깊이(Control Flow Nesting Depth)값 스택 깊이(Value Stack Depth)를 설정 가능하게 하여, 리소스 사용량을 예측 가능하게 관리합니다. 이는 최대 256개의 모듈과 같은 구체적인 수치로 명시됩니다.

안정성 확보를 위한 테스트 및 퍼징

개발팀은 Coremark 벤치마크를 통해 성능 회귀를 추적하고, `cargo test` 명령어로 단위 및 통합 테스트를 수행합니다. 특히 `unsafe Rust` 사용으로 인한 컨테이너 추상화의 회귀 테스트에 집중합니다. 또한 libFuzzer와 wasm-smith를 활용한 포괄적인 퍼징(Fuzzing) 인프라를 구축하여 잠재적 오류를 사전에 발견하고 안정성을 강화합니다.

SpaceWASM: NASA/JPL's Wasm interpreter for spacecraft sequencing