• 제목/요약/키워드: 적시 컴파일

검색결과 7건 처리시간 0.026초

내장형 자바 시스템을 위한 클라이언트 선행 컴파일 기법을 이용한 코드 캐시 확장 (Expanding Code Caches for Embedded Java Systems using Client Ahead-Of-Time Compilation)

  • 홍성현;김진철;신진우;권진우;이주환;문수묵
    • 한국정보과학회논문지:컴퓨팅의 실제 및 레터
    • /
    • 제16권8호
    • /
    • pp.868-872
    • /
    • 2010
  • 많은 내장형 자바 시스템들이 제한된 메모리를 가지고 있으므로 JITC를 위해 충분한 코드 캐시가 주어지지 않아 자바의 수행 성능이 떨어질 수 있다. 본 논문에서는 이를 극복하고자 수행 중에 코드 캐시 공간이 부족하면 일부 메소드의 머신 코드를 영구적 메모리의 파일 시스템에 저장해 두었다가 재호출 때에 다시 코드 캐시로 읽어와서 재활용하는 코드 캐시를 확장하는 수행 방식을 제안한다. 이는 기존의 클라이언트 선행 컴파일 기법을 수행 중에 코드 캐시 확장을 위해 적용한 것이다. 우리가 제안한 자바 수행 구조는 코드 캐시가 반으로 줄었을 때의 일반적인 자바 수행 방식보다 1.6배 좋은 성능을 보여주고 있다.

Itanium상의 자바 적시 컴파일러를 위한 가벼운 루프 불변 코드 이동 (Lightweight Loop Invariant Code Motion for Java Just-In-Time Compiler on Itanium)

  • 유준민;최형규;문수묵
    • 한국정보과학회논문지:소프트웨어및응용
    • /
    • 제32권3호
    • /
    • pp.215-226
    • /
    • 2005
  • 루프 불변 코드 이동(loop invariant code motion, LICM) 컴파일러 최적화는 비교적 많은 분석 작업을 필요로 하기 때문에 컴파일 시간이 수행 시간의 일부가 되는 자바 적시(Just-In-Time) 컴파일러에는 사용하기 쉽지 않다. "전통적인" LICM 기법에서는 보통 코드를 분석하여 레지스터의 정의-사용체인과 사용-정의 체인을 미리 만든 뒤 이를 바탕으로 코드 이동을 수행하는 데, 본 논문은 자바 가상 머신(Java virtual machine)이 스택 머신 (stack machine)이라서 좀 더 단순한 코드 형태를 생성한다는 특징을 이용하여 정의-사용 체인을 루프 불변 코드에 대해서만 만들고 사용-정의 체인 없이도 정확히 동작하는 알고리즘을 제시한다. 또한 기존의 방식보다 더 많은 루프 불변 코드 이동을 하게 하는 두 가지 방법을 제시한다. 우선, 간단하기 때문에 루프에 경로가 하나인 경우만 LICM을 적용하는 기존의 기법과 달리, 경로가 여러 개인 루프에서도 부분적으로 중복되는 코드에 대해서도 LICM을 안전하게 적용한다. 또한 부분적으로 중복되는 루프 불변 널(null) 포인터 체크 코드도 Itanium의 조건 수행(predication)을 이용하여 이동시키다. 제안된 기법은 Itanium 마이크로프로세서를 위한 인텔의 ORP(Open Runtime Platform) 자바 가상 머신 위의 적시 컴파일러에 구현하였다. SPECjvm98 벤치마크에 대해 실험을 수행한 결과 전체 적시 컴파일 시간을 1.3% 정도만을 증가시켰지만 전체 수행 시간을 기하 평균으로 2.2% 향상 시켰다.

안드로이드 달빅과 자바 가상머신의 성능비교 (Performance Comparison of Android Dalvik and Java Virtual Machines)

  • 이종혁;김형신
    • 한국산학기술학회논문지
    • /
    • 제12권1호
    • /
    • pp.486-492
    • /
    • 2011
  • 본 논문에서는 안드로이드에 탑재되는 가상머신인 달빅(Dalvik) 가상머신의 성능을 벤치마크를 구현하여 측정하고 기존 임베디드 자바 가상머신과의 성능을 비교한다. 달빅 가상머신의 성능 측정을 위하여 가상머신 성능 측정에 널리 사용되는 SPECJVM 벤치마크를 사용하였다. 달빅과의 성능 비교를 위하여 임베디드 자바 가상머신인 SUN Java 임베디드 버전을 비교 대상으로 선정하여 동일한 벤치마크를 사용하여 실행시간을 비교하였다. 성능 측정은 스마트폰 개발 하드웨어인 오드로이드(Odroid)에 가상머신과 벤치마크 프로그램들을 포팅하여 이루어 졌다. 또한, 달빅 가상머신의 최근 버전에서 구현되지 않은 적시(Just-In-Time) 컴파일 기능을 달빅에 추가하여 성능 개선 정도를 분석하였다. 분석 결과 안드로이드 달빅 가상머신은 SUN 가상머신 성능의 15% 수준을 보였으며, 적시 컴파일 기법을 적용한 달빅은 63% 수준에 도달함을 보였다.

