M Rubyc와 데이터 흐름 프로그래밍 환경 통합

[EN] mruby/c and data-flow programming for small devices / Kazuaki Tanaka @kaz0505

작성자
RubyKaigi
발행일
2025년 05월 27일

핵심 요약

  • 1 M Rubyc는 제한된 메모리와 처리 능력을 가진 소형 마이크로컨트롤러를 위해 루비 언어를 최적화한 경량화된 버전으로, IoT 장치에 적합합니다.
  • 2 데이터 흐름 프로그래밍은 노드와 와이어를 사용하여 데이터의 흐름을 시각적으로 표현하는 방식으로, IoT 장치의 센싱-처리-액추에이션 로직 구현에 효과적입니다.
  • 3 발표자는 데이터 흐름 설계를 M Rubyc 코드로 변환하고, 이를 마이크로컨트롤러에서 실행하여 비동기적 동작과 저전력 소비를 동시에 달성하는 통합 환경을 시연했습니다.

도입

본 발표는 루비 언어의 경량 버전인 M Rubyc를 활용하여 소형 마이크로컨트롤러 환경에서 데이터 흐름 프로그래밍을 구현하는 방법을 다룹니다. 발표자는 IoT 장치와 같은 제한된 자원을 가진 환경에서 루비 언어를 효율적으로 사용하기 위한 M Rubyc의 개발 배경과 특징을 설명하고, 시각적 프로그래밍 방식인 데이터 흐름 프로그래밍의 이점을 강조합니다. 특히, 이 두 기술을 통합하여 마이크로컨트롤러에서 복잡한 로직을 효율적으로 실행하는 방안에 초점을 맞춥니다.

M Rubyc: 소형 장치를 위한 루비

발표자는 M Rubyc가 웹 애플리케이션이나 서버와 같은 풍부한 환경에서 사용되는 일반 루비와 달리, 메모리와 처리 능력이 제한적인 IoT 장치 및 소형 마이크로컨트롤러를 위해 설계되었다고 설명합니다. * 메모리 사용량 비교: 일반 루비는 1MB 이상, M Ruby는 약 120KB, M Rubyc는 약 20KB로 극도로 작습니다. * 타겟 장치: M Rubyc는 원칩 마이크로컨트롤러(CPU, 메모리, I/O가 단일 칩에 통합)를 대상으로 하며, 저전력, 저비용, 장시간 동작에 최적화되어 있습니다. * 주요 기능: 운영체제가 없는 베어메탈 환경에서 메모리 관리, 전력 관리(CPU 딥 슬립 모드), 준실시간 처리 등을 제공합니다. * 실행 환경: 개발은 PC에서 루비 코드를 작성하고, 이를 바이트코드로 컴파일한 후 마이크로컨트롤러로 전송하여 M Rubyc 가상 머신에서 실행합니다. 다양한 하드웨어에 이식성을 제공하기 위해 HAL(Hardware Abstraction Layer)을 지원합니다.

데이터 흐름 프로그래밍

데이터 흐름 프로그래밍은 노드(블록)와 와이어(연결)를 사용하여 프로그램 로직을 시각적으로 구성하는 방식입니다. * 교육적 이점: 중고등학생 교육에서 Scratch나 Blockly 같은 블록 프로그래밍과 유사하게, 시각적으로 프로그램의 동작과 로직을 이해하기 쉽습니다. * IoT에 적합성: IoT는 센싱, 처리, 액추에이션(actuation)의 연속적인 데이터 흐름으로 구성되므로, 데이터 흐름 프로그래밍이 이러한 특성을 표현하는 데 매우 적합합니다. * 마이크로컨트롤러 실행: 브라우저나 서버 환경에서 실행되는 데이터 흐름 설계를 마이크로컨트롤러에서 실행하기 위해, 데이터는 전역 큐(global queue)를 통해 노드 간에 전달됩니다. 데이터 소스 노드(inject node)가 데이터를 큐에 삽입하고, 다른 노드들이 큐에서 데이터를 가져와 처리하는 방식입니다.

M Rubyc와 데이터 흐름 프로그래밍의 통합

발표자는 데이터 흐름 설계를 M Rubyc 코드로 자동 변환하는 스크립트를 개발하여 통합을 구현했습니다. * 변환 과정: 데이터 흐름 설계(노드 및 연결 정보)를 입력으로 받아, 실행에 필요 없는 시각적 속성(위치, 크기 등)을 제거하고 M Rubyc 코드를 생성합니다. * 데모: 단일 코어 마이크로컨트롤러에서 두 개의 LED(녹색, 빨강)가 각각 1초 및 2.5초 간격으로 비동기적으로 점멸하는 시연을 보였습니다. 이는 sleep 명령어가 CPU를 딥 슬립 모드로 전환하고, 지정된 시간 후 깨어나 작업을 재개하는 M Rubyc의 전력 관리 기능 덕분에 가능합니다. 이 메커니즘은 비동기 실행과 저전력 소비를 동시에 달성합니다.

결론

본 발표는 M Rubyc를 활용하여 소형 IoT 장치에서 데이터 흐름 프로그래밍을 효과적으로 구현하는 혁신적인 접근 방식을 제시했습니다. 특히, 데이터 흐름 설계를 M Rubyc 코드로 변환하여 마이크로컨트롤러에서 실행함으로써, 제한된 자원 환경에서도 비동기적이고 저전력으로 동작하는 애플리케이션 개발이 가능함을 입증했습니다. 향후 과제로는 디스패칭 성능 개선, 분산 시스템(엣지 컴퓨팅 등)으로의 확장, 그리고 분산 환경에서의 배포 문제 해결 등이 제안되었습니다. 이 연구는 루비 개발자들에게 소형 임베디드 시스템 분야로의 새로운 가능성을 열어줍니다.

댓글 0

댓글 작성

0/1000
정중하고 건설적인 댓글을 작성해 주세요.

아직 댓글이 없습니다

첫 번째 댓글을 작성해보세요!