시스템 소프트웨어란 응용 프로그램과 하드웨어 장치 사이에 존재하는 소프트웨어를 통칭하는 용어로, 보통 운영체제를 중심으로 컴파일러 등의 개발도구, 각종 라이브러리나 미들웨어, 소프트웨어 플랫폼, 런타임 시스템 등이 모두 이에 포함된다. 시스템 소프트웨어의 목표는 CPU, 메모리, 네트워크, 스토리지 등 다양한 하드웨어 장치에 대한 여러 레벨의 추상화(abstraction)를 응용 프로그램에게 제공함으로써 보다 손쉬운 응용 프로그램 개발과 효율적인 실행을 지원하는 데에 있다.
본 연구실에서는 시스템 소프트웨어 수준에서 컴퓨터 시스템의 성능, 비용, 신뢰성, 에너지 효율성 등을 개선하기 위한 다양한 연구들을 진행하고 있다. 최근 막대한 연산 처리 능력과 대규모 I/O를 수반하는 다양한 응용들이 등장하고 있고, 이에 맞춰 매니코어 CPU나 GPU, SSD, FPGA 가속기 등 새로운 고성능 하드웨어들이 등장함에 따라 시스템 소프트웨어의 중요성이 더욱 커지고 있는 상황이다.
본 연구실에서 진행되는 연구 방향은 크게 두 가지로 구분될 수 있다. 첫번째 방향은, 대규모 인터넷 기반 서비스, 빅데이터 분석, 스트림 처리, 머신 러닝 등 새로 떠오르고 있는 주요 응용들로 하여금 이미 개발되었거나 개발 중에 있는 고성능 하드웨어의 기능 및 특성을 최대한 활용할 수 있도록 지원하는 것이다. 두번째 방향은 이와 반대로, 새로운 응용들의 특성이나 하드웨어 요구 사항 등을 파악하여 하드웨어의 구조를 변경 및 확장하거나, 응용에서 이루어지는 일부 연산을 하드웨어 수준으로 오프로딩(offloading) 시킴으로써 응용의 복잡도를 감소시키고, 동시에 전체적인 비용 대비 성능, 에너지 효율 등을 개선하는 것이다.
현재 본 연구실에서 진행되는 몇 가지 연구 주제를 나열하면 다음과 같다.
- 고성능 SSD를 이용하여 빅데이터 분석, key-value store, 분산 스토리지 시스템 등 데이터 집약적인 응용의 성능을 가속화하기 위한 연구
- 빅데이터 분석, 스트림 처리, 머신 러닝 등과 같은 응용 프로그램들의 특성을 파악하고, 연산의 일부를 하드웨어 수준으로 오프로딩하기 위한 방안에 대한 연구
- 응용의 특성을 반영한 SSD의 성능 및 구조 개선에 대한 연구
- 초고성능컴퓨터를 위한 분산 파일시스템에 대한 연구
보다 자세한 사항은 연구실 홈페이지를 참조.