줄리아 언어를 이용한 고성능 해양모델의 개발 (Development of a High Performance Ocean Model using Julia Language)

  • 권민선;김종구
    • 한국해양학회지:바다
    • /
    • 제24권2호
    • /
    • pp.187-207
    • /
    • 2019
  • 고성능 해양모델을 개발하기 위하여 적시 컴파일(Just-In-Time) 언어인 줄리아 언어를 사용하였고, 운동량 방정식의 해를 구하기 위해 연속완화법으로 푸아송 방정식을 푸는 코드를 작성하였다. 다음으로, 줄리아 계산 코드를 시험하기 위하여 두 가지의 모델을 구축하였다. 첫 번째로, 일정한 유량의 생성/소멸(source/sink) 조건을 시험하기 위해 단순한 수로 형태를 모델링하였고, 두 번째로, 조석 외력(tidal forcing) 및 전향력(Coriolis force), 난류확산계수로 인한 효과 등을 시험하기 위해 황해(Yellow Sea)를 단순화하여 모델링하였다. 모델은 두 가지 시나리오 안에서 총 8개의 실험안으로 테스트되었다. 테스트 결과, 시나리오 1에서 3가지 실험안의 수심 평균된 유속은 이론 값에 완벽하게 수렴하였고, 해저마찰로 인한 수직적 유속 구배를 잘 보여주었다. 또한 시나리오 2에서는 황해의 무조점과 우리나라 서해 중부와 남부 연안의 조석 특성을 잘 재현하였고, 전향력과 수직 난류확산계수에 따른 결과의 차이를 잘 보여주었다. 따라서, 줄리아 언어를 이용한 해양모델을 개발하는 데에 성공하였다고 판단되며, 이는 해양모델이 고전적인 컴파일 언어에서 적시 컴파일 언어로 성공적으로 넘어가는 단계에 오게 됐다는 것을 시사한다.

자바 적시 컴파일에서의 조건 수행을 이용한 비어 있는 포인터의 조기검사 (Early Null Pointer Check using Predication in Java Just-In-Time Compilation)

  • 이상규;최형규;문수묵
    • 한국정보과학회논문지:소프트웨어및응용
    • /
    • 제32권7호
    • /
    • pp.683-692
    • /
    • 2005
  • 자바에서는 어떤 객체에 접근하는 작업을 할 때마다 항상 해당 객체에 대한 레퍼런스가 널 (Null)인지 여부를 먼저 검사하도록 규정하고 있다. 자바 언어는 객체 중심 언어이기 때문에 객체 접근이 빈번하며 이러한 널 포인터 검사는 자바 프로그램의 성능을 크게 저하시킬 수 있다. 이러한 성능 저하를 줄이기 위한 방법으로 불필요하게 반복되는 널 포인터 검사를 제거하는 기법이 사용되고 있다. 즉, 적시 (Just-in-Time, JIT) 컴파일러가 사용되는 자바 수행 환경에서 코드 분석을 통해 불필요한 널 포인터 검사 코드를 제거하는 최적화를 한다. 본 논문은 JIT 컴파일러 수행 환경에서 조건 수행(predication)이라는 최근 마이크로프로세서의 특징을 이용하여, 기존의 최적화로는 제거할 수 없는 널 포인터 검사 코드를 추가로 없애는 방법을 제시한다. 일반적으로 널 포인터 검사 코드는 비교와 분기 두 명령어로 이루어져 있는데, 그 중에 비교 명령어를 객체를 사용하기 전에 수행하는 것이 아니라 객체가 정의된 직후에 미리 수행하도록 함으로써 널 포인터 검사를 위해 수행되는 총 비교 명령어 수를 줄이는 것이 이 방법의 주된 내용이다. 실험 결과 기존의 널 포인터 제거로 최적화된 코드에 비해 수행된 비교 명령어의 수는 SPECjvm98에서 평균 3.21$\%$줄었고, 생성된 비교 명령어 수는 1.98$\%$ 줄었다. 이는 인텔 IA-64 아이테니엄(Itanium) 컴퓨터에서 평균 0.32$\%$의 성능 향상을 가져왔다.