Abstract:
본 발명은 내장형 자바시스템을 위한 인스톨-타임 컴파일러에 관한 것으로서, 보다 구체적으로는 (1) 응용프로그램 메모리(M app )만을 사용하며, 외부로부터 입력되는 입력 Jar 파일에 포함되어 있는 클래스 파일 및 리소스 파일 목록을 읽어 들이는 응용프로그램 리더부; (2) 응용프로그램 메모리(M class )만을 사용하며, 클래스 파일들을 읽어 들이고 바이트코드를 검증하는 클래스 파일 리더/바이트코드 검증부; (3) 메소드 메모리(M method )를 사용하여 변환 작업을 수행하되, 변환 중 최적화할 참조를 접근하는 바이트코드를 만나게 되면 상기 응용프로그램 메모리(M app )에 참조 리스트를 만들고, 상기 응용프로그램 메모리(M app )의 참조 리스트를 참조하여 코드를 생성하는 바이트코드 변환부; (4) 클래스 메모리(M class )만을 사용하며, 상기 파일 리더/바이트코드 검증부로부터 검증된 클래스 데이터 구조 및 런타임 함수들을 저장하는 클래스 데이터구조/런타임 함수부; (5) 응용프로그램 메모리(M app )만을 사용하며, 상기 생성된 코드를 플랫폼 상에서 실행 가능하도록 바인딩 및 재배치 처리를 통하여 수정하는 바인딩/재배치부; (6)응용프로그램 메모리(M app )만을 사용하며, 상기 바인딩/재배치부로부터 전송된 클래스 파일을 이진 파일로 생성하는 이진 파일 생성부; 및 (7) 응용프로그램 메모리(M app )만을 사용하며, 상기 이진 파일 생성부에서 생성된 이진 파일을 출력 Jar 파일로 압축하여 자바 가상머신으로 전송하는 Jar 압축부를 포함하는 것을 그 구성상의 특징으로 한다. 본 발명에서 제안하고 있는, 내장형 시스템을 위한 인스톨-타임 컴파일러에 따르면, 응용프로그램 분석에 기초하여, 인스톨-타임 컴파일러를 참조 접근 최적화 및 메모리 사용량을 고려한 최적화를 통해 최적화시킴으로써, 구현하기 어려운 최적화의 구현을 가능하게 하며, 특히 메모리가 적은 내장형 시스템의 메모리 효율성을 높일 수 있게 한다.
Abstract:
본 발명은 수행 중 선행 컴파일링(In client Ahead-Of-Time Compiling; In c-AOTC)을 이용한 내장형 시스템을 위한 자바 컴파일링 방법으로서, 보다 구체적으로는 (1) 자바 응용프로그램 수행 중, 메소드가 핫스팟(hot spot) 메소드인지 확인하는 단계; (2) 단계 (1)에서 핫스팟 메소드가 아닌 것으로 확인된 경우, 인터프리터(interpreter)로 해당 메소드를 수행한 후, 단계 (1)로 돌아가 다음 메소드를 수행하는 단계; (3) 단계 (1)에서 핫스팟 메소드인 것으로 확인된 경우, 해당 메소드에 대한 머신 코드가 클라이언트-선행 컴파일러(c-AOTC) 파일에 저장되어 있는지를 확인하는 단계; (4) 단계 (3)에서 저장되어 있는 것으로 확인된 경우, 해당 머신 코드를 로딩 및 재배치(relocation)하여 수행한 후, 단계 (1)로 돌아가 다음 메소드를 수행하는 단계; (5) 단계 (3)에서 저장되어 있지 않은 것으로 확인된 경우, 적시 컴파일러(Just-In-Time Compiler; JITC)를 이용하여 해당 메소드의 바이트코드를 머신 코드로 변환한 후, 코드 캐시(code cache)가 풀(full)인지 여부를 확인하는 단계; (6) 단계 (5)에서 상기 코드 캐시가 풀이 아닌 것으로 확인된 경우, 상기 변환된 머신 코드를 상기 코드 캐시에 저장하고 단계 (1)로 돌아가 다음 메소드를 수행하는 단계; 및 (7) 단계 (5)에서 코드 캐시가 풀인 것으로 확인된 경우, 상기 코드 캐시에 저장된 임의의 메소드를 선택하여 해당 머신 코드를 상기 클라이언트-선행 컴파일러(c-AOTC) 파일에 저장하고 상기 코드 캐시에서 삭제한 후, 상기 변환된 머신 코드를 상기 코드 캐시에 저장하고 단계 (1)로 돌아가 다음 메소드를 수행하는 단계를 포함하는 것을 그 구성상의 특징으로 한다. 본 발명에서 제안하고 있는 내장형 시스템을 위한 자바 컴파일링 방법에 따르면, 클라이언트-선행 컴파일러(c-AOTC) 파일에 머신 코드가 저장되어 있지 않은 핫스팟 메소드에 대하여 적시 컴파일러(JITC)를 이용하여 변환된 머신 코드를 코드 캐시에 저장할 때 코드 캐시가 부족할 경우, 코드 캐시에서 임의의 메소드를 선택하여 해당 머신 코드를 클라이언트-선행 컴파일러(c-AOTC) 파일에 저장하고 코드 캐시에서는 삭제한 후, 코드 캐시의 삭제된 공간에 변환된 머신 코드를 저장할 수 있도록 구성함으로써, 적시 컴파일러(JITC)의 이용 시의 코드 캐시의 부족 문제를 해결할 수 있다.
Abstract:
PURPOSE: An optimizing method capable of using an unused register of an advanced reduced instruction set computer (RISC) machine (ARM) in the environment which executes an x86 application binary in the ARM host by using QEMU is provided to match a part of the regional variables of the intermediate code with the register, which is unused when the QEMU generates the code, among the ARM, thereby reducing the x86 binary execution time which is executed in the ARM host. CONSTITUTION: An intermediate code is generated by reading an x86 application binary as a basic block (S100). A machine code generated/performed through the optimization of the intermediate code (S200). Previous steps are repeated for the next basic block (S300). A part of the values which have to be maintained between the machine codes are matched with the register which is unused when the QEMU generates the code. [Reference numerals] (S100) Step of generating an intermediate code by reading an x86 application binary as a basic block; (S200) Step of generating and performing a machine code through the optimization of the intermediate code; (S300) Step of repeating previous step 1 and 2 for the next basic block
Abstract:
PURPOSE: An extended null pointer test removal method using method specialization is provided to call a callee method where a null pointer test is removed if the argument of a callee method called during a compile process is not null, thereby removing unnecessary null pointer tests. CONSTITUTION: If a method is called during a compile process, the argument of a callee method is checked (S100). If the argument of the callee method is not null, the existence of a callee method where a null pointer test is removed is checked for the callee method (S200). If the callee method where a null pointer test is removed does exist, the callee method where a null pointer test is removed is called (S300). If the callee method where a null pointer test is removed does not exist yet, a new callee method where a null pointer test is removed is compiled, generated and called for the callee method. [Reference numerals] (S100) Step of checking if a factor of a callee method is in null value when the method is called during a compile process; (S200) Step of checking the existence of the callee method without a null pointer test when the factor is not in the null value; (S300) Step of calling the callee method without the null pointer test
Abstract:
PURPOSE: An effective JITC performing method in a multicore environment is provided to support JITC requests by sharing a main thread and a thread performing a JITC and efficiently utilizing a multicore. CONSTITUTION: A JITC thread with a relatively lower priority than a main thread is generated if a compile request about a predetermined code section is received among performing the application(S200). The JITC thread is performed if the idle time of the main thread or the machine code of the JITC thread is necessary(S300). A machine code generated by performing the JITC thread is stored in a code cache(S400).
Abstract:
본 발명은 캐시 프로파일(cash profile)을 이용한 향상된 소프트웨어 파이프라인 스케줄링(Enhances software Pipeline Schedule; EPS) 방법에 관한 것으로서, 보다 구체적으로는 (1) 캐시 프로파일링을 수행하는 단계; 및 (2) 상기 수행된 캐시 프로파일링 결과를 이용하여, 향상된 소프트웨어 파이프라인 스케줄링을 수행하는 단계를 포함하는 것을 그 구성상의 특징으로 한다. 본 발명의 캐시 프로파일을 이용한 향상된 소프트웨어 파이프라인 스케줄링 방법에 따르면, 명령어 스케줄링 시 캐시 프로파일링 결과를 활용함으로써 명령어의 병렬성의 확보와 캐시 성능의 향상을 동시에 달성할 수 있다.
Abstract:
PURPOSE: An EPS method using a cache profile is provided to secure the parallelism of instruction and improve the performance of cache at the same time. CONSTITUTION: Cache profiling is performed(S100). EPS(Enhanced Pipeline Scheduling) is performed by using a cache profiling result(S200). On the basis of the cache profiling result, the optimization target load instruction is determined. Instructions connected to the load instruction with a dependent relation are divided from remaining instructions. Different options are applied to the divided instruction.
Abstract:
PURPOSE: A hybrid JAVA compile system for a DTV(Digital Television) software platform is provided to apply a different compile mode to a system, a middleware class, and an xlet application according to each characteristic of the system, the middleware class, and the xlet application. CONSTITUTION: A system and middleware method administration module(100) administrates a machine code which is previously compiled and installed. An xlet application receiving module(200) receives an xlet application from a broadcast station. An xlet application compile module(300) compiles the received xlet application using a JITC(Just-In-Time Compile) mode. A JAVA application execution module(400) executes a JAVA application using the machine code for the complied xlet application.
Abstract:
PURPOSE: A JAVA compiling method for an embedded system is provided to solve the insufficiency of a code cache in the use of a JITC(Just-In-Time Compiler). CONSTITUTION: If a method is not a hot spot method, an embedded system executes the method with an interpreter and performs a next method(S100,S200). If the method is the hot spot method, the embedded system confirms whether a machine code for a corresponding method is stored in a c-AOTC(client Ahead-Of-Time Compiling) file(S300). If the machine code is stored in the c-AOTC file, the embedded system loads and relocates the machine code and executes the machine code(S400).
Abstract:
PURPOSE: A computer-readable recording medium recording an install-time compiler program for an embedded JAVA system is provided to optimize an install-time compiler through reference access optimization and optimization considering the usage of memory on the basis of an application analysis. CONSTITUTION: An application reader(205) reads class files and a resource file list included in an input Jar file inputted from the outside. A class file reader/byte code verifier(210) reads the class file and verifies a byte code. A byte code transformer(220) creates a code with reference to the reference list of an application memory. A binding/rearrangement unit(230) modifies the created code through binding/rearrangement.