(57)【要約】キャッシュライン（２００）に記録されたデータが有効であり、整数データであるとき、キャッシュメモリ（１１０，１１２）のキャッシュライン（２００）に浮動小数点データの上書きを行うことが禁止されるキャッシュメモリ（１１０，１１２）を制御するための方法及び装置が記載されている。
2005524905.tif 000002
【特許請求の範囲】
【請求項１】
キャッシュメモリを制御するための方法であって、
キャッシュメモリにデータを記録するためのアドレスと、キャッシュメモリからデータを読出すためのアドレスと、の少なくとも１つのアドレスを受信するステップを含み、前記アドレスは、タグビット及びインデックスビットを含むものであり、
前記アドレスの前記インデックスビットに対応する前記キャッシュメモリの一つのキャッシュラインにアクセスするステップを含み、各キャッシュラインは、アドレスタグ、データ有効フラグ、及びデータ形式フラグを含み、
前記データ有効フラグに基づいて、キャッシュラインの少なくとも一つのデータが有効であるか否かを判断するステップを含み、
前記データ形式フラグに基づいて、前記少なくとも一つのキャッシュラインにおいて何れの形式のデータが記録されたかを判断するステップを含み、
前記少なくとも一つのキャッシュラインのデータが有効であってかつ当該少なくとも一つのキャッシュラインに既に格納されているデータが整数データであるときに、この少なくとも一つのキャッシュラインへの浮動小数点データの上書きを禁止するステップを含む、方法。
【請求項２】
（i）前記データが有効であることを示すために前記少なくとも一つのキャッシュラインに前記有効フラグを設定するステップと、（ii）前記少なくとも一つのキャッシュラインにおいて浮動小数点データの上書きが禁止されているとき、前記少なくとも一つのキャッシュラインにおける前記データは整数形式であることを示すために前記少なくとも一つのキャッシュラインに前記データ形式フラグを設定するステップと、を含む、請求項１記載の方法。
【請求項３】
データ有効フラグ及び前記データ形式フラグのうちの少なくとも一つは、１ビットフラグである、請求項１記載の方法。
【請求項４】
前記データ有効フラグが少なくとも一つのキャッシュラインが有効データを含まないことを示すとき、前記少なくとも一つのキャッシュラインへの整数データの上書きを許可するステップと、
前記少なくとも一つのキャッシュラインに、前記整数データが有効であることを示すように前記有効フラグを設定するステップと、及び、
前記整数データが整数形式であることを示すように前記少なくとも一つのキャッシュラインに前記データ形式フラグを設定するステップと、を含む、請求項１記載の方法。
【請求項５】
前記データ有効フラグが前記少なくとも一つのキャッシュラインが有効データを含まないことを示すとき、前記少なくとも一つのキャッシュラインに浮動小数点データを上書きすることを許可するステップと、
前記少なくとも一つのキャッシュラインの前記有効フラグを前記浮動小数点データが有効であることを示すように設定するステップと、
前記少なくとも一つのキャッシュラインの前記データ形式フラグを、前記浮動小数点データが浮動小数点形式であることを示すように設定するステップと、を含む、請求項１記載の方法。  
【請求項６】
（i）前記データ有効フラグが、前記少なくとも一つのキャッシュラインが前記有効データを含むことを示し、（ii）前記データ形式フラグが、前記少なくとも一つのキャッシュラインの前記データが整数形式であることを示すときに、前記少なくとも一つのキャッシュラインに整数データを上書きすることを許可するステップを含む、請求項１記載の方法。
【請求項７】
前記少なくとも一つのキャッシュラインに対する前記有効フラグを、前記整数データが有効であることを示すように設定するステップと、前記少なくとも一つのキャッシュラインの前記データ形式フラグを、前記整数データが整数形式であることを示すように設定するステップと、の少なくとも１つのステップを含む、請求項６記載の方法。
【請求項８】
（i）前記データ有効フラグが、前記少なくとも一つのキャッシュラインが前記有効データを含むことを示し、（ii）前記データ形式フラグが、前記少なくとも一つのキャッシュラインの前記データが浮動小数点形式であることを示すとき、前記少なくとも一つのキャッシュラインに整数データを上書きすることを許可するステップを含む、請求項１記載の方法。
【請求項９】
前記整数データが有効であることを示すように前記少なくとも一つのキャッシュラインの前記データ形式フラグを設定するステップと、
前記整数データは整数形式であることを示すように前記少なくとも一つのキャッシュラインの前記データ形式フラグを設定するステップと、の少なくとも１を含む、請求項８記載の方法。
【請求項１０】
（i）前記データ有効フラグが、前記少なくとも一つのキャッシュラインが前記有効データを含むことを示し、（ii）前記データ形式フラグが、前記少なくとも一つのキャッシュラインの前記データが浮動小数点形式を示す場合に、前記少なくとも一つのキャッシュラインへの浮動小数点データの上書きを許可するステップを含む、請求項１記載の方法。
【請求項１１】
前記少なくとも一つのキャッシュラインの前記有効フラグを前記浮動小数点データは有効であることを示すように設定するステップと、
前記少なくとも一つのキャッシュラインの前記データ形式フラグを前記浮動小数点データは浮動小数点形式であることを示すように設定するステップと、
の少なくとも一方を含む、請求項１０記載の方法。
【請求項１２】
前記少なくとも一つのキャッシュラインへの前記浮動小数点データの上書きが禁止されているとき、前記浮動小数点データを読出／記録ユニット又は他のキャッシュメモリに転送するステップを含む、請求項１２記載の方法。
【請求項１３】
前記他のキャッシュメモリは一つのキャッシュラインのみを含む、請求項１２記載の方法。
【請求項１４】
前記アドレスの前記インデックスビットに応じた前記キャッシュメモリの全部のキャッシュラインにアクセスするステップと、
前記データ有効フラグに基づいて前記キャッシュラインの何れが有効であるかを判断するステップと、
前記対応するデータ有効フラグは、対応するデータ有効フラグが当該キャッシュラインに有効データが含まれないことを示すものであるというキャッシュラインのいずれにおいても、浮動小数点データ又は整数データの上書きを許可するステップと、を含む、請求項１記載の方法。
【請求項１５】
前記アドレスの前記インデックスビットに対応した前記キャッシュメモリの全てのキャッシュラインにアクセスするステップと、
前記データ有効フラグに基づいて前記キャッシュラインの何れが有効であるかを判断するステップと、
前記データ有効フラグの全てが前記キャッシュラインが有効データを含むことを示すときに前記キャッシュラインのいずれにおいても整数データを上書きすることを許可するステップと、を含む、請求項１記載の方法。
【請求項１６】
前記キャッシュラインの各々に記録された前記データがいずれの形式のデータであるかを、前記各データ形式フラグに基づいて判断するステップと、
前記データ有効フラグの全てが前記キャッシュラインが有効データを含むことを示す場合に、前記キャッシュラインに対応するデータ形式フラグが、当該キャッシュラインに記録されているデータの形式が浮動小数点データであることを示す場合に、当該キャッシュラインのいずれにおいても、浮動小数点データの上書きを行うことを許可するステップと、を含む、請求項１５記載の方法。
【請求項１７】
前記データ有効フラグの全部が前記キャッシュラインが有効データを含むことを示し、かつ前記データ形式フラグのすべてが前記キャッシュラインが整数データを含むことを示す場合に、前記キャッシュラインのいずれにも、浮動小数点データの上書きを行うことを禁止するステップを含む、請求項１６記載の方法。
【請求項１８】
前記キャッシュラインのいずれにも前記浮動小数点データの上書きを行うことが禁止されるとき、前記浮動小数点データを読出／記録ユニット又は他のキャッシュメモリに転送するステップを含む、請求項１７記載の方法。
【請求項１９】
前記他のキャッシュメモリは、一つのキャッシュラインのみを含む、請求項１８記載の方法。
【請求項２０】
キャッシュメモリの制御装置であって、
前記キャッシュメモリにデータを記録するためのアドレスと、前記キャッシュメモリからデータを読出すためのアドレスと、の少なくとも一方を受信するための一つを受信するよう動作可能なアドレスメモリを有し、前記アドレスは、タグビット及びインデックスビットを含むものであり、
メモリコントローラを有し、
前記メモリコントローラは、（i）前記キャッシュメモリの前記アドレスの前記インデックスビットに対応した１つ以上のキャッシュラインにアクセスするよう動作可能であり、各キャッシュラインはそれぞれがアドレスタグ、データ有効フラグ、及びデータタイプフラグを含むものであり、（ii）前記データ有効フラグに基づいて少なくとも１以上のキャッシュラインのデータが有効であるか否か判断するよう動作可能であり、（iii）前記データ形式フラグに基づいて少なくとも１以上のキャッシュラインに記録されたデータがどの形式であるかを判断するよう動作可能で、（iv）前記データが有効であってかつ前記少なくとも一つのキャッシュラインに記録された前記データが整数データであるとき、少なくとも一つのキャッシュラインに浮動小数点データの上書きを禁止するよう動作可能である、装置。
【請求項２１】
前記メモリコントローラは、更に、
（i）前記少なくとも一つのキャッシュラインに、当該キャッシュライン内のデータが有効であることを示すように前記有効フラグを設定するよう動作可能で、（ii）前記少なくとも一つ以上のキャッシュラインに浮動小数点データの上書きすることが禁止されているときに、前記少なくとも一つ以上のキャッシュラインに対して、当該一つ以上のキャッシュラインに含まれるデータが整数形式であることを示すように、当該一つ以上のキャッシュラインのデータ形式フラグを設定するよう動作可能である、請求項２０記載の装置。
【請求項２２】
前記データ有効フラグ及び前記データ形式フラグのうち少なくとも一つは１ビットフラグである、請求項２０記載の装置。
【請求項２３】
前記メモリコントローラは、（i）前記有効フラグが前記少なくとも一つのキャッシュラインに有効データが含れないことを示すときに、前記少なくとも一つのキャッシュラインに整数データを上書きすることを許可し、（ii）前記少なくとも一つのキャッシュラインに対して前記整数データが有効であることを示すための前記有効フラグを設定し、（iii）前記少なくとも一つのキャッシュラインに対して前記整数データが整数形式であることを示すための前記データ形式フラグを設定するよう動作可能である、請求項２０記載の装置。
【請求項２４】
前記メモリコントローラは、（i）前記データ有効フラグが前記少なくとも一つのキャッシュラインが有効データを含まないことを示すとき、前記少なくとも一つのキャッシュラインに浮動小数点データの上書きを行うことを許可し、（ii）前記少なくとも１以上のキャッシュラインに対して、前記浮動小数点データが有効であることを示すように前記有効フラグをセットし、（iii）前記少なくとも一つのキャッシュラインに対して、前記浮動小数点データが浮動小数点形式であることを示すように前記データ形式フラグを設定する、請求項２０記載の装置。
【請求項２５】
前記メモリコントローラは、（i）前記データ有効フラグが、前記少なくとも一つのキャッシュラインが有効データを含むことを示し、かつ、（ii）前記データ形式フラグが、前記少なくとも一つ以上のキャッシュラインのデータが整数データであることを示す場合に、前記メモリコントローラは、前記少なくとも一つのキャッシュラインに整数データを上書きすることを許可するよう動作可能である、請求項２０記載の装置。
【請求項２６】
前記メモリコントローラは、更に、（i）前記整数データが有効であることを示すように前記少なくとも一つのキャッシュラインの前記有効データを設定し、（ii）前記整数データが整数形式であることを示すように前記少なくとも一つのキャッシュラインの前記データ形式フラグを設定するか、の少なくとも１つの動作が可能である、請求項２５記載の装置。
【請求項２７】
前記メモリコントローラは、（i）前記データ有効フラグが、前記少なくとも一つのキャッシュラインが有効データを含むことを示し、かつ、（ii）前記データ形式フラグが、前記少なくとも一つの以上のキャッシュラインの前記データが浮動小数点形式であることを示すとき、前記少なくとも１以上のキャッシュラインへの整数データの上書きを許可するよう動作可能である、請求項２０記載の装置。
【請求項２８】
前記メモリコントローラは、（i）前記整数データが有効であることを示すように前記少なくとも一つのキャッシュラインの前記有効フラグを設定するか、又は、(ii)前記整数データは整数形式であることを示すように前記少なくとも一つのキャッシュラインの前記データ形式フラグを設定するか、の少なくとも一方の動作が可能である、請求項２７記載の装置。
【請求項２９】
前記メモリコントローラは、（i）前記データ有効フラグが前記少なくとも一つのキャッシュラインが有効データを含むことを示し、かつ、（ii）前記データ形式フラグが前記少なくとも一つのキャッシュラインの前記データが浮動小数点形式であることを示すときに、前記少なくとも一つ以上のキャッシュラインに浮動小数点データの上書きを行うことを許可するよう動作可能である、請求項２０記載の装置。
【請求項３０】
前記メモリコントローラは、（i）前記浮動小数点データが有効であることを示すように前記少なくとも１以上のキャッシュラインに前記有効フラグを設定するか、又は、（ii）前記浮動小数点データが浮動小数点形式であることを示すように前記少なくとも１以上のキャッシュラインの前記データ形式フラグを設定するか、の少なくとも一方の動作が実行可能である、請求項２９記載の装置。
【請求項３１】
前記メモリコントローラは、前記少なくとも１以上のキャッシュラインに前記浮動小数点データの上書きを行うことが禁止されているときに、前記浮動小数点データを読出／記録ユニット又は他のキャッシュメモリに転送するよう動作可能である、請求項２０記載の装置。
【請求項３２】
前記他のキャッシュメモリは、一つのキャッシュラインのみを含む、請求項３１記載の装置。
【請求項３３】
前記メモリコントローラは、（i）前記キャッシュメモリにおける前記アドレスの前記インデックスビットに対応した全てのキャッシュラインにアクセスし、（ii）前記データ有効フラグに基づいて何れのキャッシュラインが有効であるかを判断し、（iii）前記キャッシュラインのうち、対応するデータ有効フラグが、そのようなキャッシュラインに有効データが含まれないことを示すものには、いずれも浮動小数点データ又は整数データの上書きを行うことを許可するよう動作可能である、請求項２０記載の装置。
【請求項３４】
前記メモリコントローラは、（i）前記キャッシュメモリにおける前記アドレスの前記インデックスビットに対応した全てのキャッシュラインにアクセスし、（ii）前記データ有効フラグに基づいて何れのキャッシュラインが有効であるかを判断し、（iii）データ有効フラグのすべてが、前記キャッシュラインに有効データが含まれることを示すとき、前記キャッシュラインの何れに対しても整数データの上書きを許可するよう動作可能である、請求項２０記載の装置。
【請求項３５】
前記メモリコントローラは、（i）前記各データ形式フラグに基づいて各キャッシュラインに記録されたデータがどの形式であるかを判断し、（ii）データ有効フラグの全部が前記キャッシュラインに有効データが含まれることを示す場合に、キャッシュラインのうち、当該キャッシュラインに対応するデータ形式フラグが、当該キャッシュラインに記録されているデータが浮動小数点データであることを示すもののいずれに対しても浮動小数点データの上書きを許可するよう動作可能である、請求項３４記載の装置。
【請求項３６】
前記メモリコントローラは、前記データ有効フラグが前記キャッシュラインに有効データが含まれることを示し、かつ前記データ形式フラグの全てがキャッシュラインが整数データを含むことを示す場合に、前記キャッシュラインのいずれに対しても浮動小数点データの上書きを行うことを禁止するよう動作可能である、請求項３５記載の装置。
【請求項３７】
前記メモリコントローラは、キャッシュラインのいずれに対しても浮動小数点データの上書きが禁止されているとき、浮動小数点データを読出／記録ユニット又は他のキャッシュメモリに転送するよう動作可能である、請求項３６記載の装置。
【請求項３８】
前記他のキャッシュメモリは、一つのキャッシュラインのみを含む、請求項３７記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、キャッシュメモリを制御するための方法と装置に関し、より具体的には、浮動小数点データの記録をキャッシュメモリ内に保存する際に、記録装置が有効な整数データを上書きしようとし場合には、浮動小数点データの記録を禁止する制御技術に関するものである。  
【背景技術】
【０００２】
近年では、最先端コンピュータアプリケーションが益々複雑になり、マイクロプロセスシステムに対する需要が増大しているため、より高速のコンピュータ処理データスループットへの要請が絶え間なく続いている。従来の（マイクロプロセッサ及び関連付けられたメモリを使用する）マイクロプロセッシングシステムは、非常に高速となり、そのサイクル時間（即ち、マイクロプロセッサがデータ操作が可能である時間ユニット）が、例えば１ナノ秒となっている。しかし、メインメモリに記録されたデータアクセスに要する時間は、マイクロプロセッサのサイクル時間よりかなり長くなる場合がある。例えば、（ダイナミックランダムアクセスメモリ（ＤＲＡＭ）技術を使用して実装された）メインメモリから１バイトのデータを得るために必要なアクセス時間は、約６０ナノ秒である。
【０００３】
ＤＲＡＭメモリへのアクセス時間がかなり長いことに起因する問題を改善するため、従来キャッシュメモリが用いられている。キャッシュメモリは、システムのスループットが改善されるよう、メインメモリを補強している。メインメモリが頻繁に比較的安価であるが低速のＤＲＡＭメモリを使用して実装される一方、前述のキャッシュメモリは、一般的に比較的高コストで高速のスタティックランダムアクセスメモリ（ＳＲＡＭ）技術を用いて実装される。キャッシュメモリは、高コスト技術を駆使して実装されることから、そのサイズは、メインメモリよりもかなり小さくなっている。
【０００４】
キャッシュメモリは、マイクロプロセッサと共に“オンチップ”に配置してもよく、この場合はレベル１（Ｌ１）キャッシュメモリと呼ばれる。又は、キャッシュメモリは、マイクロプロセッサとは別に配置されるか、又はオフチップとしてもよく、この場合、レベル２（Ｌ２）キャッシュメモリと呼ばれる。Ｌ１，Ｌ２キャッシュメモリを組み合わせたシステムもまた知られており、このシステムでは、オンチップキャッシュメモリ及びオフチップキャッシュメモリの両方が使用される。
【０００５】
キャッシュメモリが比較的小さいサイズであるため、種々のマイクロプロセスシステム操作の間、どんなデータがキャッシュメモリ内に記録されるべきかを判断するアルゴリズムが従来から使用されている。これら従来のアルゴリズムは、例えば、“参照の局所性（locality of reference）”のような理論的コンセプトに基づくものである。この参照の局所性においては、どの時点においても、実行可能プログラムのかなり小さな一部のみがマイクロプロセッサによって使用される、という事実の利点を有するものである。それ故、参照の局所性という概念に従って、どの時点においても、実行可能プログラムのごく一部のみがキャッシュメモリ内に記録される。キャッシュメモリにおける（実行可能のプログラムによって使用されてよい）データの記録と検索を制御するために、これら又は他のアルゴリズムを使用することができる。
【０００６】
キャッシュメモリにおける実行可能のプログラム及び／又はデータの記録を制御するためのレファレンスの場所、又は他の概念の有利性を利用するために知られたアルゴリズムのこれらの特性は、本明細書において提示するには数が多過ぎる。しかし、アプリケーションごとにデータ処理の目的が相違することから、いずれのアルゴリズムにおいても、アプリケーションのすべてに対して適切なものとはなりえないことを指摘すれば十分であろう。
【０００７】
場合によっては、整数データ及び浮動小数点データを処理するために、キャッシュメモリを使用するマイクロシステムが必要となり得る。そのような浮動小数点データを使用するアプリケーションでは、Ｌ１キャッシュメモリのサイズ能力よりかなり大きく、アドレスの局所性がかなり小さい、かなり大きな浮動小数点データ配列を求められることもあり得る。そのような大きな配列の浮動小数点データを読み込むするステップ、特に、アドレスポインタ及びそれに類するもののような整数データを含むとき、Ｌ１キャッシュメモリが不正な状態となるおそれがある。Ｌ１キャッシュメモリにおける整数データのコラプション（colluption）を回避するために設計された従来の方法及び装置は、浮動小数点データをロードするときにＬ１キャッシュメモリにアクセスするのではなく、Ｌ２キャッシュメモリ（メインメモリ）に直接アクセスするようになっている。この制御形式に関する更なる詳細は、その全体が参照として本願に包含される米国出願番号５,５１０,９３４に記載されている。
【０００８】
残念なことに、これら従来の制御技術によりＬ１キャッシュメモリへのアクセスを減少させることで、マイクロプロセスシステムに関して全体的にスループットが低くなるという結果をもたらされる。実際、高速なＬ１キャッシュメモリの使用の最適化はなされておらず、事実、浮動小数点データの読み出しには、Ｌ１キャッシュは使用されず、比較的遅い速度のＬ２キャッシュメモリが用いられている。
【０００９】
従って、この技術分野において、メモリ効率を改善し、スループット処理量を増大し、システムによって実行された全体的なデータ処理の質を改善するためにＬ１キャッシュメモリ、Ｌ２キャッシュメモリ、及び／又はそれらの組み合わせを含むキャッシュメモリを制御するための新たな方法及び装置が求められている。
【発明の開示】
【００１０】
浮動小数点データのメモリアクセス要求がキャッシュメモリにアクセスすることによっては満たされないとき、すなわち、キャッシュミスが起きたとき、浮動小数点データがメインメモリから入手され、キャッシュメモリに記録されるシーケンスにデータの補充を行うことが望ましい。Ｌ１キャッシュメモリが使用され、浮動小数点データのメモリアクセス要請が行われたとき、まず最初にこの要請を満たすためにＬ１キャッシュメモリにアクセスすることが望ましく、それが満たされない場合、Ｌ１キャッシュメモリを補充するためにＬ２キャッシュメモリ又はメインメモリにアクセスすることが望ましい。どんな場合でも、マイクロプロセスシステムは、整数データ、浮動小数点データのいずれで動作していても、有効な整数データをＬ１キャッシュメモリにおける浮動小数点データで上書きすることを回避することが望ましい。
【００１１】
この目的を満たすために、本発明の１以上の実施形態に従うと、キャッシュメモリを制御するための方法には、キャッシュメモリ内にデータを記録するためのアドレスと、キャッシュメモリからデータを読出すためのアドレスと、の少なくとも一方を受信するステップを有し、このアドレスは、タグビット及びインデックスビットを含むものであり、前記アドレスの前記インデックスビットに対応する前記キャッシュメモリの一つのキャッシュラインにアクセスするステップを含み、各キャッシュラインは、アドレスタグ、データ有効フラグ、及びデータ形式フラグを含み、前記データ有効フラグに基づいて、キャッシュラインの少なくとも一つのデータが有効であるか否かを判断するステップを含み、前記データ形式フラグに基づいて、前記少なくとも一つのキャッシュラインにおいて何れの形式のデータが記録されたかを判断するステップを含み、前記少なくとも一つのキャッシュラインのデータが有効であってかつ当該少なくとも一つのキャッシュラインに既に格納されているデータが整数データであるときに、この少なくとも一つのキャッシュラインへの浮動小数点データの上書きを禁止するステップが含まれる。
【００１２】
好適には、本方法は、（i）前記データが有効であることを示すために前記少なくとも一つのキャッシュラインに前記有効フラグを設定するステップと、（ii）前記少なくとも一つのキャッシュラインにおいて浮動小数点データの上書きが禁止されているとき、前記少なくとも一つのキャッシュラインにおける前記データは整数形式であることを示すために前記少なくとも一つのキャッシュラインに前記データ形式フラグを設定するステップと、を含む。
【００１３】
データ有効フラグ及び／データ形式フラグは、１ビットフラグでよいことに注目される。
【００１４】
好適に、本方法は、前記データ有効フラグが少なくとも一つのキャッシュラインが有効データを含まないことを示すとき、前記少なくとも一つのキャッシュラインへの整数データの上書きを許可するステップと、前記少なくとも一つのキャッシュラインに、前記整数データが有効であることを示すように前記有効フラグを設定するステップと、及び、前記整数データが整数形式であることを示すように前記少なくとも一つのキャッシュラインに前記データ形式フラグを設定するステップと、を含む。
【００１５】
他の形態、又は更なる形態として、本方法は、前記データ有効フラグが前記少なくとも一つのキャッシュラインが有効データを含まないことを示すとき、前記少なくとも一つのキャッシュラインに浮動小数点データを上書きすることを許可するステップと、前記少なくとも一つのキャッシュラインの前記有効フラグを前記浮動小数点データが有効であることを示すように設定するステップと、前記少なくとも一つのキャッシュラインの前記データ形式フラグを、前記浮動小数点データが浮動小数点形式であることを示すように設定するステップと、を含んでよい。
【００１６】
他の形態として、又は更なる形態として、本方法は、好適に、（i）前記データ有効フラグが、前記少なくとも一つのキャッシュラインが前記有効データを含むことを示し、（ii）前記データ形式フラグが、前記少なくとも一つのキャッシュラインの前記データが整数形式であることを示すときに、前記少なくとも一つのキャッシュラインに整数データを上書きすることを許可するステップを含む。この場合、本方法は、更に、前記少なくとも一つのキャッシュラインに対する前記有効フラグを、前記整数データが有効であることを示すように設定するステップと、前記少なくとも一つのキャッシュラインの前記データ形式フラグを、前記整数データが整数形式であることを示すように設定するステップと、のを含む。
【００１７】
他の形態として、又は更なる形態として、本方法は、好適に、(i）前記データ有効フラグが、前記少なくとも一つのキャッシュラインが前記有効データを含むことを示し、（ii）前記データ形式フラグが、前記少なくとも一つのキャッシュラインの前記データが浮動小数点形式であることを示すとき、前記少なくとも一つのキャッシュラインに整数データを上書きすることを許可するステップを含む。この場合、本方法は、更に、前記整数データが有効であることを示すように前記少なくとも一つのキャッシュラインの前記データ形式フラグを設定するステップと、前記整数データは整数形式であることを示すように前記少なくとも一つのキャッシュラインの前記データ形式フラグを設定するステップとを含む。
【００１８】
他の形態として、又は更なる形態として、本方法は、好適に、（i）前記データ有効フラグが、前記少なくとも一つのキャッシュラインが前記有効データを含むことを示し、（ii）前記データ形式フラグが、前記少なくとも一つのキャッシュラインの前記データが浮動小数点形式を示す場合に、前記少なくとも一つのキャッシュラインへの浮動小数点データの上書きを許可するステップを含む。この場合、本方法は、好適に、前記少なくとも一つのキャッシュラインの前記有効フラグを前記浮動小数点データは有効であることを示すように設定するステップと、前記少なくとも一つのキャッシュラインの前記データ形式フラグを前記浮動小数点データは浮動小数点形式であることを示すように設定するステップと、を含む。
【００１９】
キャッシュメモリは、多くのキャッシュラインが１データの単なる１メモリアクセス要請によって発動されるN-way連想技術を使用して実装される。１以上の更なる本発明の実施形態に従って、本方法は、好適に、前記アドレスの前記インデックスビットに応じた前記キャッシュメモリの全部のキャッシュラインにアクセスするステップと、前記データ有効フラグに基づいて前記キャッシュラインの何れが有効であるかを判断するステップと、前記対応するデータ有効フラグは、対応するデータ有効フラグが当該キャッシュラインに有効データが含まれないことを示すものであるというキャッシュラインのいずれにおいても、浮動小数点データ又は整数データの上書きを許可するステップと、を含む。
【００２０】
他の形態として、又は更なる形態として、本方法は、好適に、前記アドレスの前記インデックスビットに対応した前記キャッシュメモリの全てのキャッシュラインにアクセスするステップと、前記データ有効フラグに基づいて前記キャッシュラインの何れが有効であるかを判断するステップと、 前記データ有効フラグの全てが前記キャッシュラインが有効データを含むことを示すときに前記キャッシュラインのいずれにおいても整数データを上書きすることを許可するステップと、を含む。
【００２１】
本発明は、好適に更に、前記キャッシュラインの各々に記録された前記データがいずれの形式のデータであるかを、前記各データ形式フラグに基づいて判断するステップと、前記データ有効フラグの全てが前記キャッシュラインが有効データを含むことを示す場合に、前記キャッシュラインに対応するデータ形式フラグが、当該キャッシュラインに記録されているデータの形式が浮動小数点データであることを示す場合に、当該キャッシュラインのいずれにおいても、浮動小数点データの上書きを行うことを許可するステップと、を含む。
【００２２】
更なる形態として、本発明は、好適に、前記データ有効フラグの全部が前記キャッシュラインが有効データを含むことを示し、かつ前記データ形式フラグのすべてが前記キャッシュラインが整数データを含むことを示す場合に、前記キャッシュラインのいずれにも、浮動小数点データの上書きを行うことを禁止するステップを含む。
【００２３】
前記キャッシュラインのいずれにも前記浮動小数点データの上書きを行うことが禁止されるとき、前記浮動小数点データを読出／記録ユニット又は他のキャッシュメモリに転送するステップを含む。他のキャッシュメモリは、１キャッシュメモリのみを含んでよい。
【００２４】
本発明の１以上の実施形態に従って、上述の及び／又は本明細書に後で記載されるキャッシュメモリを制御するための本方法は、以下に図面が示されるように適切なハードウェアを使用して実現されてよい。そのようなハードウェアは、標準デジタル回路、アナログ回路、ソフトウェア及び／又はファームウェアプログラムを実行するためにプログラム可能リードオンリーメモリ（ＰＲＯＭＳ）、プログラム可能な配列論理デバイス（ＰＡＬＳ）、上述したもののどんな組み合わせ等のようなプログラム可能である１以上のデジタルデバイス又はデジタルシステムのような周知のプロセッサのような周知技術を使用して実装されてよい。
【発明を実施するための最良の形態】
【００２５】
以下、本発明を説明する目的で、好適である態様を図面という形で示したが、本発明は、図示された厳密な配置及び手段に制限されるものではないことが理解されよう。
図１に本発明の１以上の実施形態を表すブロック概略図を示す。なお、図面において、同じ構成要素には同じ符号を付した。簡明をきたすため、図１のブロック概略図を、装置１００を参照して示すが、この説明は、１つ以上の方法における種々の実現形態に対しても同様に適用可能であることが理解されよう。装置１００は、好適にマイクロプロセッサを表し、命令送信ユニット１０２、記録読出ユニット１０４、整数ユニット１０６、浮動小数点ユニット１０８，キャッシュメモリ１１０，及び（Ｌ２キャッシュ又はメインメモリのような）更なるメモリ１１２を好適に含む。これらの構成部分は、別々に実装されて図示するようにパーティションで区切られるか、又は本発明の精神と範囲を逸脱することなしに種々の組み合わせに統合されるか、又はパーティションで区切られる。好適に、図１に示された構成要素は、マイクロプロセッサアーキテクチャ部分を形成し、ここで種々の動作／機能を実行する。
【００２６】
命令送信ユニット１０２は、好適には、マイクロプロセッサ１００内で実行されるよう命令を送る。この命令は、浮動小数点データ操作、整数データ操作、及び／又はこれらの組み合わせを要求するものでもよい。従って、この命令は、各ユニットが整数操作又は浮動小数点操作を実行可能であるように、整数ユニット１０６及び／又は浮動小数点ユニット１０８に好適に与えられる。整数データ及び浮動小数点データは、それぞれ、整数ユニット１０６及び浮動小数点ユニット１０８によって操作されるものであり、キャッシュメモリ１１０，更なるメモリ１１２のいずれか又は両方に記録される。
【００２７】
記録読出ユニット１０４は、好適に命令送信ユニット１０２から受信された命令に従った整数ユニット１０６と浮動小数点ユニット１０８に関する読出及び／又は記録操作を実行する。例えば、この命令が、浮動小数点操作を実行せねばならないことを示す場合、記録読出ユニット１０４は、キャッシュメモリ１１０を介して、浮動小数点ユニット１０８に、又は浮動小数点ユニット１０８から、浮動小数点データを好適に読出及び／又は記録する。なお、アドレスは、整数ユニット１０６の整数データを使用して用意されることになる。一方、この命令が、整数操作が実行されなければならないことを示す場合、記録読出ユニット１０４は、キャッシュメモリ１１０を介して整数ユニット１０６から整数データを好適にロードし、又は整数ユニット１０６に記録する。
【００２８】
より具体的には、記録読出ユニット１０４において、整数データ及び／又は浮動小数点データの入手することが要求された場合、好適には、記録読出ユニット１０４はキャッシュメモリ１１０にアクセスし、もしキャッシュがヒットした場合、データがキャッシュメモリ１１０から読出され、それぞれ整数ユニット１０６及び／又は浮動小数点ユニット１０８に送られる。一方、キャッシュミスが発生した場合、キャッシュメモリ１１０は、上述したL２キャッシュ又はメインメモリである、更なるメモリ１１２に好適にアクセスする。キャッシュミスの場合、更なるメモリ１１２から入手されたデータは、キャッシュメモリ１１０内に補充される。整数ユニット１０６及び／又は浮動小数点ユニット１０８内に実行された後に、データ操作は、記録操作が要求され得る。この記録操作では、これらの操作から得られたデータをキャッシュメモリ１１０に記録する。データの補充及びデータ記録プロセスに関する特性を以下に記載する。
【００２９】
図２を参照すると、本発明の更なる態様を示すブロック概略図が表される。より具体的には、キャッシュメモリ１１０及びその制御に関する更なる詳細が用意されている。本発明に従ったキャッシュメモリ１１０を完全連想マッピング及び／又はセット連想マッピングを使用して実装してもよい。簡明のために、図２は、キャッシュライン２００のシングルセットを表す。このシングルセットは、直接マップされた実装の一部又は、セットサイズがＮである、Ｎ-wayセット連想実装の一つの手法である。キャッシュライン２００のシングルセット、それに関連したアドレス指定、データ、回路等に関する記述に関しては、これらは、参照された範囲で、そのような記載は、本発明の精神と範囲を逸脱することなしに、Ｎ-wayセット連想の実装に容易に適用されるように理解されたい。
【００３０】
図２に示された詳細を参照すると、キャッシュメモリ１１０は、好適に複数キャッシュメモリ２００と、メモリコントローラ２０２と、アドレス指定機能又はアドレス指定性能２０４、データセレクタ２０６、比較機能２０８を含む。データは、メモリコントローラ２０２によって実行されたアルゴリズムに従ったデータセレクタ２０６を介してキャッシュライン２００からロードされるか、又はキャッシュライン２００に記録される。キャッシュライン２００は、記録読出ユニット１０４から受信し、アドレス指定機能２０４に従って処理されたアドレス情報に従ってアクセスされる。特定的に、アドレス情報は、好適にタグビット、インデックスビット、オフセットビットを含む。タグビットは、要請されたデータを識別し（又はネーミングし）、特定のキャッシュライン２００内に記録された識別子と比較するために使用される。インデックスビットは、ポインタをセットにおいて特定的なキャッシュライン２００に用意し、オフセットビットは、キャッシュライン２００のデータ記録装置部分においてスタート場所を識別する。
【００３１】
各キャッシュライン２００は、好適にアドレスタグ２１０と、ステイタスフラグと、データ２１４を含む。アドレスタグ２１０は、各キャッシュライン２００にて記録されたデータをネーミング又は識別するために使用される。ステイタスフラグ２１２は、データ有効フラグ２１２Ａとデータ形式フラグ２１２Ｂを含んでよい。データ有効フラグ２１２Ａは、好適にキャッシュライン２００内に記録されたデータが有効であるか否かに関する情報を用意する。データ有効フラグ２１２Ａは、論理がハイ[high：“１”、“真正（true）”、“セット（set）”等である]である場合にデータは有効であることを示し、ロー[low：“０”、“不正（false）”、“セットされていない（not set）”等である]である場合は、データが無効である（またはハイ、ローの内容を逆にしてもよい）ことを示す単１ビット情報ですることができる。データ形式フラグ２１２Ｂは、好適にキャッシュライン２００の記録されたデータが整数データか、又は浮動小数点データを示す情報を含む。データ形式フラグ２１２Ｂは、論理ハイがデータは浮動小数点データであることを示し、論理ローは整数データ（逆も同様）であることを示す単なる１ビット情報であってよい。ステイタスフラグ２１２は、キャッシュライン２００に記録されたデータは“不正”である（即ち、データが改ざんされていたり、メインメモリが更新されていなかった等）、というような、その他の情報を含む。
【００３２】
図２と図３を参照して、キャッシュメモリ１１０の制御に関する本発明のある種の態様の記載がなされる。動作３００において、キャッシュメモリ１１０は、記録読出ユニット１０４から有効アドレスのような、アドレスを受信する。上述したように、アドレスは、タグビット、インデックスビット、オフセットビットを含む。インデックスビットは、（動作３００）における特定的なキャッシュライン２００を指し示し、このキャッシュラインには、アドレスタグ２１０、ステイタスフラグ２１２，データ２１４セットを含む。動作３０４において、メモリコントローラ２０２は、データ有効フラグ２１２Ａをキャッシュライン２００に記録されたデータが有効であるか否かを判断するために解析する。データが有効でない場合、処理フローは、好適に（本明細書で後に記載される）動作３１２に分岐する。データが有効である場合、処理フローは、動作３０６に分岐する。
【００３３】
動作３０６において、（メモリコントローラ２０２と統合しているか、又は分離している）比較機能２０８は、記録読出ユニット１０４から受信したアドレス内に含まれたタグビットと、キャッシュライン２００のアドレスタグ２１０と、を比較する。要求されたアドレスのタグビットがキャッシュライン２００のアドレスタグ２１０と照合しない場合、処理フローは、好適に（後に本明細書に記載される）動作３１２に分岐する。一方、要求されたアドレスのタグビットがキャッシュライン２００のアドレスタグ２１０と照合する場合、処理フローは好適に動作３０８に分岐する。
【００３４】
動作３０８において、記録読出ユニット１０４はロード命令又は記録命令を実行するか否かに関する問い合わせが実行される。記録読出ユニット１０４がロード命令を実行している場合（即ち、データが、整数ユニット１０６又は浮動小数点ユニット１０８に配信するためにキャッシュメモリ１１２から入手されている場合）、キャッシュがヒットしており、処理フローは動作３１０に進み、データがデータセレクタ２０６を介してキャッシュライン２００から記録読出ユニット１０４にロードされる。もし、動作３０８において、記録読出ユニット１０４が記録命令を提供している場合、キャッシュがヒットしていることは同様であるが、この場合の処理フローは、以下に記載される動作３１２に好適に進む。
【００３５】
処理フローが動作３０４又は動作３０６から動作３１２に分岐し、記録読出ユニット１０４がロード命令を実行しているとき、データ補充が行われれなくてはならないことに注目される（つまり、記録読出ユニット１０４によって要請されたデータは、キャッシュメモリ１１０に含まれていないからである）。処理フローが動作３０８から動作３１２に進むとき、記録読出ユニット１０４は記録命令を実行し、データがキャッシュメモリ１１０内に書き込まれる。例えば、整数ユニット１０６又は浮動小数点ユニット１０８によって実行された操作の結果として、この書込みが行われる。このような補充操作又は記録操作が実行された否かに係わらず、この処理ステップにおいて、メモリコントローラ２０２は、データ有効フラグ２１２Ａと、キャッシュライン２００に記録されるデータ形式フラグ２１２Ｂと、及び／又はデータ形式（即ち、整数であるか浮動小数点であるか）に基づいて、キャッシュライン２００へのデータの上書きが許可されたか、又は禁止されたかを好適に判断する。
【００３６】
説明目的のために、キャッシュライン２００へのデータの上書きを制御するための基礎アルゴリズムが、表１に表される。表１のアルゴリズムは、異なる処理フロー概略図の数ごとに無数に示し得るものである。簡明性の見地から、これら全部の形態のフロー概略図を表すことはできないので、そのような処理フロー概略図の１例のみを図３に示す。
【表１】
2005524905.tif 000003
【００３７】
図２と図３と表１を参照すると、動作３１２において、メモリコントローラ２０２は、好適にキャッシュライン２００に記録されたデータ形式に関して判断を行う。一例として、記録されなければならないデータ形式に関する情報は、記録読出ユニット１０４から入手され得る。何故なら、（図１に示す）記録読出ユニット１０４によって受信された命令が好適にそのような情報を含むからである。キャッシュライン２００に記録されなければならないデータが浮動小数点データであるとき、処理フローは、好適に（以下に記載される）動作３１６に進む。キャッシュライン２００に記録されなければならないデータが浮動小数点データではない（即ち、データが整数データである）とき、処理フローは、好適にキャッシュライン２００の何れのデータも整数データで上書きされる動作３１４に進む。このことは、表１の１行目、３行目、５行目に対応する。特に、表１の１行目、３行目、５行目は、データがデータ有効フラグ２１２Ａの状態とデータ形式フラグ２１２Ｂに係わらず、キャッシュライン２００に記録されたデータの形式が整数データである限り、上書きは許可されなければならないことを示す。図３の動作３１４をもう一度参照すると、キャッシュライン２００が整数デーで上書きされると、データ有効フラグ２１２Ａは例えば、有効データを示すために論理ハイ（「真」状態）に好適に設定され、データ形式フラグ２１２Ｂの状態は例えば、整数データを示すために論理ロー（「偽」状態）に好適に設定される。
【００３８】
キャッシュライン２００に記録されなければならないデータが浮動小数点データであると判断された（動作３１２に肯定的であった）場合、処理は、動作３１６に進み、データ形式フラグ２１２Ｂがキャッシュライン２００に予め記録されたデータ（例えば、キャッシュライン２００にカレントに記録されたデータ）が浮動小数点データであることを示すか否かに関して好適に判断が行われる。この問い合わせが否定的である場合、処理は好適に（後に記載される）動作３２０に進む。この判断が肯定的である場合、処理は操作３１８に進み、好適にキャッシュライン２００におけるデータの上書きが許可される。このことは、表１の２行目に対応する。表１の６行目では、データ有効フラグ２１２Ａが、（決定的ではないが）キャッシュライン２００にカレントに記録されたデータは有効であることを示し、データ有効フラグ２１２Ｂがキャッシュライン２００にカレントに記録されたデータ形式は浮動小数点であり、且つ、キャッシュライン２００に記録されなければならないデータ形式も浮動小数点データであることを示すものである。これは又、データ有効フラグ２１２Ａが、キャッシュライン２００にカレントに記録されたデータは（決定的ではないが）有効でないことを示し、データ形式フラグ２１２Ｂが、キャッシュライン２００にカレントに記録されたデータは浮動小数点であり、且つ、キャッシュライン２００に記録されなければならないデータ形式は浮動小数点データであることを示す。
【００３９】
動作３１６において、データ形式フラグ２１２Ｂが、キャッシュライン２００にカレントに記録されたデータは整数データであることを示すと判断された場合、処理は、動作３２０に進み、好適にキャッシュライン２００に記録された整数データは有効であるか否かを判断する（この有効性判断は既になされたものでありって動作３０４からその情報を持ち越してもよく、あるいは、新たに判断するようにしても良い）。そのような整数データが有効ではない場合、例えば、データ有効フラグ２１２Ａが論理ロー（「偽」状態）である場合、処理フローは、好適にキャッシュライン２００に上述した浮動小数点データを上書きすることが許可される、動作３１８に進む。これは、データ有効フラグ２１２Ａがキャッシュライン２００にカレントに記録されたデータは有効でないことを示し、且つ、データ形式フラグ２１２Ｂがそのようなデータは整数データであることを示す、表１の２行目に対応している。図３をもう一度参照すると、メモリコントローラ２０２は、好適にキャッシュライン２００のデータに有効フラグ２１２Ａ、例えば「真」状態を示す論理ハイを、設定する。更に、メモリコントローラ２０２は、データ形式フラグ２１２Ｂを、浮動小数点データを示すように、例えば、真正状態の論理ハイに、好適に設定する。
【００４０】
動作３２０における問い合わせが肯定的である場合、つまりキャッシュライン２００にカレントに記録された整数データが有効であるとき、処理フローは好適にキャッシュライン２００に浮動小数点データの上書きすることを禁止する動作３２２に進む。これは、データ有効フラグ２１２Ａがキャッシュライン２００にカレントに記録されたデータは有効であることを示し、且つキャッシュライン２００に記録されなければならないデータは浮動小数点データであることを示す、表１の４行目に対応している。メモリコントローラ２０２は、キャッシュメモリ１１０における有効整数データに浮動小数点データが上書きされることを禁止するという、好適な動作を行う。
【００４１】
そのような浮動小数点データがキャッシュライン２００の有効整数データ上に上書きすることが禁止された場合、そうしたデータは、好適には記録読出ユニット１０４に転送されるか、又は他のキャッシュメモリに記録される（動作３２４）。
【００４２】
図４を参照すると、本発明の更なる実施形態を表すブロック概略図が示される。特に、図４は、代替キャッシュメモリ１１０Ａを表し、これは、浮動小数点データを代替キャッシュメモリ４００に転送可能であるという点を除いて、図２に示すキャッシュメモリ１１０と実質的に同様である。代替キャッシュメモリ４００は、キャッシュメモリ１１０Ａと統合されているか、又は分離していてよい。代替キャッシュメモリ４００は、キャッシュライン２００のセットの拡張として動作することが注目される。従って、要求されたアドレスのタグビットが代替キャッシュメモリ４００の特定のキャッシュライン２００に含まれたアドレスタグに一致するか否かを判断するために、更なる比較機能２０８Ａが含まれる。代替キャッシュメモリ４００は、単一つのキャッシュライン又は多重のキャッシュラインを含んでよいことに注目される。
【００４３】
上述したように、本発明の方法及び装置の種々の実施形態は、単１セットである直接マップされたキャッシュメモリ実装に適用可能であるか、又はＮ-wayセット関連キャッシュメモリの実装に使用可能である。
【００４４】
図３を参照すると、Ｎ-wayセット関連キャッシュメモリの実装において、動作３０４にて所定のインデックスビットに関連づけられた全部のキャッシュライン２００がアクセスされ、これらのキャッシュライン２００は有効であるという判断が、各データ有効フラグ２１２Ａに基づいて行われる。キャッシュライン２００において、対応するデータ有効フラグ２１２Ａが当該キャッシュライン２００に有効データが含まれないことを示すものは、いずれも、メモリコントローラ２０２によって、浮動小数点データ又は整数データの上書きを行うことが好適に許可される。キャッシュライン２００の全部が（例えば、全部の関連付けられたデータ有効フラグ２１２Ａが真正である）有効データを含む場合、記録されなければならないデータの形式が整数データであれば、何れのキャッシュラインも上書きされる。もし記録されなければならないデータの形式が浮動小数点データであれば、そのようなデータをキャッシュライン２００に記録されるだけでよい。この場合、キャッシュライン２００におけるデータ形式フラグ２１２Ｂは、キャッシュライン２００にカレントに記録されたデータが浮動小数点であることを示すものである。インデックスビットと関連づけられたキャッシュライン２００全部が有効データを含み（例えば、データ有効フラグ２１２Ａのすべてが「真」である）、かつ、関連づけられたデータ形式フラグ２１２Ｂの全部が、記録されたデータは整数データであることを示す場合、メモリコントローラ２００は、好適にキャッシュライン２００の何れに対しても、不動小数点データの上書きを禁止する。
【００４５】
上述したように、キャッシュメモリを制御するための方法及び装置は、整数と浮動小数点データの両方を操作するマイクロプロセスシステムにおけるＬ１キャッシュメモリの使用を増やす点で有利である。その結果、メモリ効率、処理スループット、データ処理の品質が改善される。
【００４６】
本発明は、特定的な実施形態を参考にしながら以上に記載されたが、これらの実施形態は、単に本発明の原則と適用の説明目的のためであることが理解されよう。それ故、実施形態に種々の変更が可能で、また、本発明の精神と範囲を逸脱することなく、その他の変形を、添付の請求項によって限定された改変されてよいことが理解されなくてはならない。
【図面の簡単な説明】
【００４７】
【図１】本発明の１以上の更なる実施形態に従ったキャッシュメモリを制御するために適切な装置の態様（及び／又は方法の態様）を示すブロック概略図である。
【図２】本発明の更なる１以上の実施形態に従ったキャッシュメモリを制御するための図１に示された装置の更なる態様（及び／又は方法の更なる態様）を示すブロック概略図である。
【図３】図１及び図２のような本発明の１以上の更なる態様に従って実行及び／又は実装される、ある種の動作／機能を表すフロー概略図である。
【図４】本発明の１以上の更なる実施形態に従ったキャッシュメモリを制御するための装置の更なる態様（及び／又は方法の更なる態様）を示すブロック概略図である。
【図１】
2005524905.tif 000004
【図２】
2005524905.tif 000005
【図３】
2005524905.tif 000006
【図４】
2005524905.tif 000007
【国際調査報告】
2005524905.tif 000008