JP2006127183A - 情報処理装置 - Google Patents

情報処理装置 Download PDF

Info

Publication number
JP2006127183A
JP2006127183A JP2004315099A JP2004315099A JP2006127183A JP 2006127183 A JP2006127183 A JP 2006127183A JP 2004315099 A JP2004315099 A JP 2004315099A JP 2004315099 A JP2004315099 A JP 2004315099A JP 2006127183 A JP2006127183 A JP 2006127183A
Authority
JP
Japan
Prior art keywords
instruction
operation mode
format
processing apparatus
information processing
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.)
Granted
Application number
JP2004315099A
Other languages
English (en)
Other versions
JP4602047B2 (ja
Inventor
Tetsuya Yamada
哲也 山田
Naohiko Irie
直彦 入江
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 JP2004315099A priority Critical patent/JP4602047B2/ja
Priority to US11/260,423 priority patent/US7853776B2/en
Publication of JP2006127183A publication Critical patent/JP2006127183A/ja
Application granted granted Critical
Publication of JP4602047B2 publication Critical patent/JP4602047B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

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/3017Runtime instruction translation, e.g. macros
    • G06F9/30174Runtime instruction translation, e.g. macros for non-native instruction set, e.g. Javabyte, legacy code

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract


【課題】 ハードウェア処理とソフトウェア処理の切換えを高速化する。
【解決手段】 スタックベースの中間言語(バイトコード)をレジスタベースのCPU命令に変換するバイトコードアクセラレータ(5)では、ハードウェア処理と、ソフトウェア仮想マシンによるソフトウェア処理との間を移行する際に、バイトコードアクセラレータ起動時に、バイトコードアクセラレータとCPUとの間の内部転送バス(22)及びバイトコードアクセラレータの入力選択論理(28)により、CPUのレジスタファイル(14)からバイトコードアクセラレータ内部に複数の内部情報を転送し、バイトコードアクセラレータの動作終了時には、内部転送バス、バイトコードアクセラレータの出力セレクタ(23)及び出力セレクタ選択論理(24)24によって、バイトコードアクセラレータ内部の複数の内部情報をCPUのレジスタファイルに転送する。
【選択図】 図1

Description

本発明は、中間言語の命令をネイティブ命令に変換して実行可能なマイクロプロセッサなどの情報処理装置に関し、バイトコードのような中間言語をマイクロプロセッサの固有命令に変換するハードウェアアクセラレータを搭載するマイクロプロセッサに適用して有効な技術に関する。
近年、特定のハードウェア及びOSといったプラットフォームに依存せず、様々な機器で動作が可能なJava[TM]が大型のサーバーから携帯電話まで広く普及している。Javaとはサン・マイクロシステムズ社により開発されたC++に類似したオブジェクト指向プログラミング言語であり、”Java”はサン・マイクロシステムズ社の登録商標である。
Javaは、コンパイル時にソースコードからプラットフォームに依存しないバイトコードと呼ばれる中間言語に翻訳される。バイトコードは、Java仮想マシン(Virtual Machine:VM)と呼ばれるソフトウェアを用いて、マイクロプロセッサ固有のネイティブコードに解釈され、実行される。プラットフォームに対応するJava仮想マシンを用意することで、プラットフォームの差異は、Java仮想マシンが吸収する。
バイトコードのJava仮想マシンでの実行は、インタプリタ方式でバイトコードを逐一解釈しながら処理するために低速である。インタプリタ方式はバイトコードによる多方向分岐処理があることと、逐一解釈のためオペランドスタックの使用が非効率である。そこで、インタプリタ処理によるオーバヘッドを削減するために、使用頻度の高いバイトコードにおいて、バイトコードからネイティブコードへの変換をハードウェア(バイトコードアクセラレータ)で実行することで高速化を行なっている。例えば、特許文献1には、バイトコードをマイクロプロセッサのネイティブコードへ変換するハードウェアが示されている。使用頻度の低い複雑なバイトコードはソフトウェアのJava仮想マシンを用いて処理するようになっている。
特許文献2には、ハードウェア処理とソフトウェアJava仮想マシン間の移行時間の高速化に着目し、バイトコードがバイトコードアクセラレータによってネイティブコードに変換できない場合、変換動作モードをソフトウェアJava仮想マシンを用いるモードに移行するとき、専用バスを用いてハードウェアアクセラレータのレジスタとCPUのレジスタファイルとの間で内部情報のデータ転送を行うことについて記載される。その逆の場合にはCPUのレジスタファイルからハードウェアアクセラレータのレジスタに内部情報を転送する。
米国特許第6,332,215号明細書 特開2004−30222
実アプリケーションでは、ハードウェア処理とソフトウェアで処理されるバイトコードが混在し、高頻度でハードウェア処理とソフトウェア処理が切替えられる場合がある。従って、ハードウェア処理とソフトウェア処理の移行時間の高速化が重要となってくる。処理の移行の際は、ハードウェアとソフトウェアのJava仮想マシン間で情報の受渡しを行なうため、ハードウェアとソフトウェアJava仮想マシン間のリソース共有を工夫することで、情報の受渡しを高速化することができる。情報の受渡しには、外部メモリ、キャッシュメモリ、汎用レジスタによるデータ共有が考えられるが、汎用レジスタによるデータ共有が最も高速である。
特許文献2では、上述の如く、変換モードの移行時に専用バスを用いてハードウェアとレジスタファイルでデータ転送を行い、レジスタによるデータ共有を行なった。しかしながら、特許文献2では、専用バスで転送すべき内部情報の選択という技術的事項について考慮されていない。モード移行時には、専用バスのデータを固定するため、データ転送は一つのデータに限られていた。より高速化を行なうためには、複数のデータをハードウェア処理とソフトウェアJava仮想マシン間でレジスタによるデータ共有を行なう必要があり、これを実現するためには専用バスを用いて複数のデータを転送する別の機構が必要となる。
本発明の目的は、ハードウェア処理とソフトウェア処理の切換えを高速に行うことである。
本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
本願において開示される発明のうち代表的なものの概要を簡単に説明すれば下記の通りである。
〔1〕本発明に係る情報処理装置は、複数のレジスタを含むレジスタファイルと、前記レジスタファイルを利用して第1フォーマット命令を固有命令として実行する命令実行部と、第2フォーマット命令を第1フォーマット命令に変換する命令変換回路とを有する。前記情報処理装置は、第2フォーマット命令で記述された第1プログラムを実行するとき、前記命令変換回路によって変換した第1フォーマット命令を実行する第1動作モードと、前記第1フォーマット命令で記述された変換ソフトウェアによって変換した第1フォーマット命令を実行する第2動作モードとを有し、更に、前記レジスタと命令変換回路の間にデータを転送する専用バス(22)を有する。前記命令変換回路は、第1動作モードから第2動作モードに移行するとき、命令実行部による命令実行に応じて複数の内部情報を選択的に前記専用バスに出力してレジスタファイルに格納可能とし、第2動作モードから第1動作モードに移行するとき命令実行部による命令実行に応じて前記レジスタファイルから専用バスに出力された内部情報を取り込み制御する選択制御回路(23,24,28)を有する。
上記より、動作モードの移行時に内部情報を選択して前記専用バスで転送することができ、複数の内部情報をハードウェア処理とソフトウェア仮想マシンとの間でレジスタファイルを介して共有することが可能になり、ハードウェア処理とソフトウェア処理との間の切換えを高速化するのに資することができる。
本発明の具体的な形態として、前記内部情報は、複数のレジスタをスタックとして利用するためのレジスタ管理情報、更には、イベント切り換えのためのイベントカウント情報である。また、第1動作モードから第2動作モードに移行するとき前記専用バスに出力される内部情報は、前記第2フォーマットの命令から切り出されたオペランド部である。例えば第2フォーマット命令をJavaにおけるバイトコードとすると、バイトコードのオペランドはバイトコードに付随するから命令キャッシュメモリに格納されることになり、一方、第1フォーマット命令であるネイティブコードのオペランドはデータキャッシュメモリに格納されることになるから、命令変換回路に取り込まれたバイトコードが非サポートバイトコード(命令変換回路で変換不可能なバイトコード)の場合には第1モードから第2モードに移行して、バイトコードの変換を行ってこれを実行しなければならない。命令実行部は第2モードで変換された命令を実行するとき、必要なオペランドをデータアクセスによって取得しなければならない。このとき、既に命令変換回路に取り込まれているオペランドは、専用バスを介して予めレジスタファイルに内部転送されているから、データキャッメモリが必要なオペランドを保有していなくても、データキャッシュミスによる外部メモリのアクセスは必要なく、データキャッシュミスペナルティーによる処理の遅れを生じない。
本発明の更に具体的な形態として、前記選択制御回路は、前記専用バスに出力する内部情報を選択するセレクタ(23)と、第1動作モードから第2動作モードに移行するとき命令実行部による命令実行に応じて前記セレクタの選択動作を制御する出力選択論理回路(24)と、第2動作モードから第1動作モードに移行するとき命令実行部による命令実行に応じて専用バスに出力された内部情報の取り込み先を選択制御する入力選択論理回路(28)とを有する。
前記選択制御回路は、命令実行部のパイプラインを模擬する模擬パイプラインを有し、前記模擬パイプラインにおける所定のパイプラインステージに同期して前記専用バスへ内部情報を出力するタイミングと、専用バスの内部情報を取り込むタイミングとを生成する。専用バスに対する内部情報の出力と、専用バス上の内部情報の取り込みとの同期を容易に採る事が可能になる。
関する本発明の具体的な形態として、専用バスに対する内部情報の出力と、専用バス上の内部情報の取り込みタイミングに着目すると、第1動作モードから第2動作モードに移行するとき、前記変換回路は命令実行部に複数のストア命令を実行させ、前記選択制御回路は前記ストア命令の実行に応じて複数の内部情報を選択的に前記専用バスに出力し、第2動作モードから第1動作モードに移行するとき、前記変換回路は命令実行部に複数のロード命令を実行させ、前記選択制御回路は前記ロード命令の実行に応じて前記レジスタファイルから専用バスに出力された内部情報を取り込み制御する。
〔2〕本発明の別の観点による情報処理装置は、複数のレジスタを含むレジスタファイルと、前記レジスタファイルを利用して第1フォーマット命令を固有命令として実行する命令実行部と、第2フォーマット命令を第1フォーマット命令に変換する命令変換回路とを有する。前記情報処理装置は、第2フォーマット命令で記述された第1プログラムを実行するとき、前記命令変換回路によって変換した第1フォーマット命令を実行する第1動作モードと、前記第1フォーマット命令で記述された変換ソフトウェアによって変換した第1フォーマット命令を実行する第2動作モードとを有し、さらに、前記レジスタと命令変換回路の間にデータを転送する専用バスを有する。前記命令変換回路は、第1動作モードから第2動作モードに移行するとき、命令実行部による命令実行に応じてレジスタ管理情報を前記専用バスに出力してレジスタファイルに格納可能とし、第2動作モードから第1動作モードに移行するとき命令実行部による命令実行に応じて前記レジスタファイルから専用バスに出力されたレジスタ管理情報を取り込み制御する選択制御回路を有する。
本発明の具体的な形態として、前記第1フォーマット命令はレジスタベースの命令であり、前記第2フォーマット命令はスタックベースの命令であり、このとき、前記レジスタ管理情報は前記複数のレジスタをスタックとして利用するためのスタック割り当てに関する情報である。
〔3〕本発明の更に別の観点による情報処理装置は、複数のレジスタを含むレジスタファイルと、前記レジスタファイルを利用して第1フォーマット命令を固有命令として実行する命令実行部と、第2フォーマット命令を第1フォーマット命令に変換する命令変換回路とを有する。前記情報処理装置は、第2フォーマット命令で記述された第1プログラムを実行するとき、前記命令変換回路によって変換した第1フォーマット命令を実行する第1動作モードと、前記第1フォーマット命令で記述された変換ソフトウェアによって変換した第1フォーマット命令を実行する第2動作モードとを有し、更に、前記レジスタと命令変換回路の間にデータを転送する専用バスを有する。前記命令変換回路は、第1動作モードから第2動作モードに移行するとき、命令実行部による命令実行に応じてイベント切り換えのためのイベントカウント情報を前記専用バスに出力してレジスタファイルに格納可能とし、第2動作モードから第1動作モードに移行するとき命令実行部による命令実行に応じて前記レジスタファイルから専用バスに出力されたイベント切り換えのためのイベントカウント情報を取り込み制御する選択制御回路を有する。
本発明の具体的な形態として、前記選択制御回路は更に、第1動作モードから第2動作モードに移行するとき前記第2フォーマットの命令から切り出されたオペランド部を前記専用バスに出力してレジスタファイルに格納可能とする。
〔4〕本発明の更に別の観点による情報処理装置は、複数のレジスタと、前記複数のレジスタを利用して第1フォーマット命令を固有命令として実行する命令実行部と、第2フォーマット命令を第1フォーマット命令に変換する命令変換回路とを有する。前記情報処理装置は、第2フォーマット命令で記述された第1プログラムを実行するとき、前記命令変換回路によって変換した第1フォーマット命令を実行する第1動作モードと、前記第1フォーマット命令で記述された変換ソフトウェアによって変換した第1フォーマット命令を実行する第2動作モードとを有し、更に、前記レジスタと命令変換回路の間にデータを転送する専用バスを有する。前記命令変換回路は、前記第1動作モードと前記第2動作モードとの間の動作モードの移行に際し、当該動作モードの移行に並行して、前記専用バスによる前記複数のレジスタと前記命令変換回路との間のデータ転送を行い、前記命令変換回路は、前記データ転送タイミングを命令実行部による複数回のレジスタストア動作に同期させ、前記レジスタストア動作を規定する命令毎に転送元データを変更する。
〔5〕本発明の更に別の観点による形態情報システムは、アンテナと、前記アンテナから得られる信号を符号処理する第1情報処理装置と、前記第1情報処理装置に結合された第1主記憶と、複数のレジスタ、第1フォーマット命令を実行するためのものであってレジスタベースの処理を行う命令実行部及び命令変換回路を備え前記第1主記憶をアクセス可能とされる第2情報処理装置と、前記第2情報処理装置に結合された第2主記憶とを有する。前記第2情報処理装置は、前記アンテナを介して前記第1主記憶に転送されてきた第2フォーマット命令で記述されたプログラムを実行するとき、前記命令変換回路によって変換した第1フォーマット命令を実行する第1動作モードと、前記第1フォーマット命令で記述された変換ソフトウェアによって変換した第1フォーマット命令を実行する第2動作モードとを有する。前記命令変換回路は、前記第1動作モードと前記第2動作モードとの間の動作モードの移行に際し、当該動作モードの移行に並行して、前記専用バスによる前記複数のレジスタと前記命令変換回路との間のデータ転送を行い、前記命令変換回路は、前記データ転送タイミングを命令実行部による複数回のレジスタストア動作に同期させ、前記レジスタストア動作を規定する命令毎に転送元データを変更する。
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記の通りである。
すなわち、ハードウェア処理とソフトウェア処理の切換えを高速化するのに資することができる。
図1には本発明の一例に係る情報処理装置の一例に係るマイクロプロセッサが示される。同図に示されるマイクロプロセッサ(MPU)1は、特に制限されないが、公知のCMOS(相補型MOSトランジスタ)やバイポーラトランジスタなどを形成する半導体集積回路技術によって、単結晶シリコンのような1個の半導体基板に形成される。
マイクロプロセッサ1は、代表的に示された命令キャッシュメモリ(ICACH)2、データキャッシュメモリ(DCACH)3、メインプロセッサとしての中央処理装置(CPU)4、バイトコードアクセラレータ(BCA)5、SDRAMを接続可能なバスステートコントローラ(SBSC)30、周辺バス用バスブリッジ(PB)31、シリアルI/Oモジュール(SIO)32、I2Cコントローラ(I2C)33を有する。中央処理装置4は命令バス(IBUS)6を介して命令キャッシュメモリ2に接続され、データバス(DBUS)7を介してデータキャッシュメモリ3に接続される。命令キャッシュメモリ2、データキャッシュメモリ3、バスステートコントローラ30及びバスブリッジ31はメイン内部バス(MBUS)に接続される。バスコントローラ30は外部に接続されるSDRAM34とのインタフェース制御機能を有する。周辺バス用バスブリッジ31はメイン内部バス8と周辺バス(PBUS)9のバスブリッジ機能を有する。シリアルI/Oモジュール32、I2Cコントローラ33などの周辺インタフェースは、周辺バス9に接続される。
中央処理装置4は、命令キャッシュメモリ3等から命令をフェッチする命令フェッチ部(FET)10、命令フェッチ部10とバイトコードアクセラレータ5の出力を選択するセレクタ11、命令のデコードを行うデコード部(DEC)12、命令デコード結果に基づいて命令の演算と実行を行う実行部(EXE)13、制御信号を生成する制御部(CTL)15、及び複数のレジスタから成るレジスタファイル(REG)14などを備えて構成される。
バイトコードアクセラレータ5は、バイトコードフェッチ部(BFA)20、バイトコード変換論理部(TRS)21、転送バス(BCABUS)22、出力セレクタ23、出力セレクタ選択論理(OSL)24、入力選択論理(ISL)28、オペランド出力部(OPR)25、BCAの内部ステート部(STM)26、コンフィグレーションレジスタ部(CFG)27などから成る。バイトコードフェッチ部(BFA)20はCPU4の命令フェッチ部10から出力される命令からバイトコード(bytecode)への切り出しと命令の要求を行なう。命令の要求とは、例えば分岐先のバイトコードが必要なときはCPU4の命令フェッチ部10に対し、分岐先のアドレスを出力することにより分岐先のバイトコードが含まれる命令を要求する、というようなことである。バイトコード変換論理部21はバイトコードをネイティブコードに変換する。転送バス22はバイトコードアクセラレータ5とCPU4のレジスタファイル14との間の転送を行なうための専用バスである。出力セレクタ23は転送バス22にどのデータを出力するかを選択する。その制御は出力セレクタ選択論理(OSL)24が出力する制御信号で行われる。入力選択論理28はCPU4のレジスタファイル14から転送バス22に与えられたデータをバイトコードアクセラレータ5の内部で選択するための制御信号を生成する論理回路である。入力選択回路28による入力選択は、転送バス22からコンフィグレーションレジスタ部27に至る信号経路に接続する記憶段の入力ゲート若しくはフリップフロップを制御し、また、転送バス22から内部ステート部26に至る信号経路に接続する記憶段の入力ゲート若しくはフリップフロップを制御する。オペランド出力部25はバイトコードのオペランドを出力する。バイトコードは可変長であり、その先頭にはオペレーションコードが配置され、オペランドを必要とバイトコードはその後ろにバイトコードを有する。内部ステート部26は、スタックベースのバイトコードを処理する性質上、スタックトップ、スタックボトム、有効エントリ数などの管理情報を有する。コンフィグレーションレジスタ部27はBCAのコンフィグレーション情報を格納する。コンフィグレーションレジスタ部27はメモリマップされたレジスタ(メモリマップドレジスタ)であり、メモリアクセスサイクルを用いてアクセスされる。特に制限されないが、中央処理装置4のレジスタファイル15には16本の汎用レジスタが含まれ、R0〜R15で表される。
バイトコードとは中央処理装置4のアーキテクチャに依存しない仮想マシン命令を意味し、例えばJavaバイトコードを意味する。ネイティブコードとは中央処理装置(CPU)4のアーキテクチャに依存するネイティブ命令を意味する。ここでは、仮想マシン命令もネイティブ命令も命令キャッシュメモリ2に格納されている。ここで、バイトコードのオペランドはバイトコードに付随するから命令キャッシュメモリ2に格納されることになる。一方、ネイティブコードのオペランドはデータキャッシュメモリ3に格納されることになる。バイトコードアクセラレータ5に取り込まれたバイトコードがオペランドを持ち、非サポートバイトコード(バイトコードアクセラレータ5で変換不可能なバイトコード)の場合がある。このとき、バイトコードアクセラレータは処理を終了し、ソフトウェア仮想マシンのインタープリタで当該バイトコードの変換を行わなければならない。CPU4はソフトウェア仮想マシンで変換されたコードを実行するとき、必要なオペランドを取得しなければならないが、データキャッシュメモリ3は当該必要なオペランドを保有していないことがある。このとき、外部メモリ34のアクセスが必要なため、オーバヘッドが大きい。このオペランド取得の高速化のため、バイトコードアクセラレータは処理を終了する際に、バイトコードアクセラレータ5に取り込まれているオペランドを転送バス22を介して予めレジスタファイル14に内部転送する機構を持つ。そこで、ソフトウェア仮想マシンのインタープリタで当該バイトコードを変換するとき、オペランドとしてレジスタファイルの値を使用すればよい。これにより、データキャッシュミスによる外部メモリ34のアクセスは必要ないため、高速化が実現できる。このオペランドの内部転送をはじめとして幾つかの内部情報をバス22を介してバイトコードアクセラレータ5からCPU4に、またその逆にCPU4からバイトコードアクセラレータ5にCPU4の内部情報を転送可能になっている。前者の転送はバイトコードアクセラレータが終了されるときに並行して行われ、後者の転送はバイトコードアクセラレータが起動するときに並行して行われる。以下にそれら内部情報の転送について説明する。
まず、命令の処理について言及する。マイクロプロセッサ1は2つの命令を処理する。CPU4固有のネイティブ命令とJavaなどの中間言語のバイトコードである。CPU命令はCPU4の命令フェッチ部10にフェッチされ、セレクタ11で命令フェッチ部出力が選択され、デコード部12に入力される。デコード部でCPU命令はデコードされ、実行部13で処理される。実行部13はレジスタファイル14又はデータバス7からからリードしたデータにより演算を行なったり、データバス7に演算データをロードし、或いはレジスタファイル14に演算データをライトする。
バイトコードは、CPU4とバイトコードアクセラレータ5を用いて処理される。まず、命令キャッシュメモリ2などから命令がCPU4の命令フェッチ部10にフェッチされる。命令はバイトコードアクセラレータ5のバイトコードフェッチ部20に出力され、バイトコード切り出しのための整形(アライン)処理が行なわれる。バイトコードフェッチ部20はバイトコードの保持及び、CPU4の命令フェッチ部10にバイトコードのフェッチ要求を行なう。例えば、分岐先のバイトコードが必要なときはCPU4の命令フェッチ部10に対し、分岐先のアドレスを出力することにより分岐先のバイトコードが含まれる命令を要求する。整形されたバイトコードはバイトコード変換論理部21で一つまたは複数のCPU命令に変換され、CPU4に出力される。そして、セレクタ11でバイトコードアクセラレータの出力が選択され、デコード部12に入力される。デコード部12以後の処理は、CPU命令の処理と共通である。セレクタ11は、バイトコードアクセラレータ5が起動しているときバイトコード変換論理部21の出力を選択し、この状態においてバイトコードアクセラレータが終了しているときは命令フェッチ部10の出力を選択するように制御される。
ここで、バイトコードアクセラレータ5の起動と停止について簡単に説明する。バイトコードアクセラレータ5の制御レジスタ(BFA20に含まれる)にはバイトコードアクセラレータ5のイネーブルビットが含まれる。バイトコードアクセラレータ5を使用可能とするためには、まず制御レジスタのイネーブルビットを設定する。そして、バイトコードアクセラレータ5は、特定のCPU命令(例えばJ_JP命令)を検出することで起動し、バイトコードの変換を開始する。バイトコードアクセラレータ5は起動の際、CPU4のプログラムカウンタ(制御部15に含まれる)にJava命令(バイトコード)のアドレス(JavaPC)を設定する動作を行い、CPU4の汎用レジスタ(例えばR10)に記憶されたスタック情報などの内部情報をバス22を介してバイトコードアクセラレータ5のSTM26やCFG27に設定する。プログラムカウンタの設定は、レジスタファイル14中の一つの汎用レジスタから、実行部13、制御部15を経て、プログラムカウンタPCに前記一つの汎用レジスタに格納されたJava命令のアドレスを設定することによって行う。これに並行して、前記レジスタファイル14の汎用レジスタに記憶されたスタック情報などの内部情報をデータ転送経路22を介してバイトコードアクセラレータBCAのSTM26やCFG27に設定する。内部情報の転送についてその詳細は後述する。
また、バイトコードアクセラレータ5は動作の終了に際して、要するに、ソフトウェア仮想マシンを起動すべきとき、CPU4のプログラムカウンタにソフトウェア仮想マシンのCPU命令アドレスを設定する動作、バイトコードアクセラレータ5の内部情報をCPU4のレジスタファイル14などに待避する動作、CPU4のプログラムカウンタのJavaバイトコードのアドレス(JavaPC)を汎用レジスタに退避する動作などを行う。CPUのプログラムカウンタにソフトウェア仮想マシンのCPU命令アドレスを設定するには、バイトコードアクセラレータ5が該当する動作を行う分岐命令に変換して出力し、セレクタ11にて該当命令が選択され、デコード部12、制御部15を経てプログラムカウンタPCに設定すればよい。CPU4のプログラムカウンタのJavaバイトコードのアドレス(JavaPC)を退避するには、プログラムカウンタのJavaPCから制御部15、実行部13を経てレジスタファイル14の汎用レジスタに退避すればよい。バイトコードアクセラレータ5の内部情報はバス22を介してレジスタファイル14に転送すればよい。この内部情報の転送についてその詳細は後述する。これによってソフトウェア仮想マシンによるソフトウェア処理に移行する。
次に、バイトコードアクセラレータ5とレジスタファイル14との間の複数データ転送について説明する。
マイクロプロセッサ1は、固有のCPU命令を処理する状態とバイトコードアクセラレータ5によるJavaなどのバイトコードを処理する2つの状態が存在する。バイトコードアクセラレータ5を用いたバイトコード処理では、バイトコードアクセラレータ5のハードウェア規模を削減するために、使用頻度が高く、複雑でないバイトコードのみをバイトコードアクセラレータ5で処理し、複雑なバイトコードはソフトウェア仮想マシンによるソフトウェアで処理する。このため、実Javaアプリケーションでは、バイトコードアクセラレータ5によるハードウェア処理とソフトウェア処理が混在する。すなわち、バイトコードアクセラレータ5によるバイトコード処理状態と、ソフトウェア仮想マシンによる固有CPU命令処理状態の2つが混在するため、2つの状態間でのリソース共有による移行時間の短縮が、Javaアプリケーション処理の高速化に重要となってくる。
リソースの共有化には、外部メモリ、内蔵キャッシュメモリ、レジスタを用いる方法があるが、レジスタによる共有が最も高速である。レジスタの本数は限られていることから、リソース共有に必要で優先度の高い情報をレジスタに置くことになる。共有すべき情報は大別すると、次の3通りに分類できる。
(1)バイトコードアクセラレータ5の内部ステート情報
バイトコードアクセラレータ5を用いたハードウェア処理では、バイトコードのオペランドスタックの上位側の一部をレジスタファイル14に置き、スタック間演算をレジスタ間演算とすることにより高速化を行なっている。このため、バイトコードアクセラレータ5ではレジスタファイル14上に置かれるスタック情報を管理している。アドレス変換バッファ(TLB)ミスや割込みなどの例外処理ではバイトコードアクセラレータ5の処理を終了し、例外処理が行なわれるが、復帰時に必要となるスタック情報をバイトコードアクセラレータ5からレジスタファイル14上に転送する必要がある。バイトコードアクセラレータ5の内部情報はこのカテゴリに含まれる。
(2)バイトコードオペランド情報
バイトコードは1から数バイトのコード長を持つ。最初のバイトコードがオペコード(オペレーションコード)で、それ以外はオペランドである。複雑なバイトコードであってソフトウェア仮想マシンで処理されるバイトコード(非サポートバイトコードと称する)のうち、一つ以上のオペランドを持つバイトコードは、ソフトウェア仮想マシンで必ずリードされるので、バイトコードアクセラレータ5でアラインされたオペランドデータがレジスタファイル14上にあると、高速化に有効であるからである。
(a)ゲットフィールド(getfield)バイトコードとプットフィールド(putfield)バイトコードにおいて、ソフトウェア仮想マシン上で参照アドレスを名前から実アドレスとするための処理に変換する場合に、オペランド情報をコンスタントプールインデックスとして使用する。
(b)goto_wバイトコードやjsr_wバイトコードは分岐オフセットとして使用する。バイトコードのオペランドをレジスタファイル14上に置くことは、命令とデータを分離したキャッシュメモリに有効である。非サポートバイトコードのオペランドをレジスタファイル14のレジスタに渡すことによって、インデックスなどのオペランド情報に対し、外部メモリ34からデータキャッシュ3にロードする時間を無くすことができる。インデックスは命令キャッシュメモリ2上にあるがデータキャッシュメモリ3上に無いため、データキャッシュメモリ3にロードするためには外部メモリ34からロードしなければならない。今後、動作周波数が向上するにつれて外部メモリ34からのアクセスはレイテンシが大きくなるので、処理の高速化という効果が見込める。更に、オペランドを整形して渡すことで、ソフトウェア仮想マシンに処理命令数を削減できる。外部メモリ34の情報をバイトコードアクセラレータ5からCPU14のレジスタファイル14に渡すことに対応される。
(3)イベントカウント情報
バイトコードアクセラレータ5による処理の占有を避け、ソフトウェア仮想マシン一定の間隔で何らかの処理を行うことを目的として、特定のバイトコードを複数回実行することをカウントすることで実現できる。全てソフトウェア仮想マシン上のインタプリタで処理される場合は、ソフトウェア仮想マシンでバイトコードの実行数を管理すればよいが、バイトコードアクセラレータ5でバイトコードが実行される場合、ソフトウェア仮想マシンでバイトコードの実行数を把握することができない。そこで、バイトコードアクセラレータ5はイベントをカウントする機能を持つ。イベントカウント機能には、実行バイトコード数と後方分岐数のカウントがある。イベントカウンタレジスタはメモリマップドレジスタとされえ、ソフトウェア仮想マシンでリードまたは改変することができる。イベントレジスタはメモリマップドレジスタなのでアクセスが非常に低速である。スレッドの実行を中断する場合、ソフトウェア仮想マシンでイベントレジスタの値を改変した値をバイトコードアクセラレータ5が使用する。そのため、イベントカウンタがレジスタファイル14上にあると高速化に効果が有る。バイトコードアクセラレータ5のメモリマップドレジスタの情報のように、リードまたは改変が可能だが非常に多くのサイクル数を要する情報の一例として位置付けられる。
バイトコードアクセラレータ5の動作終了の際、上記の複数のデータをバイトコードアクセラレータ5からCPU4のレジスタファイル14に転送する方法は次の通りである。(1)バイトコードオペランド情報(oprd)はオペランド出力部25から出力され、(2)バイトコードアクセラレータ5の内部ステート情報(stctl)は内部ステート部26から出力され、(3)イベントカウント情報(evtcunt)はコンフィグレーションレジスタ部27から出力される。出力セレクタ23はそれら複数のデータから一つのデータを選択する。出力セレクタ選択論理24が生成する制御信号slct[2:0]により、セレクタ23による転送バス22へのい出力データが選択される。そして、転送バス22によりバイトコードアクセラレータ5からレジスタファイル14へデータが転送され、レジスタファイル14にデータがライトされる。
逆に、バイトコードアクセラレータ5起動の際は、レジスタファイル14からバイトコードアクセラレータ5に複数のデータを転送する。バイトコードアクセラレータ5に転送されるデータは、内部ステート情報とイベントカウント情報である。レジスタファイルのデータは順番に転送バス22上に載せられるため、入力選択論理28で適切なタイミングで内部ステート部26とコンフィグレーションレジスタ部27のフリップフロップの入力の制御を行ない、転送バスのデータを格納すればよい。前記フリップフロップは内部ステート部26やコンフィグレーションレジスタ部27の記憶段を構成するフリップフロップである。
以上より、バイトコードアクセラレータ5の起動と終了の際に、バイトコードアクセラレータ5とCPU4のレジスタファイル14間で複数の内部情報のデータ転送を行なうことができる。
図2にはオペランド出力部25の詳細な一例が示される。図3にはオペランド出力部25に入力されるバイトコードとそれに対して整形された出力が例示される。
オペランド出力部25はバイトコードを入力とし、オペランドを整形し、出力する。バイトコードは先頭のオペコードと続くオペランドから構成される。例えば、iadd、bipush、iincはバイトコード長がそれぞれ1、2、3であり、オペランド数はそれぞれ0、1、2である。オペランドは順にop1、op2と呼ぶことにする。オペランド出力部25では、バイトコード長判定部(BCLD)40にてバイトコードをデコードしてバイトコード長を調べた後に、バイトコード長に従ってオペランドをアラインし、出力out[31:0]を決定する。オペランドのアラインまたはゼロ出力はセレクタ35、36を用いて実現する。例えば、iaddではバイトコード長が1のためゼロ出力、bipushはバイトコード長が1のため上位16ビットにゼロ、続く8ビットがop1、下位8ビットにゼロ、iincは上位16ビット、続く16ビットにop1とop2を出力する。オペランドを整形しているため、ソフトウェア仮想マシン処理でオペランド整形のための命令が不要である。
図4には出力セレクタ選択論理24の詳細な一例が示される。出力セレクタ選択論理24は、バイトコードとCPU4からのステージ制御信号stgcnt(Stage Control)を入力とし、出力セレクタ23のセレクタ信号Slct[2:0]を出力する。出力セレクタ選択論理24は、非サポートバイトコード判定論理部(USBD)41と、カウンタ及びフラグ生成部(CFLG)42と、模擬CPUパイプライン部(SCP)43から構成される。
非サポート判定論理部41では、バイトコードbc[7:0]を入力し、バイトコードがバイトコードアクセラレータ5で実行するかどうかを判定する。バイトコードアクセラレータ5で実行しない場合はYesとなる信号をカウンタ及びフラグ生成部42に出力する。カウンタ及びフラグ生成部42は、ダウンカウンタ(DCUNT)44を有し、そのカウント値からフラグ情報Flag[2:0]を生成する。カウント値Cntが2のとき(Cnt==2)フラグ情報Flag[2]が論理値1、カウント値Cntが1のとき(Cnt==1)フラグ情報Flag[1]が論理値1、カウント値Cntが0のとき(Cnt==0)フラグ情報Flag[0]が論理値1となる。非サポートバイトコードでは、バイトコードアクセラレータ5はハードウェアの処理からソフトウェア仮想マシンへの処理に移すために、5つのCPU命令をCPU4へ出力する。5個のCPU命令は図5に例示される。最初の2命令が、ソフトウェア仮想マシンへの分岐アドレスのロード命令と分岐命令である。残りの3命令が、順にオペランドのレジスタライト、バイトコードアクセラレータ5の内部ステートのレジスタライト、イベントカウントレジスタのレジスタライトである。これらの命令を変換するのはバイトコード変換論理部21である。バイトコード変換論理部は、命令変換を順に行なうために内部にはダウンカウンタを持つ。図5の命令列の隣に記述された数値はダウンカウンタの対応するカウント値である。カウンタ及びフラグ部42では、バイトコード変換論理部21と同じダウンカウンタ44を持ち、非サポートバイトコードのときに図5の5つの命令の実行状態を把握する。ここで、ダウンカウンタはバイトコード変換論理部21と共有化し、出力セレクタ選択論理24はそのカウンタのカウンタ信号を入力としても構わない。カウンタと命令は1対1に対応するため、カウンタのカウント値をデコードすることで、バイトコードアクセラレータ5からレジスタファイル14にライトするための命令の実行を知ることができる。ここでは、Cntが2、1、0のときが、バイトコードアクセラレータ5からレジスタファイル14に内部情報をライトするための命令である。そこで、それらの命令の実行をフラグ情報Flag[2:0]から把握する。このとき、Flag[2]が1のときはオペランド(oprd)出力(Operand Output)、Flag[1]が1のときは内部ステート(stctl)出力(Statectl Output)、Flag[0]が1のときはイベントカウンタ(evtcunt)出力(Event Counter Output)である。次に、模擬CPUパイプライン部43を用いて実際に転送バス22にデータを出力するタイミングを正確に把握する。ここでは、バイトコードアクセラレータ5からレジスタファイル14にライトする命令はMA(メモリアクセス)ステージにおけるバス22の値をレジスタファイル14にライトするものとする。このとき、バイトコードアクセラレータ5はフラグ情報Flag[2:0]がMAステージに到達したときに、正しくバス22に値を載せなければならない。模擬CPUパイプライン部43を用いることにより、バス22に載せるタイミングを正確に知ることができる。CPUの制御部15からCPUの内部パイプラインのステージ制御信号stgcnt(Stage Control)がバイトコードアクセラレータ5に出力される。バイトコードアクセラレータ5の模擬CPUパイプライン部43では、CPU4と同じパイプラインをステージ制御信号を用いて再現する。ここでは、デコードステージID、実行ステージEX、メモリアクセスステージMA、ライトバックステージWBがあることにする。STC命令では、CPU4がMAステージでバス22をリードするため、バイトコードアクセラレータ5のOSL24はフラグ情報Flag[2:0]がMAステージ到達したときに、セレクタ信号slct[2:0]を決定することにより、CPU4と同期してバス22に内部情報を出力することができる。
図6には入力選択論理(ISL)28の詳細な一例が示される。入力選択論理28は、CPU4からの起動信号str(start)とステージ制御信号stgcnt(Stage Control)を入力とし、内部ステート部(STM)26とコンフィグレーションレジスタ部(CFG)27のフリップフロップの入力制御信号inen(Input enable)[1:0]を出力する。入力選択論理28は、起動信号判定部(SSD)45、カウンタ及びフラグ生成部(CFLG)46、模擬CPUパイプライン部(SCP)47から構成される。まず、起動信号判定部45では、CPU4からのバイトコードアクセラレータ5の起動信号をチェックし、起動信号(str)によりバイトコードアクセラレータ5を起動するかどうかを判定する。バイトコードアクセラレータ5を起動する場合はYesとなる信号をカウンタ及びフラグ生成部46に出力する。カウンタ及びフラグ生成部46は、ダウンカウンタ(DCUNT)48を有し、そのカウント値Cnt[2:0]からフラグ情報Flag[1:0]を生成する。カウント値Cntが1のとき(Cnt==1)フラグ情報Flag[1]が論理値1、カウント値Cntが0のとき(Cnt==0)フラグ情報Flag[0]が論理値1となる。バイトコードアクセラレータ5を起動する際、バイトコードアクセラレータ5は図7に例示される3つのCPU命令をCPU4へ出力する。最初の1命令が、Javaプログラムへの分岐命令である。残りの2命令が、順にCPU4の汎用レジスタからバイトコードアクセラレータ5内部ステート部26へのライト(Statectl Input)、CPU4の汎用レジスタファイル14からイベントカウントレジスタ部27へのライト(Event Counter Input)である。これらの命令を変換するのはバイトコード変換論理部(TRS)21である。バイトコード変換論理部21は、命令変換を順に行なうために内部にはダウンカウンタを持つ。図7において命令列の隣に記述された数値はダウンカウンタのカウント値である。カウンタ及びフラグ部42では、バイトコード変換論理部21と同じダウンカウンタ48を持ち、起動時における図7の3つの命令を把握する。ここで、ダウンカウンタ48はバイトコード変換論理部(TRS)21と共有化し、入力選択論理(ISL)28はそのカウンタ信号を入力としても構わない。カウント値と命令は1対1に対応するため、ダウンカウンタの値をデコードすることで、CPU4のレジスタファイル14からバイトコードアクセラレータ5にライトするための命令の実行状態を知ることができる。ここでは、カウント値Cntが1のときと0のときの命令が、レジスタファイル14からバイトコードアクセラレータ5へのライトを行う命令である。そこで、それらの命令をフラグ情報Flag[1:0]を用いて把握する。カウント値Cntが1のときFlag[1]が論理値1にされ、このとき内部ステート部26へのライトが行われ、カウント値Cntが1のときFlag[0]が論理値1にされ、このときイベントカウンタ部27へのライトが行われる。模擬CPUパイプライン部47を用いてCPU4と協調してデータの転送を行なう。実際にレジスタファイル14のデータが転送バス22に載せられるタイミングを正確に把握する。ここでは、MAステージのバス22の値をバイトコードアクセラレータ5の内部ステート部(STM)26とコンフィグレーションレジスタ部(CFG)27のフリップフロップにライトする。このとき、バイトコードアクセラレータ5はフラグ情報Flag[2:0]がMAステージに到達したときに、バス22の値を正しく取り込まなければならない。模擬CPUパイプライン47を用いることにより、バス22に載せるタイミングを正確に知ることができる。CPU4の制御部15からCPU4の内部パイプラインのステージ制御信号stgcnt(Stage Control)をバイトコードアクセラレータ5に出力する。バイトコードアクセラレータ5の模擬CPUパイプライン部47では、CPU4と同じパイプラインをステージ制御信号stgcntを用いて再現する。ここでは、デコードステージID、実行ステージEX、メモリアクセスステージMA、ライトバックステージWBがある。LDC命令では、CPU4がレジスタファイル14のデータをMAステージでバス22に載せるので、バイトコードアクセラレータ5はフラグ情報Flag[1:0]がMAステージ到達したときに、順に入力イネーブル信号inen(Input enable)の値を決定することにより、CPU4と同期してバイトコードアクセラレータ5に正しい内部情報をライトすることができる。
次に、バイトコードアクセラレータ5とソフトウェア仮想マシンの協調動作に関して説明する。バイトコードアクセラレータ5はバイトコードのハードウェア実行を行い、それ以外のソフトウェアによる実装部分と協調して仮想マシンを構成する。このソフトウェアによる実装部分がソフトウェア仮想マシン(SOFT_VM)である。図8には、ハードウェアで実行しない非サポートバイトコードの実行時におけるバイトコードアクセラレータ(BCA)5とソフトウェア仮想マシン(SOFT_VM)との動作の分担及び相互の遷移状態が示される。
ソフトウェア仮想マシン(SOFT_VM)60は、ソフトウェア仮想マシン実行の初期設定を行う初期化部分(INIT)61、バイトコードアクセラレータ5を起動する際の起動命令が置かれたフックアップ部(HOOKUP)62、ソフトウェアで解釈実行を行うために各バイトコードの処理開始アドレスを示すディスパッチテーブル(DISP_TBL)63、該当バイトコードのインタプリタ開始アドレスが置かれるディスパッチテーブル上のアドレスADDR(64)、ソフトウェアで解釈実行を行うインタプリタ部(INTPRET)65から構成される。ソフトウェア仮想マシンのプログラムは命令キャッシュ2または外部メモリ34に格納されている。ソフトウェア仮想マシンプログラムにはバイトコードアクセラレータ5を起動するためのフックアップ処理ルーチン(HOOKUP)62を有する。CPU4がフックアップ処理ルーチン62を実行することによりバイトコードアクセラレータ5が動作可能な状態(ACTV)にされる。ハードウェアで実行しない非サポートバイトコードのとき(USP_BCODE)は、ソフトウェアの仮想マシン、即ちソフトウェア仮想マシンプログラムに分岐する。非サポートバイトコード時は、ディスパッチテーブル部(DISP_TBL)63の該当するバイトコードよりインタプリタ64の処理アドレス(ADDR)が与えられ、インタプリタ部(INTPRET)55上で解釈実行を行う。ディスパッチテーブル部63は8ビットのバイトコード数分の256個の配列で構成される。インタプリタ部65で該当バイトコードが解釈実行された後は、再びフックアップ部(HOOKUP)に分岐することにより、バイトコードアクセラレータ5が起動され、バイトコード処理が継続される。
図9にはマイクロプロセッサ1の好適な応用例としての携帯電話システムの一例を示す。携帯電話システムは、大きく分けて、通信部分とアプリケーション部分から構成される。通信部分は、電波をアンテナで送受信する高周波部(RF)90、ベースバンドのモデム及びコーデックを行うベースバンドプロセッサ(BBP)89、メモリ(MRYa)88を有する。アプリケーション部分は、前記バイトコードアクセラレータ(BCA)5、中央処理装置(CPU)4を内蔵するマイクロプロセッサ1を中心に構成される。マイクロプロセッサ1はインターフェース(I/F)81を介して外部バス(EXBUS1)100でベースバンドプロセッサ89が接続され、周辺インターフェース(PPH)82を介してカメラ(CMR)83、メモリカード(CARD)84、音源部(SOD)85、及びキーボード(KEY)86が接続され、外部バス(EXBUS2)101を介して液晶ディスプレイ(LCD)87、メモリ(MRYb)91が接続される。本システム構成例は、携帯電話向けであったが、携帯情報端末やデジタルカメラなど多様なシステム構成例が考えられる。
このシステムにより、バイトコードの処理が高速に行えるので、携帯情報システムの付加価値を高めることができる。
図10には前記マイクロプロセッサ1の好適な応用例として車載情報システム例えばカーナビゲーションの構成が例示される。前記中央処理装置(CPU)4、バイトコードアクセラレータ(BCA)5を備えたマイクロプロセッサ(MPU)1には、3次元グラフィックアクセラレータ(3DG)92、2次元グラフィックアクセラレータ(2DG)93、全地球測位システム(GPS)94、周辺インターフェース(PPH)82が集積される。外部バス(EXBUS)103を介して液晶ディスプレイ(LCD)87、メモリ(MRYc)95が接続される。
本システム構成例では、Javaアプリケーション及びソフトウェア仮想マシン60はメモリ(MRYc)95に格納される。ソフトウェア仮想マシン60のインタプリタ部65はアクセス頻度が高いため半導体集積回路化されたマイクロプロセッサのオンチップメモリ上に配置されることが望ましい。この発明により、バイトコードの処理が高速に行えるため、車載情報システムの付加価値を高めることができる。
以上より以下の作用効果を得ることができる。
スタックベースの中間言語(バイトコード)をレジスタベースのCPU命令に変換するバイトコードアクセラレータ(BCA)によるハードウェア処理と、ソフトウェア仮想マシンによるソフトウェア処理の移行に際して、バイトコードアクセラレータ5起動時には、バイトコードアクセラレータ5とCPU4の間の内部転送バス22と入力選択論理(ISL)28により、CPU4のレジスタファイル14からバイトコードアクセラレータ5の内部に複数の内部情報を転送し、バイトコードアクセラレータの動作終了時には、内部転送バス22とバイトコードアクセラレータの出力セレクタ23及び出力セレクタ選択論理24によって、バイトコードアクセラレータ5の内部の複数の内部情報をCPU4のレジスタファイル14に転送することができる。これにより、ハードウェアとソフトウェアの情報共有を高速化することができ、データ処理装置における情報処理の高速化に資することができる。
更に本発明を拡張することにより、仮想マシン命令をネイティブ命令に変換してメインプロセッサに実行させることが可能なアクセラレータと共に、メインプロセッサからコプロセッサ命令を受取って動作するコプロセッサを有するデータ処理装置において、仮想マシン命令の実行効率を向上させることができる。すなわち、浮動小数点演算ユニット(FPU)などのコプロセッサのレジスタをテンポラリレジスタに見立てて利用することにより、CPUを有するメインプロセッサとFPU等のコプロセッサに対するオペランドスタックの管理を簡素化することができる。
演算非サポートデータを直接検出するから、FPU等のコプロセッサが取り扱えない演算動作に対して、取り扱えない演算動作の検出を正確に行うことができる。
演算非サポートデータを直接検出してその演算を抑止するから、FPU等のコプロセッサが取り扱えない演算動作に対するソフトウェア処理への移行にも既存の例外ハンドラを修正せずに使用することができる。
以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
例えば、バイトコードアクセラレータ(BCA)とレジスタファイル間の転送は非サポートバイトコードのときに限定されず、別のハードウェア処理とソフトウエア処理の移行の際も実行できる。例えば、TLBミスや割込み処理を行なうCPU例外処理や、Javaが実行時に検出するJava例外処理である。Java例外処理とは、Javaが言語規定上定めた実行時の例外で、配列アクセス時のNull Pointer ExceptionやArray Index Out Of Bounds Exception、整数ゼロ除算のArithmetic Exceptionが挙げられる。また、バイトコードやインタプリタを含む実行環境はJavaに限定されない。
本発明の情報処理装置の一例に係るマイクロプロセッサを示すブロック図である。 オペランド出力部の詳細な一例を示すブロック図である。 オペランド出力部に入力されるバイトコードとそれに対して整形された出力を例示する説明図である。 出力セレクタ選択論理の詳細な一例を示すブロック図である。 バイトコードアクセラレータがハードウェアの処理からソフトウェア仮想マシンへの処理に移すためにCPUに出力する5つのCPU命令を示す説明図である。 入力選択論理(ISL)の詳細な一例を示すブロック図である。 バイトコードアクセラレータ5を起動する際にバイトコードアクセラレータがCPUに出力する3つのCPU命令を示す説明図である。 ハードウェアで実行しない非サポートバイトコードの実行時におけるバイトコードアクセラレータ(BCA)5とソフトウェア仮想マシン(SOFT_VM)との動作の分担及び相互の遷移状態を示す説明図である。 マイクロプロセッサの好適な応用例である携帯電話システムを例示するブロック図である。 マイクロプロセッサの好適な応用例である車載情報システム例えばカーナビゲーションの構成を示すブロック図である。
符号の説明
1 マイクロプロセッサ(MPU)
2 命令キャッシュ(I−Cache)
3 データキャッシュ(D−Cache)
4 中央処理装置(CPU)
5 バイトコードアクセラレータ(BCA)
6 命令バス(I−Bus)
7 データバス(D−Bus)
8 メイン内部バス(M−Bus)
9 周辺バス(P−Bus)
10 命令フェッチ部(FET)
11 セレクタ
12 デコード部(DEC)
13 命令実行部(EXE)

14 レジスタファイル(REG)
15 制御部(CTL)
20 バイトコードフェッチ部(BFA)
21 バイトコード変換論理部(TRS)
22 転送バス(BCABUS)
23 出力セレクタ
24 出力セレクタ選択論理(OSL)
25 オペランド出力部(OPR)
26 内部ステート部(STM)
27 コンフィグレーションレジスタ部(CFG)
28 入力選択論理(ISL)
30 SDRAM用バスステートコントローラ(SBSC)
31 周辺バス用バスブリッジ(PB)
32 シリアルI/Oモジュール(SIO)
33 I2Cコントローラ(I2C)
34 SDRAM
35、36 セレクタ
40 バイトコード長判定部(BCLD)
41 非サポートバイトコード判定論理部(USRD)
42、46 カウンタとフラグ生成部(CFLG)
43、47 模擬CPUパイプライン部(SCP)
44、48 ダウンカウンタ(DCUNT)
45 アクセラレータ起動信号
49、50 入力セレクタ
60 ソフトウェア仮想マシン(SOFT_VM)
61 初期化ルーチン部(INIT)
62 起動部(HOOKUP)
63 ディスパッチテーブル部(DISP_TBL)
64 ディスパッチテーブル内アドレス(ADDR)
65 インタプリタ部(INTPRET)
ACT…起動
USP BCODE…非サポートバイトコード検出
81 インターフェース(I/F)
82 周辺インターフェース(PPH)
83 カメラ(CMR)
84 メモリカード(CARD)84
85 音源部(SOD)
86 キーボード(KEY)
87 液晶ディスプレイ(LCD)
88 メモリ(MRYa)
89 ベースバンドプロセッサ(BBP)89、
90 高周波部(RF)
91 メモリ(MRYb)
92 3次元グラフィックアクセラレータ(3DG)
93 2次元グラフィックアクセラレータ(2DG)
94 全地球測位システム(GPS)
95 メモリ(MRYc)
100 外部バス(EXBUS1)
101 外部バス(EXBUS2)

Claims (13)

  1. 複数のレジスタを含むレジスタファイルと、
    前記レジスタファイルを利用して第1フォーマット命令を固有命令として実行する命令実行部と、
    第2フォーマット命令を第1フォーマット命令に変換する命令変換回路とを有する情報処理装置であって、
    前記情報処理装置は、第2フォーマット命令で記述された第1プログラムを実行するとき、前記命令変換回路によって変換した第1フォーマット命令を実行する第1動作モードと、前記第1フォーマット命令で記述された変換ソフトウェアによって変換した第1フォーマット命令を実行する第2動作モードとを有し、
    前記レジスタファイルと命令変換回路の間にデータを転送する専用バスを有し、
    前記命令変換回路は、第1動作モードから第2動作モードに移行するとき、命令実行部による命令実行に応じて複数の内部情報を選択的に前記専用バスに出力してレジスタファイルに格納可能とし、第2動作モードから第1動作モードに移行するとき命令実行部による命令実行に応じて前記レジスタファイルから専用バスに出力された内部情報を取り込み制御する選択制御回路を有する情報処理装置。
  2. 前記内部情報は、複数のレジスタをスタックとして利用するためのレジスタ管理情報である請求項1記載の情報処理装置。
  3. 前記内部情報は、イベント切り換えのためのイベントカウント情報である請求項2記載の情報処理装置。
  4. 第1動作モードから第2動作モードに移行するとき前記専用バスに出力される内部情報は、前記第2フォーマットの命令から切り出されたオペランド部である請求項3記載の情報処理装置。
  5. 前記選択制御回路は、前記専用バスに出力する内部情報を選択するセレクタと、第1動作モードから第2動作モードに移行するとき命令実行部による命令実行に応じて前記セレクタの選択動作を制御する出力選択論理回路と、第2動作モードから第1動作モードに移行するとき命令実行部による命令実行に応じて専用バスに出力された内部情報の取り込み先を選択制御する入力選択論理回路とを有する請求項4記載の情報処理装置。
  6. 前記選択制御回路は、命令実行部のパイプラインを模擬する模擬パイプラインを有し、前記模擬パイプラインにおける所定のパイプラインステージに同期して前記専用バスへ内部情報を出力するタイミングと、専用バスの内部情報を取り込むタイミングとを生成する請求項5記載の情報処理装置。
  7. 第1動作モードから第2動作モードに移行するとき、前記変換回路は命令実行部に複数のストア命令を実行させ、前記選択制御回路は前記ストア命令の実行に応じて複数の内部情報を選択的に前記専用バスに出力し、第2動作モードから第1動作モードに移行するとき、前記変換回路は命令実行部に複数のロード命令を実行させ、前記選択制御回路は前記ロード命令の実行に応じて前記レジスタファイルから専用バスに出力された内部情報を取り込み制御する請求項1記載の情報処理装置。
  8. 複数のレジスタを含むレジスタファイルと、
    前記レジスタファイルを利用して第1フォーマット命令を固有命令として実行する命令実行部と、
    第2フォーマット命令を第1フォーマット命令に変換する命令変換回路とを有する情報処理装置であって、
    前記情報処理装置は、第2フォーマット命令で記述された第1プログラムを実行するとき、前記命令変換回路によって変換した第1フォーマット命令を実行する第1動作モードと、前記第1フォーマット命令で記述された変換ソフトウェアによって変換した第1フォーマット命令を実行する第2動作モードとを有し、
    前記レジスタと命令変換回路の間にデータを転送する専用バスを有し、
    前記命令変換回路は、第1動作モードから第2動作モードに移行するとき、命令実行部による命令実行に応じてレジスタ管理情報を前記専用バスに出力してレジスタファイルに格納可能とし、第2動作モードから第1動作モードに移行するとき命令実行部による命令実行に応じて前記レジスタファイルから専用バスに出力されたレジスタ管理情報を取り込み制御する選択制御回路を有する情報処理装置。
  9. 前記第1フォーマット命令はレジスタベースの命令であり、
    前記第2フォーマット命令はスタックベースの命令であり、
    前記レジスタ管理情報は前記複数のレジスタをスタックとして利用するためのスタック割り当てに関する情報である請求項8記載の情報処理装置。
  10. 複数のレジスタを含むレジスタファイルと、
    前記レジスタファイルを利用して第1フォーマット命令を固有命令として実行する命令実行部と、
    第2フォーマット命令を第1フォーマット命令に変換する命令変換回路とを有する情報処理装置であって、
    前記情報処理装置は、第2フォーマット命令で記述された第1プログラムを実行するとき、前記命令変換回路によって変換した第1フォーマット命令を実行する第1動作モードと、前記第1フォーマット命令で記述された変換ソフトウェアによって変換した第1フォーマット命令を実行する第2動作モードとを有し、
    前記レジスタと命令変換回路の間にデータを転送する専用バスを有し、
    前記命令変換回路は、第1動作モードから第2動作モードに移行するとき、命令実行部による命令実行に応じてイベント切り換えのためのイベントカウント情報を前記専用バスに出力してレジスタファイルに格納可能とし、第2動作モードから第1動作モードに移行するとき命令実行部による命令実行に応じて前記レジスタファイルから専用バスに出力されたイベント切り換えのためのイベントカウント情報を取り込み制御する選択制御回路を有する情報処理装置。
  11. 前記選択制御回路は更に、第1動作モードから第2動作モードに移行するとき前記第2フォーマットの命令から切り出されたオペランド部を前記専用バスに出力してレジスタファイルに格納可能とする請求項8又は10記載の情報処理装置。
  12. 複数のレジスタと、
    前記複数のレジスタを利用して第1フォーマット命令を固有命令として実行する命令実行部と、
    第2フォーマット命令を第1フォーマット命令に変換する命令変換回路とを有する情報処理装置であって、
    前記情報処理装置は、第2フォーマット命令で記述された第1プログラムを実行するとき、前記命令変換回路によって変換した第1フォーマット命令を実行する第1動作モードと、前記第1フォーマット命令で記述された変換ソフトウェアによって変換した第1フォーマット命令を実行する第2動作モードとを有し、
    前記レジスタと命令変換回路の間にデータを転送する専用バスを有し、
    前記命令変換回路は、前記第1動作モードと前記第2動作モードとの間の動作モードの移行に際し、当該動作モードの移行に並行して、前記専用バスによる前記複数のレジスタと前記命令変換回路との間のデータ転送を行い、前記命令変換回路は、前記データ転送タイミングを命令実行部による複数回のレジスタストア動作に同期させ、前記レジスタストア動作を規定する命令毎に転送元データを変更する情報処理装置。
  13. アンテナと、
    前記アンテナから得られる信号を符号処理する第1情報処理装置と、
    前記第1情報処理装置に結合された第1主記憶と、
    複数のレジスタ、第1フォーマット命令を実行するためのものであってレジスタベースの処理を行う命令実行部及び命令変換回路を備え前記第1主記憶をアクセス可能とされる第2情報処理装置と、
    前記第2情報処理装置に結合された第2主記憶と、を有し、
    前記第2情報処理装置は、前記アンテナを介して前記第1主記憶に転送されてきた第2フォーマット命令で記述されたプログラムを実行するとき、前記命令変換回路によって変換した第1フォーマット命令を実行する第1動作モードと、前記第1フォーマット命令で記述された変換ソフトウェアによって変換した第1フォーマット命令を実行する第2動作モードとを有し、
    前記命令変換回路は、前記第1動作モードと前記第2動作モードとの間の動作モードの移行に際し、当該動作モードの移行に並行して、前記専用バスによる前記複数のレジスタと前記命令変換回路との間のデータ転送を行い、前記命令変換回路は、前記データ転送タイミングを命令実行部による複数回のレジスタストア動作に同期させ、前記レジスタストア動作を規定する命令毎に転送元データを変更する携帯情報システム。
JP2004315099A 2004-10-29 2004-10-29 情報処理装置 Expired - Fee Related JP4602047B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2004315099A JP4602047B2 (ja) 2004-10-29 2004-10-29 情報処理装置
US11/260,423 US7853776B2 (en) 2004-10-29 2005-10-28 Handover between software and hardware accelerator

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004315099A JP4602047B2 (ja) 2004-10-29 2004-10-29 情報処理装置

Publications (2)

Publication Number Publication Date
JP2006127183A true JP2006127183A (ja) 2006-05-18
JP4602047B2 JP4602047B2 (ja) 2010-12-22

Family

ID=36317834

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004315099A Expired - Fee Related JP4602047B2 (ja) 2004-10-29 2004-10-29 情報処理装置

Country Status (2)

Country Link
US (1) US7853776B2 (ja)
JP (1) JP4602047B2 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011197774A (ja) * 2010-03-17 2011-10-06 Renesas Electronics Corp プロセッサシステム
JP2015534184A (ja) * 2012-09-28 2015-11-26 インテル・コーポレーション コード実行の柔軟なアクセラレーション
JP2017508208A (ja) * 2014-03-26 2017-03-23 インテル・コーポレーション 協調設計されたプロセッサ用動的言語アクセラレータ

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8146066B2 (en) 2006-06-20 2012-03-27 Google Inc. Systems and methods for caching compute kernels for an application running on a parallel-processing computer system
US7814486B2 (en) * 2006-06-20 2010-10-12 Google Inc. Multi-thread runtime system
US8443348B2 (en) 2006-06-20 2013-05-14 Google Inc. Application program interface of a parallel-processing computer system that supports multiple programming languages
US8381202B2 (en) * 2006-06-20 2013-02-19 Google Inc. Runtime system for executing an application in a parallel-processing computer system
US8136104B2 (en) 2006-06-20 2012-03-13 Google Inc. Systems and methods for determining compute kernels for an application in a parallel-processing computer system
US8136102B2 (en) 2006-06-20 2012-03-13 Google Inc. Systems and methods for compiling an application for a parallel-processing computer system
US8108844B2 (en) * 2006-06-20 2012-01-31 Google Inc. Systems and methods for dynamically choosing a processing element for a compute kernel
US8375368B2 (en) * 2006-06-20 2013-02-12 Google Inc. Systems and methods for profiling an application running on a parallel-processing computer system
US8024708B2 (en) 2006-06-20 2011-09-20 Google Inc. Systems and methods for debugging an application running on a parallel-processing computer system
US8261270B2 (en) 2006-06-20 2012-09-04 Google Inc. Systems and methods for generating reference results using a parallel-processing computer system
US8812826B2 (en) * 2010-10-20 2014-08-19 International Business Machines Corporation Processor testing
US9471344B1 (en) 2012-03-27 2016-10-18 Marvell International Ltd. Hardware support for processing virtual machine instructions
EP3089035A1 (en) * 2015-04-30 2016-11-02 Virtual Open Systems Virtualization manager for reconfigurable hardware accelerators
US20170063309A1 (en) * 2015-08-27 2017-03-02 Qualcomm Incorporated Methods and apparatus for reducing transient glitches in audio amplifiers
US10223236B2 (en) * 2017-02-03 2019-03-05 International Business Machines Corporation Dynamic crash detection and debugging assistance
US10802754B2 (en) * 2018-03-12 2020-10-13 Micron Technology, Inc. Hardware-based power management integrated circuit register file write protection
US10802854B2 (en) * 2019-08-30 2020-10-13 Alibaba Group Holding Limited Method and apparatus for interpreting bytecode instruction stream
CN114185603B (zh) * 2021-11-08 2024-01-05 深圳云天励飞技术股份有限公司 一种智能加速卡的控制方法、服务器及智能加速卡

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07319830A (ja) * 1994-05-20 1995-12-08 Matsushita Electric Ind Co Ltd データ転送方法およびデータ転送装置並びにコンパイル方法
JPH11224199A (ja) * 1998-02-06 1999-08-17 Matsushita Electric Ind Co Ltd 翻訳装置と情報処理装置および記録媒体
WO2003025743A1 (fr) * 2001-09-12 2003-03-27 Hitachi, Ltd. Systeme processeur ayant un accelerateur java
JP2004030222A (ja) * 2002-06-26 2004-01-29 Renesas Technology Corp 情報処理装置
JP2004102375A (ja) * 2002-09-05 2004-04-02 Renesas Technology Corp 情報処理装置

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE69738810D1 (de) * 1996-01-24 2008-08-14 Sun Microsystems Inc Befehlsfalten in einem stapelspeicherprozessor
US6332215B1 (en) * 1998-12-08 2001-12-18 Nazomi Communications, Inc. Java virtual machine hardware for RISC and CISC processors
US7065633B1 (en) * 1999-01-28 2006-06-20 Ati International Srl System for delivering exception raised in first architecture to operating system coded in second architecture in dual architecture CPU
US7162612B2 (en) * 2000-08-16 2007-01-09 Ip-First, Llc Mechanism in a microprocessor for executing native instructions directly from memory
US20020069402A1 (en) * 2000-10-05 2002-06-06 Nevill Edward Colles Scheduling control within a system having mixed hardware and software based instruction execution
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
GB2376097B (en) * 2001-05-31 2005-04-06 Advanced Risc Mach Ltd Configuration control within data processing systems
US20030023958A1 (en) * 2001-07-17 2003-01-30 Patel Mukesh K. Intermediate language accelerator chip
US20040215444A1 (en) * 2002-03-25 2004-10-28 Patel Mukesh K. Hardware-translator-based custom method invocation system and method
US20040031022A1 (en) * 2002-08-02 2004-02-12 Masayuki Kabasawa Information processing device for multiple instruction sets with reconfigurable mechanism
JP4224430B2 (ja) * 2003-07-07 2009-02-12 株式会社ルネサステクノロジ 情報処理装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07319830A (ja) * 1994-05-20 1995-12-08 Matsushita Electric Ind Co Ltd データ転送方法およびデータ転送装置並びにコンパイル方法
JPH11224199A (ja) * 1998-02-06 1999-08-17 Matsushita Electric Ind Co Ltd 翻訳装置と情報処理装置および記録媒体
WO2003025743A1 (fr) * 2001-09-12 2003-03-27 Hitachi, Ltd. Systeme processeur ayant un accelerateur java
JP2004030222A (ja) * 2002-06-26 2004-01-29 Renesas Technology Corp 情報処理装置
JP2004102375A (ja) * 2002-09-05 2004-04-02 Renesas Technology Corp 情報処理装置

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011197774A (ja) * 2010-03-17 2011-10-06 Renesas Electronics Corp プロセッサシステム
JP2015534184A (ja) * 2012-09-28 2015-11-26 インテル・コーポレーション コード実行の柔軟なアクセラレーション
US9836316B2 (en) 2012-09-28 2017-12-05 Intel Corporation Flexible acceleration of code execution
JP2017508208A (ja) * 2014-03-26 2017-03-23 インテル・コーポレーション 協調設計されたプロセッサ用動的言語アクセラレータ

Also Published As

Publication number Publication date
US20060101427A1 (en) 2006-05-11
US7853776B2 (en) 2010-12-14
JP4602047B2 (ja) 2010-12-22

Similar Documents

Publication Publication Date Title
JP4602047B2 (ja) 情報処理装置
US9003422B2 (en) Microprocessor architecture having extendible logic
TWI567646B (zh) 容許一架構之編碼模組使用另一架構之程式庫模組的架構間相容性模組
US9588771B2 (en) Instruction set architecture-based inter-sequencer communications with a heterogeneous resource
US8024554B2 (en) Modifying an instruction stream using one or more bits to replace an instruction or to replace an instruction and to subsequently execute the replaced instruction
US20120023310A1 (en) Intermediate Language Accelerator Chip
JP2016103280A (ja) 複数の試験ソースに対するor試験及びand試験機能を提供するために命令をフュージングする方法及び装置
JP2001195250A (ja) 命令トランスレータ、トランスレータ付命令メモリおよびそれらを用いたデータ処理装置
US11899781B2 (en) Processing apparatus, embedded system, system-on-chip, and a security control method for inter-enclave data transmission
JP4035004B2 (ja) 情報処理装置
JP4224430B2 (ja) 情報処理装置
Tan et al. Design and implementation of a Java processor
US8438549B1 (en) Data processing with microcode designed with source coding
JP4127495B2 (ja) 情報処理装置
KR100809294B1 (ko) 가상 머신에서 스레드 스케줄링을 수행하는 장치 및 그방법
US20210089305A1 (en) Instruction executing method and apparatus
JPWO2004027600A1 (ja) データ処理装置及びicカード
US20160357658A1 (en) Implementation Of Processor Trace In A Processor That Supports Binary Translation
KR20040034620A (ko) 중간 언어 가속기 칩
CN117971320A (zh) 用于显示系统的微处理器及寄存器写入方法
WO2003014921A1 (en) Intermediate language accelerator chip
Xin et al. The architecture of the Java extension of 32-bit RISC for smart cards and other embedded systems
KR20170067986A (ko) 프로세서, 이를 포함하는 컴퓨팅 시스템 및 프로세서의 구동 방법
Garzia et al. Control techniques for coupling a coarse-grain reconfigurable array with a generic RISC core
JP2008004132A (ja) 情報処理装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20061207

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20081218

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20091124

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100125

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20100507

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100817

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100903

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: 20100928

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20100929

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

Free format text: PAYMENT UNTIL: 20131008

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

LAPS Cancellation because of no payment of annual fees