• 제목/요약/키워드: 정적 단일 배정 형태

검색결과 11건 처리시간 0.022초

정적 단일 배정 형태를 위한 정적 타입 배정에 관한 연구 (A Study on Static Type Assignment for Static Single Assignment Form)

  • 김기태;유원희
    • 한국콘텐츠학회논문지
    • /
    • 제6권2호
    • /
    • pp.117-126
    • /
    • 2006
  • 자바 바이트코드는 많은 장점을 갖지만 수행 속도가 느리고 분석이 어렵다는 단점을 갖는다 이를 극복하기 위해 바이트코드에 대한 분석과 최적화가 수행되어야 한다. 우선 바이트코드에 대한 제어 흐름 분석을 수행한다. 제어 흐름 분석 후 데이터 흐름 분석과 최적화를 위해서 변수가 어디서 정의되고 어디서 사용되는지에 대한 정보가 필요하다. 각 위치에서 변수에 배정되는 값에 따라 동일한 이름의 변수가 다른 위치에서 다른 값을 가지는 경우가 발생한다. 따라서 정적으로 값과 타입을 결정하기 위해서 변수는 배정되는 것에 따라 분리되어야 한다. 이를 위해 단일 배정 형태를 이용하여 표현할 수 있다. 정적 단일 배정형태(SSA Form)로 변경한 후 정적 분석과 최적화를 위해서는 각 변수와 표현식이 나타내는 각각의 노드에 타입 정보를 설정해야 한다. 본 논문은 타입에 대한 기본 정보를 바탕으로 관련된 동등한 노드를 발견하고 강 결합 요소로 설정한 후 각 노드에 타입을 효율적으로 설정하는 방법을 제안한다

  • PDF

바이트코드 분석을 위한 중간코드에 관한 연구 (A Study on Informediated code for Analyzing Bytecodes)

  • 김경수;유원희
    • 한국컴퓨터정보학회논문지
    • /
    • 제11권1호
    • /
    • pp.107-117
    • /
    • 2006
  • 자바 언어는 객체지향 언어이며 다양한 개발 환경과 이식성에 맞는 언어로써 각광을 받고 있다. 하지만 자바 언어는 실행속도가 느리다는 단점을 가지고 있다. 이러한 이유는 자바 프로그래밍 환경에서 자바 가상 기계 코드인 바이트코드가 인터프리터 방식으로 사용되기 때문이다. 따라서 프로그램의 수행에는 실행속도가 현저히 저하되는 단점이 발생하게 된다. 또한 자바 언어는 컴파일러를 통해 생성된 클래스 파일에 프로그램의 수행과 관련된 정보가 숨겨져 있다. 클래스 파일의 분석으로 바이트코드를 위한 효율적인 분석 및 최적화를 할 수 있다. 본 논문에서는 자바 클래스 파일의 정보들을 이용해 자바 바이트코드 분석을 하려한다. 분석을 위해 정적 단일 배정문 형태로 변환하게 되는데 정적 단일 배정문 형태는 정의-사용체인에서 변형된 형태이다. 정적 단일 배정문 형태는 각각의 타입들을 오직 한번만 배정하고 재명명함으로써 프로그램을 정적으로 분석 할 수 있게 한다. 정적 단일 배정문 형태는 최적화와 분석을 위한 효과적인 중간 코드이다.

  • PDF

