KR100930831B1 - 바이트코드 변환 가속 장치 및 그 방법 - Google Patents

바이트코드 변환 가속 장치 및 그 방법 Download PDF

Info

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
Application number
KR1020090024749A
Other languages
English (en)
Inventor
이종성
김현규
김관영
Original Assignee
주식회사 에이디칩스
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 주식회사 에이디칩스 filed Critical 주식회사 에이디칩스
Priority to KR1020090024749A priority Critical patent/KR100930831B1/ko
Application granted granted Critical
Publication of KR100930831B1 publication Critical patent/KR100930831B1/ko
Priority to PCT/KR2010/000375 priority patent/WO2010110531A2/ko
Priority to US13/143,909 priority patent/US20110276785A1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/3017Runtime instruction translation, e.g. macros
    • G06F9/30174Runtime instruction translation, e.g. macros for non-native instruction set, e.g. Javabyte, legacy code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45516Runtime code conversion or optimisation
    • G06F9/4552Involving 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)
  • Executing Machine-Instructions (AREA)
  • Memory System Of A Hierarchy Structure (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

바이트코드 변환 가속 장치 및 그 방법{apparatus for accelerating bytecode translation and the method}
본 발명은 바이트코드 변환 가속 장치 및 그 방법에 관한 것으로, 특히 바이트코드에 따라 변환될 원시코드들이 저장된 색인테이블(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)

  1. 바이트코드(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)를 구비한 것을 특징으로 하는 바이트코드 변환 가속 장치.
  2. 제 1 항에 있어서, 상기 카운터(140)는 상기 디코딩 테이블(131)에 저장된 원시코드 수(TNC)를 수신하여 첫번째 원시코드(FNC)와 상기 후순위 원시코드들(LNC)이 순차적으로 상기 실행부(3)로 출력될 때마다 상기 원시코드 수(TNC)에서 1씩 감산하여 감산결과(CNT)가 0이면 상기 인에이블신호(EN)를 활성화시키는 것을 특징으로 하는 바이트코드 변환 가속 장치.
  3. 제 1 항에 있어서, 상기 카운터(140)는 상기 후순위 원시코드들(LNC)이 순차적으로 상기 실행부(3)로 출력될 때마다 상기 변환될 후순위 원시코드들(LNC)의 수에서 1씩 감산하여 감산결과(CNT)가 0이면 상기 인에이블신호(EN)를 활성화시키는 것을 특징으로 하는 바이트코드 변환 가속 장치.
  4. 바이트코드(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)를 구비한 것을 특징으로 하는 바이트코드 변환 가속 방법.
  5. 제 4 항에 있어서, 상기 바이트코드 변환 가속 방법은
    현재 프로그램 카운터에 상기 디코딩 테이블(131)에 저장된 바이트코드 길이(BL)를 가산하여 상기 명령캐시부(1)로부터 다음에 페치될 바이트코드의 위치를 나타내는 프로그램카운터를 갱신하는 프로그램카운터 갱신단계(S80)를 더 구비한 것을 특징으로 하는 바이트코드 변환 가속 방법.
KR1020090024749A 2009-03-24 2009-03-24 바이트코드 변환 가속 장치 및 그 방법 KR100930831B1 (ko)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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
JP4485198B2 (ja) * 2001-09-12 2010-06-16 株式会社ルネサステクノロジ Javaアクセラレータを備えたプロセッサシステム
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 삼성전자주식회사 자바 바이트코드 변환 방법 및 상기 변환을 수행하는 자바인터프리터

Patent Citations (2)

* Cited by examiner, † Cited by third party
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
WO2010110531A3 (ko) 2010-11-18
WO2010110531A2 (ko) 2010-09-30

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
EP2018609B1 (en) Pre-decoding variable length instructions
CA1324671C (en) Decoding multiple specifiers in a variable length instruction architecture
TWI515652B (zh) 具有在硬體中的分支計數表的指令最佳化處理器
US20070118724A1 (en) Java hardware accelerator using microcode engine
US20150339125A1 (en) Branch processing method and system
KR101799764B1 (ko) 다중 명령 세트로부터의 명령 디코딩
JPS58125148A (ja) 条件付きブランチ命令の予測装置
US7480783B2 (en) Systems for loading unaligned words and methods of operating the same
US20070288909A1 (en) Hardware JavaTM Bytecode Translator
JP2021174513A (ja) データ依存脆弱分岐の機会主義的再誘導のための命令セットアーキテクチャベース自動負荷追跡
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アクセラレータを備えたプロセッサシステム

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