발표는 먼저 다나카 연구원이 현재 연구 중인 저전력 광역 통신(LPWA) 기술에 대해 간략히 소개하며 시작됩니다. LPWA는 5G/6G와 대척점에 있는 기술로, 초저속 통신(약 1kbps)과 낮은 전력 소비, 넓은 커버리지(15~20km)를 특징으로 합니다. 이는 일본의 지역 정부에서 재난 예방을 위한 센서 모니터링 시스템과 같이 비용과 전력이 제한적인 IoT 장치에 매우 적합함을 강조합니다. 이어서 발표의 핵심 주제인 mruby/c에 대한 설명으로 넘어갑니다.
mruby/c는 기존 Ruby가 웹 애플리케이션 서버나 고성능 컴퓨팅 환경과 같이 풍부한 자원을 필요로 하는 것과 달리, 메모리와 처리 능력이 극히 제한적인 소형 IoT 장치를 위해 설계된 경량 Ruby 구현체입니다. 일반 Ruby가 1MB 이상의 메모리를 요구하는 반면, mruby는 약 120KB, mruby/c는 약 20KB의 매우 적은 메모리만을 필요로 합니다. 이는 특히 배터리로 구동되는 IoT 장치에서 메모리 소비가 곧 전력 소비와 직결되기 때문에 매우 중요한 이점입니다. mruby/c는 메모리 관리, 전력 관리(CPU 딥 슬립 모드 활용), 그리고 부분적인 실시간 처리 기능을 내장하고 있습니다.
mruby/c의 실행 환경은 개발 PC에서 Ruby 코드를 mruby 바이트코드로 컴파일한 후, 이 바이트코드를 마이크로컨트롤러로 전송하여 mruby/c 가상 머신(VM) 위에서 실행하는 방식입니다. 여기서 하드웨어 추상화 계층(HAL)을 제공하여 다양한 마이크로컨트롤러 아키텍처에 쉽게 포팅할 수 있도록 지원하며, 이는 GitHub를 통해 공개되어 있습니다.
다음으로 ‘데이터 흐름 프로그래밍’에 대한 설명이 이어집니다. 이는 교육 분야(중고등학교 정보 교육)에서 스크래치(Scratch)나 블록리(Blockly)와 같은 시각적 프로그래밍 환경으로 활용되며, 특히 IoT 프로그래밍에 매우 적합하다고 설명됩니다. IoT는 센싱(sensing), 처리(processing), 출력/저장(output/storing) 등 데이터가 순차적으로 흐르는 특성을 가지므로, 노드(기능 블록)와 와이어(데이터 흐름 연결)로 구성된 데이터 흐름 프로그래밍은 이러한 로직을 직관적으로 표현하는 데 유용합니다.
마이크로컨트롤러에서 데이터 흐름 프로그램을 실행하는 방법은 간단합니다. 데이터 소스 역할을 하는 ‘인젝트(Inject) 노드’가 데이터를 전역 큐에 엔큐(enqueue)하고, 다른 처리 노드들은 큐에서 데이터를 디큐(dequeue)하여 분석 및 실행하는 방식으로 데이터가 전달됩니다. 발표는 이 데이터 흐름 디자인을 mruby 코드로 자동 변환하는 스크립트를 통해 mruby/c 환경과 통합하는 방법을 시연합니다. 붉은색과 녹색 LED를 비동기적으로 깜빡이는 시연은 단일 코어 마이크로컨트롤러에서 하나의 프로그램만으로도 마치 멀티태스킹처럼 동작하는 것을 보여주며, 이는 sleep
명령을 통해 CPU를 딥 슬립 모드로 전환하여 저전력 및 비동기적 동작을 동시에 달성하는 mruby/c의 효율성을 증명합니다.