CTOC에서 정적 단일 배정문 형태를 이용한 지역 변수 분리 (Split Local Variables Using Static Single Assignment Form in CTOC)

  • 이갑래;유원희;김기태
    • 한국콘텐츠학회논문지
    • /
    • 제5권3호
    • /
    • pp.73-81
    • /
    • 2005
  • CTOC(Classes To Optimized Classes)는 자바 바이트코드의 최적화와 분석을 위해 현재 개발 중인 프레임워크이다. CTOC는 스택 기반인 바이트코드를 최적화와 분석을 쉽게 하기 위해 3-주소 형태로 변환한다. 바이트코드가 타입에 관한 정보를 포함하지만 스택 기반의 동작을 수행하기 때문에 지역 변수를 위한 명시적인 타입을 갖지 못하는 경우가 발생한다. 따라서 바이트코드에서 3-주소 형태로 변환하는 과정에 사용되는 모든 변수는 정적 타입을 가져야 하는 문제점이 발생한다. 왜냐하면, 프로그램의 최적화나 분석을 위해서는 지역 변수의 타입을 알아야 하기 때문이다. 본 논문은 CTOC 프레임워크의 전반부로 바이트코드를 스택을 사용하지 않는 3-주소 형태로 변환하는 과정을 수행한다. 이 과정에서 스택 코드 형태인 CTOC-B 코드를 생성하고, 제어 흐름 그래프를 생성하여 바이트코드 수준에서 분석을 수행한다. 또한 정적 타입을 제공하기 위한 중간 과정으로 타입을 갖지 않는 CTOC-T 코드를 생성한다. 이를 위해 정적 단일 배정문 형태(Static Single Assignment Form)를 사용하여 모든 변수를 분리하고 각 변수에 새로운 이름으로 재명명하는 동작을 수행한다. 분리된 변수들은 추후 정적 타입 추론을 위한 준비 단계로 사용된다.

  • PDF

대소관계 그래프를 이용한 Just-in-Time 컴파일 환경에서의 배열 경계 검사 제거 (Array Bounds Check Elimination using Ineguality Graph in Java Just-in-Time Compiler)

  • 최선일;문수묵
    • 한국정보과학회논문지:소프트웨어및응용
    • /
    • 제32권12호
    • /
    • pp.1283-1291
    • /
    • 2005
  • Just-in-Time 컴파일러를 이용하여 자바의 성능을 향상시키려면 여러 문제들을 극복하여야 한다. 이 문제 중 중요한 부분을 차지하는 것이 배열경계 검사(Array bounds check) 명령어를 어떻게 최적화하느냐는 것이다 정적인 컴파일 환경의 경우에는 이미 많은 연구가 진행되어 매우 강력한 성능을 가지는 알고리즘이 알려져 있으나 컴파일 시간이 수행시간의 일부인 Just-in-Time 컴파일 환경에 이를 적용하기에는 컴파일에 시간을 너무 많이들이는 결과를 낳아 적절하지 않다. 현재 Just-in-Time 컴파일러들은 가볍고 단순한 반면에 중복된 배열 경계 검사를 찾아내는 능력이 다소 부족한 알고리즘을 사용하거나 아니면 강력하지만 정적 단일 배정(Static Single Assignment) 형태로 명령어 표현 방식을 변환해 주어야만 하는 알고리즘을 사용하고 있다. 정적 단일 배정 형태로의 변환 및 되돌림은 가볍고 빠른 컴파일러를 지향하는 Just-in-Time 컴파일러에 부합되지 않는다. 본 논문은 변수 간의 대소관계를 표현하는 그래프를 배열 경계 검사 알고리즘에 적용하는 것을 통해 충분한 성능을 내면서도 정적 단일 배정 형태로의 변환을 필요로 하지 않는 알고리즘을 제안한다. Java에서의 모든 최적화는 Java 언어 명세에서 강제하고 있는 정확한 예외 처리(precise exception) 규칙을 따라야 한다. 명령어의 위치를 바꿈으로써 성능 향상을 꾀하는 최적화의 경우 이것으로 인해 많은 제약을 받게 되는데, 배열 경계 검사 최적화(Array bounds check elimination optimization) 또한 이 규칙에 의해 많은 최적화 기회를 잃는다. 우리는 이 제약을 극복하여 배열 경계 검사최적화의 적용 범위를 넓힐 수 있는 새로운 방법도 아울러 제안하고자 한다.

