KR100930831B1 - 바이트코드 변환 가속 장치 및 그 방법 - Google Patents
바이트코드 변환 가속 장치 및 그 방법 Download PDFInfo
- Publication number
- KR100930831B1 KR100930831B1 KR1020090024749A KR20090024749A KR100930831B1 KR 100930831 B1 KR100930831 B1 KR 100930831B1 KR 1020090024749 A KR1020090024749 A KR 1020090024749A KR 20090024749 A KR20090024749 A KR 20090024749A KR 100930831 B1 KR100930831 B1 KR 100930831B1
- Authority
- KR
- South Korea
- Prior art keywords
- source
- bytecode
- code
- stored
- decoding
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 19
- 238000006243 chemical reaction Methods 0.000 claims abstract description 26
- 230000001133 acceleration Effects 0.000 claims description 11
- 230000003213 activating effect Effects 0.000 claims 1
- 238000002620 method output Methods 0.000 claims 1
- 238000010586 diagram Methods 0.000 description 14
- 239000002699 waste material Substances 0.000 description 1
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
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Executing Machine-Instructions (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
본 발명의 바이트코드 변환 가속 장치 및 그 방법은 바이트코드 길이(BL), 원시코드 수(TNC), 스택 변화량(SV), 바이트코드에 따라 변환될 첫번째 원시코드(FNC) 및 링크주소(LA)가 저장된 디코딩 테이블(131)과, 디코딩 테이블(131)의 링크주소(LA)를 참조하여 각 바이트코드에 대응되는 첫번째 원시코드(FNC)를 제외한 변환될 원시코드들인 후순위 원시코드들(LNC)을 판독하기 위한 원시코드 테이블(135)의 참조주소(RA)가 저장된 링크테이블(133)과, 명령캐시부(1)에 저장된 모든 바이트코드들에 따라 변환될 원시코드들 중 중복되지 않는 원시코드들만이 저장된 원시코드 테이블(135)로 구성된 색인테이블(130)에 의해 디코딩신호(DO)에 따라 선택된 위치의 디코딩 테이블(131)에 상태정보(INF)와 첫번째 원시코드(FNC)를 실행부(3)로 출력하고, 디코딩신호(DO)에 따라 선택된 위치의 디코딩 테이블(131)의 링크주소(LA)에 따라 선택된 위치부터 각 바이트코드에 대응되는 후순위 원시코드들(LNC)의 수만큼 순차적으로 링크테이블(133)에 저장된 참조주소(RA)들을 판독하고, 판독된 참조주소(RA)들에 따라 선택된 원시코드 테이블(135)에 저장된 원시코드를 순차적으로 실행부(3)로 출력하도록 구성된다.
바이트코드, 원시코드, 색인테이블
Description
본 발명은 바이트코드 변환 가속 장치 및 그 방법에 관한 것으로, 특히 바이트코드에 따라 변환될 원시코드들이 저장된 색인테이블(Look-up Table)의 크기를 작게 형성할 수 있고, 가상 머신의 성능을 향상시킬 수 있는 바이트코드 변환 가속 장치 및 그 방법에 관한 것이다.
스택 연산(Stack Operation)을 기반으로 하는 자바(Java), 닷넷 프레임워크(.NET Framework) 또는 액션스크립트(Actionscript) 등은 객체지향 프로그래밍 언어로, 플랫폼과 운영 시스템간에 이동이 가능하여 인터넷 상에서 널리 사용된다.
자바 등은 가상 머신(Virtual Machine)이 해석(Interpretation)할 수 있는 바이트코드(Bytecode)로 이루어진 VML(Virtual Machine Language)이라는 중간 언어로 컴파일(compile)되어 가상 머신에 의해 바이트코드는 실행된다.
가상 머신은 바이트코드를 번역하고, 대응되는 원시코드(Native Code)로 변환한다. 바이트코드는 특정한 아키텍처(Architecture)에 얽매이지 않기 때문에 바이트코드는 가상 머신이 존재하는 한 어떠한 아키텍처에서도 실행될 수 있는 장점 은 있으나, 가상 머신은 바이트코드를 중앙처리장치에서 실행되는 원시코드로 변환시켜야 하므로 실행속도가 느린 단점을 가지고 있다.
실행속도를 개선하기 바이트코드를 색인테이블(Look-up Table)로부터 얻어진 원시코드로 변환시키는 하드웨어 가속 장치가 사용되고 있다.
도 1은 종래의 바이트코드 변환 가속 장치의 블럭도이고, 도 2는 종래의 색인테이블의 구성도이다.
도 1 및 도 2에 도시된 바와 같이 종래의 바이트코드 변환 가속 장치(10)는 바이트코드(Bytecode)가 저장된 명령캐시부(1)로부터 순차적으로 바이트코드(BC)를 수신하여 수신된 바이트코드(BC)를 저장하여 출력하는 바이트코드 버퍼(11)와, 바이트코드 버퍼(11)에 저장된 바이트코드(BC1)를 수신하여 바이트코드(BC1)를 디코딩하여 수신된 바이트코드(BC)에 해당하는 색인테이블(15)의 위치를 나타내는 디코딩신호(DO)를 출력하는 디코더(13)와, 연산코드와 오퍼랜드의 수를 포함하는 바이트코드 길이(BL), 각 바이트코드가 변환할 원시코드의 총 갯수를 나타내는 원시코드 수(TNC), 수행할 바이트코드에 의한 스택변화량을 나타내는 스택 변화량(SV) 및 각 바이트코드에 따라 변환될 원시코드(NC)들이 저장되어 디코딩신호(DO)에 따라 특정 위치에 저장된 바이트코드 길이(BL), 원시코드 수(TNC) 및 스택 변화량(SV)들로 구성된 상태정보(INF)와 변환될 원시코드(NC)들을 실행부(3)로 출력하는 색인테이블(15)과, 현재 프로그램 카운터에 색인테이블(15)에 저장된 바이트코드 길이(BL)를 가산하여 명령캐시부(1)로부터 다음에 페치될 바이트코드의 위치를 나타내는 프로그램카운터(NPC)를 출력하는 프로그램카운터 갱신부(17)로 구성된다.
종래의 색인테이블(15)에는 해당하는 바이트코드에 따라 변환될 원시코드(NC)들이 저장되어 있으며, 각 바이트코드에 따라 변환될 원시코드들은 중복되는 경우가 많이 발생된다. 예를 들어 도 2에 도시된 바와 같이 색인테이블(15)의 첫번째 위치에는 변환될 원시코드(NC)들이 a, b, c이고, 두번째 위치에는 변환될 원시코드(NC)들은 a, b, d이고, 세번째 위치에는 변환될 원시코드(NC)들은 a, b, c, f라고 가정하면, 실행부(3)에서 실행될 원시코드 a, b, c들은 첫번째, 두번째 및 세번째 바이트코드 수신시 변환되어야 할 중복되는 원시코드임을 알 수 있다.
이와 같이 종래의 색인테이블에는 원시코드들이 여러 번 중복되어 저장되어 있어 색인테이블에 저장되어야 할 원시코드의 수는 많아지게 되고, 이로 인해 저장부인 색인테이블의 크기가 커지는 문제점을 가지고 있다.
또한, 종래의 경우 특정의 바이트코드가 20개의 원시코드(NC)들로 변환된다고 가정하면, 색인테이블(15)에는 20개의 원시코드(NC)들이 저장되어야 할 공간을 가지고 있어야 하며, 변환될 원시코드가 3개인 경우에도 색인테이블(15)의 원시코드들이 저장될 공간은 20개가 필요하게 된다. 이는 메모리의 낭비를 초래하게 되므로, 이를 방지하기 위해 변환될 원시코드의 수가 많은 바이트코드들은 소프트웨어로 처리하고, 변환될 원시코드들이 특정 개수 이하인 경우에 대해서만 색인테이블을 사용하여 하드웨어로 처리하도록 구성된다.
이와 같이 종래의 경우 색인테이블에 저장될 수 있는 원시코드들의 수는 제한적이고, 이로 인해 색인테이블을 사용하여 하드웨어로 처리될 수 있는 바이트코드들의 수는 적어지게 되고, 가상 머신의 성능이 떨어지는 문제점을 가지고 있다.
본 발명의 목적은 모든 바이트코드에 따라 변환될 원시코드들 중 중복되지 않는 원시코드들만이 저장된 원시코드 테이블과, 바이트코드 길이(BL), 원시코드 수(TNC), 스택 변화량(SV), 각 바이트코드에 따라 변환될 첫번째 원시코드 및 링크주소가 저장된 디코딩 테이블과, 디코딩 테이블의 링크주소를 참조하여 각 바이트코드에 대응되는 첫번째 원시코드를 제외한 변환될 원시코드들이 저장된 원시코드 테이블의 참조주소가 저장된 링크테이블로 구성된 색인테이블의 크기를 작게 형성할 수 있어 메모리를 효율적으로 사용할 수 있고, 이로 인해 색인테이블을 사용하여 하드웨어로 처리가능한 바이트코드 수를 종래에 비해 증가시킴으로써 가상 머신의 전체 성능을 향상시킬 수 있고, 디코더에 의해 디코딩신호가 출력되면 디코팅 테이블에 저장된 첫번째 원시코드가 실행부로 출력되어 실행부에서 첫번째 원시코드가 수행되므로 가상 머신의 성능을 향상시킬 수 있는 바이트코드 변환 가속 장치 및 그 방법을 제공하는 데 있다.
상기의 목적을 달성하기 위하여 본 발명의 바이트코드 변환 가속 장치는 인에이블신호가 활성화되면 명령캐시부로부터 바이트코드를 수신하여 저장하는 버퍼; 상기 버퍼에 저장된 바이트코드를 수신하여 디코딩하여 디코딩신호를 출력하는 디코더; 연산코드와 오퍼랜드의 수를 포함하는 바이트코드 길이, 각 바이트코드가 변환할 원시코드의 총 갯수를 나타내는 원시코드 수, 수행할 바이트코드에 의한 스택 변화량을 나타내는 스택 변화량, 각 바이트코드에 따라 변환될 첫번째 원시코드 및 링크주소가 저장된 디코딩 테이블과, 명령캐시부에 저장된 모든 바이트코드들에 따라 변환될 원시코드들 중 중복되지 않는 원시코드들만이 저장된 원시코드 테이블과, 상기 디코딩 테이블의 링크주소를 참조하여 각 바이트코드에 대응되는 첫번째 원시코드를 제외한 변환될 후순위 원시코드들을 판독하기 위한 원시코드 테이블의 참조주소가 저장된 링크테이블로 구성되어, 상기 디코딩신호에 따라 선택된 위치의 상기 디코딩 테이블에 저장된 바이트코드 길이, 원시코드 수 및 스택 변화량들로 구성된 상태정보와 첫번째 원시코드를 상기 실행부로 출력하는 색인테이블; 상기 디코딩신호에 따라 선택된 위치의 상기 디코딩 테이블의 링크주소에 따라 선택된 위치부터 각 바이트코드에 대응되는 후순위 원시코드들의 수만큼 순차적으로 상기 링크테이블에 저장된 참조주소들을 판독하고, 판독된 참조주소들에 따라 선택된 상기 원시코드 테이블에 저장된 원시코드를 순차적으로 상기 실행부로 출력하는 제어수단; 상기 첫번째 원시코드와 후순위 원시코드들이 순차적으로 상기 실행부로 출력될 때 이를 카운터하여 변환될 후순위 원시코드들이 없으면 활성화된 인에이블신호를 출력하는 카운터; 및 현재 프로그램 카운터에 상기 디코딩 테이블에 저장된 바이트코드 길이를 가산하여 상기 명령캐시부로부터 다음에 수신될 바이트코드의 위치를 나타내는 프로그램카운터를 출력하는 프로그램카운터 갱신부를 구비한 것을 특징으로 한다.
상기의 목적을 달성하기 위하여 본 발명의 바이트코드 변환 가속 방법은 명령캐시부로부터 바이트코드를 순차적으로 페치하는 바이트코드 페치단계; 상기 바이트코드 페치단계에서 페치된 바이트코드를 디코딩하여 디코딩신호를 출력하는 디코딩단계; 연산코드와 오퍼랜드의 수를 포함하는 바이트코드 길이, 각 바이트코드가 변환할 원시코드의 총 갯수를 나타내는 원시코드 수, 수행할 바이트코드에 의한 스택변화량을 나타내는 스택 변화량, 각 바이트코드에 따라 변환될 첫번째 원시코드 및 링크주소가 저장된 디코딩 테이블을 구비하여 상기 디코딩신호에 따라 선택된 위치의 상기 디코딩 테이블에 저장된 바이트코드 길이, 원시코드 수 및 스택 변화량들로 구성된 상태정보와 첫번째 원시코드를 상기 실행부로 출력하고, 선택된 위치의 상기 디코딩 테이블의 링크주소를 판독하는 디코딩 테이블 접근단계; 실행부로 원시코드가 출력될 때마다 상기 원시코드 수에서 1씩 감산하여 감산결과를 출력하는 카운터단계; 상기 카운터단계에서 감산결과가 0인지를 판단하여 상기 감산결과가 0이면 상기 바이트코드 페치단계에서 새로운 바이트코드를 페치하는 비교단계; 상기 비교단계에서 상기 감산결과가 0이 아니면 상기 디코딩신호에 따라 선택된 위치의 상기 디코딩 테이블의 링크주소에 따라 선택된 위치부터 상기 감산결과가 0일때 까지 순차적으로 링크테이블에 접근하여 상기 링크테이블에 저장된 참조주소들을 판독하는 링크테이블 접근단계; 및 상기 명령캐시부에 저장된 모든 바이트코드에 대해서 변환될 원시코드들 중 중복되지 않는 원시코드들만이 저장된 원시코드 테이블을 구비하여 상기 링크테이블 접근단계에서 판독된 참조주소들에 따라 선택된 위치에 해당되는 원시코드 테이블에 저장된 원시코드를 상기 실행부로 출력하는 원시코드 테이블 접근단계를 구비한 것을 특징으로 한다.
본 발명의 바이트코드 변환 가속 장치 및 그 방법은 원시코드 테이블에는 모든 바이트코드에 따라 변환될 원시코드들 중 중복되지 않는 원시코드들만이 저장되므로 원시코드 테이블, 디코딩 테이블 및 링크테이블로 구성된 색인테이블의 크기를 종래의 비해 작게 형성할 수 있고, 이로 인해 색인테이블을 사용하여 하드웨어로 처리 가능한 바이트코드의 수를 종래에 비해 증가시킴으로써 가상 머신의 전체 성능을 향상시킬 수 있고, 디코더에 의해 디코딩신호가 출력되면 디코팅 테이블에 저장된 첫번째 원시코드가 실행부로 바로 출력되어 실행부에서 첫번째 원시코드가 수행되므로 가상 머신의 성능을 향상시킬 수 있다.
이하, 첨부된 도면을 참조하여 본 발명의 바이트코드 변환 가속 장치 및 그 방법을 상세히 설명하고자 한다.
도 3은 본 발명의 바이트코드 변환 가속 장치의 블럭도이고, 도 4a는 본 발명에 따른 디코딩 테이블의 구성도이고, 도 4b는 링크테이블의 구성도이고, 도 4c는 원시코드 테이블의 구성도이고, 도 5는 본 발명의 동작을 설명하기 위한 디코팅 테이블, 링크테이블 및 원시코드 테이블의 구성도이고, 도 6은 본 발명의 바이트코드 변환 가속 방법의 순서도이다.
도 3 내지 도 4c에 도시된 바와 같이 본 발명의 바이트코드 변환 가속 장치는 인에이블신호(EN)가 활성화되면 명령캐시부(1)로부터 바이트코드(BC)를 수신하여 저장하는 버퍼(110)와, 버퍼(110)에 저장된 바이트코드(BC1)를 수신하여 디코딩하여 디코딩신호(DO)를 출력하는 디코더(120)와, 색인테이블(130)과, 제어부(160) 와, 첫번째 원시코드(FNC)와 후순위 원시코드들(LNC)이 순차적으로 실행부(3)로 출력될 때 이를 카운터하여 변환될 후순위 원시코드들(LNC)이 없으면 활성화된 인에이블신호(EN)를 출력하는 카운터(140) 및 현재 프로그램 카운터에 디코딩 테이블(131)에 저장된 바이트코드 길이(BL)를 가산하여 명령캐시부(1)로부터 다음에 수신될 바이트코드의 위치를 나타내는 프로그램카운터(NPC)를 출력하는 프로그램카운터 갱신부(150)로 구성된다.
색인테이블(130)은 디코딩 테이블(131)과, 링크테이블(133)과 원시코드 테이블(135)로 구성된다.
디코딩 테이블(131)에는 연산코드와 오퍼랜드의 수를 포함하는 바이트코드 길이(BL), 각 바이트코드가 변환할 원시코드의 총 갯수를 나타내는 원시코드 수(TNC), 수행할 바이트코드에 의한 스택변화량을 나타내는 스택 변화량(SV), 각 바이트코드에 따라 변환될 첫번째 원시코드(FNC) 및 링크주소(LA)가 저장되며, 원시코드 테이블(135)에는 명령캐시부(1)에 저장된 모든 바이트코드들에 따라 변환될 원시코드들 중 중복되지 않는 원시코드들만이 저장되며, 링크테이블(133)에는 디코딩 테이블(131)의 링크주소(LA)를 참조하여 각 바이트코드에 대응되는 첫번째 원시코드(FNC)를 제외한 변환될 원시코드들인 후순위 원시코드들(LNC)을 판독하기 위한 원시코드 테이블(135)의 참조주소(RA)가 저장되어, 디코딩신호(DO)에 따라 선택된 위치의 디코딩 테이블(131)에 저장된 바이트코드 길이(BL), 원시코드 수(TNC) 및 스택 변화량(SV)들로 구성된 상태정보(INF)와 첫번째 원시코드(FNC)를 실행부(3)로 출력한다.
제어부(160)는 디코딩신호(DO)에 따라 선택된 위치의 디코딩 테이블(131)의 링크주소(LA)에 따라 선택된 위치부터 각 바이트코드에 대응되는 후순위 원시코드들(LNC)의 수만큼 순차적으로 링크테이블(133)에 저장된 참조주소(RA)들을 판독하고, 판독된 참조주소(RA)들에 따라 선택된 원시코드 테이블(135)에 저장된 원시코드를 순차적으로 실행부(3)로 출력한다.
카운터(140)는 디코딩 테이블(131)에 저장된 원시코드 수(TNC)를 수신하여 첫번째 원시코드(FNC)와 후순위 원시코드들(LNC)이 순차적으로 실행부(3)로 출력될 때마다 원시코드 수(TNC)에서 1씩 감산하여 감산결과(CNT)가 0이면 인에이블신호(EN)를 활성화시키도록 구성된다.
또한, 카운터(140)는 후순위 원시코드들(LNC)이 순차적으로 실행부(3)로 출력될 때마다 후순위 원시코드들(LNC)의 수에서 1씩 감산하여 감산결과(CNT)가 0이면 인에이블신호(EN)를 활성화시키도록 구성될 수 있다.
도 6에 도시된 바와 같이 본 발명의 바이트코드 변환 가속 방법은 명령캐시부(1)로부터 바이트코드(BC)를 순차적으로 페치하는 바이트코드 페치단계(S10)와, 바이트코드 페치단계(S10)에서 페치된 바이트코드(BC)를 디코딩하여 디코딩신호(DO)를 출력하는 디코딩단계(S20)와, 연산코드와 오퍼랜드의 수를 포함하는 바이트코드 길이(BL), 각 바이트코드가 변환할 원시코드의 총 갯수를 나타내는 원시코드 수(TNC), 수행할 바이트코드에 의한 스택변화량을 나타내는 스택 변화량(SV), 각 바이트코드에 따라 변환될 첫번째 원시코드(FNC) 및 링크주소(LA)가 저장된 디코딩 테이블(131)을 구비하여 디코딩신호(DO)에 따라 선택된 위치의 디코딩 테이 블(131)에 저장된 바이트코드 길이(BL), 원시코드 수(TNC) 및 스택 변화량(SV)들로 구성된 상태정보(INF)와 첫번째 원시코드(FNC)를 실행부(3)로 출력하고, 선택된 위치의 디코딩 테이블(131)의 링크주소(LA)를 판독하는 디코딩 테이블 접근단계(S30)와, 실행부(3)로 원시코드(NC)가 출력될 때마다 원시코드 수(TNC)에서 1씩 감산하여 감산결과(CNT)를 출력하는 카운터단계(S40)와, 카운터단계(S40)에서 감산결과(CNT)가 0인지를 판단하여 감산결과(CNT)가 0이면 바이트코드 페치단계(S10)에서 새로운 바이트코드를 페치하는 비교단계(S50)와, 비교단계(S50)에서 감산결과(CNT)가 0이 아니면 디코딩신호(DO)에 따라 선택된 위치의 디코딩 테이블(131)의 링크주소(LA)에 따라 선택된 위치부터 감산결과(CNT)가 0일때 까지 순차적으로 링크테이블(133)에 접근하여 상기 링크테이블(133)에 저장된 참조주소(RA)들을 판독하는 링크테이블 접근단계(S60) 및 명령캐시부(1)에 저장된 모든 바이트코드에 대해서 변환될 원시코드들 중 중복되지 않는 원시코드들만이 저장된 원시코드 테이블(135)을 구비하여 링크테이블 접근단계(S60)에서 판독된 참조주소(RA)들에 따라 선택된 위치에 해당되는 원시코드 테이블(135)에 저장된 원시코드를 실행부(3)로 출력하는 원시코드 테이블 접근단계(S70)로 구성된다.
또한, 본 발명의 바이트코드 변환 가속 방법은 현재 프로그램 카운터에 디코딩 테이블(131)에 저장된 바이트코드 길이(BL)를 가산하여 명령캐시부(1)로부터 다음에 페치될 바이트코드의 위치를 나타내는 프로그램카운터를 갱신하는 프로그램카운터 갱신단계(S80)를 더 구비한다.
상기의 구성에 따른 본 발명인 바이트코드 변환 가속장치 및 그 방법의 동작은 다음과 같다.
도 4a 내지 도 4c에 도시된 바와 같이 본 발명에 따른 색인테이블(130)은 디코딩 테이블(131)과, 링크테이블(133)과, 원시코드 테이블(135)로 구성된다.
디코딩 테이블(131)은 도 4a에 도시된 바와 같이 명령캐시부(1)에 저장되는 바이트코드(BC)들의 수가 총 256개이므로 총 256개의 바이트코드(BC)에 해당되는 256개의 주소를 갖는 저장부로 구성되며, 연산코드와 오퍼랜드로 구성된 바이트코드(BC)는 바이트코드(BC)에 따라 오퍼랜드의 수는 다를 수 있고, 변환될 원시코드들의 수도 일정하지 않다. 즉, 디코딩 테이블(131)은 명령캐시부(1)에 저장된 모든 바이트코드(BC)들에 대응되도록 0번지 부터 255번지의 각 번지 주소마다 연산코드와 오퍼랜드의 수를 포함하는 바이트코드 길이(BL)와, 각 바이트코드가 변환할 원시코드들의 총 갯수를 나타내는 원시코드 수(TNC)와, 수행할 바이트코드(BC)에 의한 스택변화량을 나타내는 스택 변화량(SV)와, 각 바이트코드(BC)에 따라 변환될 원시코드들 중 첫번째 원시코드(FNC)와, 링크주소(LA)가 저장되어 있다.
원시코드 테이블(135)에는 명령캐시부(1)에 저장된 모든 바이트코드(BC)들에 따라 변환될 원시코드들 중 중복되지 않는 원시코드(LNC)들만이 저장된다. 즉, 도 4c에 도시된 바와 같이 변환될 원시코드(NC)들 중 중복되지 않는 원시코드들인 a,b,c,d,e,f 등이 원시코드 테이블(135)에 저장된다.
링크테이블(133)에는 도 4b에 도시된 바와 같이 디코딩 테이블(131)의 링크주소(LA)를 참조하여 각 바이트코드에 대응되는 첫번째 원시코드(FNC)를 제외한 변 환될 원시코드들인 후순위 원시코드들(LNC)을 판독하기 위한 원시코드 테이블(135)의 참조주소(RA)가 저장된다.
일반적으로 실행부(3)에서 실행될 원시코드들은 실행부(3)의 프로세서 구조에 따라 차이가 있지만 8비트, 16비트, 32비트 또는 그 이상으로 구성되므로 본 발명의 원시코드 테이블(135)에 의해 중복되지 않은 원시코드들만을 저장함으로써 원시코드 테이블(135)의 저장부의 크기를 작게 만들 수 있고, 중복되지 않은 원시코드들의 수는 상당히 적은 수이므로, 링크테이블(133)에 저장되는 참조주소(RA)의 비트수는 상당히 적다. 따라서 종래의 경우 색인테이블에는 각 바이트코드(BC)에 따라 변환될 모든 원시코드들이 저장되게 되어 중복되는 원시코드들에 의해 색인테이블의 저장부의 크기는 컸으나, 본 발명에 따른 색인테이블(130)의 크기는 종래에 비해 작게 만들 수 있어 메모리를 효율적으로 사용할 수 있다. 또한, 색인테이블을 사용하여 하드웨어로 처리 가능한 바이트코드의 수를 종래에 비해 증가시킴으로써 가상 머신의 전체 성능을 향상시킬 수 있다.
또한, 디코딩 테이블(131)에는 각 바이트코드(BC)에 대해서는 변환될 첫번째 원시코드(FNC)들이 저장되므로, 디코더(120)에서 디코딩이 이루어지면 바로 첫번째 원시코드(FNC)를 실행부(3)로 출력시켜 실행부(3)는 바로 첫번째 원시코드(FNC)에 따른 명령어를 수행하게 되므로 가상 머신의 성능을 향상시킬 수 있다.
예를 들어 도 5에 도시된 바와 같이 명령어캐시부(1)에서 수신된 첫번째 바이트코드(B1)의 경우 변환될 원시코드(NC)들은 a,b,d,e로, 원시코드 수(TNC)는 4이고, 변환될 첫번째 원시코드(FNC)는 a이고, 변환될 후순위 원시코드(LNC)는 순차적 으로 b,d,e이다. 두번째 바이트코드(B2)가 변환될 원시코드(NC)들은 b,c로, 원시코드 수(TNC)는 2이고, 세번째 바이트코드(B3)가 변환될 원시코드(NC)들은 a,d,e로, 원시코드 수(TNC)는 3이고, 네번째 바이트코드(B4)가 변환될 원시코드(NC)는 f로 원시코드 수(TNC)는 1이고, 다섯번째 바이트코드(B5)가 변환될 원시코드(NC)들은 d,a,f로 원시코드 수(TNC)는 3이고, 첫번째 바이트코드(B1)은 디코더(120)에 의해 디코딩 테이블(131)의 0번지와 맵핑(mapping)되도록 디코더신호(DO)를 출력하고, 마찬가지로, 두번째 바이트코드(B2)는 디코딩 테이블(131)의 1번지에 맵핑되고, 세번째 바이트코드(B3)는 디코딩 테이블(131)의 2번지에, 네번째 바이트코드(B4)는 3번지에, 다섯번째 바이트코드(B5)는 디코딩 테이블(131)의 4번지로 맵핑되었다고 가정하면 본 발명의 바이트코드 변환 가속장치 및 그 방법의 동작은 다음과 같다.
버퍼(110)는 명령캐시부(1)에 저장된 첫번째 바이트코드(B1)을 수신하여 저장하고, 첫번째 바이트코드(B1)를 디코터(120)로 출력한다.(바이트코드 페치단계(S10))
디코더(120)는 첫번째 바이트코드(B1)를 디코딩하여 디코딩 테이블(131)의 0번지에 맵핑되는 디코딩신호(DO)를 출력한다.(디코딩단계(S20))
디코딩신호(DO)에 따라 디코딩 테이블(131)의 0번지에 저장된 바이트코드 길이(BL0)와, 첫번째 바이트코드(B1)의 변환될 원시코드들의 수인 4를 갖는 원시코드 수(TNC)와, 스택변화량을 나타내는 스택 변화량(SV0), 각 바이트코드에 따라 변환될 첫번째 원시코드(FNC)인 a와, 링크테이블(133)의 0번지 주소를 가리키는 링크주소(LA) 0를 선택하여 출력한다.(디코딩 테이블 접근단계(S30))
바이트코드 길이(BL0)와, 원시코드 수(TNC)와, 스택 변화량(SV0)로 구성된 상태정보(INF)와 첫번째 원시코드(FNC)인 a는 실행부(3)로 전송되고 실행부(3)는 첫번째 원시코드(FNC)를 실행한다.
카운터(140)는 원시코드 수(TNC)인 4를 수신하여 첫번째 원시코드(FNC)가 실행부(3)로 출력될때 1씩 감산하게 되므로, 현재 카운터(140)의 감산결과(CNT)는 3을 가지며, 감산결과(CNT)가 0가 아니므로 카운터(140)의 출력인 인에에블신호(EN)는 비활성화되어 버퍼(110)는 두번째 바이트코드(B2)를 수신하지 않는다.
첫번째 바이트코드(B1)에 의해 선택된 디코딩 테이블(131)에 저장된 링크주소(LA)는 0이므로 제어부(160)는 링크테이블(133)로 0번지의 링크테이블주소(LAA)와 활성화된 판독신호(RD)를 링크테이블(133)과 원시코드 테이블(135)로 출력하여 링크테이블(133)의 0번지에 저장된 참조주소(RA)인 1을 판독하고, 링크테이블(133)에 저장된 참조주소(RA)인 1에 의해 원시코드 테이블(135)의 1번지에 저장된 후순위 원시코드(LNC)인 b를 실행부(3)로 출력하며, 이때 카운터(140)의 감산결과(CNT)는 3에서 1을 감산하여 2의 값을 가진다. 감산결과(CNT)가 2이므로 계속해서 제어부(160)는 링크테이블(133)로 1번지의 링크테이블주소(LAA)와 활성화된 판독신호(RD)를 링크테이블(133)과 원시코드 테이블(135)로 출력하여 링크테이블(133)의 1번지에 저장된 참조주소(RA) 3을 판독하여 원시코드 테이블(135)의 3번지에 저장된 후순위 원시코드(LNC) d를 실행부(3)로 출력하고, 감산결과(CNT)는 1의 값을 가진다. 이와 동일한 방법으로 감산결과(CNT)가 1이므로 계속해서 링크테이블(133)의 2번지에 저장된 참조주소(RA) 4를 판독하고, 원시코드 테이블(135)의 4번지에 저장 된 후순위 원시코드(LNC) d를 실행부(3)로 출력한다. 이때 카운터(140)의 감산결과(CNT)는 0이 되므로, 카운터(140)의 출력인 인에이블신호(EN)는 활성화되고, 제어부(160)는 판독신호(RD)를 비활성화시킨다.
이와 같이 디코딩 테이블 접근단계(S30)에서 첫번째 원시코드(FNC) a를 실행부(3)로 출력하고, 카운터단계(S40)에서 카운터(140)는 변환될 원시코드들이 실행부(3)로 출력될 때마다 변환될 원시코드의 총 갯수인 원시코드 수(TNC)에서 1씩 감산한 후, 비교단계(S50)에서 감산결과(CNT)가 0인지를 비교한 후 감산결과(CNT)가 0이면 버퍼(110)는 명령캐시부(1)에 저장된 두번째 바이트코드(B2)를 페치하고, 감산결과(CNT)가 0이 아니면, 링크테이블 접근단계(S60)에서 감산결과(CNT)가 0이 될때까지 링크주소(LA)에 따라 선택된 위치부터 감산결과(CNT)가 0일때 까지 순차적으로 링크테이블(133)에 접근하여 상기 링크테이블(133)에 저장된 참조주소(RA)들을 판독한다. 즉, 첫번째 바이트코드(B1)를 페치한 경우 링크주소(LA) 0에 의해 링크테이블(133)의 0번지, 1번지, 2번지에 각각 저장된 참조주소(RA)들을 판독한다. 원시코드 테이블 접근단계(S70)는 링크테이블 접근단계(S60)에서 판독된 참조주소(RA)들에 따라 선택된 위치에 해당되는 원시코드 테이블(135)에 저장된 원시코드를 실행부(3)로 출력한다. 이와 같이 첫번째 바이트코드(B1)에 의해 변환될 4개의 원시코드들인 첫번째 원시코드(FNC)인 a와, 첫번째 원시코드(FNC)를 제외한 변환될 나머지 원시코드들인 후순위 원시코드(LNC)들인 b,d,e는 순차적으로 실행부(3)로 출력된다.
상기와 동일한 방법에 의해 나머지 바이트코드들에 대하여 이에 해당하는 원 시코드들로 변환하여 실행부(3)로 출력한다.
상기 카운터(140)는 원시코드 수(TNC)에서 1씩 감산하도록 구성하였으나, 원시코드 수(TNC) 대신에 후순위 원시코드(LNC)들의 총수에서 1씩 감산하도록 구성될 수 있다. 즉, 후순위 원시코드(LNC)들의 총수는 원시코드 수(TNC)-1이므로, 카운터(140)는 첫번째 원시코드(FNC)가 실행부(3)로 출력될 때는 카운터하지 않고, 후순위 원시코드(LNC)들이 실행부(3)로 출력될 때마다 후순위 원시코드(LNC)들의 총수에서 1씩 감산하면 된다.
도 5에서 네번째 바이트코드(B4)는 변환될 원시코드는 하나이므로, 디코딩 테이블(131)에 저장된 링크주소(LA)는 의미가 없다. 즉, 디코딩 테이블(131)에 저장된 첫번째 원시코드(FNC)인 f를 실행부(3)로 출력되면 카운터(140)의 감산결과(CNT)는 0이되므로 링크테이블 접근단계(S60)와 원시코드 테이블 접근단계(S70)를 수행하지 않고, 바로 새로운 바이트코드를 페치하게 된다.
프로그램카운터 갱신부(150)는 현재 프로그램 카운터에 디코딩 테이블(131)에 저장된 바이트코드 길이(BL)를 가산하여 명령캐시부(1)로부터 다음에 수신될 바이트코드의 위치를 나타내는 프로그램카운터(NPC)를 출력한다.
이상과 같이 본 발명의 바이트코드 변환 가속 장치 및 그 방법은 색인테이블의 저장부의 크기를 종래에 비해 작게 형성할 수 있고, 색인테이블을 사용하여 하드웨어로 처리 가능한 바이트코드의 수를 종래에 비해 증가시킴으로써 가상 머신의 전체 성능을 향상시킬 수 있고, 실행부는 첫번째 원시코드들을 바로 실행하도록 하여 바이트코드 변환시 가상 머신의 성능을 향상시킬 수 있다.
도 1은 종래의 바이트코드 변환 가속 장치의 블럭도이고,
도 2는 종래의 색인테이블의 구성도,
도 3은 본 발명의 바이트코드 변환 가속 장치의 블럭도이고,
도 4a는 본 발명에 따른 디코딩 테이블의 구성도이고,
도 4b는 링크테이블의 구성도이고,
도 4c는 원시코드 테이블의 구성도이고,
도 5는 본 발명의 동작을 설명하기 위한 디코팅 테이블, 링크테이블 및 원시코드 테이블의 구성도이고,
도 6은 본 발명의 바이트코드 변환 가속 방법의 순서도이다.
Claims (5)
- 바이트코드(Bytecode)가 저장된 명령캐시부(1)로부터 순차적으로 바이트코드(BC)를 수신하여 실행부(3)에서 실행될 각 바이트코드에 대응되는 원시코드(NC)들로 변환시켜 상기 실행부(3)로 출력하는 바이트코드 변환 가속 장치에 있어서,인에이블신호(EN)가 활성화되면 상기 명령캐시부(1)로부터 바이트코드(BC)를 수신하여 저장하는 버퍼(110);상기 버퍼(110)에 저장된 바이트코드(BC1)를 수신하여 디코딩하여 디코딩신호(DO)를 출력하는 디코더(120);연산코드와 오퍼랜드의 수를 포함하는 바이트코드 길이(BL), 각 바이트코드가 변환할 원시코드의 총 갯수를 나타내는 원시코드 수(TNC), 수행할 바이트코드에 의한 스택변화량을 나타내는 스택 변화량(SV), 각 바이트코드에 따라 변환될 첫번째 원시코드(FNC) 및 링크주소(LA)가 저장된 디코딩 테이블(131)과, 상기 명령캐시부(1)에 저장된 모든 바이트코드들에 따라 변환될 원시코드들 중 중복되지 않는 원시코드들만이 저장된 원시코드 테이블(135)과, 상기 디코딩 테이블(131)의 링크주소(LA)를 참조하여 각 바이트코드에 대응되는 첫번째 원시코드(FNC)를 제외한 변환될 후순위 원시코드(LNC)들을 판독하기 위한 원시코드 테이블(135)의 참조주소(RA)가 저장된 링크테이블(133)로 구성되어, 상기 디코딩신호(DO)에 따라 선택된 위치의 상기 디코딩 테이블(131)에 저장된 바이트코드 길이(BL), 원시코드 수(TNC) 및 스택 변화량(SV)들로 구성된 상태정보(INF)와 첫번째 원시코드(FNC)를 상기 실행 부(3)로 출력하는 색인테이블(130);상기 디코딩신호(DO)에 따라 선택된 위치의 상기 디코딩 테이블(131)의 링크주소(LA)에 따라 선택된 위치부터 각 바이트코드에 대응되는 후순위 원시코드(LNC)들의 수만큼 순차적으로 상기 링크테이블(133)에 저장된 참조주소(RA)들을 판독하고, 판독된 참조주소(RA)들에 따라 선택된 상기 원시코드 테이블(135)에 저장된 원시코드를 순차적으로 상기 실행부(3)로 출력하는 제어수단(160);상기 첫번째 원시코드(FNC)와 후순위 원시코드들(LNC)이 순차적으로 실행부(3)로 출력될 때 이를 카운터하여 변환될 후순위 원시코드들(LNC)이 없으면 활성화된 인에이블신호(EN)를 출력하는 카운터(140); 및현재 프로그램 카운터에 상기 디코딩 테이블(131)에 저장된 바이트코드 길이(BL)를 가산하여 상기 명령캐시부(1)로부터 다음에 수신될 바이트코드의 위치를 나타내는 프로그램카운터(NPC)를 출력하는 프로그램카운터 갱신부(150)를 구비한 것을 특징으로 하는 바이트코드 변환 가속 장치.
- 제 1 항에 있어서, 상기 카운터(140)는 상기 디코딩 테이블(131)에 저장된 원시코드 수(TNC)를 수신하여 첫번째 원시코드(FNC)와 상기 후순위 원시코드들(LNC)이 순차적으로 상기 실행부(3)로 출력될 때마다 상기 원시코드 수(TNC)에서 1씩 감산하여 감산결과(CNT)가 0이면 상기 인에이블신호(EN)를 활성화시키는 것을 특징으로 하는 바이트코드 변환 가속 장치.
- 제 1 항에 있어서, 상기 카운터(140)는 상기 후순위 원시코드들(LNC)이 순차적으로 상기 실행부(3)로 출력될 때마다 상기 변환될 후순위 원시코드들(LNC)의 수에서 1씩 감산하여 감산결과(CNT)가 0이면 상기 인에이블신호(EN)를 활성화시키는 것을 특징으로 하는 바이트코드 변환 가속 장치.
- 바이트코드(Bytecode)가 저장된 명령캐시부(1)로부터 순차적으로 바이트코드(BC)를 페치하여 실행부(3)에서 실행될 각 바이트코드에 대응되는 원시코드(NC)들로 변환시켜 상기 실행부(3)로 출력하는 바이트코드 변환 가속 방법에 있어서,상기 명령캐시부(1)로부터 바이트코드(BC)를 순차적으로 페치하는 바이트코드 페치단계(S10);상기 바이트코드 페치단계(S10)에서 페치된 바이트코드(BC)를 디코딩하여 디코딩신호(DO)를 출력하는 디코딩단계(S20);연산코드와 오퍼랜드의 수를 포함하는 바이트코드 길이(BL), 각 바이트코드가 변환할 원시코드의 총 갯수를 나타내는 원시코드 수(TNC), 수행할 바이트코드에 의한 스택변화량을 나타내는 스택 변화량(SV), 각 바이트코드에 따라 변환될 첫번째 원시코드(FNC) 및 링크주소(LA)가 저장된 디코딩 테이블(131)을 구비하여 상기 디코딩신호(DO)에 따라 선택된 위치의 상기 디코딩 테이블(131)에 저장된 바이트코드 길이(BL), 원시코드 수(TNC) 및 스택 변화량(SV)들로 구성된 상태정보(INF)와 첫번째 원시코드(FNC)를 상기 실행부(3)로 출력하고, 선택된 위치의 상기 디코딩 테이블(131)의 링크주소(LA)를 판독하는 디코딩 테이블 접근단계(S30);실행부(3)로 원시코드(NC)가 출력될 때마다 상기 원시코드 수(TNC)에서 1씩 감산하여 감산결과(CNT)를 출력하는 카운터단계(S40);상기 카운터단계(S40)에서 감산결과(CNT)가 0인지를 판단하여 상기 감산결과(CNT)가 0이면 상기 바이트코드 페치단계(S10)에서 새로운 바이트코드를 페치하는 비교단계(S50);상기 비교단계(S50)에서 상기 감산결과(CNT)가 0이 아니면 상기 디코딩신호(DO)에 따라 선택된 위치의 상기 디코딩 테이블(131)의 링크주소(LA)에 따라 선택된 위치부터 상기 감산결과(CNT)가 0일때 까지 순차적으로 링크테이블(133)에 접근하여 상기 링크테이블(133)에 저장된 참조주소(RA)들을 판독하는 링크테이블 접근단계(S60); 및상기 명령캐시부(1)에 저장된 모든 바이트코드에 대해서 변환될 원시코드들 중 중복되지 않는 원시코드들만이 저장된 원시코드 테이블(135)을 구비하여 상기 링크테이블 접근단계(S60)에서 판독된 참조주소(RA)들에 따라 선택된 위치에 해당되는 원시코드 테이블(135)에 저장된 원시코드(NC)를 상기 실행부(3)로 출력하는 원시코드 테이블 접근단계(S70)를 구비한 것을 특징으로 하는 바이트코드 변환 가속 방법.
- 제 4 항에 있어서, 상기 바이트코드 변환 가속 방법은현재 프로그램 카운터에 상기 디코딩 테이블(131)에 저장된 바이트코드 길이(BL)를 가산하여 상기 명령캐시부(1)로부터 다음에 페치될 바이트코드의 위치를 나타내는 프로그램카운터를 갱신하는 프로그램카운터 갱신단계(S80)를 더 구비한 것을 특징으로 하는 바이트코드 변환 가속 방법.
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020090024749A KR100930831B1 (ko) | 2009-03-24 | 2009-03-24 | 바이트코드 변환 가속 장치 및 그 방법 |
PCT/KR2010/000375 WO2010110531A2 (ko) | 2009-03-24 | 2010-01-21 | 바이트코드 변환 가속 장치 및 그 방법 |
US13/143,909 US20110276785A1 (en) | 2009-03-24 | 2010-01-21 | Byte code conversion acceleration device and a method for the same |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020090024749A KR100930831B1 (ko) | 2009-03-24 | 2009-03-24 | 바이트코드 변환 가속 장치 및 그 방법 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR100930831B1 true KR100930831B1 (ko) | 2009-12-10 |
Family
ID=41684051
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020090024749A KR100930831B1 (ko) | 2009-03-24 | 2009-03-24 | 바이트코드 변환 가속 장치 및 그 방법 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20110276785A1 (ko) |
KR (1) | KR100930831B1 (ko) |
WO (1) | WO2010110531A2 (ko) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9836316B2 (en) * | 2012-09-28 | 2017-12-05 | Intel Corporation | Flexible acceleration of code execution |
US10783082B2 (en) | 2019-08-30 | 2020-09-22 | Alibaba Group Holding Limited | Deploying a smart contract |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20060110971A (ko) * | 2005-04-21 | 2006-10-26 | 삼성전자주식회사 | 자바 가상 머신의 명령어 수행 방법 및 그 장치 |
KR20080106796A (ko) * | 2007-06-04 | 2008-12-09 | 삼성전자주식회사 | 자바 변환 가속 장치 및 방법 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6513156B2 (en) * | 1997-06-30 | 2003-01-28 | Sun Microsystems, Inc. | Interpreting functions utilizing a hybrid of virtual and native machine instructions |
US6332215B1 (en) * | 1998-12-08 | 2001-12-18 | Nazomi Communications, Inc. | Java virtual machine hardware for RISC and CISC processors |
US7434030B2 (en) * | 2001-09-12 | 2008-10-07 | Renesas Technology Corp. | Processor system having accelerator of Java-type of programming language |
JP3808755B2 (ja) * | 2001-11-07 | 2006-08-16 | 富士通株式会社 | Jitコンパイラを備えた仮想計算機 |
US7124445B2 (en) * | 2002-06-21 | 2006-10-17 | Pace Anti-Piracy, Inc. | Protecting software from unauthorized use by converting source code modules to byte codes |
US20060026045A1 (en) * | 2004-08-02 | 2006-02-02 | Rothschild Jesse B | Method for providing an income for, or a financial benefit to an individual who loses any or all income, or loses the potential for any or all income, resulting from the necessary and/or voluntary care of another individual who is ill, injured, disabled, diseased, or otherwise incapacitated |
KR100597413B1 (ko) * | 2004-09-24 | 2006-07-05 | 삼성전자주식회사 | 자바 바이트코드 변환 방법 및 상기 변환을 수행하는 자바인터프리터 |
-
2009
- 2009-03-24 KR KR1020090024749A patent/KR100930831B1/ko not_active IP Right Cessation
-
2010
- 2010-01-21 US US13/143,909 patent/US20110276785A1/en not_active Abandoned
- 2010-01-21 WO PCT/KR2010/000375 patent/WO2010110531A2/ko active Application Filing
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20060110971A (ko) * | 2005-04-21 | 2006-10-26 | 삼성전자주식회사 | 자바 가상 머신의 명령어 수행 방법 및 그 장치 |
KR20080106796A (ko) * | 2007-06-04 | 2008-12-09 | 삼성전자주식회사 | 자바 변환 가속 장치 및 방법 |
Also Published As
Publication number | Publication date |
---|---|
US20110276785A1 (en) | 2011-11-10 |
WO2010110531A2 (ko) | 2010-09-30 |
WO2010110531A3 (ko) | 2010-11-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6996703B2 (en) | Processing device for executing virtual machine instructions | |
JP5501338B2 (ja) | X86の仮想機をサポートするriscプロセッサ装置及び方法 | |
US7434030B2 (en) | Processor system having accelerator of Java-type of programming language | |
US5142633A (en) | Preprocessing implied specifiers in a pipelined processor | |
US5167026A (en) | Simultaneously or sequentially decoding multiple specifiers of a variable length pipeline instruction based on detection of modified value of specifier registers | |
US9529595B2 (en) | Branch processing method and system | |
TWI515652B (zh) | 具有在硬體中的分支計數表的指令最佳化處理器 | |
US5148528A (en) | Method and apparatus for simultaneously decoding three operands in a variable length instruction when one of the operands is also of variable length | |
US20070118724A1 (en) | Java hardware accelerator using microcode engine | |
KR101799764B1 (ko) | 다중 명령 세트로부터의 명령 디코딩 | |
JPS58125148A (ja) | 条件付きブランチ命令の予測装置 | |
CA2649675A1 (en) | Pre-decoding variable length instructions | |
US7480783B2 (en) | Systems for loading unaligned words and methods of operating the same | |
KR20040045467A (ko) | 자바 하드웨어 가속기에 대한 추론적 실행 | |
JPH08320788A (ja) | パイプライン方式プロセッサ | |
KR100930831B1 (ko) | 바이트코드 변환 가속 장치 및 그 방법 | |
US7802080B2 (en) | Null exception handling | |
US7930526B2 (en) | Compare and branch mechanism | |
US20020138711A1 (en) | Instruction path coprocessor synchronization | |
JP2005506630A (ja) | 低オーバヘッドの例外チェック | |
US11449336B2 (en) | Method of storing register data elements to interleave with data elements of a different register, a processor thereof, and a system thereof | |
US7073049B2 (en) | Non-copy shared stack and register file device and dual language processor structure using the same | |
JP4418509B2 (ja) | Javaアクセラレータを備えたプロセッサシステム | |
Craig | Implementation Techniques | |
IE901516A1 (en) | Decoding multiple specifiers in a variable length¹instruction architecture |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
A302 | Request for accelerated 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: 20121126 Year of fee payment: 4 |
|
FPAY | Annual fee payment |
Payment date: 20131125 Year of fee payment: 5 |
|
LAPS | Lapse due to unpaid annual fee |