ettrends banner

이문수 (Lee M.S.) 임베디드SW플랫폼연구실 책임연구원
석종수 (Seok J.S.) 임베디드SW플랫폼연구실 연구원
김영주 (Kim Y.J.) 임베디드SW플랫폼연구실 선임연구원
차정은 (Cha J. E.) 임베디드SW플랫폼연구실 책임연구원
김정시 (Kim J. S.) 임베디드SW플랫폼연구실 책임연구원
정영준 (Jung Y. J.) 임베디드SW연구부 책임연구원

Ⅰ. 자가적응형 컴퓨팅 개념

1. 자가적응형 시스템

소프트웨어 개발에서 성능 최적화는 목표 기능 요구사항을 만족하는 소프트웨어를 개발한 후 이를 시스템 자원을 최적으로 활용하여 실행할 수 있도록 소프트웨어 수정과 실행 테스트를 반복하는 작업을 말한다. 일반적으로 성능 최적화 결과는 소프트웨어 개발자가 보유한 하드웨어와 운영체제 지식과 개발 능력에 의존적이며 많은 시간과 노력을 요구한다.

자가적응형 시스템은 소프트웨어의 성능 최적화를 개발자의 개입 없이 소프트웨어 실행 시 내부 알고리즘이나 외부 시스템 자원들을 자동으로 조절하여 가능하게 하는 소프트웨어 시스템이다. 이를 위해 자가적응형 시스템은 주어진 시스템의 전체 운영 환경을 실시간으로 감시하면서 컴퓨팅 자원을 적절하게 분배하고 제어할 수 있는 기능이 있어야 한다.

(그림 1)은 일반적인 자가적응형 시스템의 구성을 도식화하고 있다. 자가적응형 시스템은 실행하는 소프트웨어의 성능을 실시간으로 감시하는 소프트웨어 성능 감시기, 소프트웨어가 필요로 하는 최적 자원을 결정하는 활용자원 결정기 그리고 결정된 자원을 할당하는 자원 제어기로 구성된다[2][3]. 자가적응형 시스템을 구성하는 요소들의 상세한 기능은 다음과 같다.

(그림 1)
자가적응형 컴퓨팅 시스템 구성

가. 소프트웨어 감시단계

소프트웨어 감시단계는 시스템 내의 모든 상황 정보를 수집하는 것으로 성능 최적화 대상 소프트웨어 및 시스템 내에서 발생하는 상태정보를 실시간으로 유지 관리한다. 시스템의 상태정보는 주로 운영체제에서 제공되는 인터페이스를 통해 이벤트 또는 일정 주기마다 조회하여 수집이 가능하지만, 소프트웨어의 경우 할당한 리소스 상태정보 외에는 시스템상에서 현재 성능을 측정하는 데 한계가 있다. 따라서, 소프트웨어 성능 정보를 감시하기 위해서는 별도의 성능 측정을 위한 센싱 매커니즘이 필요하다.

나. 활용자원 결정단계

활용자원 결정단계는 실행 중인 소프트웨어의 성능을 탐지하는 처리와 탐지된 성능이 목표 성능을 벗어났을 경우 어떤 자원을 어떻게 제어할 것인지 필요자원을 결정하는 처리로 구성되어 있다. 소프트웨어의 성능을 탐지하는 처리는 감시하는 소프트웨어의 성능을 목표로 하는 시스템 성능을 실시간으로 비교 분석하여 성능이 허용범위에 얼마나 벗어나 있는지 판단한다. 필요자원을 결정하는 처리는 목표 성능을 만족시킬 수 있도록 시스템 내에서 최대한 효율적 가용할 수 있는 자원의 종류와 제어 수준을 결정한다. 이 처리가 자가적응형 컴퓨팅에서 핵심적인 역할을 담당하며 고전적으로 사용되는 PID 제어에서부터 머신 러닝에 이르기까지 다양한 인공지능 알고리즘이 활용되고 있다.

다. 자원 제어 단계

자원 제어 단계는 실질적인 소프트웨어 성능의 조절이 이루어지는 단계로 이를 위해 앞서 활용자원 결정단계에서 결정된 제어할 시스템 자원과 범위를 바탕으로 시스템 자원을 제어하거나 알고리즘을 동적으로 변경하게 된다. 시스템 자원 제어는 CPU 코어 개수 및 종류, 메모리, 네트워크 대역폭 등을 조정하거나 DVFS 기법들을 적용할 수 있다. 반면에 알고리즘 변경은 소프트웨어 내부에서 특정 기능에 대한 후보 알고리즘들이 존재하고, 이 중 최적의 알고리즘을 소프트웨어 파라미터 변경을 통해 동적으로 선택하여 이루어진다.

