KR101407629B1 - 자바 변환 가속 장치 및 방법 - Google Patents
자바 변환 가속 장치 및 방법 Download PDFInfo
- Publication number
- KR101407629B1 KR101407629B1 KR1020070054663A KR20070054663A KR101407629B1 KR 101407629 B1 KR101407629 B1 KR 101407629B1 KR 1020070054663 A KR1020070054663 A KR 1020070054663A KR 20070054663 A KR20070054663 A KR 20070054663A KR 101407629 B1 KR101407629 B1 KR 101407629B1
- Authority
- KR
- South Korea
- Prior art keywords
- source code
- code
- parameter
- byte code
- constant
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
- G06F9/45516—Runtime code conversion or optimisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
- G06F9/45516—Runtime code conversion or optimisation
- G06F9/4552—Involving translation to a different instruction set architecture, e.g. just-in-time translation in a JVM
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
- G06F9/45508—Runtime interpretation or emulation, e g. emulator loops, bytecode interpretation
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
자바 변환 가속 장치 및 방법이 제공된다. 본 발명의 실시예에 따른 자바 변환 가속 장치는, 바이트코드와 바이트코드에 대응되는 원시코드가 배열된 색인 테이블과, 색인 테이블에서 입력된 바이트코드가 변환되는 원시코드에 대한 포인터를 생성하는 디코더와, 디코더에 포함되며 파라미터 바이트코드를 검출하여 색인 테이블에서 상수 삽입에 필요한 원시코드에 대한 포인터를 생성하는 파라미터 바이트코드 처리 유닛과, 파라미터 바이트코드 처리 유닛이 포인터를 생성한 원시코드에 상수를 삽입시키는 상수 삽입 유닛과, 디코더 또는 상수 삽입 유닛이 생성한 원시코드를 저장하는 원시코드 버퍼를 포함한다.
자바(JAVA), 자바 하드웨어 가속기, 버추얼 머신(virtual machine), 인터프리터(interpreter)
Description
도 1은 본 발명의 일 실시예에 따른 자바 변환 가속 장치의 구성을 나타내는 도면이다.
도 2는 본 발명의 일 실시예에 따른 자바 변환 가속 방법을 나타내는 흐름도이다.
도 3은 본 발명의 일 실시예에 따른 자바 변환 가속 방법에서 입력된 바이트 코드를 검토하는 방법을 나타내는 흐름도이다.
도 4는 본 발명의 일 실시예에 따른 자바 변환 가속 방법에서 파라미터 바이트코드를 식별하여 원시코드를 호출하는 방법을 나타내는 흐름도이다.
도 5는 본 발명의 일 실시예에 따른 자바 변환 가속 방법에서 호출된 원시코드에 상수값을 삽입하는 방법을 나타내는 흐름도이다.
<도면의 주요 부분에 대한 부호의 설명>
110: 색인 테이블
120: 디코더
130: 파라미터 바이트코드 처리 유닛
140: 상수 삽입 유닛
150: 원시코드 버퍼
본 발명은 자바 변환 가속 장치 및 방법에 관한 것으로, 보다 상세하게는 바이트코드에 대한 최적화된 원시코드를 생성하는 자바 변환 가속 장치 및 방법에 관한 것이다.
JAVA는 썬마이크로시스템즈에 의하여 개발된 객체지향언어이다. 자바의 플랫폼 독립, 샌드박스(sandbox) 모델의 보안성, 코드의 간결성은 전통적인 프로그래밍 언어를 넘어서는 자바의 장점이다. 자바 코드는 작고 간단하며, 보안성이 우수하고, 플랫폼과 운영체제를 넘나드는 이식성이 있다.
전통적인 프로그래밍 언어는 컴파일러에 의하여 소스코드를 기계어나 프로세서 명령(processor instruction)으로 변환시킨다. 번역된 코드는 원시명령(native instruction)를 포함한다. 예를 들어, x86 시스템에서 컴파일된 명령은 x86 시스템에서만 실행된다.
반면에 자바 컴파일러는 자바 프로그램을 바이트코드(bytecode)로 만든다. 컴파일러가 특정한 프로세서를 위한 기계어를 만들지 않는다. 바이트코드는 기계어와 같은 명령이지만 어떠한 프로세서에 특정된 것은 아니다. 이러한 바이트코드를 실행하기 위해서는 버추얼 머신(Virtual Machine)이 필요하다.
버추얼 머신은 자바 바이트코드를 번역하고(interpret) 대응되는 원시코 드(native code)로 변환한다. 바이트코드는 특정한 아키텍처(architecture)에 얽매이지 않기 때문에 바이트코드는 자바 버추얼 머신이 존재하는 한 어떠한 아키텍처에서도 실행될 수 있다.
자바의 약점은 실행속도에 있다. 특정 아키텍처를 위하여 컴파일된 프로그램은 바이트코드보다 더 빨리 실행된다. 자바 바이트코드의 경우, 그것을 실행하기 위해서, 중앙 처리 장치에서 실행되는 자바 버추얼 머신은 먼저 바이트코드를 원시명령으로 변환시켜야 한다.
자바 바이트코드 실행 속도를 향상시키기 위하여 몇몇 기술들이 있다. 그 중 하나는 "Just in Time(JIT)" 인터프리터와 같은 기술에 의해 자바 버추얼 머신의 속도를 향상시키는 것이다. 그러나 느린 실행속도와 JIT의 오버헤드는 문제점이 된다.
이를 개선하기 위하여 자바 하드웨어 가속기가 사용되었다. 자바 하드웨어 가속기는 색인 테이블을 사용하여 자바 바이트코드를 원시코드로 변환하였다. 즉, 바이트코드를 색인 테이블로부터 얻어진 원시코드로 변환하여 속도를 향상시켰다.
그러나, 자바 하드웨어 가속기를 사용하여도 최소한의 메모리 사용과 저전력 소비는 여전히 요구된다. 따라서 바이트코드를 변환하여 얻어진 원시코드를 최적화할 방법이 필요하게 되었다.
본 발명은 상기한 문제점을 개선하기 위해 고안된 것으로, 본 발명이 이루고자 하는 기술적 과제는 바이트코드에 대한 최적화된 원시코드를 생성하는 것이다.
본 발명의 목적들은 이상에서 언급한 목적들로 제한되지 않으며, 언급되지 않은 또 다른 목적들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
상기 목적을 달성하기 위하여, 본 발명의 실시예에 따른 자바 변환 가속 장치는, 바이트코드와 바이트코드에 대응되는 원시코드가 배열된 색인 테이블과, 색인 테이블에서 입력된 바이트코드가 변환되는 원시코드에 대한 포인터를 생성하는 디코더와, 디코더에 포함되며 파라미터 바이트코드를 검출하여 색인 테이블에서 상수 삽입에 필요한 원시코드에 대한 포인터를 생성하는 파라미터 바이트코드 처리 유닛과, 파라미터 바이트코드 처리 유닛이 포인터를 생성한 원시코드에 상수를 삽입시키는 상수 삽입 유닛과, 디코더 또는 상수 삽입 유닛이 생성한 원시코드를 저장하는 원시코드 버퍼를 포함한다.
상기 목적을 달성하기 위하여, 본 발명의 실시예에 따른 자바 변환 가속 방법은, 입력된 바이트코드가 파라미터 바이트코드인지 판단하는 단계와, 파라미터 바이트코드에 대응하는 상수삽입에 필요한 원시코드를 호출하는 단계와, 원시코드에서 키 명령을 식별하는 단계와, 키 명령에 상수값을 삽입하는 단계를 포함한다.
기타 실시예들의 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발 명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하고, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다
이하, 본 발명의 실시예들에 의하여 자바 변환 가속 장치 및 방법을 설명하기 위한 도면들을 참고하여 본 발명에 대해 설명하도록 한다.
이 때, 처리 흐름도 도면들의 각 블록과 흐름도 도면들의 조합들은 컴퓨터 프로그램 인스트럭션들에 의해 수행될 수 있음을 이해할 수 있을 것이다. 이들 컴퓨터 프로그램 인스트럭션들은 범용 컴퓨터, 특수용 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 프로세서에 탑재될 수 있으므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 프로세서를 통해 수행되는 그 인스트럭션들이 흐름도 블록(들)에서 설명된 기능들을 수행하는 수단을 생성하게 된다.
이들 컴퓨터 프로그램 인스트럭션들은 특정 방식으로 기능을 구현하기 위해 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 지향할 수 있는 컴퓨터 이용 가능 또는 컴퓨터 판독 가능 메모리에 저장되는 것도 가능하므로, 그 컴퓨터 이용가능 또는 컴퓨터 판독 가능 메모리에 저장된 인스트럭션들은 흐름도 블록(들)에서 설명된 기능을 수행하는 인스트럭션 수단을 내포하는 제조 품목을 생산하는 것도 가능하다.
컴퓨터 프로그램 인스트럭션들은 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에 탑재되는 것도 가능하므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에서 일련의 동작 단계들이 수행되어 컴퓨터로 실행되는 프로세스를 생성해서 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 수행하는 인스트럭션들은 흐름도 블록(들)에서 설명된 기능들을 실행하기 위한 단계들을 제공하는 것도 가능하다.
또한, 각 블록은 특정된 논리적 기능(들)을 실행하기 위한 하나 이상의 실행 가능한 인스트럭션들을 포함하는 모듈, 세그먼트 또는 코드의 일부를 나타낼 수 있다. 또, 몇 가지 대체 실행 예들에서는 블록들에서 언급된 기능들이 순서를 벗어나서 발생하는 것도 가능함을 주목해야 한다. 예컨대, 잇달아 도시되어 있는 두 개의 블록들은 사실 실질적으로 동시에 수행되는 것도 가능하고 또는 그 블록들이 때때로 해당하는 기능에 따라 역순으로 수행되는 것도 가능하다.
한편, 본 발명에 대한 설명을 용이하게 하기 위하여 본 발명과 관련된 기본적인 개념을 정의하도록 한다.
바이트코드(bytecode)는 자바 프로그램의 컴파일된 형태를 의미한다. 일단 자바 프로그램이 바이트코드로 변환되면 네트워크를 통해 전송될 수도 있고 자바 가상 머신에 의해 실행될 수도 있다.
원시코드(native code)는 기계어를 의미하며, 특정 플랫폼에서 실행되는 코드를 의미한다. 자바의 경우 바이트코드가 버추얼머신 등에 의하여 변환된 것을 의미한다.
파라미터 바이트코드(parameterized byte code)는 파라미터값을 갖는 바이트 코드를 의미한다. 즉, 바이트코드 중 특정값에 의존하여 실행되는 바이트코드를 의미한다.
키 명령(key instruction)은 파라미터 바이트코드에 대응되는 원시코드의 집합에서 파라미터 값에 해당하는 상수값을 삽입할 원시명령을 의미한다.
도 1은 본 발명의 일 실시예에 따른 자바 변환 가속 장치의 구성을 나타내는 도면이다.
색인 테이블(110)은 바이트코드와 이에 대응되는 원시코드가 배열된다. 원시코드는 중앙 처리 장치에 따라 달라질 수 있으며, 각각의 바이트코드에 대응되는 원시코드는 하나 이상의 원시명령의 집합이다.
색인 테이블(110)은 디코더(120)나 파라미터 바이트코드 처리 유닛(130)이 입력된 바이트코드에 대한 원시코드를 파악하는데 사용된다.
색인 테이블(110)에는 모든 바이트코드가 저장되지는 않는다. 따라서, 디코더(120)는 입력된 바이트코드가 색인 테이블(110)에 존재하는지 검토하는 것이 바람직하다.
색인 테이블(110)은 상수 삽입이 필요한 원시명령인 키 명령에 대한 정보를 저장하는 것이 바람직하다. 저장된 키 명령에 대한 정보는 상수 삽입 유닛(140)이 키 명령을 식별하기 위하여 사용된다.
색인 테이블(110)은 키 명령의 변환 패턴을 저장하는 것이 바람직하다. 저장된 키 명령의 변환 패턴은 상수 삽입 유닛(140)이 원시코드에 상수를 삽입할 때에 삽입 위치를 식별하기 위하여 사용된다.
디코더(120)는 색인 테이블(110)에서 입력된 바이트코드가 변환되는 원시코드에 대한 포인터를 생성한다. 색인 테이블(110)에 생성된 포인터는 색인 테이블(110)에서 원시코드 집합을 추출하는데 도움이 된다.
디코더(120)는 입력된 바이트코드가 원시코드 버퍼(150)에 존재하는지 검토하는 것이 바람직하다. 입력된 바이트코드가 원시코드 버퍼(150)에 존재하는 경우 해당되는 원시코드를 중앙 처리 장치에 반환하여 처리 속도를 향상시킬 수 있다.
디코더(120)는 입력된 바이트코드가 색인 테이블(110)에 존재하는지 검토하는 것이 바람직하다. 색인 테이블(110)은 모든 바이트코드에 대한 원시코드를 포함하고 있지 않으므로 입력된 바이트코드가 색인 테이블(110)에 존재하지 않는 경우, 소프트웨어 인터프리터(160)가 이를 처리할 수 있도록 한다.
디코더(120)는 파라미터 바이트코드 처리 유닛(130)을 포함한다.
파라미터 바이트코드 처리 유닛(130)은 파라미터 바이트코드를 검출한다. 입력된 바이트코드가 파라미터 바이트코드인 경우, 파라미터 바이트코드 처리 유닛(130)은 색인 테이블(110)에서 상수 삽입이 필요한 원시코드에 대한 포인터를 생성한다. 즉, 바이트코드의 상수버전에 대응하는 원시 명령을 호출한다. 파라미터 바이트코드를 파라미터를 갖는 원시코드가 아니라 고정된 값을 가지는 원시코드로 변환하는 것이다.
파라미터 바이트코드 처리 유닛(130)은 파라미터 바이트코드의 리스트를 저장하는 것이 바람직하다.
자바 바이트코드가 ARM CPU에서 처리되는 경우를 예로 들어본다. 자바 바이 트코드 ILOAD 10은 ILOAD가 스택에서 지역변수 10에 저장된 값을 로드해야 한다는 것을 의미한다. 종래 기술에 따르면 ILOAD 10이 입력된 경우 ILOAD에 대응하는 원시코드가 작성되고 지역변수의 주소에 대한 계산이 이루어진다.
종래기술에 따른 ILOAD에 대응하는 원시코드는 다음과 같다.
LDRB
reg1
,[
reg2
],#
offset
LDR
reg1
,[
reg2
+
reg3
shift
#n]
STR
reg1
,[
reg2
+
offset
]
그러나, 본 발명에 따르면 ILOAD 10은 파라미터 바이트코드이므로 파라미터 바이트코드 처리 유닛(130)은 상수 삽입에 필요한 원시코드에 대한 포인터를 생성한다. 즉, ILOAD 10에 대하여 ILOAD_0에 대응하는 원시명령을 호출하게 된다.
본 발명에 따른 ILOAD_0에 대응하는 원시코드는 다음과 같다.
LDR
r0
,[
VM
_
lp
,#0]
STR
r0
,[
VM
_
sp
,#4]!
종래기술과 비교하면 바이트코드가 변환되는 원시코드가 2개에서 3개로 줄어들게 되어 메모리 사용량이 줄고 변환 속도가 향상된다.
파라미터 바이트코드 처리 유닛(130)은 파라미터 바이트코드의 파라미터값을 검토하는 것이 바람직하다. 파라미터 바이트코드의 파라미터값은 원시 명령내의 즉시 필드(immediate field)에 적합하여야 한다. 상기와 같은 예에서 각각의 주소는 4의 증가량을 가지고 있기 때문에 즉시 필드로부터 가능한 비트의 유효한 수는 9-2=7이다. 이처럼 파라미터값이 128보다 작은 경우에만 즉시 피연산자(immediate operand)로 복호화(encode)된다. 즉 ILOAD 10에서 10은 128보다 작으므로 ILOAD_0에 대응하는 원시명령을 호출하게 된다.
파라미터 바이트코드 처리 유닛(130)은 파라미터값이 원시 명령내의 즉시필드에 적합하지 않는 경우 종래기술에 따라 입력된 바이트코드에 대응되는 원시코드에 대한 포인터를 생성한다.
상수 삽입 유닛(140)은 파라미터 바이트코드 처리 유닛(130)이 포인터를 생성한 원시코드에 상수를 삽입한다. 포인터가 생성된 원시코드의 끝에 입력된 파라미터값에 대응되는 상수를 삽입한다. 즉, 바이트코드의 파라미터값은 원시코드의 즉시 필드로 부호화된다.
상수 삽입 유닛(140)은 상수값을 사용하는 키 명령을 식별하는 것이 바람직하다. 포인터가 생성된 원시코드는 하나 이상의 원시명령 집합이므로 그 중에서 상수값이 삽입되는 원시명령인 키 명령을 식별한다. 키 명령에 대한 정보는 색인 테이블(110)에 저장하는 것이 바람직하다.
상기와 같은 예에서 ILOAD_0에 대응하는 원시명령 코드는 다음과 같다.
LDR
r0
,[
VM
_
lp
,#0]
STR
r0
,[
VM
_
sp
,#4]!
이 중 키 명령은 LDR r0,[VM_lp,#0] 가 되며 여기에 파라미터값인 10에 대응되는 상수를 삽입하면 다음과 같다.
LDR
r0
,[
VM
_
lp
,#40]
STR
r0
,[
VM
_
sp
,#4]!
이는 종래기술에 따라 ILOAD 10이 변환된 다음과 같은 원시코드와 동일하다.
LDRB
r0
,[
VM
_
ip
],#1
LDR
r0
,[
VM
_
lp
,
r0
,
LSL
#2]
STR
r0
,[
VM
_
sp
,#4]!
각각의 변환된 결과를 비교하면 동등한 프로세스를 수행하지만 원시코드가 2개에서 3개로 줄어들게 되어 메모리 사용량이 줄고 변환 속도가 향상된다.
또한, 색인 테이블(110)에 ILOAD_1, ILOAD_2, ILOAD_3에 대응하는 원시 코드가 저장되는 것을 방지 수 있다. 이러한 모든 ILOAD는 ILOAD_0로부터 생성될 수 있다. 이처럼 ILOAD_1, ILOAD_2, ILOAD_3를 저장하는데 필요한 공간을 절약하여 다른 바이트코드를 저장시킬 수 있다.
상수 삽입 유닛(140)은 색인 테이블(110)에 저장된 키 명령의 변환 패턴을 읽어 들여 상수값을 삽입하는 것이 바람직하다. 대부분의 경우 즉시 필드는 고정된 위치에 있으나 그런 경우가 아니라면 복잡한 과정이 필요하다. 따라서 키 명령의 변환 패턴을 색인 테이블(110)에 저장하고 상수 삽입 유닛(140)이 상수 삽입시 이를 읽어들여 참고한다.
원시코드 버퍼(150)는 디코더(120) 또는 상수 삽입 유닛(140)이 생성한 원시코드를 저장한다. 원시코드 버퍼(150)는 원시코드를 저장하였다가 중앙처리장치에 공급한다.
원시코드 버퍼(150)는 원시코드와 함께 입력된 바이트코드를 저장하는 것이 바람직하다. 입력된 바이트코드가 원시코드 버퍼(150)에 존재하는 경우 디코 더(120)의 요청에 따라 해당되는 원시코드를 중앙 처리 장치에 반환한다.
이 때, 본 발명의 실시예에 따른 자바 변환 가속 장치의 각각의 구성요소는 소프트웨어 또는 하드웨어, 펌웨어로 구현될 수 있다. 그렇지만 각각의 구성요소는 소프트웨어 또는 하드웨어, 펌웨어에 한정되는 것은 아니다. 각각의 구성요소는 어드레싱할 수 있는 저장 매체에 있도록 구성될 수도 있고 하나 또는 그 이상의 프로세서들을 재생시키도록 구성될 수도 있다. 구성요소들 안에서 제공되는 기능은 더 작은 수의 구성요소들로 결합되거나 추가적인 구성요소들로 더 분리될 수 있다.
또한, 본 발명의 실시예에 따른 자바 변환 가속 장치는 중앙 처리 장치에 포함되어 일체로 구성될 수 있다.
도 2는 본 발명의 일 실시예에 따른 자바 변환 가속 방법을 나타내는 흐름도이다.
중앙 처리 장치로부터 변환될 바이트코드가 디코더(120)에 입력된다(S210).
중앙 처리 장치로부터 변환될 바이트코드가 입력되면, 디코더(120)는 입력된 바이트 코드를 검토한다(S220).
디코더(120)가 입력된 바이트코드를 검토하면, 파라미터 바이트코드 처리 유닛(130)은 파라미터 바이트코드를 식별하여 원시코드를 호출한다(S230).
파라미터 바이트코드 처리 유닛(130)이 원시코드를 호출하면, 상수 삽입 유닛(140)은 호출된 원시코드에 상수값을 삽입한다(S240).
원시코드 버퍼(150)는 디코더(120) 또는 상수 삽입 유닛(140)이 생성한 원시코드를 저장한다(S250). 원시코드 버퍼(150)는 원시코드와 함께 입력된 바이트코드 를 저장하는 것이 바람직하다.
원시코드 버퍼(150)는 버퍼에 저장된 원시코드를 중앙 처리 장치에 반환한다(S260).
이하, 도 3 내지 도 5를 참고하여 상기 각 단계를 상세히 설명한다.
도 3은 본 발명의 일 실시예에 따른 자바 변환 가속 방법에서 입력된 바이트 코드를 검토하는 방법을 나타내는 흐름도이다.
디코더(120)는 입력된 바이트코드가 원시코드 버퍼(150)에 존재하는지 판단한다(S310). 입력된 바이트코드가 원시코드 버퍼(150)에 존재한다면 해당되는 원시코드를 중앙 처리 장치에 반환하여(S260) 처리 속도를 향상시킬 수 있다.
디코더(120)는 입력된 바이트코드가 색인 테이블(110)에 존재하는지 판단한다(S320). 색인 테이블(110)은 모든 바이트코드에 대한 원시코드를 포함하고 있지 않으므로 입력된 바이트코드가 색인 테이블(110)에 존재하지 않는 경우, 소프트웨어 인터프리터(160)가 이를 처리할 수 있도록 한다(S330).
도 4는 본 발명의 일 실시예에 따른 자바 변환 가속 방법에서 파라미터 바이트코드를 식별하여 원시코드를 호출하는 방법을 나타내는 흐름도이다.
파라미터 바이트코드 처리 유닛(130)은 입력된 바이트코드가 파라미터 바이트코드인지 판단한다(S410). 파라미터 바이트코드 처리 유닛(130)은 저장된 파라미터 바이트코드의 리스트를 참고하여 파라미터 바이트코드를 검출한다.
파라미터 바이트코드가 아닌 경우, 디코더(120)가 색인 테이블(110)에서 입력된 바이트코드가 변환되는 원시코드에 대한 포인터를 생성하여 이를 호출한 다(S420).
파라미터 바이트코드 처리 유닛(130)은 파라미터 바이트코드의 파라미터값을 검토하여 원시 명령내의 즉시 필드에 적합한지 판단한다(S430).
파라미터 바이트코드 처리 유닛(130)은 파라미터값이 원시 명령내의 즉시필드에 적합하지 않는 경우, 입력된 바이트코드에 대응되는 원시코드에 대한 포인터를 생성하여 이를 호출한다(S420).
파라미터 바이트코드 처리 유닛(130)은 색인 테이블(110)에서 상수 삽입이 필요한 원시코드에 대한 포인터를 생성하여 이를 호출한다(S440). 즉, 바이트코드의 상수버전에 대응하는 원시 명령을 호출한다. 파라미터 바이트코드를 파라미터를 갖는 원시코드가 아니라 고정된 값을 가지는 원시코드로 변환하는 것이다.
도 5는 본 발명의 일 실시예에 따른 자바 변환 가속 방법에서 호출된 원시코드에 상수값을 삽입하는 방법을 나타내는 흐름도이다.
상수 삽입 유닛(140)은 호출된 원시코드에서 상수값을 사용하는 키 명령을 식별한다(S510). 상수 삽입 유닛(140)은 색인 테이블(110)에 저장된 키 명령에 대한 정보를 읽어 들여 참조한다. 포인터가 생성된 원시코드는 하나 이상의 원시명령 집합이므로 그 중에서 상수값이 삽입되는 원시명령인 키 명령을 식별한다.
상수 삽입 유닛(140)은 색인 테이블(110)에 저장된 키 명령의 변환 패턴을 읽어 들인다(S520). 대부분의 경우 즉시 필드는 고정된 위치에 있으나 그런 경우가 아니라면 복잡한 과정이 필요하다. 따라서 키 명령의 변환 패턴을 색인 테이블(110)에 저장하고 상수 삽입 유닛(140)이 이를 읽어 들여 상수 삽입시 참고한다.
상수 삽입 유닛(140)은 키 명령에 상수를 삽입한다(S530). 포인터가 생성된 원시코드의 끝에 입력된 파라미터값에 대응되는 상수를 삽입한다. 즉, 바이트코드의 파라미터값은 원시코드의 즉시 필드로 부호화된다.
본 발명의 내용은 자바뿐만 아니라, 다른 인터프리터 언어 또는 버추얼 머신이 사용되는 언어에 적용될 수 있다.
본 발명이 속하는 기술분야의 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다. 본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허청구의 범위에 의하여 나타내어지며, 특허청구의 범위의 의미 및 범위 그리고 그 균등 개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.
상기한 바와 같은 본 발명의 발명의 명칭에 따르면 다음과 같은 효과가 하나 혹은 그 이상 있다.
첫째, 파라미터 바이트코드에 대한 최적화된 원시코드를 생성하여 메모리 사용량이 줄어드는 장점이 있다.
둘째, 파라미터 바이트코드에 대한 최적화된 원시코드를 생성하여 변환 속도를 향상시키는 장점도 있다.
셋째, 색인 테이블에 저장되는 원시코드를 줄여 저장공간을 절약하는 장점도 있다.
본 발명의 효과들은 이상에서 언급한 효과들로 제한되지 않으며, 언급되지 않은 또 다른 효과들은 청구범위의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
Claims (15)
- 바이트코드와 상기 바이트코드에 대응되는 원시코드가 배열된 색인 테이블;상기 색인 테이블에서 입력된 바이트코드가 변환되는 원시코드에 대한 포인터를 생성하는 디코더;상기 입력된 바이트코드 중 파라미터 바이트코드를 검출하여 상기 색인 테이블에서 상수 삽입에 필요한 원시코드에 대한 포인터를 생성하는 파라미터 바이트코드 처리 유닛;상기 파라미터 바이트코드 처리 유닛이 포인터를 생성한 원시코드에 상수를 삽입시키는 상수 삽입 유닛; 및상기 디코더 또는 상기 상수 삽입 유닛이 생성한 원시코드를 저장하는 원시코드 버퍼를 포함하는 자바 변환 가속 장치.
- 제 1항에 있어서,상기 파라미터 바이트코드 처리 유닛은 파라미터 바이트코드의 리스트를 저장하는 자바 변환 가속 장치.
- 제 1항에 있어서,상기 파라미터 바이트코드 처리 유닛은 파라미터 바이트코드의 파라미터값을 검토하는 자바 변환 가속 장치.
- 제 1항에 있어서,상기 상수 삽입 유닛은 상수값을 사용하는 키 명령을 식별하는 자바 변환 가속 장치.
- 제 1항에 있어서,상기 상수 삽입 유닛은 저장된 키 명령의 변환 패턴을 읽어 들여 상수를 삽입하는 자바 변환 가속 장치.
- 제 1항에 있어서,상기 색인 테이블은 키 명령에 대한 정보를 저장하는 자바 변환 가속 장치.
- 제 1항에 있어서,상기 색인 테이블은 키 명령의 변환 패턴을 저장하는 자바 변환 가속 장치.
- 제 1항에 있어서,상기 디코더는 입력된 바이트코드가 상기 색인 테이블에 존재하는지 검토하는 자바 변환 가속 장치.
- 제 1항에 있어서,상기 원시코드 버퍼는 상기 생성된 원시코드 함께 상기 입력된 바이트코드를 저장하며 상기 디코더는 입력된 바이트코드가 상기 원시코드 버퍼에 존재하는지 검토하는 자바 변환 가속 장치.
- 자바 변환 가속 장치를 이용하여 자바 변환을 가속하는 방법에 있어서,입력된 바이트코드가 파라미터 바이트코드인지 판단하는 단계;상기 파라미터 바이트코드에 대응하는 상수삽입에 필요한 원시코드를 호출하는 단계;상기 호출된 원시코드에서 키 명령을 식별하는 단계; 및상기 식별된 키 명령에 상수값을 삽입하는 단계를 포함하는 자바 변환 가속 방법.
- 제 10항에 있어서,상기 파라미터 바이트코드의 파라미터값이 원시명령의 즉시필드의 크기보다 작은지를 판단하는 단계를 더 포함하는 자바 변환 가속 방법.
- 제 10항에 있어서,상기 키 명령에 대한 저장된 변환 패턴을 읽어 들이는 단계를 더 포함하는 자바 변환 가속 방법.
- 제 10항에 있어서,상기 입력된 바이트코드가 원시코드 버퍼에 존재하는지 판단하는 단계를 더 포함하는 자바 변환 가속 방법.
- 제 10항에 있어서,상기 입력된 바이트코드가 색인 테이블에 존재하는지 판단하는 단계를 더 포함하는 자바 변환 가속 방법.
- 제 10항에 있어서,상기 상수값을 삽입한 원시코드를 원시코드 버퍼에 저장하는 단계를 더 포함하는 자바 변환 가속 방법.
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020070054663A KR101407629B1 (ko) | 2007-06-04 | 2007-06-04 | 자바 변환 가속 장치 및 방법 |
US11/965,800 US8230407B2 (en) | 2007-06-04 | 2007-12-28 | Apparatus and method for accelerating Java translation |
JP2008067034A JP2008299835A (ja) | 2007-06-04 | 2008-03-17 | ジャバ変換加速装置および方法 |
CN 200810098634 CN101344857B (zh) | 2007-06-04 | 2008-06-03 | 用于加速Java翻译的设备和方法 |
US13/474,543 US9038039B2 (en) | 2007-06-04 | 2012-05-17 | Apparatus and method for accelerating java translation |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020070054663A KR101407629B1 (ko) | 2007-06-04 | 2007-06-04 | 자바 변환 가속 장치 및 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20080106796A KR20080106796A (ko) | 2008-12-09 |
KR101407629B1 true KR101407629B1 (ko) | 2014-06-13 |
Family
ID=40089749
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020070054663A KR101407629B1 (ko) | 2007-06-04 | 2007-06-04 | 자바 변환 가속 장치 및 방법 |
Country Status (4)
Country | Link |
---|---|
US (2) | US8230407B2 (ko) |
JP (1) | JP2008299835A (ko) |
KR (1) | KR101407629B1 (ko) |
CN (1) | CN101344857B (ko) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8286152B2 (en) * | 2007-08-22 | 2012-10-09 | International Business Machines Corporation | Systems, methods, and computer products for just-in-time compilation for virtual machine environments for fast application startup and maximal run-time performance |
KR100930831B1 (ko) * | 2009-03-24 | 2009-12-10 | 주식회사 에이디칩스 | 바이트코드 변환 가속 장치 및 그 방법 |
US20110154214A1 (en) * | 2009-12-18 | 2011-06-23 | Microsoft Corporation | Offloading Content Retrieval And Decoding In Pluggable Content-Handling Systems |
US9836316B2 (en) * | 2012-09-28 | 2017-12-05 | Intel Corporation | Flexible acceleration of code execution |
CN104077173A (zh) * | 2013-03-31 | 2014-10-01 | 宋浩 | 智能卡内java程序指令的执行方法及智能卡 |
US10776090B2 (en) | 2018-01-16 | 2020-09-15 | International Business Machines Corporation | Reducing overhead of data conversation between Java and non-Java representations |
CN110488738B (zh) * | 2019-07-23 | 2021-04-09 | 中车青岛四方机车车辆股份有限公司 | 一种代码生成方法及装置 |
CN110675256B (zh) * | 2019-08-30 | 2020-08-21 | 阿里巴巴集团控股有限公司 | 部署和执行智能合约的方法及装置 |
US10783082B2 (en) | 2019-08-30 | 2020-09-22 | Alibaba Group Holding Limited | Deploying a smart contract |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20010104687A (ko) * | 1998-12-08 | 2001-11-26 | 추후제출 | 축소 명령 세트 컴퓨터 및 복합 명령 세트 컴퓨터프로세서들을 위한 자바 가상 머신 하드웨어 |
KR20040034620A (ko) * | 2001-07-02 | 2004-04-28 | 나조미 커뮤니케이션즈, 인코포레이티드 | 중간 언어 가속기 칩 |
KR20060110971A (ko) * | 2005-04-21 | 2006-10-26 | 삼성전자주식회사 | 자바 가상 머신의 명령어 수행 방법 및 그 장치 |
Family Cites Families (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH03271941A (ja) * | 1990-03-20 | 1991-12-03 | Fujitsu Ltd | 言語処理プロセッサの最適化方式 |
US5995754A (en) * | 1997-10-06 | 1999-11-30 | Sun Microsystems, Inc. | Method and apparatus for dynamically optimizing byte-coded programs |
US6314445B1 (en) * | 1998-08-03 | 2001-11-06 | International Business Machines Coproration | Native function calling |
US6539433B1 (en) * | 1998-09-30 | 2003-03-25 | Matsushita Electric Industrial Co., Ltd. | System for distributing native program converted from Java bytecode to a specified home appliance |
US6481006B1 (en) * | 1999-05-06 | 2002-11-12 | International Business Machines Corporation | Method and apparatus for efficient invocation of Java methods from native codes |
GB9921720D0 (en) * | 1999-09-14 | 1999-11-17 | Tao Group Ltd | Loading object-oriented computer programs |
US6832369B1 (en) * | 2000-08-01 | 2004-12-14 | International Business Machines Corporation | Object oriented method and apparatus for class variable initialization |
US20060206874A1 (en) * | 2000-08-30 | 2006-09-14 | Klein Dean A | System and method for determining the cacheability of code at the time of compiling |
US6760905B1 (en) * | 2000-09-21 | 2004-07-06 | Curl Corporation | Lazy compilation of template-generated classes in dynamic compilation execution environments |
EP1197847A3 (en) * | 2000-10-10 | 2003-05-21 | Nazomi Communications Inc. | Java hardware accelerator using microcode engine |
GB2376099B (en) * | 2001-05-31 | 2005-11-16 | Advanced Risc Mach Ltd | Program instruction interpretation |
GB2376100B (en) * | 2001-05-31 | 2005-03-09 | Advanced Risc Mach Ltd | Data processing using multiple instruction sets |
WO2003014921A1 (en) | 2001-07-02 | 2003-02-20 | Nazomi Communications, Inc. | Intermediate language accelerator chip |
US8769508B2 (en) * | 2001-08-24 | 2014-07-01 | Nazomi Communications Inc. | Virtual machine hardware for RISC and CISC processors |
JP4485198B2 (ja) * | 2001-09-12 | 2010-06-16 | 株式会社ルネサステクノロジ | Javaアクセラレータを備えたプロセッサシステム |
KR20040039412A (ko) * | 2001-09-25 | 2004-05-10 | 코닌클리케 필립스 일렉트로닉스 엔.브이. | 가상 머신 해석기 가속 하드웨어용 소프트웨어 지원 |
JP4163927B2 (ja) * | 2001-10-31 | 2008-10-08 | 松下電器産業株式会社 | Javaコンパイラ、及び、当該Javaコンパイラが使用するコンパイル情報の生成装置 |
JP3808755B2 (ja) * | 2001-11-07 | 2006-08-16 | 富士通株式会社 | Jitコンパイラを備えた仮想計算機 |
US6973644B2 (en) * | 2002-04-12 | 2005-12-06 | The Mathworks, Inc. | Program interpreter |
JP2003337709A (ja) * | 2002-05-21 | 2003-11-28 | Hitachi Ltd | コンパイル方法 |
US20040153996A1 (en) * | 2003-01-30 | 2004-08-05 | International Business Machines Corporation | Method and system for determining the defining classLoader of a Java class as it is being defined |
US20060130016A1 (en) * | 2003-03-17 | 2006-06-15 | Wagner John R | Method of kernal-mode instruction interception and apparatus therefor |
US7493605B2 (en) * | 2004-12-29 | 2009-02-17 | Mainsoft R&D Ltd | Method and a software product for adapting a .Net framework compliant reflection mechanism to a java environment |
US8051143B2 (en) * | 2005-10-14 | 2011-11-01 | Oracle International Corporation | Sharing sessions between web-based applications |
US20070288909A1 (en) * | 2006-06-07 | 2007-12-13 | Hong Kong Applied Science and Technology Research Institute Company Limited | Hardware JavaTM Bytecode Translator |
US8683453B2 (en) * | 2006-11-30 | 2014-03-25 | Motorola Mobility Llc | System for overriding interpreted byte-code with native code |
US9038041B2 (en) * | 2006-12-04 | 2015-05-19 | Tibco Software, Inc. | Stream processor with compiled programs |
US8713546B2 (en) * | 2006-12-18 | 2014-04-29 | Oracle International Corporation | System and method for redundant array copy removal in a pointer-free language |
US8458670B2 (en) * | 2007-09-27 | 2013-06-04 | Symantec Corporation | Automatically adding bytecode to a software application to determine network communication information |
US8296745B2 (en) * | 2007-12-31 | 2012-10-23 | Oracle America, Inc. | Method and apparatus for portable stub generation |
-
2007
- 2007-06-04 KR KR1020070054663A patent/KR101407629B1/ko active IP Right Grant
- 2007-12-28 US US11/965,800 patent/US8230407B2/en not_active Expired - Fee Related
-
2008
- 2008-03-17 JP JP2008067034A patent/JP2008299835A/ja active Pending
- 2008-06-03 CN CN 200810098634 patent/CN101344857B/zh not_active Expired - Fee Related
-
2012
- 2012-05-17 US US13/474,543 patent/US9038039B2/en not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20010104687A (ko) * | 1998-12-08 | 2001-11-26 | 추후제출 | 축소 명령 세트 컴퓨터 및 복합 명령 세트 컴퓨터프로세서들을 위한 자바 가상 머신 하드웨어 |
KR20040034620A (ko) * | 2001-07-02 | 2004-04-28 | 나조미 커뮤니케이션즈, 인코포레이티드 | 중간 언어 가속기 칩 |
KR20060110971A (ko) * | 2005-04-21 | 2006-10-26 | 삼성전자주식회사 | 자바 가상 머신의 명령어 수행 방법 및 그 장치 |
Also Published As
Publication number | Publication date |
---|---|
US8230407B2 (en) | 2012-07-24 |
CN101344857B (zh) | 2013-09-04 |
US20120233603A1 (en) | 2012-09-13 |
CN101344857A (zh) | 2009-01-14 |
US20080301652A1 (en) | 2008-12-04 |
KR20080106796A (ko) | 2008-12-09 |
JP2008299835A (ja) | 2008-12-11 |
US9038039B2 (en) | 2015-05-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101407629B1 (ko) | 자바 변환 가속 장치 및 방법 | |
US6324686B1 (en) | Just in time compiler technique | |
EP4099152B1 (en) | Extending a virtual machine instruction set architecture | |
KR100968326B1 (ko) | 프로그램 코드 변환을 위한 중간 표현들을 발생하기 위한 개선된 아키텍쳐 | |
US6826749B2 (en) | Java hardware accelerator using thread manager | |
EP1145120B1 (en) | Generating compiled programs for interpretive runtime environments | |
EP1557760A2 (en) | Method and system for improving performance of java virtual machine | |
EP1380946A2 (en) | Program code conversion with reduced translation | |
US20020066083A1 (en) | Java virtual machine hardware for RISC and CISC processors | |
EP3143500A1 (en) | Handling value types | |
JP2004280795A (ja) | エクストリームパイプライン及び最適化再配列技術 | |
US7739674B2 (en) | Method and apparatus for selectively optimizing interpreted language code | |
KR100763177B1 (ko) | 자바 가상 머신의 명령어 수행 방법 및 그 장치 | |
US20060070049A1 (en) | Java bytecode translation method and Java interpreter performing the same | |
WO2002097552A2 (en) | Method for fast compilation of preverified java bytecode to high quality native machine code | |
Lai et al. | Hyperchaining Optimizations for an LLVM-Based Binary Translator on x86-64 and RISC-V Platforms | |
KR20040044655A (ko) | 자바 가상머신에서 루프 문 처리를 위해 바이트코드를생성 및 수행하는 방법 | |
JP2006120043A (ja) | コンパイラを有する仮想マシン | |
KR20040111139A (ko) | 미해결 명령어의 해결 | |
Haggett | Tokenisation and Compression of Java Class Files for Mobile Devices | |
Tyystjärvi et al. | Efficient execution of switch instructions on a multicore Java co-processor system | |
JP2006195644A (ja) | 仮想マシン実行装置及び方法 | |
JP2003296120A (ja) | 仮想マシンおよびプロセッサ |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20170518 Year of fee payment: 4 |
|
FPAY | Annual fee payment |
Payment date: 20180517 Year of fee payment: 5 |
|
FPAY | Annual fee payment |
Payment date: 20190520 Year of fee payment: 6 |