View source code on Github
하드웨어 기술의 발전에 따라 IoT 장치는 점점 더 복잡하고 어려운 작업을 수행할 수 있는 계산 자원을 가지게 되었지만, IoT 장치가 수행하는 작업들은 장치가 가진 높은 하드웨어 성능을 항상 그리고 완전히 사용하지는 못하고 있어 장치 내 자원의 낭비가 발생하고 있다. 만약 여러 IoT 장치들의 그러한 여유 자원을 모아 하나의 자원 풀(resource pool)로 구성하여 다른 용도로 사용할 수 있게 한다면, 자원활용의 효율성을 크게 향상시킬 수 있다.
소프트웨어플랫폼 연구실에서는 최근 5G 네트웍의 보급에 따라 각광받고 있는 Edge Computing에서 IoT 장치들의 여유 자원을 활용하기 위한 IoT-Edge-Cloud 간 task scheduling, code parsing and compilation, offloading and remote execution에 대한 활발한 연구가 진행되고 있다.
IoT-Edge-Cloud로 이어지는 현재의 계산 자원 계층적 분할 구조를 극복하고, 데이터의 이동 경로 (IoT --> Edge --> Cloud)를 따라 각 단위에서 자원량에 부합하는 수준의 연속적인 계산 작업 수행이 가능하도록 하는 컴퓨팅 패러다임을 Computing Continuum이라 한다. Computing continuum을 현실화하기 위해서는 IoT, edge 및 cloud를 운용하는 software platform 간의 협업 체계가 반드시 필요하다.
소프트웨어 플랫폼 연구실에서는 이러한 플랫폼 간 협업 체계 구축을 위한 플랫폼 기술 및 그 응용 기술을 연구한다. 예를 들어, cloud gaming을 위한 실시간 rendering을 기존의 cloud 내 game server와 edge가 협력하여 수행함으로써 사용자에게 전달되는 게임 화면의 전송 지연 시간을 최소화하는 협력 렌더링 기술을 개발하였다. 또한, 자율 주행 자동차를 위한 time-critical edge service와 같이 IoT-edge 간 데이터 전달 지연 시간 최적화가 필요한 경우를 위해, MQTT와 Kafka 간의 latency-optimized data delivery 기술을 연구하고 있다.
하나의 스마트 기기에서 생성되는 하드웨어(Sensor, GPS, Touch 등) 데이터는 오직 그 기기에서 동작하는 App만 사용할 수 있다. 그러나 만약 그 데이터를 다른 스마트 기기에서 실시간으로 사용할 수 있다면, 여러 사용자가 자신의 스마트 기기를 통해 협업을 하거나 멀티유저 응용프로그램을 함께 즐길 수 있게된다. 오른쪽 그림은 모바일 기기의 모션센서 값을 스마트 TV로 실시간 전송하여 스마트 TV에서 실행되고 있는 테니스 프로그램의 라켓 인풋값으로 사용하도록 함으로써, 복수의 사용자가 별도의 장치 없이 각자의 스마트 폰으로 TV의 테니스 프로그램을 함께 즐기는 모습을 나타낸다.
소프트웨어플랫폼 연구실에서 개발한 CollaboRoid는 하드웨어 데이터를 실시간으로 다른 기기와 공유하는 기능을 Mobile Platform에서 제공하도록 발전시킨 Android 이다. 이 기능을 발전시키면 다음 그림과 같은 일이 가능해진다. TexasHoldem 카드 게임이 중앙의 pad에서 동작하고 있고, 다른 기기에는 각자의 카드가 보이고 있다. 주변 기기들에는 이 앱이 설치되어 있지 않고, 대신 카드를 보여주고 선택을 할수 있게 하는 인터페이스를 가지는 코드가 pad로부터 실시간으로 전송되어 주변 스마트 기기들에서 실행되고 있다.
소프트웨어플랫폼 연구실에서 개발한 SAMD(Single App. Multiple Device) 기술은 실행중인 앱의 일부 코드(activity)가 다른 기기로 전송되어 동적으로 실행될 수 있게하는 모바일 플랫폼 기술이다. 이 기술을 이용하면 이 그림과 같이 재미있는 앱을 만들 수 있을 뿐만 아니라, 큰 작업을 여러 스마트 기기가 협업을 통해 처리하는 것도 가능해진다.
여러 IoT 장치들이 생성하는 데이터는 실시간으로 서버로 전송되어 Key-Value 형태로 관리된다. 그러나 일반적으로 사용되는 Key-Value Store (예: LevelDB, RocksDB) 들은 빠른 속도로 실시간 생성되는 대용량 IoT 데이터를 전송받아 관리할 수 있도록 최적화되어 있지 않다.
소프트웨어플랫폼 연구실에서는 이러한 IoT 데이터 관리를 위해, DBMS 및 File system이 IoT 데이터의 생성 및 활용 특성을 충분히 고려하여 최적화 될 수 있도록 하는 새로운 기술을 연구한다. 실시간으로 빠르게 들어오는 많은 양의 IoT 데이터를 효율적으로 저장하고, 읽고, 쓰면서 이를 활용한 여러 응용프로그램들이 더 빠르게 동작할 수 있게 하고, 이를 통해 서비스 선택의 폭을 넓히는 것을 목적으로 한다. 이 분야는 시스템에 관한 이해와 코드 분석에 관심이 많은 학생들이 흥미를 느낄 수 있는 연구분야이다.
현재 널리 사용되고 있는 플래시메모리 기반 저장장치인 SSD (Solid-State Drive)는 기존의 저장장치인 HDD에 비해 빠른 속도의 데이터 입출력을 가능하게 한다. SSD를 위한 시스템 소프트웨어 기술은 충분히 성숙된 상태이나, 최근 새로운 형태의 SSD인 Zoned Namespaces SSD (ZNS SSD)가 개발되면서 시스템 소프트웨어의 또 다른 변화를 필요로 하고 있다.
ZNS SSD는 응용프로그램 별 동작 특성에 따라 생산되는 서로 다른 속성의 데이터들을 서로 다른 영역(zone)에 구분하여 저장함으로써, 데이터 혼합에 따른 과도한 garbage collection 오버헤드를 줄일 수 있다는 장점을 가진다. 그러나 현재 사용되는 Key-Value store를 위한 ZNS SSD 용 호스트 소프트웨어는 성능과 쓰기 증폭의 측면에서 여전히 최적화되지 못한 상태이다. 소프트웨어플랫폼 연구실에서는 이 문제를 해결하기 위한 연구를 진행 중이다.
반도체 집적 기술의 발전에 따라 CPU 내 core의 수가 점점 증가하고 있다. Core 수의 증가는 계산 능력의 향상을 의미하므로 컴퓨터 시스템의 성능을 향상시킬 수 있으나, 동시에 실행되는 process/thread 들의 메모리 접근 빈도 역시 증가하게 된다. 특히 대용량 데이터를 기반으로 동작하는 data-intensive task들로 인한 과도한 메모리 접근은 기존에는 관찰되지 않았던 memory bottleneck 문제를 발생시킨다.
Processing-in-Memory (PIM)은 이러한 문제를 해결하기 위해 최근 등장한 새로운 컴퓨팅 패러다임이다. 데이터를 저장하는 메모리(DRAM) 내에 다수의 processing unit을 장착하여, CPU-Memory간 데이터 전달 없이 메모리에서 필요한 연산을 직접 수행함으로써 memory bottleneck 문제를 해결한다. 소프트웨어 플랫폼 연구실에서는 PIM을 위한 시스템 소프트웨어 기술 및 PIM-aware data-intensive computing algorithm을 연구하고 있다.