JP4035004B2 - 情報処理装置 - Google Patents

情報処理装置 Download PDF

Info

Publication number
JP4035004B2
JP4035004B2 JP2002185451A JP2002185451A JP4035004B2 JP 4035004 B2 JP4035004 B2 JP 4035004B2 JP 2002185451 A JP2002185451 A JP 2002185451A JP 2002185451 A JP2002185451 A JP 2002185451A JP 4035004 B2 JP4035004 B2 JP 4035004B2
Authority
JP
Japan
Prior art keywords
instruction
information processing
processing apparatus
information
register
Prior art date
Legal status (The legal status 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 status listed.)
Expired - Lifetime
Application number
JP2002185451A
Other languages
English (en)
Other versions
JP2004030222A5 (ja
JP2004030222A (ja
Inventor
哲也 山田
直彦 入江
賢伸 津野田
隆宏 入田
圭介 十山
正之 樺沢
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Renesas Technology Corp
Original Assignee
Renesas Technology Corp
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 Renesas Technology Corp filed Critical Renesas Technology Corp
Priority to JP2002185451A priority Critical patent/JP4035004B2/ja
Priority to US10/457,409 priority patent/US7124283B2/en
Publication of JP2004030222A publication Critical patent/JP2004030222A/ja
Publication of JP2004030222A5 publication Critical patent/JP2004030222A5/ja
Application granted granted Critical
Publication of JP4035004B2 publication Critical patent/JP4035004B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

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
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • G06F9/3879Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor for non-native instruction execution, e.g. executing a command; for Java instruction set
    • 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
    • G06F9/30181Instruction operation extension or modification
    • 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)
  • Devices For Executing Special Programs (AREA)
  • Executing Machine-Instructions (AREA)

Description

【0001】
【発明の属する技術分野】
本発明はマイクロプロセッサに使用される半導体集積回路、特に所定の中間言語をマイクロプロセッサの固有命令に変換するハードウェア加速回路を搭載する情報処理装置に関する。
【0002】
【従来の技術】
近年、Java言語で記述されたアプリケーションが携帯電話や携帯端末で急速に広がっている。Javaとはサン・マイクロシステムズ社により開発されたC++に類似したオブジェクト指向プログラミング言語である。なお、”Java”はサン・マイクロシステムズ社の登録商標である。Java言語が受けいられる要因として、Java言語は、中間言語に対して仮想マシンを用いてマシン固有のCPU命令に変換して実行される特徴が挙げられる。仮想マシンを備えるCPUであれば、CPUの種類に依存せずにJavaアプリケーションを実行することができるので移植性が高い。なお、中間言語とは、Javaの実行オブジェクトを生成するためのコンパイルの結果であり、バイトコードとも呼ばれる。
【0003】
仮想マシン(以下”VM”と呼ぶ)は、一般にソフトウェア(これを以下”ソフトVM”と呼ぶ)で提供されるが、各バイトコードをインタプリタで解釈実行するために低速であり、使用頻度の高いバイトコードをハードウェア実行することで高速化を行なう例が知られている。これらの例の一つには特表2000−507015(対応国際公開:WO98/21655、国際出願番号:PCT/US07/20980)がある。
【0004】
【発明が解決しようとする課題】
本願に先立ち、本願発明者等は上述のJavaに代表されるような中間言語の命令(バイトコード)のソフトVMによる命令変換とハードウェアによる命令変換の整合性について検討を行った。即ち、バイトコードの実行時にターゲットとなるマイクロコンピュータの固有言語(以下CPU命令と呼ぶ)に命令変換するハードウェアを採用する場合に、全てのバイトコードをハードウェアで変換できるのが理想である。しかし、バイトコードの中には複雑な機能を有し、変換するとCPU命令で数十から数百命令に及ぶバイトコードが存在する。このため、全てのバイトコードをハードウェア実行することは困難であり、一部のバイトコードのみをサポートしている。即ち、全てのバイトコードをハードウェア処理しようとするとハードウェアが増大しすぎてしまうからである。従って、ハードウェア処理とソフトウェア処理の切替えが必要となってくる。
【0005】
図9に本願発明者等の、ハードウェア処理とソフトウェア処理の切替えの検討図を示す。図9(A)は、バイトコードによるアプリケーションソフトウェアAPP1と、CPU命令によるアプリケーションソフトウェアAPP2がメモリマップ上に配置されている様子を示す。APP2はCPU命令NCによるものなので、直接実行が可能であり実行にあたり命令を変換する必要はない。
【0006】
これに対してバイトコードによるAPP1は、CPU命令に変換しなければ実行できない。APP1は、命令の変換実行という観点でみると以下の3種類の命令群を含んでいる。即ち、C1はバイトコードの内第1命令群に属する命令であり、ソフトVMで変換される命令である。C1はハードウェア変換器ではサポートされない命令となる。次に、C2は第2命令群に属し、ハードウェア変換器により処理される。最後に、C3は第3命令群に属し、実行時にJava例外が検出された場合である。Java例外とは、Java言語の意味制約に違反したことを表す。例えば、除数ゼロでの整数除算などの例外的な計算状況はArithmeticExceptionと定義される。Java例外検出時は、制御をソフトVMに移し、ソフトVMに含まれるエラー処理ルーチンにより処理される。C3を放置するとマイクロコンピュータ自体の暴走を招くことがあるので、適切なエラー処理が必要となるためである。
【0007】
図9(B)にC1からC3による命令群の実行の様子を示す。SはソフトVMによる処理、Hがハードウェアによる処理を表す。ここでSからHに移行するには、ハードウエアの起動処理ACT_Hが追加され、逆にHからSに移行するにはハードウェアの終了及びソフトVMの起動処理END_Hが追加される。即ち、本願発明者等は、ハードウェア非実行と実行のバイトコードが交互に現われSとHを頻繁に切り替えたり、ハードウェア処理中にJava例外が発生するとACT_HやEND_Hが発生し処理を低下させることに気がついた。
【0008】
本願発明の目的の一つは、ハードウェア処理とソフトウェア処理の切替えを高速に行うことにある。
【0009】
【課題を解決するための手段】
本願において開示される発明のうち代表的なものの概要を簡単に説明すれば、下記の通りである。すなわち、複数のレジスタと、第1フォーマット命令を固有命令として実行するための命令実行部と、命令変換回路とを有し、第2フォーマットで記述された第1プログラムを実行する際に、前記情報処理装置は、前記命令変換回路によって前記第1プログラムに含まれる第1命令群を前記第1フォーマット命令に変換して実行する第1動作モードと、前記第1フォーマット命令で記述された変換ソフトウェアによって前記第1プログラムに含まれる第2命令群を前記第1フォーマット命令に変換して実行する第2動作モードを有し、前記第1動作モードと前記第2動作モードとの間の動作モードの移行に際し、当該動作モードの移行動作と、前記複数のレジスタの少なくとも一つと前記命令変換回路との間のデータ転送動作とを並列に行うようにする。
【0010】
また、本願発明の別な側面によれば情報処理装置に命令変換回路とレジスタファイルの間でデータ転送を行うためのデータ転送経路とを備えるようにすると良い。
【0011】
【発明の実施の形態】
以下、本発明に係るデータ処理装置の好適な実施の形態について、添付図面を参照しながら説明する。特に制限されないが、実施例の各ブロックを構成する回路素子は、特に制限されないが、公知のCMOS(相補型MOSトランジスタ)やバイポーラトランジスタ等の半導体集積回路技術によって、単結晶シリコンのような1個の半導体基板上に形成される。
【0012】
まず、図1に本発明の実施例のバイトコードアクセラレータの構成図を示す。CPUはキャッシュCACHEと命令バスI_BUS及びデータバスD_BUSを介して接続される。CPUは、命令を供給する命令フェッチ部(一般には命令入力部)FET、中間言語のバイトコードをCPU本来の固有命令に変換するバイトコードアクセラレータ(一般には命令変換回路)BCA、命令フェッチ部出力とバイトコードアクセラレータ出力のCPU命令を選択するセレクタSEL、命令のデコードを行うデコード部DEC、命令の演算と実行を行う命令実行部EXE、制御信号を生成する制御部CTL、プログラムカウンタPC、レジスタファイルREG_FILE、レジスタファイルとバイトコードアクセラレータBCA間のデータ転送経路P4、P5から構成される。特に制限されないが、この実施例ではレジスタファイルには16本の汎用レジスタが含まれ、レジスタR0からR15の名前で呼ばれる。
【0013】
図9で前述したように固有のCPU命令で記述されたAPP2を実行する際には、セレクタSELは常にP1のパスを選択して、CPU命令を実行し、BCAは全く動作させない。これに対して図9で前述したバイトコードで記述されたAPP1を実行する際にはSELによってP1またはP3の何れかを選択してDECに供給する。ソフトVMでバイトコードを実行させる場合にはセレクタはP1を選択する。一方、BCAを利用して処理する場合にはP2からP3を経てセレクタで選択されDECに供給される。
【0014】
バイトコードアクセラレータBCAは、変換テーブル部TRS_TBL、スタック制御部STK_CTL、制御レジスタ部CTL_REGから構成される。変換テーブル部では、スタックベースのバイトコードからレジスタベースの複数のCPU命令に変換する。変換テーブル部TRS_TBLは、ハードウェア実行をサポートする全バイトコードに対して、対応する固有のCPU命令がテーブル形式で格納されており、変換されたCPU命令が何番目の命令であるかを示すカウント情報を管理する。
【0015】
カウント情報は変換テーブル部内のステートマシンにより生成される。そのカウント情報を用いてテーブルを参照することによりバイトコードから固有の複数のCPU命令に変換することができる。バイトコードは1バイトから数バイト長までの可変長である。変換テーブル部は各バイトコードのバイトコード長を把握しており、固有のCPU命令に変換終了後、命令フェッチ部に使用バイトコード長P6を介して通知し、新たなバイトコードをP2を介して受け取る。
【0016】
本方式がソフトVMに対して高速に変換できる理由を述べる。ソフトVMでは、バイトコードをインタプリタにて1つずつ解釈実行するための命令処理ループが存在する。ソフトVM内にバイトコードに対応して固有のCPU命令に変換するテーブルが用意されており、ループ内でのバイトコード実行においては、そのテーブルを参照するためにテーブル分岐が必要である。以上のように、ソフトVMではインタプリタ部の命令処理ループオーバヘッドとテーブル分岐オーバヘッドが存在するため、それらを必要としない本方式が高速である。
【0017】
スタック制御部STK_CTLは、CPUのレジスタファイル中の汎用レジスタR0〜R7のうち、本数は特に規定されないが、上位7つのスタックを7本の汎用レジスタに割り付けた場合の割り付けの状況やスタックのトップやボトム等のスタック情報を管理する。即ち、Javaによるバイトコードはいわゆるスタックを想定している。これに対して、本願の対象とするCPUはいわゆるレジスタであり、そのままでは整合性が良くない。レジスタによりスタック処理を行うには主記憶上にスタックを作ればよいが、主記憶へのアクセスでは遅くなってしまう。このため、オペランドスタックの上位を汎用レジスタの一部(一例としてはR0〜R7)に割り当てることにより、スタックベースのバイトコードをレジスタベースのCPU命令に効率的に変換することができる。オペランドスタックをレジスタ上に割り当てるもう一つの利点として、レジスタ上の前命令の結果を次の命令に使用できるため、スタックマシンに比べ、ロードストア命令を減らすことができる。
【0018】
スタック制御部は、各CPU命令において変化するオペランドスタックの状態に対応して各命令における汎用レジスタのスタック情報を管理する。
【0019】
最後に、制御レジスタ部CTL_REGにはバイトコードアクセラレータのイネーブルビットが含まれる。バイトコードアクセラレータを使用可能とするためには、まず制御レジスタのイネーブルビットを設定する。そして、バイトコードアクセラレータは、特定のCPU命令を検出することで起動し、バイトコードの変換を開始する。
【0020】
それでは,本発明の実施例の特長となる動作を説明する。バイトコードアクセラレータBCAは起動の際、(1)CPUのプログラムカウンタPCにJava命令(バイトコード)のアドレス(JavaPC)を設定する動作と(2)CPUの汎用レジスタ(例えばR10)に記憶されたスタック情報と変換テーブル部のカウント情報から構成される内部情報をバイトコードアクセラレータのREG_CTLに設定しなければならない。プログラムカウンタの設定は、レジスタファイル中の一つの汎用レジスタ(例えばR11)から、実行部EXE、制御部CTLを経て、プログラムカウンタPCに汎用レジスタに格納されたJava命令のアドレスを設定する。このとき、並行して、レジスタファイルREG_FILEの一つの汎用レジスタ(例えばR10)に記憶されたスタック情報と変換テーブル部のカウントから成る内部情報をデータ転送経路P4を介してバイトコードアクセラレータBCAのレジスタ制御部REG_CTLに設定する。
【0021】
また、バイトコードアクセラレータBCAは終了の際、(1)CPUのプログラムカウンタにソフトVMのCPU命令アドレスを設定する動作と、(2)バイトコードアクセラレータの内部情報をCPUの汎用レジスタに待避する動作と、(3)CPUのプログラムカウンタのJavaバイトコードのアドレス(JavaPC)を汎用レジスタに退避する動作、とを行わなければならない。CPUのプログラムカウンタにソフトVMのCPU命令アドレスを設定する動作は、BCAが該当する動作を行う分岐命令に変換して出力し、セレクタにて該当命令が選択され、デコード部、制御部を経てプログラムカウンタPCに設定される。このとき、並行して、プログラムカウンタのJavaPCから制御部、実行部を経てレジスタファイルREG_FILEの一つの汎用レジスタ(例えばR11)に設定し、BCAから内部情報をデータ転送経路P5を用いてレジスタファイルREG_FILEの一つの汎用レジスタ(例えばR10)に設定する。
【0022】
以上のように、本発明では、データ転送経路P4,P5を設けたことが一つの特徴である。これによりバイトコードアクセラレータBCAとレジスタファイルREG_FILEとの間のバイトコードの内部情報のデータ転送が容易になり、ひいてはプログラムカウンタの設定と並行してバイトコードの内部情報の転送を可能にする。
【0023】
図2に本発明のバイトコードアクセラレータBCAの状態遷移図を示す。BCAは停止、休止、及び実行の3つの動作状態がある。リセット後は常に停止状態HALTに遷移する(RESET)。停止状態では、BCAは使用不可の状態であり、起動することができない。
【0024】
バイトコードの変換実行を行うためには、制御レジスタのイネーブルビットを1に設定し、休止状態IDLEに遷移する(ENABLE)。休止状態では、BCAが使用可能の状態であり、BCAの起動命令を検出することができる。この状態では、CPU命令で記述されたソフトVM、もしくはCPU命令のソフトウェアが稼動している状態である。
【0025】
更に、BCAの起動シーケンスを実行することにより実行状態EXECとなる(ACT)。実行状態では、BCAがハードウェアでバイトコードを実行している状態である。
【0026】
一方、BCAの終了シーケンスを実行することにより、BCAは休止状態になる(DEACT)。また、実行状態であってもバイトコードアクセラレータがハードウェア実行を行わず、ソフトVMで処理する非サポートバイトコード処理、NullpointerExceptionなどのJava実行時例外が発生した場合のJava例外処理、TLBミスなどのCPU例外や割込み処理を行う場合、終了シーケンスを行う。
【0027】
バイトコードアクセラレータBCAはバイトコードのハードウェア実行を行い、それ以外のソフトウェアによる実装部分と協調して仮想マシンを構成する。このソフトウェアによる実装部分がソフトVMである。本発明の実施例のBCAとソフトVMとの動作の分担及び相互の遷移状態を図3に示す。
【0028】
ソフトVM SOFT_VMは、ソフトVM実行の初期設定を行う初期化部分(INITIALIZE)36、バイトコードアクセラレータを起動する際の起動命令が置かれたフックアップ(HOOKUP)部分37、ソフトウェアで解釈実行を行うために各バイトコードの処理開始アドレスを示すディスパッチテーブル(DISPATCH TABLE)38、ディスパッチテーブルに示されたアドレスの指す固有CPU命令列が配置され、ソフトウェアで解釈実行を行うインタプリタ部(INTERPRETER)39、Java例外発生時に適切な例外処理を行うためのJava例外ハンドラ(JAVA EXP HANDLER)40から構成される。
【0029】
非サポートバイトコード時32は、ディスパッチテーブル38の該当するバイトコードよりインタプリタの処理アドレスが与えられ、インタプリタ39上で解釈実行を行う。ディスパッチテーブルは8ビットのバイトコード数分の256個の配列で構成される。
【0030】
Java実行時にBCAにおいて検出されたJava既定の例外事象33はソフトVMのJava例外ハンドラ40で処理される。Java例外の識別子はバイトコードアクセラレータBCAが与える。
【0031】
CPU例外や割込み発生時(EXP/INTR)34には、ソフトVMとは別のCPU例外/割込みハンドラ41によりソフトウェアにより適切な処理が行われる。
【0032】
HOOKUP37はバイトコードアクセラレータBCAを起動する際にソフトウェアで実行すべき起動命令が配置されたソフトウェアルーチンである。非サポートバイトコードをインタプリタで実行した後、Java例外ハンドラあるいはCPU例外/割込みハンドラはHOOKUP37に分岐後、BCAが起動される。ここで、HOOKUP37は1箇所ではなく、複数箇所存在してもよい。例えば、非サポートバイトコードの処理はソフトVMのインタプリタ部分、インタプリタの各バイトコード処理部分の末尾に起動命令を置いてもよい。
【0033】
本発明の実施例の起動シーケンスを図4に示す。休止状態のバイトコードアクセラレータBCAは起動命令として、CPUの特定の命令(J_JP)の発行を検出して実行状態となる。より具体的には、ソフトVMが一連のバイトコードを変換実行している時にソフトVMのインタプリタ(図3の39)はバイトコードを一つずつ実行するたびにHOOKUPルーチンに分岐する。HOOKUPルーチンには起動命令が置かれている。BCAが休止状態(IDLE)のとき、CPUが起動命令J_JPをフェッチすると、BCAは起動命令を検出し、以下の3命令をCPUに起動シーケンスとして供給する。CPUはJ_JP命令の実行を中止し、次の3命令を実行する。
(1) JMP @Rjp
(2) B_LDC Rsc
(3) B_MOVA @(0,PC), Rjp
(1)最初のJMP @Rjp命令では、CPUのプログラムカウンタPCをこれからBCAで処理するバイトコードのアドレス(JavaPC)に設定する命令である。ソフトVMではRjpに常にJavaPCを置いているため、RjpをPCに転送すればよい。特に制限されないが、Rjpは汎用レジスタのR11とされる。このPCで示されるバイトコードからバイトコードアクセラレータBCAによる実行が開始される。そして、プログラムカウンタを設定する前に並行して以下の(2)と(3)の2命令を実行する。
(2)B_LDC Rsc命令では、汎用レジスタRsc上にあるバイトコードアクセラレータの内部状態をバイトコードアクセラレータに設定する。内部状態には、命令カウンタ情報とレジスタスタック情報から構成される。特に制限されないが、Rscは汎用レジスタのR10とされる。内部状態を汎用レジスタで待避回復を行うことにより、CPU例外/割込み時にバイトコードアクセラレータの内部状態を正確に復帰できる。このとき、RscはソフトVM上では変更を行わないことが必要である。
(3)B_MOVA @(0,PC), Rjp命令において、J_JP命令発行時のプログラムカウンタの値を保存する。この値はHOOKUPを指しており、バイトコードアクセラレータ起動時の命令のアドレスとしてRjpに保持され、CPU例外/割込み時の復帰アドレスとして使用される。CPU例外/割込み時の復帰方法は、HOOKUPに分岐した後、BCAが起動される。
【0034】
図5に本発明の実施例の起動シーケンスのタイムチャートの一例を示す。本実施例のCPUは、パイプライン6段を想定しておりで、命令フェッチIF、バイトコード変換B、デコードID、実行EX、メモリアクセスMA、レジスタライトWBで構成される。
【0035】
時刻t0においてバイトコードアクセラレータBCAは、IDステージのCPUの特定命令J_JP命令を検出し、時刻t0にてCPUに対してID_CANCEL信号をアサートし、IDステージのキャンセルを通知すると同時に、Bステージで起動シーケンスの供給を開始する。CPUは時刻t0にてJ_JP命令をキャンセルする。
【0036】
そしてBCAは、シーケンスの先頭を表すためにINST_FIRST信号をアサートし、CPUに通知する。CPUは割込みの受付をバイトコード間の境界とするためにINST_FIRST信号を使用する。
【0037】
JMP @Rjp命令からNOP命令までが起動シーケンスである。BCAはNOP命令が時刻t3においてシーケンスの最後であることを表すためにINST_LAST信号をアサートし、CPUに通知する。CPUはプログラムカウンタの更新と次に述べる分岐命令の遅延スロットの終了信号としてINST_LAST信号を使用する。
【0038】
分岐命令JMP @Rjp命令のターゲットは時刻t4においてBCAで処理される最初のバイトコードiconst_1である。このとき、JMP命令とiconst_1の間の3命令、すなわちB_LDC、B_MOVA、NOP命令はJMP命令と並行して動作することができ、分岐命令の遅延スロットとみなすことができる。CPUは遅延スロットの範囲を、INST_LAST信号により知ることができる。遅延スロット命令が複数ある場合、遅延スロットで発生した例外の戻り番地が分岐命令となるため区別できないという問題が生じるが、上記3命令ではCPU例外を起こさないため問題は発生しない。割込みに関しても、INST_FIRST信号を用いてシーケンスの先頭のみ受付けることにすれば、例外と同じく問題は発生しない。従って、起動シーケンスのJMP命令は3命令の遅延分岐命令をもつ分岐命令とみなすことができる。
【0039】
B_LDC Rsc命令は時刻t3において汎用レジスタRscをバイトコードアクセラレータBCAに転送する。BCAは、時刻t4で最初のバイトコードを変換する前に、時刻t3でスタック情報と変換テーブル部のカウント情報からなる内部情報を基に内部のステートマシンを設定する。
【0040】
B_MOVA @(0,PC), Rjp命令は時刻t6において、J_JP命令のアドレスHOOKUPをRjpに転送する。そして、時刻t4において、最初のバイトコードのハードウェア実行が開始される。
【0041】
以上の通り、バイトコードアクセラレータBCAの起動に必要な処理を分岐命令の遅延スロットを利用して実行するため、BCAの起動動作のオーバヘッドが軽減される。この遅延スロットによる命令実行を可能する構成上の工夫は図1に示したP4、P5のBCAとレジスタファイル間のデータ転送経路である。
【0042】
図6に、本発明の実施例の終了シーケンスの一例として、BCAの非サポートバイトコードによる終了シーケンスを示す。BCAがバイトコードをハードウェアで実行できないと判断すると、非サポートバイトコードとして、ソフトVM上のインタプリタにて実行するために、BCAは実行状態から休止状態に遷移し、ソフトVMでのソフトウェア処理に移行する。レジスタ上のオペランドスタック上にデータがある場合は、レジスタのデータをまずメモリに待避する。ここでは、メモリ待避後のシーケンスを示す。次の4命令から構成される。
(1) B_MOV.L @(#op, Rdp), R0
(2) JMP @R0
(3) B_MOVA @(0,PC), Rjp
(4) B_STC Rsc
(1)まず、B_MOV.L @(#op,Rdp),R0命令により,該当バイトコードの処理アドレスは、バイトコード#opをインデクスとし、ディスパッチテーブルのベースアドレスRdpとの和から該当バイトコード処理アドレスを汎用レジスタR0にロードする。
(2)次に、JMP @R0命令でR0で示すアドレスへ分岐し、ターゲットから非サポートバイトコードのソフトウェア処理を開始する。そして、この分岐命令と並行して、次の2命令が実行される。
(3)B_MOVA @(0,PC),Rjp命令で、非サポートバイトコードのJavaPCをレジスタRjpに設定する。Rjpはこの実施例では汎用レジスタのR11である。
(4)そして、B_STC Rsc命令により、バイトコードアクセラレータのスタック情報と変換テーブル部のカウント情報からなる内部情報を汎用レジスタRsc上に設定する。Rscはこの実施例では汎用レジスタのR10である。
この分岐命令とレジスタ転送の並行処理により、終了処理が高速化される。そして、JMP @R0命令でソフトVMへのターゲットへの分岐が実行されると、バイトコードアクセラレータBCAは休止状態(IDLE)に遷移する。
【0043】
終了シーケンスの一例として、BCAのハードウェア実行を行わない非サポートバイトコードの場合について述べたが、Java例外の時もJava例外ハンドラに分岐する際に、Java例外識別コードの設定、JavaPCのRjpへの設定とバイトコードアクセラレータの内部情報の汎用レジスタRscへの設定を分岐処理と並行して実行し、非サポートバイトコードと同様に終了処理が高速化される。Java例外識別コードの設定とは、Java例外の種別をBCAからSoftVMに示すために汎用レジスタに識別コードを設定することを示す。例えば、NullPointerExceptionは0である。特に制限されないが、汎用レジスタはR0を使用する。
【0044】
CPU例外/割込みの処理では、バイトコードアクセラレータの内部情報の汎用レジスタRscへの設定、プログラムカウンタにCPU例外/割込みハンドラからの戻りアドレスとしてHOOKUPを設定、JavaPCのRjpへの設定を行った後、BCAは休止状態に遷移します。そして、通常のCPU例外/割込み処理を行う。
【0045】
図7に本発明の実施例の終了シーケンスのタイムチャートの一例を示す。BCAはハードウェアで実行ができない非サポートバイトコードnewを検出すると終了シーケンスの命令列を供給し、休止状態(IDLE)に遷移する。そして、CPUが終了シーケンスの命令列を実行後、ソフトVMに制御を移す。レジスタスタック上にデータがある場合は、レジスタのデータをメモリに待避する。ここでは、レジスタスタック上にデータがなく、メモリ待避が不要な場合のシーケンスを示している。
【0046】
時刻t0においてバイトコードアクセラレータBCAは、Bステージの非サポートバイトコードnew命令を検出すると同じ時刻t0にBステージで終了シーケンスの供給を開始する。実施例の起動シーケンスと同様に、BCAはシーケンスの先頭を表すためにINST_FIRST信号をアサートし、CPUに通知する。B_MOV.L命令からB_STC命令までが終了シーケンスである。B_STC命令はシーケンスの最後であり、BCAは時刻t3においてシーケンスの最後を表すためにINST_LAST信号をアサートし、CPUに通知する。同時刻t3において、BCAはCPUに休止状態であることを通知するために、INST_ENABLE信号をネゲートする。CPUはINST_ENABLE信号がネゲートされることによって、図1のセレクタSELはP1側を選択し、BCA側のCPU命令を選択しない。
【0047】
分岐命令JMP @R0命令のターゲットは時刻t5においてソフトVM上の最初のCPU命令がデコードされる。このとき、JMP命令とそのCPU命令の間の2命令、すなわちB_MOVA、B_STC命令はJMP命令と並行して動作することができ、起動シーケンスのときと同様に分岐命令の遅延スロットとみなすことができる。遅延スロットの範囲は、INST_LAST信号により知ることができる。
【0048】
時刻t5において、分岐の結果、プログラムカウンタPCに該当バイトコードのディスパッチテーブルのアドレス(DISP)が設定され、ソフトVM上でのCPU命令の実行が開始される。
【0049】
B_MOVA @(0,PC), Rjp命令では時刻t6において、CPUは、プログラムカウンタのJavaPCを汎用レジスタRjpに書き込む。B_STC Rsc命令では時刻t7において、CPUはバイトコードアクセラレータの内部情報STATUSを汎用レジスタRscに書き込む。
【0050】
図8に本発明のの好適な応用例としての携帯情報システムの構成図を示す。より具体的には携帯電話の構成の一例である。大きく分けて、通信部分とアプリケーション部分から構成される。通信部分は、電波を送受信するアンテナ(RF)部83、ベースバンドのモデム、コーデックを行うベースバンドプロセッサ(BASEBAND)部81、主記憶(MEM)82である。アプリケーション部分は、本発明の実施例のバイトコードアクセラレータ10を備えるCPU1を内蔵するマイクロプロセッサ(PROCESSOR)70において、インターフェース(I/F)73を介してアプリケーションプロセッサとベースバンドプロセッサが接続され、周辺インターフェース(PERIPHERAL)74を介してカメラ(CMR)75、メモリカード(CARD)76、音源IC(SOD)77、キー(KEY)78が接続され、外部バスを介して液晶(LCD)79、主記憶(MEM)80が接続される。本システム構成例は、携帯電話向けであったが、携帯情報端末やデジタルカメラなど多様なシステム構成例が考えられる。
【0051】
本システム構成例では、例えば、次のようにメモリが使用される。Javaアプリケーションは、外部サーバーよりアンテナ83を介して配給され、ベースバンドプロセッサ81を使用し、主記憶82に格納される。ソフトVMは主記憶80か主記憶82のどちらに配置してもよい。ソフトVMのインタプリタ部はアクセス頻度が高いため、内蔵メモリ上に配置されることが望ましい。この発明により、バイトコードの処理が高速に行えるため、携帯情報システムの付加価値を高めることができる。
【0052】
以上本願の発明をJavaバイトコードを例にして説明したが、本願はそれにそれに限られることはなく、本願の趣旨の範囲内で変形可能である。即ち、本願発明は、一つの命令コード体系を別の命令コード体系にハードウェアアクセラレータを用いて変換して実行するような情報処理装置に一般的に用いることができる。
【0053】
以上本願発明の実施例による効果をまとめると以下の通りである。バイトコードアクセラレータを内蔵することによって、Javaのバイトコードは高速に実行される一方、ハードウェア処理とソフトウェア処理の切替のオーバヘッドの削減が必須となっている。そこで、本発明では、処理モードを切替えるための分岐命令の実行と並行して、バイトコードアクセラレータの内部情報の転送を行うことで、従来は、内部情報の転送を行った後に分岐命令を実行する逐次処理に対して高速となる。処理モードの切替としては、バイトコードアクセラレータの起動処理、非サポートバイトコード、Java例外発生による終了処理、あるいはCPU例外/割込み発生による終了処理の際に行われ、頻度が高く、バイトコード実行の高速化に寄与する。
【0054】
【発明の効果】
本願発明によれば、中間言語のハードウェア処理とソフトウェア処理の切替えの高速化が図れる。
【図面の簡単な説明】
【図1】本発明の実施例の構成図。
【図2】本発明の実施例の状態遷移図。
【図3】本発明の実施例のソフトVMの構成図。
【図4】本発明の実施例の起動シーケンス。
【図5】本発明の実施例の起動シーケンスのタイムチャート。
【図6】本発明の実施例の終了シーケンス。
【図7】本発明の実施例の終了シーケンスのタイムチャート。
【図8】本発明の実施例のシステム構成図。
【図9】ソフトVMとハードウェアアクセラレータによるバイトコードの処理を示す図。
【符号の説明】
CPU…中央情報処理装置、CPU_CORE…CPUの中心部、 CACHE…キャッシュ、 FET…命令フェッチ部、 SEL…セレクタ、 DEC…デコード部、 EXE…実行部、CTL…制御部、 PC…プログラムカウンタ REG_FILE…レジスタファイル BCA…バイトコードアクセラレータ、TRS_TBL…変換テーブル部、 REG_CTL…レジスタ制御部、 CTL_REG…制御レジスタ部、 D_BUS…データバス、I_BUS…命令バス、P1…CPU命令パス、 P2…バイトコード入力パス、 P3…バイトコード出力パス、P4,P5…内部情報の転送経路、 HALT…停止状態 IDLE…休止状態 EXEC…実行状態、 30…バイトコードアクセラレータで発生するイベント 31…起動時 32…非サポートバイトコード時 33…Java例外発生時 34…CPU例外と割込み発生時、 35…ソフトVM 、36…初期化ルーチン部、 37…HOOKUP部、 38…ディスパッチテーブル部、 39…インタプリタ部、 40…Java例外ハンドラ、 41…CPU例外/割込みハンドラ、 50…ソフトVMHOOKUP部の起動命令、51…バイトコードアクセラレータでの変換命令列、 54…ディスパッチテーブル、 55…インタプリタ、70…マイクロプロセッサ、 73…ベースバンドプロセッサとの接続インターフェース、 74…周辺インターフェース、 75…カメラ、 76…メモリカード、 77…音源LSI、 78…キーボード、79…液晶、 80…主記憶、 81:ベースバンドプロセッサ、 82…主記憶、 83…RFアンテナ。

Claims (15)

  1. 情報処理装置であって
    ジスタと、
    前記レジスタに格納される情報を使用し、レジスタベースのプロセッサ命令を実行する命令実行部と、
    オペランドベースのバイトコードを前記プロセッサ命令へ変換する命令変換回路とを有し、
    前記情報処理装置は、前記バイトコードで記述された第1命令列において使用されるオペランドスタックへ積まれたオペランドを前記レジスタへ割り付け、前記割り付けの状況を示すスタック情報を前記レジスタへ設定し、
    前記第1命令列を前記プロセッサ命令へ変換する際に、前記情報処理装置は、前記命令変換回路によって、前記スタック情報を用い、前記第1命令列の一部である第1命令群を前記プロセッサ命令に変換する第1動作モードと、前記プロセッサ命令で記述された変換ソフトウェアによって前記第1命令列の一部である第2命令群を前記プロセッサ命令に変換する第2動作モードを有し、
    前記第1動作モードと前記第2動作モードとの間の動作モードの移行に際し、当該動作モードの移行動作と、前記レジスタと前記命令変換回路との間で前記スタック情報の転送動作とを並列に行う情報処理装置。
  2. 請求項1に記載の情報処理装置は、前記命令実行部で実行する命令のアドレスを保持するプログラムカウンタを有し、
    情報処理装置は、前記第モードから前記第モードに移行するための移行命令を受けると、前記プロセッサ命令に変換すべき前記第1命令群に属する命令のアドレスを前記プログラムカウンタに設定するための第1命令と、前記移行命令の実行時のプログラムカウンタの値を前記レジスタに退避する第2命令と、前記レジスタに保持されたスタック情報を前記命令変換回路に設定する第3命令とが実行される情報処理装置。
  3. 請求項2において、
    前記第1命令は分岐命令であって、
    前記命令実行部は、前記第1命令による分岐命令の遅延スロットを利用して前記第2命令及び前記第3命令を並列に実行する情報処理装置。
  4. 請求項2において、前記命令変換回路は、前記移行命令を受けると、休止状態から命令変換のための動作状態へと移行する情報処理装置。
  5. 請求項1に記載の情報処理装置は、前記命令実行部で実行する命令のアドレスを保持するプログラムカウンタを有し、
    情報処理装置は、前記移行命令を受けると、前記変換ソフトウェアを実行するためのアドレスを前記プログラムカウンタに設定するための第4命令と、前記移行命令のアドレスを前記レジスタに設定するための第5命令と、前記命令変換回路に保持されたスタック情報を前記レジスタに退避する第6命令とが実行される情報処理装置。
  6. 請求項5において、
    前記第4命令は分岐命令であって、
    前記命令実行部は、前記第4命令による分岐命令の遅延スロットを利用して前記第5命令及び前記第6命令を並列に実行する情報処理装置。
  7. 請求項5において、前記命令変換回路は、前記第1モードから前記第2モードに移行するための命令を受けると、動作状態から命令変換を停止する休止状態へと移行する情報処理装置。
  8. 請求項1に記載の情報処理装置は、前記命令変換回路と前記レジスタとの間で前記スタック情報の転送を行うためのデータ転送経路を有する情報処理装置。
  9. 請求項1において、命令変換回路は、第1命令群に属する場合には変換テーブル部を用いて前記プロセッサ命令に命令変換を行う情報処理装置。
  10. 情報処理装置であって
    令入力部と、
    オペランドベースのバイトコードで記述された第1命令列において使用されるオペランドスタックへ積まれたオペランドを割り付け、前記割り付けの状況を示すスタック情報を設定するレジスタファイルと、
    前記レジスタファイルに格納される情報を使用し、レジスタベースのプロセッサ命令を実行する命令実行部と、
    前記第1命令を前記命令入力部が受けた際に、前記スタック情報を用い、前記第1命令前記プロセッサ命令へ変換して前記命令実行部に供給するための命令変換回路と、
    前記命令変換回路と前記レジスタファイルの間で前記スタック情報の転送を行うためのデータ転送経路とを備える情報処理装置。
  11. 請求項10において、
    前記第1命令のうち第1命令群を前記命令入力部が受けた際に、前記命令変換回路は、前記第1命令群に属する命令を前記プロセッサ命令に変換して前記命令実行部に供給し、前記第1命令のうち第2命令群を前記命令入力部が受けた際に、前記プロセッサ命令で作成された変換ソフトウェアは、前記第2命令群に属する命令を前記プロセッサ命令に変換して前記命令実行部に供給する情報処理装置。
  12. 請求項11において、前記第2命令群は、前記命令変換回路が命令の変換をサポートしない命令である情報処理装置。
  13. 請求項11において、前記命令実行部は、パイプライン構造を有するものであって、分岐命令の遅延スロットを利用して、前記命令変換回路を起動するための複数の命令を実行する情報処理装置。
  14. 請求項1記載の情報処理装置を有する携帯情報システム。
  15. 請求項10記載の情報処理装置を有する携帯情報システム。
JP2002185451A 2002-06-26 2002-06-26 情報処理装置 Expired - Lifetime JP4035004B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2002185451A JP4035004B2 (ja) 2002-06-26 2002-06-26 情報処理装置
US10/457,409 US7124283B2 (en) 2002-06-26 2003-06-10 Hardware accelerator for a platform-independent code

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2002185451A JP4035004B2 (ja) 2002-06-26 2002-06-26 情報処理装置

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2007246635A Division JP2008004132A (ja) 2007-09-25 2007-09-25 情報処理装置

Publications (3)

Publication Number Publication Date
JP2004030222A JP2004030222A (ja) 2004-01-29
JP2004030222A5 JP2004030222A5 (ja) 2005-10-20
JP4035004B2 true JP4035004B2 (ja) 2008-01-16

Family

ID=29774111

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002185451A Expired - Lifetime JP4035004B2 (ja) 2002-06-26 2002-06-26 情報処理装置

Country Status (2)

Country Link
US (1) US7124283B2 (ja)
JP (1) JP4035004B2 (ja)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050136992A1 (en) * 2003-12-23 2005-06-23 Mueller Peter D. Providing access to auxiliary hardware in multiprocessor devices
US8064453B2 (en) * 2004-07-15 2011-11-22 Panasonic Corporation Transport stream processing apparatus
US20060018340A1 (en) * 2004-07-22 2006-01-26 Matsushita Electric Industrial Co., Ltd. Transport stream processing apparatus
JP4846226B2 (ja) 2004-10-26 2011-12-28 株式会社日立ソリューションズ 情報処理装置、情報処理方法、およびプログラム
JP4602047B2 (ja) * 2004-10-29 2010-12-22 ルネサスエレクトロニクス株式会社 情報処理装置
US7702889B2 (en) * 2005-10-18 2010-04-20 Qualcomm Incorporated Shared interrupt control method and system for a digital signal processor
US7984281B2 (en) * 2005-10-18 2011-07-19 Qualcomm Incorporated Shared interrupt controller for a multi-threaded processor
US8055872B2 (en) * 2008-02-21 2011-11-08 Arm Limited Data processor with hardware accelerator, accelerator interface and shared memory management unit
US8726248B2 (en) * 2008-06-12 2014-05-13 Oracle America, Inc. Method and apparatus for enregistering memory locations
US8799693B2 (en) 2011-09-20 2014-08-05 Qualcomm Incorporated Dynamic power optimization for computing devices
US9098309B2 (en) * 2011-09-23 2015-08-04 Qualcomm Incorporated Power consumption optimized translation of object code partitioned for hardware component based on identified operations
US9836316B2 (en) * 2012-09-28 2017-12-05 Intel Corporation Flexible acceleration of code execution
US9542211B2 (en) * 2014-03-26 2017-01-10 Intel Corporation Co-designed dynamic language accelerator for a processor
US10599441B2 (en) 2017-09-04 2020-03-24 Mellanox Technologies, Ltd. Code sequencer that, in response to a primary processing unit encountering a trigger instruction, receives a thread identifier, executes predefined instruction sequences, and offloads computations to at least one accelerator
JP2019095952A (ja) * 2017-11-21 2019-06-20 ソニーセミコンダクタソリューションズ株式会社 プロセッサ、情報処理装置および処理方法
CN111062005A (zh) * 2019-11-05 2020-04-24 武汉慧联无限科技有限公司 版权认证密码的生成方法、认证方法、装置及存储介质

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
USD275576S (en) * 1980-10-27 1984-09-18 Kirk Velma R Notebook insert filing folder
US6513156B2 (en) * 1997-06-30 2003-01-28 Sun Microsystems, Inc. Interpreting functions utilizing a hybrid of virtual and native machine instructions
US6826749B2 (en) * 1998-12-08 2004-11-30 Nazomi Communications, Inc. Java hardware accelerator using thread manager
GB2358261B (en) * 2000-01-17 2004-06-09 Advanced Risc Mach Ltd Data processing with native and interpreted program instruction words
JP2002169696A (ja) * 2000-12-04 2002-06-14 Mitsubishi Electric Corp データ処理装置
US6775763B2 (en) * 2001-03-09 2004-08-10 Koninklijke Philips Electronics N.V. Bytecode instruction processor with switch instruction handling logic
EP1313012A1 (en) * 2001-11-15 2003-05-21 Texas Instruments France Java DSP acceleration by byte-code optimization

Also Published As

Publication number Publication date
US7124283B2 (en) 2006-10-17
US20040003204A1 (en) 2004-01-01
JP2004030222A (ja) 2004-01-29

Similar Documents

Publication Publication Date Title
US7853776B2 (en) Handover between software and hardware accelerator
JP4035004B2 (ja) 情報処理装置
JP4485198B2 (ja) Javaアクセラレータを備えたプロセッサシステム
CA2074633C (en) Real-time, concurrent, multifunction digital signal processor subsystem for personal computers
US20060026322A1 (en) Interrupt management in dual core processors
US8176219B1 (en) Router having routing engine software instance and interaface controller software instance on a single processor
US7895597B2 (en) Method, apparatus and computer program product enabling full pre-emptive scheduling of green threads on a virtual machine
US20140208087A1 (en) Microprocessor architecture having extendible logic
JP2000507015A (ja) リアルタイムプログラム言語アクセラレータ
JP2001195250A (ja) 命令トランスレータ、トランスレータ付命令メモリおよびそれらを用いたデータ処理装置
KR20070072396A (ko) 이질적 리소스와의 명령어 세트 아키텍처-기반 시퀀서간통신
JP2002532772A5 (ja)
JP4224430B2 (ja) 情報処理装置
US20120240116A1 (en) Performance In A Virtualization Architecture With A Processor Abstraction Layer
US6986028B2 (en) Repeat block with zero cycle overhead nesting
US20100305937A1 (en) Coprocessor support in a computing device
JP2000284973A (ja) 二重割込みベクトル・マッピング装置とその操作方法
JP4127495B2 (ja) 情報処理装置
JP2005267640A (ja) 機能を呼び出す方法と装置
JP4465081B2 (ja) Vliwプロセッサにおける効率的なサブ命令エミュレーション
JP2008004132A (ja) 情報処理装置
EP1133724B1 (en) Microprocessor
JP2004127255A (ja) 情報処理装置
JPS62151938A (ja) 命令処理方式
JPS62120542A (ja) 情報処理装置

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050620

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20050620

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20050620

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20070713

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070724

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070925

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20071023

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20071026

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20101102

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4035004

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20101102

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20221102

Year of fee payment: 15

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20221102

Year of fee payment: 15

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20221102

Year of fee payment: 15

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

EXPY Cancellation because of completion of term