2. 자가적응형 소프트웨어

소프트웨어가 자가적응형 시스템에 반응하기 위해서는 자가적응형 시스템 내 소프트웨어 감시기를 통해 각 소프트웨어의 품질 성능 목표와 성능의 변화를 감지할 수 있어야 한다. 이와 같이 소프트웨어가 자가적응형 시스템과 연계되기 위해서는 자가적응형 시스템에서 제공하는 표준화된 API를 이용하여 자가적응형 소프트웨어를 개발해야 한다.

자가적응형 소프트웨어 개발에서 사용되는 자가적응형 시스템 API들은 소프트웨어의 성능검침 설정, 성능 목표 설정, 목표 및 현재 성능 검출, 성능 이력 확인 기능 등을 제공한다. 자가적응형 컴퓨팅 기술을 활용하고자 하는 개발자는 이러한 자가적응형 시스템 API들을 파악한 후 기존 소프트웨어를 자가적응형 소프트웨어로 작성하는 노력이 필요하다.

자가적응형 소프트웨어는 소프트웨어 성능 확보를 위해 제어하는 대상에 따라 크게 내부(Internal)와 외부(External) 자가적응형으로 구분할 수 있다[1].

가. 내부(Internal) 자가적응형 소프트웨어

내부 자가적응형 소프트웨어는 (그림 2)와 같이 시스템으로부터 할당받은 자원과 자신의 현재 성능/품질을 고려하여 자신이 보장해야 할 최상의 품질을 유지할 수 있도록 소프트웨어 내부 로직이나 파라미터를 동적으로 변경한다. 이를 위해 소프트웨어 내부 로직에 여러 개의 응용 제어 파라미터를 가지고 있거나, 여러 개의 알고리즘을 내장하고 있어 실시간으로 변경하게 된다. 내부 파라미터를 조정하기 위해 제어 모듈이 소프트웨어 자체에 탑재될 수 있고, 소프트웨어 외부에서 콜백 형태로 호출할 수도 있다. 내부 자가적응형이 효과적으로 적용될 수 있는 소프트웨어 분야로서는 멀티미디어 인코더/디코더, 적응형 웹 미디어 재생기, 영상 인식 등이 있을 수 있다.

(그림 2)
내부 자가적응형 소프트웨어

나. 외부(External) 자가적응형 소프트웨어

외부 자가적응형 소프트웨어는 자신의 성능 상황을 외부에서 감시할 수 있는 글로벌 자원관리자가 해당 소프트웨어의 성능을 개선하기 위해 시스템 자원을 제어한다. 이러한 소프트웨어는 자원관리자에게 자신의 프로세스 식별자(e.g., PID) 및 성능 조건을 알려줄 수 있도록 공유 메모리나 IPC를 통해 전달하게 된다. 일반적으로 자가적응형 방식 측면에서 보면 내부 자가적응형은 능동적으로 동작하는 반면에 외부 자가적응형은 수동적으로 동작하게 된다. (그림 3)은 외부 자가적응형 소프트웨어가 동작되는 흐름을 보인 것이다.

(그림 3)
외부 자가적응형 소프트웨어

외부 자가적응형 소프트웨어는 대부분의 일반 소프트웨어에 적용이 용이하여 내부 자가적응형 방식에 비해 상대적으로 활용 분야가 다양하지만, 소프트웨어와 제어 관리자 간의 별도의 통신 프로토콜이나 연동 메커니즘이 필요하다.

본고에서는 앞서 서술한 자가적응형 컴퓨팅 개념을 포함하는 현존하는 국외 기술들의 동향을 살펴본 후, 국내에서 개발되고 있는 임베디드 디바이스용 자가적응형 컴퓨팅 기술개발 사례를 소개한다.

Ⅱ. 자가적응형 컴퓨팅 기술동향

1. MIT SEEC(SElf-awarE Computing)