CTOC에서 자바 바이트코드를 위한 정적 단일 배정 형태 (Static Single Assignment Form for Java Bytecodes in CTOC)

  • 김기태;유원희
    • 정보처리학회논문지D
    • /
    • 제13D권7호
    • /
    • pp.939-946
    • /
    • 2006
  • 자바 바이트코드는 많은 장점을 갖지만 수행 속도가 느리고 분석이 어렵다는 단점을 갖는다. 이를 극복하기 위해 바이트코드에 대한 분석과 최적화가 수행되어야 한다. 최적화된 코드를 위해 CTOC를 구현하였다. 바이트코드에 대해 분석과 최적화를 수행하기 위해서는 우선 CFG를 생성해야 한다. 바이트코드의 특성 때문에 기존의 제어 흐름 분석 기술을 바이트코드에 적합하게 확장해야 한다. 또한 정적으로 분석하기 위해 CFG를 SSA Form으로 변환한다. SSA Form으로 변환하기 위해서는 지배 관계, 지배자 트리, 직접 지배자, $\phi$-함수, 재명명, 지배자 경계 등 많은 정보에 대한 계산을 수행한다. 본 논문은 기존의 CFG로부터 SSA Form으로 변환을 위해 알고리즘과 변환 과정을 기술한다. SSA Form이 적용된 그래프는 추후에 타입 추론과 최적화를 위해 사용된다.

SSA Form에서 부분 중복 제거를 이용한 최적화 (Optimization Using Partial Redundancy Elimination in SSA Form)

  • 김기태;유원희
    • 정보처리학회논문지D
    • /
    • 제14D권2호
    • /
    • pp.217-224
    • /
    • 2007
  • CTOC에서는 정적으로 값과 타입을 결정하기 위해 변수를 배정에 따라 분리하는 SSA Form을 사용한다. SSA Form은 최근 데이터 흐름분석과 코드 최적화를 위해 컴파일러의 중간 표현으로 많이 사용되고 있다. 하지만 기존의 SSA Form은 표현적보다는 주로 변수에 관련된 것이다. 따라서 SSA Form 형태의 표현식에 대해 최적화를 적용하기 위해 중복된 표현식을 제거한다. 본 논문에서는 좀더 최적화된 코드를 얻기 위해 부분 중복 표현식을 정의하고, 부분 중복 표현식을 제거하는 방법을 구현한다.

CTOC에서 죽은 코드 제거 구현 (Implementation of Dead Code Elimination in CTOC)

  • 김기태;김제민;유원희
    • 한국컴퓨터정보학회논문지
    • /
    • 제12권2호
    • /
    • pp.1-8
    • /
    • 2007
  • 자바 바이트코드가 많은 장점을 갖지만, 수행 속도가 느리고 분석하기 어렵다는 단점이 존재한다. 따라서 자바 클래스 파일이 네트워크와 같은 실행 환경에서 효과적으로 실행되기 위해서는 최적화된 코드로 변환이 요구된다. 최적화된 코드로 변환하기 위해 CTOC를 구현하였다. 정적으로 값과 타입을 결정하기 위해 CTOC는 변수를 배정에 따라 분리하는 SSA Form을 사용하였다. 또한 문장의 표현을 위해 트리 구조를 사용하였다. 하지만 SSA Form 변환 과정에서 $\phi$-함수의 삽입에 의해 오히려 노드의 수가 증가하게 되었다. 본 논문은 SSA Form에서 더욱 최적화된 코드를 얻기 위해 죽은 코드를 제거하는 과정을 보인다. 각 노드에 대해 새로운 live 필드를 추가하고 트리 구조에서 죽은 코드 제거 과정을 수행한다. 실험 결과를 통해 죽은 코드 제거 후 상당한 노드의 수가 줄어든 것을 확인할 수 있다.

  • PDF

