‘11년도 선도제품기술개발사업 신규과제 RFP

과제명 : 모바일기기용 Javascripting 속도향상을 위한 AOT 기반 Compiler 및 Web Runtime 플랫폼 개발

1. 개요

가. 개념 및 정의

□ 과제 추진배경

○ (스마트폰 성장) 스마트폰 보급률의 급격한 성장으로 모바일 디바이스에 탑재되어 있는 최신 버전의 브라우저를 통해 쉽게 웹 콘텐츠를 접할 수 있게 되었다. 이러한 웹 콘텐츠는 웹 브라우저가 탑재되어 있는 모든 기기에서 실행할 수 있다. 그러나 웹 언어로 만들어진 콘텐츠의 성능 문제와 디바이스 접근성의 한계로 현재까지는 단순히 정보를 보여주는 것들이 대부분이다. 현재는 모바일 환경(아이폰, 안드로이드폰, 등)에서 사용자 인터랙션의 강력한 기능을 활용하는 네이티브 애플리케이션들이 대부분을 차지하고 있다.

○ (모바일 웹 애플리케이션 기대 증가) 모바일 환경이 HTML5로의 이동과 Device API의 표준화가 진행되면서 네이티브 애플리케이션을 대체할 만한 Javascript framework, WEBGL, 디바이스 접근성을 해결하기 위한 WAC, K-WAC, W3C DAP 등을 통해서 콘텐츠의 성능 문제와 디바이스 접근성의 한계 등의 단점을 극복하고 플랫폼에 의존적이지 않고 적은 비용으로 생산이 가능한 모바일 웹 애플리케이션에 대한 기대가 증가하고 있다.

○ (Javascript 성능 향상) 모바일 웹 애플리케이션에 대한 활발한 연구가 진행되는 가운데 실제 실행 성능에 가장 직접적으로 영향을 주는 것은 Javascript의 실행 속도이다. Javascript의 성능 향상 방법으로 AOT(Ahead of Time) 기반 Javascript Optimizing Compiler와 Compiler의 결과물을 실행할 수 있는 Web Runtime을 제공하는 것이 필요하다.

※ Javascript Optimizing Compiler : Javascript Compiler는 Javascript 소스를 모바일 플랫폼에서 실행 가능한 머신 코드로 만들어 주는 프로그램이다. Javascript Optimizing Compiler는 Javascript 컴파일 과정에서 최적화의 과정을 추가하여서 실행 타임에서의 성능 향상을 목적으로 하는 프로그램이다.

□ 과제의 정의

○ 본 기술의 핵심은 AOT기반의 Javascript optimizing Compiler의 개발과 그 결과물을 실행하는 모바일 환경에서의 Web Runtime 플랫폼 개발이 목적이다.

<그림 1-1> 웹 콘텐츠를 실행하는 Javascript engine의 동작

□ 기존 방식과의 비교

○ (기존의 처리방식) Javascript engine이 아래와 같이 실행시간에 소스파일을 파싱하여 Abstract syntax tree(AST)를 생성한다. 생성된 AST 기반으로 바이트코드와 머신코드를 만들고 그 기반에서 실행을 하게 된다.

○ (본 과제의 처리방식) 소스코드와 AST를 Javascript Compiler가 콘텐츠 배포 전에 미리 실행하여 모바일 환경에 맞는 머신 코드를 생성하고 실행시간에는 생성된 머신코드를 바로 실행함으로써 Javascript engine의 로딩 속도를 향상시킨다. 아울러 Javascript의 컴파일을 실행시간에 수행하지 않고 미리 수행함으로써 기존 브라우저에서의 Javascript engine이 바이트코드와 머신코드를 생성하는 방법보다 더욱 최적화된 코드를 생성하게 하는 원리이다.

<그림 1-2> AOT(Ahead of Time) 기반 Javascript Compiler와 Web Runtime 동작

나. 연구목표 및 내용

□ 최종 목표 및 내용

○ 최종 목표

- 모바일기기용 Javascripting 속도 향상을 위한 AOT 기반 Compiler 및 Web Runtime 플랫폼 개발과 이를 적용한 모바일 융합 응용 제품

<개발 개념도>

