(57)【特許請求の範囲】
【請求項１】
情報のプリフェッチ機能を提供するコンピュータ装置であって、
プリフェッチアドレス及びキャッシュアクセスアドレスを含むアドレスを発行する演算処理装置と、
この演算処理装置に、発行されたアドレスを受け取るように結合された記憶システムであって、情報記憶用の上位階層メモリへの接続を含むとともに、前記プリフェッチアドレス及びキャッシュアクセスアドレスと関連して前記上位階層メモリから複製された情報を格納するためのキャッシュメモリを含む記憶システムと、
前記演算処理装置および記憶システムと関連し、前記演算処理装置からのプリフェッチアドレスを格納するためのプリフェッチメモリを含み、格納されたプリフェッチアドレスの注入管理を行ってプリフェッチ操作をキャッシュアクセス操作と連携させるプリフェッチ資源とを具え、
プリフェッチアドレスと関連する情報がメモリ資源に既に存在するかどうかについてプリフェッチアドレスを試験する機能を提供するように構成されたコンピュータ装置において、
前記プリフェッチメモリは、当該プリフェッチメモリ内に係属中のプリフェッチアドレスと関連する情報が前記メモリ資源に存在するようになったら、当該プリフェッチアドレスを当該プリフェッチメモリから破棄することを特徴とするコンピュータ装置。
【請求項２】
前記キャッシュメモリから前記キャッシュメモリの使用可能性を示す第２シグナルを受け取ってプリフェッチアドレスと関連する情報をプリフェッチするキャッシュ制御装置を含む、請求項１に記載するコンピュータ装置。
【請求項３】
前記プリフェッチ資源は、前記プリフェッチメモリ及び前記メモリ資源に接続されたセレクタを含み、このセレクタは前記プリフェッチメモリにプリフェッチアドレスを送り、前記メモリ資源にキャッシュアクセスアドレスを送る、請求項２に記載するコンピュータ装置。
【請求項４】
複数のフェッチ装置を含み、それらの少なくとも１つのフェッチ装置はプリフェッチ操作またはキャッシュアクセス操作の１つに専用とする、請求項３に記載するコンピュータ装置。
【発明の詳細な説明】
発明の背景
本発明は、キャッシュメモリを利用したり、実装するためのシステム、装置、及び方法に関するものである。より明確に言えば、本発明はキャッシュメモリにおいてプリフェッチを管理するためのシステム、装置、及び方法に関するものである。
キャッシュメモリは、一般に、記憶システムの一部分を構成するものであり、また、この記憶システムは、典型的には、パーソナル・コンピュータまたはテレビ用のセット・トップ・ボックスのようなコンピュータシステムの一部分を構成するものである。このコンピュータシステムは、更に、演算処理装置を含むものである。コンピュータシステムでは、この記憶システムは演算処理装置が書き込み操作、読み出し操作でアクセスする際の情報を格納する。
記憶システムは、一般に、階層構造となっている。階層記憶システムは、一般に、各階層におけるスピード、容量、費用をうまく調整させるためと、全体として許容できる性能と経済性を達成し得るように、物理的に区分けされた階層の技術を組み合わせるものである。最低位の階層では、階層記憶システムは典型的には演算処理装置に欠かせない限定された数のレジスタを有し、このレジスタは極めて高速であり、演算処理装置の演算ブロック（例えば、演算論理装置）の近くに配置される：同時に、このレジスタは、他のメモリ技術で使われるものに比べて高価である。また、階層記憶システムは上位の階層のメモリも有する：このメモリは典型的には、
（ｉ）一般に揮発性メモリ技術（例えば、様々な形態のランダム・アクセス・メモリ）からなるメインメモリ
（ii）より恒久的な記憶装置（例えば、コンパクトディスク、フロッピーディスク、ハードディスク、磁気テープ装置）。
を含むものである。
レジスタと上位階層のメモリとの間にキャッシュメモリが配置される。このキャッシュメモリは、演算処理装置の集積回路（オンチップ）の部品として存在する第１階層と、オンチップではないが演算処理装置の筐体内に存在するか、さもなければこのような装置の近くに設けられる第２階層とを含む階層で使用することができる。このキャッシュメモリは、一般に、高速の技術を使用する比較的上位の階層のメモリとして実装される。このキャッシュメモリの高速技術は、典型的には演算処理装置に物理的に接近させることによって強化される。これらの技術及び配置では、ビットあたりのコストは高くなる傾向がある。しかしながら、このキャッシュメモリは典型的には小容量であるため、全体としてコンピュータシステムの費用は許容し得るものである。
このキャッシュメモリは、演算処理装置が近い将来にシーク操作をするであろう情報を保持するために、一般に実装される。この点については、もしもシークされた情報（例えば、データ、命令、またはこの両者）がキャッシュメモリ内で見つかった場合（ヒット）、この情報はきわめて高速に装置に与えられることとなるので、演算処理装置は先ず最初にキャッシュメモリを経由して情報アクセスのためのシークを行うものとなるであろう。しかしながら、もしもこの情報がキャッシュメモリ内で見つからなかった場合（ミス）、この演算処理装置は、記憶システムのより上位の階層である以下の１つを経由してその情報にアクセスする。これらの次−階層のアクセスは、典型的には、キャッシュヒットした場合に比べて、情報の有効率においてだんだんと大きな遅延を生じさせる（ミスペナルティ）。
キャッシュメモリ内に、演算処理装置が近い内にシーク操作を行いそうな情報を保持するために、キャッシュメモリの内容を連続的に更新することが普通である。この更新機構は、アクセスされた情報、例えばキャッシュミスした情報を、上位の階層のメモリからキャッシュメモリ内に複製するものである。一般に、この更新機構は、アクセスされた情報のみを入れるだけではなく、そのメモリアドレスの近隣の情報も入れるものである。更に、この更新機構は、典型的にはこの情報を、キャッシュメモリ内の他の情報と置き換えるものであるが、この置き換えは予め選ばれた置換規則に従う。このような規則の１つは、更新に関しては、最も昔の使用された情報を置き換えるというものである--このような情報は、近い内に使用される可能性が最も低いと考えられ、従って、入れ替えても良いものである。
更新は、アクセスされそうであるという情報に対して行なわれるが、一方、他のアプローチは、演算処理装置によって近い将来にアクセスされることが判っている情報をキャッシュメモリにロードするものである。このようにするためには、この演算処理装置は、キャッシュメモリに対してプリフェッチ命令を発行する。この命令の発行は、命令によって指示される情報に演算処理装置がアクセスする必要があるときよりも以前に行なわれる。更に、この発行は、一般に、プログラマのコーディング、演算処理装置のオペレーティングシステムまたはコンパイラのようなソフトウェアで記述されたものに対して応答するものである。
幾つかのプリフェッチ機構は提案されてきたが、その用途は様々な制限によって抑制されてきた。このような制限の典型的なものは、プリフェッチ可能な情報の識別に関する困難性である。更に、プリフェッチ可能な情報が識別できたとしても、関連するプリフェッチ機構は、この情報についての演算処理装置のアクセス操作の始動の前に、普通に情報をプリフェッチするためには不十分な期間しか許されない傾向がある。この時間不足は、プリフェッチ命令をアクセスよりもかなり前以て発行するプログラミングによって解決することもできるが、このようなプログラミングは、２次的な問題を招くことになるため好ましくない。このような２次的な問題の１つは、プリフェッチした情報を入れてから最終的に使用するまでの期間、キャッシュメモリの資源を浪費する可能性があることであり、この浪費はキャッシュメモリの性能を悪くし得るものである。その他の２次的な問題は、置換規則の下での置き換えのために、プリフェッチした情報が除去される可能性があることである。
この時間不足は、一連のプリフェッチ命令へのセグメント方式によるプリフェッチによって解決することも可能である。しかしながら、一連の命令を利用することは、２次的な問題を招くことになるため好ましくない。２次的な問題の１つは、隣接したプリフェッチ命令の間で最適な時間の間隔を達成することの困難性である：（ｉ）各プリフェッチ命令は、そのプリフェッチ命令が次の操作、隣接した命令と衝突しないように発行されるべきである。（ii）隣接した命令は、プリフェッチ操作の間の時間間隔を最少化するように、発行されるべきである。
従って、これらの操作に典型的に関連する問題を克服するプリフェッチ機能を備えるキャッシュメモリを提供することが望ましい。
発明の概要
この発明の一般的な目的は、プリフェッチ操作に関連する典型的な問題を克服するキャッシュメモリのプリフェッチ機能をサポートすることである。これらの及びその他の目的に合わせて、本発明の特徴の１つは、プリフェッチ操作を備えるキャッシュメモリと、演算処理装置によって使用するために上位階層のメモリから複製された情報を格納するためのキャッシュアクセス操作と、プリフェッチアドレス及びキャッシュアクセスアドレスを含むアドレスを発行する演算処理装置と、を含むものである。このキャッシュメモリは、情報を格納するためのメモリ資源及びプリフェッチ資源を含むものである。このプリフェッチ資源は、受け取り、及び演算処理装置からのプリフェッチアドレスを受け取って記憶するためと、キャッシュアクセス操作のプリフェッチ操作を調整するために受け取ったプリフェッチアドレスの挿入管理（injection management）をするために、メモリ資源、及び演算処理装置に接続される。
本発明の他の特徴は、コンピュータシステムを含み、このコンピュータシステムは演算処理装置、記憶システム、プリフェッチ資源を含むものである。この記憶システムは、上位階層メモリとキャッシュメモリを含み、この上位階層のメモリは情報の記憶装置として提供され、キャッシュメモリはプリフェッチ及びキャッシュアクセスアドレスと関連して、上位階層のメモリから複製された情報の記憶装置を提供するものである。
本発明の更に他の特徴は、演算処理装置によって発行されたプリフェッチアドレスを受け取るステップと：このプリフェッチアドレスをプリフェッチメモリに格納するステップと；プリフェッチアドレスに関する情報をキャッシュメモリに運び込むために、プリフェッチアドレスをプリフェッチメモリから予め選択された順番に挿入するステップを含むものである。
本発明を特徴づける新規の様々な機能が、本明細書の一部を構成し付随する請求項で個別に指摘される。本発明及びその操作の利点、その使用によって達成される特定の目的を、添付図面を参照して説明するが、その好適実施例の説明では、同じまたは同様の要素は同じ参照番号で示す。
【図面の簡単な説明】
図面では：
図１は、本発明による一般的なコンピュータシステムを図示する。
図２は、本発明によるキャッシュメモリのプリフェッチについて図示する。
図３は、図２におけるキャッシュメモリのプリフェッチについての一部分をより詳細に図示する。
図４は、図２におけるキャッシュメモリのプリフェッチについての一部分をより詳細に図示する
図５は、本発明によるプリフェッチアドレスの発行に関するステップの実施例を示すフローチャートである。
図６は、本発明によるプリフェッチアドレスの挿入に関するステップの実施例を示すフローチャートである。
詳細な説明
本発明は、プリフェッチの管理を、特に複数のプリフェッチ命令に関するプリフェッチの管理を可能にするものである。以下の説明では、本発明の徹底した理解を提供するために、専門用語及びその他の詳細について説明する。しかしながら、当業者は、本発明を実践するためには全ての詳細は必要でないと理解すべきである。更に、本発明を不明瞭にするのを避けるために、詳細な説明では、ブロック図の形態で示されるような良く知られた要素、装置、プロセスのステップ、及び同様の情報は省略するかもしれない。
更に、当業者は、以下の詳細な説明が本発明の幾つかの実施例からなること、本発明の全ての実施例を説明するわけではなく、また説明する意図もないと理解すべきである。このような説明の点に関して、当業者は、本発明の原理から外れることなく、１つのあるいは複数の特徴を、説明しなくても良いと理解すべきである（または、幾つかの場合は全て省略しても良い）。
図１は、本発明によるコンピュータシステム１０を図示する。このコンピュータシステム１０は、
（ｉ）演算処理装置１２
（ii）ソフトウェア１３
（iii）プリフェッチ資源１５、キャッシュメモリ１６、及び上位階層メモリ１８を含む記憶システム１４、
を含むものである。この演算処理装置１２は、情報の処理に関する幾つかの構成を含むものである。そのようなものとして、この演算処理装置１２は、例外なく、中央演算処理装置（ＣＰＵ）、またはデジタル・シグナル・プロセッサ（ＤＳＰ）、またはこれを組み合わせた装置（ＤＳＰ／ＣＰＵ）を含むことができる。この演算処理装置は、マイクロプロセッサ、マイクロコントローラ、または同じもののグループを使用して、あるいは使用しなくとも、機能を提供することが可能である。
このソフトウェア１３は、コンピュータシステム１０の処理を実現するために、一般にはアプリケーションプログラム、コンパイラその他のソフトウェアツール、オペレーティングシステム、ファームウェア、及びその他のソフトウェア、同様にこれらの組み合わせを含むものであり、特別の場合は、ここで述べているプリフェッチ技術をも含むものである。例として、好ましいオペレーティングシステム、またはメモリ管理ソフトウェアは、キャッシュメモリ１６と上位階層メモリ１８との間に一貫性を提供する。その他の例では、好ましくはソフトウェア１３は上位階層メモリ１８に対して命令及びデータをロードさせる機能を提供する。
この上位階層メモリ１８は、全体として、キャッシュメモリ１６以外のコンピュータシステム１０のメモリ機構を含むものである。例えば、この上位階層メモリ１８は、メインメモリ、より永久的な記憶装置を含み、同様にキャッシュメモリ１６とメインメモリとの間に入れられたその他のキャッシング機構をも含むものである。この上位階層メモリ１８は、典型的には、演算処理装置の集積回路または筐体の中には存在しない。しかしながら、コンピュータシステム１０の技術要求によって、上位階層メモリ１８の一部分（ある場合は、全部）は演算処理装置１２と一緒に集積されることもある。いずれの場合でも、好ましくは上位階層メモリ１８を何らかの形態で設けるが、その階層は、キャッシュメモリ１６に比べて演算処理装置からより遠くに存在し、複製された情報をキャッシュメモリ１６内に格納するようなものである。
このキャッシュメモリ１６は、典型的には、演算処理装置の集積回路、またはその筐体内に位置するが、さもなければ、本発明の原理を外れることなく配置される。幾つかの場合（キャッシュメモリで構成されるコピーバックでキャッシュブロックが修正され易い場合）、このキャッシュメモリ１６は上位階層メモリ１８に格納される情報の複製を含むものである。１つまたは複数の階層のメモリが、キャッシュメモリ１６及び演算処理装置１２の間に配置されるものと認識すべきである。この点で、このキャッシュメモリ１６は、実際のシステム、装置、方法で使用されるようなラベルで表さないで、一般的に、本明細書では機能及び機構によって説明されるものである。
情報を読み込み、書き出しするために、この記憶システム１４は、処理用バス２０を介して演算処理装置１２に接続し、そしてキャッシュメモリ１６はメモリバス２２を介して上位階層メモリ１８に接続する。各々のバス２０、２２は、アドレスの幾つか、または全て、情報、及び接続された構成部品の制御信号の通信のために提供される。それにも拘わらず、図示された接続では、本発明の原理を外れることなく挿入された機構を含むその他の接続と認識される。
一般にこのコンピュータシステム１０は、周辺機器２４をも含むものである。１つまたはそれ以上の周辺機器が、本発明の原理から外れること無く、どのような組み合わせでも提供され、または省略されるが、周辺機器２４は典型的には、キーボード、ポインティング装置、プリンタ、その他のデータ獲得及びシグナル出力装置を含む様々なＩ／Ｏ装置を有するものである。
図２は、本発明による、集積されたプリフェッチ資源１５及びキャッシュメモリ１６の実施例を図示するものである。時々、本明細書でプリフェッチングキャッシュメモリ３８と呼ばれる、この実施例は、メモリ資源４０、セレクタ４２、プリフェッチメモリ４４、キャッシュ制御装置４６、マルチプレクサ４８を含むものである。キャッシュ制御装置４６は、演算処理装置１２及びメモリ資源４０に接続され、これらの機構からそれぞれ、ＯＰシグナル、ＭＲ＿ＳＴＡＴＵＳシグナルを受け取る。この中でも特に、このＯＰシグナルは、演算処理装置１２からプリフェッチングキャッシュメモリ３８に送られるその他の信号が（ｉ）プリフェッチ操作（例えば、メモリ資源４０に入れられる情報のプリフェッチ）、または（ii）キャッシュアクセス操作（メモリ資源４０に存在するかもしれない情報へのシーク）を含むその他の操作に、関連するか否かについて、キャッシュ制御装置４６に示すものである。このＭＲ＿ＳＴＡＴＵＳシグナルは、中でもとりわけ、メモリ資源４０内に特定の情報があるか否かを、及び、このメモリ資源４０はプリフェッチングに使用できるか否かを、キャッシュ制御装置４６に示すものである。ＯＰシグナル、ＭＲ＿ＳＴＡＴＵＳシグナルに応答して、このキャッシュ制御装置４６は、制御線４７を介して、セレクタ４２、プリフェッチメモリ４４、マルチプレクサ４８、及びメモリ資源４０の操作を制御する。このキャッシュ制御装置４６は、ＰＣＭ＿ＳＴＡＴＵＳシグナルをも生成し、このシグナルは演算処理装置１２に、例えばキャッシュアクセス及びプリフェッチ操作に関するプリフェッチングキャッシュメモリ３８の状態を示すために提供される。
このセレクタ４２は、受け取りのために演算制御装置１２に接続され、好ましくは、アドレスシグナル--PD_ADDをロックする。このセレクタ４２は、各々のプリフェッチメモリ４４及びメモリ資源４０（後者については、マルチプレクサ４８を介して）にも接続する。キャッシュアクセスに関連する特定のＰＤ＿ＡＤＤシグナルの場合、このセレクタ４２はＰＤ＿ＡＤＤシグナルをメモリ資源４０に送る（即ち、マルチプレクサ４８にＳＥＬＥＣＴ＿ＡＤＤシグナルとして）。プリフェッチ操作に関連するＰＤ＿ＡＤＤシグナルの場合、このセレクタ４２はＰＤ＿ＡＤＤシグナルをプリフェッチメモリ４４に、ＰＦ＿ＡＤＤシグナルとして送る。どちらの場合も、この送付はキャッシュ制御装置４６によって制御され、ＯＰシグナル、ＭＲ＿ＳＴＡＴＵＳシグナルに応答するものである。
プリフェッチ操作に対しても、このセレクタ４２は、好ましくはＰＤ＿ＡＤＤシグナルをプリフェッチメモリ４４に送り、ある状況の下、セレクタ４２はこのようなシグナルを、マルチプレクサ４８を介してメモリ資源に送付する機能を提供することも可能であると理解できる。例として、プリフェッチメモリ４４が空であり、ＰＤ＿ＡＤＤシグナルのプリフェッチ操作のサービスを即座に、メモリ資源４０が利用可能である場合に、メモリ資源４０への送付の機能を提供することも可能である。他の例では、メモリ資源４０へのこの送付はプリフェッチに関する情報が既にメモリ資源４０内に存在するか否かを検査するように機能を提供することも可能である。もしもヒットした場合、そこで、このキャッシュ制御装置４６はＭＲ＿ＳＴＡＴＵＳシグナルを介して制御され、キャッシュ制御装置４６の制御下、セレクタ４２はロックされたアドレスを廃棄する。もしも、ＭＲ＿ＳＴＡＴＵＳシグナルがミスを示す場合、前に説明したように、キャッシュ制御装置４６の制御下、セレクタ４２は、ＰＤ＿ＡＤＤシグナルをプリフェッチメモリ４４に送る。その他の例では、上記２例の操作は、両方とも機能を提供することができる。１つの機能提供では、このＰＤ＿ＡＤＤシグナルは、検査のためにメモリ資源４０に送られ、もしも、検査がミスを示す場合、プリフェッチが開始する。
ある状況下、メモリ資源４０への送付が機能提供されているとしても、このような送付は、好ましくはプリフェッチメモリ４４へのＰＤ＿ＡＤＤの送付の追加であると理解する必要がある。前に説明したように、例えば、シグナルに関する情報がメモリ資源４０に存在しない場合、最初にＰＤ＿ＡＤＤシグナルがメモリ資源４０に送られ、続いてプリフェッチメモリ４４に送られる。更に、このＰＤ＿ＡＤＤシグナルは、メモリ資源４０への送付とは関連しないタイミングで、例えば同時にあるいは先に、プリフェッチメモリ４４に送られる。このような全ての場合で、ＰＤ＿ＡＤＤシグナルは、直接そこにアクセスすることによりプリフェッチメモリ４４から廃棄可能な状態で提供されることが好ましく、このような廃棄はプリフェッチメモリのキューに穴を残さないか、さもなければプリフェッチメモリ４４のその他の内容物の邪魔にならないような機能を提供するのが好ましい。このような廃棄は、中でも、シグナルに関する情報がメモリ資源４０内に存在すること、及びまたは演算処理装置１２が特定のプリフェッチＰＤ＿ＡＤＤシグナルに関する操作の完了を進めることをメモリ資源４０が判断した場合であると考えられる。
このセレクタ４２は、好ましくは、ＰＤ＿ＡＤＤシグナルの送付を制御するキャッシュ制御装置４６と一緒に、非マルチプレクサとして提供される。しかしながら、このセレクタ４２は別の場合は特定の機能のために提供することも可能である。例として、このセレクタ４２は、上で説明したように、ＰＤ＿ＡＤＤシグナルをプリフェッチメモリ４４とマルチプレクサ４８とに同時に送付するための非マルチプレクサ以外の組み合わせ論理回路で機能を提供しても良い。
このプリフェッチメモリ４４はマルチプレクサ４８に接続される。このプリフェッチメモリ４４は、選択された機構に選択された深さでプリフェッチアドレスを格納する。好ましくは、このプリフェッチメモリ４４は、１６個のアドレスの深さまでの機能をサポートし、キュー構造を持つことを提供する。
このプリフェッチメモリ４４は、好ましくは、アドレスに関する情報が既にメモリ資源４０に存在するか否か（「イシュー・スクリーニング」）について入ってくるアドレスを検査する機能を提供する。ヒットした場合、このキャッシュ制御装置４６は、そこでＭＲ＿ＳＴＡＴＵＳシグナルを介して管理され、キャッシュ制御装置４６の制御下、このプリフェッチメモリ４４は、ロックされたアドレスを廃棄する。もしも、ＭＲ＿ＳＴＡＴＵＳシグナルがミスを示す場合、キャッシュ制御装置４６の制御下、このプリフェッチメモリ４４は、キューの最後のアドレスを格納する。（もしも、プリフェッチングキャッシュメモリ３８が、セレクタ４２からのＰＦ＿ＡＤＤを介してプリフェッチメモリのアドレスを受け取る前にイシュー・スクリーニングの機能を提供する場合、イシュー・スクリーニングはプリフェッチメモリにおいて実行されないほうが好ましい。）このプリフェッチメモリ４４は、好ましくは、キューの先頭の各アドレス（例えば、挿入の直前）に関して検査する機能と、アドレスに関する情報がメモリ資源４０内に存在するか否かを検査する機能を提供する。もしも、ヒットした場合、このキャッシュ制御装置４６は、そこでＭＲ＿ＳＴＡＴＵＳシグナルを介して管理され、キャッシュ制御装置４６の制御下、このプリフェッチメモリ４４はアドレスを廃棄する（挿入スクリーニング）。もしも、ミスした場合、またキャッシュ制御装置４６の制御下、関連する情報のプリフェッチのために、ＡＤＤ＿ＩＮＰＵＴシグナル内のアドレスをメモリ資源４０に送る。
１つの実施例では、このプリフェッチメモリ４４は、その内容物のオンゴーイング・スクリーニングの機能が提供されると考えられる。例としては、このプリフェッチメモリ４４は、好ましくは、プリフェッチメモリ４４内にプリフェッチアドレスが係属中に、メモリ資源４０に存在するようになったプリフェッチアドレス（内容物が置換方式によって更新されるように、キャッシュアクセス操作のため）を廃棄する機能を提供する。その他の例では、このプリフェッチメモリ４４は、好ましくは、プリフェッチメモリ４４からアドレスの挿入がされる前に、演算処理装置によって実行される操作に関連するプリフェッチアドレスの廃棄する機能を提供する（例えば、全部結合できるプリフェッチメモリ４４を使用するように、キャッシュアクセス操作のアドレスとプリフェッチメモリ４４に保持されるアドレスを比較する）。その他の実施例では、上で説明したオンゴーイング・スクリーニングの機能を提供せずに、このプリフェッチメモリ４４は、その内容物を保持するものと考えられている。この実施例では、時々、アドレスがプリフェッチメモリ４４に格納され、情報が一時的にメモリ資源に存在するとしても、プリフェッチ情報を提供する（例えば、この情報はキャッシュアクセス操作の部分としてフェッチされ、しかし、その後、リースト−リセントリィ−ユースト（least-recently-used）置換方式が作用する状態での置き換えのために除去される）。しかしながら、もしも、演算処理装置１２がプリフェッチに関する操作を終了させた場合、プリフェッチのアドレスは挿入されるよりもむしろ廃棄されたほうが好ましい。
オンゴーイング・スクリーニングと挿入スクリーニングは、どんな実施例でもすべて機能を提供できるが、本発明の原理から外れることなく、これらのスクリーニングのどれか１つまたは全て、またはこれの組み合わせは省略が可能である。
このプリフェッチメモリ４４は、好ましくは、メモリ４４が満杯の場合に受け取られる発行されたアドレスを廃棄する機能を提供する。この場合、廃棄は、好ましくは、PD_ADDシグナルを介して次のアドレスを受け取ることによって開始する。このような機能提供は、廃棄の前にプリフェッチメモリ４４のスペースを空けさせることとなり、アドレスは廃棄されるよりむしろメモリ４４に送られる。例えば、オンゴーイングスクリーニング操作の結果として、空きスペースが生じるかもしれない。
このマルチプレクサ４８は、各々ＳＥＬＥＣＴ＿ＡＤＤシグナル、PF＿ADDシグナルを受け取るために、セレクタ４２及びプリフェッチメモリ４４に接続される。キャッシュ制御装置４６の制御下、このマルチプレクサ４８は、ADD＿INPUTシグナルをメモリ資源４０に送付する場合、この２つの信号から選択する。このメモリ資源４０は、関連するアドレスのタグのように、中でも上位階層メモリから複製された情報を格納するために構成される。この情報は、好ましくはデータを含むものである。しかしながら、本発明の原理から外れることなく、この情報は命令及びデータ／命令を含んでも良いと理解すべきである。この情報は、それぞれ結合６０及び６２を介して、演算処理装置１２及び上位階層メモリ１８からメモリ資源４０内に受け取る。
図３に示すように、このメモリ資源４０は、好ましくはフェッチユニット５０、コピーバックユニット５２、タグ／データRAM５４及びコンパレータ５６を含むものである。このタグ／データRAM５４は、マルチプレクサ４８によって選択されたアドレス情報を含むADD_INPUTシグナルを受け取る（即ち、キャッシュアクセス操作用のSELECT＿ADDシグナルまたはキューされたプリフェッチ操作用のPF＿ADDシグナル）。ADD_INPUTシグナルに応答して、タグ／データRAM５４は、格納された情報に関連する１つまたは複数のタグを含むTAGシグナルを出力する。このTAGシグナルは、コンパレータ５６に提供される。このコンパレータ５６は、TAGシグナルとADD_INPUTシグナルを比較し、HITシグナルを生成し、HITシグナルはヒットかミスかを示す。このHITシグナルは、制御装置４６がその制御操作を実行できるように、中でもキャッシュ制御装置４６にMR＿STATUSシグナルの部分として応用される（例えば、プリフェッチ操作やキャッシュアクセス操作等を制御するように、ヒットしたか否かを演算処理装置１２に示すこと）。
このタグ／データRAM５４は、MR＿STATUSシグナル、TDR_STATUSシグナルの部分として、キャッシュ制御装置４６に提供する。このTDR_STATUSシグナルは、タグ／データRAM５４がプリフェッチ操作に使用可能か否かを含むＲＡＭ５４の状態を示す。プリフェッチアドレスは、TDR＿STATUSシグナルがRAM５４について使用不可能と示す場合、好ましくは、ADD_INPUTシグナルとしては挿入されない。
コピーバックユニット５２は、好ましくは、プリフェッチングキャッシュメモリ３８がコピーバック操作を機能提供する場合に提供されるものである。このコピーバックユニット５２は、上位階層メモリ１８の関連するブロックを更新するために修正されたキャッシュブロックをバッファに保留し、特にキャッシュミスが発生した場合にこのような修正されたキャッシュブロックはタグ／データRAM５４内で置き換えられる。このコピーバックユニット５２は、好ましくは１つまたは複数のバッファを含み、各バッファは１つのキャッシュブロックが入る大きさであり、接続６２を介して上位階層メモリと通信する。このコピーバックユニット５２は、好ましくはキャッシュ制御装置に接続する：制御線４７を介して制御シグナルを受け取り、CBU_STATUSシグナルを介してキャッシュ制御装置４６に状態シグナルを提供する（CBU＿STATUSシグナルはMR＿STATUS信号の部分を含む）。
このフェッチユニット５０は、タグ／データRAM５４に関してプリフェッチを実行するように、好ましくはタグ／データRAM５４及び上位階層メモリ１８の間に配置される。このフェッチユニット５０は接続６２を介して上位階層メモリと通信する。このフェッチユニット５０は、キャッシュ制御装置４６にも接続される：制御線４７を介して制御シグナルを受け取り、FU_STATUSシグナルを介して状態シグナルを提供する。このFU_STATUSシグナルは、MR＿STATUSシグナルの部分を含むものであり、ユニット５０がプリフェッチ操作を実行可能か否かを含むフェッチユニット５０の状態をキャッシュ制御装置４６に示す。FU_STATUSシグナルがフェッチユニット５０が利用不可能を示す場合、アドレスは、好ましくはADD_INPUTシグナルとして挿入されない。しかしながら、挿入が発生し、フェッチユニット５０が利用不可能な状況では、挿入されたアドレスは、好ましくは廃棄される。
１つのみのフェッチユニット５０が示されるが、このような複数のユニット５０が、好ましくは使用されると理解すべきである。複数のフェッチユニット５０では、１つのまたは複数のこのようなフェッチユニット５０が、好ましくはキャッシュミスした場合の取り扱いを含むキャッシュアクセス操作を実行するための専用となる。複数のフェッチユニット５０では、このような１つのまたは複数のユニット５０プリフェッチ操作をするために専用とされると理解すべきである。１つの実施例では、４つのフェッチユニット５０は、このようなユニット５０の２つはキャッシュアクセス操作の専用として、２つは必要に応じてキャッシュアクセス操作もプリフェッチ操作も取り扱えるように意図されている。
図４に示すように、プリフェッチングキャッシュメモリ３８の実施例は、シャドウ−タグRAM７０及びプリフェッチ命令のアドレスのスクリーニングに接続するコンパレータ７２を使用することが意図される。このシャドウ−タグRAM７０は、（ａ）そこに格納されるタグについての更新を受け取るために、タグ／データＲＡＭ５４に接続され（ｂ）また、タグ／データＲＡＭ５４に情報が存在するか否かを示す状態シグナル「STR＿STATUS」を提供するために、キャッシュ制御装置４６にも接続される。タイプとスクリーニングの供給源に基づく、このシャドウ−タグRAM７０は、スクリーニングされるアドレスを受け取るために接続され、このような受け取りはADDRESSシグナルの形態である。スクリーニングの発行では、この結合はPD_ADDシグナルを受け取るためである：（ｉ）直接、演算処理装置１２から、または（ii）セレクタ４２を介して、PF_ADD、ADD＿INPUT、あるいはSELECT＿ADDシグナルとして（iii）そこでアドレスがロックされた後に、プリフェッチメモリ４４からのシグナルを受け取るために、または（iv）これ以外。オンゴーイング・スクリーニングでは、この結合は、プリフェッチメモリ４４に存在するアドレスを受け取るためであり、好ましくは、直接そこから読むためである。挿入スクリーニングでは、タグ／データRAM５４及びコンパレータ５６の使用が有利な場合、この結合を省略することも可能である。しかしながら、もしも、プリフェッチされた情報が、タグ／データRAM５４の事前に選択され、制限された部分に格納される場合には、シャドウ−RAM５４の使用が望ましいこともあり、このような場合、スクリーニングをより効率的とすることも可能である（実際、このような構成では、小さいサイズのシャドウ−RAM７０とすることができ、キャッシュロッキング機構との関連性を改善できる）。
このシャドウ−タグRAM７０及びコンパレータ７２は、様々な形で提供することが可能である。１つの提供の形態は、シャドウ−タグRAM７０及びコンパレータ７２は、メモリ資源４０の部分からなり、コンパレータ７２から提供されるSTR＿STATUSシグナルは、MR_STATUSシグナルの部分からなる。しかしながら、RAM７０及びコンパレータ７２は、本発明の原理から外れること無く、これ以外の形態でも提供可能であると理解すべきである。
図５、６を参照すると、本発明による、プリフェッチングに関する発行及び挿入操作の実施例がそれぞれ示されている。図５に示すように、ステップ１００において、演算処理装置１２はプリフェッチ命令を発行し、ステップ１０２で、この命令のアドレスをスクリーニングして、アドレスと関連する情報がメモリ資源４０に存在するか否かを判断する。もしも、ヒットした場合、ステップ１０４で、このアドレスは廃棄される。このステップ１０４では、ヒットされた情報をメモリ資源４０内に強制的に保有させるのが好ましい。このような保有は、好ましくは、情報が演算処理装置１２によってアクセスされる時まで引き伸ばされる。もしも、ロックが可能であれば、幾つかのまたは全ての情報がロック可能とされることが望ましい。もしも、ロックが可能でないなら、当該情報に関しては置換動作が行なわれないように調整することが望ましい。例として、アクセスされたのが最も古い情報から置き換える方式では、プリフェッチ命令の情報に最も新しくアクセスされたことを表す印を付けるように方式を更新するのが望ましい。
もしも、ステップ１０２でミスになった場合、ステップ１０６で、資源が即座にプリフェッチすることが可能か否かを判断する。例えば、この判断をするためには、タグ／データＲＡＭ５４及びフェッチユニット５０の状態を観察するのが望ましい。タグ／データＲＡＭ５４のTDR＿STATUSシグナル及びフェッチユニット５０のFU_STATUSシグナルのそれぞれによって、このような状態が示される。もしも、これらのシグナルが、コンポーネントはそれぞれ使用可能であると示した場合、操作はステップ１０８に進行し、そこでプリフェッチメモリ４４が空か否かを判断する。もしも、メモリ４４が空であれば、現在のアドレスに関するプリフェッチが、ステップ１１０で開始する。しかしながら、前に説明しているが、本発明の原理を外れることなく、この発行プロセスはステップ１０６、１０８、１１０を省略することができる。
もしも、プリフェッチメモリ４４が空でないか、あるいはタグ／データＲＡＭ５４またはフェッチユニット５０が利用可能でない場合、そこでプリフェッチは開始しない。代わりに、操作はステップ１１２に進行し、そこでプリフェッチメモリ４４は満杯か否かを判断する。もしも、このメモリ４４が満杯の場合は、ステップ１１４でこのアドレスは廃棄される。もしも、メモリ４４が満杯でなければ、ステップ１１６でこのアドレスはプリフェッチメモリ４４に格納される。
ステップ１１８−１２２は、格納されたアドレスのオンゴーイング・スクリーニングを図示するものである。ステップ１１８では、格納されたアドレスが古くなっているか否かを判断する、即ち、アドレスに関する情報がタグ／データＲＡＭ５４に存在するようになったか否か、あるいは、演算処理装置１２がアドレスに関する処理を実行したか否かを判断する。もしも、このアドレスが古い場合、ステップ１２０では、このアドレスはプリフェッチメモリ４４から廃棄され、ステップ１２２では、プリフェッチメモリ４４において、この廃棄はプリフェッチメモリ４４に穴を残さないものと認識されている。その後、操作は、その他のアドレスについてのスクリーニングを続行するためにステップ１１８に返される。
もしも、アドレスが古くない場合、ステップ１１８は、その他の格納されたアドレスが古いか否かを判断するために繰り返され、最後には全てのアドレス等についての判断を繰り返す。図６は、プリフェッチメモリ４４からのアドレスの挿入に関連する操作を図示する。ステップ２００では、資源がプリフェッチに利用可能か否かを判断する。例えば、このような判断をするためには、タグ／データＲＡＭ５４及びフェッチユニット５０の状態を観察するのが望ましい。タグ／データＲＡＭ５４のTDR＿STATUSシグナル及びフェッチユニット５０のFU_STATUSシグナルのそれぞれによって、このような状態が示される。これらのシグナルが、コンポーネントはそれぞれ使用可能であると示すまで、操作はその他のステップに進行しない。しかしながら、両方のコンポーネントが使用可能になると、操作はステップ２０４に進行し、そこでプリフェッチメモリ４４が挿入用のアドレスを含んでいるか否かを判断する。
もしも、ステップ２０４でアドレスが見つからない場合、操作はステップ２００に返される。もしも、アドレスが見つかった場合、操作はステップ２０６に進行し、そこでアドレスに関連する情報がメモリ資源４０内に存在するか否かを判断する。もしも、ヒットした場合、操作はステップ２０８に進行し、そこでこのアドレスはプリフェッチメモリ４４から廃棄され、ステップ２１０では、このプリフェッチメモリ４４において、廃棄はメモリ４４に穴を残さないものと認識されている。もしも、ステップ２０６でミスした場合、操作は（ｉ）ステップ２１２に進行し、そこでこのアドレスはメモリ資源４０に挿入され、そして（ii）ステップ２１４に進行し、そこでこのメモリ資源４４は更新される。この更新は、アドレスに間連する情報のフェッチを含むものである（例えば、フェッチユニット５０の活動状態にさせること）。この更新は、典型的には、実施例に依存して、例えば置換方式の実行を含むその他のタスクをも含むものであり（例えば、キャッシュブロックについて、一番最近に使われたという方式でフェッチした情報の置き換え、設置するため）、もしも、コピーバック操作が機能提供されている場合、上位階層メモリ１８に修正されたキャッシュブロックを複製して戻すことになる。
もしも、ロックが機能提供されている場合、操作はステップ２１０及び２１４からステップ２１６に進行する。ステップ２１６は決定ブロックであり、プリフェッチされる情報の全てまたはその一部をロックする場合を含めて、種々の状態でのロックを決める。
どのような場合でも、操作はステップ２００に返される。
図５及び図６のこのステップは、本発明の原理から外れること無く示された以外の順番でも実行可能である。例として、図５、６のステップは同時に実行可能である。他の例では、図５、６のステップは組み合わせることが可能である：その他のアドレスが挿入可能なときに、もしもアドレスが同時に記憶装置に到着した場合、この記憶装置の操作は、挿入操作に優先して完了させることが望ましい。
本発明は好適実施例との間連で説明してきたが、上で概説した範囲内での変更は当業者には明白なものであると理解すべきであり、そして本発明は好適実施例に限定するものではなく、これらの変更も包含することを意図するものである。
【図１】
0004298800.tif 000002
【図２】
0004298800.tif 000003
【図３】
0004298800.tif 000004
【図４】
0004298800.tif 000005
【図５】
0004298800.tif 000006
【図６】
0004298800.tif 000007