CTOC에서 루프 트리 구성하기 (Constructing A Loop Tree in CTOC)

  • 김기태;김제민;유원희
    • 정보처리학회논문지D
    • /
    • 제15D권2호
    • /
    • pp.197-206
    • /
    • 2008
  • 최근 많이 사용되고 있는 자바 바이트코드의 분석과 최적화를 효율적으로 수행하기 위해 CTOC 프레임워크가 구현되었다. CTOC에서는 바이트코드에 대해 분석과 최적화를 수행하기 위해 가장 먼저 eCFG를 생성하였다. 분석하기 어렵다는 바이트코드의 특성 때문에 기존의 바이트 코드를 제어 흐름 분석에 적합하게 확장하여 제어 흐름 그래프를 작성하였다. 이를 확장된 제어 흐름 그래프인 eCFG라 부른다. 또한 정적으로 분석하기 위해 eCFG를 SSA Form으로 변환 하였다. 변환 시 많은 프로그램에서 루프가 발견되었다. 이전 CTOC에서는 루프에 대한 처리를 수행하지 않은 상태에서 직접 SSA Form으로 변환을 수행하였다. 하지만 SSA Form으로 변환하기 이전에 루프에 대한 부분을 처리하면 더욱 효율적인 SSA Form을 생성할 수 있게 된다. 본 논문은 루프에 대한 처리를 효율적으로 하기 위해 eCFG를 SSA Form으로 변환하는 과정 이전에 루프를 발견하고 이와 관련된 루프 트리를 생성하는 과정을 보인다.

CTOC에서 루프 벗기기 구현 (Implementation of Loop Peeling in CTOC)

  • 김기태;김제민;유원희
    • 한국컴퓨터정보학회논문지
    • /
    • 제13권5호
    • /
    • pp.27-35
    • /
    • 2008
  • 최근 웹 어플리케이션 분야에서 많이 사용되고 있는 자바 바이트코드의 분석과 최적화 과정을 효율적으로 수행하기 위해 CTOC 프레임워크를 개발하였다. CTOC는 바이트코드에 대해 분석과 최적화를 수행하기 위해 E-Tree를 중간 표현으로 사용하는 eCFG를 생성한다. eCFG는 바이트코드에 대한 제어 흐름 분석에 적합하도록 확장한 제어 흐름 그래프이다. 또한, 바이트코드를 정적으로 분석하기 위해 E-Tree를 SSA Form으로 변환한다. 이러한 변환과정 중 프로그램의 많은 부분에서 루프가 발견된다. 하지만 기존의 CTOC에서는 루프에 대한 처리를 수행하지 않은 상태에서 직접 SSA Form으로 변환을 수행하였다. 하지만 SSA Form으로 변환 이전에 루프를 처리하면 더욱 효율적인 SSA Form을 생성할 수 있게 된다. 따라서 본 논문에서는 루프에 대한 처리를 효율적으로 하기 위해 E-Tree를 SSA Form으로 변환하는 과정 이전에 eCFG에서 루프를 발견하고 이와 관련된 루프 트리를 생성한 후 루프 벗기기를 수행하는 과정을 보인다.

  • PDF

CTOC에서 복사 전파 (Copy Propagation in CTOC)

  • 김기태;김제민;유원희
    • 한국컴퓨터정보학회논문지
    • /
    • 제12권1호
    • /
    • pp.1-8
    • /
    • 2007
  • 자바 바이트코드는 다양한 장점을 갖지만. 실행속도가 느리고 분석이 어렵다는 단점이 존재한다. 따라서 네트워크와 같은 실행환경에서 효과적으로 실행되기 위해서는 최적화된 코드로 변환이 요구된다. 최적화된 코드로 변환하기 위해 CTOC가 구현되었다. CTOC는 기존의 바이트코드를 이용해서 CFG를 생성한 후 분석과 최적화를 위해 SSA Form을 생성하였다. 하지만 SSA Form으로 변환하는 과정에서 ${\phi}$-함수의 삽입으로 인해 노드의 개수가 늘어나는 현상이 발생하였다. 노드의 개수를 줄이기 위한 한 가지 방법으로 SSA Form에서 적용 가능한 최적화인 복사 전파를 수행하였다. 복사 전파란 하나의 변수 값이 다른 변수의 값으로 복사하는 과정이다. 복사 전파에 의한 변환은 변환 자체로는 큰 효과를 나타내지 못하는 경우가 존재하지만 이후 최적화 과정에서 변수가 사용되지 않는 경우 해당 변수에 대한 복사식을 제거할 수 있는 가능성을 제공하기 때문에 중요한 과정이다. 본 논문은 SSA Form에서 좀 더 최적화된 코드를 얻기 위한 복사 전파 수행을 보인다.

  • PDF