JP2004133641A - 情報処理装置 - Google Patents
情報処理装置 Download PDFInfo
- Publication number
- JP2004133641A JP2004133641A JP2002296869A JP2002296869A JP2004133641A JP 2004133641 A JP2004133641 A JP 2004133641A JP 2002296869 A JP2002296869 A JP 2002296869A JP 2002296869 A JP2002296869 A JP 2002296869A JP 2004133641 A JP2004133641 A JP 2004133641A
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- information processing
- operand stack
- register
- bytecode
- 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.)
- Pending
Links
Images
Landscapes
- Executing Machine-Instructions (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
【解決手段】第1フォーマット命令を固有命令として実行するための命令実行部25と、入力した第2フォーマット命令を前記第1フォーマット命令に変換して前記命令実行部25に供給する命令変換回路22と、一部をオペランドスタックに割り当て可能なレジスタファイル28とを備え、前記命令変換回路22は、前記レジスタファイル28の複数のレジスタ、あるいは複数のレジスタ群をオペランドスタックに割り当てるか否かを指定するための記憶領域を有する。
【効果】実行する中間コードに最適な数のレジスタをオペランドスタックに割り当てることにより、中間コードの実行性能を向上させる。さらに、オペランドスタックとメモリ間のデータ転送を行う専用ハードウェアを不要となり、ハードウェア規模が削減される。
【選択図】図1
Description
【発明の属する技術分野】
本発明は、情報処理装置に関し、特にレジスタファイルの一部をオペランドスタックとして割り当て可能な情報処理装置における処理性能向上に関する。
【0002】
【従来の技術】
近年、Java言語で記述されたアプリケーションが携帯電話や携帯端末で急速に広がっている。Javaとはサン・マイクロシステムズ社により開発されたC++に類似したオブジェクト指向プログラミング言語である。なお、”Java”はサン・マイクロシステムズ社の登録商標である。Java言語が受け入れられる要因として、Java言語で記述されたプログラムは、中間言語の形式で配布され、仮想マシンを用いてマシン固有のCPU命令(固有命令)に変換して実行される特徴が挙げられる。実行時において仮想マシンを備えるCPUであれば、CPUの種類に依存せずにJavaアプリケーションを実行することができるので移植性が高い。なお、中間言語とは、Javaの実行オブジェクトを生成するためのコンパイルの結果であり、Javaバイトコードまたは省略してバイトコードとも呼ばれる。
【0003】
仮想マシン(以下”VM”と呼ぶ)は、一般にソフトウェア(これを以下”ソフトVM”と呼ぶ)で提供されるが、各バイトコードをインタプリタで解釈実行するため、一般には低速である。このため、使用頻度の高いバイトコードをハードウェア実行することで高速化を行うハードウェアアクセラレータが知られている。ハードウェアアクセラレータの例については、非特許文献1に記載される。
【0004】
【特許文献1】
特開平7−110772号公報
【非特許文献1】
Java to go:Part 1;Microprocessor Report、Vol.15、No.2、Feb.2001
【0005】
【発明が解決しようとする課題】
本願発明者は、本願に先立ってCPUと協調動作するハードウェアアクセラレータでバイトコードを処理する際の、オペランドスタックの実装とバイトコード実行性能について検討を行った。ここで、協調動作とは、CPUおよびハードウェアアクセラレータがそれぞれ所定の機能を分担して実行することにより、バイトコードが実行されることを示す。協調動作の一例として、ハードウェアアクセラレータがバイトコードをCPU命令に翻訳し、CPUが翻訳された命令を実行することによりバイトコードを実行することが挙げられる。以下、ハードウェアアクセラレータがCPU命令に翻訳可能なバイトコードをサポートバイトコード、翻訳不可能なバイトコードを非サポートバイトコードとする。
【0006】
一般に、オペランドスタックはメモリ上に配置され、バイトコード実行時にはオペランドスタック、すなわちメモリへのアクセスが頻発する。実効的にメモリアクセスを高速化し、バイトコード実行性能を向上させるため、例えばCPUのレジスタファイルの一部をオペランドスタックとして割り当てることでメモリアクセス頻度を削減することが有効である。特にサポートバイトコードを連続して実行する場合、より多くの本数のレジスタをオペランドスタックとして割り当てることでその効果を高めることができる。しかし、ハードウェアアクセラレータおよびソフトVMの実装にも依存するが、非サポートバイトコードをソフトウェアで実行する場合、あるいは所定のイベントによりレジスタファイル上のオペランドスタックをすべてメモリに書き戻す必要が生じた場合のオーバヘッドを考慮すると、必ずしもより多くのレジスタをオペランドスタックとして割り当てることが性能向上に寄与するわけではないことがわかった。
【0007】
さらに、ハードウェアアクセラレータを携帯電話のようなバッテリ駆動システムに搭載する場合、駆動時間を延ばすため、低消費電力であることが期待される。そのため、バイトコード実行性能を極端に低下させることなく、ハードウェアアクセラレータのハードウェア規模を削減することが重要である。
【0008】
本発明の一つの目的は、メモリ上のオペランドへのアクセスを削減することによりバイトコード実行性能を向上させるため、オペランドスタックとして割り当てるレジスタ数を最適に指定する手段を提供することにある。
【0009】
また、本発明の他の一つの目的は、ソフトVMの移植性を高めたハードウェア規模の小さい情報処理装置を提供することである。
【0010】
【課題を解決するための手段】
本願において開示される発明のうち代表的なものの概要を簡単に説明すれば、下記のとおりである。すなわち、第1フォーマット命令を固有命令として実行するための命令実行部と、入力した第2フォーマット命令を前記第1フォーマット命令に変換して前記命令実行部に供給するための命令変換回路と、一部をオペランドスタックに割り当て可能なレジスタファイルを備え、前記命令変換回路は、前期レジスタファイルの複数のレジスタ、あるいは複数のレジスタ群をオペランドスタックに割り当てるか否かを指定するための記憶領域を有するよう、情報処理装置を構成する。
【0011】
更に望ましくは、前記レジスタファイル上に格納された有効なオペランドスタックエントリの先頭位置を特定可能なポインタ、底位置を特定可能なポインタのうち少なくとも一方、および前記レジスタファイル上に格納された有効なオペランドスタックエントリ数を特定可能な状態を記憶するための記憶領域を有するよう、情報処理装置を構成すると良い。
【0012】
更に望ましくは、前記第1フォーマット命令のうち、所定のフィールドの値が、前記レジスタファイル上に格納された有効なオペランドスタックエントリの先頭位置を特定可能なポインタ、底位置を特定可能なポインタのうち少なくとも一方を記憶するための記憶領域、もしくは前記エントリ数を特定可能な状態を記憶するための記憶領域が所定の状態であることに応答して変化するよう、情報処理装置を構成すると良い。
【0013】
更に望ましくは、前記レジスタファイル上に格納された有効なオペランドスタックエントリの先頭位置を特定可能なポインタ、底位置を特定可能なポインタのうち少なくとも一方を記憶するための記憶領域、もしくは前記エントリ数を特定可能な状態を記憶するための記憶領域が所定の状態であることに応答して、前記第1フォーマット命令が前記第2フォーマット命令から変換された命令ではない所定の命令に置換されるよう、情報処理装置を構成すると良い。
【0014】
【発明の実施の形態】
以下、本発明に係る情報処理装置の好適な実施の形態について、添付図面を参照しながら説明する。特に制限されないが、実施例の各ブロックを構成する回路素子は、公知のCMOS(相補型MOSトランジスタ)やバイポーラトランジスタ等の半導体集積回路技術によって、単結晶シリコンのような一つの半導体基板上に形成される。
【0015】
図1に、本発明の情報処理システムの実施例を示す。図1のプロセッサチップ20は、一般的なプロセッサと同様、Javaバイトコードとは異なるプロセッサ固有の命令セット(固有命令)を持っている。特に制限されないが、この実施例のCPU20には、命令フェッチ部21、命令変換部22、命令セレクタ23、命令デコード部24、命令実行部25、データメモリ制御部26、レジスタ制御部27、レジスタファイル28が、1個の半導体基板上に形成されている。命令メモリ10には、図示しないがJavaバイトコード、ソフトVM、プログラム等、データメモリ30には、図示しないがフレーム、オペランドスタック、データ等、ソフトウェアを実行するための情報を保持している。なお、命令メモリ10およびデータメモリ30は、情報を保持できるものであれば良く、例えば、キャッシュメモリのようなSRAM、メインメモリのようなDRAM、またはそのキャッシュメモリとメインメモリの両方を持つもの等が挙げられる。また、特に制限されないが、命令メモリ10やデータメモリ30がCPU20と同一チップであっても別々のチップであっても構わない。
【0016】
命令フェッチ部21は、命令メモリ10からの命令供給を制御し、フェッチした命令を命令変換部(命令変換回路)22に供給する。命令変換部22は、命令変換テーブル100、命令変換制御部110、および制御レジスタ120を含み、入力バイトコードおよび内部状態から固有命令列を生成する。命令セレクタ23では、命令フェッチ部21および命令変換部22のいずれかの出力を命令デコード部24に供給するかを選択する。命令デコード部24は、入力された固有命令をデコードし、命令実行部25、およびデータメモリ制御部26は、それぞれデコード結果に基づき、命令の実行およびデータメモリ30へのアクセス制御を行う。レジスタ制御部27は、命令実行結果をレジスタ28に格納する。レジスタファイル28は、特に制限されないが、16本のレジスタにより構成される。
【0017】
命令メモリ10から通常のCPU20の固有命令が供給された場合は、命令変換部22を介さない経路(21→23→24→25)で実行される。一方、命令メモリ10からバイトコードが供給された場合は、命令フェッチ部21を通り、命令変換部22にバイトコードが入力され、入力されたバイトコードは固有命令列に変換され、命令セレクタ23を通り、命令デコード部24、命令実行部25に送られ実行される。なお、本実施例では、命令変換部22は、JavaバイトコードをCPU20の固有命令列に変換する構成として説明したが、これに限定されるものではない。即ち、命令変換部22は、入力されたフォーマット命令を異なるフォーマット命令に変換する構成であればよい。以下、命令変換部22を構成する制御レジスタ120、命令変換制御部110および命令変換テーブル100について説明し、その動作について詳しく述べる。
【0018】
図2に、本発明における制御レジスタ120の実施例を示す。特に制限されないが、制御レジスタ120は、ハードウェアによりバイトコードを実行する際に参照されるすべてのJavaリソースについて、CPU20の備える16本のレジスタのうち、それぞれどのレジスタまたはレジスタ群に割り当てるかを指定する9つの4ビットフィールド121〜129により構成される。Javaリソースのレジスタへの割り当てを任意に指定可能とすることにより、既存のソフトVMの移植が容易となるだけでなく、レジスタ割り当てを最適化し、ソフトVMによるバイトコード実行性能を向上させる手段を提供する。一般に、最適なレジスタ割り当ては、VMのバージョンや実行するJavaアプリケーションにより異なるため、制御レジスタ120を実装しない従来のハードウェアにおいては、特定のVMバージョンやJavaアプリケーションに特化して最適化されたハードウェアを必要に応じて複数開発しなければならないという開発効率低下の問題が発生するが、制御レジスタ120を実装することによりこの問題を解決することができる。
【0019】
フィールド121、122は、それぞれバイトコード実行中の中間結果を格納するスクラッチとして割り当てるレジスタ群の開始レジスタ番号、終了レジスタ番号を指定するフィールドであり、これらの番号の範囲に含まれるレジスタがすべてスクラッチとして本数可変に割り当てられる。特に制限されないが、スクラッチに割り当てられたレジスタの内容は、ソフトVM内の命令実行により破壊されてもよいよう、命令変換部22を構成する。
【0020】
フィールド123〜124は、それぞれオペランドスタックとして割り当てるレジスタ群の開始レジスタ番号、終了レジスタ番号を指定するフィールドであり、これらの番号の範囲に含まれるレジスタがすべてオペランドスタックとして本数可変に割り当てられ、論理的にリングバッファを構成する。特に制限されないが、オペランドスタックに割り当てられたレジスタの内容は、ソフトVM内の命令実行により破壊されないよう、ソフトVM内でレジスタの内容を退避・回復する必要がある。また、ハードウェア実行をサポートするバイトコードに依存するが、バイトコード実行中にオペランドスタックの有効エントリの不足、および空きエントリの不足が同時に発生しないことを保証するため、4本以上のレジスタをオペランドスタックに割り当てることが望ましい。
【0021】
フィールド125〜129は、それぞれ所定の内部状態、Javaプログラムカウンタ、ディスパッチテーブルアドレス、Javaオペランドスタックポインタ、ローカル変数ポインタを格納するレジスタのレジスタ番号を指定するフィールドである。特に制限されないが、これらのレジスタの内容は、ソフトVM内の命令実行により破壊されないよう、ソフトVM内でレジスタの内容を退避・回復する必要がある。
【0022】
制御レジスタ120は、ハードウェアによりバイトコードを実行する際に参照されるすべてのレジスタを指定するが、CPU20の命令セットアーキテクチャにより、例えばR0レジスタを暗黙的にスクラッチレジスタに割り当ててもよい。
【0023】
また、制御レジスタ120の設定により指定されなかったレジスタは、ハードウェアによりバイトコードを実行する際に参照されず、その内容もハードウェアによるバイトコード実行中に更新されることがないため、例えばソフトVM内で使用される所定の変数を、制御レジスタ120で指定されないレジスタに格納し、ソフトVMによるバイトコード実行性能を向上させることが可能となる。
【0024】
制御レジスタ120は、レジスタの割り当てを指定できればよいので、例えばRAM、不揮発性メモリで実現してもよい。また、特定のVMバージョンやJavaアプリケーションに特化して最適化された、レジスタの割り当てを可変とする必要がないハードウェアを提供する場合は、ハードワイヤードで実現してもよい。
【0025】
図3に、制御レジスタ120の設定により、レジスタファイルの一部をオペランドスタックに割り当てた場合のオペランドスタック格納状態の例を示す。図3(a)は、有効なオペランドスタックの連続であり、s0、s1、s2…はそれぞれオペランドスタックの先頭、先頭から1エントリ下、先頭から2エントリ下の内容を示す。一方、図3(b)は、ソフトウェア上は連続しているオペランドスタックのうち、s0〜s3がオペランドスタックに割り当てられた5本のレジスタ200に、s4以降がメモリ上のスタック領域210にそれぞれ分割して格納され、さらにレジスタ200には空きエントリ201が存在する状態を示す。ここで、Rs0〜Rs3は、それぞれオペランドスタックの先頭〜先頭から3エントリ下に割り当てられたレジスタを参照するため、命令変換制御部110において使用される識別子である。なお、図3においては、ソフトウェア上の特定のスタックエントリskは、レジスタ200、もしくはメモリ上のスタック領域210のいずれか一方にのみ存在するが、双方に存在するように構成してもよい。また、ソフトウェア上の有効なスタックエントリが、オペランドスタックに割り当てられたレジスタの本数以上の場合に、必ずレジスタ200の全エントリが有効であるように構成してもよいことは言うまでもない。
【0026】
制御レジスタ120の設定に基づき、命令変換制御部110はレジスタ上のオペランドスタックを管理する。すなわち、前記識別子Rs0〜Rs3からオペランドスタックに割り当てられたレジスタ番号へ変換するとともに、命令フェッチ部21から供給されたバイトコードを実行するために必要となる有効なオペランドスタックの格納されたエントリの確保、もしくは有効なオペランドスタックの格納されてないエントリ、すなわち空きエントリの確保を行う。
【0027】
図4に、本発明における命令変換制御部110の実施例を示す。先頭位置ポインタ300(Ptop)、底位置ポインタ301(Pbot)は、それぞれレジスタ上の有効なオペランドスタックエントリのうち、先頭位置および底位置を識別するポインタであり、0〜(オペランドスタックに割り当てられたレジスタ数−1)の範囲の値をとる。特に制限されないが、先頭位置ポインタおよび底位置ポインタは、少なくともいずれか一方のみ存在すればよい。有効エントリ数302(Nvst)は、レジスタ上の有効なオペランドスタックエントリ数を示す。スタック制御部310には、前記先頭位置ポインタ300、底位置ポインタ301、有効エントリ数302、および命令変換テーブル100との間のインタフェース320、制御レジスタ120との間のインタフェース321が接続される。前記インタフェース320は、特に制限されないが、バイトコード実行に必要なレジスタ上の有効なオペランドスタックエントリ数Smin、バイトコード実行前後でのオペランドスタックエントリ数の差Sdif、識別子Rs0〜Rs3により指示されるリネーム前ソースレジスタ番号RNsv、およびリネーム前デスティネーションレジスタ番号RNdv、前記リネーム前ソースレジスタ番号、リネーム前デスティネーションレジスタ番号をそれぞれリネームしたソースレジスタ番号RNs、およびデスティネーションレジスタ番号RNdを含む。更に望ましくは、前記インタフェース320は、バイトコード実行に必要なレジスタ上の有効なオペランドスタックエントリ数が不足している場合に命令変換テーブル100に対し所定の動作を要求する信号、およびバイトコード実行に必要なレジスタ上の空きオペランドスタックエントリ数が不足している場合に命令変換テーブル100に対し所定の動作を要求する信号を含む。命令変換制御部110は以下の処理を行う。
【0028】
(1)スピルイン要求制御:前記有効エントリ数302が、バイトコード実行に必要な最低数Smin以上であるかどうかを判定する。更に望ましくは、最低数未満の場合には、メモリ上の先頭位置にあるオペランドスタックエントリの内容をレジスタ上の空きオペランドスタックエントリに転送(以下、スピルイン動作とする)し、レジスタ上の有効なエントリ数を増加させるため、命令変換テーブル100に対し、インタフェース320を介して所定の要求信号(スピルイン要求信号)を出力する。
【0029】
(2)スピルアウト要求制御:制御レジスタ120により設定されるオペランドスタックに割り当てるレジスタ数、および前記有効エントリ数302の差として定義されるレジスタ上の空きオペランドスタックエントリ数が、バイトコード実行前後でのオペランドスタックエントリ数の差Sdif以上であるかどうかを判定する。更に望ましくは、最低数未満の場合には、レジスタ上の底位置にあるオペランドスタックエントリの内容をメモリ上の先頭位置にあるオペランドスタックエントリの隣にある空きオペランドスタックエントリに転送(以下、スピルアウト動作とする)し、レジスタ上の空きエントリ数を増加させるため、命令変換テーブル100に対し、インタフェース320を介して所定の要求信号(スピルアウト要求信号)を出力する。
【0030】
(3)レジスタリネーム処理:命令変換テーブル100がデコードしたリネーム前ソースレジスタ番号RNsv、リネーム前デスティネーションレジスタ番号RNdvを受け、それぞれ対応するソースレジスタ番号RNs、デスティネーションレジスタ番号RNdを命令変換テーブル100に対して出力する。なお、特に制限されないが、本レジスタリネーム処理に、バイトコード実行に必要なレジスタ上の有効なオペランドスタックエントリ数Smin、あるいはバイトコード実行前後でのオペランドスタックエントリ数の差Sdifのうち、少なくとも一方を利用してもよい。
【0031】
(4)状態更新処理:スピルイン動作、スピルアウト動作、またはバイトコード実行の完了時、先頭位置ポインタ300、底位置ポインタ301、および有効エントリ数302の内容を更新する。
【0032】
なお、特に制限しないが、スピルイン要求信号およびスピルアウト要求信号は、必ず一方のみがアサートされるよう命令変換制御部110を構成してもよいし、両方がアサートされた場合には命令変換テーブル100内で優先度判定を行うよう構成してもよい。
【0033】
図5に、リネーム処理の動作例を示す。本動作例においては、(b)に示すように、制御レジスタ120の設定によりレジスタのうちR2〜R6がオペランドスタックとして割り当てられ、リングバッファを構成する。命令変換制御部110の内部状態である先頭位置ポインタ300、底位置ポインタ301は、特に制限されないが、それぞれ指示する対象エントリがオペランドスタックとして割り当てられたレジスタのうち、最も番号の小さいエントリから順に値0、1、…の値をとるものとする。(b)に示す命令変換制御部110の内部状態、すなわち、先頭位置ポインタ300、底位置ポインタ301、有効エントリ数302の値がそれぞれ1、3、4であることは、レジスタ上のスタック先頭エントリ、スタック底エントリがそれぞれR3、R5であり、スタック先頭から順にR3、R2、R6、R5の4エントリに有効なオペランドスタックが格納されていることを示す(R4の内容は無効である)。このとき、命令変換制御部110は、ソースレジスタ番号、デスティネーションレジスタ番号それぞれについて、(a)に示すリネーム動作を行う。すなわち、リネーム前レジスタ番号RNsv(またはRNdv)としてRs0、Rs1、Rs2、Rs3を示す識別子を受け、対応するレジスタ番号RNs(またはRNd)としてR3、R2、R6、R5を示す識別子を命令変換テーブル100に対し出力する。なお、特に制限されないが、本レジスタリネーム処理に、Smin、あるいはSdifのうち少なくとも一方を利用し、前記リネーム動作例と異なる動作をしてもよい。
【0034】
図6に、ポインタ更新の動作例を示す。本動作例においては、バイトコードの実行によりオペランドスタックエントリが2増加する。このとき、バイトコード実行前後の先頭位置ポインタ300、底位置ポインタ301、有効エントリ数302の値が(b)に示すように変化し、対応するオペランドスタック格納状態は(a)に示すように変化する。ここで、先頭位置ポインタ300および底位置ポインタ301は、0〜(オペランドスタックに割り当てられたレジスタ数−1)のいずれかの値をとるよう命令変換制御部110を構成するので、先頭位置ポインタ300の値がラップアラウンドされていることに注意されたい。このラップアラウンド処理の必要性は、オペランドスタックに割り当てるレジスタ数が固定されている場合、ポインタの状態変化の組み合わせが限られているため比較的容易に判定することが可能である。ところが、本実施例のように割り当て数を可変とする場合、その組み合わせが急激に増大することにより判定論理が複雑となり、特に高周波数動作が必要な情報処理装置においては、判定論理が動作周波数を制限する可能性があるという問題が発生する。この問題は、例えば先頭位置ポインタ300および底位置ポインタ301の両方を備え、判定論理の複雑さを緩和することにより解決できる。
【0035】
命令変換テーブル100は、命令フェッチ部21から供給されたバイトコードから、該バイトコードの実行に必要なレジスタ上のオペランドスタックエントリ数Smin、バイトコード実行前後でのオペランドスタックエントリ数の差Sdif、リネーム前ソースレジスタ番号RNsv、およびリネーム前デスティネーションレジスタ番号RNdvをデコードする。さらに、命令変換制御部110が出力するソースレジスタ番号RNsおよびデスティネーションレジスタ番号RNdを利用し、固有命令列を出力する。更に望ましくは、命令変換テーブル100は、命令変換制御部110が出力するスピルイン要求信号、またはスピルアウト要求信号を受理すると、それぞれ命令フェッチ部21が供給するバイトコードから変換された命令ではない、所定のメモリロード命令、メモリストア命令を出力する。なお、本実施例においては、スピルイン要求信号に対し、スピルアウト要求信号の方がより優先度が高いことを特徴とする。
【0036】
図7に、命令変換部22におけるバイトコード変換処理フローの概要を示す。所定の手段によりバイトコード変換処理が起動(ステップ400)されると、命令変換制御部110は、その内部状態および命令変換テーブル100から供給されるデコード結果に基づき、スピルイン要求信号およびスピルアウト要求信号を生成する。スピルアウト要求が発生(ステップ401)すると、命令変換テーブル100は所定のスピルアウト処理(ステップ410)を行う。スピルアウト要求が発生せず、かつスピルイン要求が発生(ステップ402)すると、命令変換テーブル100は所定のスピルイン処理(ステップ411)を行う。スピルアウト要求、スピルイン要求いずれも発生しない場合、命令変換テーブル100はバイトコードの実行を開始可能と判断し、命令変換制御部110からのリネーム結果を利用しながら該バイトコードの固有命令への展開(ステップ412)を行う。該バイトコードの実行が完了すると、命令フェッチ部21に対し次バイトコードのフェッチ(ステップ413)を要求し、次バイトコードの実行を開始する。以下、スピルアウト処理フロー、スピルイン処理フロー、バイトコード実行フローの詳細を説明する。
【0037】
図8に、スピルアウト処理フローを示す。スピルアウト処理が開始(ステップ500)されると、命令変換テーブル100は、命令フェッチ部21から供給された実行中のバイトコードから変換された命令ではなく、レジスタ上の底位置ポインタ301が示すオペランドスタックエントリをメモリにストアするためのメモリストア命令を出力(ステップ501)する。ここで、特に限定されないが、前記メモリストア命令はユーザがプログラム可能な固有命令、もしくはユーザがプログラム不可能なスピルアウト処理専用の固有命令であり、メモリへストアすべきレジスタのレジスタ番号は、ソースレジスタ番号RNsまたはデスティネーションレジスタ番号RNdとして、命令変換制御部110から命令変換テーブル100に供給される。前記メモリストア命令の出力が完了すると、命令変換制御部110は、現在の有効エントリ数302に応じ(ステップ502)、内部状態である底位置ポインタ301および有効エントリ数302の内容を適切に更新(ステップ503〜504)し、スピルアウト処理が完了(ステップ505)する。
【0038】
図9に、スピルイン処理フローを示す。スピルイン処理が開始(ステップ600)されると、命令変換テーブル100は、命令フェッチ部21から供給された実行中のバイトコードから変換された命令ではなく、メモリのオペランドスタックエントリをレジスタ上の底位置ポインタ301が示すエントリ(有効エントリ数302が0の場合)、もしくは底位置ポインタ301の内容を1デクリメントした値が示すエントリ(有効エントリ数302が0でない場合)にロードするためのメモリロード命令を出力(ステップ601)する。ここで、特に限定されないが、前記メモリロード命令はユーザがプログラム可能な固有命令、もしくはユーザがプログラム不可能なスピルイン処理専用の固有命令であり、メモリからロードすべきレジスタのレジスタ番号は、ソースレジスタ番号RNsまたはデスティネーションレジスタ番号RNdとして、命令変換制御部110から命令変換テーブル100に供給される。前記メモリロード命令の出力が完了すると、命令変換制御部110は、現在の有効エントリ数302に応じ(ステップ602)、内部状態である底位置ポインタ301および有効エントリ数302の内容を適切に更新(ステップ603〜604)す、スピルイン処理が完了(ステップ605)する。
【0039】
図10に、バイトコード実行処理フローを示す。バイトコード実行開始前に、実行に必要な有効なオペランドスタックエントリ、空きオペランドスタックエントリとも確保されていることに注意されたい。バイトコード実行が開始(ステップ700)されると、命令変換テーブル100は該バイトコードから変換される、L個の固有命令からなる固有命令列を順に供給(ステップ701〜704)する。この固有命令列は、オペランドスタックのロード、ストア命令を含まず、バイトコード実行結果を生成するための命令のみで構成され、オペランドスタックのロード、ストアは、スピルイン要求またはスピルアウト要求が発生した場合のみ、所定の命令を挿入、実行することにより実現される。このため、スピル処理専用ハードウェアが不要になり、さらに命令変換テーブル100の論理規模を最小化するとともに、バイトコード実行性能を向上させることができる。特に限定されないが、バイトコード実行中、命令変換制御部110の内部状態である先頭位置ポインタ300、底位置ポインタ301、および有効エントリ数302はその内容を保持する。固有命令列の出力が完了すると、命令変換制御部110は、現在の有効エントリ302およびバイトコード実行前後でのオペランドスタックエントリ数の差Sdifに応じ(ステップ705)、内部状態である先頭位置ポインタ300および有効エントリ数302の内容を適切に更新(ステップ706〜707)する。
【0040】
【発明の効果】
上記手法により、情報処理装置の処理速度を向上させることができる。また、情報処理装置のハードウェア規模を削減できる。
【図面の簡単な説明】
【図1】本発明によるプロセッサのブロック図。
【図2】制御レジスタ120の実施例。
【図3】オペランドスタック格納状態の例。
【図4】命令変換制御部110の実施例。
【図5】リネーム処理の動作例。
【図6】ポインタ更新の動作例。
【図7】バイトコード変換処理フロー概要。
【図8】スピルアウト処理フロー。
【図9】スピルイン処理フロー。
【図10】通常処理フロー。
【符号の説明】
10:命令メモリ、20:CPU、30:データメモリ、100:命令変換テーブル、110:命令変換制御部、120:制御レジスタ、200:オペランドスタックとして割り当てられたレジスタ群、210:メモリ上のスタック領域、300:先頭位置ポインタ、301:底位置ポインタ、302:有効エントリ数。
Claims (9)
- 情報処理装置であって、
第1フォーマット命令を固有命令として実行するための命令実行部と、
入力した第2フォーマット命令を前記第1フォーマット命令に変換して前記命令実行部に供給する命令変換回路と、
一部をオペランドスタックに割り当て可能なレジスタファイルとを備え、
前記命令変換回路は、前記レジスタファイルの複数のレジスタ、あるいは複数のレジスタ群をオペランドスタックに割り当てるか否かを指定するための記憶領域を有することを特徴とする情報処理装置。 - 請求項1に記載の情報処理装置において、
前記命令変換回路は、前記レジスタファイル上に格納された有効なオペランドスタックエントリの先頭位置を特定可能なポインタ、底位置を特定可能なポインタのうち少なくとも一方を記憶するための記憶領域を有することを特徴とする情報処理装置。 - 請求項1に記載の情報処理装置において、
前記命令変換回路は、前記レジスタファイル上に格納された有効なオペランドスタックエントリ数を特定可能な状態を記憶するための記憶領域を有することを特徴とする情報処理装置。 - 請求項2に記載の情報処理装置において、
前記第1フォーマット命令のうち、所定のフィールドの値が、前記ポインタを記憶するための記憶領域が所定の状態であることに応答して変化することを特徴とする情報処理装置。 - 請求項2に記載の情報処理装置において、
前記ポインタを記憶するための記憶領域が所定の状態であることに応答して、前記第1フォーマット命令が前記第2フォーマット命令から変換された命令ではない所定の命令に置換されることを特徴とする情報処理装置。 - 請求項3に記載の情報処理装置において、
前記第1フォーマット命令のうち、所定のフィールドの値が、前記エントリ数を特定可能な状態を記憶するための記憶領域が所定の状態であることに応答して変化することを特徴とする情報処理装置。 - 請求項3に記載の情報処理装置において、
前記エントリ数を特定可能な状態を記憶するための記憶領域が所定の状態であることに応答して、前記第1フォーマット命令が前記第2フォーマット命令から変換された命令ではない所定の命令に置換されることを特徴とする情報処理装置。 - 請求項1から7に記載の情報処理装置において、
前記第2フォーマット命令はJavaバイトコードであり、
前記オペランドスタックはJavaオペランドスタックであることを特徴とする情報処理装置。 - 請求項1において、
前記レジスタファイルを構成するレジスタのうち、4本以上のレジスタを前記オペランドスタックに割り当てることを特徴とする情報処理装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002296869A JP2004133641A (ja) | 2002-10-10 | 2002-10-10 | 情報処理装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002296869A JP2004133641A (ja) | 2002-10-10 | 2002-10-10 | 情報処理装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004133641A true JP2004133641A (ja) | 2004-04-30 |
Family
ID=32286712
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002296869A Pending JP2004133641A (ja) | 2002-10-10 | 2002-10-10 | 情報処理装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2004133641A (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006323844A (ja) * | 2005-05-19 | 2006-11-30 | Samsung Electronics Co Ltd | ジャバ仮想マシンでバイトコードの実行時間を短縮するシステム及び方法 |
WO2007140706A1 (en) * | 2006-06-07 | 2007-12-13 | Hong Kong Applied Science And Technology Research Institute Co. Ltd. | Hardware javatm bytecode translator |
JP2012088909A (ja) * | 2010-10-19 | 2012-05-10 | Tokyo Univ Of Agriculture & Technology | 変換器及び変換方法 |
-
2002
- 2002-10-10 JP JP2002296869A patent/JP2004133641A/ja active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006323844A (ja) * | 2005-05-19 | 2006-11-30 | Samsung Electronics Co Ltd | ジャバ仮想マシンでバイトコードの実行時間を短縮するシステム及び方法 |
US8561042B2 (en) | 2005-05-19 | 2013-10-15 | Samsung Electronics Co., Ltd. | System and method for reducing execution time of bytecode in java virtual machine |
WO2007140706A1 (en) * | 2006-06-07 | 2007-12-13 | Hong Kong Applied Science And Technology Research Institute Co. Ltd. | Hardware javatm bytecode translator |
JP2012088909A (ja) * | 2010-10-19 | 2012-05-10 | Tokyo Univ Of Agriculture & Technology | 変換器及び変換方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10514922B1 (en) | Transfer triggered microcontroller with orthogonal instruction set | |
US7853776B2 (en) | Handover between software and hardware accelerator | |
US7080362B2 (en) | Java virtual machine hardware for RISC and CISC processors | |
US6317872B1 (en) | Real time processor optimized for executing JAVA programs | |
US7533250B2 (en) | Automatic operand load, modify and store | |
US8473718B2 (en) | Java hardware accelerator using microcode engine | |
JP4485198B2 (ja) | Javaアクセラレータを備えたプロセッサシステム | |
US6996703B2 (en) | Processing device for executing virtual machine instructions | |
WO2000034844A9 (en) | Java virtual machine hardware for risc and cisc processors | |
US20050071828A1 (en) | System and method for compiling source code for multi-processor environments | |
JP2000507015A (ja) | リアルタイムプログラム言語アクセラレータ | |
US8769508B2 (en) | Virtual machine hardware for RISC and CISC processors | |
JP2001202253A (ja) | データ処理方法およびデータ処理装置 | |
JP4035004B2 (ja) | 情報処理装置 | |
US6195746B1 (en) | Dynamically typed register architecture | |
JP2005521933A (ja) | ハードウェア・トランスレータベースのカスタム・メソッド呼出しのシステムおよび方法 | |
JP2004133641A (ja) | 情報処理装置 | |
JP2005267640A (ja) | 機能を呼び出す方法と装置 | |
JPH04104350A (ja) | マイクロプロセッサ | |
JP2004127255A (ja) | 情報処理装置 | |
JP2004522236A (ja) | 中間言語アクセラレータチップ | |
JPH113225A (ja) | 情報処理装置 | |
JP2003216443A (ja) | 中間コード実行装置および方法 | |
JP2008004132A (ja) | 情報処理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20051006 |
|
RD02 | Notification of acceptance of power of attorney |
Effective date: 20051006 Free format text: JAPANESE INTERMEDIATE CODE: A7422 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20080227 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20080513 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20080711 |
|
A131 | Notification of reasons for refusal |
Effective date: 20080819 Free format text: JAPANESE INTERMEDIATE CODE: A131 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20081020 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20081202 |
|
A02 | Decision of refusal |
Effective date: 20090331 Free format text: JAPANESE INTERMEDIATE CODE: A02 |