2014년 2월 21일 금요일

[제 14회 한국 자바 개발자 컨퍼런스] 차세대 컴파일러 LLVM

김정 NHN NEXT

차세대 컴파일러 VM의 미래

Mac OS X 이야기...

자바를 만들때 Objective-C 가 많은 영향을 줬다.

Google 과 Apple 이 아직 합작하고 있는 프로젝트가 LLVM이다.

그럼 LLVM 은 무엇인고??

Start...
 - JVM 때문에 시작을 했다. JIT Time에서 도는 것이 Application launch 가 너무 느렸다.

 - low level virtual machine 에서 만들어봐야겠다 라고 해서 LLVM이 되었다.

Introduction
 - 드래곤북으로 시작햇다..찾아라 드래곤볼..젠장..

  - 그래서 로고도 드래곤이다.

  - 컴파일러를 다시 만들기로 하며 시작한다.
  - 2010년도 부터 Apple의 스폰서를 받는다.

Authors

   - Vikram Adve
   - Chris Lattner

Version
   - 현재 Version 은 2014.1 에 나온 3.4 Version

LLVM 아키텍처

   - 기존 JVM과 동일하게 LLVM JIT 위에서 Application 이 동작한다.


중점을 두는 것 : 컴파일러지만 Optimization 옵션을 다양화 하는 것

                         객체를 자동으로 관리하자.(ARC) .

                         조만간 C++ , C 까지 자동으로 객체관리를 할 예정

libC++

- 필요해서 자신들이 만들고 오픈소스로 풀었다.

DragonEgg
-  gcc plugin으로 llvm-gcc 를 넣는 프로젝트

LLDB

- GDB 대체 용도
- GDB와 달라진 점은 Process 단위에서 Thread 단위

LLVM 활용 사례

- 컴파일러 작업시 많이 사용함. - 연구용
- OpenCL에서 사용함.(GPU , CPU 분리용)
- OpenGL에서 사용함.
- Optimization 에서 많이 씀 - (사례: adobe )
- Cross Language - (사례 : Google)
   - Emscripten
      - 파이썬이나 다른 언어로 썼던 것을 Java Script 로 바꿔 웹상으로 끌어올 수가 있다
      - 모든 소스를 LLVM ByteCode 로 바꿔 배포하면 어떤 웹상에서든 돌아가게 할 수 있다

언어 개발이 플랫폼에 영향을 받지 않게 끔 되었다. LLVM 은 그 사이에서
동작하는 것이다.

===================================================

1. JIT 컴파일러를 C-Base 로 만든 첫번째 사례

2. C++11 표준을 제일 먼저 지원했다.

3. ACM Software System Award 2012

===================================================

3.0 이후로는 많이 안정이 되었다.

아직까지 Windows 는 지원을 잘 못한다.

gcc에도 많은 영향을 주고 있어 gcc 도 많이 좋아지고 있다.

완성도는 계속 높아지고 있고 진화 중이다.

새 컴파일러를 만들 때는 아주 좋다.

mobile 에서는 많이 사용하고 있다.

VM 으로의 장점도 많이 갖고 있어서 HW 애뮬레이션 만들때도 도움이 된다.

다른 언어와의 혼합이 가능하게 도와주고 있다.
(프론트 언어와 백앤드 언어가 섞일 수 있는 시대가 도래하고...있는건가..)

GPU와 CPU 에 대한 분할을 컴파일러가 해주니 사용이 원활해 질것이다.
(GPU 100% 쓸 수 있는거지...)

댓글 없음:

댓글 쓰기