ESPRESSO 

Lab.

(Embedded System & PoRtable Electronics 

with System Software Optimizations)

 Everything you need to know about ESPRESSO Lab. 

 

Introduction to ESPRESSO Lab.

임베디드 시스템은 일반 컴퓨터 시스템보다 훨씬 특화되어 있습니다. 임베디드 시스템은 특정한 기능을 제공하도록 설계되어 있기 때문입니다. 이러한 특화된 기능은 디자인에 몇 가지 중요한 고려사항을 요구합니다. 임베디드 시스템은 비용과 전력 소비가 낮아야 하며, 실행완료를 위한 실시간 제약 조건을 충족하면서도 가능한 한 작은 크기로 설계되어야 합니다. 이러한 고려 사항은 컴파일러 설계 및 프로그램 최적화 기술과 함께 시스템 아키텍처 설계에 제약 조건을 생성합니다. 이러한 조건들은 상호 영향을 미치므로 이들이 균형을 이루도록 해야합니다(예: 시스템을 더 작고 빠르게 만들면 일반적으로 비용과 전력 소비가 증가함). 일반적인 임베디드 시스템은 프로세서 코어, 프로그램 메모리 및 ASIC(Application Specific Integrated Circuits)으로 구성됩니다. 집적 회로 개발 비용은 시스템 크기와 관련이 있습니다. 집적 회로의 가장 큰 부분은 종종 응용 프로그램을 저장하기 위한 메모리에 사용됩니다. 따라서 코드 및 데이터 크기를 줄이는 기술은 그러한 시스템을 생산하는 비용을 줄이는 측면에서 매우 중요합니다. 아직까지는 임베디드 시스템을 위한 관련된 기술들은 완벽하지 못합니다. 우리는 범용 컴퓨터의 메모리가 풍부하고 처리 속도가 놀라울 정도로 빠른 시대에 살고 있습니다. 따라서 컴파일된 바이너리 코드의 크기 제약조건과 같은 문제는 다른 최적화 기술에 우선순위가 뒷전으로 밀려났습니다. 따라서 이러한 제약조건을 만족하는 임베디드 시스템 설계를 위한 컴파일러 기술은 다음을 지원하도록 개발합니다.

1. MCU(마이크로컨트롤러 장치), DSP(디지털 신호 프로세서) 및 ASIC(응용 프로그램별 명령어 세트 프로세서)와 같은 저비용의 아키텍처를 위한 컴파일 기법

2. 위의 복잡한 명령어 세트를 지원하는 풍부한 중간 표현 (Intermediate Representation, IR), 그리고 IR을 기반으로 한 효율적인 레지스터 할당, 스케줄링 및 코드 선택 기법

3. 다양한 아키텍처들을 쉽게 최적화할 수 있도록 하는 통합형 최적화 관리기법

다양한 목적으로 설계된 임베디드 시스템은 다양한 구조의 메모리와 다채로운 형태의 명령어 집합으로 만들어집니다. 따라서 우리는 코드 크기, 레지스터 사용, 명령어 스케줄링 및 데이터 배치 등 기존의 여러 최적화 기법을 새로운 하드웨어 설계에 맞게 최적으로 재설계해야 합니다.

ESPRESSO Lab.에서는 이러한 목적을 달성하기 위하여 소프트웨어 최적화를 알고리즘 수준, 소스 코드 수준 및 명령 수준의 세 가지 수준으로 분류하여 연구하고 있습니다. 그리고 한층 더 나아간 시스템 최적화를 위해서 마이크로아키텍처 설계 동시 최적화 (co-optimization) 기술에 대한 연구도 함께 수행하고 있습니다.


Who I am