SEEC는 MIT Angstrom 프로젝트의 일부로 MIT, 시카고 대학, 런드 대학, 밀라노 공대, 프리스케일(Freescale)사 등 여러 기관이 협력하여 개발한 기술이다. 이 기술은 고성능/저전력과 같이 서로 상충되는 성능 목표를 적절히 조절하여 사용자가 원하는 서비스를 효율적으로 제공하기 위한 미래의 컴퓨팅과 프로그래밍 모델을 제시하고 있다. 이 기술이 포함된 프로젝트는 2011년 Scientific American 선정 ‘Ten World Changing Ideas’ 중 하나로 선정되기도 했다[4][5].

(그림 4)에서 보듯이, SEEC에서의 자가적응형 컴퓨팅 모델은 감시(Observe), 결정(Decide) 및 실행(Act)로 3개의 단계로 구성된다. 각 단계는 역할 기반으로 소프트웨어 개발자, 시스템 개발자, SEEC 런타임 엔진으로 나누어진다. 소프트웨어 개발자는 대상 소프트웨어의 목표와 상태를 관찰하고, 시스템 개발자는 만족스러운 성능을 얻기 위해 취해야 하는 액션 종류이나 함수를 알려준다. 마지막으로 SEEC 런타임 엔진은 중간 레이어로서 최소의 비용으로 소프트웨어의 성능 목표를 맞추기 위해 알맞은 엑츄에이터를 선택하게 된다.

(그림 4)
MIT SEEC의 ODA 피드백 루프[4]

SEEC에서는 Observe 단계에서 소프트웨어의 성능 상태를 감시하기 위해 Heartbeat 프레임워크를 제공한다. 이는 개발자에게 표준화된 API를 이용하여 쉽게 자가적응형 소프트웨어를 개발할 수 있도록 하였다. API는 소프트웨어 내부에서 성능을 좌우하는 코드 영역이 실행될 때 Heartbeat이벤트를 발생하도록 하여 태스크 실행 지연 시간을 측정하게 된다.

SEEC의 Decide 단계에서는 가용할 수 있는 시스템의 상태와 소프트웨어의 상태에 따라 가능한 한 빨리 반응할 수 있도록 고전적 제어(Classical Control), 적응형 제어(Adaptive Control), 적응형 실행 스캐줄링(Adaptive Action Scheduling), 머신 러닝(Machine Learning) 등 다양한 제어 알고리즘을 적용하였다. (그림 5)은 실제 x86 리눅스 시스템에서 자가적응형 기법 적용 전후의 결과를 보여준다. 실험 결과는 시스템의 최대 리소스를 사용하게 되는 Worst-Case- Execution-Time(WCET) 상황에서의 비디오 인코딩과 SEEC 의 자가적응 기법을 적용 비디오 인코딩 전후를 비교한 것이다. 2개의 동영상은 동일한 Frame Per Second(FPS)를 보여주지만, SEEC 비 적용 시 매 프레임별로 거의 동일하게 전력을 많이 소모하는데 반해 SEEC를 적용하게 되면 비디오 영상의 각 화면 특성에 따라 효율적인 전력 소모가 이루지는 것을 보여준다[6].

(그림 5)
WCET vs SEEC의 소모전력 비교[6]

2. Tessellation

Tessellation 운영체제는 매니코어 시스템상에서 병렬처리, 실시간 또는 GUI를 가진 다양한 소프트웨어들이 동시에 운용될 때, 각 소프트웨어의 품질 성능을 유지 시킬 수 있도록 시스템 자원을 효율적으로 분배하기 위한 것이다. 따라서, 성능에 영향을 줄 수 있는 시스템 자원들을 중심으로 소프트웨어가 스스로 필요로 하는 자원을 식별하고, 집적 요청하는 적응형 자원 중심의 컴퓨팅(Adaptive Resource-Centric Computing) 기술을 제안하였다. (그림 6)은 Tessellation 피드백 루프를 보인 것으로, 이 기술에서 핵심이 되는 기술로는 시공간 파티셔닝(Space-Time Partitioning)과 2단계 스케줄링(Two-Level Scheduling)이 있다[7].

(그림 6)
Tessellation 피드백 루프[7]

