(57)【要約】  命令としてデータ値を評価するシステムおよび方法が開示される。たとえば、プログラムコードを実行するように構成された装置は、第2の命令のロケーションに関連する第1の命令を実行するように構成された実行ユニットを含む。第1の命令は、プログラムカウンタによって識別される。装置はまた、ロケーションから第2の命令を受信し、第2の命令を示すようにプログラムカウンタを変更することなく第2の命令を復号して、復号された第2の命令を生成するように構成された復号ユニットを含む。
2013527534.tif 000002
【特許請求の範囲】
【請求項１】
プログラムカウンタによって識別される、第2の命令のロケーションを識別するためのオペランドを含む第1の命令を受信するステップと、
前記ロケーションを識別するために前記第1の命令を実行したときに、前記ロケーションから前記第2の命令を取り出すステップと、
前記第2の命令を示すように前記プログラムカウンタを変更することなく、前記取り出された第2の命令を復号ユニットに提供するステップと、
前記復号ユニットを使用して前記第2の命令を復号するステップと、
前記第2の命令を実行するステップと
を含む、プログラムコードを実行する方法。
【請求項２】
前記第2の命令を実行した後に前記プログラムカウンタを変更するステップをさらに含む、請求項1に記載の方法。
【請求項３】
前記第2の命令はインタープリタ型命令から導出される、請求項1に記載の方法。
【請求項４】
前記第2の命令は複数のネイティブ機械オペレーションからなるパケットを含む、請求項1に記載の方法。
【請求項５】
前記第2の命令は単一の命令である、請求項1に記載の方法。
【請求項６】
前記第2の命令は飛越し命令および算術命令のうちの少なくとも1つである、請求項1に記載の方法。
【請求項７】
前記第1の命令はインタープリタループ内の命令である、請求項1に記載の方法。
【請求項８】
前記第1の命令は評価命令である、請求項1に記載の方法。
【請求項９】
プログラムカウンタによって識別される、第2の命令のロケーションに関連する第1の命令を受信するステップと、
前記ロケーションを識別するためにプロセッサで前記第1の命令を実行し、実行時に、前記第2の命令を示すように前記プログラムカウンタを変更することなく、前記ロケーションから前記第2の命令を取り出すステップと、
前記第2の命令を実行するステップと
を含む、プログラムコードを実行する方法。
【請求項１０】
前記実行された第2の命令の結果をメモリに書き込むステップをさらに含む、請求項9に記載の方法。
【請求項１１】
前記第2の命令は飛越し命令および算術命令のうちの少なくとも1つである、請求項9に記載の方法。
【請求項１２】
前記ロケーションはレジスタである、請求項9に記載の方法。
【請求項１３】
前記ロケーションはメモリの指定領域である、請求項9に記載の方法。
【請求項１４】
前記第1の命令を実行する前に前記第1の命令を復号するステップをさらに含む、請求項9に記載の方法。
【請求項１５】
プログラムカウンタによって識別される、第2の命令のロケーションに関連する第1の命令を実行するように構成された実行ユニットと、
前記ロケーションから前記第2の命令を受信し、前記第2の命令を示すように前記プログラムカウンタを変更することなく前記第2の命令を復号して、復号された第2の命令を生成するように構成された復号ユニットと
を含む、プログラムコードを実行する装置。
【請求項１６】
前記実行ユニットは前記ロケーションから前記第2の命令を取り出すことを開始するようにさらに構成される、請求項15に記載の装置。
【請求項１７】
前記ロケーションはレジスタおよびデータキャッシュのうちの少なくとも1つである、請求項15に記載の装置。
【請求項１８】
前記プログラムカウンタは前記第2の命令を示すことが不可能である、請求項15に記載の装置。
【請求項１９】
前記第2の命令は飛越し命令および算術命令のうちの少なくとも1つである、請求項15に記載の装置。
【請求項２０】
前記第2の命令はインタープリタ型命令からから導出される、請求項15に記載の装置。
【請求項２１】
前記第2の命令は複数のネイティブ機械オペレーションからなるパケットを含む、請求項15に記載の装置。
【請求項２２】
前記第2の命令は単一の命令である、請求項15に記載の装置。
【請求項２３】
前記実行された第2の命令の結果を受信するように構成されたレジスタをさらに含む、請求項15に記載の装置。
【請求項２４】
前記第1の命令は評価命令である、請求項15に記載の装置。
【請求項２５】
前記第1の命令および前記第2の命令は割込み不可能な命令からなるグループを含む、請求項15に記載の装置。
【請求項２６】
前記第1の命令および前記第2の命令は共通スレッドによって実行される、請求項15に記載の装置。
【請求項２７】
前記第2の命令が実行される前に割込みが受信されたときに、前記第1の命令は取り消される、請求項15に記載の装置。
【請求項２８】
前記復号された第2の命令は前記実行ユニットによって実行される、請求項15に記載の装置。
【請求項２９】
セットトップボックス、音楽プレーヤ、ビデオプレーヤ、エンターテインメントユニット、ナビゲーションデバイス、通信デバイス、携帯情報端末(PDA)、固定位置データユニット、およびコンピュータからなる群から選択されるデバイスをさらに含み、前記実行ユニットおよび前記復号ユニットが前記デバイスに組み込まれる、請求項15に記載の装置。
【請求項３０】
プログラムカウンタによって識別される、第2の命令のロケーションに関連する第1の命令を受信し、
前記ロケーションを識別するために前記第1の命令を実行し、実行時に、前記第2の命令を示すように前記プログラムカウンタを変更することなく、前記ロケーションから前記第2の命令を取り出し、
前記第2の命令を実行する
ようにコンピューティングシステムによって実行可能な命令を記録するコンピュータ可読記録媒体。
【請求項３１】
前記命令は前記実行された第2の命令の結果をレジスタに書き込むように前記コンピューティングシステムによってさらに実行可能な、請求項30に記載のコンピュータ可読記録媒体。
【請求項３２】
前記第2の命令は飛越し命令および算術命令のうちの少なくとも1つである、請求項30に記載のコンピュータ可読記録媒体。
【請求項３３】
前記ロケーションはレジスタおよびメモリの指定領域のうちの少なくとも1つである、請求項30に記載のコンピュータ可読記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、一般にはデータ処理システムに関し、より詳細には、データ処理システム内でデータ値および命令を評価することに関する。
【背景技術】
【０００２】
複数のハードウェアプラットフォームで実行され得るソースコードでアプリケーションを作成するために、インタープリタ型プログラミング言語が設計されている。Java(登録商標)は、バイトコードまたは仮想機械命令として知られている中間言語にランタイム前に変換されるソースコードを生成することによって、プラットフォームの独立性を実現するインタープリタ型プログラミング言語である。これらの命令は通常、中央処理装置(CPU)によって直接実行することはできない。バイトコードは、インタープリタソフトウェアとして知られるプラットフォーム対応(platform-appropriate)機械コードによってランタイムに実行される。各バイトコード命令を解釈するために、インタープリタソフトウェアは、一連のオペレーションまたは命令をフェッチし、復号し、実行することができる。
【０００３】
仮想機械によって定義される各バイトコード命令について、インタープリタソフトウェアは通常、中央処理装置(CPU)命令で表現される対応する実行プログラムを含む。インタープリタソフトウェアは、メモリから仮想機械命令をフェッチする、または読み取ることをCPUに行わせることができる。インタープリタソフトウェアはさらに、バイトコード命令について実行プログラムのアドレスを復号することをCPUに行わせることができる。CPUの制御は実行プログラムに移転でき、実行プログラムは、バイトコードを実施するオペレーションを実行する一連の命令を実行する。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
バイトコードごとに一連のネイティブ機械命令を実行するのは、非効率的であり得る。バイトコードを実行するための他の方法は、直接実行できるネイティブ機械コードにバイトコードをコンパイルするステップを含む。しかしながら、そのような「ジャストインタイム」コンパイルは、実施するにあたりコストがかかり、複雑であり得る。したがって、より効率的なインタープリタが望まれる。
【課題を解決するための手段】
【０００５】
特定の一実施形態では、評価命令がインタープリタループに導入される。評価命令は、レジスタを読み取ることをプロセッサに行わせることができ、次の命令としてレジスタのコンテンツが実行され得る。たとえば、評価命令の結果としてレジスタからデータ値を読み取ることが、次に生じる命令となり得る。次の命令としてレジスタのコンテンツを実行することで、インタープリタループオペレーションを簡素化し、その効率性を高めることができる。
【０００６】
別の特定の実施形態では、プログラムコードを実行する方法が開示される。本方法は、第2の命令のロケーションを識別するためのオペランドを含む第1の命令を受信するステップを含む。第1の命令は、プログラムカウンタによって識別される。第1の命令を実行したときに、ロケーションから第2の命令が取り出され得る。本方法は、第2の命令を示すようにプログラムカウンタを変更することなく、取り出された第2の命令を復号ユニットに提供するステップを含む。本方法はまた、復号ユニットを使用して第2の命令を復号し、第2の命令を実行するステップを含む。
【０００７】
別の特定の実施形態では、プログラムコードを実行する別の方法が開示される。本方法は、第2の命令のロケーションに関連する第1の命令を受信するステップを含む。第1の命令は、プログラムカウンタによって識別される。第1の命令は、ロケーションを識別するために実行される。実行時に、第2の命令を示すようにプログラムカウンタを変更することなく、第2の命令がロケーションから取り出される。本方法は、プロセッサで第2の命令を実行するステップをさらに含む。
【０００８】
別の特定の実施形態では、プログラムコードを実行するように構成された装置が開示される。本装置は、第2の命令のロケーションに関連する第1の命令を実行するように構成された実行ユニットを含む。第1の命令は、プログラムカウンタによって識別される。本装置はまた、ロケーションから第2の命令を受信し、第2の命令を示すようにプログラムカウンタを変更することなく第2の命令を復号して、復号された第2の命令を生成するように構成された復号ユニットを含む。
【０００９】
別の特定の実施形態では、コンピューティングシステムによって実行可能な命令を記憶しているコンピュータ可読媒体が開示される。それらの命令は、第2の命令のロケーションに関連する第1の命令を受信するための命令を含む。第1の命令は、プログラムカウンタによって識別される。これらの命令はまた、ロケーションを識別するために第1の命令を実行し、第1の命令の実行時に、第2の命令を示すようにプログラムカウンタを変更することなく、ロケーションから第2の命令を取り出すための命令を含む。これらの命令は、第2の命令を実行するための命令をさらに含む。
【００１０】
開示する実施形態のうちの少なくとも1つによって提供される1つの具体的な利点は、インタープリタのオペレーション速度および効率性の向上である。開示する命令は、比較的低いオーバーヘッドで既存のシステムにおいて実施できる。インタープリタループオペレーションが簡素化され得る。本開示の他の態様、利点、および特徴は、以下のセクション、すなわち、図面の簡単な説明、発明を実施するための形態、および特許請求の範囲を含む、本出願全体の検討後に明らかになろう。
【図面の簡単な説明】
【００１１】
【図１】命令としてデータ値を評価するように構成されたインタープリタを含む装置の特定の例示的な実施形態のブロック図である。
【図２】実行ユニットから受信した命令を復号するように構成された復号ユニットを含む、図1のインタープリタのようなインタープリタを実行することが可能なシステムの特定の例示的な実施形態のブロック図である。
【図３】バイトコードを解釈および実行するシステムの特定の例示的な実施形態のブロック図である。
【図４】命令としてデータ値を評価することをインタリーブ型マルチスレッドプロセッサに行わせる評価命令を実行するように構成されたインタリーブ型マルチスレッドプロセッサを含むシステムの特定の例示的な実施形態のブロック図である。
【図５】命令を処理する方法の第1の例示的な実施形態のフローチャートである。
【図６】命令を処理する方法の第2の例示的な実施形態のフローチャートである。
【図７】命令としてデータ値を評価するためにデジタル信号プロセッサによって実行されるように構成されたプログラムコードを含む電子デバイスのブロック図である。
【発明を実施するための形態】
【００１２】
図1を参照すると、命令としてデータ値を評価するように構成された装置の特定の例示的な実施形態が開示され、全体的に100と称される。装置100は、メモリ110およびネットワークインターフェース116に結合されたマルチスレッドプロセッサ108を含み得る。メモリ110は、Java(登録商標)仮想機械(JVM)インタープリタループ102を含む。JVMインタープリタループ102は、プログラムループ104および評価命令プログラム122を含む。メモリ110は、バイトコード106をさらに含む。バイトコード106は一般に、JVMインタープリタループ102による実行に適したプログラム命令を含むバイナリファイルを含む。メモリ110は、オペレーティングシステム112および1つまたは複数のアプリケーション114をさらに含む。
【００１３】
マルチスレッドプロセッサ108は、スレッド132を含む。スレッド132は、命令からなるグループ130を示すプログラムカウンタ126を含むことができる。第1の命令124および第2の命令128は、命令からなるグループ130内に含まれ得る。したがって、共通スレッド132は、第1の命令124と第2の命令128の両方を実行することができる。一実施形態では、命令からなるグループ130は割込み不可能であり得る。別の特定の実施形態によれば、第1の命令124は、第2の命令128が実行される前に割込みが受信されたときには、取り消されることがある。
【００１４】
第1の命令124は、第2の命令128のロケーションを識別するためのオペランドを含むことができる。第1の命令124は、プログラムカウンタ126によって識別され得る。第1の命令124は、命令として第1の命令124のデータ値を評価することをマルチスレッドプロセッサ108に行わせる評価命令を含むことができる。第2の命令128は、プログラムカウンタ126をバイパスすることができる。
【００１５】
図1は、命令としてデータ値を評価できるJVMインタープリタループ102を含む特定の例示的な装置100を示している。インタープリタループ102のオペレーションは、処理を減らして効率性を高めつつ、翻訳結果を生成することができる。
【００１６】
図2を参照すると、インタープリタを実行することが可能なシステムの特定の例示的な実施形態のブロック図が開示され、全般に200と称される。一実施形態では、インタープリタは、図1のJVMインタープリタループ102に類似したものであり得る。システム200は、第1の命令204を有する命令キャッシュ202を含む。図2の第1の命令204は、図1の第1の命令124と同じであってよい。第1の命令204は、プラットフォーム対応機械コードに翻訳されるバイトコードを含むことができる。
【００１７】
命令キャッシュ202は、経路206を介してマルチプレクサ248に結合可能であり、マルチプレクサ248は、経路250を介して復号ユニット208に結合される。復号ユニット208は、命令キャッシュ202から受信した第1の命令204のような命令を復号するように構成され得る。復号ユニット208は、経路222を介して実行ユニット218に結合可能である。復号ユニット208はさらに、経路210を介してレジスタファイル212にレジスタアドレスを提供することができる。
【００１８】
実行ユニット218は、経路222を介して復号ユニット208から受信した命令のほか、バス234を介してレジスタファイル212から受信した命令を実行するように構成され得る。たとえば、実行ユニット218は、レジスタファイル212内に記憶されている第2の命令214を実行するように構成可能である。特定の一実施形態では、第2の命令214はインタープリタループ内の命令である。たとえば、第2の命令214は、図1のJVMインタープリタループ102によって、かつJVMインタープリタループ102内で実行可能な命令を含むことができる。図2の第2の命令214は、図1の第2の命令128と同じであってよい。第1の命令204は、プログラムカウンタ238によって識別され得る。実行された第1の命令204は、経路224を介して実行ユニット218からライトバックユニット226に出力され得る。ライトバックユニット226は、実行された第1の命令204の結果を、バス228を介してレジスタファイル212に転送することができる。
【００１９】
復号ユニット208は、レジスタファイル212から第2の命令214を受信するように構成可能である。代替実施形態では、復号ユニット208は、経路246を介してデータキャッシュ242から第2の命令214の代替コピーを受信することができる。特定の一実施形態では、第2の命令214は解釈命令から導出され得る。たとえば、第2の命令214は、図1のJVMインタープリタループ102によって実行可能な命令を含むことができる。復号ユニット208はさらに、第2の命令214を示すようにプログラムカウンタ238を変更することなく第2の命令214を復号して、復号された第2の命令を生成することができる。特定の一実施形態によれば、プログラムカウンタ238は第2の命令214を示すことが不可能なことがある。たとえば、プログラムカウンタ238がメモリアドレスを含む場合、プログラムカウンタ238はレジスタファイルのロケーションを示すことが不可能なことがある。
【００２０】
動作時に、第1の命令204が命令キャッシュ202から復号ユニット208に通信され得る。第1の命令204は、プログラムカウンタ238によって識別され得る。復号ユニット208は、第1の命令204を復号し、経路222を介して実行ユニット218に送信することができる。復号された第1の命令204を実行して結果を生成することができ、結果はバス224を介してライトバックユニット226に通信される。結果は、バス228を介してレジスタファイル212に通信され得る。結果を使用して第2の命令214を選択することができる。たとえば、第1の命令204を実行して、第2の命令214のロケーションを生成することができる。
【００２１】
第1の命令204の実行の結果として、復号ユニット208においてバス216を介して第2の命令214を取り出すことができる。代替的に、第2の命令214をデータキャッシュ242から取り出すことができる。たとえば、第1の命令204は、第2の命令214のソースロケーションを、データキャッシュ242内にあり得るメモリ内のロケーションであると、または第2の命令214を含むレジスタであると指定することができる。第2の命令214は、メモリからレジスタに以前ロードされた可能性、または以前の計算の結果としてレジスタに記憶された可能性がある。第1の命令204の実行は、指定されたロケーションから第2の命令214を取り出し、第2の命令214を実行するようにシステム200を構成することができる。
【００２２】
第2の命令214は、第2の命令214を示すようにプログラムカウンタ238を変更することなく、復号ユニット208に配信され得る。復号ユニット208は、第2の命令214を復号することができる。復号された第2の命令は、復号ユニット208から経路222を介して実行ユニット218に通信され得る。実行ユニット218からライトバックユニット226に結果が出力され得る。ライトバックユニット226は、バス228を介してレジスタファイル212に結果を通信することができる。
【００２３】
したがって、図2は、第2の命令214の位置を特定するために使用されるロケーション情報を識別するために第1の命令204を実行するインタープリタ200を示している。復号ユニット208は、命令キャッシュ202の代わりに、レジスタファイル212またはデータキャッシュ242から第2の命令214を取り出し、翻訳の迅速化をもたらすことができる。
【００２４】
図3を参照すると、バイトコードを解釈し実行するように構成されたシステムの特定の例示的な実施形態のブロック図が開示され、全般に300と称される。システム300は、ルックアップテーブル316の命令に翻訳されるバイトコードストリーム302を含む。
【００２５】
バイトコードストリーム302は、第1のバイトコード命令304、第2のバイトコード命令306、第3のバイトコード命令308および第4のバイトコード命令310を含む。バイトコード命令ごとに、符号化およびニーモニックが示されている。たとえば、第4のバイトコード命令310は0x03として符号化され、Lconst_0のニーモニックを有する。ポインタ312のByteCodePtrは、実行されるバイトコード命令を指定する。たとえば、図3のポインタ312は、第2のバイトコード命令306を示しており、そのローディングを開始する。第2のバイトコード命令306の符号化(すなわち、0x60)を使用して、ルックアップテーブル316でルックアップ演算314を実行することができる。
【００２６】
ルックアップテーブル316は、エントリ318、320、322、324、326、328、330および332を含み、これらはそれぞれ0x00、0x01、0x02、0x03、0x04、0x2a、0x60および0x6cとして符号化されるバイトコードに対応する。ルックアップテーブル316は、図1のメモリ110などのメモリ内に記憶され得る。ルックアップテーブル316は、すべての考え得るバイトコードについてのエントリを含むことができるが、説明を明快にするために、いくつかのバイトコードのみを示している。エントリ318〜332はネイティブ機械命令を含む。ルックアップテーブル316のエントリ318〜332は、エントリ318(すなわち、ノーオペレーション、または「NOP」)のように、単一のネイティブ機械オペレーションを含むことがある。代替的に、ルックアップテーブル316のエントリは、バイトコード命令310に対応するエントリ324に含まれるネイティブ機械オペレーション(すなわち、「PUSH T」および「T=0」)からなるパケットのように、複数の命令を含むことがある。別の例では、バイトコード命令306はエントリ330に対応することができ、エントリ330は、「POP T2」命令と「ADD T, T2」命令の両方を含む。エントリ332の「JUMP div_code」命令のようなさらに他のエントリは、複雑な命令を実施するロケーションへ分岐することをインタープリタに行わせることができる。
【００２７】
特定の一実施形態では、単一のバイトコード命令に関連する複数のネイティブ機械オペレーションは、命令からなる割込み不可能なグループまたはパケットとして処理され得る。たとえば、バイトコード命令310は、エントリ324内の複数のネイティブ機械オペレーションに対応するJava(登録商標)命令を含むことができる。エントリ324内の複数のネイティブ機械オペレーションの処理は、Java(登録商標)命令の処理中に割込みが生じないように制御され得る。
【００２８】
したがって、図3はバイトコード翻訳プロセスの論理図を示している。バイトコード命令306は、ルックアップテーブル316を使用して解釈される。ルックアップテーブル316は、飛越し命令のみではなく、複数のタイプの命令を含むことができる。バイトコード命令306は、ルックアップテーブル316のエントリ330に論理的に関連付けられ得る。翻訳プロセスでは、飛越しおよび関連する分岐を少なくして、符号化を比較的少なくすることができる。すなわち、命令の位置を特定するために分岐オペレーションを使用する代わりに、ルックアップテーブル316内の命令を実行できるので、インタープリタループ命令の簡素化を実現できる。さらに、複数の命令がルックアップテーブル316の単一のエントリ内に含まれ得る。たとえば、エントリ330は、複数のネイティブ機械オペレーションまたは命令、たとえば算術命令などからなるパケットを含む。追加のハードウェアの使用および関連するオーバーヘッドコストを伴わずに、命令によって、ルックアップテーブル316を動的に更新することができる。
【００２９】
図4は、命令としてデータ値を評価することをインタリーブ型マルチスレッドプロセッサに行わせる評価プログラムコードを実行するように構成されたインタリーブ型マルチスレッドプロセッサを含む処理システム400の特定の例示的な実施形態のブロック図である。処理システム400は、バスインターフェース446を介して命令キャッシュ404およびデータキャッシュ412と通信するように適合されたメモリ402を含む。命令キャッシュ404は、バス410によってシーケンサ414に結合される。命令キャッシュ404は、命令としてデータ値を評価するために1つまたは複数の実行ユニット418、420、422および424によって実行できる評価プログラム440を含む。
【００３０】
シーケンサ414は、割込みレジスタから受信し得る一般的な割込み416のような割込みを受信するように適合される。シーケンサ414はまた、スーパバイザ制御レジスタ432およびグローバル制御レジスタ434に結合される。シーケンサ414は、複数の実行ユニット、たとえば、第1の命令実行ユニット418、第2の命令実行ユニット420、第3の命令実行ユニット422および第4の命令実行ユニット424に結合され、これらのユニットを使用して、並行して複数の命令を実行することができる。各命令実行ユニット418、420、422および424は汎用レジスタファイル426に結合可能である。汎用レジスタファイル426はまた、バス430を介してシーケンサ414、データキャッシュ412、およびメモリ402に結合可能である。
【００３１】
スーパバイザ制御レジスタ432およびグローバル制御レジスタ434は、割込みを受け入れるか否かを決定し、命令の実行を制御するためにシーケンサ414内の制御論理によってアクセスされ得るビットを記憶することができる。特定の一実施形態によれば、図1の第1の命令124のような第1の命令は、図1の第2の命令128のような第2の命令が実行される前に割込み442が受信されたときには、取り消され得る。割込み442は、図4に示すように、割込みステータス448によって示され得る。別の特定の実施形態によれば、図1の第1の命令124および第2の命令128のような第1の命令および第2の命令は割込み不可能であり得る。
【００３２】
第2の命令128が実行されるときにプログラムカウンタは変更されないので、第1の命令124と第2の命令128との間の割込みに対処するように記録されるプロセッサの状態は、第2の命令128が実行されることを正確には反映しないことがある。処理システム400は、割込み不可能になるように、または第1の命令126の後であって第2の命令128の前に割込みが受信された場合に、第1の命令126が取り消され、割込み後に再実行され得るように、第1の命令124および第2の命令128の実行を制御することができる。
【００３３】
処理システム400はまた、図3のエントリ324の複数のネイティブ機械命令に対応するバイトコード命令310(たとえば、Java(登録商標)命令)のような複数のネイティブ機械オペレーションを含み得る命令の実行を制御して、割込みのない複数のネイティブ機械オペレーションの処理を確実にすることができる。このようにして、第1の命令および第2の命令は、命令からなる割込み不可能なグループ内に含まれ得る。1つまたは複数の命令を、メモリ402の指定領域438のようなロケーションから取り出すことができる。たとえば、図2の第2の命令214は、第1の命令204の実行時に、メモリの指定領域から取り出され得る。
【００３４】
命令キャッシュ404は、複数の命令レジスタを介してシーケンサ414に結合可能である。特定の一実施形態では、処理システム400は、複数のスレッドを含むインタリーブ型マルチスレッドプロセッサである。処理システム400は、様々なスレッドの各々からの命令を連続的に実行する。ソフトウェアスレッドのインターリービング処理により、プロセッサをアグレッシブなクロックサイクルでクロック制御して、ハードウェアスレッドの処理能力を効率的に利用することができる。たとえば、比較的遅いデータ読取りまたは書込み動作が1つのソフトウェアスレッドに関して処理されている間に、データ読取りまたは書込み動作の完了を待つことなく、プロセッサによって別のソフトウェアスレッドからの命令が実行され、または少なくとも部分的に実行され得る。
【００３５】
図4の処理システム400は、評価プログラムコードを実行するように構成されたインタリーブ型マルチスレッドプロセッサを含む。図1の実施形態では、図4の処理システム400は、マルチスレッドプロセッサ108として使用され得る。複数のスレッドを使用することで、キャッシュミスがある場合にプロセッサを効率的に利用することができ、命令としてデータ値を効率的に読み取り、バイトコード解釈を迅速化することが容易になり得る。
【００３６】
図5は、命令を処理する方法500の特定の例示的な実施形態のフローチャートである。たとえば、例示的な方法500は、図1の装置100または図2のシステム200によって実行され得る。
【００３７】
502で、第2の命令のロケーションを識別するためのオペランドを含む第1の命令がインタープリタループ内で受信され得る。第1の命令は、プログラムカウンタによって識別される。たとえば、図2の第1の命令204を、インタープリタを実行することが可能なシステム200内で受信することができ、第1の命令204は、第2の命令214のロケーションを識別するためのオペランドを含む。第1の命令204は、プログラムカウンタ238によって識別される。
【００３８】
504で、第1の命令が復号され得る。第1の命令は評価命令であってよい。たとえば、図2の第1の命令204が復号ユニット208によって復号され得る。第1の命令204は評価命令であってよい。
【００３９】
506で、ロケーションを識別するために第1の命令を実行したときに、ロケーションから第2の命令が取り出され得る。ロケーションは、レジスタ、キャッシュまたはメモリの指定領域を含むことができる。たとえば、図2の第1の命令204を実行して、第2の命令214のロケーションを生成することができる。第2の命令214は、生成されたロケーションから、たとえば図2のレジスタファイル212内のレジスタから、図2のデータキャッシュ242から、メモリの指定領域、たとえば図4の指定領域438から、または別のロケーションから取り出され得る。
【００４０】
第2の命令214は、図2の実行ユニット218において、第1の命令204の実行時にロケーションから取り出され得る。第2の命令は単一のネイティブ機械オペレーション、または複数のネイティブ機械オペレーションからなるパケットを含むことができる。たとえば、図3のエントリ318は、単一のネイティブ機械オペレーションを含む。代替的に、図3のエントリ324は、複数のネイティブ機械オペレーションからなるパケットを含む。
【００４１】
508で、取り出された第2の命令は、第2の命令を示すようにプログラムカウンタを変更することなく、復号ユニットに提供され得る。たとえば、図2の第2の命令214は、第2の命令214を示すようにプログラムカウンタ238を変更することなく、バス216を介して復号ユニット208に提供され得る。プログラムカウンタ238は、第2の命令214のアドレスを保持するように増分される必要はなく、処理要件が軽減され得る。
【００４２】
510で、復号ユニットを使用して第2の命令を復号し、復号された第2の命令を生成することができる。たとえば、図2の第2の命令214を、復号ユニット208を使用して復号し、経路222を介して出力される復号された第2の命令を生成することができる。第2の命令がネイティブ機械オペレーションからなるグループを含む一実施形態では、ネイティブ機械オペレーションからなるグループ内の各々が、たとえば復号ユニット208で復号され得る。
【００４３】
512で、第2の命令を示すようにプログラムカウンタを変更することなく、第2の命令が実行され得る。たとえば、経路222を介して実行ユニット218に送られた復号された第2の命令は、図2の実行ユニット218によって実行できる。実行ユニット218は、第2の命令が単一のネイティブ機械オペレーションを含む場合に、単一の命令を実行することができる。代替的に、実行ユニット218は、第2の命令が複数のネイティブ機械オペレーションを含む場合に、複数の命令を実行することができる。たとえば、第2の命令を実行する際に、実行ユニット218はプッシュ演算と算術演算の両方を実行することができる。特定の一実施形態では、単一のバイトコード命令に対応する複数のネイティブ機械オペレーションは、単一の超長命令語(VLIW)パケットとして実行可能で、VLIWパケットの複数の命令またはすべての命令が、たとえば図4の実行ユニット418〜424で並行して処理される。プログラムカウンタは、第2の命令を実行した後に変更され得る。
【００４４】
図5は、命令としてデータ値を評価できる方法でプログラムコードを実行するためのプロセスを示している。たとえば、命令キャッシュからではなく実行ユニットから次の命令が受信され得る。図5の方法500によって実現する効率性は、インタープリタの翻訳速度を上げることができる。
【００４５】
図6は、命令を処理する方法600の特定の例示的な実施形態のフローチャートである。本明細書で説明する例示的な方法600は、図1の装置100または図2のシステム200によって実行され得る。
【００４６】
602で、プログラムカウンタによって識別される、第2の命令のロケーションに関連する第1の命令が受信され得る。たとえば、図2の第2の命令214のロケーションを示唆する第1の命令204が受信され得る。第1の命令204は、プログラムカウンタ238によって識別され得る。
【００４７】
604で、第2の命令のロケーションを識別するためにプロセッサで第1の命令を実行することができ、実行時に、第2の命令を示すようにプログラムカウンタを変更することなく、ロケーションから第2の命令を取り出すことができる。たとえば、図2の第2の命令214が、マルチスレッドプロセッサにおいて第1の命令204の実行時に取り出され得る。図2の第2の命令214は、第2の命令214を示すようにプログラムカウンタ238を変更することなく、取り出され得る。
【００４８】
606で、第2の命令が実行され得る。たとえば、経路222を介して実行ユニット218に送られた第2の命令214が、図2の実行ユニット218によって実行され得る。実行ユニット218は、第2の命令214が単一のネイティブ機械オペレーションを含む場合に、単一の命令を実行することができる。代替的に、実行ユニット218は、第2の命令214が複数のネイティブ機械オペレーションを含む場合に、複数のネイティブ機械オペレーションを実行することができる。たとえば、第2の命令214を実行する際に、実行ユニット218はプッシュ演算と算術演算の両方を実行することができる。
【００４９】
図7は、図1〜図6で説明した1つまたは複数のバイトコードを翻訳するためのインタープリタ命令評価プログラムコード764を含むデジタル信号プロセッサ(DSP)710を含む通信デバイス700の特定の例示的な実施形態のブロック図である。図7は、デジタル信号プロセッサ710およびディスプレイ728に結合されたディスプレイコントローラ726も示す。さらに、入力デバイス730がDSP710に結合される。コーダ/デコーダ(コーデック)734もDSP710に結合され得る。スピーカー736およびマイクロフォン738がコーデック734に結合され得る。静止画像、動画、または両方をキャプチャするように構成されたビデオカメラ760が、カメラインターフェース768を介してDSP710に結合され得る。インタープリタ命令評価プログラムコード764を有するDSP710は、前述のバイトコードを処理することができる。
【００５０】
図7はまた、ワイヤレスインターフェース740がDSP710とワイヤレスアンテナ742とに結合され得ることを示す。特定の一実施形態では、電源装置744がオンチップシステム722に結合される。その上、特定の一実施形態では、図7に示すように、ディスプレイ728、入力デバイス730、スピーカー736、マイクロフォン738、ワイヤレスアンテナ742、および電源装置744は、オンチップシステム722の外部にある。しかしながら、それぞれは、オンチップシステム722の構成要素に結合される。
【００５１】
インタープリタ命令評価プログラムコード764がDSP710の構成要素として示されること、またはDSP710によって実行されることがあるが、インタープリタ命令評価プログラムコード764は、DSP710の他の構成要素に組み込まれること、DSP710とは別個の構成要素として明示されることなどもあることを理解されたい。
【００５２】
さらに、本明細書で開示した実施形態に関して説明した様々な例示的な論理ブロック、構成、モジュール、回路、およびアルゴリズムステップは、電子ハードウェア、コンピュータソフトウェア、または両方の組合せとして実装され得ることを、当業者は諒解されよう。様々な例示的なコンポーネント、ブロック、構成、モジュール、回路、およびステップが、全般にそれらの機能に関して、上で説明されてきた。そのような機能をハードウェアとして実装するか、ソフトウェアとして実装するかは、特定の適用例および全体的なシステムに課される設計制約に依存する。当業者は、説明した機能を特定の適用例ごとに様々な方法で実装し得るが、そのような実装の決定は、本開示の範囲からの逸脱を生じるものと解釈すべきではない。
【００５３】
本明細書で開示する実施形態に関して説明する方法またはアルゴリズムのプロセスは、直接ハードウェアで実施されるか、プロセッサによって実行されるソフトウェアモジュールで実施されるか、またはその2つの組合せで実施され得る。たとえば、実施形態を実行するのに適したデバイスを、セットトップボックス、音楽プレーヤ、ビデオプレーヤ、エンターテインメントユニット、ナビゲーションデバイス、通信デバイス、携帯情報端末(PDA)、固定位置データユニット、およびコンピュータから選択することができ、そのデバイスに実行ユニットおよび復号ユニットが組み込まれる。
【００５４】
ソフトウェアモジュールは、ランダムアクセスメモリ(RAM)、フラッシュメモリ、読取り専用メモリ(ROM)、プログラマブル読取り専用メモリ(PROM)、消去可能プログラマブル読取り専用メモリ(EPROM)、電気消去可能プログラマブル読取り専用メモリ(EEPROM)、レジスタ、ハードディスク、リムーバブルディスク、コンパクトディスク読取り専用メモリ(CD-ROM)、または当技術分野で知られている任意の他の形態の記憶媒体中に存在し得る。例示的な記憶媒体は、プロセッサが記憶媒体から情報を読み取り、記憶媒体に情報を書き込むことができるように、プロセッサに結合される。代替として、記憶媒体はプロセッサと一体であり得る。プロセッサおよび記憶媒体は、特定用途向け集積回路(ASIC)に存在し得る。ASICは、コンピューティングデバイスまたはユーザ端末に存在し得る。代替的には、プロセッサおよび記憶媒体は、コンピューティングデバイスまたはユーザ端末の中に、個別のコンポーネントとして存在し得る。
【００５５】
開示される実施形態の上記の説明は、当業者が、開示された実施形態を実現または利用できるようにするために、提供される。これらの実施形態への様々な修正が、当業者には容易に明らかであり、本明細書で定義される原理は、本開示の範囲から逸脱することなく、他の実施形態に適用され得る。したがって、本開示は、本明細書で示される実施形態に限定されることは意図されず、以下の特許請求の範囲で定義されるような原理および新規の特徴と矛盾しない、可能な最大の範囲を認められるべきである。
【符号の説明】
【００５６】
100  装置
102  Java(登録商標)仮想機械(JVM)インタープリタループ
104  プログラムループ
106  バイトコード
108  マルチスレッドプロセッサ
110  メモリ
112  オペレーティングシステム
114  アプリケーション
116  ネットワークインターフェース
122  評価命令プログラム
124  第1の命令
126  プログラムカウンタ
128  第2の命令
130  命令からなるグループ
132  スレッド
200  システム、インタープリタ
202  命令キャッシュ
204  第1の命令
206  経路
208  復号ユニット
210  経路
212  レジスタファイル
214  第2の命令
216  バス
218  実行ユニット
222  経路
224  経路
226  ライトバックユニット
228  経路
234  バス
238  プログラムカウンタ
242  データキャッシュ
246  経路
248  マルチプレクサ
250  経路
300  システム
302  バイトコードストリーム
304  バイトコード命令
306  バイトコード命令
308  バイトコード命令
310  バイトコード命令
312  ポインタ
314  ルックアップ演算
316  ルックアップテーブル
318  エントリ
320  エントリ
322  エントリ
324  エントリ
326  エントリ
328  エントリ
330  エントリ
332  エントリ
400  処理システム
402  メモリ
404  命令キャッシュ
410  バス
412  データキャッシュ
414  シーケンサ
416  一般的な割込み
418  実行ユニット
420  実行ユニット
422  実行ユニット
424  実行ユニット
426  汎用レジスタファイル
430  バス
432  スーパバイザ制御レジスタ
434  グローバル制御レジスタ
438  指定領域
440  評価プログラム
442  割込み
446  バスインターフェース
448  割込みステータス
700  通信デバイス
710  デジタル信号プロセッサ(DSP)
722  オンチップシステム
726  ディスプレイコントローラ
728  ディスプレイ
730  入力デバイス
734  コーダ/デコーダ(コーデック)
736  スピーカー
738  マイクロフォン
740  ワイヤレスインターフェース
742  ワイヤレスアンテナ
744  電源装置
760  ビデオカメラ
764  インタープリタ命令評価プログラムコード
768  カメラインターフェース
【図１】
2013527534.tif 000003
【図２】
2013527534.tif 000004
【図３】
2013527534.tif 000005
【図４】
2013527534.tif 000006
【図５】
2013527534.tif 000007
【図６】
2013527534.tif 000008
【図７】
2013527534.tif 000009
【手続補正書】
【提出日】平成24年11月15日(2012.11.15)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
プログラムカウンタによって識別される、第2の命令のロケーションを識別するためのオペランドを含む第1の命令を受信するステップと、
前記ロケーションを識別するために前記第1の命令を実行したときに、前記ロケーションから前記第2の命令を取り出すステップと、
前記第2の命令を示すように前記プログラムカウンタを変更することなく、前記第2の命令を実行するステップと
を含む、プログラムコードを実行する方法。
【請求項２】
前記第2の命令を実行した後に前記プログラムカウンタを変更するステップをさらに含む、請求項1に記載の方法。
【請求項３】
前記第1の命令および前記第2の命令は割込み不可能な命令からなるグループを含む、請求項1に記載の方法。
【請求項４】
前記第2の命令は複数のネイティブ機械オペレーションからなるパケットを含む、請求項1に記載の方法。
【請求項５】
前記第2の命令は単一の命令である、請求項1に記載の方法。
【請求項６】
前記第2の命令は飛越し命令および算術命令のうちの少なくとも1つである、請求項1に記載の方法。
【請求項７】
前記第1の命令はインタープリタループ内の命令である、請求項1に記載の方法。
【請求項８】
前記第1の命令は評価命令である、請求項1に記載の方法。
【請求項９】
プログラムカウンタによって識別される、第2の命令のロケーションを識別するためのオペランドを含む第1の命令を受信するステップと、
前記ロケーションを識別するためにプロセッサで前記第1の命令を実行し、実行時に、前記第2の命令を示すように前記プログラムカウンタを変更することなく、前記ロケーションから前記第2の命令を取り出すステップと、
前記第2の命令を実行するステップと
を含む、プログラムコードを実行する方法。
【請求項１０】
前記実行された第2の命令の結果をメモリに書き込むステップをさらに含む、請求項9に記載の方法。
【請求項１１】
前記第2の命令は飛越し命令および算術命令のうちの少なくとも1つである、請求項9に記載の方法。
【請求項１２】
前記ロケーションはレジスタである、請求項9に記載の方法。
【請求項１３】
前記ロケーションはメモリの指定領域である、請求項9に記載の方法。
【請求項１４】
前記第1の命令を実行する前に前記第1の命令を復号するステップをさらに含む、請求項9に記載の方法。
【請求項１５】
プログラムカウンタによって識別される、第2の命令のロケーションを識別するためのオペランドを含む第1の命令を実行するように構成された実行ユニットと、
前記ロケーションから前記第2の命令を受信し、前記第2の命令を示すように前記プログラムカウンタを変更することなく前記第2の命令を復号して、復号された第2の命令を生成するように構成された復号ユニットと
を含む、プログラムコードを実行する装置。
【請求項１６】
前記実行ユニットは前記ロケーションから前記第2の命令を取り出すことを開始するようにさらに構成される、請求項15に記載の装置。
【請求項１７】
前記ロケーションはレジスタおよびデータキャッシュのうちの少なくとも1つである、請求項15に記載の装置。
【請求項１８】
前記プログラムカウンタは前記第2の命令を示すことが不可能である、請求項15に記載の装置。
【請求項１９】
前記第2の命令は飛越し命令および算術命令のうちの少なくとも1つである、請求項15に記載の装置。
【請求項２０】
前記プログラムカウンタは前記第2の命令を実行した後に変更される、請求項15に記載の装置。
【請求項２１】
前記第2の命令は複数のネイティブ機械オペレーションからなるパケットを含む、請求項15に記載の装置。
【請求項２２】
前記第2の命令は単一の命令である、請求項15に記載の装置。
【請求項２３】
前記実行された第2の命令の結果を受信するように構成されたレジスタをさらに含む、請求項15に記載の装置。
【請求項２４】
前記第1の命令は評価命令である、請求項15に記載の装置。
【請求項２５】
前記第1の命令および前記第2の命令は割込み不可能な命令からなるグループを含む、請求項15に記載の装置。
【請求項２６】
前記第1の命令および前記第2の命令は共通スレッドによって実行される、請求項15に記載の装置。
【請求項２７】
前記第2の命令が実行される前に割込みが受信されたときに、前記第1の命令は取り消される、請求項15に記載の装置。
【請求項２８】
前記復号された第2の命令は前記実行ユニットによって実行される、請求項15に記載の装置。
【請求項２９】
セットトップボックス、音楽プレーヤ、ビデオプレーヤ、エンターテインメントユニット、ナビゲーションデバイス、通信デバイス、携帯情報端末(PDA)、固定位置データユニット、およびコンピュータからなる群から選択されるデバイスをさらに含み、前記実行ユニットおよび前記復号ユニットが前記デバイスに組み込まれる、請求項15に記載の装置。
【請求項３０】
プログラムカウンタによって識別される、第2の命令のロケーションを識別するためのオペランドを含む第1の命令を受信し、
前記ロケーションを識別するために前記第1の命令を実行し、実行時に、前記第2の命令を示すように前記プログラムカウンタを変更することなく、前記ロケーションから前記第2の命令を取り出し、
前記第2の命令を実行する
ようにコンピューティングシステムによって実行可能な命令を記録するコンピュータ可読記録媒体。
【請求項３１】
前記命令は前記実行された第2の命令の結果をレジスタに書き込むように前記コンピューティングシステムによってさらに実行可能な、請求項30に記載のコンピュータ可読記録媒体。
【請求項３２】
前記第2の命令は飛越し命令および算術命令のうちの少なくとも1つである、請求項30に記載のコンピュータ可読記録媒体。
【請求項３３】
前記ロケーションはレジスタおよびメモリの指定領域のうちの少なくとも1つである、請求項30に記載のコンピュータ可読記録媒体。
【国際調査報告】
2013527534.tif 000010
2013527534.tif 000011
2013527534.tif 000012
2013527534.tif 000013
2013527534.tif 000014