(58)【調査した分野】(Int.Cl.,DB名)
前記キャッシュラインが、各キャッシュラインに少なくとも(K/2)ビットに加えてN個のKビットの容量を有する前記キャッシュライン内のアラインされた境界上で命令を記憶する、請求項2に記載の方法。
前記フェッチパイプラインが、前記キャッシュ不可能命令の前記開始部分と組み合わせ、前記キャッシュ不可能命令を実行のために再構築するために、前記検出された指示に応答してキャッシュをバイパスして、前記キャッシュ不可能命令の少なくとも前記終了部分をメモリからフェッチするように動作可能であり、
前記キャッシュラインが、K/2ビット幅を加えたN*Kビットである各キャッシュライン内のアラインされた境界上でKビット幅の命令およびK/2ビット幅の命令を記憶し、前記キャッシュラインのK/2ビット部分が、ライン横断命令のK/2ビット終了部分を記憶するか、または、
前記終了部分が、次のキャッシュラインで確立される終了部分の複製である、請求項9に記載の装置。
【発明を実施するための形態】
【0013】
次に、本発明のいくつかの実施形態が示されている添付の図面を参照しながら、本発明についてより十分に説明する。しかしながら、本発明は、様々な形態で具現化されてもよく、本明細書に記載された実施形態に限定されるものとして解釈されるべきではない。むしろ、これらの実施形態は、本開示が徹底的で完全なものとなり、本発明の範囲を当業者に十分に伝えることになるように提供されている。
【0014】
本発明の教示による動作を実施する際にまたは実施するために動作させるためのコンピュータプログラムコード、すなわち「プログラムコード」は、C、C++、JAVA(登録商標)、Smalltalk、JavaScript(登録商標)、Visual Basic(登録商標)、TSQL、Perlなどの高級プログラミング言語、または様々な他のプログラミング言語で書くことができる。また、ターゲットプロセッサアーキテクチャのためのプログラムは、ネイティブアセンブラ言語で直接書くことができる。ネイティブアセンブラプログラムは、マシンレベルのバイナリ命令の命令ニーモニック表現を使用する。本明細書で使用するプログラムコードまたは非一時的コンピュータ可読記録媒体は、プロセッサがフォーマットを理解できる、オブジェクトコードなどのマシン言語コードを指す。
【0015】
図1は、キャッシュライン境界およびページングされたメモリ境界を横断する命令をサポートする命令キャッシュを有するプロセッサ複合体110を含むデバイス100(たとえば、通信デバイス)の特定の実施形態のブロック図である。デバイス100はワイヤレス電子デバイスであってもよく、コンピュータ実行可能命令118を有するシステムメモリ112に結合されたプロセッサ複合体110を含み得る。システムメモリ112は、
図2のシステムメモリ227または
図4Bのシステムメモリ452を含み得る。プロセッサ複合体110は、プロセッサ111、レベル1命令キャッシュ(L1 Iキャッシュ)122を有する統合メモリサブシステム114、外部タグ(xTag)回路126、およびキャッシュコントローラ回路128を含み得る。統合メモリサブシステム114は、キャッシュ不可能として指定および特定され得るプログラムメモリ内に1つまたは複数のページを有するページングされたメモリ編成をサポートする。プロセッサ111は、
図2のプロセッサ210または
図4Bのプロセッサパイプライン442を含み得る。統合メモリサブシステム114は、
図2のL1データキャッシュ214およびL2命令/データキャッシュ226または
図4BのL2キャッシュ450などの、L1データキャッシュおよびレベル2ユニファイドキャッシュ(図示せず)も含み得る。L1 Iキャッシュ122は、以下でより詳細に説明するように、
図2のL1 Iキャッシュ218または
図4BのL1 Iキャッシュ448を含み得る。xTag回路126は、
図4BのxTag回路447およびxPビット449に関して以下でより詳細に説明するように、命令の実行を制御するオーバーライド指示を与えるための外部許可ビット(xPビット)130も含み得る。
【0016】
統合メモリサブシステム114はプロセッサ複合体110に含まれ得るか、またはプロセッサ複合体110の外部にある1つまたは複数の別個のデバイスもしくは回路(図示せず)として実装され得る。例示的な例では、プロセッサ複合体110は、
図2、
図3B、
図4A、
図4B、および
図5の回路およびシステムのうちのいずれかを含み、
図3Aおよび
図6に示されるまたは
図3Aおよび
図6に関連付けられる実施形態のうちのいずれか、またはそれらの任意の組合せに従って動作する。たとえば、
図1に示すように、L1 Iキャッシュ122、xTag回路126、およびキャッシュコントローラ回路128はプロセッサ複合体110内でアクセス可能であり、プロセッサ111は、統合メモリサブシステム114のメモリまたはシステムメモリ112に記憶されたデータまたはプログラム命令にアクセスするように構成される。
【0017】
カメラインターフェース134はプロセッサ複合体110に結合され、ビデオカメラ136などのカメラにも結合される。ディスプレイコントローラ140はプロセッサ複合体110およびディスプレイデバイス142に結合される。コーダ/デコーダ(コーデック)144もプロセッサ複合体110に結合され得る。スピーカ146およびマイクロフォン148はコーデック144に結合され得る。ワイヤレスアンテナ152およびワイヤレスインターフェース150を介して受信されたワイヤレスデータをプロセッサ111に与えることができるように、ワイヤレスインターフェース150はプロセッサ複合体110およびアンテナ152に結合され得る。
【0018】
プロセッサ111は、システムメモリ112などの非一時的コンピュータ可読記録媒体に記憶されたコンピュータ実行可能命令118を実行するように構成され得、コンピュータ実行可能命令118は、プロセッサ111などのコンピュータに
図3Aのプログラムセグメント300などのプログラムを実行させるように実行可能である。コンピュータ実行可能命令118は、プロセッサ111に、統合メモリサブシステム114のメモリおよびシステムメモリ112にアクセスする命令を処理させるようにさらに実行可能である。
【0019】
特定の実施形態では、プロセッサ複合体110、ディスプレイコントローラ140、システムメモリ112、コーデック144、ワイヤレスインターフェース150、およびカメラインターフェース134は、システムインパッケージデバイスまたはシステムオンチップデバイス104に含まれる。特定の実施形態では、入力デバイス156および電源158はシステムオンチップデバイス104に結合される。さらに、特定の実施形態では、
図1に示すように、ディスプレイデバイス142、入力デバイス156、スピーカ146、マイクロフォン148、ワイヤレスアンテナ152、ビデオカメラ136、および電源158は、システムオンチップデバイス104の外部にある。しかしながら、ディスプレイデバイス142、入力デバイス156、スピーカ146、マイクロフォン148、ワイヤレスアンテナ152、ビデオカメラ136、および電源158の各々は、インターフェースまたはコントローラなどの、システムオンチップデバイス104の構成要素に結合され得る。
【0020】
本明細書で説明する実施形態によるデバイス100は、セットトップボックス、エンターテインメントユニット、ナビゲーションデバイス、通信デバイス、携帯情報端末(PDA)、固定ロケーションデータユニット、モバイルロケーションデータユニット、携帯電話、セルラーフォン、コンピュータ、ポータブルコンピュータ、タブレット、モニタ、コンピュータモニタ、テレビジョン、チューナ、ラジオ、衛星ラジオ、音楽プレーヤ、デジタル音楽プレーヤ、ポータブル音楽プレーヤ、ビデオプレーヤ、デジタルビデオプレーヤ、デジタルビデオディスク(DVD)プレーヤ、ポータブルデジタルビデオプレーヤ、データまたはコンピュータ命令を記憶するまたは取り出す任意の他のデバイスなどの様々な電子デバイス、あるいはそれらの任意の組合せに組み込まれてもよい。
【0021】
図2は、メモリ階層204からフェッチされた異なる長さの命令を実行するプロセッサ210を有するプロセッサ複合体200の説明図である。メモリ階層204は、レベル1(L1)データキャッシュ214、命令変換ルックアサイドバッファ(ITLB)217を含むメモリ管理ユニット(MMU)220、L1命令キャッシュ(Iキャッシュ)218、外部タグ(xTag)回路219、キャッシュコントローラ回路221、書込み制御回路222、レベル2命令/データキャッシュ(L2キャッシュ)226、およびシステムメモリ227を含む。xTag回路219は、xTag回路219が関連付けられるIキャッシュ218の外部にあり、Iキャッシュ218中のストレージアレイを変更することなく、xTag回路219の機能をプロセッサ複合体200に追加することを可能にする。プロセッサ複合体200は、プログラムコードを実行するための
図1のデバイス100のハードウェア構成要素において適切に使用され得る。本発明の説明をわかりやすくするために、プロセッサ複合体に接続することができる周辺デバイスは図示されていない。特定用途向け集積回路(ASIC)技術、フィールドプログラマブルゲートアレイ(FPGA)技術、または他のプログラマブル論理、ディスクリートゲートもしくはトランジスタ論理、あるいは意図した用途に適した任意の他の利用可能な技術を使用して、プロセッサ複合体200の様々な構成要素を実装することができる。
【0022】
プロセッサ210は、キャッシュから命令およびデータを階層的に取り出す。たとえば、プロセッサ210は、仮想フェッチアドレスおよび動作モードを含むフェッチ出力228を生成することによって、命令をフェッチする。動作モードは、32ビット命令のみのモード、16ビット命令のみのモード、16ビット命令と32ビット命令の混合モード、他の動作モードなどの特定を含み得る。そのようなプロセッサ動作モード状態インジケータは、プロセッサで動作中のプログラムによって制御される。
【0023】
プロセッサの命令セットは、多倍長形式で符号化された命令を含み、従来、より長い命令は、可変長命令セットで利用可能な最も短い命令形式の長さの倍数である。命令は、命令の長さに応じて変わり得る複雑なエンコーディングを有することがあり、異なる長さの命令に隣接することがあるので、フェッチされた命令のアラインおよびデコーディングは、シングルプロセッサパイプラインステージが短い継続時間のクロック周期で行うことができる処理よりも多くの処理を必要とすることがある。命令の複雑さの程度により、プロセッサは、別個の命令アライメントパイプラインステージを含み、デコード動作をプリデコード動作およびデコードパイプラインステージに分割することができる。プリデコード動作は、L1 Iキャッシュミス処理の間にプリデコード動作を行うことによって、通常のパイプライン実行から適切に隠され得る。L1 Iキャッシュミス処理は、フェッチされた命令がL1 Iキャッシュ内で見つからず、メモリ階層のより高いレベルからフェッチされなければならないときに行われる。プリデコード動作は、フェッチされた命令とともにプリデコード情報をL1命令キャッシュに記憶する。そのようなプリデコード動作およびxTag回路219の動作は、書込み制御回路222によって制御される。
【0024】
動作の際、プロセッサ210は、L1 Iキャッシュ218にアクセスするために使用される物理フェッチアドレスにITLB 217によって変換される仮想アドレスを生成して、アドレス指定された命令がL1 Iキャッシュに存在するかどうかを一致機構を使用して判断する。アドレス指定された命令についての一致がL1 Iキャッシュ218に見つからなかった場合、ミスが生じる。ミス情報230はプリデコーダも含み得る書込み制御回路222に送信され、プロセッサ210はL2キャッシュ226に対してアクセス要求232を行う。L2キャッシュ226に命令ヒットがあると、所望の命令を含むL2キャッシュラインが第1のポート(ポートA)234上で書込み制御回路222に出力される。書込み制御回路222は、ミス処理の間、L2キャッシュからフェッチされた命令を部分的にデコードし、命令、命令に関連付けられたプリデコードビット、および実行許可ビットなどのタグ情報を出力238上でL1 Iキャッシュ218に与え、命令はプロセッサ210にも渡される。
【0025】
プロセッサ210がデータをフェッチする必要があるとき、プロセッサ210はL1データキャッシュ214にアクセスして、アドレス指定されたデータが存在するかどうかを判断する。フェッチされたデータについての一致がL1データキャッシュ214に見つからなかった場合、ミスが生じ、L2キャッシュ226が次にアクセスされる。両方のL1キャッシュの場合において、命令またはデータがL1命令またはL1データキャッシュに存在することがわかった場合(キャッシュでヒットすると呼ばれる)、命令およびデータはそのそれぞれのL1キャッシュから出力240および244上で直接読み出される。L2キャッシュアクセスについてミスが生じた場合、命令およびデータはシステムメモリ227によって与えられる。
【0026】
図3Aは、16ビットおよび32ビットの可変長命令を適切に含み得る例示的なプログラムセグメント300を示す。例示的なプログラムセグメント300は、プロセッサ複合体200のメモリ階層204に適切に記憶され得る。例示のために、プログラムセグメントは1つまたは複数のキャッシュラインから取り出されると仮定されるが、本発明の教示はプログラムセグメントを記憶する任意のメモリデバイスに適応可能であり、命令は記憶セグメント境界にまたがり得ることに留意されたい。キャッシュラインは固定長を有し得るので、プログラムセグメントはキャッシュラインの境界にまたがり得、したがって、キャッシュライン境界にわたって分割される命令を有し得る。
【0027】
プログラムセグメント300は、16ビット命令および32ビット命令からなる可変長命令セットから生じる命令302を含む。たとえば、プロセッサ210は、複数のタイプの命令について16ビット命令形式および32ビット命令形式を使用することができ、命令タイプの使用を指定し制限するいくつかの動作モードをサポートすることができる。たとえば、プロセッサ210は、32ビット命令のみが使用され得ることを指定する第1の動作モードと、16ビット命令と32ビット命令の組合せが使用され得ることを指定する第2の動作モードとを有することができる。プロセッサは複数の動作モードを有し得るが、本発明の説明を明確にするために、例示的なプロセッサ210の説明は主に、上記で説明した第2の動作モードに限定される。
【0028】
様々な実施形態を例示するために、いくつかの例示的な16ビット命令および32ビット命令を
図3Aに示す。例示のために、プログラム相対バイトインジケータ304は、命令が始まるキャッシュラインにおけるバイトロケーションを表し、間接的に命令のサイズを示す。たとえば、ADD R5、R4、R3命令306は相対バイト位置00で開始し、バイト位置01で終了する。したがって、ADD R5、R4、R3命令306は16ビット命令である。同様に、ADD命令309も16ビット長である。ロード(LOAD)命令307、LOAD命令308、およびストア(STORE)命令310は32ビット長である。
【0029】
キャッシュラインのサイズは、異なるプロセッサ実装形態において、たとえば、使用される製作技術に基づいてプロセッサおよびメモリ階層の設計において行われる選択に応じて異なり得る。L2キャッシュ226は512ビットキャッシュラインを使用することができ、L1 Iキャッシュ218は、たとえば、128ビットキャッシュラインまたは256ビットキャッシュラインなどの、より小さいキャッシュラインを使用することができる。示されたキャッシュラインのサイズは例示的なものであり、より大きいまたはより小さいキャッシュラインのサイズは除外されない。例示の目的で、プログラムセグメント300は相対アドレス00で始まることが示されていることにも留意されたい。そのようなプログラムセグメント300は、キャッシュラインにおける様々なポイントで開始して配置されてもよく、複数のキャッシュラインにまたがってもよいことが諒解されよう。
【0030】
図3Bは、
図3Aのプログラムセグメント300からの命令を含む例示的なL1 Iキャッシュライン320を示す。例示的な第1のL1 Iキャッシュライン322および例示的な第2のL1 Iキャッシュライン326は、
図2のL1 Iキャッシュ218における隣接するキャッシュラインである。第1のL1 Iキャッシュライン322は、16ビットフィールド330、333、334、および336と、16ビット拡張フィールド338とを含む。第1のL1 Iキャッシュライン322は、タグフィールド323および制御フラグCn 324に関連付けられ、制御フラグCn 324は、キャッシュ可能インジケータ(L)と、たとえば、ユーザ実行(Ux)ビットおよび特権実行(Px)ビットなどの実行許可ビットとを含み得る。UxビットおよびPxビットの非アサート状態は、いかなるモードでも実行しないことを示し得る。第2のL1 Iキャッシュライン326は、16ビットフィールド340、342、343、および344と、16ビット拡張フィールド346とを含む。第2のL1 Iキャッシュライン326は、タグフィールド327および制御フラグCn 328に関連付けられ、制御フラグCn 328は、キャッシュ可能インジケータ(L)と、第2のL1 Iキャッシュライン326に記憶された命令に関連付けられたユーザ実行(Ux)ビットおよび特権実行(Px)ビットなどの実行許可ビットとを含み得る。
【0031】
図3Aのプログラムセグメント300の命令は、16ビットフィールド330に記憶された
図3Aの16ビットADD R5、R4、R3命令306で始まる第1のL1 Iキャッシュライン322に配置され得る。32ビットLOAD命令307は、2つの16ビットフィールド333および334を含む32ビットフィールド332に記憶される。例示の目的で、16ビットフィールド333はLOAD命令307の上位16ビットを含み、隣接する16ビットフィールド334はLOAD命令307の下位16ビットを含む。
【0032】
第1のL1 Iキャッシュライン322における次の命令は、2つの命令キャッシュラインにわたって記憶された32ビットLOAD命令308である。LOAD命令308の上位16ビットは、第1のL1 Iキャッシュライン322における16ビットフィールド336に記憶される。LOAD命令308の下位16ビットは、第2のL1 Iキャッシュライン326における16ビットフィールド340に記憶される。LOAD命令308の下位16ビットのコピーは、16ビット拡張フィールド338に記憶される。いずれも
図3AのADD R8、R6、R7命令309およびSTORE命令310は、第1のL1 Iキャッシュライン322のセグメント330および332と同様に、第2のL1 Iキャッシュライン326における16ビットフィールド342〜344に記憶される。本明細書において明確にするために図示されていないプリデコードビットは、キャッシュラインにおける各16ビットフィールドに関連付けられ得ることにも留意されたい。
【0033】
図3Bに示すように、16ビット命令および32ビット命令をサポートするプロセッサ複合体における命令キャッシュは、たとえば、1つのK/2形式の命令に加えて、N個のKビット形式でアラインされた命令を記憶することができるキャッシュラインを有して構築され得る。
図3Bは例示的なものであり、Kビット命令は8ビットバイトアドレス境界および16ビットハーフワード境界上に記憶され得ることに留意されたい。また、16ビット命令および24ビット命令など、互いの倍数ではない命令形式を有する命令セットアーキテクチャも本発明の実施形態によってサポートされることにさらに留意されたい。
【0034】
たとえば、K=32ビットの場合、ワードアラインされた境界上で8個の32ビット命令を記憶するキャッシュラインは、命令データに関連付けられた256ビット+16ビット=272ビットラインを有するキャッシュで実装される。可変長命令プロセッサの場合、16ビット命令と32ビット命令の混合を有するキャッシュラインは、16ビット拡張フィールド338を有する第1のキャッシュライン322などの、余分のK/2ビットスペースを利用するキャッシュラインの最後の32ビットロケーションに記憶されるキャッシュライン横断32ビット命令を有し得る。最後の16ビットキャッシュ拡張フィールド338に記憶された32ビットキャッシュライン横断命令の下位16ビット部分は、ビットフィールド340における次の順次キャッシュラインに記憶された16ビット部分の複製である。別の例では、8ビットの倍数である命令を有するプロセッサはライン横断命令も有することができる。そのような命令の場合、ライン横断命令は、たとえば、第2のキャッシュラインに続く命令の1バイト部分、2バイト部分、または3バイト部分を有するバイト境界において分割され得る。第2のキャッシュラインに記憶された1バイト部分、2バイト部分、または3バイト部分はコピーされ、第1のキャッシュラインにおけるライン横断命令の第1の部分に関連付けられた位置に記憶される。この例示的なケースでは、キャッシュラインに対する3バイト拡張が提供される。たとえば、キャッシュ拡張フィールド338は、その現在図示されている16ビットではなく、3バイトビットフィールドに拡張される。他のバイト長命令が可能であり、本発明によって排除されない。キャッシュライン横断命令は、キャッシュ不可能ページへのページ境界も横断することができ、したがって、キャッシュ可能ではない場合があるので、ページ境界(ライン/ページ)横断キャッシュ不可能命令をキャッシュから実行することを防がなければならない。また、単一のライン横断命令の第1の部分を記憶し、第2の命令も記憶するなど、単一の命令の一部分よりも多くを記憶するように拡張フィールド338を拡張することができ、第2の命令は一般に、拡張された拡張フィールドを使用しているキャッシュラインを用いて記憶された次の論理ページに関連付けられる。
【0035】
図4Aは、本発明の一実施形態による、命令変換ルックアサイドバッファ(ITLB)402および物理メモリ404を有するページングされた仮想メモリシステム400を示す。仮想アドレス405は一般に、2つの部分に符号化される。アドレスビットの上側のフィールドは通常、4Kバイトのページなど、選択されたページサイズに基づいて符号化される、仮想ページ番号406を表す。アドレスビットの下側のフィールドは、アドレス指定されたページ内のアドレスを特定する、ページオフセット407である。仮想アドレスから物理アドレスへの変換において、仮想ページ番号は物理ページ番号(Pページアドレス)に変換される。ページオフセットは、仮想アドレスと物理アドレスの両方に対して同じであり、変換されない。
【0036】
仮想アドレスから物理アドレスへの変換システムは、変換プロセスの性能を向上させるために、レベル1とレベル2の命令キャッシュおよびデータキャッシュなどの様々なキャッシュに関連付けられた、1つまたは複数の変換ルックアサイドバッファ(TLB)を含み得る。命令TLB(ITLB)は、エントリ検証およびページがキャッシュ可能命令を含むかまたはキャッシュ不可能命令を含むかなどの記憶されたページの属性とともに、最近の仮想アドレスから物理アドレスへの変換を記憶する、小さいキャッシュである。ITLBは従来、ランダムアクセスメモリ(RAM)回路と結合されるコンテンツアドレス可能メモリ(CAM)回路を含み、比較的小さく、たとえば32個または64個のエントリを有する。各ITLBエントリは、RAM回路中の変換された物理ページ番号に関連付けられた、最近使用された仮想ページ番号を有する、CAM回路中のタグを含む。たとえば、ページングされた仮想メモリシステム400は、ITLB 402と、キャッシュ不可能ページ409などの1つまたは複数のキャッシュ不可能ページと混ざり合ったキャッシュ可能ページ408および410を有する物理メモリ404とを使用する。ITLB 402の各エントリは、有効(V)フラグ、読取り(R)フラグ、書込み(W)フラグを含むフラグ412と、キャッシュ可能インジケータ(L)414と、仮想アドレスタグ416と、関連付けられた物理ページアドレス418とを有する。Lフィールド416は、ページをキャッシュ可能またはキャッシュ不可能として特定するのに適した単一ビットであり得る。ページがキャッシュ可能であるかまたはキャッシュ不可能であるかは、コンパイル中に静的に判断され得、様々な要因に依存し得る。たとえば、メモリマップされた入力および出力(I/O)デバイスがシステムの実際の実装形態で使用される場合、そのようなメモリマップされたロケーションはキャッシュ不可能としてタグ付けされ得る。
【0037】
図4Bは、本発明の一実施形態による、仮想アドレスから物理アドレスへの変換サブシステム440を示す。変換サブシステム440は、プロセッサパイプライン442、ITLB 444、物理アドレスバッファ446、xTag回路447、L1 Iキャッシュ448、L2キャッシュ回路450、システムメモリ452、および書込み制御回路454からなる。ITLB 444は、ITLBタグ内にキャッシュ可能インジケータ(L)458を備えるエントリ456を有する。L1 Iキャッシュ448は、各ラインに関連付けられたタグフィールド470、キャッシュされた命令を記憶するための基本エクステント471、および各ラインに関連付けられた拡張フィールド472を含む。また、L1 Iキャッシュ448中の例示的な第1のライン457は、第1のライン457の第1の基本エクステント473に記憶されたキャッシュ可能命令のセットを含む。
図4Aのページ408などの命令のキャッシュ可能ページから、
図4Aのページ409などのキャッシュ不可能としてタグ付けされた命令のページにページ境界を横断する32ビット命令の場合、命令のキャッシュ不可能な部分は32ビット命令がキャッシュ不可能命令として扱われることを要求する。この32ビット命令の例では、第1の16ビット部分(Ia)474は、キャッシュ可能ページからフェッチされたキャッシュ可能な部分であるが、第2の16ビット部分(Ib)475は、キャッシュ不可能ページからフェッチされたキャッシュ不可能な部分である。第1の部分Ia 474は第1のライン457の第1の基本エクステント473に記憶され、第2の部分Ib 475は第1のライン457に関連付けられた拡張フィールドに記憶される。第1のライン457は、第1の基本エクステント473に記憶されたキャッシュ可能命令に関連付けられた1つまたは複数の実行許可ビットを含むタグフィールド470から選択された関連タグも有する。L1 Iキャッシュ448は、Ib(Ib')476の少なくとも第2の部分のコピーのための記憶スペースを含む例示的な第2のライン459も含む。第1の部分Ia 474および第2の部分Ib 475がキャッシュ可能命令を表す場合、第2の部分のコピーIb' 476は第2のライン459に記憶されることになる。キャッシュ可能なライン横断命令を有し、実施中に行われる決定に依存する、そのような場合、第2の部分Ib 475および第2の部分のコピーIb' 476は、両方の部分の内容が同じであるので、位置を切り替えることができる。しかしながら、第1の部分Ia 474および第2の部分Ib 475がキャッシュ不可能命令の部分である例示的な場合には、第2の部分のコピーIb' 476は第2のライン459に記憶されない。ライン/ページ境界にわたって分割されるキャッシュ不可能命令を有するキャッシュラインの例示的なシナリオに対処するために、キャッシュ不可能インジケータフラグは第1のライン457中のこの命令に関連付けられる。以下でより詳細に説明するように、キャッシュ不可能インジケータフラグは、L1 Iキャッシュ448の外部にあるxTag回路447に記憶される。
【0038】
変換プロセスは、ITLB 444内で仮想アドレス405から選択された仮想ページ番号406をCAM回路に適用することによって開始する。ITLB 444は、適用された仮想ページ番号406を、一般にCAMタグ460中のエントリタグとともに記憶された最近使用された仮想ページ番号のすべてと並列比較する。一致がある場合、CAM回路は、ITLB 444中のRAM回路における対応するエントリ456にアクセスし、対応するエントリ456は、変換された物理ページアドレス462として出力され、物理アドレスバッファ446に記憶される。変換された物理アドレス463は、仮想アドレス405からのページオフセット464と連結された、変換された物理ページアドレス462を含む。
【0039】
たとえば、4ギガバイト(4GB)および4Kバイトのページの仮想アドレス空間を有する組込みシステムでは、仮想アドレス405は、ビット[31:12]を有する仮想ページ番号406およびビット[11:0]を有するページオフセット407からなる。同じ組込みシステムにおいて、キャッシュおよびメインメモリのメモリ階層は、512kバイトの物理メモリ空間および4kバイトのページを包含し得る。ITLB 444においてヒットがあると、仮想アドレス405は物理アドレス463に変換される。物理アドレス463は、ビット[28:12]を有する物理ページ番号462およびビット[11:0]を有するページオフセット464からなり、物理ページ番号462のビット[18:12]は512kバイト実施に必要とされる。ITLB 444においてヒットがあると、キャッシュ可能インジケータ(L)458を含むタグも出力され、物理アドレスバッファ446に記憶される。キャッシュ可能インジケータ(L)458およびタグ465の配置は例示的なものである。次いで、物理アドレス463はL1 Iキャッシュ448に適用される。変換サブシステム440の説明を続ける前に、キャッシュライン/ページ横断命令でもあるキャッシュ不可能命令をキャッシュに記憶するという課題について次に説明する。
【0040】
キャッシュ不可能命令の存在を判断したために、キャッシュ可能命令とキャッシュラインを横断するキャッシュ不可能命令とを有するフェッチされたキャッシュラインをキャッシュに記憶することを一般的に除外するという課題に対処するために、余分のK/2ビットフィールドライン横断命令データに関連付けられた属性は、キャッシュライン中で記憶され、残りの命令の属性とは別々に追跡される制御属性で指定され得る。キャッシュライン横断命令でもあるキャッシュ不可能命令をキャッシュラインに記憶した、この例示的な場合における制御属性は、キャッシュ不可能命令をいかなるモードでも実行しないことを示すように設定される。制御属性は、ライン/ページ横断命令を有するキャッシュラインに関連付けられた少なくとも1つの記憶ビットに記憶される。ライン/ページ横断命令の部分がフェッチグループの一部としてキャッシュからフェッチされると、キャッシュ不可能フラグがxTag回路447でアサートされる。xTag回路447などのxTag回路は、ページ横断命令を含み得る各キャッシュラインに対して実装される。また、xTag回路447がプロセッサパイプライン442に転送されるフラグデータについてアクセスされ、この転送は一般に、フェッチされたキャッシュライン命令のそのセットがライン横断命令を含むときのみに生じ得る。また、フェッチグループ中のキャッシュ可能命令に関連付けられた許可ビットも取り出されることに留意されたい。制御属性を有するライン/ページ横断命令またはその部分は、ライン/ページ横断命令をいかなるモードでも実行することを可能にしないように、そのライン/ページ横断命令だけについて、フェッチグループに関連付けられた許可ビットをオーバーライドし得る。そのような動作は、xTag回路447中のキャッシュ不可能フラグによって制御され得る。動作は、このライン/ページ横断命令だけにxTag外部許可ビット(xPビット)449を与えることによっても制御され得、xTag外部許可ビット(xPビット)449は、xTag回路447に記憶され、そのライン/ページ横断命令だけについてキャッシュライン許可ビットをオーバーライドする。関連付けられたタグフィールド470からアクセスされたキャッシュ可能命令についての許可ビット、第2の部分Ib 475などの、拡張フィールド472からのライン/ページ横断命令またはその部分、および、たとえば、xTag回路447からライン/ページ横断命令についてxTag 480上でアクセスされるxPビット449は、プロセッサパイプライン442に転送される。
【0041】
プロセッサパイプライン442は、検出(Dt)回路482、第1のデコード(Dc)回路483、バッファ/ホールド(B&H)回路484、再フェッチ回路485、再結合回路486、およびマルチプレクサ487を含む。Dt回路482は、一般に、実行許可が許容されるかどうかをチェックし、実行しないものとして第2の部分Ib 475にタグ付けするパイプラインステージにおいて、第2の部分Ib 475およびアクセスされたxTag 480が受信されたことを検出する。Dc回路483は、第2の部分Ib 475がページ横断命令の一部であるかどうかを特定する。第2の部分Ib 475が、実行許可がチェックされるステージで受信されたにもかかわらず、それだけでは、一般に第2の部分Ib 475がページ横断命令であることを意味しないことに留意されたい。したがって、Dc回路483はデータをデコードし、この例示的な場合では、第2の部分Ib 475がページ横断命令の一部であると判断する。
【0042】
プロセッサパイプライン442の動作は、キャッシュラインから受信した命令をバッファするB&H回路484を用いて続き、第2の部分Ib 475がフェッチグループ中で最も古い命令を表すかどうかを判断する。第2の部分Ib 475はフェッチグループ中で最も古い命令を表していないとB&H回路484が判断した場合、B&H回路484は第2の部分Ib 475をバッファし、最も古い命令を表していると判断されるまで、第2の部分Ib 475をホールドする。プロセッサパイプライン442において第2の部分Ib 475が最も古い命令を表していると判断されたとき、第2の部分Ib 475の上にあるプロセッサパイプラインのフラッシュが実行される。キャッシュ不可能命令は、許可失敗問題の解決に関連付けられた既存のデータフローを再利用するシステムメモリ452から再フェッチされる。この特定の実施形態では、第2の部分Ib 475もフラッシュされ得るか、または上書きされることが許容され得る。
【0043】
代替実施形態では、キャッシュライン中の有効な(good)キャッシュ可能データのフラッシュは必要でなくてもよく、再フェッチ回路485は、命令キャッシュをバイパスし、たとえば、マルチプレクサ477を介して第2の部分Ib 475をシステムメモリ452から直接取得して、キャッシュ不可能属性を有する第2の部分Ib 475を再フェッチする。再結合回路486は第1の部分Ia 474をシステムメモリ452から受信された第2の部分Ib 475と組み合わせて、完全な命令Ia||Ibを形成し、デコードされるように命令をマルチプレクサ487に通し、組み合わされた命令を、命令キャッシュからフェッチされることなしに実行することを可能にするパイプライン処理を継続する。実行のための適切なパイプラインプロトコルに従って、組み合わされた命令での任意の必要なプリデコード動作およびデコード動作を繰り返す必要があり得ることに留意されたい。Dt回路482はフェッチパイプラインステージに関連付けられ、Dc回路483は一般デコードパイプラインステージに関連付けられ、B&H回路484は命令キューに関連付けられ得ることにも留意されたい。例示的な回路482〜487は、特定の実装形態に従って適切なパイプラインステージに配置され得る。
【0044】
ライン/ページ横断命令に先行する命令は、命令のフローをライン/ページ横断命令からそらす場合があるので、プロセッサパイプラインは、ライン/ページ横断命令に到達したかどうかの判断を行うことができるまで、ライン/ページ横断命令およびライン/ページ横断命令に続く命令の発行をストールする。分岐命令の実行などにより、ライン/ページ横断命令に到達していない場合、標準の分岐動作が続く。一実施形態では、ライン/ページ横断命令に到達した場合、ライン/ページ横断命令およびライン/ページ横断命令に続く命令がフラッシュされ、L1 Iキャッシュ218をバイパスして、少なくともキャッシュ不可能として特定されたライン/ページ横断命令について、キャッシュ不可能要求235がシステムメモリ227に対して行われる。キャッシュ不可能命令は、たとえば、
図2のシステムメモリ出力バス236上で返される。代替として、別の実施形態では、前のキャッシュラインで複製されたライン/ページ横断命令の少なくともその部分が再フェッチされ、ライン/ページ横断命令全体が前のフェッチグループに保存された第1の部分から再構築される。両方の実施形態では、ライン/ページ横断命令またはその部分は、キャッシュされていないフェッチされた命令についての適切な属性を用いてシステムメモリから返され、再構築された命令は、キャッシュされることなしに実行され得る。
【0045】
別の実施形態では、固定長命令セットアーキテクチャは、たとえば、固定長命令とともに記憶された可変データ幅のデータを用いるフォンノイマン(Von Neumann)アーキテクチャの使用により、アラインされていない命令を有し得る。固定長命令と混合した幅のデータの組合せは、キャッシュラインを横断し、キャッシュ可能ページとキャッシュ不可能ページとの間のページ境界も横断する任意のアラインされていない命令についての同じ問題および解決策につながり得る。したがって、キャッシュ可能ではない単一のライン/ページ横断命令を有するキャッシュライン中の命令の大部分を実行するためのプロセッサ性能は、そのようなライン/ページ横断命令を有さない任意のキャッシュラインからフェッチされた命令の実行と同じままである。この結果は、キャッシュ不可能データを部分的に含むので本来ならキャッシュから除外されていたはずのラインがキャッシュされるのを可能にすることによって達成される。
【0046】
図4Bに戻ると、実行許可ビットは、L1 Iキャッシュ448中の各ラインに関連付けられたタグに記憶され、基本エクステント471に記憶された各キャッシュ可能命令について有効である。キャッシュ不可能インジケータフラグは、第1のライン457に関連付けられた拡張フィールドに記憶された第2の部分Ib 475に関連付けられた追加の許可ビットに記憶され得る。追加の許可ビットは、L1 Iキャッシュ448の外部にあるxTag回路447に記憶され、たとえば、いかなる理由でも実行しないことを示す。キャッシュラインは、固定数の16ビット命令または固定数の32ビット命令を有するように選ばれる。たとえば、16ビットの拡張フィールドを加えた512ビットのキャッシュラインの場合、4kバイトのページは、0から63の番号が付けられ得る64個のキャッシュラインに対応する。16ビットの拡張フィールドは別個のアレイに記憶され得る。セット63におけるラインのみがページ横断命令を有し得るので、追加の許可ビットを使用すべきかどうかを判断するために、フェッチアドレスがページアドレスの最後と比較される。フェッチアドレスはまた、アドレス指定された命令がキャッシュラインにわたって分割されるかどうかを判断して、その命令をライン横断命令として特定するために比較される。
【0047】
許可ビットは一般に、アクセスされるラインに関連付けられるタグフィールドに書き込まれる。たとえば、Iキャッシュタグ470中の有効フラグによって示されるように、アドレス指定されたキャッシュラインが有効でないとき、フェッチはL2キャッシュ226またはシステムメモリ227に向けられる。一般に、フェッチ要求はL1 Iキャッシュ218にロードするための複数の命令を推測で(speculatively)返し、要求された命令はL1 Iキャッシュ218からプロセッサ210に返される。フェッチ要求に関連付けられるのは、
図4AのLビット414などの、要求されたアドレスのキャッシュ可能性属性である。次いで、Lビット414は一般に、フェッチグループに関連付けられ、他のフラグとともに、キャッシュライン中のフェッチグループに関連付けられたタグにロードされる許可ビットに分解される。フェッチグループがキャッシュ可能ではないことをキャッシュ可能性Lビット414が示す場合、フェッチグループはL1 Iキャッシュ448にロードされない。しかしながら、フェッチグループの一部であるページ横断/ライン横断命令の場合、命令の第1の16ビット部分はキャッシュ可能ページからアクセスされ得るが、第2の16ビット部分はキャッシュ不可能ページからアクセスされ得る。一般に、第1のレベル命令キャッシュにミスがあると2つのラインがフェッチされるので、第2のラインのキャッシュ可能性も判断され得る。したがって、ページ/ライン横断命令の第2の16ビット部分は、フェッチグループを記憶する残りのキャッシュラインに関連付けられた拡張フィールドにロードされ得、余分の許可ビット(xPビット)449はxTag回路447に記憶され得る。代替実施形態では、拡張フィールドは、追加の16ビット命令または32ビット命令を記憶することに対応して、16ビットよりも多くを、たとえば32ビットまたは48ビットを記憶するように拡張され得ることに留意されたい。また、プリデコードビットがキャッシュライン中の各命令に関連付けられる場合、拡張フィールドは、記憶される16ビット部分ごとに2または4プリデコードビットを含むように拡張され得る。
【0048】
余分のデータ許可情報は、プリデコードビットのエンコーディングから特定され得る。一般に、余分のデータ許可情報は、ページ横断命令に関連付けられ得る任意の記憶フィールドに記憶され得る。プリデコードビットを使用して、命令を32ビットまたは16ビットとして特定する一実装形態では、ページ横断命令も、サイズおよびアドレスの計算に基づいて特定する代わりに、1つまたは複数の余分のプリデコードビットで特定され得る。また、「いかなる理由でも実行しない」という指示は、プリデコードビットに記憶されて、命令キャッシュに記憶されたキャッシュ不可能データの場合、ページ横断命令を誤った命令として特定し得る。
【0049】
図5は、本発明の一実施形態による、ライン横断命令および補助ライン横断インジケータを有する例示的な2ウェイセットアソシアティブIキャッシュ回路500を示す。本発明はダイレクトマップキャッシュ、フルアソシアティブキャッシュまで含む4ウェイキャッシュ、8ウェイキャッシュなどの他のキャッシュ設計に適用可能であるが、2ウェイセットアソシアティブ命令キャッシュが例示的な命令キャッシュ回路500として示されている。第1のウェイ514は、第1のウェイ中の各ラインについての許可ビットとキャッシュラインアドレスタグとを含む第1のウェイタグビットフィールド518を含む。第1のウェイ514は、たとえば、「n」個の命令Ic0〜Icnおよび第1の部分Ixaとともに示されるデータのライン519と、第2の部分Ixbを記憶するものとして示される拡張フィールド520とをさらに含む。命令キャッシュ回路500はまた、第2のウェイ中の各ラインについての許可ビットとキャッシュラインアドレスタグとを含む第2のウェイタグビットフィールド522を有する第2のウェイ516のための記憶装置を含む。第2のウェイ516は、「z」個の命令Ib0〜Ibzとともに示されるデータのライン523と、占有されていないものとして示される拡張フィールド524とをさらに含む。一般に、各ウェイ中のラインの記憶容量は同じであるが、異なる長さの異なる数の命令を記憶することが可能である。2ウェイIキャッシュの場合、4kバイトのページについてセット63に2つのラインがあり、各ラインはIxaおよびIxbからなる命令などのライン/ページ横断命令を有し得る。また、これらの2つのラインの各々について、余分の許可ビットがxTag回路532および533に別々に記憶され、別々に追跡される。4kバイトのページを有する4ウェイセットアソシアティブキャッシュでは、セット63に4つのxTag回路を有する4つのラインがある。フルアソシアティブキャッシュでは、すべてのキャッシュラインがライン/ページ横断命令を有する可能性があり、次いで、余分の許可ビットは、キャッシュ中の各ライン中のページ横断命令を追跡するために、タグビットフィールド518および522に含まれ得る。
【0050】
命令キャッシュが実際に実装される方法は、特定の用途およびシステム全体に課された設計制約に依存する。当業者は、様々な設計の互換性、および各特定の用途について本明細書で説明した機能を実装する最良の方法を認識されよう。たとえば、拡張フィールド520および524は、それに対応するラインアレイに直接関連付けられて示されているが、拡張フィールド520および524はラインアレイとは別のアレイで実装され得る。
【0051】
図6は、本発明の一実施形態による、異なるキャッシュ可能性を用いてページ横断命令を管理するためのプロセス600を示す。ブロック602において、キャッシュラインは、キャッシュライン横断命令用の拡張記憶装置および拡張記憶装置用の属性フラグを用いて確立される。属性フラグはキャッシュの外部に記憶されてもよい。ブロック604において、たとえば、拡張記憶装置からのページ横断命令の第2の部分を含む、命令のフェッチグループにおいて、ページ横断命令がフェッチされる。また、ブロック604において、ページ横断命令の第2の部分を用いて属性フラグをプロセッサパイプライン中で追跡するために、属性フラグがxTag回路からキャプチャされる。ブロック606において、ページ横断命令の第2の部分は、プロセッサパイプラインで受信されたこと、ページ横断命令が命令キャッシュから生じたこと、およびページ横断命令がいかなるモードでも実行可能でないものとしてタグ付けされることが検出される。ブロック608において、ページ横断命令は、プロセッサパイプラインに対してページ横断命令を特定し、プロセッサパイプラインの内部で、ページ横断命令を実行しないものとしてタグ付けするようにデコードされる。
【0052】
決定ブロック610において、ページ横断命令がプロセッサパイプライン中で最も古い命令であるかどうかの判断が行われる。ページ横断命令がプロセッサパイプライン中で最も古い命令ではない場合、プロセス600はブロック612に進む。ブロック612において、ページ横断命令は、ページ横断命令がプロセッサパイプライン中で最も古い命令になるまでホールドされ、次いでブロック614に進む。決定ブロック610に戻り、ページ横断命令がプロセッサパイプライン中で最も古い命令である場合、プロセス600はブロック614に進む。ブロック614において、許可失敗問題の解決に関連付けられた既存のデータフローを利用する一実施形態では、ページ横断命令を含むプロセッサパイプラインは背後でフラッシュされる。代替実施形態では、フラッシュは実行されず、ページ横断命令またはキャッシュ不可能属性を有するページ横断命令の第2の部分のみがシステムメモリから直接フェッチされる。ブロック616において、ページ横断命令が再フェッチされるか、またはページ横断命令の少なくとも第2の部分が命令キャッシュをバイパスしてシステムメモリから再フェッチされる。第2の部分が再フェッチされる場合、ページ横断命令の第1のキャッシュ可能部分はキャッシュ不可能命令を再構築するための動作用に予約される。ブロック618において、ページ横断命令は、必要であれば、キャッシュ可能な第1の部分を、システムメモリから再フェッチされキャッシュ不可能として実行された第2の部分と組み合わせることによって再構築される。
【0053】
本発明は図示された命令フロー論理200に限定されず、プリデコード情報を命令キャッシュに記憶することもできる、可変長命令を有する任意のパイプラインプロセッサにさらに適用可能である。拡張が固有の命令セット使用モードをサポートする場合、可変長プロセッサ命令セットへの拡張は本発明によって対応され得る。たとえば、16ビット命令、32ビット命令、および64ビット命令が動作可能である場合、32ビット命令および64ビット命令が2つのL1 Iキャッシュラインにわたってまたがることができるように動作モードが指定され得る。64ビット命令タイプを使用するプロセッサは、上記で説明した例示的なプロセッサ204の拡張であり得る。拡張されたプロセッサは、たとえば、32ビット命令のみに制限された第1の状態、16ビット命令と32ビット命令の両方についての第2の状態、16ビット命令、32ビット命令、および64ビット命令についての第3の状態、ならびに64ビット命令のみに制限された第4の状態について符号化された動作モード状態を有し得る。Iキャッシュライン中の64ビット命令は、4つの16ビットフィールドに区分され得る。48ビットを有する拡張ビットフィールドは、64ビット命令がライン/ページ横断状況において4つの16ビット部分にわたって分割されることを可能にするように使用され得る。
【0054】
本発明はまた、2の累乗である命令長に限定されない。たとえば、16ビット命令および24ビット命令を有する代替アーキテクチャを考える。この例では、命令キャッシュラインは8ビット命令セクションに区分され得る。24ビット命令は、たとえば、3つの8ビットセクションからなることができる。16ビット命令を記憶する192ビット基本エクステントキャッシュラインは、12個の16ビット命令および8個の24ビット命令をホールドすることができる。16ビット拡張フィールドは、24ビット命令が3つの8ビット部分に分割されることを可能にする。この例示的なキャッシュのキャッシュラインは、192+16=208ビットである。
【0055】
一実施形態はまた、
図4Bの拡張フィールド472などの、キャッシュラインの最初において構造化された拡張データ記憶部分を用いて構成され得る代替キャッシュを対象とする。キャッシュラインの最初に拡張フィールドがある場合、一実施形態は、キャッシュ不可能である第1の半分およびキャッシュ可能である第2の半分を有する第1の命令と、キャッシュ可能であるデータを有する残りのキャッシュラインとを対象とする。この代替キャッシュにおいて第1の命令のキャッシュ不可能部分を処理するための手順は、本明細書で説明した、
図4Bに示すキャッシュの最後の命令のキャッシュ不可能部分を処理するための手順と同様に動作する。代替キャッシュラインにおける最後の命令へのキャッシュ可能な第2の命令のフェッチは、
図4Bに示すキャッシュにおけるN-1命令へのキャッシュ可能な第1の命令のフェッチと同様に動作する。
【0056】
本明細書で開示される実施形態とともに説明される様々な例示的な論理ブロック、構成、モジュール、回路、およびアルゴリズムのステップは、電子ハードウェア、プロセッサによって実行されるコンピュータソフトウェア、またはこれら両方の組合せとして実装され得ることが、当業者にはさらに諒解されよう。様々な例示的な構成要素、ブロック、構成、モジュール、回路、およびステップが、概してそれらの機能に関して、上記で説明されてきた。そのような機能がハードウェアとして実装されるか、プロセッサ実行可能命令として実装されるかは、特定の用途およびシステム全体に課された設計制約に依存する。当業者は、説明した機能を各特定の用途ごとに様々な方法で実装し得るが、そのような実装の決定は、本開示の範囲からの逸脱を生じるものと解釈すべきではない。
【0057】
本明細書で開示する実施形態に関して説明する方法は、ハードウェアで具現化され、プロセッサによって実行される非一時的信号を記憶するメモリモジュールからソフトウェアによって使用され得る。ソフトウェアは、本明細書で説明したハードウェアの実行をサポートすることができるか、または異なるキャッシュ可能性を用いてページ横断命令を管理するための方法および装置をエミュレートするために使用され得る。ソフトウェアモジュールは、ランダムアクセスメモリ(RAM)、フラッシュメモリ、読取り専用メモリ(ROM)、電気的プログラマブル読取り専用メモリ(EPROM)、ハードディスク、リムーバブルディスク、テープ、コンパクトディスク読取り専用メモリ(CD-ROM)、または、当技術分野で既知の任意の他の形態の非一時的記憶媒体中に常駐し得る。記憶媒体は、プロセッサがその記憶媒体から情報を読み取り、場合によってはその記憶媒体に情報を書き込むことができるようにプロセッサに結合され得る。プロセッサに結合している記憶媒体は回路実装と一体の直接結合であってもよく、あるいは、直接アクセス、またはダウンローディング技法を使用したデータストリーミングをサポートする1つまたは複数のインターフェースを利用してもよい。
【0058】
本発明は現在好ましいコンテキストで開示されているが、本教示は本開示および以下の特許請求の範囲に一致する様々なコンテキストに適合され得ることが認識されよう。