(57)【要約】キャッシュメモリ割り込みサービスルーチン（ＩＳＲ）は、それらが割り込みする命令ストリーム（３０１）の必要な命令の置換を生じさせる。これは、ＩＳＲ（３０２）の実行前に命令キャッシュ（１０２）に含まれる命令が、ＩＳＲ命令によって上書きされるので、「命令キャッシュトラッシング」として知られている。命令キャッシュメモリのトラッシングを低減するために、命令キャッシュは、実行中、第１のメモリ部分（５０１ａ）及び第２のメモリ部分（５０１ｂ）に動的に分割される。第１のメモリ部分（５０１ａ）は、現在命令ストリーム（３０１）の命令を記憶し、第２のメモリ部分（５０１ｂ）は、ＩＳＲ（３０２）の命令を記憶する。このように、ＩＳＲ（３０２）は、第２のメモリ部分（５０１ｂ）にのみ影響を及ぼし、第１のメモリ部分（５０１ａ）に記憶された命令データが損なわれないままにする。命令キャッシュ（１０２）のこの分割は、プロセッサのフェッチ処理を低減するとともに、命令キャッシュメモリ（１０２）のパワー消費を低減する。
2006518896.tif 000002
【特許請求の範囲】
【請求項１】
命令キャッシュ管理の方法であって、
第１の命令キャッシュメモリを用意するステップと、
実行のために、前記第１の命令キャッシュメモリ内に第１の命令データを与えるステップと、
第２のプログラムストリームの実行を開始するためのテンポラリキャッシュ標示の開始を与えるステップと、
前記テンポラリキャッシュ標示の開始の受け取り時、前記第１の命令キャッシュメモリ内に、前記第２のプログラムストリームの実行に使用される命令データをキャッシュするのに使用されるテンポラリキャッシュを生成するステップと、
前記第２のプログラムストリーム内の命令を実行するステップと、
前記第２のプログラムストリームの実行を終了させるための命令の実行時、前記テンポラリキャッシュを除去するステップと、
を含む方法。
【請求項２】
前記命令キャッシュ内の命令データを実行し、前記第２のプログラムストリームを実行するために前記テンポラリキャッシュ内の命令データを実行する、プロセッサを用意するステップを含む、請求項１に記載の方法。
【請求項３】
前記第２のプログラムストリームが、前記第１の命令キャッシュメモリ内の前記第１の命令データと比較して低減された命令キャッシュ要求をもつ、請求項１に記載の方法。
【請求項４】
前記テンポラリキャッシュを生成する前記ステップを前記命令の実行中のどの箇所で実施すべきかを決定するために、前記第１の命令データ内の命令データを解析するステップを含む、請求項１に記載の方法。
【請求項５】
前記解析するステップは、前記第１の命令データ及び前記第２のプログラムストリーム以外の命令データを含むソフトウェアアプリケーションによって実施される、請求項４に記載の方法。
【請求項６】
前記解析するステップは、前記第１のプログラムストリーム及び前記第２のプログラムストリームの一方が予め決められたタイプの命令を含むかどうか評価するステップを含む、請求項４に記載の方法。
【請求項７】
前記予め決められたタイプの命令が、割り込み命令である、請求項６に記載の方法。
【請求項８】
前記予め決められたタイプの命令が、割り込みからのリターン命令である、請求項６に記載の方法。
【請求項９】
前記解析するステップが、前記第２のプログラムストリームが、ほぼシーケンシャルな性質をもつかどうかを評価するステップを含み、前記テンポラリキャッシュを生成する前記ステップが、前記評価するステップに依存して実施される、請求項４に記載の方法。
【請求項１０】
前記第２のプログラムストリームをアドレス位置に記憶する主メモリを用意するステップを含み、前記テンポラリキャッシュ標示の開始が、前記第２のプログラムストリームの前記アドレス位置に依存する、請求項１に記載の方法。
【請求項１１】
前記テンポラリキャッシュのサイズが、前記第１の命令データ内に埋め込まれた明示的な命令に依存する、請求項１に記載の方法。
【請求項１２】
命令キャッシュ管理の方法であって、
第１の命令キャッシュメモリを用意するステップと、
実行のために、前記第１の命令キャッシュ内に第１の命令データを与えるステップと、
前記第１の命令データと並行して又はそれに優先して実行するための命令データの第２のストリームの標示を与えるステップであって、該命令データの該第２のストリームが、前記第１の命令データによって満たされるキャッシュ要求よりも実質的に小さいキャッシュ要求をもつ、ステップと、
前記第２のストリームの差し迫った実行の標示の受け取り時、前記命令キャッシュメモリ内にテンポラリキャッシュを生成するステップであって、該テンポラリキャッシュが、前記命令データの前記第２のストリームの実行に用いられる前記第２のストリームの前記命令データをキャッシュするのに用いられる、ステップと、
前記命令データの前記第２のストリーム内の命令を実行するステップと、
前記命令データの前記第２のストリームの実行を終了させるための命令の実行時、前記テンポラリキャッシュを除去するステップと、
を含む方法。
【請求項１３】
前記与えられる標示が、割り込み命令である、請求項１２に記載の方法。
【請求項１４】
前記命令データの前記第２のストリームが、ほぼシーケンシャルな性質をもつ、請求項１２に記載の方法。
【請求項１５】
前記命令データの前記第２のストリームが、シーケンシャルな性質をもつ、請求項１２に記載の方法。
【請求項１６】
前記標示は、予め決められたメモリ位置から前記第１の命令キャッシュメモリに、前記第２のプログラムストリームに関する命令データをフェッチするフェッチ処理において使用される、前記第１の命令キャッシュメモリのアドレスに依存する、請求項１２に記載の方法。
【請求項１７】
前記命令データの前記第２のストリームをアドレス位置に記憶する主メモリを用意するステップを含み、前記命令データの前記第２のストリームの標示が、前記アドレス位置に依存する、請求項１２に記載の方法。
【請求項１８】
第１の命令データストリームの命令データをキャッシュする命令キャッシュメモリと、
既知の特性をもつ第２の命令データストリームの存在を決定し、前記第２の命令データストリームの前記存在に依存して、前記命令キャッシュメモリを、第１のメモリ部分及びテンポラリメモリ部分に分割する決定回路と、
を有し、前記第２の命令データストリーム内の命令は、識別可能な第２のタイプであり、前記第１のメモリ部分は、前記第１の命令データストリームの命令をキャッシュし、前記テンポラリメモリ部分は、前記第２の命令データストリームの命令をキャッシュする、キャッシュメモリ。
【請求項１９】
前記決定回路が、ハードウェア割り込み回路である、請求項１８に記載のキャッシュメモリ。
【請求項２０】
前記第１の命令データストリーム内の前記第２の命令データは、明示的な命令によって先行される、請求項１８に記載のキャッシュメモリ。
【請求項２１】
前記第２の命令データストリームの前記既知の特性は、前記第２の命令データストリームを、ほぼシーケンシャルな性質で実行する命令を有するものとして識別する特性を含む、請求項１８に記載のキャッシュメモリ。
【請求項２２】
前記第２の命令データストリームの前記既知の特性は、前記第２の命令データストリームを、順次に実行する命令を有するものとして識別する特性を含む、請求項１８に記載のキャッシュメモリ。
【請求項２３】
前記第２の命令データストリームは、前記第１の命令データストリームより低減されたキャッシュ要求をもつ、請求項１８に記載のキャッシュメモリ。
【請求項２４】
前記決定回路は、前記テンポラリメモリ部分を生成するための予め決められたタイプの命令を識別する命令解析回路を有する、請求項１８に記載のキャッシュメモリ。
【請求項２５】
前記予め決められたタイプの命令は、明示的な命令を含む、請求項２４に記載のキャッシュメモリ。
【請求項２６】
前記決定回路は、前記テンポラリメモリ部分を終了させるための予め決められたタイプの命令を識別する命令解析回路を有する、請求項１８に記載のキャッシュメモリ。
【請求項２７】
前記予め決められたタイプの命令は、割り込みからのリターン命令を含む、請求項２６に記載のキャッシュメモリ。
【請求項２８】
前記予め決められたタイプの命令は、第１のタイプ及び第２のタイプのうち一方を有する明示的な命令である、請求項２６に記載のキャッシュメモリ。
【請求項２９】
第１のプログラムストリームに関する命令をキャッシュする命令キャッシュメモリと、
前記命令キャッシュメモリ内にテンポラリキャッシュを生成し、前記命令キャッシュメモリ内の該テンポラリキャッシュを除去する回路と、
を有し、前記テンポラリキャッシュメモリは、前記命令キャッシュメモリよりサイズが小さく、前記第１のプログラムストリーム以外の前記第２のプログラムストリーム内の命令をキャッシュするのに使用される、集積回路。
【請求項３０】
前記回路が、前記テンポラリキャッシュを生成するための第１のタイプの明示的な命令に応答する、請求項２９に記載の集積回路。
【請求項３１】
前記回路が、前記テンポラリキャッシュを除去するための第２のタイプの明示的な命令に応答する、請求項３０に記載の集積回路。
【請求項３２】
前記回路が、前記テンポラリキャッシュを生成するために、シーケンシャルな性質をもつ前記第２のプログラムストリームの開始に応答する、請求項２９に記載の集積回路。
【請求項３３】
前記第２のプログラムストリームが、前記第１のプログラムストリームより実質的に低減された命令キャッシュ要求をもつ、請求項２９に記載の集積回路。
【請求項３４】
前記回路が、予め決められたタイプの命令を識別し、それに応じて、前記テンポラリキャッシュの生成及び除去の一方を実施する命令解析回路を有する、請求項２９に記載の集積回路。
【請求項３５】
集積回路機能ブロックを規定するデータを記憶した記憶媒体であって、前記集積回路機能ブロックは、
第１のプログラムストリーム内の命令をキャッシュする命令キャッシュメモリと、
前記命令キャッシュメモリ内にテンポラリキャッシュを生成し、前記命令キャッシュメモリ内の該テンポラリキャッシュを除去する第１の回路と、
を有し、前記テンポラリキャッシュメモリは、前記命令キャッシュメモリよりもサイズが小さく、前記第１のプログラムストリーム以外の第２のプログラムストリーム内の命令をキャッシュするのに使用される、記憶媒体。
【請求項３６】
前記第１の回路を規定する前記データは、前記第１の回路が、前記テンポラリキャッシュを生成するための第１のタイプの明示的な命令に応答することを規定するデータを含む、請求項３５に記載の記憶媒体。
【請求項３７】
前記第１の回路を規定する前記データは、前記第１の回路が、前記テンポラリキャッシュを除去するための第２のタイプの明示的な命令に応答することを規定するデータを含む、請求項３５に記載の記憶媒体。
【請求項３８】
前記第１の回路を規定する前記データは、前記第１の回路が、前記テンポラリキャッシュを生成するために、シーケンシャルな性質をもつ前記第２のプログラムストリームの開始に応答する、ことを規定するデータを含む、請求項３５に記載の記憶媒体。
【請求項３９】
前記第２のプログラムストリームは、前記第１のプログラムストリームより実質的に低減された命令キャッシュ要求をもつ、請求項３７に記載の記憶媒体。
【請求項４０】
前記第１の回路を規定する前記データは、前記第１の回路が、予め決められたタイプの命令を識別し、それに応じて、前記テンポラリキャッシュの生成及び除去の一方を実施する命令解析回路を有することを規定するデータを含む、請求項３４に記載の記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロセッサキャッシュの分野に関し、特に、プロセッサ命令キャッシュの分野に関する。
【背景技術】
【０００２】
コンピュータシステムにおいて、キャッシュメモリは、読出し専用メモリ（ＲＯＭ）又はランダムアクセスメモリ（ＲＡＭ）の形の主メモリ内に記憶される、データ及び命令の形の情報に対するプロセッサ（ＣＰＵ）アクセス時間を短縮するために使用される。キャッシュは、主メモリに記憶されるデータ及び命令の或る部分のコピーを含むオンチップメモリバンクである。一般に、データ及び命令の２つのタイプのキャッシュがある。しかしながら、この開示の範囲では、命令キャッシュについてのみ言及する。
【０００３】
命令キャッシュは、ＣＰＵによる実行用のコードの一部を含む。ＣＰＵが、例えばループを形成する命令シーケンスを実行する間に、キャッシュ内に既にあるコードを実行するときはいつも、ループの実行は、ループ命令が実行されようとする都度これらのループ命令の全てを読み込むために主メモリにアクセスするよりも速くなる。しかしながら、これらの命令がキャッシュメモリに記憶されていない場合、キャッシュミスが生じ、ＣＰＵは、必要とされるデータが主メモリからキャッシュメモリにフェッチされるまで、待たなければならない。データが一旦キャッシュメモリにフェッチされると、ＣＰＵは、命令の実行を再開する。残念ながら、これらのフェッチ処理の間、ＣＰＵは、必要とされるデータを待つ間、ストールサイクルに入り、これらは、貴重なＣＰＵ処理帯域幅を浪費する。
【０００４】
フェッチ処理の間、データは、ブロックサイズを有するブロック単位で主メモリからフェッチされる。ブロックサイズは、１つの処理において主メモリからフェッチされるデータ量を規定する。キャッシュは、キャッシュウェイ及びキャッシュブロックのキャッシュセットに関して構成される。プロセッサによって実行されている命令の命令アドレスに依存して、ブロックサイズをもつメモリからフェッチされたデータは、キャッシュセット内のメモリ位置に記憶される。キャッシュセット内のメモリ位置は、命令アドレスに依存する。データブロックが記憶されるキャッシュウェイは、キャッシュメモリ用のキャッシュコントローラによって用いられるキャッシュ置換アルゴリズムに依存する。こうして、例えば、命令アドレスのビット１１からビット６までが、主メモリからフェッチされるデータを記憶するためのキャッシュセットを決定する。この例において、キャッシュセットは、ビット１１乃至ビット６によって規定され、３２ＫＢの総キャッシュサイズ、８のウェイ連想度及び６４バイトのブロックサイズを有するキャッシュに適用できる。従って、このタイプのキャッシュは、６４のキャッシュセットを有し、各キャッシュセットは、８のラインすなわち８のキャッシュウェイ連想度を有し、各ラインの長さは６４バイトである。
【０００５】
一般に、キャッシュメモリには、キャッシュ内に記憶されているデータを、新しくフェッチされたデータブロックと置き換えるための特定の置換ストラテジがある。キャッシュコントローラは、８のキャッシュラインのうちどれがキャッシュメモリにおいて新しくフェッチされたデータブロックと置き換えられるべきかを決定する。このために、キャッシュコントローラハードウェアは、例えば、最長時間未使用（least recently use、ＬＲＵ）プロセスを実現する。この場合、キャッシュコントローラハードウェアは、どのキャッシュラインが最も長い時間アクセスされていないか、及びどのキャッシュラインが以降のプログラムフローにとって必要とされない見込みが最も高いかを決定する。新しくフェッチされたデータは、このキャッシュラインに配置される。
【０００６】
割り込みサービスルーチン（ＩＳＲ）は、割り込みがサービスされるときに必ず実行される実行可能な命令を含む命令データのセグメントである。ＩＳＲは、ＣＰＵによる現在命令ストリームの通常の実行に割り込み、ＣＰＵは、ＩＳＲに含まれる命令をサービスし、一般に、ＩＳＲが終了すると、現在タスクを再開する。当然ながら、ＩＳＲが、プロセッサの後続のタスクに影響を及ぼす場合には別のタスクは再開されることもあり、その場合、オペレーティングシステムのタスクスケジューラが一般にこれを扱う。残念なことに、ＩＳＲは、キャッシュコンテントに影響を与え、従ってそれらが割り込みする命令ストリームの実行時間にかなりの影響を及ぼす。残念なことに、ＩＳＲは、当該命令データを、ＩＳＲ自身の命令データと置き換えているので、割り込まれた命令ストリームは、その再開時、キャッシュに以前に記憶されていたいくつかの命令を主メモリからフェッチすることを要求する場合が多い。こうして、ＩＳＲは、割り込みされた命令ストリームの実行を再開するために実施されるフェッチ処理の量を増大させる。ＩＳＲは、一般に、それらの実行に関する単純な性質及び及び要求されるスピードにより、命令内にループを含まない。従って、ＩＳＲは、命令キャッシュを利用する理由がほとんどない。キャッシュのウェイ連想度は、ＬＲＵ置換ポリシーと組み合わせられることにより、潜在的に、ＩＳＲがすべての既存のキャッシュ命令データを置き換えるという結果をもたらす。一方、ＩＳＲによってフルにＬＲＵを使用しないことによる、シングルキャッシュウェイ又は利用可能なウェイのサブセットの再使用が、システムのより良い全体性能をもたらす。ＩＳＲの非ループ性のため、ＩＳＲに、ＩＳＲが始まる前に存在した命令データではなく、それ自身の命令データをキャッシュから置き換えさせることがより適切である。一般に、ＩＳＲに関して命令キャッシュを使用する利点は、ＩＳＲ命令がキャッシュへロードされると、他のいくつかの命令も命令キャッシュメモリにフェッチされ、それゆえＩＳＲの実行時間が減少されることである。
【０００７】
「ワーキングセット」は、プロセッサが現在タスクを効率的に実行するために、プロセッサに利用可能であることを必要とする命令の組である。例えば、ループプロセスに含まれる命令用のワーキングセットは、ループ開始からループ終了までに実行される命令の量である。しかしながら、場合によっては、ワーキングセットは、命令キャッシュのサイズを越えることがあり、従って、フェッチ処理が、命令キャッシュ内に記憶されている命令を、新しくフェッチされた命令と置き換える。残念なことに、これは、制限されたキャッシュサイズにより、命令キャッシュに以前に記憶されていたいくつかの命令に上書きする。ＩＳＲの実行前にキャッシュに含まれていた命令が、ＩＳＲの命令によって上書きされるので、必要な命令のこの置き換えは、当業者に「命令キャッシュトラッシング（instruction cache trashing）」と呼ばれる。こうして、ＩＳＲの実行は、付加的なフェッチが、プログラムの効率的な実行のために要求される点において、ワーキングセットを拡大することと同じである。いずれの場合にも、割り込まれたストリームは、一般に、その処理を再開するためにフェッチされる付加のデータをもつ必要があるので、付加のフェッチ処理が、ＣＰＵによって命令を処理するために必要である。当然ながら、ＩＳＲだけが、効率的な処理に割り込みするわけではなく、ＩＳＲと同様のキャッシュ特性を有するとともにその中にいかなるループ命令も含まれない他のコードセグメントも、現在実行しているプログラムのワーキングセットを妨げる働きをする。
【０００８】
例えば、フィリップスデジタルビデオプラットホーム（ＤＶＰ）において、２つのＣＰＵチップが利用されており、一方のチップは、ＲＩＳＣ（ＭＩＰＳ）であり、他方のチップは、ＴｒｉＭｅｄｉａのようなＶＬＩＷ（very large instruction word）プロセッサである。ＴｒｉＭｅｄｉａは、すべてのビデオ及びオーディオプログラムを実行するコプロセッサである。しかしながら、このＶＬＩＷによるデータ処理中、ＶＬＩＷのＣＰＵパワーの相対的に大きい部分が、命令キャッシュトラッシングにより浪費される。一般に、ＣＰＵパワーの半分以上が、主メモリに対する乏しいアクセス及び命令キャッシュトラッシングに起因するストールサイクルによって費やされる。低減される処理パワーの理由の１つは、ＩＳＲにおいて実行されるコードの多くの部分をもたらすＤＶＰのドライバモデルによるものでありえる。主メモリからのトラッシュされた命令の多くのリロードにより、主メモリの帯域幅要求も増大される。
【発明の開示】
【発明が解決しようとする課題】
【０００９】
従って、ＣＰＵ処理パワーを増やし、主メモリの帯域幅を低減し、トラッシングの結果としてのメモリからのデータブロック転送に関連するパワー消費全体を減らすことを助けるために、命令キャッシュトラッシングを減らす必要がある。従って、本発明の目的は、別の割り込みプロセスによって使用するための他の命令と命令を置き換えることの低減を支援する命令キャッシュを提供することである。
【課題を解決するための手段】
【００１０】
本発明により、命令キャッシュの管理の方法であって、第１の命令キャッシュメモリを用意するステップと、第１の命令キャッシュメモリ内に実行用の第１の命令データを与えるステップと、第２のプログラムストリームの実行を開始するためのテンポラリキャッシュ標示の開始を与えるステップと、テンポラリキャッシュ標示の開始の受け取り時、第１の命令キャッシュメモリ内に、第２のプログラムストリームの実行に用いられる命令データをキャッシュするのに用いられるテンポラリキャッシュを生成するステップと、第２のプログラムストリーム内の命令を実行するステップと、第２のプログラムストリームの実行を終了させるための命令の実行時、テンポラリキャッシュを除去するステップと、を含む方法が提供される。
【００１１】
本発明により、命令キャッシュ管理の方法であって、第１の命令キャッシュメモリを用意するステップと、第１の命令キャッシュ内に実行用の第１の命令データを与えるステップと、第１の命令キャッシュメモリによって満たされるキャッシュ要求よりも実質的に小さいキャッシュ要求をもつ、第１の命令データと並行に又はそれに優先して実行するための命令データの第２のストリームの標示を与えるステップと、第２のストリームの差し迫った実行の標示の受け取り時、命令キャッシュメモリ内に、命令データの第２のストリームの実行に用いられる第２のストリームの命令データをキャッシュするのに用いられるテンポラリキャッシュを生成するステップと、命令データの第２のストリーム内の命令を実行するステップと、命令データの第２のストリームの実行を終了させるための命令の実行時、テンポラリキャッシュを除去するステップと、を含む方法が提供される。
【００１２】
本発明により、第１の命令データストリームの命令データをキャッシュするための命令キャッシュメモリと、既知の特性を有する第２の命令データストリームの存在を決定し、第２の命令データストリームの存在に依存して、命令キャッシュメモリを、第１のメモリ部分とテンポラリメモリ部分とに分けるための決定回路と、を有し、第２の命令データストリーム内の命令は、識別可能な第２のタイプであり、第１のメモリ部分は、第１の命令データストリームの命令をキャッシュするためにあり、テンポラリメモリ部分は、第２の命令データストリームの命令をキャッシュするためにある、キャッシュメモリが提供される。
【００１３】
本発明により、第１のプログラムストリームに関する命令をキャッシュするための命令キャッシュメモリと、命令キャッシュメモリ内にテンポラリキャッシュを生成し、命令キャッシュメモリ内のテンポラリキャッシュを除去するための回路と、を有し、テンポラリキャッシュメモリは、命令キャッシュメモリよりもサイズが小さく、第１のプログラムストリーム以外の第２のプログラムストリーム内の命令をキャッシュするために使用される、集積回路が提供される。
【００１４】
本発明により、集積回路機能ブロックを規定するための記憶されたデータを有する記憶媒体であって、集積回路機能ブロックが、第１のプログラムストリーム内の命令をキャッシュするための命令キャッシュメモリと、命令キャッシュメモリ内にテンポラリキャッシュを生成し、命令キャッシュメモリ内のテンポラリキャッシュを除去するための第１の回路と、を有し、テンポラリキャッシュメモリは、命令キャッシュメモリよりサイズが小さく、第１のプログラムストリーム以外の第２のプログラムストリーム内の命令をキャッシュするために使用される、記憶媒体が提供される。
【００１５】
本発明の例示の実施例が、以下に、添付の図面に関連して説明される。
【発明を実施するための最良の形態】
【００１６】
インターネットに公表されているI. Kadayif他による文献「An Energy Saving Strategy Based on Adaptive Loop Parallelization」において、それぞれのネスト化されたループが異なる数のプロセッサを使用して実行されることが、システムエネルギー節約に有益である場合、それを実行することを可能にするために、マルチプルプロセッサストラテジが評価される。従って、プロセッサは、それらが情報の処理のために利用されていないとき、シャットダウンされ又はスリープ状態に置かれる。当然ながら、これらのプロセッサの各々は、一般に、それらと関連付けられるキャッシュメモリを有するので、キャッシュメモリは、プロセッサがパワー節約モードに置かれる場合、プロセッサの状態と同じ状態になる。
【００１７】
インターネットに公表されているKil-Whan Lee他による文献「THE
CACHE MEMORY SYSTEM FOR CalmRISC32」において、デュアルデータキャッシュシステム構造が、性能を改善し、パワー消費を低減するために、CalmRISC32用のキャッシュメモリシステムとして使用されるために提案される。この場合、協働キャッシュシステムが、データキャッシュ及び命令キャッシュの両方に適用される。位置(locality)の２つのタイプ、すなわち空間的な位置及び時間的な位置の間で、最近アクセスされた項目は、時間的な位置において近い将来再びアクセスされる可能性が高い。従って、第１のキャッシュメモリは、空間的な位置を扱うために提供され、第２のキャッシュメモリは、時間的な位置を扱うために提供される。両方のキャッシュメモリは、プロセッサのストールサイクルを改善し、すなわち低減するために互いに助けあう。しかしながら、これらのキャッシュメモリの両方を使用することは、命令キャッシュトラッシングに起因する影響を低減しない。
【００１８】
図１を参照して、コンピュータ処理システムの一部の高レベルの図が示されている。処理システムは、命令キャッシュメモリ１０２を介して処理する命令データと、データキャッシュメモリ１０４を介して処理する他のデータと、を受け取るＣＰＵ１０１を有する。命令キャッシュメモリ１０２及びデータキャッシュメモリ１０４は、以下において、命令キャッシュ１０２及びデータキャッシュ１０４とそれぞれ呼ばれる。それぞれのキャッシュ１０２及び１０４は、主メモリ１０３と通信する。命令キャッシュ１０２は、プロセッサ１０１によって要求される場合に、主メモリ１０３から命令データのみをキャッシュする。命令キャッシュ１０２内には、フェッチユニットを有する命令キャッシュコントローラ１０２ａが配置される。命令キャッシュコントローラ１０２ａは、命令キャッシュ１０２内のデータブロックの記憶を制御する。データキャッシュ１０４は、ＣＰＵ１０１による処理のために使用される、命令データ以外のデータをキャッシュするために使用される。データキャッシュ１０４は、別のフェッチユニットを有するデータキャッシュコントローラ１０４ａをその中に配置する。
【００１９】
キャッシュコントローラ１０２ａ及び１０４ａの双方は、それぞれの個々のキャッシュ１０２及び１０４内のキャッシュラインの置換を制御し、それぞれの個々のキャッシュ１０２及び１０４内に記憶するために、主メモリ１０３から命令データ及び命令データ以外のデータをフェッチする。例えば、キャッシュコントローラ１０２ａ及び１０４ａは、それぞれ、ＬＲＵ（最長時間未使用）プロセスを実行して、それらの個々のキャッシュ１０２及び１０４内において、どのキャッシュラインが新しくフェッチされたデータと置き換えられるべきかを決定する。
【００２０】
図２を参照すると、本発明の実施形態が図示されている。この場合、決定回路２０１が、命令キャッシュ１０２内に配置される。決定回路２０１は、主メモリ１０３から取り出されて命令キャッシュ１０２に与えられる命令データを、命令解析回路を使用して解析するのに使用される。
【００２１】
図３を参照して、第１のプログラムストリーム３０１が、割り込み前（pre-interrupt）部分３０１ａ及び割り込み後（post-interrupt）部分３０１ｂを有し、その間に第２のプログラムストリーム３０２が埋め込まれていることが示されている。第２のプログラムストリームは、任意には、割り込みサービス要求（ＩＳＲ）プログラムストリームの形である。命令ポインタ（ＩＰ）３０３は、ＣＰＵ１０１がインデックスにおいて第１のプログラムストリーム３０１及び第２のプログラムストリーム３０２を実行する該インデックスの保持用に与えられる。
【００２２】
図４には、本発明の実施例のプロセスフローチャートが示されている。図３に示されるプログラムストリームにより、図５ａは、命令ポインタ（ＩＰ）アドレス３０３ａから始まる、命令キャッシュ１０２内から実行中の第１のプログラムストリーム割り込み前部分３０１ａを示す。命令のフェッチが、キャッシュコントローラハードウェア１０２ａを使用して、主メモリ１０３から命令キャッシュ１０２に実施されることにより、命令ポインタアドレス３０３ａから３０３ｂまで（図５ａ）の第１のプログラムストリーム割り込み前部分３０１ａの実行中、プロセッサストールサイクルが低減される。テンポラリキャッシュ標示（図４のステップ４０２）の開始が、第１のタイプの明示的な命令をもつ割り込み前部分３０１ａによって、又は命令キャッシュ１０２内の第２のプログラムストリーム３０２の差し迫った実行を示す命令がどの箇所に与えられるかを決定する決定回路２０１によって、与えられる。この箇所において、第２のプログラムストリーム３０２の実行の前に、決定回路２０１は、キャッシュコントローラ１０２ａに、命令キャッシュ１０２を、第１のメモリ部分５０１ａ及び第２のメモリ部分５０１ｂ（図５ｂ）に分けるように命じる（図４のステップ４０３）。第１のメモリ部分５０１ａには、第１のプログラムストリーム割り込み前部分３０１ａに関連するキャッシュされた命令データの大部分が記憶される。命令キャッシュ１０２全体が、第１のプログラムストリームの割り込み前部分３０１ａに関する命令データによって占有される場合、好適には、ＬＲＵプロセスが、第２のメモリ部分５０１ｂになりうる利用可能なメモリ空間の生成を可能にするために使用される命令キャッシュ１０２内のメモリ空間を解放するために、キャッシュコントローラ１０２ａによって実現される。第２のメモリ部分５０１ｂは、命令キャッシュ１０２内にテンポラリキャッシュ５０１ｂを実現するために使用される。
【００２３】
任意には、ＬＲＵプロセスを実現する代わりに、命令キャッシュコントローラ１０２ａは、テンポラリキャッシュ５０１ｂとして使用される命令キャッシュメモリ１０２内のメモリ空間を解放するために、専用メモリ割り当てプロセスを実現する。例えば、命令キャッシュ１０２からの少なくとも１つの予め決められたキャッシュウェイが、第２のメモリ部分５０１ｂとして使用されるために取っておかれる。つまり、８ウェイセット連想キャッシュの場合、例えばキャッシュウェイのうちの３つが、第２のメモリ部分５０１ｂの実現のために取っておかれる。このように、第２のメモリ部分は、利用可能な命令キャッシュメモリ空間全体の３／８をとるようにされる。命令キャッシュコントローラ１０２ａは、好適には、これらの３つのキャッシュウェイ内のデータブロックの置き換えを制御するためにＬＲＵプロセスを利用するが、ＬＲＵプロセスは、第２のメモリ部分５０１ｂの実現に使用されるべきキャッシュウェイを選択するためには使用されない。
【００２４】
更に、任意には、第２のメモリ部分３０２用に固定のキャッシュウェイ割り当てをもつ代わり、割り込みされたプログラムが、ＬＲＵ標示と共に命令キャッシュメモリ１０２に記憶されることにより、それが、ＬＲＵキャッシュウェイが更なる処理において使用される場合の置換の即時の候補であるようにする。
【００２５】
命令キャッシュメモリ１０２内にテンポラリキャッシュ５０１ｂを割り当てると、第２のプログラムストリーム３０２に関するデータが、主メモリ１０３からフェッチされ、ステップ４０４（図４）において、プロセッサ１０１による実行のために、この第２のメモリ部分５０１ｂに記憶される。図５ｂを参照して、プロセッサ１０１は、テンポラリキャッシュ５０１ｂのＩＰアドレス３０３ｃ乃至３０３ｄに記憶された第２のプログラムストリーム３０２を実行する。当然ながら、この第２のメモリ部分５０１ｂが、この第２のプログラムストリーム３０２の実行に最適なデータ量を収容するのに十分なサイズでない場合、ＬＲＵプロセスが、主メモリ１０３から実施されるフェッチの量を低減するために、テンポラリキャッシュ５０１ｂにおいて実現される。第２の予め決められたタイプの明示的な命令を受け取った決定回路によって決められるように、ＩＰアドレスの３０３ｄ（図５ｂ）においてこの第２のプログラムストリーム３０２が終了すると、テンポラリキャッシュ５０１ｂは、決定回路２０１によってステップ４０５（図４）において除去され、命令キャッシュ１０２全体が、第１のプログラムストリーム３０１の割り込み後部分３０１ｂによる使用のために再び利用可能になる（図５ｃ）。第１のプログラムストリーム３０１の割り込み後部分３０１ｂの実行が、ＩＰアドレス３０３ｅにおいて再開される。このように、第１のプログラムストリーム３０１によって第１のメモリ部分５０１ａに記憶された命令データの大部分は、主メモリ１０３からの最小限のフェッチ処理によって、第１のプログラムストリーム３０１に利用可能になる。
【００２６】
命令キャッシュメモリ１０２を第１のメモリ部分５０１ａ及びテンポラリキャッシュの形の第２のメモリ部分５０１ｂに分割することは（図４のステップ４０３）、命令キャッシトラッシングの低減のような命令処理の利益を達成する。一般に、第２のプログラムストリーム３０２は、その中にループ命令を含まず、概してシーケンシャル（順次）な性質をもつので、これらの概してシーケンシャルなルーチンで使用するために主メモリ１０３からフェッチされる命令データは、その実行の以降、めったに必要とされない。従って、命令キャッシュコントローラ１０２ａによって実行されるＬＲＵプロセスは、命令キャッシュ１０２から不必要な命令データを除去する容易なタスクをもつ。このように、テンポラリキャッシュ５０１ｂは、第２のプログラムストリーム３０２の単純な先読みバッファ（read ahead buffer）の働きをするように、相対的に小さいことが有利であり、それによって、プロセッサストールサイクルが、この第２のプログラムストリーム３０２について最小化される。しかしながら、テンポラリキャッシュ５０１ｂはそれほど大きくないので、結果的に生じる第１のメモリ部分５０１ａの多くの部分が、テンポラリキャッシュ５０１ｂ（ステップ４０３図４）の実現によって上書きされる。命令キャッシュの第１のメモリ部分５０１ａは、第１のプログラムストリーム３０１に関係するデータを含むので、このメモリ空間の多くの部分に上書きすることは有利でない。その理由は、第１のプログラムストリーム３０１ｂの実行が再開されると（図５ｃのＩＰ  ３０３ｅ）、潜在的に、第２のプログラムストリーム３０２による割り込み後、その割り込み前部分３０１ａと同様のやり方で第１のプログラムストリーム割り込み後部分３０１ｂの実行を再開するために、主メモリ１０３からの多くのフェッチが必要となる。従って、この第２のメモリ部分５０１ｂのサイズの事前の決定が好ましく、場合によっては、テンポラリキャッシュ５０１ｂの好適なサイズを決定するための命令が、決定回路２０１による使用のためにプログラムストリームに埋め込まれる。
【００２７】
有利には、フェッチハードウェアを有する命令キャッシュコントローラ１０２ａは、第１のプログラムストリームの割り込み後部分３０１ｂによる使用のために命令の大部分に上書きすることなく、第２のプログラムストリーム３０２による使用のために、テンポラリキャッシュ５０１ｂに新しい命令データをフェッチする。決定回路２０１は、ＬＲＵプロセスと組み合わされて、又は専用のメモリ割り当てプロセスを使用して、命令キャッシュ１０２のどの部分をテンポラリキャッシュ５０１ｂに割り当てるべきかを決定し、それによって、好適には、第１のプログラムストリームの割り込み後部分３０１ｂに関係する命令データの最小量が上書きされる。こうして、第２のプログラムストリーム３０２の実行から戻った後、ＣＰＵ１０１は、再び、ＩＰ  ３０３ｅ（図５ｃ）において第１のプログラムストリームの割り込み後部分３０１ｂを実行する。ここで、好適には、第１のプログラムストリーム３０１の割り込み後部分３０１ｂの実行時、それに関連する命令データ量が、なお、命令キャッシュ１０２に記憶されている。こうして、例えば、命令キャッシュ１０２が、３２キロバイトのサイズをもち、８ウェイセット連想度を呈するとし、テンポラリキャッシュ５０１ｂに割り当てられるメモリを、４キロバイトのキャッシュウェイに制限する場合、これは、第２のプログラムストリーム３０２の実行から戻った後、元のキャッシュデータの２８／３２が、第１のプログラムストリームの割り込み後部分３０１ｂに関係するという結果をもたらす。
【００２８】
キャッシュ分割は、本発明により２つの異なる態様で実現される。第１の態様では、命令キャッシュ１０２の分割の実現は、命令キャッシュの分割のために決定回路２０１をトリガするテンポラリキャッシュ標示の開始を与える、予め決められたタイプの明示的な命令を有することによって、ハードウェアにおいて容易化される（図４のステップ４０２）。決定回路２０１が、テンポラリキャッシュ開始命令の形の第１のタイプの明示的な命令を読み込むと、命令キャッシュ１０２は、第１のメモリ部分５０１ａ及びテンポラリキャッシュ５０１ｂ（図５ｂ）に分割され、割り込みが処理される。当然ながら、第２のプログラムストリーム３０２が実行を終えると、好適には、テンポラリキャッシュ終了命令の形の第２のタイプの明示的な命令が、テンポラリキャッシュ５０１ｂに割り当てられたメモリを解放するように決定回路２０１をトリガし、それによって、命令キャッシュ１０２全体が、第１のプログラムストリーム割り込み後部分３０１ｂによって再び使用可能になる。当然ながら、ハードウェアトリガされる割り込み及び割り込みからのリターン命令の形の第１及び第２のタイプの明示的な命令は、それぞれ、当業者に明らかな同様のやり方でサポートできる。
【００２９】
当然ながら、場合によって、第２のプログラムストリーム３０２が、例えば第２のプログラムストリーム３０２に埋め込まれるループ命令の形のシーケンシャルでない性質の命令を含むとき、命令キャッシュ１０２の分割を禁止することが好ましいことがある。テンポラリキャッシュ５０１ｂが、第２のプログラムストリーム３０２全体のキャッシングを収容するのに十分大きいサイズでない場合、複数のフェッチが、第２のプログラムストリーム３０２に埋め込まれたループ命令を実行するのに必要な命令データを取り出すために、主メモリ１０３に対して行われる。テンポラリキャッシュ５０１ｂに割り当てられるメモリサイズは、非常に小さく、従って、第２のプログラムストリーム３０２は、テンポラリキャッシュ５０１ｂのワーキングセットより大きい。こうして、ループの繰り返しのたびに、フェッチが、主メモリ１０３に対して行われ、それによって、ストールサイクルが、ループの繰り返しのたびにプロセッサ１０１によって招かれるという不利益をもたらす。この場合、命令キャッシュ１０２の分割は、プロセッサ性能の低下及びパワー消費の増加をもたらすので、好ましくない。当然ながら、当業者には、大きいＩＳＲが、不良プログラミングの実際であると考えられていることが知られている。一般に、ＩＳＲは、短い割り込み応答時間を確実にするために小さく、従って、第１のプログラムストリームにあるような通常のプログラムタスクに面倒な作業を残す。
【００３０】
第２の態様では、命令データの第２のプログラムストリーム３０２のブロックは、主メモリ１０３内の特定のメモリアドレス領域に記憶されるものとして識別される。このように、第２のプログラムストリーム３０２は、第２のプログラムストリーム３０２の命令データが主メモリ１０３内に記憶されるアドレスを使用して、識別される。当然ながら、第２のプログラムストリーム３０２を識別するために、好適には、プログラムストリームのコンパイル及びリンクの時間中、すべての第２のプログラムストリーム命令データの大部分が、主メモリ１０３内の同じメモリアドレス領域に記憶されることを好適に可能にするロード標示が、プログラムストリーム内に与えられる。従って、このメモリアドレス領域からのいかなるフェッチも、テンポラリキャッシュ５０１ｂ内にこの第２のプログラムストリーム命令データ３０２を記憶するために、命令キャッシュ（ステップ４０３図４）の分割を自動的に可能にする。有利には、この方策を使用することによって、テンポラリキャッシュ５０１ｂを実現するために使用される専用の命令が不要にされる。
【００３１】
従って、決定回路２０１は、第２のプログラムストリーム３０２内にある命令のタイプを決定する役割を果たし、この決定に基づいて、命令キャッシュメモリ１０２の分割（図４のステップ４０３）を実施する。それに応じて命令キャッシュメモリ１０２が分割されない場合、より多くのストールサイクルが観察される可能性があり、それゆえ、性能の利益が実現されない。当然ながら、決定回路２０１が決定を行うために命令データを処理する代わりに、情報が、決定回路２０１の命令解析回路による復号化のために、命令データ内で任意に符号化される。
【００３２】
任意には、決定回路２０１をハードウェアで実現する代わりに、命令キャッシュを分割すべきか否かを示す命令が、メモリ１０２に記憶される命令データ内に含められる。これらの命令の結果として、決定回路２０１又はプロセッサによって実行されている他のソフトウェアルーチンが、命令キャッシュ１０２の分割を実施することが有利であるか否かを決定する。
【００３３】
ソフトウェア制御の下で、キャッシュメモリ１０２は、ソフトウェア決定の結果として、実行されている命令データのタイプに依存して任意に分割される。ソフトウェアが、キャッシュの分割が有利であると決定する場合、この処理は、ＣＰＵの処理パワーを増大させ、キャッシュメモリ回路１０２のパワー消費及びメモリ帯域幅要求を低減させるために実施される。主メモリ１０３から実施されるフェッチが多いほど、結果的に、回路によって消費されるパワーが多くなる。命令キャッシュメモリ１０２及び主メモリ１０３を実現するために使用される、ハードウェアレベルのイネーブリング及びディスエーブリング論理ゲートは、パワー節約を実現する。
【００３４】
任意には、本発明の本実施例の低いハードウェア費用実現のために、テンポラリキャッシュ５０１ｂが、命令キャッシュ１０２の固定のキャッシュウェイに生成される。例えば、第２のメモリ部分５０１ｂは、キャッシュウェイ０にのみ生成される。これは、有利には、ＩＳＲが、他のキャッシュウェイではなくこのシングルキャッシュウェイ内に命令キャッシュデータをトラッシュすることを可能にし、従って、第２のプログラムストリーム３０２の実行から戻ったとき、第１のプログラムストリームの割り込み後部分３０１ｂによる使用のために他のキャッシュウェイを残す。例えば、６４バイトのブロックサイズ及び合計８キャッシュウェイをもつ３２ＫＢの総キャッシュサイズの場合、４キロバイトの固定サイズをもつ１つの予め決められたキャッシュウェイが、テンポラリキャッシュ５０１ｂを実現するために割り当てられる。
【００３５】
当然ながら、主メモリ１０３に対して実施される多くのフェッチがあるとき、６４バイトブロックのフェッチは、多くの場合、プロセッサのストールサイクルの低減に十分でない。従って、２つのシーケンシャルな６４バイトのブロックにフェッチのサイズを増やすことが、多くの場合好ましい。当然ながら、任意には、複数のシーケンシャルな６４バイトのブロックが、プリフェッチされることができる。
【００３６】
有利には、従来技術のキャッシュ実現と比較して、命令キャッシュトラッシングを低減することによって、命令データのメモリ帯域幅要求が低減され、システムのパワー消費が低減される。より短い時間が、命令の実行に費やされるだけでなく、より短い時間が、他の命令データの実行によって除去されたデータをフェッチするためのフェッチ処理を実施するのに費やされる。これは、例えばラップトップのような携帯可能なコンピューティングプラットホームにおいて実現されるプロセッサシステムにとって重要な利点を有する。
【００３７】
多数の他の実施例が、本発明の精神又は範囲から逸脱することなく、考えられることができる。
【図面の簡単な説明】
【００３８】
【図１】キャッシュメモリを有するコンピュータ処理システムの一部の高レベルの図。
【図２】本発明の実施例による、キャッシュメモリ内のハードウェアに配置される決定回路を示す図。
【図３】割り込み前部分及び割り込み後部分を有する第１のプログラムストリームと、その間に埋め込まれた第２のプログラムストリームとを示す図。
【図４】図２に示される本発明の実施例のためのプロセスフローチャート。
【図５ａ】命令キャッシュ内に記憶された第１のプログラムストリームの割り込み前部分を示す図。
【図５ｂ】第１のプログラムストリームの割り込み前部分をその中に記憶する第１のメモリ部分と、第２のプログラムストリームをその中に記憶する第２のメモリ部分と、に分割される命令キャッシュメモリを示す図。
【図５ｃ】第１のプログラムストリームの割り込み後部分の一部と、第１のプログラムストリームの割り込み前部分の一部とをその中に記憶する、パーティション除去後の命令キャッシュメモリを示す図。
【図１】
2006518896.tif 000003
【図２】
2006518896.tif 000004
【図３】
2006518896.tif 000005
【図４】
2006518896.tif 000006
2006518896.tif 000007
【国際調査報告】
2006518896.tif 000008
2006518896.tif 000009
2006518896.tif 000010