① Javascript Optimizing Compiler 개발 → ② Packager 개발 → ③ 모바일 웹 애플리케이션 배포 서버 개발 → ④ Web Runtime 개발 → ⑤시제품개발

○ 핵심개발내용

1) Javascript Optimizing Compiler 개발

- Javascript engine에서 완전히 분리된 AOT 기반의 Javascript Optimizing Compiler 개발

- Javascript Optimizing Compiler는 code optimizer, native code optimizer를 통해서 최적화된 코드를 생성하는 기능제공.

<그림 3-1>Javascript Compiler 구조

- Compiler의 결과물은 Web Runtime에서 실행 가능한 binary code를 생성.

- Web Runtime에서 Javascript conformance 테스트 툴인 Sputnik (http://sputnik.googlelabs.com/) 를 이용하여 Javascript Compiler의 binary code를 실행할 때의 결과와 컴파일 하지 않은 Javascript 소스의 실행 결과의 차이가 10개 내외가 되어야 한다.

2) Packager 개발

- Javascript Optimizing Compiler의 결과물을 포함한 HTML, Stylesheet, Image등의 리소스를 하나의 패키지 형태로 제공하는 Packager 개발.

- 패키징은 W3C "Widget Packaging and Configuration"

(http://www.w3.org/TR/widgets/) 의 Zip Archive, Widget Packages 스펙 을 이용하여 모바일 웹 애플리케이션을 하나의 파일 형태로 제공해야 한다.

- 기반 OS는 Windows, Linux, Mac OS 중 하나 이상에서 동작해야 한다.

<그림 3-2>Packager 구조

3) 모바일 웹 애플리케이션 배포 서버 개발

- Packager를 통해서 만들어진 웹 애플리케이션을 파일을 Web Runtime이 포함된 디바이스에 배포하는 서버 개발.

- 웹 애플리케이션 배포는 HTTP 프로토콜을 이용하여 서버에서 디바이스로 전송.

<그림 3-3>모바일 웹 애플리케이션 배포 서버 구조

4) Web Runtime 개발

- 패키징된 웹 애플리케이션의 다운로드를 관리하는 기능 개발

- 패키징된 웹 애플리케이션을 언 패키징하는 기능 개발

- Javascript Optimizing Compiler에서 생성된 binary code를 실행하는 Binary loader 개발

- 웹 애플리케이션을 Web Runtime에 포함된 브라우저와 바인딩 기능 개발

- 모바일 플랫폼에 포팅이 가능한 adapter layer 개발

- 웹 애플리케이션 실행 성능 측정을 위한 프로파일러(profiler) 개발. 프로파일러는 웹 애플리케이션의 로딩, 바인딩 속도 측정 기능이 포함되어야 한다.

<그림 3-4> Web Runtime 구조

5) 시제품개발

- 개발된 Web Runtime이 탑재된 시제품 개발

- 시제품은 탑재된 Web Runtime의 성능 검증을 위해서 프로파일러의 결과를 확인할 수 있는 UI와 샘플 애플리케이션을 포함해야 한다.

○ 성능목표

1) 속도 향상 측면의 성능 목표

- Web Runtime에서의 로딩, 바인딩 속도 향상

시제품 기반의 Web Runtime에서 동일한 Javascript 소스를 컴파일된 binary code와 컴파일 되지 않은 Javascript 소스의 파싱 시간, 바인딩 시간을 비교하여서 10%이상의 속도 향상을 목표로 한다.

- Web Runtime에서의 실행 시간의 속도 향상

시제품 기반에서 컴파일된 binary code와 컴파일 되지 않은 Javascript 소스의 Web Runtime 실행 속도를 Spidermonkey benchmark 프로그램 결과 시간 비교 시 최소 10%이상의 속도향상 목표로 한다.

2) Javascript conformance 대한 성능 목표

- Sputnik(sputnik.googlelabs.com) Javascript conformance 툴을 이용하여서 시제품 기반에서 Javascript 소스의 실행과 컴파일된 binary code의 실행 측정치가 전체 성공/실패 항목에서 10개 내외에서의 차이를 목표로 한다.

○ 확보기술 내용

1) 자체개발 기술

- Interpreted language에 대한 AOT 방식의 Compiler 기술

- Javascript의 대한 모바일 CPU에 대한 최적화 기술

