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
- stored
- bytecode
- code
- source code
- Prior art date
Links
- 238000006243 chemical reaction Methods 0.000 title claims abstract description 27
- 238000000034 method Methods 0.000 title claims abstract description 19
- 230000001133 acceleration Effects 0.000 claims abstract description 12
- 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)
- Executing Machine-Instructions (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
Description
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 | 바이트코드 변환 가속 장치 및 그 방법 |
US13/143,909 US20110276785A1 (en) | 2009-03-24 | 2010-01-21 | Byte code conversion acceleration device and a method for the same |
PCT/KR2010/000375 WO2010110531A2 (ko) | 2009-03-24 | 2010-01-21 | 바이트코드 변환 가속 장치 및 그 방법 |
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 |
WO2003025743A1 (fr) * | 2001-09-12 | 2003-03-27 | Hitachi, Ltd. | Systeme processeur ayant un accelerateur 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 | 삼성전자주식회사 | 자바 바이트코드 변환 방법 및 상기 변환을 수행하는 자바인터프리터 |
-
2009
- 2009-03-24 KR KR1020090024749A patent/KR100930831B1/ko not_active IP Right Cessation
-
2010
- 2010-01-21 WO PCT/KR2010/000375 patent/WO2010110531A2/ko active Application Filing
- 2010-01-21 US US13/143,909 patent/US20110276785A1/en not_active Abandoned
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 |
---|---|
WO2010110531A3 (ko) | 2010-11-18 |
US20110276785A1 (en) | 2011-11-10 |
WO2010110531A2 (ko) | 2010-09-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6349377B1 (en) | Processing device for executing virtual machine instructions that includes instruction refeeding means | |
JP5501338B2 (ja) | X86の仮想機をサポートするriscプロセッサ装置及び方法 | |
US7434030B2 (en) | Processor system having accelerator of Java-type of programming language | |
KR0185988B1 (ko) | 멀티프로세서 또는 파이프 라인식 프로세서 시스템에서 데이타의 보존을 확실히 하는 방법 | |
US9529595B2 (en) | Branch processing method and system | |
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 | |
TWI515652B (zh) | 具有在硬體中的分支計數表的指令最佳化處理器 | |
CA1324671C (en) | Decoding multiple specifiers in a variable length instruction architecture | |
KR101799764B1 (ko) | 다중 명령 세트로부터의 명령 디코딩 | |
JPS58125148A (ja) | 条件付きブランチ命令の予測装置 | |
US20070288909A1 (en) | Hardware JavaTM Bytecode Translator | |
US7480783B2 (en) | Systems for loading unaligned words and methods of operating the same | |
JP2002366367A (ja) | プログラム命令解釈 | |
KR20040045467A (ko) | 자바 하드웨어 가속기에 대한 추론적 실행 | |
JP6073392B2 (ja) | 命令としてデータ値を評価するシステムおよび方法 | |
JPH08320788A (ja) | パイプライン方式プロセッサ | |
KR100930831B1 (ko) | 바이트코드 변환 가속 장치 및 그 방법 | |
US7802080B2 (en) | Null exception handling | |
US7930526B2 (en) | Compare and branch mechanism | |
US20020138711A1 (en) | Instruction path coprocessor synchronization | |
JP2005506630A (ja) | 低オーバヘッドの例外チェック | |
US12217054B2 (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 | |
Craig | Implementation Techniques |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
A302 | Request for accelerated examination | ||
PA0109 | Patent application |
Patent event code: PA01091R01D Comment text: Patent Application Patent event date: 20090324 |
|
PA0201 | Request for examination | ||
PA0302 | Request for accelerated examination |
Patent event date: 20090324 Patent event code: PA03022R01D Comment text: Request for Accelerated Examination |
|
E902 | Notification of reason for refusal | ||
PE0902 | Notice of grounds for rejection |
Comment text: Notification of reason for refusal Patent event date: 20090527 Patent event code: PE09021S01D |
|
E701 | Decision to grant or registration of patent right | ||
PE0701 | Decision of registration |
Patent event code: PE07011S01D Comment text: Decision to Grant Registration Patent event date: 20091124 |
|
GRNT | Written decision to grant | ||
PR0701 | Registration of establishment |
Comment text: Registration of Establishment Patent event date: 20091202 Patent event code: PR07011E01D |
|
PR1002 | Payment of registration fee |
Payment date: 20091202 End annual number: 3 Start annual number: 1 |
|
PG1601 | Publication of registration | ||
FPAY | Annual fee payment |
Payment date: 20121126 Year of fee payment: 4 |
|
PR1001 | Payment of annual fee |
Payment date: 20121126 Start annual number: 4 End annual number: 4 |
|
FPAY | Annual fee payment |
Payment date: 20131125 Year of fee payment: 5 |
|
PR1001 | Payment of annual fee |
Payment date: 20131125 Start annual number: 5 End annual number: 5 |
|
LAPS | Lapse due to unpaid annual fee | ||
PC1903 | Unpaid annual fee |
Termination category: Default of registration fee Termination date: 20151109 |