(57)【要約】      （修正有）【課題】実行している命令セット以外の命令セットに従ってプリロードされる命令をプリデコードするためのシステムおよび方法を提供する。【解決手段】第１のプロセッサ命令セット動作モードで実行される命令プリロード命令は、異なる第２の命令セット中の命令を正しくプリロードするように動作可能である。命令は、命令セットプリロードインジケータ（ＩＳＰＩ）に応答して第２の命令セット符号化に従ってプリデコードされる。ＩＳＰＩは、プリロード命令を実行する前に設定でき、またはプリロード命令もしくはプリロード目的アドレスの一部を備える。【選択図】図２
2014194783.tif 000002
【特許請求の範囲】
【請求項１】
命令をプリロードする方法であって、
複数の命令セットのうちの１つを特定する命令セットプリロードインジケータを設定することと、
命令を命令キャッシュにプリロードするように動作可能な命令を現在のプロセッサ命令セットモードに従って実行することと、
前記命令セットプリロードインジケータに応答して前記現在の命令セットモード以外の命令セットに従って前記プリロードされる命令をプリデコードすることと
を備える方法。
【請求項２】
前記命令セットプリロードインジケータは、命令がプリロードされるキャッシュラインのアドレスの１つまたは複数のビットを備える、請求項１に記載の方法。
【請求項３】
前記命令セットプリロードインジケータは、前記命令キャッシュラインアドレス中の最下位ビットを備える、請求項２に記載の方法。
【請求項４】
前記命令セットプリロードインジケータは、命令を命令キャッシュにプリロードするように動作可能な前記命令の演算コード中の１つまたは複数のビットを備える、請求項１に記載の方法。
【請求項５】
命令を命令キャッシュにプリロードするように動作可能な前記命令は、プリロードされる命令が常に第１の命令セットとは異なる第２の命令セットに従ってプリデコードされるようにする前記第１の命令セット中の一意の命令であり、命令セットプリロードインジケータを設定することが前記一意のプリロード命令を選択することを備える、請求項１に記載の方法。
【請求項６】
命令セットプリロードインジケータを設定することは、命令を命令キャッシュにプリロードするように動作可能な前記命令を実行する前にレジスタ中の１つまたは複数のビットを設定することを備える、請求項１に記載の方法。
【請求項７】
前記プリロードされる命令は、インターワーキングモードで前記現在の命令セットモード以外の命令セットに従ってプリデコードされるか、さもなければ前記現在の命令セットモードに従ってプリデコードされる、請求項１に記載の方法。
【請求項８】
メモリインターフェースと、
命令およびプリデコード情報を記憶するように動作可能な命令キャッシュと、
前記命令キャッシュから前記命令および前記プリデコード情報を取り出し、プロセッサ命令セット動作モードに従って前記命令を実行するように動作可能であり、さらに命令セットプリロードインジケータを生成するように動作可能な命令実行ユニットと、
前記命令キャッシュと前記メモリインターフェースとの間に挿入され、命令を前記命令キャッシュにプリロードするように動作可能な命令の実行時に、前記命令セットプリロードインジケータに応じて前記現在のプロセッサ命令セット動作モード以外の命令セットに従って命令をプリデコードするように動作可能なプリデコーダと
を備えるプロセッサ。
【請求項９】
前記命令実行ユニットは、命令がプリロードされるキャッシュラインのアドレスの１つまたは複数のビットを設定することによって前記命令セットプリロードインジケータを生成する、請求項８に記載のプロセッサ。
【請求項１０】
前記命令プリロードキャッシュラインアドレスは、命令を前記命令キャッシュにプリロードするように動作可能な前記命令のオペランドである、請求項９に記載のプロセッサ。
【請求項１１】
前記命令プリロードキャッシュラインアドレスは、命令を前記命令キャッシュにプリロードするように動作可能な前記命令によって読み取られる汎用レジスタに書き込まれる、請求項１０に記載のプロセッサ。
【請求項１２】
前記命令実行ユニット命令は、命令を命令キャッシュにプリロードするように動作可能な前記命令の演算コード中の１つまたは複数のビットに応じて前記命令セットプリロードインジケータを生成する、請求項８に記載のプロセッサ。
【請求項１３】
命令を命令キャッシュにプリロードするように動作可能な前記命令は、プリロードされる命令が所定の命令セットに従ってプリデコードされるようにする一意の命令であり、前記命令実行ユニット命令が、前記一意のプリロード命令を実行することによって前記命令セットプリロードインジケータを生成する、請求項８に記載のプロセッサ。
【請求項１４】
レジスタをさらに備え、前記命令実行ユニットは、前記レジスタ中の１つまたは複数の所定のビットを設定することによって前記命令セットプリロードインジケータを生成する、請求項８に記載のプロセッサ。
【請求項１５】
前記命令キャッシュと前記メモリインターフェースとの間に挿入された第２のキャッシュメモリをさらに備え、前記プリデコーダが前記命令キャッシュと前記第２のキャッシュメモリとの間に挿入される、請求項８に記載のプロセッサ。
【請求項１６】
前記プリデコーダは、インターワーキングモードで前記現在のプロセッサ命令セット動作モード以外の命令セットに従って命令をプリデコードするように動作可能であるか、さもなければ前記現在のプロセッサ命令セット動作モードに従って命令をプリデコードするように動作可能である、請求項８に記載のプロセッサ。
【請求項１７】
プロセッサに命令を命令キャッシュにプリロードさせるように動作可能な、少なくとも第１の命令セット中のプリロード命令を記憶するコンピュータ読取り可能媒体であって、前記プリロードされる命令が、異なる第２の命令セットに従ってプリデコードされる、コンピュータ読取り可能媒体。
【請求項１８】
前記第２の命令セットは命令セットプリロードインジケータによって指定される、請求項１７に記載のコンピュータ読取り可能媒体。
【請求項１９】
前記命令セットプリロードインジケータは、命令がプリロードされるキャッシュラインのアドレスの１つまたは複数のビットを備える、請求項１８に記載のコンピュータ読取り可能媒体。
【請求項２０】
前記命令演算コードは、命令セットプリロードインジケータビットフィールドを含む、請求項１７に記載のコンピュータ読取り可能媒体。
【請求項２１】
前記プリロードされる命令が常に特定の第２の命令セットに従ってプリデコードされる、請求項１７に記載のコンピュータ読取り可能媒体。
【請求項２２】
前記命令セットプリロードインジケータが前記命令の実行より前に状態レジスタに記憶される、請求項１７に記載のコンピュータ読取り可能媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般にプロセッサの分野に関し、より詳細には、命令をプリロードし、現在実行している命令セット以外の命令セットに従ってプリロードされる命令をプリデコードするためのシステムおよび方法に関する。
【背景技術】
【０００２】
マイクロプロセッサは多種多様なアプリケーションで計算タスクを実行する。ソフトウェアの拡張による動作の高速化および／または機能性の向上を可能にするために、プロセッサパフォーマンスの改善がたいてい望ましい。ＲＩＳＣアーキテクチャなどアーキテクチャの進歩と半導体技術の進歩の両方を利用することによって、多数の現代のプロセッサは、ＤＲＡＭやＳＤＲＡＭなどメモリチップよりもはるかに高いクロックスピードで実行する。比較的遅いメモリアクセスの不利益を最小にするために、これらのプロセッサは階層メモリ構造を利用し、高速のオンチップキャッシュメモリが、最近アクセスされた、および／またはプロセッサが（ソフトウェアを介して）近い将来のアクセスを予期する、データおよび命令のローカルコピーを記憶する。
【０００３】
命令キャッシュへのロードを予期することの一例は、プリロード命令（たとえば、ＡＲＭ命令ＰＬＩ）である。プリロード命令は、それらの実行に先だって命令を命令キャッシュにロードする。プログラマは、サブルーチン呼出しなど、ターゲットへの既知のまたは予期される分岐より多少前に、プリロード命令をコードに挿入することができる。プリロード命令はターゲットでの命令を命令キャッシュにロードするので、分岐の実行時に、ターゲットでの命令は即時に実行するためにキャッシュ中で利用できる。本明細書では、プリロード命令に応じてキャッシュにロードされる命令をプリロードされる命令と呼ぶ。
【０００４】
たいていの現代のプロセッサはパイプラインアーキテクチャを採用しており、全体的なプロセッサスループットを高めるために、連続命令が実行中に重複する。パイプラインによって円滑な実行を維持することは、高いパフォーマンスを達成するために重要である。当技術分野で知られている１つのパイプライン最適化技法は、命令をプリデコードすることである。命令は、メモリから読み込まれる際に調査され、部分的に復号され、プリデコード情報として知られる、命令に関する何らかの情報が、関連する命令とともに命令キャッシュに記憶される。命令が後でキャッシュからパイプライン中にフェッチされると、プリデコード情報もフェッチされ、命令を完全に復号するのを支援するために使用される。プリデコード情報は、たとえば、分岐および浮動小数点命令を特定し、可変長命令セットアーキテクチャにおける命令の長さ、またはパイプライン中の命令の実行に有用な他の情報を特定することができる。
【０００５】
いくつかの現代のプロセッサは、２つ以上の命令セット符号化に従って命令を実行することが可能である。たとえば、プロセッサは、３２ビットネイティブ命令セットを有し、さらに、Ｊａｖａ（登録商標）バイトコードを実行する能力を含むことができる。別の例として、ＡＲＭプロセッサアーキテクチャのいくつかのバージョンは、ＡＲＭ命令セット動作モードで３２ビットＡＲＭ命令符号化を実行し、Ｔｈｕｍｂ命令セット動作モードで１６ビットまたは３２ビットＴｈｕｍｂ命令符号化を実行する。プログラマは、関係する命令セット符号化に従って命令を実行する前に、ソフトウェアで適切な命令セット動作モードを明示的に設定する。
【０００６】
プリデコーダを有する従来のプロセッサがプリロード命令を実行する場合、プリロードされる命令は現在の命令セット動作モードに従ってプリデコードされる。プログラマは、たとえば異なる命令セットに書き込まれたコードセクションへの分岐を予期して、現在のプロセッサ命令セット動作モードとは異なる命令セット中の命令をプリロードしたい場合、プリロード命令を実行する前に命令セットモードを変更しなければならない。
【０００７】
たとえば、ＡＲＭモードでＡＲＭ命令を実行しているプログラムは、Ｔｈｕｍｂモードに変更し、Ｔｈｕｍｂ命令のみを実行しているコードセグメントに分岐することができる。Ｔｈｕｍｂ命令をプリロードして正しくプリデコードするために、プログラムは、Ｔｈｕｍｂコードセクションに分岐する前に、現在のプロセッサ命令セット動作モードをＡＲＭからＴｈｕｍｂに切り替え、Ｔｈｕｍｂコードの目的アドレスをもつプリロード命令を実行し、残りのＡＲＭ命令を実行するためにＡＲＭモードに切り替えなければならない。
【０００８】
プリロード命令を実行するためにＴｈｕｍｂモードに入ることができない場合、プリデコーダは、間違ってＡＲＭ命令セット符号化に従って、プリロードされるＴｈｕｍｂ命令をプリデコードしてしまう。これが起こった場合、命令キャッシュからフェッチされたとき、プリデコード情報は役に立たず、Ｔｈｕｍｂ命令を再フェッチしなければならず、プリロードでなくすはずだった遅延を生じることになる。さらに、タグの一部としてＡＲＭ／Ｔｈｕｍｂビットを有する命令キャッシュでは、再フェッチされたＴｈｕｍｂ命令に別個のキャッシュラインが割り当てられ、ＡＲＭ命令がキャッシュ中に残るので、Ｔｈｕｍｂ命令が間違ってプリデコードされ、キャッシュ空間を浪費し、したがってキャッシュヒット率およびシステムパフォーマンスが低下する。
【０００９】
多数のプロセッサでは、単一のプリロード命令を実行するために現在のプロセッサ命令セット動作モードを２回切り替えるのに必要なオーバーヘッドが、予期された命令セット中の命令のプリロードの利益を上回ることがある。
【発明の概要】
【００１０】
本明細書で開示し、請求する１つまたは複数の実施形態によれば、第１のプロセッサ命令セット動作モードで実行されるプリロード命令は、異なる第２の命令セット中の命令をプリロードするように動作可能である。命令は、命令セットプリロードインジケータ（ＩＳＰＩ）に応じて第２の命令セット符号化に従ってプリデコードされる。様々な実施形態では、ＩＳＰＩは、プリロード命令を実行する前に設定でき、またはプリロード命令もしくはプリロード目的アドレスの一部を備えることができる。
【００１１】
一実施形態は、命令をプリロードする方法に関する。複数の命令セットのうちの１つを示す命令セットプリロードインジケータが設定される。命令を命令キャッシュにプリロードするように動作可能な命令が実行される。プリロードされる命令は、命令セットプリロードインジケータに応じて現在の命令セットモード以外の命令セットに従ってプリデコードされる。
【００１２】
別の実施形態はプロセッサに関する。プロセッサは、メモリインターフェースと、命令を記憶するように動作可能な命令キャッシュとを含む。プロセッサはまた、命令キャッシュから命令およびプリデコード情報を取り出し、プロセッサ命令セット動作モードに従って命令を実行するように動作可能であり、さらに命令セットプリロードインジケータを生成するように動作可能な命令実行ユニットを含む。プロセッサはさらに、命令キャッシュとメモリインターフェースとの間に挿入され、命令を命令キャッシュにプリロードするように動作可能な命令の実行時に、命令セットプリロードインジケータに応じて現在のプロセッサ命令セット動作モード以外の命令セットに従って命令をプリデコードするように動作可能なプリデコーダを含む。
【００１３】
さらに別の実施形態は、プロセッサに命令を命令キャッシュにプリロードさせるように動作可能な、少なくとも第１の命令セット中のプリロード命令を記憶するコンピュータ読取り可能媒体であって、プリロードされる命令が、異なる第２の命令セットに従ってプリデコードされるコンピュータ読取り可能媒体に関する。
【図面の簡単な説明】
【００１４】
【図１】図１は、現在のプロセッサ命令セットモード以外の命令セットに従って、プリロードされる命令をプリデコードすることが可能なプロセッサの機能ブロック図である。
【図２】図２は、複数の命令セットのうちの１つ中の命令をプリロードする方法の流れ図である。
【詳細な説明】
【００１５】
図１は、複数の異なる命令セット符号化に従って符号化される命令を実行するプロセッサ１１０の機能ブロック図を示す。プロセッサ１１０は、現在のプロセッサ命令セットモード以外の命令セットに従って、プリロードされる命令をプリデコードすることが可能である。
【００１６】
プロセッサ１１０は、パイプステージに編成された複数のレジスタまたはラッチ１１６、ならびに論理演算ユニット（ＡＬＵ）（図示せず）など論理および計算回路を備えるパイプライン１１４を含む命令実行ユニット１１で命令を実行する。パイプラインは制御論理１１８に従って命令を実行する。パイプライン１１４は、図示のようにスーパースカラ設計とすることができる。汎用レジスタ（ＧＰＲ）ファイル１２０は、メモリ階層の最上部を備えるレジスタを与える。命令実行ユニットはまた、たとえば、命令が復号され、実行される複数の命令セット符号化のうちの１つを定義する、現在のプロセッサ命令セット動作モードを示す状態レジスタ１２２を含む。命令実行ユニット１１２はまた、Ｌ２キャッシュメモリ１３６または主メモリ１３８からフェッチされた命令およびデータのプロパティを追跡するＬ２処理論理１２４を含む。
【００１７】
パイプライン１１４は、命令側トランスレーションルックアサイドバッファ（ＩＴＬＢ）１２８によって管理されるメモリアドレス指定および許可を用いて、命令キャッシュ１２６から命令をフェッチする。プリデコーダ１３０は、Ｌ２キャッシュ１３６（または主メモリ１３８）からフェッチされた命令をプリデコードし、命令およびプリデコード情報を命令キャッシュ１２６に入れる。本明細書でより詳細に論じるように、プリデコーダ１３０は、命令実行ユニット１１２からの命令セットプリロードインジケータ（ＩＳＰＩ）に応じて現在のプロセッサ命令セット動作モードとは異なる命令セットに従って、プリロードされる命令をプリデコードする。
【００１８】
データは、主トランスレーションルックアサイドバッファ（ＴＬＢ）１３４によって管理されるメモリアドレス指定および許可を用いて、データキャッシュ１３２からアクセスされる。様々な実施形態では、ＩＴＬＢ１２８はＴＬＢ１３４の一部のコピーを備えることができる。代替として、ＩＴＬＢ１２８とＴＬＢ１３４を統合することができる。同様に、プロセッサ１１０の様々な実施形態では、命令キャッシュ１２６とデータキャッシュ１３２を統一することができる。
【００１９】
命令キャッシュ１２６およびデータキャッシュ１３２でのミスは、図１に示される実施形態では統合されている、レベル２（Ｌ２）キャッシュメモリ１３６へのアクセスを引き起こす。Ｌ２キャッシュ１３６でのミスは、メモリインターフェース１４２の制御下で、システムバス１４０を介して主（オフチップ）メモリ１３８へのアクセスを引き起こす。プロセッサ１１０は、周辺バス１５０上の様々な周辺装置１４６、１４８へのアクセスを制御する入出力（Ｉ／Ｏ）インターフェース１４４を含むことができる。当技術分野でよく知られているように、プロセッサ１１０は、メモリ１３６、あるいは周辺機器１４６、１４８によって読み取られる磁気または光学媒体など、コンピュータ読取り可能媒体から取り出された命令を実行する。
【００２０】
当業者であれば、プロセッサ１１０の多数の変形形態が可能であることを認識するであろう。たとえば、プロセッサ１１０はレベル３（Ｌ３）または追加のキャッシュを含むことができ、および／または別個のＬ２キャッシュ１３６は命令およびデータキャッシュ１２６、１３２の各々に専用とすることができる。さらに、プロセッサ１１０内に示されている機能ブロックの１つまたは複数は、特定の実施形態から省略できる。
【００２１】
プロセッサ１１０は、たとえば状態レジスタ１２２に示されるように、現在のプロセッサ命令セットモードに従って命令を実行する。異なる命令セット中の命令のプリロードを正しいプリデコードとともに可能にするために、命令実行ユニット１１２は、命令セットプリロードインジケータ（ＩＳＰＩ）を生成し、プリロード命令の実行時にＩＳＰＩをプリデコーダ１３０に与える。プロセッサ１１０が２つの命令セット符号化（たとえば、ＡＲＭおよびＴｈｕｍｂ）をサポートする場合、ＩＳＰＩは単一のビットを備えることができる。プロセッサ１１０が３つ以上の命令セット符号化をサポートする場合、当技術分野でよく知られているように、ＩＳＰＩは、マルチビット値を備え、命令セットごとに別々のフラグを備え、または命令セット指示を二進値で符号化することができる。ＩＳＰＩは様々な方法で生成できる。
【００２２】
一実施形態では、プリロード命令目的アドレスの１つまたは複数の未使用のアドレスビットは、ＩＳＰＩとして符号化される。プリロード命令（たとえばＰＬＩ）はオペランドとして目的アドレスをとる。命令アドレスは、たとえば、タグ、セット数、およびキャッシュラインオフセットに分解できる。たとえば、３２ビット命令仮想アドレスＶＡ［３１：０］の場合、命令キャッシュ１２６のＣＡＭ構造中に記憶されるタグと比較されるタグは、ＶＡ［３１：１１］を備えることができる。ｎウェイセット連想キャッシュ（n-way set associative cache）では、セット数は、タグが一致する場合に戻されるｎ個の結果の中から選択する。セット数はＶＡ［１０：５］を備えることができる。オフセットＶＡ［４：０］は、（プリデコード情報とともに）命令キャッシュ１２６のＲＡＭ構造中に記憶されるキャッシュライン中の個々の命令をアドレス指定する。
【００２３】
プリロード命令は固定サイズのメモリブロックを各キャッシュライン中にロードする。すべての命令が同じ長さである場合、固定数の命令がキャッシュライン中にロードされる。可変長命令セットの場合、またはキャッシュラインが、異なる長さの命令を有する異なる命令セットに従って符号化された命令を含む場合、キャッシュライン中の命令の数は、命令を命令キャッシュにロードした時点では知られていない。しかしながら、いずれの場合も、命令キャッシュライン中にロードされるデータ量は知られており、したがって、プリロード命令はアドレスのキャッシュラインオフセット部分を利用しない。
【００２４】
一実施形態によれば、キャッシュラインオフセット、たとえばＶＡ［４：０］は、命令セットプリロードインジケータ（ＩＳＰＩ）を符号化するために使用される。特に、プロセッサ１１０が２つの命令セットからの命令を実行する実施形態では、ＩＳＰＩは最下位ビットＶＡ［０］である。１つの非限定的な例として、ＶＡ［０］＝０はＡＲＭ命令を示すことができ、ＶＡ［０］＝１はＴｈｕｍｂ命令を示すことができる。もちろん、他のＩＳＰＩ符号化が可能であり、プロセッサ１１０がサポートする命令セットの数およびタイプに依存する。
【００２５】
アドレスが、関連するプリロード命令の実行に備えて決定され、コンパイラ指定されたＧＰＲに書き込まれるとき、ＩＳＰＩはプリロード目的アドレスのキャッシュラインオフセット部分に符号化される。プリロード命令は、実行時に、指定されたＧＰＲレジスタから目的アドレスを読み取り、アドレスのタグおよびセット数部分によって決定されるキャッシュライン中に目的アドレスでデータブロックをプリロードする。アドレスが命令キャッシュ中でヒットした場合、プリロード命令実行は完了する。アドレスが命令キャッシュ中でミスした場合、Ｌ２処理論理１２４など、命令実行ユニット１１２内の論理は、ミス処理を実行して、命令を取り出すためにＬ２キャッシュ１３６および必要ならば主メモリ１３８にアクセスする。
【００２６】
命令を含むデータブロックがプリデコーダ１３０中にロードされるとき、Ｌ２処理論理１２４はプリデコーダ１３０にＩＳＰＩを示す。ＩＳＰＩに応じて、プリデコーダ１３０は、プロセッサ１１０の現在の命令セット動作モードにかかわらず、示された命令セットに従って命令をプリデコードする。次いで、プリデコーダ１３０は、命令を正しいプリデコード情報とともに命令キャッシュ１２６に書き込む。一実施形態では、プリデコーダ１３０は、プリロード命令実行の指示を受け取り、（通常の命令キャッシュラインフェッチ用のＩＳＰＩを無視して）そのような指示に応答してＩＳＰＩを調査する。別の実施形態では、Ｌ２処理論理２４など、命令実行ユニット１１２中の論理は、ＩＳＰＩをプリロード命令実行の知識と組み合わせ、現在フェッチされた命令をプリデコードするための命令セットの指示をプリデコーダ１３０に示すことができる。いずれの場合も、プリデコーダ１３０は、ＩＳＰＩに応答して特定の命令セットに従って、プリロードされる命令をプリデコードする。
【００２７】
一実施形態では、下位互換性（backward compatibility）を与えるために、ＩＳＰＩに従って、プリロードされる命令を上述のようにプリデコードすることが選択的に可能にされる。特に、インターワーキングモードが定義される。インターワーキングモードは、状態レジスタ１２２中のビットによって示すことができる。インターワーキングモードが有効である場合、上述のように、プリロードされる命令のプリデコードはＩＳＰＩに依存する。インターワーキングモードが使用不能である場合、命令は、プリロード命令が実行されるときにアクティブになるプロセッサ命令セットモードに従ってプリデコードされる。
【００２８】
一実施形態では、命令セットプリロードインジケータ（ＩＳＰＩ）は、状態レジスタ１２２などレジスタ中の１つまたは複数のビットを備える。この実施形態では、ＩＳＰＩビットはプリロード命令の実行より前に明示的に設定される。プリロード命令の実行時に、プリデコーダ１３０は、状態レジスタ１２２または他のレジスタ中のＩＳＰＩビットを検査し、（そのときにアクティブであるプロセッサ命令セットモードにかかわらず）ＩＳＰＩビットによって示される命令セット符号化に従って、プリロードされる命令をプリデコードする。次いで、命令およびプリデコード情報が命令キャッシュ１２６に書き込まれる。一実施形態では、上述のように、ＩＳＰＩに従って、プリロードされる命令をプリデコードすることが、インターワーキングモードによって選択的に可能にされる。一実施形態では、ＩＳＰＩビットをインターワーキングモードインジケータビットによってゲート制御することができる。
【００２９】
一実施形態では、命令セットプリロードインジケータ（ＩＳＰＩ）は、プリロード命令の演算コード中の１つまたは複数のビットを備える。プリロード命令演算コードのビットフィールドをＩＳＰＩに対して定義することができ、コンパイラは、プログラマの命令またはコード中の指示（directive）に従ってＩＳＰＩビットフィールドを設定することができる。プリロード命令の実行時に、ＩＳＰＩビットフィールドは、たとえばＬ２処理論理１２４によってプリデコーダ１３０に示され、プリデコーダ１３０は、示された命令セット符号化に従って、プリロードされる命令をプリデコードする。次いで、命令およびプリデコード情報が命令キャッシュ１２６に書き込まれる。
【００３０】
一実施形態では、異なる命令セット中の命令をプリロードするために、２つ以上の別個のプリロード命令が定義される。非限定的な例として、ＡＲＭ命令セットは、データを命令キャッシュ１２６中にプリロードする従来のプリロード命令を含むことができ、プリデコーダ１３０はプリロードされる命令をＡＲＭ命令としてプリデコードする。さらに、ＡＲＭ命令セットは、データを命令キャッシュ１２６中にプリロードする別個の代替の命令セットプリロード命令（たとえばＰＬＩ２）を含むこともでき、プリデコーダ１３０はプリロードされる命令をＴｈｕｍｂ命令としてプリデコードする。同様に、Ｔｈｕｍｂ命令セットは、ＴｈｕｍｂまたはＡＲＭ命令セット符号化に従ってプリデコードされるデータをプリロードするための別個のプリロード命令を含むことができる。これにより、プログラマは、コード中の適切なプリロード命令を利用することによって所望の命令セットから命令を明示的にプリロードすることが可能になる。
【００３１】
当業者は、上記の実施形態が相互に排他的なものでないことを認識するであろう。たとえば、演算コード中にＩＳＰＩビットフィールドを有するプリロード命令または一意のプリロード命令は、特定の実装形態において、ＩＳＰＩを状態レジスタ１２２などレジスタにラッチすることによって、またはＩＳＰＩをプリロード目的アドレス中の１つまたは複数の未使用のアドレスビット中に代入することによって、プリデコーダ１３０にＩＳＰＩを示すことができる。一般に、本開示の教示を与えられれば、当業者は、所与のアプリケーション用の異なる命令セット中の命令をプリロードするための最善の解決策を確認することができる。
【００３２】
図２は、命令をプリロードする方法２００を示す。本方法は、命令セットプリロードインジケータ（ＩＳＰＩ）を設定することによって開始する（ブロック２０２）。ＩＳＰＩは、プロセッサ１１０によってサポートされる複数の命令セットのうちの１つを一意に特定する。様々な実施形態では、ＩＳＰＩは、プリロード命令目的アドレスを改変するか、状態レジスタ１２２などレジスタ中にＩＳＰＩビットを設定するか、プリロード命令演算コード中にＩＳＰＩビットフィールドを設定するか、または一意のプリロード命令を選択することによって設定できる。
【００３３】
現在のプロセッサ命令セットモードでプリロード命令を実行する（ブロック２０４）。プリロード命令は、プリロードされる命令の実行に先だって命令を命令キャッシュ１２６にロードするように動作可能である。一実施形態では、プリロードされる命令のプリデコードはインターワーキングモードに依存する。インターワーキングモードが有効でない場合（ブロック２０６）、プリデコーダ１３０は現在の命令セットモードに従って、プリロードされる命令をプリデコードする（ブロック２０８）。インターワーキングモードが有効であり（ブロック２０６）、ＩＳＰＩが現在の命令セットモード以外の命令セットを示すかまたは特定する場合（ブロック２１０）、プリデコーダ１３０は、ＩＳＰＩによって示された命令セットに従って、プリロードされる命令をプリデコードする（ブロック２１２）。
【００３４】
本明細書で説明し、請求する１つまたは複数の実施形態によれば、プログラマは、第１の命令セットからの命令を実行しながら命令を命令キャッシュ１２６中にプリロードし、プリロードされる命令を第２の異なる命令セットに従ってプリデコードすることができる。このようにして、所与の命令セット中の命令を、その命令セットに書き込まれたコードに分岐する前に命令キャッシュ１２６中で利用可能にすることによって、命令セット間で切り替わるコードの実行を最適化することができる。命令セットプリロードインジケータ（ＩＳＰＩ）のプリデコーダ１３０への通信は様々な方法で実現できる。
【００３５】
本明細書では本発明についてその特定の特徴、態様および実施形態に関して説明したが、本発明の広い範囲内で多数の変形形態、変更形態、および他の実施形態が可能であり、したがって、すべての変形形態、変更形態および実施形態は本発明の範囲内に入ると見なされるべきであることは明らかであろう。したがって、本実施形態はすべての面で例示的であり限定的ではないと解釈すべきであり、添付の特許請求の範囲の意味および等価範囲内に入るすべての変更はそこに包含されるものとする。
【図１】
2014194783.tif 000003
【図２】
2014194783.tif 000004
【手続補正書】
【提出日】平成26年5月16日(2014.5.16)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
命令をプリロードする方法であって、
複数の命令セットのうちの第１の命令セットに関連づけられた第１の命令セット動作モードにおいて実行するプロセッサの命令実行ユニットで、前記複数の命令セットのうちの第２の命令セットを識別する命令セットプリロードインジケータを生成することであって、前記第１の命令セットは、前記第２の命令セット中に含まれない少なくとも１つの命令を含む、生成することと、
命令キャッシュ中に命令をプリロードするように動作可能な前記第１の命令セット中のプリロード命令を、前記第１の命令セット動作モードに従って、実行することであって、前記プリロード命令は、プリロードされる命令が前記第２の命令セットに従ってプリデコードされるようにする、実行することと、
前記第１の命令セット動作モードに従って実行している間に、前記識別された第２の命令セットに関連づけられた第２の命令セット動作モードに従って、前記命令キャッシュの中の前記プリロードされる命令をプリデコードすることと
を備える方法。
【請求項２】
前記プリロードされる命令は前記プロセッサのプリデコーダでプリデコードされる単一の命令であり、前記方法は、前記プロセッサの前記プリデコーダで前記生成された命令セットプリロードインジケータを受け取ることをさらに備える、請求項１に記載の方法。
【請求項３】
前記命令セットプリロードインジケータは、命令がプリロードされるキャッシュラインのアドレスの１つまたは複数のビットを備える、請求項１に記載の方法。
【請求項４】
前記命令セットプリロードインジケータは、前記キャッシュラインの前記アドレスの最下位ビットを備える、請求項３に記載の方法。
【請求項５】
前記命令セットプリロードインジケータは、前記プリロード命令の演算コード中の１つまたは複数のビットを備える、請求項１に記載の方法。
【請求項６】
前記プリロード命令は、プリロードされる命令が常に前記第２の命令セットに従ってプリデコードされるようにする前記第１の命令セット中の一意の命令であり、前記命令セットプリロードインジケータを生成することは、前記一意のプリロード命令を選択することを備える、請求項１に記載の方法。
【請求項７】
前記命令セットプリロードインジケータを生成することは、前記プリロード命令を実行する前にレジスタ中の１つまたは複数のビットを設定することを備える、請求項１に記載の方法。
【請求項８】
前記プリロードされる命令は、インターワーキングモードにおいて前記第２の命令セット動作モードに従ってプリデコードされる、請求項１に記載の方法。
【請求項９】
前記第１の命令セットがＡＲＭタイプの命令セットであり、前記第２の命令セットがＴｈｕｍｂタイプの命令セットであるか、または、前記第１の命令セットがＴｈｕｍｂタイプの命令セットであり、前記第２の命令セットがＡＲＭタイプの命令セットである、請求項１に記載の方法。
【請求項１０】
前記第１の命令セットは、第１の命令長に関連づけられ、前記第２の命令セットは、前記第１の命令長とは異なる第２の命令長に関連づけられる、請求項１に記載の方法。
【請求項１１】
前記第１の命令長は、３２ビット長であり、前記第２の命令長は、１６ビット長である、請求項１に記載の方法。
【請求項１２】
前記第１の命令セット中の各命令は、第１の命令長を有し、前記第２の命令セットは、前記第１の命令長を有する第１の命令と、前記第１の命令長とは異なる第２の命令長を有する第２の命令とを含む、請求項１に記載の方法。
【請求項１３】
前記第１の命令セットは、固定サイズの命令を備え、前記第２の命令セットは、可変サイズの命令を備える、請求項１に記載の方法。
【請求項１４】
プロセッサであって、
メモリインターフェースと、
命令およびプリデコード情報を記憶するように動作可能な命令キャッシュと、
前記プロセッサが第１の命令セット動作モードにある場合に前記命令を取り出し、命令セットプリロードインジケータを生成するように動作可能な命令実行ユニットと、
前記命令キャッシュと前記メモリインターフェースとの間に挿入され、前記命令実行ユニットが前記第１の命令セット動作モードにおいて動作している間に、前記命令セットプリロードインジケータに応答して、第２の命令セット動作モードに従って、前記命令キャッシュの中のプリロードされる命令をプリデコードするように動作可能なプリデコーダであって、第２の命令セットのプリロードされる命令は、前記第１の命令セット中のプリロード命令に応答してプリロードされ、前記第１の命令セット動作モードは、前記プロセッサの前記第１の命令セットに関連づけられる、プリデコーダと
を備え、前記第２の命令セット動作モードは、前記プロセッサの第２の命令セットに関連づけられ、前記第１の命令セットは、前記第２の命令セット中に含まれない少なくとも１つの命令を含む、プロセッサ。
【請求項１５】
前記命令実行ユニットは、命令がプリロードされる前記命令キャッシュのキャッシュラインのアドレスの１つまたは複数のビットを設定することによって前記命令セットプリロードインジケータを生成する、請求項１４に記載のプロセッサ。
【請求項１６】
前記キャッシュラインの前記アドレスは、汎用レジスタに書き込まれる、請求項１５に記載のプロセッサ。
【請求項１７】
レジスタをさらに備え、前記命令実行ユニットは、前記レジスタ中の１つまたは複数のビットを設定することによって前記命令セットプリロードインジケータを生成する、請求項１４に記載のプロセッサ。
【請求項１８】
前記命令キャッシュと前記メモリインターフェースとの間に挿入された第２のキャッシュメモリをさらに備え、前記プリデコーダは、前記命令キャッシュと前記第２のキャッシュメモリとの間に挿入される、請求項１４に記載のプロセッサ。
【請求項１９】
前記プリデコーダは、インターワーキングモードにおいて前記第２の命令セット動作モードに従って命令をプリデコードするように動作可能である、請求項１４に記載のプロセッサ。
【請求項２０】
複数の命令セットのうちの第１の命令セット中の１つまたは複数の命令を記憶する非一時的なコンピュータ読取り可能媒体であって、前記１つまたは複数の命令は、プロセッサによって実行可能であり、前記プロセッサに、
前記複数の命令セットのうちの第２の命令セットを識別する命令セットプリロードインジケータを生成させ、前記第１の命令セットは、前記第２の命令セット中に含まれない少なくとも１つの命令を含み、
命令キャッシュ中に命令をプリロードするように動作可能な前記第１の命令セット中のプリロード命令を、第１の命令セット動作モードに従って、実行させ、前記プリロード命令は、プリロードされる命令が前記第２の命令セットに従ってプリデコードされるようにし、
前記第１の命令セット動作モードに従って実行している間に、前記識別された第２の命令セットに関連づけられた第２の命令セット動作モードに従って、前記命令キャッシュの中の前記プリロードされる命令をプリデコードさせる、非一時的なコンピュータ読取り可能媒体。
【請求項２１】
前記プリロードされる命令の各々は、前記第２の命令セットに従ってプリデコードされる、請求項２０に記載の非一時的なコンピュータ読取り可能媒体。
【請求項２２】
前記命令セットプリロードインジケータは、前記プリロード命令の実行前に状態レジスタ中に記憶される、請求項２０に記載の非一時的なコンピュータ読取り可能媒体。
【請求項２３】
前記第１の命令セットがＡＲＭ命令セットであり、前記第２の命令セットがＴｈｕｍｂ命令セットであるか、または、前記第１の命令セットがＴｈｕｍｂ命令セットであり、前記第２の命令セットがＡＲＭ命令セットである、請求項２０に記載のコンピュータ読取り可能媒体。
【請求項２４】
プロセッサであって、
メモリインターフェースと、
命令およびプリデコーディング情報を命令キャッシュ中に記憶するための手段と、
プロセッサが第１の命令セット動作モードにある場合に前記命令を取り出し、命令セットプリロードインジケータを生成するための命令実行手段と、
前記命令を記憶するための手段と前記メモリインターフェースとの間に挿入された、プリデコードするための手段であって、前記命令実行手段が前記第１の命令セット動作モードにおいて動作している間に、前記命令セットプリロードインジケータに応答して、前記命令を記憶するための手段中に、第２の命令セット動作モードに従って命令をプリロードし、前記第２の命令セット動作モードに従って前記プリロードされる命令は、第１の命令セット中のプリロード命令に応答してプリロードされる、プリデコードするための手段と
を備え、前記第１の命令セット動作モードは、前記プロセッサの前記第１の命令セットに関連づけられ、前記第２の命令セット動作モードは、前記プロセッサの第２の命令セットに関連づけられ、
前記第１の命令セットは、前記第２の命令セット中に含まれない少なくとも１つの命令を含む、プロセッサ。
【請求項２５】
前記命令実行手段は、命令がプリロードされる前記命令キャッシュのキャッシュラインのアドレスの１つまたは複数のビットを設定することによって、前記命令セットプリロードインジケータを生成するための手段を備える、請求項２４に記載のプロセッサ。
【請求項２６】
前記キャッシュラインの前記アドレスは、汎用レジスタに書き込まれる、請求項２５に記載のプロセッサ。
【請求項２７】
前記プリデコードするための手段は、インターワーキングモードにおいて前記第２の命令セット動作モードに従って命令をプリデコードするための手段を備える、請求項２４に記載のプロセッサ。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００３５
【補正方法】変更
【補正の内容】
【００３５】
本明細書では本発明についてその特定の特徴、態様および実施形態に関して説明したが、本発明の広い範囲内で多数の変形形態、変更形態、および他の実施形態が可能であり、したがって、すべての変形形態、変更形態および実施形態は本発明の範囲内に入ると見なされるべきであることは明らかであろう。したがって、本実施形態はすべての面で例示的であり限定的ではないと解釈すべきであり、添付の特許請求の範囲の意味および等価範囲内に入るすべての変更はそこに包含されるものとする。
下記に出願時の請求項１−２２に対応する記載を付記１−２２として表記する。
付記１
命令をプリロードする方法であって、
複数の命令セットのうちの１つを特定する命令セットプリロードインジケータを設定することと、
命令を命令キャッシュにプリロードするように動作可能な命令を現在のプロセッサ命令セットモードに従って実行することと、
前記命令セットプリロードインジケータに応答して前記現在の命令セットモード以外の命令セットに従って前記プリロードされる命令をプリデコードすることと
を備える方法。
付記２
前記命令セットプリロードインジケータは、命令がプリロードされるキャッシュラインのアドレスの１つまたは複数のビットを備える、付記１に記載の方法。
付記３
前記命令セットプリロードインジケータは、前記命令キャッシュラインアドレス中の最下位ビットを備える、付記２に記載の方法。
付記４
前記命令セットプリロードインジケータは、命令を命令キャッシュにプリロードするように動作可能な前記命令の演算コード中の１つまたは複数のビットを備える、付記１に記載の方法。
付記５
命令を命令キャッシュにプリロードするように動作可能な前記命令は、プリロードされる命令が常に第１の命令セットとは異なる第２の命令セットに従ってプリデコードされるようにする前記第１の命令セット中の一意の命令であり、命令セットプリロードインジケータを設定することが前記一意のプリロード命令を選択することを備える、付記１に記載の方法。
付記６
命令セットプリロードインジケータを設定することは、命令を命令キャッシュにプリロードするように動作可能な前記命令を実行する前にレジスタ中の１つまたは複数のビットを設定することを備える、付記１に記載の方法。
付記７
前記プリロードされる命令は、インターワーキングモードで前記現在の命令セットモード以外の命令セットに従ってプリデコードされるか、さもなければ前記現在の命令セットモードに従ってプリデコードされる、付記１に記載の方法。
付記８
メモリインターフェースと、
命令およびプリデコード情報を記憶するように動作可能な命令キャッシュと、
前記命令キャッシュから前記命令および前記プリデコード情報を取り出し、プロセッサ命令セット動作モードに従って前記命令を実行するように動作可能であり、さらに命令セットプリロードインジケータを生成するように動作可能な命令実行ユニットと、
前記命令キャッシュと前記メモリインターフェースとの間に挿入され、命令を前記命令キャッシュにプリロードするように動作可能な命令の実行時に、前記命令セットプリロードインジケータに応じて前記現在のプロセッサ命令セット動作モード以外の命令セットに従って命令をプリデコードするように動作可能なプリデコーダと
を備えるプロセッサ。
付記９
前記命令実行ユニットは、命令がプリロードされるキャッシュラインのアドレスの１つまたは複数のビットを設定することによって前記命令セットプリロードインジケータを生成する、付記８に記載のプロセッサ。
付記１０
前記命令プリロードキャッシュラインアドレスは、命令を前記命令キャッシュにプリロードするように動作可能な前記命令のオペランドである、付記９に記載のプロセッサ。
付記１１
前記命令プリロードキャッシュラインアドレスは、命令を前記命令キャッシュにプリロードするように動作可能な前記命令によって読み取られる汎用レジスタに書き込まれる、付記１０に記載のプロセッサ。
付記１２
前記命令実行ユニット命令は、命令を命令キャッシュにプリロードするように動作可能な前記命令の演算コード中の１つまたは複数のビットに応じて前記命令セットプリロードインジケータを生成する、付記８に記載のプロセッサ。
付記１３
命令を命令キャッシュにプリロードするように動作可能な前記命令は、プリロードされる命令が所定の命令セットに従ってプリデコードされるようにする一意の命令であり、前記命令実行ユニット命令が、前記一意のプリロード命令を実行することによって前記命令セットプリロードインジケータを生成する、付記８に記載のプロセッサ。
付記１４
レジスタをさらに備え、前記命令実行ユニットは、前記レジスタ中の１つまたは複数の所定のビットを設定することによって前記命令セットプリロードインジケータを生成する、付記８に記載のプロセッサ。
付記１５
前記命令キャッシュと前記メモリインターフェースとの間に挿入された第２のキャッシュメモリをさらに備え、前記プリデコーダが前記命令キャッシュと前記第２のキャッシュメモリとの間に挿入される、付記８に記載のプロセッサ。
付記１６
前記プリデコーダは、インターワーキングモードで前記現在のプロセッサ命令セット動作モード以外の命令セットに従って命令をプリデコードするように動作可能であるか、さもなければ前記現在のプロセッサ命令セット動作モードに従って命令をプリデコードするように動作可能である、付記８に記載のプロセッサ。
付記１７
プロセッサに命令を命令キャッシュにプリロードさせるように動作可能な、少なくとも第１の命令セット中のプリロード命令を記憶するコンピュータ読取り可能媒体であって、前記プリロードされる命令が、異なる第２の命令セットに従ってプリデコードされる、コンピュータ読取り可能媒体。
付記１８
前記第２の命令セットは命令セットプリロードインジケータによって指定される、付記
１７に記載のコンピュータ読取り可能媒体。
付記１９
前記命令セットプリロードインジケータは、命令がプリロードされるキャッシュラインのアドレスの１つまたは複数のビットを備える、付記１８に記載のコンピュータ読取り可能媒体。
付記２０
前記命令演算コードは、命令セットプリロードインジケータビットフィールドを含む、付記１７に記載のコンピュータ読取り可能媒体。
付記２１
前記プリロードされる命令が常に特定の第２の命令セットに従ってプリデコードされる、付記１７に記載のコンピュータ読取り可能媒体。
付記２２
前記命令セットプリロードインジケータが前記命令の実行より前に状態レジスタに記憶される、付記１７に記載のコンピュータ読取り可能媒体。
【外国語明細書】
2014194783000001.pdf