- W3C표준에 적합한 웹 애플리케이션 패키징 기술

- 모바일 웹 애플리케이션 배포 서버 기술

- 다양한 모바일 플랫폼에 포팅 가능한 adapter layer에 대한 기술

2) 기존기술 활용

- open-source 브라우저 기술

- open-source Javascript engine 기술

- zip 압축 알고리즘

□ 연도별 목표 및 내용

< 추진 마일스톤 >

구분		2011년	2012년
연도별 연구목표		◦AOT 기반 Javascript Compiler prototype 개발 ◦웹 애플리케이션 Packager prototype 개발 ◦모바일 Web Runtime Platform prototype 개발 및 모바일 device 포팅 ◦패키징된 웹 애플리케이션 배포 서버 설계	◦AOT 기반 Javascript Compiler 최적화 및 상용화 검증 ◦웹 애플리케이션 Packager 최적화 및 상용화 검증 ◦패키징된 웹 애플리케이션 배포 서버 개발 및 상용화 검증 ◦모바일 Web Runtime Platform 개발 및 상용화 검증
연도별 연구 내용	(공통작업)	◦분석 설계 산출물 ◦구현 산출물 (요구사항 정의서 작성 등)
	① AOT 기반 Javascript Compiler	◦Javascript Compiler 알고리즘 분석 ◦Javascript Compiler 결과물 파일 포맷 설계 ◦최적화 알고리즘 설계 ◦Javascript Compiler 설계서 작성 ◦생성 파일 포맷 규격서 작성 ◦Compiler prototype 개발	◦AST code generator 최적화 ◦native code 최적화 ◦생성 파일 포맷 검증 ◦성능 평가 시험서 작성
	② 모바일 웹 애플리케이션 Packager	◦W3C Widget Packaging and Configuration 표준 분석 ◦Packagerprototype 개발	◦패키징 최적화 ◦Web Runtime Platform과 연동 검증 ◦웹 애플리케이션 Packager installer 설계 및 구현
	③ 모바일 웹 애플리케이션 배포 서버	◦요구사항 정의서 작성 ◦설계서 작성	◦웹 애플리케이션 배포 서버 구현 ◦Web Runtime Platform 연동 검증
	④ 모바일 웹 Runtime Platform	◦Web Runtime기반 시스템이 되는 open-source Browser 분석 ◦Web Runtime기반 시스템이 되는 open-source Javascript 분석 ◦Zip 압축 라이브러리 interface 분석 ◦모바일 디바이스 타깃 분석 ◦요구사항 정의서 작성 ◦설계서 작성 ◦download manager 설계 ◦un-packaging 개발 ◦Binary loader 개발 ◦성능 측정 프로파일러 개발 ◦전체 시스템을 통합한 Web Runtime Platform prototype 개발 ◦HTML5 관련기능 개발	◦unpackaging 최적화 ◦Binary loader 최적화 ◦download manager 구현 ◦성능 측정 프로파일러 검증 ◦Web Runtime을 모바일 디바이스에 탑재 ◦성능 평가 시험서 작성
	⑤ 시제품 개발	◦Compiler 및 Web Runtime 플랫폼 성능 평가를 위한 샘플 애플리케이션	◦Target, Reference 상용 device개발
연도별 주요결과물		◦분석․설계․구현 산출물 ◦포맷 규격서 :1건 ◦S/W prototype :3건 ◦샘플 애플리케이션	◦성능 평가 시험서 :2건 ◦S/W 제품 :4건 ◦Target, Reference 상용 device
TRL		4~5단계	6~8단계

다. 추진체계

□ 주관기관 : 산업체

□ 참여기관 : 제한없음(산업체 1개 업체 이상 참여 필수)

라. 연구기간 및 연구비

□ 연구기간 : 2011년 ~ 2012년 (2년간)

□ 연구비

(단위: 억원)

구분	2011년	2012년	총액
정부*	5	5	10
민간	1.7	1.7	3.4
계	6.7	6.7	13.4

* 정부 연구비는 정부출연금(국비)과 지방비를 포함한 금액으로 상기 금액 내에서 지원

* 민간 연구비는 공고 내용의 정부 연구비 지원 비율에 따라 달리할 수 있음