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:
PURPOSE: A command/data arrangement method and device thereof while generating a dynamic machine code are provided to increase locality of the command and the data by minimizing an insertion of the branch command. CONSTITUTION: A controller(120) generates a command block by storing a generated command to a first buffer(111) is orders. If a command refers the data, the controller generates a data block by storing the data to a second buffer(112) in orders. When the distance between a data referring command included in the command block and data corresponding to the same reaches the limit of an offset range of the data referring command, the controller flushes a first and second buffer to an execution code.
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:
PURPOSE: An additional code generating apparatus for a VM(Virtual Machine) and a method thereof are provided to increase a area able to accelerate through a JITC(Just In Time Compiler) and improve performance of the VM by increasing generation of a machine code. CONSTITUTION: An information collecting unit(201) collects trace information indicating logic flow which a byte code is performed. If the byte code is not compiled, a code decision unit(202) decides a byte code section to compile into a machine code by using the trace information. A compiler compiles the byte code section into the machine code. The compiler and an interpreter performing the byte code are operated on separate cores. The information collecting unit searches for a route of the byte code performed on the interpreter and collects trace information.
Abstract:
본 발명은 핫 패스 기반의 자바스크립트 동적 컴파일을 위한 생성 코드 재활용 방법에 관한 것으로서, 보다 구체적으로는 (a) 동적 컴파일 수행 중, 재배치에 필요한 재배치 정보를 수집하는 단계; (b) 상기 단계 (a)에서 수집된 재배치 정보를, 동적 컴파일 수행 후 생성된 코드와 함께 파일 시스템에 저장하는 단계; (c) 자바스크립트 엔진이 재시작 된 경우, 동적 컴파일을 수행하기 전에 상기 파일 시스템에서 동적 컴파일 대상 구역에 대한 코드의 존재 여부를 확인하는 단계; 및 (d) 상기 단계 (c)에서 코드가 존재하는 것으로 확인되는 경우, 상기 파일 시스템으로부터 상기 코드와 상기 재배치 정보를 읽어 들여 읽어 들인 상기 코드를 상기 재배치 정보를 이용하여 재배치한 후 수행하는 단계를 포함하는 것을 그 구성상의 특징으로 한다. 본 발명에서 제안하고 있는 핫 패스 기반의 자바스크립트 동적 컴파일을 위한 생성 코드 재활용 방법에 따르면, 동적 컴파일 수행으로 생성된 코드와 관련 재배치 정보를 파일 시스템에 저장해 둠으로써, 자바스크립트 엔진이 재시작된 경우 해당 코드에 대한 동적 컴파일을 수행하는 대신에 파일 시스템으로부터 해당 코드와 관련 재배치 정보를 읽어 들여 재배치 과정만 거친 후 해당 코드를 수행할 수 있다. 그 결과, 컴파일 과정 및 컴파일을 위한 자료 수집 과정 없이 빠르게 생성된 코드를 재활용할 수 있다.
Abstract:
PURPOSE: A method for processing a branch command when generating a dynamic machine language is provided to increase a locality of data and reduce using amount of a memory. CONSTITUTION: A PC-based branch command is generated if a branch command is required when generating a command(S210). A memory space for an execution code is allocated to determine the PC-based branch command(S220). If the address of the PC-based branch command is corrected, the PC-based branch command confirms the offset and is completed(S230).
Abstract:
PURPOSE: A multimedia data pre-processing apparatus for VM(Virtual Machine) and a method thereof are provided to reduce time for processing multimedia data, thereby rapidly executing an application. CONSTITUTION: A detection unit(201) detects multimedia data included in an application. A generating unit(202) generates a thread processing the multimedia data. The allocation unit(203) assigns the thread to an idle core. The detection unit confirms an attribute indicating the multimedia data included in a code of the application and detects the multimedia data based on the attribute. The thread decodes the multimedia data into a format able to be processed by the application. The detection unit confirms the code of the application and detects the name of the multimedia data.