시공간 파티셔닝은 소프트웨어별로 고유하게 사용 가능한 공간이나 점유 시간과 같은 자원을 할당해 주고, 상호 격리되게 실행할 수 있게 해 준다. 파티션의 기본 자원은 하드웨어의 쓰레드 개수, 메모리 영역, 캐쉬, 메모리 대역폭 등이 있을 수 있고, 공간 파티셔닝은 Gang-scheduler를 통해 시스템 필요에 따라 계속 변할 수 있다. 2단계 스케줄링은 셀(Cell)이라고 하는 자원을 하나의 서비스를 제공하는 객체로 간주하고, 전체 시스템 관점에서 글로벌 자원관리 계획과 셀 단위의 소프트웨어 스케줄링을 동시에 지원함으로써 보다 효과적으로 리소스를 관리할 수 있다.

3. AutonomicOS

Autonomic OS(AcOS) 프로젝트는 Milano 공대-Lund 대학이 협력하여 시스템 레벨과 사용자에 특화된 서비스 레벨에서 소프트웨어 최적의 성능을 가질 수 있도록 보다 효율적으로 시스템 자원을 할당하는 기술을 개발하였다. 지금까지 연구는 주로 소프트웨어의 품질 요구사항에 초점을 맞추었지만 AcOS는 성능과 CPU 칩셋의 온도도 함께 제약 조건에 포함하고 있다. (그림 7)에서 살펴볼 수 있듯이, 기존 리눅스 운영체제상에서 별도의 자동화 레이어를 추가하였다. 전체 피드백 루프는 앞서 서술한 MIT SEEC 프로젝트와 유사하게 감시기(Monitors), 적응 정책(Adaptation Policies), 실행기 (Actuator)라는 3가지 주요 컴포넌트로 구성된다[8][9].

(그림 7)
Autonomic OS(AcOS) 시스템 구성도

AcOS는 소프트웨어와 자원들을 각각 하나의 엔티티로 고려하고, 그에 상응되는 Observer-Decide-Action (ODA) 객체를 1:1 대응할 수 있도록 하였다. 그리고 시스템 내 글로벌 스케줄러는 각 ODA 객체로부터 수집된 정보를 바탕으로 성능 상태이나 자원을 파악하고, 최적의 자원을 분배하게 된다.

4. 자가적응형 FPGA

멀티 코어 시스템에는 다수의 동종 코어를 이용하거나 CPU뿐만 아니라 Graphics Processing Unit(GPU), 인코더/디코더 등 다양한 이기종 코어로 구성될 수 있다. 일반적으로 쓰이는 폰 노이만(Von Neumann) 구조 컴퓨팅 환경에서는 여러 개여 동종 멀티코어를 사용하더라도 메모리와의 순차적 처리 방식으로 인해 한계를 가진다. 따라서 멀티미디어 처리를 위해 GPU나 Field Programmable Gate Array(FPGA) 기반의 이기종 코어 지원 인코더/디코더를 활용하는 것이 보다 효과적일 수도 있다. 과거 FPGA는 동작 주파수가 낮고 내부 복잡도로 인해 기존 CPU보다 성능이 낮았지만, FPGA의 급속한 성능 개선으로 다양한 분야(지능형 라우터, 결함 허용 데이터 센터, 고신뢰 언어 처리 등)에서 사용되고 있다.

FPGA도 일부 기능 확장이 가능하지만, 여전히 런타임상에서 로직을 변경하기가 용이하지 않다. 이러한 상황에서 소프트웨어 기반의 자가적응형 기술을 접목하여 프로그램 실행 중에서도 선택적으로 로직의 일부분을 변경할 수 있는 재구성 가능한 컴퓨팅(Reconfigurable Computing) 기술이 요구된다.

MIT와 밀라노 공대에서는 고효율의 FPGA 하드웨어와 고확장성의 소프트웨어를 동시에 고려한 하이브리드 형태의 자가적응형 기술을 연구하였다. (그림 8)은 FPGA 기반 자가적응형 시스템을 보인 것이다. 이 시스템은 필요할 경우 소프트웨어 특성에 따라 특정 하드웨어 자원을 직접 할당해줌으로써 보다 성능 제어가 용이한 장점이 있다[10][11].

(그림 8)
FPGA 기반 자가적응형 시스템[10]

이 프로젝트에서는 소프트웨어 성능 모니터링을 위해 앞서 서술한 MIT SEEC의 Heartbeat 프레임워크를 활용하였고, FPGA 제어를 위해 별도의 디바이스 드라이버를 개발하였다. 마지막으로 소프트웨어의 요구 성능에 맞게 자원을 조절하기 위한 스위칭 서비스(Imple-mentation Switch Service: ISS)를 두어 소프트웨어와 하드웨어를 자유롭게 스위칭할 수 있는 Hot-swap 매커니즘을 적용하였다.