조두산 교수님은 2009년 서울대학교 전기컴퓨터공학부에서 박사 학위를 받았습니다. 2010년부터 순천대학교 전자공학과에 부임하여, 컴퓨팅시스템의 에너지 절감 및 성능 개선을 위한 시스템 소프트웨어 연구를 수행하였습니다. 연구 분야는 실시간 임베디드 컴퓨팅 시스템을 위한 혁신적인 소프트웨어 알고리즘, 운영체제, 마이크로아키텍처, 컴파일러 분석 및 최적화 기술의 설계를 포함하고 있습니다. 지난 수년간 저널, 컨퍼런스 및 워크숍에 120개 이상의 연구 결과를 발표하였습니다. 이러한 연구들은 한국연구재단, 한국전자통신연구원, 한국기술정보진흥원, 교육부 등 다양한 정부 기관 및 기업으로부터 지원을 받았습니다. 현재 다수의 국내/국제 학회 및 저널의 편집위원 및 학술 프로그램 위원회 (Program Committee) 멤버로 활동하고 있습니다.

Research Topics

컴파일러는 머신 러닝(Machine Learning, ML) 모델과 머신 러닝 모델이 실행되는 하드웨어 아키텍처를 이어주는 다리 역할을 수행합니다. 컴파일러는 중간 표현(Intermediate Representation, IR) 여러 단계를 거치며 변환과 최적화라는 두 가지 작업을 수행합니다. 이 두 작업은 반드시 분리되어 있지는 않습니다. 높은 수준의 IR에서 낮은 수준의 IR까지 모든 단계에서 프로그램 코드/데이터 최적화를 수행합니다. 변환은 특정 하드웨어에서 실행할 수 있도록 ML 모델에 대한 하드웨어 네이티브 코드를 생성하는 컴파일러 작업을 말합니다. 최적화는 해당 하드웨어에서 효율적으로 실행되도록 ML 모델을 최적화하는 컴파일러 기법을 말합니다. ML 모델을 최적화하는 방법에는 로컬 및 글로벌 최적화 두 가지가 방식이 있습니다. 로컬 최적화는 ML 모델에서 태스크 또는 태스크 집합을 최적화하는 경우입니다. 글로벌 최적화는 전체 계산 그래프를 end-to-end로 최적화하는 경우입니다. 우리의 연구 초점은 LLVM 컴파일러 프레임워크를 사용하여 상용화 수준의 머신러닝 프레임워크를 위한 최적화 컴파일러를 개발하는 것입니다.


프로그램 개발자가 소스코드를 작성하면 그것을 컴퓨팅 장치에서 실행가능 하도록 하는 것은 컴파일러의 몫 입니다. 이러한 변환과정을 수행하는 컴파일러는 명령어 집합과 데이터를 바이너리 형식으로 생성합니다. 이때 데이터의 배치 순서나 명령어 집합의 선택, 프로그램 코드 블럭의 위치 등은 컴파일러 기술에 의하여 결정하게 됩니다. 여기서 문제는 다양한 구조의 메모리 아키텍처와 명령어 아키텍처에 최적의 명령어 선택과, 데이터 배치를 결정하는 것이 컴파일러에 의존적인 부분이라는 것 입니다. 이러한 결정 파라미터에 의하여 시스템 성능이 크게 변할 수 있기 때문입니다. 이러한 문제를 해결하기 위해서 우리는 다양한 명령어 아키텍처 및 다양한 메모리 아키텍처를 위한 유니버셜한 데이터 최적화 및 명령어 선택 기술 개발을 연구하고 있습니다. 이러한 최적화 기술들은 다양한 메모리 계층 구조에서 상위 메모리의 활용을 극대화하여 전체 시스템 성능을 향상시키고, 프로그램의 에너지 소비를 절감하도록 최적화합니다.


코드 스케줄링/매핑 알고리즘 연구의 초점은 다양한 컴퓨팅 아키텍처을 위한 통합된 코드 매핑 및 스케줄링 관리 기술을 개발하는 것입니다. 이를 가능하게 하기 위해서는 컴퓨팅 아키텍처의 특징을 설명하는 아키텍처 기술파일을 정의하여 작성하고, 이 기술파일에 맞는 최적의 코드 매핑 및 스케줄링 기법이 적용되도록 하는 메타 알고리즘 계층을 개발해야 합니다. 본 연구의 초점은 다양한 형태의 임베디드 시스템 아키텍처를 위한 통합된 프로그램 코드 매핑/스케쥴링 관리 기술 개발입니다. 

종합설계 및 학부연구생 모집