KR101694291B1 - Apparatus and method for accelerating java script engine - Google Patents
Apparatus and method for accelerating java script engine Download PDFInfo
- Publication number
- KR101694291B1 KR101694291B1 KR1020140010353A KR20140010353A KR101694291B1 KR 101694291 B1 KR101694291 B1 KR 101694291B1 KR 1020140010353 A KR1020140010353 A KR 1020140010353A KR 20140010353 A KR20140010353 A KR 20140010353A KR 101694291 B1 KR101694291 B1 KR 101694291B1
- Authority
- KR
- South Korea
- Prior art keywords
- machine
- javascript
- unit
- machine language
- stored
- Prior art date
Links
Images
Classifications
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/3017—Runtime instruction translation, e.g. macros
- G06F9/30174—Runtime instruction translation, e.g. macros for non-native instruction set, e.g. Javabyte, legacy 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/45529—Embedded in an application, e.g. JavaScript in a Web browser
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
본 발명은 웹 플랫폼에서 자바 스크립트의 수행 성능을 향상시키기 위한 자바 스크립트 엔진 가속 장치 및 방법에 관한 것이다. 이를 위한 본 발명의 자바 스크립트 엔진 가속 장치는 사용자로부터 입력된 자바 스크립트 소스를 기계어로 컴파일링하는 자바 스크립트 엔진에서, 자바 스크립트 소스를 근거로 CPU 코어부를 통해 생성된 바이트 코드에 대해 하드웨어 가속이 가능한지 판단하는 판단부; 판단부에서 하드웨어 가속이 가능하다고 판단되면, 저장부에 저장된 기계어들 중 바이트 코드에 대응하는 대응 기계어가 저장된 주소를 탐색하는 주소 정보 생성부; 및 대응 기계어를 캐시 메모리로 로딩하는 기계어 관리부를 포함하고, 자바 스크립트 엔진과 상호 작용하며, 저장부에 저장된 기계어들은 자바 스크립트 엔진에서 자바 스크립트 함수 중 기설정된 횟수 이상으로 사용된 함수들을 적시 컴파일링함으로써 기존에 생성된 언어인 것을 특징으로 한다.The present invention relates to an apparatus and method for accelerating a JavaScript engine to improve performance of JavaScript in a web platform. The JavaScript engine acceleration device of the present invention for this purpose is a JavaScript engine that compiles a JavaScript source input from a user into a machine language to determine whether hardware acceleration is possible for the bytecode generated through the CPU core unit based on the JavaScript source ; An address information generation unit for searching for an address where the corresponding machine language corresponding to the bytecode among the machine words stored in the storage unit is stored, when the determination unit determines that the hardware acceleration is possible; And a machine language management unit for loading the corresponding machine language into the cache memory, wherein the machine language stored in the storage unit interacts with the JavaScript engine, and by timely compiling the functions used in the JavaScript engine for more than a predetermined number of JavaScript functions And is a previously generated language.
Description
본 발명은 자바 스크립트 엔진에 대한 가속 장치 및 방법에 관한 것이고, 보다 상세하게, 웹 플랫폼에서 자바 스크립트의 수행 성능을 향상시키기 위한 자바 스크립트 엔진 가속 장치 및 방법에 관한 것이다.The present invention relates to an acceleration device and method for a JavaScript engine, and more particularly, to a JavaScript engine acceleration device and method for enhancing performance of JavaScript in a web platform.
현재, 스마트 폰, 태블릿 PC와 같은 모바일 기기들은 예를 들어, 구글의 안드로이드 또는 애플의 iOS와 같은 임베디드 운영체제 환경 하에서 동작한다. 모바일 기기에서 동작하는 어플리케이션은 일반적으로 C, C++ 및 Java등과 같은 프로그래밍 언어로 작성된다. 이러한 어플리케이션은 하드웨어에 대해 최적화되도록 상술한 프로그래밍 언어로 작성되고, 이에 후속하여 하드웨어 상에서 해독을 위해 컴파일링 과정이 수행된다.Currently, mobile devices such as smart phones and tablet PCs run under an embedded operating system environment, such as Google's Android or Apple's iOS. Applications running on mobile devices are typically written in programming languages such as C, C ++, and Java. Such an application is written in the above-described programming language so as to be optimized for hardware, followed by a compilation process for decoding on the hardware.
애플의 경우 어플리케이션의 개발을 위해, 어플리케이션에 대한 코딩은 Object-C로 작성되는데, 여기서 이러한 작성을 위해 예를 들어, Xcode라는 개발자 툴이 이용된다. 또한, 안드로이드의 경우에는 Java 언어가 이용되고, Java 언어를 이용한 코딩은 예를 들어, ADT(Android Development Tools)라는 안드로이드 개발 툴을 이용하여 Davik 가상 머신 상에서 이루어진다. 이러한 방식으로 개발된 실행 소프트웨어는 네이티브 어플리케이션이라고 한다. For Apple's application development, the coding for the application is written in Object-C, where a developer tool called Xcode, for example, is used for this purpose. In addition, the Java language is used in the case of Android, and the coding using the Java language is performed in the Davik virtual machine using, for example, an Android development tool called ADT (Android Development Tools). The execution software developed in this way is called a native application.
이러한 네이티브 어플리케이션은 하드웨어 플랫폼에 종속적이며, 운영체제(OS)도 하드웨어에 따라 상이한 구조를 갖는다. 특히 개발 환경이 독립적이기 때문에 어플리케이션 개발자 입장에서 보면 동일한 프로그램을 개발하더라도 각각의 개발환경에 새로이 적응하여 개발해야 하는 문제가 발생한다. 반면에 웹 브라우저에서 동작하는 웹 어플리케이션은 프로그래밍 언어, 예를 들어, HTML(Hyper Text Markup Language), CSS(Cascading Style Sheets) 및 자바 스크립트를 이용하여 개발되면, 동일한 개발환경을 사용할 수 있고, 또한 운영 체제에 독립적으로 동작하기 때문에 어플리케이션 개발자 입장에서 보면 소프트웨어 개발 시간 및 배포에 있어 매우 큰 이점을 가질 수 있다. 그러나 웹 어플리케이션은 자바스크립트라는 동적인 언어를 사용하여 실행하기 때문에 네이티브 어플리케이션에 비해 실행 속도가 매우 느리다. 이러한 단점을 극복하고자 전 세계의 각 회사들은 고속성능을 갖는 자바스크립트 엔진 개발에 열을 올리고 있는 실정이다. 대표적으로는 애플의 웹킷(Webkit)을 근간으로 하는 SquirrelFish Extreme, 구글의 V8, 모질라 재단의 IonMonkey 등이 존재한다.These native applications are dependent on the hardware platform, and the operating system (OS) has a different structure depending on the hardware. In particular, since the development environment is independent, there is a problem that an application developer must newly develop and adapt to each development environment even if the same program is developed. On the other hand, if a web application that operates in a web browser is developed using a programming language such as Hyper Text Markup Language (HTML), Cascading Style Sheets (CSS), and JavaScript, the same development environment can be used, Because it operates independently of the system, it can have a great advantage in terms of software development time and distribution from the perspective of application developers. Web applications, however, run at a much slower rate than native applications because they run using a dynamic language called JavaScript. To overcome these shortcomings, companies around the world are keen to develop high-performance JavaScript engines. Typically, there are SquirrelFish Extreme based on Apple's Webkit, Google's V8, and Mozilla Foundation's IonMonkey.
웹 앱의 대표적인 단점으로 지적되는 느린 실행속도가 존재함에도 불구하고 웹 앱은 HTML5와 더불어 미래의 웹 서비스 제공의 주된 방향이라 할 수 있다. 이러한 자바 스크립트 엔진의 느린 속도를 극복하고자 다양한 최적화 및 고속화 기술이 계속 등장하고 있다. 이러한 기술들은 크게 2가지 방법으로 분류된다.Despite slow execution speed, which is a typical shortcoming of web apps, web apps are the main direction of providing future web services along with HTML5. Various optimization and acceleration technologies continue to emerge to overcome the slowness of these JavaScript engines. These techniques are classified into two major methods.
제 1 방법은 자바스크립트 엔진 소프트웨어 최적화 방법이다. 자바스크립트 엔진은 소스를 로딩한 후에 분할(parsing) 과정을 거쳐 인라인 캐시를 이용하여 즉시 하드웨어 코드로 변환되거나, 또는 적시(JIT : Just-in-Time) 컴파일러를 이용하게 된다. 여기서, 적시(JIT) 컴파일러는 동일한 코드에 대해 반복적으로 컴파일링이 수행되는 오버헤드를 회피하도록, 반복 실행되는 코드에 대해 자주 사용되는 코드를 기계어로 변환시키고, 변환된 기계어를 메모리에 계속 상주시키는 방식이다. 이러한 적시(JIT) 컴파일러를 통해, 동일한 코드에 대해 반복적인 컴파일링이 회피되므로, 상술한 컴파일링 과정에 대한 오버헤드가 감소된다. 이러한 적시(JIT) 컴파일러 방법은 반복횟수에 때라 로우 레벨 변환과 하이 레벨 변환으로 이중 구조를 갖기도 한다.The first method is a JavaScript engine software optimization method. After loading the source, the JavaScript engine parses it and uses the inline cache to immediately translate it into hardware code or use a just-in-time (JIT) compiler. Here, a timely (JIT) compiler converts frequently used code for repetitive code into machine language so as to avoid the overhead of repeatedly performing compilation on the same code, and continues to reside the converted machine language in the memory Method. With this timely (JIT) compiler, iterative compiling for the same code is avoided, so the overhead for the compilation process described above is reduced. Such a timed (JIT) compiler method may have a dual structure with low-level translation and high-level translation at times of repetition.
제 2 방법은 하드웨어를 이용하여 자바스크립트 코드를 가속시키는 방법이다. 예를 들어 3D 그래픽 어플리케이션인 경우에는 WebGL 라이브러리를 이용하여 GPU 하드웨어를 이용하거나, 또는 인텔의 RiverTrail 기술처럼 멀티 코어를 이용하여 병렬 처리하는 방식으로 가속하는 방법이다. 이 방법은 CPU, AP 관련 기술이 쿼드(Quad) 코어 또는 옥타(Octa) 코어로 발전하는 추세에 맞추어 자바스크립트 코드를 멀티 스레드로 실행시킴으로써, 높은 하드웨어 성능을 전적으로 활용하는 방법이라 할 수 있다.The second method is to accelerate JavaScript code using hardware. For example, in the case of 3D graphics applications, it is a method of accelerating using the GPU hardware using the WebGL library, or parallel processing using multicore like Intel's RiverTrail technology. This is a way to take full advantage of high hardware performance by running the JavaScript code in a multithreaded fashion with the trend of CPU and AP-related technologies evolving into a quad core or Octa core.
위에 제시한 2가지 방법이 현재 자바스크립트로 코딩된 웹 어플리케이션을 가속시키는 대표적인 방법이긴 하지만, 제 1 방법은 소프트웨어 최적화로 달성할 수 있는 기본적인 성능 향상에 대한 한계를 가지고 있으며, 제 2 방법은 높은 전력 소모가 추가적으로 비용 발생이 되는 문제를 가지고 있다.While the two methods presented above are currently the preferred method of accelerating web applications coded in JavaScript, the first method has limitations on the basic performance enhancement that can be achieved with software optimization, There is a problem that consumption is additionally incurred.
이에 관련하여, 발명의 명칭이 "축소 명령 세트 컴퓨터 및 복합 명령 세트 컴퓨터프로세서들을 위한 자바 가상 머신 하드웨어"인 한국공개특허 제 2001-0104687호가 존재한다.In this regard, there is Korean Patent Laid-Open No. 2001-0104687, entitled " Java Virtual Machine Hardware for Reduced Instruction Set Computers and Compound Instruction Set Computer Processors, "
본 발명은 종래의 자바 스크립트 엔진보다 빠르게 컴파일링 과정을 수행하여, 웹 어플리케이션에 대한 실행 지연 시간을 감소시킬 수 있는 자바 스크립트 엔진 가속 장치 및 방법을 제공하는데 그 목적이 있다.An object of the present invention is to provide an apparatus and method for accelerating a JavaScript script that can reduce the execution delay time for a web application by performing a compiling process faster than a conventional JavaScript engine.
상기와 같은 과제를 해결하기 위한 본 발명의 자바 스크립트 엔진 가속 장치는 사용자로부터 입력된 자바 스크립트 소스를 기계어로 컴파일링하는 자바 스크립트 엔진에서, 자바 스크립트 소스를 근거로 CPU 코어부를 통해 생성된 바이트 코드에 대해 하드웨어 가속이 가능한지 판단하는 판단부; 판단부에서 하드웨어 가속이 가능하다고 판단되면, 저장부에 저장된 기계어들 중 바이트 코드에 대응하는 대응 기계어가 저장된 주소를 탐색하는 주소 정보 생성부; 및 대응 기계어를 캐시 메모리로 로딩하는 기계어 관리부를 포함하고, 자바 스크립트 엔진과 상호 작용하며, 저장부에 저장된 기계어들은 자바 스크립트 엔진에서 자바 스크립트 함수 중 기설정된 횟수 이상으로 사용된 함수들을 적시 컴파일링함으로써 기존에 생성된 언어인 것을 특징으로 한다.According to an aspect of the present invention, there is provided a JavaScript engine accelerator comprising: a JavaScript engine for compiling a JavaScript source input from a user into a machine language, wherein the bytecode generated through a CPU core unit based on a JavaScript source A determination unit for determining whether hardware acceleration is possible; An address information generation unit for searching for an address where the corresponding machine language corresponding to the bytecode among the machine words stored in the storage unit is stored, when the determination unit determines that the hardware acceleration is possible; And a machine language management unit for loading the corresponding machine language into the cache memory, wherein the machine language stored in the storage unit interacts with the JavaScript engine, and by timely compiling the functions used in the JavaScript engine for more than a predetermined number of JavaScript functions And is a previously generated language.
또한, 주소 정보 생성부는, 자바 스크립트 엔진을 통해 생성된 기계어들을 저장부에 저장할 때, 기계어들 각각이 저장된 주소 정보를 생성할 수 있다.The address information generating unit may generate the address information of each of the machine words stored in the storage unit when the machine words generated through the JavaScript engine are stored.
또한, 본 발명의 자바 스크립트 엔진 가속 장치는 저장부에 저장된 기계어들 각각에 대한 사용 횟수를 카운팅하는 카운팅부를 더 포함할 수 있다.In addition, the JavaScript engine acceleration apparatus of the present invention may further include a counting unit counting the number of times of use of each of the machine words stored in the storage unit.
또한, 기계어 관리부는 기계어들 각각에 대한 사용 횟수를 근거로, 기계어들 중 기설정된 기간 동안 사용 횟수가 기설정된 사용 임계값 이하인 기계어들을 삭제할 수 있다.Also, the machine language management unit may delete machine words whose use frequency is less than or equal to a predetermined usage threshold value for a preset period of machine language, based on the use frequency of each machine language.
또한, 캐시 메모리부는, 저장부에 저장된 기계어들 각각에 대한 사용 횟수 정보와, 기계어들에 대한 코드 영역 정보를 포함할 수 있다.In addition, the cache memory unit may include use frequency information for each of the machine words stored in the storage unit and code area information for machine words.
본 발명의 자바 스크립트 엔진 가속 장치 및 방법에 따르면 종래의 자바 스크립트 엔진보다 빠르게 컴파일링 과정을 수행하여, 웹 어플리케이션에 대한 실행 지연 시간을 감소시킬 수 있는 효과가 있다.According to the JavaScript engine acceleration apparatus and method of the present invention, the compile process is performed faster than the conventional JavaScript engine, and the execution delay time for the web application can be reduced.
도 1은 본 발명의 일 실시예에 따른 자바 스크립트 엔진 가속 시스템에 대한 블록도이다.
도 2는 본 발명의 일 실시예에 따른 자바 스크립트 엔진 가속 방법에 대한 흐름도이다. 1 is a block diagram of a JavaScript engine acceleration system in accordance with an embodiment of the present invention.
2 is a flowchart illustrating a method of accelerating a JavaScript engine according to an exemplary embodiment of the present invention.
본 발명을 첨부된 도면을 참조하여 상세히 설명하면 다음과 같다. 여기서, 반복되는 설명, 본 발명의 요지를 불필요하게 흐릴 수 있는 공지 기능, 및 구성에 대한 상세한 설명은 생략한다. 본 발명의 실시형태는 당 업계에서 평균적인 지식을 가진 자에게 본 발명을 보다 완전하게 설명하기 위해서 제공되는 것이다. 따라서, 도면에서의 요소들의 형상 및 크기 등은 보다 명확한 설명을 위해 과장될 수 있다.
The present invention will now be described in detail with reference to the accompanying drawings. Hereinafter, a repeated description, a known function that may obscure the gist of the present invention, and a detailed description of the configuration will be omitted. Embodiments of the present invention are provided to more fully describe the present invention to those skilled in the art. Accordingly, the shape and size of the elements in the drawings and the like can be exaggerated for clarity.
이하, 도 1을 참조로, 본 발명의 실시예에 따른 자바 스크립트 엔진 가속 시스템(1000)에 대해 서술한다. 도 1은 본 발명의 일 실시예에 따른 자바 스크립트 엔진 가속 시스템(1000)에 대한 블록도이다. 본 발명의 일 실시예에 따른 자바 스크립트 엔진 가속 시스템(1000)은 적시(JIT) 컴파일링 기법을 이용하는 자바 스크립트 엔진의 성능을 보다 향상시킬 수 있는 엔진이다. 이에 따라, 도 1에 도시된 바와 같이, 본 발명의 일 실시예에 따른 자바 스크립트 엔진 가속 시스템(1000)은 저장부(10), CPU 코어부(20), 캐시 메모리부(30) 및 자바 스크립트 엔진 가속 장치(100)를 포함하여 구성된다. 이들 각 구성에 대한 서술은 이하에서 이루어진다.Hereinafter, a JavaScript engine acceleration system 1000 according to an embodiment of the present invention will be described with reference to FIG. 1 is a block diagram of a JavaScript engine acceleration system 1000 in accordance with an embodiment of the present invention. The JavaScript engine acceleration system 1000 according to an exemplary embodiment of the present invention is an engine capable of further improving the performance of a JavaScript engine using a JIT compilation technique. 1, a JavaScript engine acceleration system 1000 according to an embodiment of the present invention includes a
CPU 코어부(20)는 사용자로부터 입력받은 자바 스크립트 소스를 컴파일링함으로써, 실행시키는 기능을 한다. 여기서, 적시(JIT) 컴파일링 기법을 이용하여, 컴파일링이 이루어지는 경우, CPU 코어부(20)는 렉서(lexer), 파서(parser), 중간 표현 생성(IR, intermediate representation), 인터프리터(interpreter), 적시(JIT) 컴파일러 및 런타임 과정을 수행하게 된다. The
CPU 코어부(20)에서 수행되는 렉서 단계는 사용자부터 입력된 자바 스크립트 소스를 토큰 시리즈로 분해하는 과정을 수행한다. 그 후, 파서 단계에서 렉서 단계로부터 입력된 토큰 시리즈를 이용하여, 구문 자료구조를 생성한다. 그 후, 중간 표현 생성 단계에서, 파서 단계로부터 입력된 구문 자료구조를 이용하여 자바스크립트 소스와 기계어의 중간 표현인 바이트 코드를 생성한다. 즉, 적시(JIT) 컴파일링 기법은 사용자로부터 입력받은 자바 스크립트 소스에 대해, 머신에서 판독 가능한 기계어로 변환이 필요하다. 상술한 렉서 단계, 파서 단계 및 중간 표현 생성 단계는, 이러한 기계어 변환을 위해, 기계어로 변환 가능한 중간 표현인 바이트 코드를 생성하기 위해 수행된다.The lexer step performed by the
이렇게, 중간 표현인 바이트 코드가 생성되면, 생성된 바이트 코드를 실제 기계에서 판독 가능한 기계어로 변환하는 인터프리터 단계가 수행된다. 그 후, 기계어로 변환된 자바 스크립트 소스를 적시(JIT) 컴파일링 하는 단계가 수행되는데, 적시(JIT) 컴파일링 단계는 상술한 것처럼, 기계어로 변환된 자바 스크립트 함수 중에서 반복적으로 많이 사용되는 코드 영역을 기계어로 컴파일링 하고, 이를 저장부(10)에 저장함으로써, 차후에 반복적으로 많이 사용되는 코드 영역에 대해 추가적인 컴파일링을 수행하지 않고, 저장부(10)에서 로딩할 수 있다.Thus, when the bytecode, which is an intermediate expression, is generated, an interpreter step is performed to convert the generated bytecode into a machine code readable by an actual machine. Thereafter, a step of timely (JIT) compiling the Javascript source converted into the machine language is performed. As described above, the JIT compilation step is performed in the code region Can be loaded into the
그 후, 기계어로 변환된 일련의 코드들을 실행하는 런타임 단계를 수행한다. 여기서, CPU 코어부(20)에 의해 수행되는 적시(JIT) 컴파일링 단계의 경우, 앞서 배경 기술에서 언급한 것처럼, 많은 시간이 소요되는 문제점이 있다. 이러한 문제점에 기인하여, 일반적으로 자바 스크립트에 대한 엔진 성능은 적시(JIT) 컴파일러에 의해 크게 좌우된다. Then, it performs a runtime step of executing a series of codes converted into a machine language. Here, in the case of the JIT compilation step performed by the
자바 스크립트 소스가 런타임 시에 기계어로 변환되어 실행되는 과정에 있어서, 가장 중요한 2가지 요소는 컴파일 시간 및 컴파일 효율성이다. 이 2가지 요소는 서로 상충되는 관계에 있는데 그 이유는 최적화된 기계어를 생성하기 위해서는 컴파일 시간이 길어질 수밖에 없으며, 컴파일 시간이 짧으면 비교적 낮은 레벨의 기계어를 생성할 수밖에 없기 때문이다. 이러한 이율 배반성으로 인해 소프트웨어로 구현된 자바스크립트 엔진들은 컴파일된 코드 재사용과 관련해서 다중 레벨 구현 방식을 취하고 있다. 반복 사용 횟수를 모르는 시점에서는 최적화보다는 기계어 변환 속도에 중점을 두어 컴파일을 수행한 후 실행하고, 점점 해당 코드의 사용 횟수가 많아질수록 재컴파일 과정을 통해 최적화 코드를 생성하는 방식이다. 이때 기존 생성된 코드 영역을 새로 컴파일된 코드 영역으로 대체하는 기능을 OSR(On-Stack-Replacement)이라고 표현한다. 재컴파일 과정을 통한 OSR 동작은 JIT 레벨간에 이루어진다.The two most important factors in the process of a JavaScript source being translated into machine language at runtime and executed are compile time and compilation efficiency. These two factors are in conflict with one another because the compilation time is long to create an optimized machine language, and if the compilation time is short, it is necessary to generate a relatively low level machine language. Because of this rate of return, software-implemented JavaScript engines take a multilevel approach to compiled code reuse. If you do not know the number of iterations, you can do compilation by focusing on machine translation speed rather than optimization, and then generate optimization code through recompilation process as the number of use of code increases. At this time, the function of replacing the existing code area with the newly compiled code area is referred to as OSR (On-Stack-Replacement). The OSR operation through the recompilation process is performed between JIT levels.
본 발명에서는 이러한 적시(JIT) 컴파일링에 대한 속도 및 효율성을 높이기 위해, 상술한 기능을 수행하는 CPU 코어부(20)와 본 발명의 자바 스크립트 엔진 가속 장치(100)를 연동하는 방법을 제안한다. 여기서, 본 발명의 자바 스크립트 엔진 가속 장치(100)는 CPU 코어부(20)를 통해 수행되는 과정 중, 기계어 코드 관리 및 기계어 코드 변환을 수행하는, 구체적으로 코드의 재사용과 관련된 부분을 수행하는 기능을 할 수 있다. 또한, 본 발명의 자바 스크립트 엔진 가속 장치(100)는 CPU 코어부(20)의 캐시 메모리부(30)와의 고속 인터페이스를 통해 컴파일된 기계어 영역을 따로 관리함으로써, 전반적인 자바 스크립트 엔진에 대한 성능을 향상시킬 수 있다. 또한, 본 발명의 자바 스크립트 엔진 가속 장치(100)를 통해 CPU 코어부(20)에 대한 부하를 감소시킬 수 있고, 상술한 자바 스크립트 소스를 컴파일하고 실행하는 시간을 감소시킬 수 있다. In the present invention, in order to increase the speed and efficiency of the JIT compilation, a method of interlocking the
이를 위해, 본 발명의 일 실시예에 따른 자바 스크립트 엔진 가속 장치(100)는 판단부(110), 기계어 변환부(120), 기계어 관리부(130), 주소 할당부(140), 카운팅부(150) 및 인덱스 매핑부(160)를 포함하여 구성될 수 있다. 본 발명의 자바 스크립트 엔진 가속 장치(100)에 포함된 각 구성들에 대한 서술은 이하에서 이루어진다.The JavaScript engine accelerator 100 according to an embodiment of the present invention includes a
판단부(110)는 CPU 코어부(20)에서 생성되는 중간 언어 즉, 바이트 코드를 생성하는 단계 이후, 하드웨어 가속이 가능한지 판단하는 기능을 수행한다. 즉, 판단부(110)는 예를 들어, 저장부(10)에 바이트 코드에 대응하는 기계어가 존재하는지 확인을 통해, 하드웨어 가속 여부를 판단할 수 있다. 즉, 이하에서 서술되는 것처럼, 기계어는 캐시 메모리부(30)에 저장되는 것이 아닌, 별도의 저장부(10)에 저장되게 된다. 캐시 메모리부(30)는 기계어들을 직접적으로 저장하는 것이 아닌, 저장부(10)에 저장된 기계어들에 대한 사용 횟수와 코드 영역 관리를 위한 정보들이 저장된다.The
주소 정보 생성부(140)는 판단부(110)에서의 판단 결과, 하드웨어 가속이 가능하다고 판단되면, 저장부(10)에 저장된 기계어들 중 바이트 코드에 대응하는 대응 기계어가 저장된 주소를 탐색하는 기능을 한다. 여기서, 저장부(10)에 저장된 기계어들은 기존에 자바 스크립트 엔진에서 자바 스크립트 함수 중 기설정된 횟수 이상으로 사용된 함수들을 적시 컴파일링함으로써 생성된 기계어를 나타낸다.The address
또한, 주소 정보 생성부(140)는 CPU 코어부(20)를 통해 또는 기계어 변환부(120)를 통해, 생성된 기계어들을 저장부(10)에 저장할 때, 저장부(10)에 저장되는 기계어들에 대한 주소 정보를 생성하는 기능을 한다.The address
기계어 관리부(130)는 주소 정보 생성부(140)에서 탐색된 주소를 근거로, 탐색된 대응 기계어를 캐시 메모리부(30)로 로딩하는 기능을 한다. The machine
카운팅부(150)는 기계어 관리부(130)를 통해 저장부(10)에 저장된 기계어들에 대한 식별 횟수를 카운팅하고 관리하는 기능을 한다. The
기계어 관리부(130)는 카운팅부(150)를 통해 관리되는 저장부(10)에 저장된 기계어들에 대한 식별 횟수를 근거로, 사용 빈도수가 낮은 기계어들을 삭제할 수 있다. 구체적으로, 기계어 관리부(130)는 기설정된 기간 동안, 저장부(10)에 저장된 기계어들에 대한 식별 횟수와 기설정된 사용 임계값 이하인 기계어들을 삭제할 수 있다. 이를 통해, 사용되지 않고 용량만 차지하는 기계어들이 삭제됨으로써, 보다 효율적인 저장부(10)의 관리가 가능해진다.The machine
또한, 기계어 관리부(130)는 CPU 코어부(20) 또는 기계어 변환부(120)를 통해 변환된 기계어를 저장부(10)에 저장하고, 이에 대한 관리를 수행할 수 있다. 여기서, 언급된 기계어는 적시(JIT) 컴파일링을 통해 생성된 기계어 즉, 자바 스크립트 엔진에서 자바 스크립트 함수 중 기설정된 횟수 이상으로 사용된 함수들을 적시 컴파일링 함으로써 생성된 기계어를 나타낸다. 여기서, 기계어 변환부(120)는 CPU 코어부(20)에서 수행되는 적시(JIT) 컴파일링 과정을 대신 수행할 수 있다. 즉, 적시(JIT) 컴파일링 과정의 경우 CPU 코어부(20)에서 수행되는 것으로 위에서 서술되었으나, 기계어 변환부(120)에서도 바이트 코드를 기계어로 변환하는 과정과 자바 스크립트 함수 중 기설정된 횟수 이상으로 사용된 함수들을 적시 컴파일링함으로써 기계어를 생성하는 과정이 수행될 수 있다. 이를 통해, CPU 코어부(20)에 대한 부하가 감소할 수 있고, 병렬적 처리 또는 대체적인 처리를 통해 컴파일링에 대한 효율성이 보다 높아지게 된다. The machine
주소 정보 생성부(140)는 이렇게 기계어가 저장부(10)에 저장되면, 해당 기계어가 저장된 주소를 포함하는 주소 정보를 생성할 수 있다.When the machine language is stored in the
인덱스 매핑부(160)는 저장부(10) 내에 저장된 기계어 즉, 변환된 기계어들에 대한 함수 관리를 위해 인덱스에 대한 매핑을 수행하는 기능을 한다.
The index mapping unit 160 performs mapping on indexes for function management of machine words stored in the
이하, 도 2를 참조로, 본 발명의 일 실시예에 따른 자바 스크립트 엔진 가속 방법에 대해 서술한다. 도 2는 본 발명의 일 실시예에 따른 자바 스크립트 엔진 가속 방법에 대한 흐름도이다. 이하의 서술에서 도 1을 참조로 언급한 부분과 중복되는 사항은 명세서의 명료함을 위해 생략한다.Hereinafter, a method of accelerating a JavaScript engine according to an embodiment of the present invention will be described with reference to FIG. 2 is a flowchart illustrating a method of accelerating a JavaScript engine according to an exemplary embodiment of the present invention. In the following description, elements overlapping with those mentioned with reference to FIG. 1 will be omitted for clarity of description.
먼저, 사용자로부터 입력한 자바 스크립트 소스 코드를 로딩하는 단계(S201)가 수행된다. 여기서 사용자로부터 입력된 자바 스크립트 소스 코드는 예를 들어, 저장부를 거쳐 CPU 코어부로부터 로딩될 수 있다.First, a step S201 of loading JavaScript source code inputted from a user is performed. Here, the JavaScript source code input from the user can be loaded from the CPU core unit via the storage unit, for example.
그 후, CPU 코어부에 의해 자바 스크립트 소스 코드를 근거로 바이트 코드를 생성하는 단계(S202)가 수행된다. 여기서 바이트 코드는 도 1을 참조로 언급한 것처럼, 머신에서 판독 가능한 기계어로 변환 가능한 중간 언어를 나타낸다. 이러한 바이트 코드를 생성하기 위해 S202 단계에서는, S201 단계에서 수신한 자바 스크립트 소스 코드에 대해 도 1을 참조로 언급한 렉서, 파서 및 중간 표현 생성 단계를 수행한다. 구체적으로, S202 단계에서는, S201 단계에서 수신한 자바 스크립트 소스 코드를 토큰 시리즈로 분해하고(렉서 단계), 분해된 토큰 시리즈를 이용하여 구문 자료구조를 생성하며(파서 단계), 구문 자료구조를 이용하여 자바 스크립트 소스와 기계어의 중간 표현인 바이트 코드를 생성한다(중간 표현 생성 단계).Thereafter, step S202 of generating the bytecode based on the JavaScript source code is performed by the CPU core unit. Here, the bytecode indicates an intermediate language that can be converted into a machine-readable machine language, as mentioned with reference to Fig. In order to generate such a bytecode, in step S202, a lexer, a parser, and an intermediate representation generation step refer to FIG. 1 for the JavaScript source code received in step S201. Specifically, in step S202, the JavaScript source code received in step S201 is divided into a token series (lexer step), a syntax data structure is generated using the disassembled token series (parser step) To generate a JavaScript source and a bytecode that is an intermediate representation of the machine language (intermediate representation generation step).
그 후, 판단부에 의해 하드웨어 가속이 가능한지 판단하는 단계(S203)가 수행된다. 구체적으로, S203 단계는 CPU 코어부를 이용하여 자바 스크립트 소스에 대한 해독을 수행하는 자바 스크립트 엔진의 성능을 향상시키기 위해, 본 발명의 자바 스크립트 엔진 가속 장치를 이용한 하드웨어 가속이 가능한지 판단하는 단계이다. 이러한 S203 단계에서는 예를 들어, 저장부에 바이트 코드에 대응하는 기계어가 존재하는지 확인을 통해, 하드웨어 가속 여부를 판단할 수 있고, 이러한 판단 기준에 대해서는 상술한 사항으로 제한되지 않는다. 이러한 S203 단계에서 하드웨어 가속이 가능하다고 판단되면 제어는 S207 단계로 전달된다. 그렇지 않다면 제어는 S204 단계로 전달된다.Thereafter, the determination unit determines whether hardware acceleration is possible (S203). Specifically, step S203 is a step of determining whether hardware acceleration using the JavaScript engine acceleration apparatus of the present invention is possible in order to improve the performance of the JavaScript engine that decodes the JavaScript source using the CPU core unit. In this step S203, it is possible to determine whether or not the hardware is accelerated, for example, by checking whether a machine code corresponding to the bytecode exists in the storage unit. The determination criterion is not limited to the above description. If it is determined in step S203 that hardware acceleration is possible, control is passed to step S207. Otherwise, control is passed to step S204.
S204 단계는 하드웨어 가속이 불가능한 것으로 판단될 때 수행되는 단계로서, S202 단계에서 생성된 바이트 코드에 대해 기계어로 변환하는 단계이다. 이러한 기계어 변환 과정은 CPU 코어부에 의해 수행될 수 있지만, 본 발명의 자바 스크립트 엔진 가속 장치에 포함된 기계어 변환부에 의해서도 수행 가능하다. 즉, CPU 코어부에 집중되는 부하를 줄이기 위해 본 발명의 기계어 변환부가 이를 대체하여 기계어 변환 과정을 수행할 수 있다. 또한, 이러한 CPU 코어부와 기계어 변환부는 병렬적으로 또는 순차적으로 변환 과정을 수행할 수 있어서, 기계어 변환에 대한 시간을 단축시키고, 보다 효율적인 결과물을 초래할 수 있다.Step S204 is a step performed when it is determined that hardware acceleration is impossible, and is a step of converting the bytecode generated in step S202 into a machine language. This machine language conversion process can be performed by the CPU core unit, but can also be performed by the machine language conversion unit included in the JavaScript engine acceleration apparatus of the present invention. That is, in order to reduce the load concentrated on the CPU core unit, the machine language conversion unit of the present invention can replace the machine language conversion process. In addition, the CPU core unit and the machine language conversion unit can perform a conversion process in parallel or sequentially, thereby shortening the time for machine language conversion and resulting in more efficient results.
그 후, S204 단계에서 변환된 기계어에 대해 적시(JIT) 컴파일링을 수행하는 단계(S205)가 수행된다. 여기서, 용어 적시(JIT) 컴파일링은 기계어로 변환된 자바 스크립트 함수 중에서 반복적으로 많이 사용되는 코드 영역을 기계어로 컴파일링 하고, 이를 저장부(10)에 저장함으로써, 차후에 반복적으로 많이 사용되는 코드 영역에 대해 추가적인 컴파일링을 수행하지 않고, 저장부(10)에서 로딩할 수 있는 기법을 나타낸다.Thereafter, step (S205) is performed to perform timely (JIT) compilation on the translated machine language in step S204. Here, the term timed (JIT) compiling compiles a code region frequently used repeatedly among the JavaScript functions converted into a machine language into a machine language and stores the compiled code region in the
그 후, S205 단계에서 기계어로 변환된 자바 스크립트 함수 중에서 반복적으로 많이 사용되는 코드 영역을 컴파일링 함으로써 생성된 기계어를 저장부에 추가할지 판단하는 단계(S206)가 수행된다. 즉, S206 단계는 S205 단계에서 언급한 적시(JIT) 컴파일링 기법에 종속되는 단계로 볼 수 있다. S206 단계에서 기계어를 저장부에 추가할 것으로 판단되면 제어는 S210 단계로 전달된다. 그렇지 않다면 제어는 S212 단계로 전달된다.Then, in step S205, it is determined whether to add the machine language generated by compiling the frequently used code area repeatedly in the Javascript function converted into the machine language to the storage unit (step S206). That is, step S206 may be regarded as a step that is dependent on the timed (JIT) compilation technique mentioned in step S205. If it is determined in step S206 that the machine language is to be added to the storage unit, the control is transferred to step S210. Otherwise, control passes to step S212.
S210 단계는 본 발명의 자바 스크립트 엔진 가속 장치에 포함된 기계어 관리부에 의해 저장부에 기계어를 추가하는 단계이고, 이렇게 기계어에 대한 추가가 완료되면, S211 단계에서 주소 정보 생성부에 의해, 저장부에 저장된 기계어의 주소 정보를 생성한다. S211 단계에서 생성된 주소 정보는 캐시 메모리부에 저장되어, 차후에 해당 기계어에 대한 탐색 시, 이를 더 용이하게 한다. 이러한 주소 정보의 생성이 완료되면 제어는 S212 단계로 전달된다. 또한, 여기서 캐시 메모리부는 기계어들을 직접적으로 저장하는 것이 아닌, 저장부에 저장된 기계어들에 대한 사용 횟수와 코드 영역 관리를 위한 정보들을 관리할 수 있다.In step S210, a machine language is added to the storage unit by the machine language management unit included in the JavaScript engine acceleration apparatus of the present invention. When the addition of the machine language is completed, the address information generation unit, in step S211, Generates the address information of the stored machine language. The address information generated in step S211 is stored in the cache memory unit, which makes it easier to search for the corresponding machine language later. When the generation of the address information is completed, control is passed to step S212. Here, the cache memory unit can manage the number of times of use of the machine language stored in the storage unit and information for code area management, rather than directly storing the machine language.
S207 단계는 S203 단계에서 하드웨어 가속이 가능한 것으로 판단될 때 수행되는 단계로서, 저장부에 저장된 기계어들 중 S202 단계에서 생성된 바이트 코드에 대응하는 대응 기계어가 저장된 주소를 탐색하는 기능을 한다. 이를 위해, S202 단계에서는 예를 들어, S211 단계에서 생성된 주소 정보와, 도 1을 참조로 언급한 인덱스 매핑 정보를 참조로 이루어질 수 있다. Step S207 is performed when it is determined that hardware acceleration is possible in step S203. The step S207 searches the address where the corresponding machine language corresponding to the bytecode generated in step S202 among the machine words stored in the storage unit is stored. For this, in step S202, for example, the address information generated in step S211 and the index mapping information referred to with reference to FIG. 1 may be referred to.
그 후, S207 단계에서 탐색된 주소 정보를 근거로 탐색된 대응 기계어를 캐시 메모리로 로딩하는 단계(S208)가 수행되고, 카운터부에 의해 로딩된 대응 기계어의 사용 횟수를 증가시키는 단계(S209)가 수행된다. 앞서 언급한 것처럼, 기계어들에 대한 사용 횟수는 기계어의 관리 즉, 사용 빈도수가 낮은 기계어들의 삭제를 위해 이용될 수 있다. 그 후, 제어는 S212 단계로 전달된다.Thereafter, step S208 of loading the corresponding machine language searched based on the address information found in step S207 into the cache memory is performed, and step S209 of increasing the number of times of use of the corresponding machine language loaded by the counter part . As mentioned earlier, the number of uses for machine languages can be used for the management of machine language, that is, the deletion of machine languages with low frequency of use. Then, control is passed to step S212.
S212 단계는 기계어에 대한 관리가 수행될지를 판단하는 단계이다. S212 단계에서 기계어에 대한 관리가 필요하다고 판단되면 제어는 S213 단계로 전달된다. 그렇지 않다면 제어는 종료 블록으로 전달된다.In step S212, it is determined whether management of the machine language is to be performed. If it is determined in step S212 that the management of the machine language is necessary, the control is transferred to step S213. Otherwise control is passed to the end block.
S213 단계는 기계어 관리부에 의해, 기계어들 중 기설정된 기간 동안 사용 횟수가 기설정된 사용 임계값 이하인 기계어들을 삭제하는 단계이다. 이러한 S213 단계를 통해, 저장부에는 계속 기계어들이 추가되는 것이 아닌, 사용 빈도수가 낮은 기계들이 삭제되므로, 보다 효율적인 저장부에 대한 관리가 가능해진다.
In step S213, the machine language management unit deletes machine words whose use frequency is less than or equal to a predetermined usage threshold value for a preset period of machine language. Through the step S213, since the machines having low frequency of use are deleted, not the machine words are continuously added to the storage unit, management of the storage unit can be more efficiently performed.
이상에서와 같이 도면과 명세서에서 최적의 실시예가 개시되었다. 여기서 특정한 용어들이 사용되었으나, 이는 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.As described above, an optimal embodiment has been disclosed in the drawings and specification. Although specific terms have been employed herein, they are used for purposes of illustration only and are not intended to limit the scope of the invention as defined in the claims or the claims. Therefore, those skilled in the art will appreciate that various modifications and equivalent embodiments are possible without departing from the scope of the present invention. Accordingly, the true scope of the present invention should be determined by the technical idea of the appended claims.
20 : CPU 코어부 30 : 캐시 메모리부
100 : 자바 스크립트 엔진 가속 장치 110 : 판단부
120 : 기계어 변환부 130 : 기계어 관리부
140 : 주소 정보 생성부 150 : 카운팅부
160 : 인덱스 매핑부20: CPU core unit 30: cache memory unit
100: JavaScript engine acceleration device 110:
120: Machine language conversion unit 130: Machine language management unit
140: address information generating unit 150: counting unit
160: index mapping unit
Claims (10)
상기 판단부에서 하드웨어 가속이 가능하다고 판단되면, 저장부에 저장된 기계어들 중 상기 바이트 코드에 대응하는 대응 기계어가 저장된 주소를 탐색하는 주소 정보 생성부;
상기 대응 기계어를 캐시 메모리부로 로딩하는 기계어 관리부; 및
저장부에 저장된 기계어들 각각에 대한 사용 횟수를 카운팅하는 카운팅부를 포함하고, 상기 자바 스크립트 엔진과 상호 작용하며, 상기 저장부에 저장된 기계어들은 상기 자바 스크립트 엔진에서 자바 스크립트 함수 중 기설정된 횟수 이상으로 사용된 함수들을 적시 컴파일링함으로써 기존에 생성된 언어인, 자바 스크립트 엔진 가속 장치.A judging unit for judging whether a bytecode generated through a CPU core unit can be hardware accelerated based on the Javascript source in a Javascript engine compiling a JavaScript source inputted from a user into a machine language;
An address information generation unit for searching for an address where a corresponding machine language corresponding to the bytecode among the machine words stored in the storage unit is stored, when the determination unit determines that hardware acceleration is possible;
A machine language management unit for loading the corresponding machine language into a cache memory unit; And
And a counting unit for counting the number of times of use of each of the machine words stored in the storage unit, wherein the machine words stored in the storage unit are used in a number equal to or greater than a preset number of JavaScript functions in the JavaScript engine A JavaScript engine accelerator, which is a previously generated language by timely compiling functions.
상기 주소 정보 생성부는, 자바 스크립트 엔진을 통해 생성된 기계어들을 저장부에 저장할 때, 기계어들 각각이 저장된 주소 정보를 생성하는 것을 특징으로 하는, 자바 스크립트 엔진 가속 장치.The method according to claim 1,
Wherein the address information generating unit generates address information in which each of the machine languages is stored when storing the machine words generated through the JavaScript engine in the storage unit.
상기 기계어 관리부는,
기계어들 각각에 대한 사용 횟수를 근거로, 기계어들 중 기설정된 기간 동안 사용 횟수가 기설정된 사용 임계값 이하인 기계어들을 삭제하는 것을 특징으로 하는, 자바 스크립트 엔진 가속 장치.3. The method of claim 2,
The machine-
And deletes machine words whose use frequency is less than or equal to a predetermined use threshold value for a predetermined period among machine words based on the use frequency for each of the machine words.
상기 캐시 메모리부는 저장부에 저장된 기계어들 각각에 대한 사용 횟수 정보와, 기계어들에 대한 코드 영역 정보를 포함하는 것을 특징으로 하는, 자바 스크립트 엔진 가속 장치.3. The method of claim 2,
Wherein the cache memory unit includes usage frequency information for each of the machine languages stored in the storage unit and code region information for machine languages.
상기 하드웨어 가속이 가능한지 판단하는 단계에서 하드웨어 가속이 가능하다고 판단되면, 주소 정보 생성부에 의해, 저장부에 저장된 기계어들 중 상기 바이트 코드에 대응하는 대응 기계어가 저장된 주소를 탐색하는 단계;
기계어 관리부에 의해, 상기 대응 기계어를 캐시 메모리부로 로딩하는 단계; 및
카운팅부에 의해, 저장부에 저장된 기계어들 각각에 대한 사용 횟수를 카운팅하는 단계를 포함하고,
상기 자바 스크립트 엔진과 상호 작용하며, 상기 저장부에 저장된 기계어들은 상기 자바 스크립트 엔진에서 자바 스크립트 함수 중 기설정된 횟수 이상으로 사용된 함수들을 적시 컴파일링함으로써 기존에 생성된 언어인, 자바 스크립트 엔진 가속 방법.Determining whether hardware acceleration is possible for the bytecode generated through the CPU core unit based on the JavaScript source in a JavaScript engine that compiles a JavaScript source input from a user into a machine language by the determination unit;
Searching for an address where a corresponding machine language corresponding to the bytecode stored in the storage unit is stored by the address information generation unit if it is determined that hardware acceleration is possible in the step of determining whether hardware acceleration is possible;
Loading the corresponding machine language into the cache memory unit by the machine language management unit; And
Counting the number of times of use for each of the machine words stored in the storage unit by the counting unit,
The machine language stored in the storage unit interacts with the JavaScript engine, and the JavaScript engine accelerates a JavaScript engine acceleration method, which is a previously generated language, by timely compiling functions that are used more than a preset number of JavaScript functions in the JavaScript engine .
상기 주소 정보 생성부에 의해, 자바 스크립트 엔진을 통해 생성된 기계어들을 저장부에 저장할 때, 기계어들 각각이 저장된 주소 정보를 생성하는 단계를 더 포함하는 것을 특징으로 하는, 자바 스크립트 엔진 가속 방법.The method according to claim 6,
Further comprising generating, by the address information generation unit, address information stored in each of the machine languages when storing the machine words generated through the JavaScript engine in the storage unit.
상기 기계어 관리부에 의해, 기계어들 각각에 대한 사용 횟수를 근거로, 기계어들 중 기설정된 기간 동안 사용 횟수가 기설정된 사용 임계값 이하인 기계어들을 삭제하는 단계를 더 포함하는 것을 특징으로 하는, 자바 스크립트 엔진 가속 방법.8. The method of claim 7,
Further comprising the step of deleting, by the machine language management unit, machine words whose use frequency is less than or equal to a preset use threshold value for a predetermined period of machine words based on the use frequency of each machine language, Acceleration method.
상기 캐시 메모리부는 저장부에 저장된 기계어들 각각에 대한 사용 횟수 정보와, 기계어들에 대한 코드 영역 정보를 포함하는 것을 특징으로 하는, 자바 스크립트 엔진 가속 방법.
8. The method of claim 7,
Wherein the cache memory unit includes usage frequency information for each of the machine words stored in the storage unit and code region information for machine words.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020140010353A KR101694291B1 (en) | 2014-01-28 | 2014-01-28 | Apparatus and method for accelerating java script engine |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020140010353A KR101694291B1 (en) | 2014-01-28 | 2014-01-28 | Apparatus and method for accelerating java script engine |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20150089577A KR20150089577A (en) | 2015-08-05 |
KR101694291B1 true KR101694291B1 (en) | 2017-01-10 |
Family
ID=53885995
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020140010353A KR101694291B1 (en) | 2014-01-28 | 2014-01-28 | Apparatus and method for accelerating java script engine |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR101694291B1 (en) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113094040B (en) * | 2021-03-08 | 2024-06-28 | 南京唯优信息技术有限公司 | Applet compiling method and device |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101100439B1 (en) * | 2010-12-16 | 2011-12-30 | 한국과학기술연구원 | A method for performing effective just-in-time compile in multi-core environment |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6332215B1 (en) * | 1998-12-08 | 2001-12-18 | Nazomi Communications, Inc. | Java virtual machine hardware for RISC and CISC processors |
KR101407628B1 (en) * | 2007-06-04 | 2014-06-13 | 더 보드 오브 리젠츠 오브 더 유니버시티 오브 텍사스 시스템 | Apparatus and method for increasing the speed of performing task |
KR100964581B1 (en) * | 2008-08-20 | 2010-06-21 | 주식회사 컴퍼니원헌드레드 | Script language execution system using byte code based on two step register |
-
2014
- 2014-01-28 KR KR1020140010353A patent/KR101694291B1/en active IP Right Grant
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101100439B1 (en) * | 2010-12-16 | 2011-12-30 | 한국과학기술연구원 | A method for performing effective just-in-time compile in multi-core environment |
Also Published As
Publication number | Publication date |
---|---|
KR20150089577A (en) | 2015-08-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9720708B2 (en) | Data layout transformation for workload distribution | |
US9766867B2 (en) | Systems and methods for improving performance of mobile applications | |
Rigger et al. | Bringing low-level languages to the JVM: Efficient execution of LLVM IR on Truffle | |
US8751823B2 (en) | System and method for branch function based obfuscation | |
WO2012145517A1 (en) | Inline function linking | |
JP4806060B2 (en) | Compiler program, compiling method, and computer system | |
JP6418696B2 (en) | Instruction set simulator and method for generating the simulator | |
Grimmer et al. | Trufflec: Dynamic execution of c on a java virtual machine | |
Shen et al. | A retargetable static binary translator for the ARM architecture | |
CN112487092B (en) | Intelligent contract calling method and device based on blockchain | |
Sato et al. | ExanaDBT: A dynamic compilation system for transparent polyhedral optimizations at runtime | |
US11379195B2 (en) | Memory ordering annotations for binary emulation | |
Park et al. | Concurrent JavaScript parsing for faster loading of Web apps | |
KR101694291B1 (en) | Apparatus and method for accelerating java script engine | |
Park et al. | Reusing the Optimized Code for JavaScript Ahead-of-Time Compilation | |
CN113791770B (en) | Code compiler, code compiling method, code compiling system, and computer medium | |
Lim et al. | A selective ahead-of-time compiler on android device | |
CN102360306A (en) | Method for extracting and optimizing information of cyclic data flow charts in high-level language codes | |
Deo et al. | Performance and metrics analysis between python3 via mojo | |
Li et al. | Enhancing Dynamic Binary Translation in Mobile Computing by Leveraging Polyhedral Optimization | |
Fumero et al. | Using compiler snippets to exploit parallelism on heterogeneous hardware: a Java reduction case study | |
Sonntag et al. | Efficient compilation strategy for object‐oriented languages under the closed‐world assumption | |
EP4083785B1 (en) | Profiling and optimization of compiler-generated code | |
US11755300B1 (en) | Systems and methods for array structure processing | |
KR20040044655A (en) | Method of generating bytecodes for loop in java virtual machine and processing the bytecodes |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20191223 Year of fee payment: 4 |