Ⅲ. 임베디드 디바이스를 위한 자가적응형 컴퓨팅 기술

본 장에서는 2014년부터 ETRI에서 개발되고 있는 임베디드 디바이스를 위한 자가적응형 컴퓨팅 기술인 이기종 IoT 디바이스 지원 자가적응형 SW 프레임워크를 소개한다.

1. 자가적응형 SW 프레임워크

자가적응형 SW 프레임워크는 이기종 멀티코어를 탑재한 임베디드 디바이스를 위한 기술로 전체 구성은 (그림 9)와 같다.

(그림 9)
자가적응형 SW 프레임워크

자가적응형 SW 프레임워크는 전통적인 자가적응형 시스템에서의 소프트웨어 감시기에 대응하는 자가적응형 응용 감시기, 자원 검증 및 자원 제어기에 대응하는 자가적응 정책 관리기를 지원하다. 또한, 자가적응형 소프트웨어와 시스템의 상태정보를 통합 유지 관리함으로써 전체 시스템 관점에서 효율적인 자원 배분이 가능하도록 자가적응형 시스템 정보 관리기를 추가 지원하고 있다.

자가적응형 시스템 정보 관리기는 자가적응형 SW 프레임워크상의 소프트웨어와 시스템 정보를 정적/동적저장 관리하여 자가적응형 응용 감시기와 자가적응 정책 관리기가 효율적으로 연동하도록 지원한다. 그리고 실시간 상태정보에 대한 표준화된 인터페이스를 제공하여 고성능, 저전력, 네트워크 등을 고려한 다양한 정책 관리기를 확장할 수 있도록 한다.

자가적응 정책 관리기는 자가적응형 SW 프레임워크의 핵심이 되는 소프트웨어에 대한 자가적응 검증과 자원 제어를 처리한다. 본 프레임워크에서는 내부 자가적응과 고성능/저전력과 네트워크 관점의 외부 자가적응 정책관리기를 지원한다.

가. 내부 자가적응 정책 관리기

내부 자가적응 정책관리기는 내부 자가적응형 소프트웨어의 성능을 자동 제어하기 위한 것이다. 이를 위해 내부 자가적응형 소프트웨어는 성능 조절 파라미터를 자체 가지고 있으며 파라미터별 성능에 대한 예측이 필수적이다. 예를 들면, X.264 인코더에는 5개의 모션 예측 알고리즘과 10개의 서브 모션 알고리즘을 가지고 있다. 총 50가지의 선택 모드는 각 모드마다 다른 성능 및 압축률을 보여준다. 내부 자가적응 정책 관리기는 과거의 Heartbeat 히스토리와 그 순간의 각 모드 정보를 바탕으로 기계학습(Neural Network)를 통해 알고리즘별 성능 예측을 지원한다. (그림 10)은 실제 측정치와 예측치에 대한 결과를 보여주는 것으로 거의 동일한 성능 패턴을 보여주고 있다.

(그림 10)
NN기반 성능 예측기의 정확도 비교

나. 고성능/저전력 외부 자가적응 정책관리기

고성능/저전력 외부 자가적응 정책 관리기는 목표 성능을 유지하면서 고서능/저전력 목표를 달성하기 위한 것이다. 이를 위해서는 전력 예측이 필수적이다. 가상 전력 예측기는 자가적응형 응용이 사용한 시스템 자원을(예, 코어 개수, 코어 타입, CPU 클럭 주파수) 입력 변수로 하는 선형 회귀 분석법을 적용하였다. 그리고 전력소모량 예측 모델의 상수값 설정은 Multi-threaded CPU 스트레스 벤치마크를 이용하여 (그림 11)과 같이 선형적인 전력 예측 모델을 개발하였다.

(그림 11)
가상 전력 예측 모델 선형화

다. 네트워크 외부 자가적응 정책관리기

