KR20060035077A - 데이터 처리 장치 및 이를 이용한 레지스터 할당 방법 - Google Patents

데이터 처리 장치 및 이를 이용한 레지스터 할당 방법 Download PDF

Info

Publication number
KR20060035077A
KR20060035077A KR1020040084406A KR20040084406A KR20060035077A KR 20060035077 A KR20060035077 A KR 20060035077A KR 1020040084406 A KR1020040084406 A KR 1020040084406A KR 20040084406 A KR20040084406 A KR 20040084406A KR 20060035077 A KR20060035077 A KR 20060035077A
Authority
KR
South Korea
Prior art keywords
code
register
data processing
machine
compiler
Prior art date
Application number
KR1020040084406A
Other languages
English (en)
Other versions
KR100597414B1 (ko
Inventor
이상규
박종목
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020040084406A priority Critical patent/KR100597414B1/ko
Priority to US11/253,684 priority patent/US8056061B2/en
Publication of KR20060035077A publication Critical patent/KR20060035077A/ko
Application granted granted Critical
Publication of KR100597414B1 publication Critical patent/KR100597414B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/43Checking; Contextual analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation

Abstract

본 발명은 데이터 처리 장치 및 방법에 관한 것으로서, 더욱 상세하게는 컴파일 시간을 최소화시킬 수 있는 데이터 처리 장치 및 이를 이용한 레지스터 할당 방법에 관한 것이다.
본 발명의 실시예에 따른 데이터 처리 장치는 기계어 코드로 생성하려는 원 코드를 저장하는 코드 저장부와, 상기 저장된 원 코드를 분석하는 코드 분석부와, 상기 분석 결과 상기 원 코드에 포함된 각 명령어들에게 사전 지정된 레지스터를 할당하는 레지스터 할당부와, 상기 할당된 레지스터를 이용하여 생성된 기계어 코드를 실행하는 코드 실행부를 포함한다.
가상 머신, 바이트 코드, 오퍼랜드 스택, 레지스터

Description

데이터 처리 장치 및 이를 이용한 레지스터 할당 방법{Data processing device and register allocation method using data processing device}
도 1은 일반적인 가상 머신의 구성이 도시된 도면.
도 2는 종래의 기술에 따른 레지스터 할당 방법이 도시된 도면.
도 3은 본 발명의 실시예에 따른 데이터 처리 장치가 도시된 도면.
도 4는 본 발명의 실시예에 따른 데이터 처리 장치를 이용한 레지스터 할당 방법이 도시된 도면.
도 5은 본 발명의 실시예에 따른 데이터 처리 장치를 이용한 레지스터 할당 방법을 통한 연산 과정이 도시된 도면.
<도면의 주요 부분에 관한 부호의 설명>
110: 코드 저장부 120: 코드 분석부
130: 레지스터 할당부 140: 코드 생성부
본 발명은 데이터 처리 장치 및 이를 이용한 레지스터 할당 방법에 관한 것으로서, 더욱 상세하게는 컴파일 시간을 최소화시킬 수 있는 데이터 처리 장치 및 이를 이용한 레지스터 할당 방법에 관한 것이다.
최근의 컴퓨터 분야의 용례에서, 가상 머신(Virtual Machine)은 자바 언어 및 그 실행 환경의 개발자인 썬 마이크로시스템즈에 의해 사용된 용어이며, 컴파일된 자바 바이너리 코드와 실제로 프로그램의 명령어를 실행하는 마이크 로프로세서(또는 하드웨어 플랫폼) 간에 인터페이스 역할을 담당하는 소프트 웨어를 가리킨다. 자바 가상 머신(Java Virtual Machine)이 일단 한 플랫폼에 제공되면, 바이트 코드라고 불리는 어떠한 자바 프로그램도 그 플랫폼에서 실행될 수 있다. 자바는 응용프로그램들이 각각의 플랫폼에 맞게 재작성 되거나, 다시 컴파일하지 않아도 모든 플랫폼에서 실행되는 것을 허용하도록 설계되었다.
자바 프로그래밍 언어(Java programming language)는 1990년 대 중반에 발표된 이후 급속히 전파되어 왔으나, C나 C++와 같은 언어로 작성된 코드에 비하여 속도가 느리다는 단점이 있다. 이러한 단점을 극복하기 위하여 기존의 인터프리터(interpreter) 방식의 자바 가상 머신에 JIT(Just in time) 컴파일러(compiler)와 같은 동적 코드 생성 기법 또는 AOT(Ahead of time) 컴파일러와 같은 정적인 코드 생성 기법이 고안되었다.
자바 플랫폼은 주로 자바 가상 머신과 클래스(class)들로 구성된다. 클래스 파일들은 클래스의 자료구조에 관한 정보와 필드와 메소드(Method) 정보 등으로 구성되는데, 그 중 메소드의 실행 코드는 하드웨어 또는 운영체제(Operating System)에 독립적인 바이트 코드(byte code)로 되어있다.
이러한 자바 가상 머신은 도 1에 도시된 바와 같이, 일반적으로 메모리, 쓰 레드 및 네트워크 등 수행시 필요한 리소스들을 하위 레이어인 운영 체제 레이어(Operating System Layer)(20) 및 하드웨어 레이어(Hardware Layer)(30)와 인터페이스를 이용하여 관리하는 자바 가상 머신 런타임(Java Virtual machine Runtime)(10), 자바로 작성된 프로그램 모듈에 해당하는 클래스를 자바 가상 머신이 수행 가능한 형태로 변형하여 메모리에 적재하는 클래스 로더(Class Loader)(40), 자바 클래스의 수행 코드를 실행하는 실행 엔진(Execution Engine)(50) 및 어플리케이션 수행 중 사용되는 메모리 중 필요없는 메모리를 재사용할 수 있도록 수집하여 자바 가상 머신 런타임(30)에 돌려주는 가비지 수집기(Garbage Collector)(60)로 이루어진다.
또한, 자바 가상 머신을 전술한 실행 엔진을 기준으로 분류하면, 인터프리팅(interpreting) 방식의 자바 가상 머신과 JIT 컴파일 방식의 자바 가상 머신, 인터프리팅과 JIT 컴파일을 모두 사용하는 방식의 자바 가상 머신, 또는 AOT 컴파일 방식의 자바 가상 머신 등으로 분류된다.
인터프리팅 방식의 자바 가상 머신은 수행해야 할 메소드의 바이트 코드(byte code)를 하나씩 해석하여 어플리케이션을 수행한다.
JIT 컴파일러는 바이트 코드를 컴파일하여 현재의 자바 플랫폼에 종속적인 기계어 코드를 얻은 후 상기 기계어 코드를 실행함으로써 어플리케이션을 실행한다.
AOT 컴파일러는 JIT 컴파일러가 인터프리팅 방식에 비하여 좋은 성능을 보여주지만 메소드 수행 시점에서 컴파일이 이루어지게 되어 컴파일 시간이 어플리케이 션 실행 시간에 포함되기 때문에 실행 시간 이전에 미리 컴파일하는 방식이다.
이와 같은 컴파일러들을 이용하여 바이트 코드를 기계어 코드로 생성하는 방법은 도 2와 같다.
도시된 바와 같이, 컴파일러는 바이트 코드를 분석하여 기계어 코드를 생성할 때 필요한 데이터를 수집한다(S10).
이때, 기계어 코드를 생성할 때 필요한 데이터로는, 바이트 코드를 분석하여 얻게 되는 명령어의 종류 및 각 명령어에 대한 사용 빈도 등이 포함된다.
컴파일러는 수집된 데이터를 통해 각 명령어에 소정의 레지스터를 할당한다(S20). 레지스터 할당이 완료되면, 컴파일러는 기계어 코드를 생성한다(S30).
이후, 생성된 기계어 코드는 소정의 메모리에 기록된 다음, 기록된 기계어 코드가 실행된다(S40).
상기한 바와 같이 컴파일러가 기계어 코드를 생성하는 경우, 프로세서내의 가장 빠르며 연산이 이루어지는 레지스터가 어떻게 할당되느냐에 따라 컴파일 성능에 큰 영향을 미치게 된다.
구체적으로, 레지스터는 명령어의 종류에 따라 국부적 레지스터 할당 및 전역 레지스터 할당을 통해 이루어지게 된다.
우선, 국부적 레지스터 할당은, 기본 블록을 단위로 하는 레지스터 할당 기법이고, 전역 레지스터 할당은, 메소드를 단위로 하는 레지스터 할당 기법이다.
그러나, 전술한 국부적 레지스터 할당 및 전역 레지스터 할당 기법은 기본 블록 및 메소드 단위로 레지스터가 할당되는데, 이러한 기본 블록 및 메소드의 처 음에는 레지스터로 로드하는 명령이 들어가야하고, 마지막에는 메모리로 옮기는 명령어가 들어가야 하기 때문에 레지스터 할당 단위인 기본 블록 및 메소드를 넘어서는 스택 슬롯에 대해서는 성능 저하를 야기시키는 문제점이 있다.
본 발명은 기계어 코드 생성시 사용되는 컴파일 과정에서 레지스터 할당 과정을 생략하여 컴파일에 소요되는 시간을 최소화할 수 있는 데이터 처리 장치 및 방법을 제공하는데 그 목적이 있다.
본 발명의 목적은 이상에서 언급한 목적들로 제한되지 않으며, 언급되지 않은 또 다른 목적들은 아래의 기재로부터 당업자에게 명확하게 이해되어 질 수 있을 것이다.
상기 목적을 달성하기 위하여, 본 발명의 실시예에 따른 데이터 처리 장치는, 기계어 코드로 생성하려는 원 코드를 저장하는 코드 저장부와, 상기 저장된 원 코드를 분석하는 코드 분석부와, 상기 분석 결과 상기 원 코드에 포함된 각 명령어들에게 사전 지정된 레지스터를 할당하는 레지스터 할당부와, 상기 할당된 레지스터를 이용하여 생성된 기계어 코드를 실행하는 코드 실행부를 포함한다.
또한, 상기 목적을 달성하기 위하여, 본 발명의 실시예에 따른 데이터 처리 방법은, 기계어 코드로 생성하려는 원 코드를 분석하는 단계와, 상기 분석 결과 상기 원 코드에 포함된 각 명령어들에게 사전 지정된 레지스터를 할당하는 단계와, 상기 할당된 레지스터를 이용하여 생성된 기계어 코드를 실행하는 단계를 포함한 다.
기타 실시예들의 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하고, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범수를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.
이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시예를 상세히 설명하기로 한다.
도 3은 본 발명의 실시예에 따른 데이터 처리 장치를 도시하고 있다.
도시된 바와 같이, 본 발명의 실시예에 따른 데이터 처리 장치(100)는 기계어 코드로 생성하려는 원 코드를 저장하는 코드 저장부(110)와, 저장된 원 코드를 분석하는 코드 분석부(120)와, 분석되는 변수별로 소정의 레지스터를 할당하는 레지스터 할당부(130)와, 할당된 레지스터를 이용하여 생성된 기계어 코드를 실행하는 코드 실행부(140)를 포함할 수 있다.
본 발명의 실시예에서, 기계어 코드로 생성될 원 코드는 자바 프로그램이 자바 가상 머신에 의해 컴파일된 바이트 코드인 경우를 예를 들어 설명한다. 또한, 바이트 코드는 기존의 컴파일러 중 JIT 컴파일러에 의해 기계어 코드로 생성되는 경우를 예를 들어 설명하고 있으나, 이에 한정되지 않고 인터프리팅 방식의 컴파일러나 AOT 컴파일러 등에도 적용될 수 있다.
이때, 자바 가상 머신은 스택 머신(Stack Machine)으로써, 연산이 이루어지는 공간은 오퍼랜드 스택(Operand Stack)이라는 스택의 제일 상위 공간이며, 오퍼랜드 스택의 각 슬롯은 스택 슬롯이라 칭하여진다. 자바 가상 머신은 실행하고자 하는 연산의 피연산자들을 오퍼랜드 스택에 쌓은 후에 오퍼랜드 스택으로부터 피연산자를 추출하여 연산을 실행하며, 그 결과는 오퍼랜드 스택의 제일 상위 스택 슬롯에 적재된다.
한편, 전술한 자바 컴파일러는 자바 가상 머신에 의해 생성된 바이트 코드를 실행하기 위해 오퍼랜드 스택에 적재된 피연산자들에게 마이크로 프로세서의 내부에 존재하는 레지스터를 할당하게 된다.
피연산자에게 할당되는 레지스터는, 일반적으로 레지스터 할당을 위해 분석하는 바이트 코드의 단위를 기준으로 크게 두 가지로 나뉘어질 수 있다.
우선, 바이트 코드가 기본 블록 단위로 분석될 경우, 연속된 명령어들의 묶음단위로 분석하는 것으로써, 첫 명령어가 수행되면 마지막 명령어까지 모두 수행된다. 이때, 전술한 묶음에 포함된 명령어들이 모두 수행되기 전까지 다른 곳으로 분기되는 명령어가 존재하지 않기 때문에 이러한 명령어들의 묶음은 분석을 용이하게 하므로 국부적 레지스터 할당을 사용하게 된다.
한편, 바이트 코드가 메소드 단위로 분석될 경우, 연속된 명령어들 중에 조 건 또는 분기되는 명령어가 존재하기 때문에 복잡한 프로그램의 흐름을 파악해야 하기 때문에 전역 레지스터 할당을 사용하게 된다.
이와 같이, 국부적 또는 전역 레지스터 할당을 사용하는 경우, 바이트 코드의 컴파일 시간에 바이트 코드 분석 및 레지스터 할당에 소요되는 시간이 추가되기 때문에 어플리케이션 실행시 소요되는 시간이 증가하게 된다.
따라서, 본 발명의 실시예에 따른 레지스터 할당부(130)는 코드 분석부(120)에 의한 바이트 코드 분석시, 오퍼랜드 스택의 스택 슬롯에게 1:1로 레지스터를 할당할 수 있다. 구체적으로, 오퍼랜드 스택의 각 스택 슬롯에 1:1로 할당되는 레지스터가 사전에 지정되어 있어 바이트 코드의 분석이 이루어짐과 동시에 레지스터 할당 및 기계어 생성이 이루어질 수 있다.
다시 말해서, 레지스터 할당부(130)는 바이트 코드의 분석 결과에 따른 각 명령어들에게 사전 지정된 레지스터를 할당하는 것이다. 따라서, 레지스터 할당부(130)에 의해 레지스터가 할당되는 시간은 전술한 자바 컴파일러가 원 코드를 기계어 코드로 생성하는 시간에 포함되지 않게 된다.
구체적으로, 기존에는 원 코드를 기계어 코드로 생성하는 경우, 원 코드 전체를 분석하여 이를 명령어의 간섭 여부에 따라 분류하고 레지스터를 할당하는 과정을 거치는 반면, 본 발명의 실시예에서는 해당 명령어의 기계어 코드 생성시, 사전 지정된 레지스터를 통해 곧바로 기계어 코드가 생성되기 때문에 컴파일시 소요되는 시간이 단축될 수 있는 것이다.
한편, 레지스터 할당부(130)는 레지스터를 할당하기 이전에 스택의 최대 높 이와 할당 가능한 레지스터의 수를 비교하는 과정을 거칠 수 있다. 이는 할당 가능한 레지스터의 개수보다 머 많은 스택 슬롯을 이용하는 경우 컴파일을 포기하여 해당 명령어에 대한 레지스터 할당과 관련된 모든 과정이 생략되기 때문에 컴파일의 성능 저하를 방지할 수 있다.
상기한 바와 같은 컴파일의 포기는, 임베디드 시스템의 자바 가상 머신의 성능을 측정하는데 사용되는 EEMBC 벤치 마크의 메소들의 96%는 5개 이하의 스택 슬롯만을 사용하기 때문에 대부분의 경우 오퍼랜드 스택의 최대 높이가 할당 가능한 레지스터의 수를 초과하여 발생되는 성능 저하가 크지 않기 때문에 가능할 수 있다.
또한, 레지스터 할당부(130)는 기본 블록을 계산하며, 기본 블록 시작 시점에서의 명령어들의 스택 높이를 계산할 수 있다. 이는 자바 프로그램에 있어서 바이트 코드를 보면 스택의 어느 슬롯 어느 높이로부터 가져와야 하는지를 알 수 없기 때문이다. 이러한 스택의 높이는, 함수 시작 시점에서부터 도달 가능한 모든 명령어들을 읽으면서 그 명령어들로 인한 스택 높이 변화의 시뮬레이션을 통해 알 수 있다.
이와 같은 스택 높이가 계산되면, 레지스터 할당부(130)는 각 스탯 슬롯에 1:1로 할당되어 있는 레지스터를 이용하여 레지스터를 할당할 수 있다. 이때, 코드 실행부(140)는 이미 스택 슬롯에 레지스터가 할당되어 있기 때문에 바로 기계어 코드를 생성하여 실행할 수 있다. 따라서, 기존에 기계어 생성시 연산이 이루어질때마다 메모리로부터 레지스터로 옮기는 읽기 명령어와 다시 레지스터로부터 메모리 로의 쓰기 명령이 생략될 수 있다.
상기한 바와 같은 데이터 처리 장치를 이용한 레지스터 할당 방법을 살펴보면 다음과 같다.
도 4는 본 발명의 실시예에 따른 데이터 처리 장치를 이용한 레지스터 할당 방법을 도시하고 있다.
도시된 바와 같이, 먼저 코드 분석부(120)는 코드 저장부(110)에 저장된 원 코드를 분석하여 기계어 코드를 생성하기 위한 데이터를 수집한다(S110).
코드 분석부(120)에 의해 수집되는 데이터는, 원 코드, 예를 들어 바이트 코드에 포함된 명령어들의 종류 및 사용 빈도 등을 포함할 수 있다.
레지스터 할당부(130)는 코드 분석부(120)에 의해 원 코드에 대한 데이터의 수집이 완료되면, 각 명령어들에게 사전 지정된 프로세서내의 레지스터를 할당하는 동시에 기계어 코드를 생성한다(S120).
이때, 레지스터 할당부(130)에 의해 할당되는 레지스터는 각 명령어들에 대해 사전에 지정되어 있기 때문에 코드 실행부(140)는 레지스터 할당부(130)에 의한 레지스터 할당이 이루어짐과 동시에 기계어 코드를 생성할 수 있다.
구체적으로, 기존에는 바이트 코드의 전체를 분석하여 명령어들을 지역 변수 및 스택 변수로 구분하고, 구분 결과에 따라 전역 레지스터 할당 및 국부적 레지스터 할당 방법을 통해 레지스터를 할당 후 기계어 코드를 생성한 반면, 본 발명의 실시예에서는 명령어에 대한 레지스터 할당과 동시에 기계어 코드가 생성될 수 있다. 따라서, 본 발명의 실시예에서 명령어들에게 할당되는 레지스터를 사전에 지정 하여 메모리와 레지스터간에 코드의 읽기 및 쓰기 과정이 생략될 수 있다.
이후, 코드 실행부(140)는 생성된 기계어 코드를 소정의 메모리에 기록하고, 기록된 기계어 코드를 실행하게 된다(S130).
도 5는 상기한 바와 같은 레지스터 할당 방법을 통해 소정의 연산을 수행하는 과정을 도시하고 있다.
도시된 바와 같이, 예를 들어 'x=x+y' 연산을 컴파일 하는 경우, 'x'실행 시점에서 오퍼랜드 스택(210)의 슬롯3(211)을 이용한다고 하면, 스택 슬롯3(211)을 위해 미리 할당한 레지스터(221)를 이용하도록 코드를 생성할 수 있다. 또한, 'y' 실행 시점에서 오퍼랜드스택(210)의 슬롯4(212)를 이용한다고 하면, 스택 슬롯4(212)를 위해 미리 할당된 레지스터(222)를 이용하도록 코드를 생성할 수 있다.
그리고, 'x+y' 수행 결과는 오퍼랜드 스택(210)의 스택 슬롯3(211)을 이용한다고 하면, 스택 슬롯3(211)에 미리 할당된 레지스터(221)를 이용하도록 코드를 생성할 수 있다.
이후, 'x+y' 연산을 수행하는 경우 메모리 공간의 오퍼랜드 스택은 이용하지 않고, 컴파일시 할당한 레지스터만을 이용하여 도 5의 ①, ② 및 ③ 단계만을 거치게 된다.
이때, 각 명령어들에게 레지스터가 할당되어 있지 않은 경우에는 원 코드를 기계어 코드로 생성하여 실행하는 시간에 레지스터를 할당하는 시간이 포함되어 소요되는 시간이 증가하는 반면, 본 발명의 실시예에서는 'x'와 'y'에 대한 레지스터가 사전에 지정되어 있기 때문에 레지스터 할당에 소요되는 시간이 컴파일 시간에 포함되지 않아 컴파일 시간을 감소시킬 수 있다.
이상과 같이 본 발명을 예시된 도면을 참조로 하여 설명하였으나, 본 명세서에 개시된 실시예와 도면에 의해 본 발명은 한정되지 않으며 그 발명의 기술사상 범위내에서 당업자에 의해 다양한 변형이 이루어질 수 있음은 물론이다.
상기한 바와 같은 본 발명의 데이터 처리 장치 및 이를 이용한 레지스터 할당 방법에 따르면, 컴파일러를 통해 기계어 코드 생성시 레지스터 할당 과정을 컴파일 과정 이전에 수행하여 컴파일 시간을 감소시킬 수 있는 장점이 있다.

Claims (8)

  1. 기계어 코드로 생성하려는 원 코드를 저장하는 코드 저장부와,
    상기 저장된 원 코드를 분석하는 코드 분석부와,
    상기 분석 결과 상기 원 코드에 포함된 각 명령어들에게 사전 지정된 레지스터를 할당하는 레지스터 할당부와,
    상기 할당된 레지스터를 이용하여 생성된 기계어 코드를 실행하는 코드 실행부를 포함하는 데이터 처리 장치.
  2. 제 1 항에 있어서,
    상기 기계어 코드는 JIT(Just In Time) 컴파일러, 인터프리터(Interpreter) 컴파일러 및 AOT(Ahead Of Time) 컴파일러 중 적어도 하나를 통해 생성되는 데이터 처리 장치.
  3. 제 2 항에 있어서,
    상기 원 코드는 바이트 코드(Byte Code)로 이루어지는 데이터 처리 장치.
  4. 제 3 항에 있어서,
    상기 레지스터는 오퍼런드 스택(Operand Stack)의 각 스택 슬롯별로 사전 지정되는 데이터 처리 장치.
  5. 기계어 코드로 생성하려는 원 코드를 분석하는 단계와,
    상기 분석 결과 상기 원 코드에 포함된 각 명령어들에게 사전 지정된 레지스터를 할당하는 단계와,
    상기 할당된 레지스터를 이용하여 생성된 기계어 코드를 실행하는 단계를 포함하는 데이터 처리 방법.
  6. 제 5 항에 있어서,
    상기 기계어 코드를 실행하는 단계는, JIT 컴파일러, 인터프리터 컴파일러 및 AOT 컴파일러 중 적어도 하나를 통해 상기 기계어 코드를 생성하는 단계를 포함하는 데이터 처리 방법.
  7. 제 6 항에 있어서,
    상기 원코드는 바이트 코드로 이루어지는 데이터 처리 방법.
  8. 제 7 항에 있어서,
    상기 레지스터는 오퍼랜드 스택의 각 스택 슬롯별로 할당되는 데이터 처리 방법.
KR1020040084406A 2004-10-21 2004-10-21 데이터 처리 장치 및 이를 이용한 레지스터 할당 방법 KR100597414B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020040084406A KR100597414B1 (ko) 2004-10-21 2004-10-21 데이터 처리 장치 및 이를 이용한 레지스터 할당 방법
US11/253,684 US8056061B2 (en) 2004-10-21 2005-10-20 Data processing device and method using predesignated register

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020040084406A KR100597414B1 (ko) 2004-10-21 2004-10-21 데이터 처리 장치 및 이를 이용한 레지스터 할당 방법

Publications (2)

Publication Number Publication Date
KR20060035077A true KR20060035077A (ko) 2006-04-26
KR100597414B1 KR100597414B1 (ko) 2006-07-05

Family

ID=36317840

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020040084406A KR100597414B1 (ko) 2004-10-21 2004-10-21 데이터 처리 장치 및 이를 이용한 레지스터 할당 방법

Country Status (2)

Country Link
US (1) US8056061B2 (ko)
KR (1) KR100597414B1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101225577B1 (ko) * 2010-12-07 2013-01-24 한국과학기술연구원 어셈블리 언어 코드의 분석 장치 및 방법
KR101894894B1 (ko) * 2017-06-16 2018-09-05 서울대학교산학협력단 바이트코드 처리 장치 및 동작 방법

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8726248B2 (en) * 2008-06-12 2014-05-13 Oracle America, Inc. Method and apparatus for enregistering memory locations
CN105359090A (zh) * 2013-04-26 2016-02-24 纽约市哥伦比亚大学理事会 用于移动应用的系统和方法
US9348595B1 (en) 2014-12-22 2016-05-24 Centipede Semi Ltd. Run-time code parallelization with continuous monitoring of repetitive instruction sequences
US9208066B1 (en) * 2015-03-04 2015-12-08 Centipede Semi Ltd. Run-time code parallelization with approximate monitoring of instruction sequences
US10296346B2 (en) 2015-03-31 2019-05-21 Centipede Semi Ltd. Parallelized execution of instruction sequences based on pre-monitoring
US10296350B2 (en) 2015-03-31 2019-05-21 Centipede Semi Ltd. Parallelized execution of instruction sequences
US9715390B2 (en) 2015-04-19 2017-07-25 Centipede Semi Ltd. Run-time parallelization of code execution based on an approximate register-access specification
US10853109B2 (en) * 2018-12-18 2020-12-01 Red Hat, Inc. Application deployment using reduced overhead bytecode

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4782444A (en) * 1985-12-17 1988-11-01 International Business Machine Corporation Compilation using two-colored pebbling register allocation method such that spill code amount is invariant with basic block's textual ordering
US5274820A (en) * 1989-08-14 1993-12-28 International Business Machines Corporation Method and system for eliminating operation codes from intermediate prolog instructions
US5202975A (en) * 1990-06-11 1993-04-13 Supercomputer Systems Limited Partnership Method for optimizing instruction scheduling for a processor having multiple functional resources
KR0154707B1 (ko) * 1995-09-19 1998-12-15 김광호 화상 형성 장치의 프로세서 카트리지
US6151618A (en) * 1995-12-04 2000-11-21 Microsoft Corporation Safe general purpose virtual machine computing system
KR100198815B1 (ko) * 1996-11-18 1999-06-15 정선종 그래프 분할에 의한 레지스터 할당 방법
US6110226A (en) 1998-02-19 2000-08-29 Cygnus Solutions Java development environment using optimizing ahead-of-time compiler
US6018799A (en) 1998-07-22 2000-01-25 Sun Microsystems, Inc. Method, apparatus and computer program product for optimizing registers in a stack using a register allocator
US6332215B1 (en) 1998-12-08 2001-12-18 Nazomi Communications, Inc. Java virtual machine hardware for RISC and CISC processors
GB9920676D0 (en) 1999-09-01 1999-11-03 Tao Group Ltd Translating and executing object-oriented computer programs
JP2002073345A (ja) 2000-08-25 2002-03-12 Fujitsu Ltd 情報処理装置及び記録媒体
GB2367654B (en) * 2000-10-05 2004-10-27 Advanced Risc Mach Ltd Storing stack operands in registers
EP1410174A2 (en) * 2001-04-23 2004-04-21 Atmel Corporation Microprocessor for executing byte compiled java code
JP2004522236A (ja) 2001-07-02 2004-07-22 ナゾミ コミュニケイションズ インコーポレイテッド 中間言語アクセラレータチップ
JP2003167737A (ja) 2001-11-30 2003-06-13 Nec Corp スタック使用方法
JP3816845B2 (ja) * 2002-07-05 2006-08-30 富士通株式会社 プロセッサ及び命令制御方法
US20060158354A1 (en) * 2002-08-02 2006-07-20 Jan Aberg Optimised code generation

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101225577B1 (ko) * 2010-12-07 2013-01-24 한국과학기술연구원 어셈블리 언어 코드의 분석 장치 및 방법
KR101894894B1 (ko) * 2017-06-16 2018-09-05 서울대학교산학협력단 바이트코드 처리 장치 및 동작 방법
US10732977B2 (en) 2017-06-16 2020-08-04 Seoul National University R&Db Foundation Bytecode processing device and operation method thereof

Also Published As

Publication number Publication date
KR100597414B1 (ko) 2006-07-05
US8056061B2 (en) 2011-11-08
US20060101437A1 (en) 2006-05-11

Similar Documents

Publication Publication Date Title
US7725883B1 (en) Program interpreter
US8522222B2 (en) Tracing just-in-time compilation with pointers to local variables
US5911073A (en) Method and apparatus for dynamic process monitoring through an ancillary control code system
Cramer et al. Compiling Java just in time
KR100640314B1 (ko) 혼합된 실행 스택 및 예외처리의 구현방법및 그 장치
CN1153141C (zh) 调试优化代码的方法和设备
US8056061B2 (en) Data processing device and method using predesignated register
US6078744A (en) Method and apparatus for improving compiler performance during subsequent compilations of a source program
US7406684B2 (en) Compiler, dynamic compiler, and replay compiler
CA2672337C (en) Compiler instrumentation infrastructure to facilitate multiple pass and multiple purpose dynamic analysis
US7308682B2 (en) Method and apparatus for recovering data values in dynamic runtime systems
US20040255279A1 (en) Block translation optimizations for program code conversation
US9424004B2 (en) Execution guards in dynamic programming
EP1241569A2 (en) Method and apparatus to facilitate sharing optimized instruction code in a multitasking virtual machine
US6647547B1 (en) Program conversion apparatus for eliminating unnecessary indications of dynamic memory allocation from a source program and generating an executable program
WO2002091175A1 (en) Specialized heaps for creation of objects in object-oriented environments
JP5489884B2 (ja) 命令実行装置、命令実行方法、及び命令実行プログラム
US7240341B2 (en) Global constant pool to allow deletion of constant pool entries
US6275985B1 (en) Method and apparatus for developing an application that implements garbage collection efficiently by combining proxy objects with compiler support
JP3790707B2 (ja) プログラム変換方法、これを用いたコンピュータ装置及びプログラム
JP3871312B2 (ja) プログラム変換方法、これを用いたデータ処理装置及びプログラム
JP2006525568A (ja) 携帯型データ記憶媒体のメモリ管理
EP1889158B1 (en) Method and apparatus for combined execution of native code and target code during program code conversion
US10140135B2 (en) Method for executing a computer program with a parameterised function
KR100828364B1 (ko) 가상 프로파일을 이용한 자바 jit 컴파일 방법 및시스템

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20130530

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20140529

Year of fee payment: 9

LAPS Lapse due to unpaid annual fee