네트워크 외부 자가적응 정책 관리기는 디바이스 내 송수신되는 네트워크 트래픽을 모니터링하고 제어한다. 이를 위해서는 특정 소프트웨어에 대해 네트워크 상태와 제어를 할 수 있어야 한다. 이를 위해 자가적응형 SW 프레임워크는 커널 레벨에서 TCP/IP 패킷 정보를 수집하기 위한 인터페이스를 제공하고, TCP 윈도우 조정 및 패킷 누락(Packet Drop) 기법을 통해 소프트웨어별 네트워크 자원 제어를 지원한다. 이를 통해 (그림 12)와 같이 FTP와 미디어 스트리밍 서비스에 패킷 누락 기법을 적용하여 FTP 다운로드 속도를 낮춤으로써 스트리밍 서비스를 원활하게 제공할 수 있다.

(그림 12)
FTP 및 스트리밍 응용 동시 실행

2. 자가적응형 소프트웨어 개발 지원도구

자가적응형 소프트웨어 개발 과정은 자가적응형 소프트웨어 작성 단계, 성능검침 위치설정 단계 그리고 소프트웨어 성능확인 단계로 구성된다. 자가적응형 소프트웨어 개발 지원도구는 이러한 개발 과정의 각 단계별 작업을 임베디드 소프트웨어 개발 환경에서 편리하고 정확하게 진행할 수 있도록 (그림 13)과 같은 구조로 설계되었다.

(그림 13)
자가적응형 소프트웨어 개발 지원도구

가. 소프트웨어 작성 지원 기능

자가적응형 소프트웨어 작성 단계 지원에 필요한 개발 환경 제공을 위한 것으로 자가적응형 소프트웨어를 위한 소스 코드 편집기, 프로젝트 단위로 소스, 바이너리, 설정 파일 등을 관리하는 프로젝트 관리기, 소스에서 바이너리를 생성하기 위한 빌더와 최종 바이너리 실행을 위한 바이너리 실행기 및 원격 개발 처리기들을 포함하고 있다. (그림 14)는 자가적응형 소프트웨어 개발 지원도구가 제공하는 소프트웨어 작성 지원 기능에 대한 주요 화면이다.

(그림 14)
소프트웨어 작성 지원기능 화면

나. 성능검침 위치설정 기능

자가적응형 소프트웨어 소스 코드에서 성능을 효과적으로 감시할 수 있는 최적 위치를 찾기 위해 소프트웨어의 소스코드 라인별 실행 분석기와 성능검침용 소프트웨어 감시 API 삽입기를 지원한다. 소스코드 라인별 실행 분석기는 감시 목표로 하는 성능에 영향을 많이 주는 소스 파일과 소스 라인을 검출하며, 성능검침용 소프트웨어 감시 API 삽입기는 앞서 분석 과정을 통해 결정된 최종 선택된 최적 위치에 최적의 매개 변수를 설정한 성능검침용 API를 위한 소스 코드를 자동 삽입한다. (그림 15)는 자가적응형 소프트웨어 개발 지원도구가 제공하는 성능 검침 위치 설정 기능에 대한 주요 화면이다.

(그림 15)
성능검침 위치설정 기능 화면

다. 성능확인 기능

자가적응형 소프트웨어 실행 시에 소프트웨어 성능, 시스템 성능, 그리고 소프트웨어 실행결과 확인 환경을 제공한다. 소프트웨어 성능확인 기능은 자가적응형 소프트웨어에 감시 API로 설정한 최종/최고/최저 성능 목표 범위에 만족하는 성능으로 실행되는지 확인한다. 시스템 성능확인 기능은 자가적응형 소프트웨어 실행 시 자가적응형 시스템의 부하가 자가적응형 시스템의 성능 허용범위에 만족하는 성능을 보이는지 확인한다. 그리고 소프트웨어 실행결과 확인기능은 자가적응형 소프트웨어 실행이 자가적응형 시스템에 의해 성능이 제어되었을 때 실행 내용이 적절한지 확인한다. (그림 16)은 자가적응형 소프트웨어 개발 지원도구가 제공하는 성능 확인 기능에 대한 주요 화면이다.

(그림 16)
성능확인 기능 화면

Ⅳ. 결론

임베디드 소프트웨어의 복잡성 증가와 하드웨어의 다양화로 인해 임베디드 소프트웨어의 성능 최적화 작업은 갈수록 어려워지고 있어 개발 시 상당한 시간과 노력을 투입하게 된다. 자가적응형 컴퓨팅 기술은 이를 해결하기 위해 개발자에 의한 별도의 성능 최적화 노력 없이도 임베디드 시스템의 제한된 컴퓨팅 자원들을 자동으로 최적 제어하여 임베디드 소프트웨어들이 요구하는 성능을 확보해 주는 기술이다.

본고에서는 자가적응형 컴퓨팅 개념과 현존하는 관련 기술들의 동향을 살펴보았으며, 국내에서 개발되고 있는 자가적응형 컴퓨팅 기술개발 사례를 살펴보았다. 자가적응형 컴퓨팅 기술이 폭발적으로 증가하는 IoT 및 임베디드 디바이스에 장착된다면 제품 개발 비용 절감을 통해 글로벌 시장에서 보다 확고한 경쟁력을 확보할 수 있을 것으로 예상된다.

약어 정리

DVFS

Dynamic Voltage and Frequency Scaling

FPGA

Field Programmable Gate Array

FPS

Frame Per Second

GPGPU

General-Purpose computing on GPU

ISS

Implementation Switch Service

ODA

Observer-Decide-Action

WCET

Worst-Case-Execution-Time

References

[1] 이문수 외, “이기종 디바이스를 위한 자가적응형 SW 프레임워크 기술 동향,” 한국정보산업연합회 임베디드 소프트웨어 기술 동향, 2015, pp. 3-17.
[2] IBM, “An Architectural Blueprint for Autonomic Computing,” Autonomic Computing, 2005, pp. 1-34.
[3] M. Salehie and L. Tahvildari, “Self-Adaptive Software: Landscape and Research Challenges,” ACM Trans. Autonomous Adaptive Systems, vol. 4, no. 2, May 2009, pp. 1-42.
[4] H. Hoffmann, “Self-Aware Computing in the Angstrom Processor,“ ACM/EDAC/IEEE Design Automation Con-ference (DAC), 2012, pp. 259-264.
[5] H. Hoffmann et al., “Application Heartbeats: A Generic Interface for Specifying Program Performance and Goals in Autonomous Computing Environments,“ ICAC, 2010, pp. 79-88.
[6] http://groups.csail.mit.edu/carbon/?page_id=475
[7] J.A. Colmenares et al., “Tessellation: Refactoring the OS Around Explicit Resource Containers with Continuous Adaptation,” Design Automation Conference, 2013, pp. 1-10.
[8] D.B. Bartolini et al. “Acos: An Autonomic Management Layer Enhancing Commodity Operating Systems,” In DAC Workshop on Computing in Heterogeneous, Autonomous, 2012, pp. 1-8.
[9] D.B. Bartolini et al. “The Autonomic Operating System Research Project: Achievements and Future Directions,” ACM/EDAC/IEEE Design Automation Conference (DAC), 2013, pp. 1-10.
[10] F. Sironi et al., “Self-Aware Adaptation in FPGA-Based Systems,” International Conference on Field Programmable Logic and Applications (FPL), 2010, pp. 187-192.
[11] M. Happe, E. Lübbers, and M. Platzner., “A Self-Adaptive Heterogeneous Multi-Core Architecture for Embedded Real-Time Video Object Tracking,” Journal of Real-Time Image Processing, vol. 8, no. 1, 2013, pp. 95-110.

(그림 1)

f001

자가적응형 컴퓨팅 시스템 구성

(그림 2)

f002

내부 자가적응형 소프트웨어

(그림 3)

f003

외부 자가적응형 소프트웨어

(그림 4)

f004

MIT SEEC의 ODA 피드백 루프<a href="#r004">[4]</a>

(그림 5)

f005

WCET vs SEEC의 소모전력 비교<a href="#r006">[6]</a>

(그림 6)

f006

Tessellation 피드백 루프<a href="#r007">[7]</a>

(그림 7)

f007

Autonomic OS(AcOS) 시스템 구성도

(그림 8)

f008

FPGA 기반 자가적응형 시스템<a href="#r010">[10]</a>

(그림 9)

f009

자가적응형 SW 프레임워크

(그림 10)

f010

NN기반 성능 예측기의 정확도 비교

(그림 11)

f011

가상 전력 예측 모델 선형화

(그림 12)

f012

FTP 및 스트리밍 응용 동시 실행

(그림 13)

f013

자가적응형 소프트웨어 개발 지원도구

(그림 14)

f014

소프트웨어 작성 지원기능 화면

(그림 15)

f015

성능검침 위치설정 기능 화면

(그림 16)

f016

성능확인 기능 화면