(57)【特許請求の範囲】
【請求項１】
セット・アソシエイティブ方式のキャッシュメモリであって、
データとタグとを保持する複数のエントリからなる複数のウェイと、
ウェイ毎に、優先して格納すべきデータの種類を示す優先属性を保持する第１保持手段と、
複数のウェイのうち少なくとも第１のウェイに備えられ、当該ウェイのエントリ毎に、エントリに保持されたデータの種類を示すデータ属性を保持する第２保持手段と、
プロセッサから出力されるデータ属性と第１保持手段に保持された優先属性とが一致するウェイを優先してエントリのリプレース制御を行う制御手段と
を備え、
前記制御手段は、さらに、キャッシュミス時に（ａ）プロセッサからのアドレスによって選択されたセットに属するエントリのうち第１のウェイのエントリに有効なデータが格納されていて、（ｂ）そのエントリのデータ属性とプロセッサからのデータ属性と第１のウェイの優先属性とが一致し、かつ（ｃ）選択された前記セットに属するエントリのうち第１のウェイ以外の他のウェイのエントリに有効なデータがない場合に、当該他のウェイのエントリにデータを格納する
ことを特徴とするキャッシュメモリ。
【請求項２】
前記データ属性はプログラムのプロセスＩＤに基づくことを特徴とする請求項１記載のキャッシュメモリ。
【請求項３】
前記データ属性はアドレスの上位のビットに基づくことを特徴とする請求項１記載のキャッシュメモリ。
【請求項４】
前記キャッシュメモリは複数のプロセッサからアクセスされ、
前記データ属性はプロセッサ番号に基づくことを特徴とする請求項１記載のキャッシュメモリ。
【請求項５】
前記第１保持手段は複数の優先属性を保持することを特徴とする請求項１記載のキャッシュメモリ。
【請求項６】
前記キャッシュメモリは命令キャッシュであり、
プロセス消滅時に、当該プロセスが扱ったデータの属性と一致する優先属性のウェイに対して全エントリのデータを無効化する無効化手段を備えることを特徴とする請求項１記載のキャッシュメモリ。
【請求項７】
前記第１のウェイ以外のウェイもそれぞれ第２保持手段を備えることを特徴とする請求項１記載のキャッシュメモリ。
【請求項８】
前記制御手段は、ウェイ毎に判定手段を有し、
各判定手段は、
プロセッサからのアドレスによって選択されたセットに属するエントリのうち、対応するウェイのエントリのデータが有効であるか否かを判定する第１判定部と、
キャッシュミス時にプロセッサからのデータ属性と、当該エントリのデータ属性と、対応するウェイの優先属性とが一致するか否かを判定する第２判定部と、
前記セットに属するエントリのうち対応するウェイ以外の他のウェイのエントリのデータが有効であるか否かを判定する第３判定部とを備え、
各判定手段は、
第１判定部によって有効、第２判定部によって一致、かつ第３判定部によって無効と判定された場合に、第３判定部によって無効と判定されたエントリの属するウェイに対応する判定手段にデータ格納を依頼する依頼信号を出力し、
他ウェイに対応する判定手段から依頼信号が入力された場合に、プロセッサからのアドレスによって選択されたセットに属するエントリのうち、対応するウェイのエントリにデータを格納する
ことを特徴とする請求項７記載のキャッシュメモリ。
【請求項９】
第１プロセッサと、
第１プロセッサに用いられる第１の１次キャッシュメモリと、
第２プロセッサと、
第２プロセッサに用いられる第２の１次キャッシュメモリと、
第１プロセッサおよび第２プロセッサに用いられる２次キャッシュメモリとを備え、
前記第１、第２の１次キャッシュメモリおよび２次キャッシュメモリはそれぞれ請求項７記載のキャッシュメモリであることを特徴とするシステム。
【請求項１０】
前記２次キャッシュメモリにおける第１保持手段は、優先属性としてプロセッサ番号を保持する
ことを特徴とする請求項９記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のデータ処理のデータを格納するキャッシュメモリ、システム、データ格納方法に関する。
【背景技術】
【０００２】
主メモリへのアクセスを高速にする目的で、キャッシュメモリをブロックに分割しそれぞれを別のプログラムに割り当てる技術として、例えば特許文献１がある。
【特許文献１】特開昭６２−１４４２５７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかし上記の技術では、プログラムが使用するブロックを固定にしてしまうため、他のブロックに空き領域があったとしても有効利用することができなかった。さらに、プログラム間でデータを共有する場合は、ブロック自体を共有する必要があるため、全てのプログラムで共有するデータがある場合には、キャッシュメモリに格納できないか、もしくは、プログラムにブロックを割り当てることはできなかった。例えば、システムにおいて動画処理と音声処理を同時に実行する場合、音声処理のデータをキャッシュメモリに格納するために、動画処理中で未だキャッシュメモリに滞在が必要なデータがキャッシュメモリから追い出される。その結果、動画処理のデータのキャッシュメモリミスが増えることになり、所定の時間に動画処理が終わらなくなっていた。
【０００４】
本発明は、異なる種類のデータを格納する場合に一方のデータ処理が他方のデータ処理に悪影響を与えないように効率を向上させたキャッシュメモリ、システムおよびデータ格納方法を提供することを目的とする。
【課題を解決するための手段】
【０００５】
上記課題を解決するため本発明のキャッシュメモリは、セット・アソシエイティブ方式のキャッシュメモリであって、データとタグとを保持する複数のエントリからなる複数のウェイと、ウェイ毎に、優先して格納すべきデータの種類を示す優先属性を保持する第１保持手段と、複数のウェイのうち少なくとも第１のウェイに備えられ、当該ウェイのエントリ毎に、エントリに保持されたデータの種類を示すデータ属性を保持する第２保持手段と、プロセッサから出力されるデータ属性と第１保持手段に保持された優先属性とが一致するウェイを優先してエントリのリプレース制御を行う制御手段とを備える。この制御手段は、さらに、キャッシュミス時に（ａ）プロセッサからのアドレスによって選択されたセットに属するエントリのうち第１のウェイのエントリに有効なデータが格納されていて、（ｂ）そのエントリのデータ属性とプロセッサからのデータ属性と第１のウェイの優先属性とが一致し、かつ（ｃ）選択された前記セットに属するエントリのうち第１のウェイ以外の他のウェイのエントリに有効なデータがない場合に、当該他のウェイのエントリにデータを格納するよう構成されている。
【０００６】
この構成によれば、優先属性を持つデータに対してウェイを確保すると同時に、ウェイ中の空きエントリは他の属性を持つデータを格納するので、キャッシュメモリを有効活用できる。例えば、異なる種類のデータを格納する場合に一方のデータ処理が他方のデータ処理に悪影響を与えないで効率を向上させることができる。プロセッサから見れば、異なるデータ処理を同時に実行する場合に一方のデータ処理が他方のデータ処理に悪影響を与えないで効率を向上させることができる。
【０００７】
ここで、前記データ属性はプログラムのプロセスＩＤに基づいてもよい。
この構成によれば、本来のデータ属性の代わりに、プロセスＩＤを使うことでシステムの構成を簡単にすることができる。
【０００８】
ここで、前記データ属性はアドレスの上位のビットに基づいてもよい。
この構成によれば、予め上位のビットとデータ属性が対応している必要があるけれども、プロセスＩＤがないシステムにおいても構成を簡単にすることができる。
【０００９】
ここで、前記キャッシュメモリは複数のプロセッサからアクセスされ、前記データ属性はプロセッサ番号に基づいてもよい。
この構成によれば、マルチプロセッサシステムにおいて、ウェイ毎に優先すべきプロセッサを設定でき、キャッシュメモリの管理を簡単にすることができる。
【００１０】
ここで、前記第１保持手段は複数の優先属性を保持するようにしてもよい。
この構成によれば、一方の優先属性に対応する処理と他方の優先属性に対応する処理とが排他的に起こる場合等に、キャッシュメモリの空きエントリをさらに有効活用することができる。
【００１１】
ここで、前記キャッシュメモリは命令キャッシュであり、プロセス消滅時に、当該プロセスが扱ったデータの属性と一致する優先属性のウェイに対して全エントリのデータを無効化する無効化手段を備える構成としてもよい。
【００１２】
この構成によれば、プロセス消滅時にこれ以上アクセスされないデータ（命令）を無効化するので、さらに利用効率を向上させることができる。
ここで、前記各ウェイは、前記第２保持手段を備える構成としてもよい。
【００１３】
ここで、前記制御手段は、ウェイ毎に判定手段を有し、各判定手段は、プロセッサからのアドレスによって選択されたセットに属するエントリのうち、対応するウェイのエントリのデータが有効であるか否かを判定する第１判定部と、キャッシュミス時にプロセッサからのデータ属性と、当該エントリのデータ属性と、対応するウェイの優先属性とが一致するか否かを判定する第２判定部と、前記セットに属するエントリのうち対応するウェイ以外の他のウェイのエントリのデータが有効であるか否かを判定する第３判定部とを備え、各判定手段は、第１判定部によって有効、第２判定部によって一致、かつ第３判定部によって無効と判定された場合に、第３判定部によって無効と判定されたエントリの属するウェイに対応する判定手段にデータ格納を依頼する依頼信号を出力し、他ウェイに対応する判定手段から依頼信号が入力された場合に、プロセッサからのアドレスによって選択されたセットに属するエントリのうち、対応するウェイのエントリにデータを格納する構成としてもよい。
【００１４】
また、本発明のシステムは、第１プロセッサと、第１プロセッサに用いられる第１の１次キャッシュメモリと、第２プロセッサと、第２プロセッサに用いられる第２の１次キャッシュメモリと、第１プロセッサおよび第２プロセッサに用いられる２次キャッシュメモリとを備え、前記第１、第２の１次キャッシュメモリおよび２次キャッシュメモリはそれぞれ上記のキャッシュメモリであることを特徴とする。ここで、前記２次キャッシュメモリにおける第１保持手段は、優先属性としてプロセッサ番号を保持する構成としてもよい。
【００１５】
この構成によれば、異なる処理を同時に実行する場合に一方の処理が他方の処理に悪影響を与えないで効率を向上させたキャッシュメモリを階層的に実現することができる。
また、本発明のデータ格納方法は、データとタグとを保持する複数のエントリからなる複数のウェイと、ウェイ毎に、優先して格納すべきデータの種類を示す優先属性を保持する第１保持部と、複数のウェイのうち少なくとも第１のウェイに備えられ、第１のウェイのエントリ毎に、エントリに保持されたデータの種類を示すデータ属性を保持する第２保持部と、プロセッサから出力されるデータ属性と第１保持部に保持された優先属性とが一致するウェイを優先的にエントリのリプレース制御を行う制御部とを有するセット・アソシエイティブ方式のキャッシュメモリにおけるデータ格納方法であって、キャッシュミス時に、プロセッサからのアドレスによって複数ウェイに跨るエントリのセットを選択するステップと、選択されたセットに属するエントリのうち第１のウェイのエントリのデータが有効か否かを判定する第１判定ステップと、そのエントリのデータ属性とプロセッサからのデータ属性と第１のウェイの優先属性とが一致するか否かを判定する第２判定ステップと、選択された前記セットに属するエントリのうち第１のウェイ以外の他のウェイのエントリのデータが有効か否かを判定する第３判定ステップと、第１判定ステップにおいて有効、第２判定ステップにおいて一致、かつ第３判定ステップにおいて無効と判定された場合に、前記セットに属するエントリのうち第１のウェイ以外の他のウェイのエントリにデータを格納する格納ステップとを有する。
【００１６】
この構成によれば、優先属性を持つデータに対してウェイが確保されると同時に、ウェイ中の空きエントリは他の属性を持つデータを格納するので、キャッシュメモリを有効活用できる。
【００１７】
ここで、前記データ属性は、前記優先属性として用いられない第１データ属性を含み、前記データ格納方法は、さらにキャッシュミスしたデータのデータ属性が第１データ属性であった場合に、選択ステップにおいて選択されたセットに属するエントリのうち、有効なデータが格納されていないエントリがあれば、当該エントリにデータを格納するステップを有する構成としてもよい。
【００１８】
ここで、前記データ属性は、複数種類のデータを同じウェイで共有させるための第２データ属性を含み、前記データ格納方法は、さらにプロセッサにおけるプロセスの消滅時に、第１保持部に保持された優先属性のうち、当該プロセスに関するデータの種類を示す優先属性を第２データ属性に書き換えるステップを有する構成としてもよい。また、前記データ格納方法は、さらにプロセッサにおけるプロセスの生成時に、第１保持部に保持された優先属性のうち、第２データ属性を示す優先属性を当該プロセスに関するデータの種類を示す優先属性に書き換えるステップを有する構成としてもよい。
【００１９】
この構成によれば、そのときの状況に応じて、動的に優先属性を書き換えることにより、さらにキャッシュメモリの有効利用が可能となり、キャッシュメモリのヒット率が高くなる。
【００２０】
ここで、前記キャッシュメモリは命令キャッシュであり、前記データ格納方法は、さらに、プロセス消滅時に、当該プロセスが扱ったデータの属性と一致する優先属性のウェイに対して全エントリのデータを無効化するステップを有する構成としてもよい。
【００２１】
この構成によれば、さらなるキャッシュメモリ利用効率が期待できる。
【発明の効果】
【００２２】
以上のように本発明に係るキャッシュメモリは、優先属性と同じデータ属性を持つデータに対してウェイを確保すると同時に、ウェイ中の空きエントリは他のデータ属性のデータを格納するので、キャッシュメモリを有効活用できる。例えば、異なる種類のデータを格納する場合に一方のデータ処理が他方のデータ処理に悪影響を与えないで効率を向上させることができる。
【００２３】
データ属性としてプロセスＩＤを使うことで、システムの構成を簡単にすることができる。
データ属性として上位アドレスを使うことで、プロセスＩＤがないシステムにおいて簡単に実現することができる。
【００２４】
データ属性としてプロセッサ番号を用いることで、マルチプロセッサシステムに簡単に適用することができる。
また、ウェイの数よりもデータ属性の方が多い場合であっても優先属性にもとづいてキャッシュメモリにデータを格納でき、かつ、キャッシュメモリの空き領域を有効利用してキャッシュメモリヒット率を高くすることができる。
【００２５】
優先属性の書き換えにより、さらにキャッシュメモリの有効利用が可能となり、キャッシュメモリのヒット率が高くなる。
【発明を実施するための最良の形態】
【００２６】
（第１の実施の形態）
図１は本発明の第１の実施の形態におけるキャッシュメモリを備えるシステムの構成を示すブロック図である。このシステムは、２つのプロセッサ１０００、１００１と、２つの１次キャッシュメモリ１００２、１００３と、１つの２次キャッシュメモリ１００４と、１つのメインメモリ１００５と、データバス１００６と、プロパティバス１００７と、アドレスバス１００８とを備え、階層メモリ構造を有している。また、それぞれのプロセッサ１０００、１００１は複数のプロセスを実行している。
【００２７】
プロセッサ１０００は、プロセスＩＤ保持部１０１０とプロセッサ番号保持部１０１１とを含む。また、プロセッサ１０００と１次キャッシュメモリ１００２とは、内部データバス１０１４、内部アドレスバス１０１３により接続されている。
【００２８】
プロセスＩＤ保持部１０１０は、実行中のプロセスを示すプロセスＩＤを保持する。このプロセスＩＤは、アドレスと共に、プロセスＩＤ信号１０１２として１次キャッシュメモリ１００２に入力される。
【００２９】
プロセッサ番号保持部１０１１は、プロセッサ１０００を識別するためのプロセッサ番号(例えば０という値)を保持する。このプロセッサ番号は、アドレスと共に、プロセッサ番号信号としてプロパティバス１００７を介して２次キャッシュメモリに入力される。
【００３０】
プロセッサ１００１もプロセッサ１０００と同様である。ただし、プロセッサ１００１のプロセッサ番号は１であるものとする。
１次キャッシュメモリ１００２、１００３と、２次キャッシュメモリ１００４は、いずれもウェイ毎に優先属性を保持し、優先属性とデータ属性とか一致するデータをウェイに格納する。さらに、キャッシュメモリ１００２、１００３、１００４は、それぞれリフィルに際して、優先属性とデータ属性とが一致するウェイのエントリが空きでなく、かつ、データ属性と異なる優先属性のウェイにおける同一セット内のエントリが空きであれば、当該エントリにデータを格納するように構成されている。ここで、優先属性およびデータ属性は、例えば、データ又は処理の種類（動画、音声、通信、静止画、テキストなど）、プロセッサＩＤ、プロセスＩＤなどにより指定される。
【００３１】
本実施の形態では、１次キャッシュメモリ１００２、１００３におけるウェイ０の優先属性は動画データを示す値０、ウェイ１における優先属性は音声データを示す値１に設定されているものとする。また、プロセッサ１０００、１００１は、それぞれ１次キャッシュメモリ１００２、１００３にデータ属性としてプロセスＩＤを出力するものとする。このプロセスＩＤは、動画処理用プロセスが値０、音声処理用プロセスが値１であるものとする。
【００３２】
また、２次キャッシュメモリ１００４におけるウェイ０の優先属性はプロセッサ１０００のプロセッサ番号である０、ウェイ１における優先属性はプロセッサ１００１のプロセッサ番号である値１に設定されているものとする。プロセッサ１０００、１００１は、それぞれ２次キャッシュメモリ１００４にデータ属性としてプロセッサ番号を出力するものとする。
【００３３】
図２は、キャッシュメモリの構成を示すブロック図である。このキャッシュメモリは、図１に示した１次キャッシュメモリ１００２、１００３、２次キャッシュメモリ１００４それぞれの構成の代表として示している。同図のようにキャッシュメモリはセット・アソシエイティブ方式であり、アドレスレジスタ１０と、２つのウェイ１００、１０１（ウェイ０、ウェイ１とも呼ぶ）とを備える。
【００３４】
アドレスレジスタ１０は、プロセッサからのメモリアクセスアドレス又は命令フェッチアドレスを保持するレジスタである。同図に示すように、アクセスアドレスは、上位ビットから順に、タグアドレスＴＡ、セットインデックスＳＩ、ワードインデックスＷＩを含む。たとえばアドレスが３２ビット（Ａ３１−Ａ０）、タグアドレスが２１ビット（Ａ３１−Ａ１１）、セットインデックスが４ビット（Ａ１０−Ａ７）、ワードインデックスが５ビット（Ａ６−Ａ２）であるものとする。
【００３５】
ここで、タグアドレスＴＡおよびセットインデックスＳＩで特定されるメモリ中のブロックは、リフィルの単位であり、キャッシュメモリに格納されている場合はラインデータ又はラインと呼ばれる。ラインデータのサイズは、セットインデックスよりも下位のアドレスのビットで定まる。セットインデックスよりも下位のアドレスのビットが７ビット（Ａ６−Ａ０）の場合、ラインデータのサイズは１２８バイトである。１ワードを４バイトとすると、１ラインデータは３２ワードである。
【００３６】
セットインデックスＳＩは２つウェイに跨る２エントリからなるセットの１つ（例えば図２の網掛け部分）を指す。このセットの数は、セットインデックスＳＩが４ビットの場合１６セットである。
【００３７】
タグアドレスＴＡは１つのウェイにマッピング可能なメモリ中の領域（そのサイズはセット数×ブロックである）を指す。この領域のサイズは、１つのウェイのサイズでもあり、タグアドレスよりも下位のアドレスビットで定まる。タグアドレスよりも下位のアドレスのビットが１１ビット（Ａ１０〜Ａ０）の場合、１つのウェイのサイズは２ｋバイトである。
【００３８】
ワードインデックスＷＩは、ラインデータを構成する複数ワード中の１ワードを指す。なお、アドレスレジスタ２０中の最下位２ビット（Ａ１、Ａ０）は、ワードアクセス時には無視される。
【００３９】
ウェイ０は、複数エントリからなる。
データを格納するデータ部１１４、データ部１１４のデータのアドレスのうちタグアドレスの部分をタグとして格納するタグ部１１３、データ属性を格納するデータ属性格納部１１０、キャッシュメモリのデータが書き換えられていることを示すダーティビット格納部１１１、データ部１１４に有効なデータが格納されていることを示すバリッドビット格納部１１２、ウェイ０に優先的に格納すべきデータ属性を示す優先属性を保持する優先属性保持部１１５、ウェイ０のエントリにデータをリフィルすべきか否かを判定するリフィル判定部１１６を備える。
【００４０】
同様に、ウェイ１は、データを格納するデータ部１２４、データ部１２４のデータのアドレスのうちタグアドレスの部分を格納するタグ部１２３、データ属性を格納するデータ属性格納部１２０、キャッシュメモリのデータが書き換えられていることを示すダーティビット格納部１２１、データ部１２４に有効なデータが格納されていることを示すバリッドビット格納部１２２、ウェイ１に優先して格納すべきデータ属性を示す優先属性を保持する優先属性保持部１２５、リフィル判定部１２６を備える。
【００４１】
図中の網掛け部分はセットインデックス３００によって選択されたセット内の２つのエントリを示しており、そのエントリの値がそれぞれデータ属性信号２１０、２２０、ダーティビット信号２１１、２２１、バリッドビット信号２１２、２２２として、リフィル判定部１１６、１２６に入力されている。また、データ属性３０１はプロセッサ１０００、１００１がデータをアクセスする際に出力するである。データ格納依頼信号３０３はリフィル判定部１１６がリフィル判定部１２６にデータ部１２４にデータを格納することを依頼するための信号である。データ格納依頼信号３０２はリフィル判定部１２６がリフィル判定部１１６にデータ部１１４にデータを格納することを依頼するため信号である。である。
【００４２】
図３はキャッシュメモリミスが起こったときの本発明のデータ転送方法を示すフローチャートであり、リフィル判定部１１６、１２６それぞれの制御フローを示している。以下、リフィル判定部１２６の場合を（）内に示す。
【００４３】
ステップ５００においてリフィル判定部１１６（１２６）は、優先属性部１１５（１２５）の値とデータ属性３０１とを比較し、比較の結果、一致する場合にはステップ５０１へ、一致しない場合にはステップ５１０へ進む。
【００４４】
ステップ５０１においてリフィル判定部１１６（１２６）は、セットインデックス３００によって選択されたエントリのバリッドビット格納部の値であるバリッドビット信号２１２（２２２）の値が無効か否かを判定し、無効な場合つまり空きである場合にはステップ５０２に、有効な場合つまり空きでない場合にはステップ５０３に進む。
【００４５】
ステップ５０２においてリフィル判定部１１６（１２６）は、データをデータ部１１４（１２４）に格納する。
ステップ５０３においてリフィル判定部１１６（１２６）は、セットインデックス３００によって選択されたエントリのデータ属性格納部の値であるデータ属性信号２１０（２２０）の値がデータ属性３０１の値と等しいか判定し、等しい場合にはステップ５０４に、等しくない場合にはステップ５０８に進む。
【００４６】
ステップ５０４においてリフィル判定部１１６（１２６）は、他のウェイのバリッドビット信号２２２（２１２）が無効かどうか（空きかどうか）を判定し、無効な場合にはステップ５０５に、有効な場合にはステップ５０６に進む。
【００４７】
ステップ５０５においてリフィル判定部１１６（１２６）は、データ格納要求信号３０３（３０２）を出力する。
ステップ５０６においてリフィル判定部１１６（１２６）は、自分のウェイのセットインデックス３００によって選択されたエントリのデータ部１１４（１２４）のデータをキャッシュメモリから追い出す。つまり、ダーティであればメインメモリ１００５にライトバックする。
【００４８】
ステップ５０７においてリフィル判定部１１６（１２６）は、セットインデックス３００によって選択されたエントリのデータ部１１４（１２４）にプロセッサ１０００、１００１がアクセスしたデータ（キャッシュメモリミスしたデータ）を格納する。
【００４９】
ステップ５０８においてリフィル判定部１１６（１２６）は、自分のウェイのセットインデックス３００によって選択されたエントリのデータ部１１４（１２４）のデータをキャッシュメモリから追い出す。
【００５０】
ステップ５０９においてリフィル判定部１１６（１２６）は、セットインデックス３００によって選択されたエントリのデータ部１１４（１２４）にプロセッサ１０００、１００１がアクセスしたデータ（キャッシュミスしたデータ）を格納する。
【００５１】
ステップ５１０においてリフィル判定部１１６（１２６）は、データ格納要求信号３０２（３０３）が出力されているか判定し、出力されている場合にはステップ５１１に、出力されていない場合にはステップ５１２に進む。
【００５２】
ステップ５１１においてリフィル判定部１１６（１２６）は、セットインデックス３００によって選択されたエントリのデータ部１１４（１２４）にプロセッサ１０００、１００１がアクセスしたデータ（キャッシュメモリミスしたデータ）を格納する。
【００５３】
図４〜図６は、１次キャッシュメモリ１００２又は１００３において動画データンキャッシュメモリミスが発生し、セットインデックス３００により選択されたセットの２つのエントリにおいて、動画処理が優先属性とするウェイ０のエントリに有効な動画データがあり、かつ、ウェイ１のエントリに有効なデータがなかった場合を示している。この場合、ウェイ１にキャッシュメモリミスしたデータが格納されることになる。
【００５４】
図４は、この場合のリフィル判定部１１６の制御の様子を示してあり、太字及び太線で示した部分が実行される。
図５は、キャッシュメモリミスが発生した瞬間のキャッシュメモリの各部の様子を示しており、図６は、キャッシュメモリミスしたデータを格納し終えた様子を示している。
【００５５】
ここで、ウェイ１は、優先属性格納部１２５の値が音声処理なので、データ部１２４には音声データを格納するのが本来なのだが、セットインデックス３００によって選択されたエントリはたまたまデータが格納されていなかったため、キャッシュメモリミスした動画データが格納された。（以下では、「ウェイ１の選択されたエントリにデータが格納されていなかった」ことを「ウェイ１に空席があった」と表現することにする）
以下では、以上のようなキャッシュメモリの振る舞いを、図１のシステム全体の動作として説明する。ここでは、データ属性として、動画、音声、共有（通信、静止画）、その他（テキスト）の４種類があり、処理が５種類あるのに対してウェイの数が２つしかないにもかかわらず、これらの属性を動的に書き換えることで、キャッシュメモリが有効活用されていることが明らかになるであろう。
【００５６】
図７〜図１５は、図１に示したシステムの動作を表している。これらの図においてデータ属性定義１は、２次キャッシュメモリに置かれるデータ属性を区別するための塗りつぶしパターンを示し、データ属性定義２は、１次キャッシュメモリに置かれるデータ属性を区別するための塗りつぶしパターンを示す。
【００５７】
ここでは、最初は、１次キャッシュメモリのウェイ０の優先属性格納部には動画処理が、ウェイ１の優先属性格納部には音声処理が格納されており、２次キャッシュメモリのウェイ０の優先属性格納部にはプロセッサ番号の０が、ウェイ１の優先属性格納部にはプロセッサ番号の１が格納されている。
【００５８】
図７では、プロセッサ１０００が動画処理を行い、データを１次キャッシュメモリ、２次キャッシュメモリに格納する。図３のデータ格納方法のステップ５０２が実行された。
図８では、プロセッサ１０００が再度画像処理を行い、データを１次キャッシュメモリ、２次キャッシュメモリに格納する。図３のデータ格納方法のステップ５０５および５１１が実行された。１次キャッシュメモリにおいて、ウェイ１は音声処理に優先されているが、ウェイ１に空席があるため、動画処理のデータが格納される。２次キャッシュメモリにおいて、ウェイ１はプロセッサ１００１に優先されているが、ウェイ１に空席があるため、プロセッサ１０００のデータが格納される。
【００５９】
図９では、プロセッサ１が動画処理を行い、データを１次キャッシュメモリ、２次キャッシュメモリに格納する。１次キャッシュメモリにおいては、図３のデータ格納方法のステップ５０２が実行され、２次キャッシュメモリにおいては、ステップ５０８、５０９が実行された。２次キャッシュメモリにおいて、ウェイ１はプロセッサ１００１に優先されているので、その前に格納されていたプロセッサ１０００のデータが追い出される。
【００６０】
図１０では、プロセッサ０が音声処理を行い、データを１次キャッシュメモリ、２次キャッシュメモリに格納する。１次キャッシュメモリにおいて、図３のデータ格納方法のステップ５０８、５０９が実行され、２次キャッシュメモリにおいて、ステップ５０６、５０７が実行された。１次キャッシュメモリ１００２のウェイ１（音声処理優先）に置かれていた動画データが追い出され、音声データが置かれる。
【００６１】
図１１では、プロセッサ１が音声処理を行い、データを１次キャッシュメモリ、２次キャッシュメモリに格納する。１次キャッシュメモリにおいて、図３のデータ格納方法のステップ５０２が実行され、２次キャッシュメモリにおいて、ステップ５０６、５０７が実行された。
【００６２】
図１２では、プロセッサ０で動画処理のプロセスが消滅し、ウェイ０の優先属性部を共有に変更する。ＯＳがプロセスの消滅生成に際して、優先属性部の値を書き換えるメカニズムを図２６に示す。
【００６３】
図２６においてプログラムａ１、ａ２はプロセスＡに対応し、プログラムｂ１、ｂ２はプロセスＢに対応し、プログラムｃ１、ｃ２はプロセスＣに対応している。プログラムａ１は、ユーザによって準備されたプログラムであり、プロセスＡが消滅したとき、プロセスＡに割り当てたウェイに対する優先属性を設定、変更または削除するためのプログラムである。プログラムａ２は、ユーザによって準備されたプログラムであり、プロセスＡが生成されるとき、プロセスＡに割り当てるウェイに対する優先属性を設定、変更または削除するためのプログラムである。プログラムｂ１、ｂ２、ｃ１、ｃ２も対応するプロセスについて同様である。ＯＳはプロセスを消滅させたとき、生成したときに、該当するプログラムを呼び出す。同図では、ＯＳがプロセスＡを消滅させ、プログラムａ１を実行して優先属性部の値を設定している。たとえば図１２の場合だと、プログラムａ１の内容は、「消滅したプロセスに優先されたウェイの優先属性部を”共有”に書き換える」である。また、プログラムａ２の内容は、「生成されるプロセスに優先されたウェイの優先属性部を”動画”に書き換える」である。なお、ユーザは、必ずしもプログラムａ１、ａ２の両方を準備する必要はなく、一方だけを準備してもよい。プログラムｂ１、ｂ２、ｃ１、ｃ２についても同様である。
【００６４】
図１３では、プロセッサ０が通信処理を行い、データを１次キャッシュメモリ・２次キャッシュメモリに格納する。１次キャッシュメモリにおいて、図３のデータ格納方法のステップ５０８、５０９が実行された。
【００６５】
図１４では、プロセッサ０がテキスト表示を行い、データを２次キャッシュメモリに格納する。ところが、１次キャッシュメモリには空席がないので格納されない。１次キャッシュメモリにおいて、図３のデータ格納方法のステップ５１２が実行され、２次キャッシュメモリにおいて、ステップ５０６、５０７が実行された。
【００６６】
図１５では、プロセッサ０が図１４とは異なるアドレスでテキスト表示を行い、データを２次キャッシュメモリに格納する。今度は、１次キャッシュメモリに空席があるのでデータが１次キャッシュメモリにも格納される。１次キャッシュメモリ、２次キャッシュメモリにおいて、図３のデータ格納方法のステップ５０２が実行された。
【００６７】
以上のように、キャッシュメモリのウェイ毎に優先されるデータ属性を指定することで他の属性のデータによってそのウェイが占有されることがないと同時に、優先されるデータ属性が異なるデータであってもキャッシュメモリにデータが格納されていないウェイがあれば、データ格納することを許すので、空き領域が他の属性を持つデータに有効活用できる。
【００６８】
また、データ属性として、共有と、その他とを備えることで、ウェイの数よりもデータ属性の方が多い場合であっても優先属性にもとづいてキャッシュメモリにデータを格納でき、かつ、キャッシュメモリの空き領域を有効利用してキャッシュメモリヒット率を高くすることができる。
【００６９】
また、優先属性として用いられないデータ属性のデータであっても、選択ステップにおいて選択されたセットに属するエントリのうち、有効なデータが格納されていないエントリがあれば、当該エントリにデータを格納するので、有効利用することができる。
【００７０】
プロセッサ１０００は、動画処理の必要がなくなると、ウェイ０の優先属性を共有に書き換えることで、ウェイ０が通信処理に有効利用された。そのときの状況に応じて、動的に優先属性を書き換えることで、さらにキャッシュメモリの有効利用が可能となり、キャッシュメモリのヒット率が高くなっている。
【００７１】
他には、データ属性として本来のデータ属性の代わりにプロセスＩＤを使うことで、システムの構成が簡単にでき、データ属性をプロセッサ番号を用いて生成することで、マルチプロセッサシステムにおいて本発明を実施する際の２次キャッシュメモリの管理が簡単にできる。
【００７２】
（第２の実施の形態）
図１６は本発明の第２の実施の形態におけるシステム構成を示すブロック図である。同図のシステムは、図１と比較して、１次キャッシュメモリ１００２、１００３の代わりに１次キャッシュメモリ２００２、２００３を備える点が異なっている。以下、同じ構成要素には同じ符号を付してあるので説明を省略し、異なる点を中心に説明する。
【００７３】
１次キャッシュメモリ２００２、２００３において、各ウェイ内の優先属性格納部は２つの優先属性を格納する点が、図１と異なっている。これにより、優先属性格納部に保持された２つの優先属性のうち一方の属性の処理と他方の属性の処理とが排他的に起こる場合、キャッシュメモリの空き領域がさらに有効活用されることが明らかになるであろう。
【００７４】
図１７〜図２０は、図１６の本発明のシステムの動作を表している。ここでは、１次キャッシュメモリのウェイ０の優先属性格納部には動画処理と通信処理が、ウェイ１の優先属性格納部には音声処理と静止画処理が格納されており、２次キャッシュメモリのウェイ０の優先属性格納部にはプロセッサ番号の０が、ウェイ１の優先属性格納部にはプロセッサ番号の１が格納されている。これらの図においてデータ属性定義３は、２次キャッシュメモリに置かれるデータ属性を区別するための塗りつぶしパターンを示し、データ属性定義４は、１次キャッシュメモリに置かれるデータ属性を区別するための塗りつぶしパターンを示す。
【００７５】
図１７では、プロセッサ１０００が動画処理を行い、データを１次キャッシュメモリ・２次キャッシュメモリに格納する。
図１８では、プロセッサ１０００が再び動画処理を行い、データを１次キャッシュメモリ・２次キャッシュメモリに格納する。
【００７６】
図１９では、プロセッサ１０００は動画処理を完了し、通信処理を開始する。データを１次キャッシュメモリ・２次キャッシュメモリに格納する。
図２０では、プロセッサ１０００は再度通信処理を行い、データを１次キャッシュメモリ・２次キャッシュメモリに格納する。
【００７７】
以上のように、優先属性格納手段に優先属性を２つ以上格納できるようにすることで、一方の属性の処理と他方の属性の処理とが排他的に起こる場合、キャッシュメモリの空き領域がさらに有効活用される。
【００７８】
（第３の実施の形態）
図２１は第３の実施の形態におけるシステム構成を示すブロック図である。このシステムは、図１に示したシステムと比較して、１次キャッシュメモリ２００２、２００３の代わりにの１次キャッシュメモリ３００２、３００３を備える点が異なっている。以下、同じ構成要素には同じ符号を付してあるので説明を省略し、異なる点を中心に説明する。
【００７９】
１次キャッシュメモリ３００２、３００３におけるそれぞれのデータ属性格納部は、ウェイ０のエントリに格納されたデータのデータ属性を、エントリ毎ではなくウェイ０で１つだけ格納する点が異なっている。これにより、ウェイ０は優先属性のデータのみを格納することなり、ウェイ１は第１、第２の実施の形態と同様に優先属性のデータと、空席の場合に異なる優先属性のデータを格納することになる。
【００８０】
図２２は、図２１の本発明のシステムの様子を表している。
図２２においてデータ属性定義５は２次キャッシュメモリに置かれるデータ属性を区別するための塗りつぶしパターンを示し、データ属性定義６は１次キャッシュメモリに置かれるデータ属性を区別するための塗りつぶしパターンを示す。
【００８１】
ここでは、プロセッサ３０００だけが動作し時間が経過した後のキャッシュメモリの様子を示した。１次キャッシュメモリのウェイ０には動画データが置かれており、データは連続している。ところが、ウェイ１には音声データ以外に、共有属性のデータが置かれている。これは、音声データには動画データほどは連続性がないため、多少空き領域があり、そこを共有属性のデータが有効利用できているものである。
【００８２】
以上のように、キャッシュメモリ中に複数あるウェイの一部については複数のエントリに対してデータ属性格納手段を１つ設けこれをデータの連続性の高い処理に用いることで、データ属性格納用のメモリを節約することができる。
【００８３】
（第４の実施の形態）
図２３は第４の実施の形態におけるシステム構成を示すブロック図である。ここでは、キャッシュメモリは全て命令格納用に用いられている。同図のシステムは、図１に示したシステムとほぼ同じであるが、データバス１００６、内部データバス１０１４、内部データバス１０２４の代わりに、命令バス４００６、内部命令バス４０１４、内部命令バス４０２４を有している。これらのバスは、データバスと独立したバスでも、データとの多重化バスでもよい。
【００８４】
図２４〜図２５は、図２３に示したシステムの動作を表している。
図２４では、プロセッサ０が動画処理、音声処理、通信を行い、命令を１次キャッシュメモリ。２次キャッシュメモリに格納している。命令は連続性が高いので、ウェイ０のほとんどに動画処理の命令が置かれている。
【００８５】
図２５では、動画処理が終わったので、ウェイ０はエントリ毎に全て無効化し、優先属性格納部の値を共有にしている。キャッシュメモリの無効化は、バリッドビット格納部の値を一斉に無効にすることで行われる。図２６に、ＯＳがプロセスを生成および消滅する際に、優先属性を設定するプログラムを実行するメカニズムを示したが、プロセスが消滅する際にこのプログラムを実行することでキャッシュメモリの無効化を行う。たとえばプログラムａ１は、プロセスＡが消滅した際に、ウェイ０に対して、データ属性が消滅したプロセスの優先属性と一致するバリッドビットを全て無効化する。
【００８６】
ウェイ０を無効化しなければ、ウェイ０には動画処理と通信の命令がぎっしり詰まっているため、この後も、音声処理の命令を格納できる可能性はない。ところが、ウェイ０を無効化することで、この後、音声処理の命令をキャッシュメモリに格納しようとしたときに、通信の命令がウェイ０に格納されていなければ音声処理の命令を格納できる。
【００８７】
以上のように、命令を格納する命令キャッシュメモリである場合は、プロセスが消滅した際に優先属性が消滅したプロセスの属性と一致するウェイのバリッドビットを全て無効化するので、さらなるキャッシュメモリ利用効率が期待できる。
【００８８】
なお、上記各実施の形態においては、１次キャッシュメモリのデータ属性としてプロセスＩＤを用いたが、代わりに、アドレスの上位ビットであっても良い。予め、それぞれのデータの上位アドレスが重ならないように設定できるならば、アドレスの上位ビットをデータ属性の代わりに用いてもよい。この場合、プロセスＩＤがないシステムにおいて本発明を実施することが可能になる。
【００８９】
また、各実施の形態において、優先属性をウェイ毎に設けているが、エントリ毎に設けるようにしてもよいし、複数エントリからなるグループ毎に設けるようにしてもよい。
なお、第３の実施の形態において、ウェイ０に１つのデータ属性を保持するデータ属性格納部を備えているが、このデータ属性格納部を省略した構成としてもよい。
【００９０】
また、各実施の形態において、２ウェイ・セット・アソシエイティブのキャッシュメモリを開示したが、ウェイ数は２に限らずいくつであってもよい。同様に、セット数、ラインデータのサイズについてもいくつであってもよい。
【産業上の利用可能性】
【００９１】
本発明は、セット・アソシエイティブ方式のキャッシュメモリに適しており、例えば、オンチップキャッシュメモリ、オフチップキャッシュメモリ、データキャッシュメモリ、命令キャッシュメモリ等に適している。また、本発明のシステム、データ格納方法は、複数種類のデータを処理する装置、例えば動画像の符号化や復号化を行うＤＶＤレコーダ、デジタルテレビ、セットトップボックス、携帯電話機、これらの複合機器などに適している。
【図面の簡単な説明】
【００９２】
【図１】第１の実施の形態におけるシステム構成を示すブロック図である。
【図２】キャッシュメモリの構成を示すブロック図である。
【図３】データ格納方法を示すフローチャートを示す図である。
【図４】データ格納方法を示す図である。
【図５】キャッシュメモリミス発生時のキャッシュメモリの各部の様子を示す図である。
【図６】第２の実施の形態におけるシステム構成を示すブロック図である。
【図７】システムの動作図である。
【図８】システムの動作図である。
【図９】システムの動作図である。
【図１０】システムの動作図である。
【図１１】システムの動作図である。
【図１２】システムの動作図である。
【図１３】システムの動作図である。
【図１４】システムの動作図である。
【図１５】システムの動作図である。
【図１６】システムの図である。
【図１７】システムの動作図である。
【図１８】システムの動作図である。
【図１９】システムの動作図である。
【図２０】システムの動作図である。
【図２１】第３の実施の形態におけるシステム構成を示すブロック図である。
【図２２】システムの動作図である。
【図２３】第４の実施の形態におけるシステム構成を示すブロック図である。
【図２４】システムの動作図である。
【図２５】システムの動作図である。
【図２６】プロセス消滅時および生成時のメカニズム図である。
【符号の説明】
【００９３】
１０  アドレスレジスタ
１００、１０１  ウェイ
１１０、１２０  データ属性格納部
１１１、１２１  ダーティビット格納部
１１２、１２２  バリッドビット格納部
１１３、１２３  タグ部
１１４、１２４  データ部
１１６、１２６  リフィル判定部
１１５、１２５  優先属性格納部
２１０、２２０  データ属性信号
２１１、２２１  ダーティビット信号
２１２、２２２  バリッドビット信号
２１３、２２３  優先属性信号
３００  セットインデックス
３０１  データ属性
３０２、３０３  データ格納依頼信号
１０００、１００１  プロセッサ
１００２、１００３、２００２、２００３、３００２、３００３  １次キャッシュメモリ
１００４、  ２次キャッシュメモリ
１００５  メインメモリ
１００６  データバス
１００７  データ属性信号
１００８  アドレスバス
１０１０  プロセスＩＤ
１０１１、１０２１  プロセッサ番号
１０１２、１０２２  プロセスＩＤ信号
１０１３、１０２３  内部アドレスバス
１０１４、１０２４  内部データバス
４００６  命令バス
４０１４、４０２４  内部命令バス
【図１】
0004753549.tif 000002
【図２】
0004753549.tif 000003
【図３】
0004753549.tif 000004
【図４】
0004753549.tif 000005
【図５】
0004753549.tif 000006
【図６】
0004753549.tif 000007
【図７】
0004753549.tif 000008
【図８】
0004753549.tif 000009
【図９】
0004753549.tif 000010
【図１０】
0004753549.tif 000011
【図１１】
0004753549.tif 000012
【図１２】
0004753549.tif 000013
【図１３】
0004753549.tif 000014
【図１４】
0004753549.tif 000015
【図１５】
0004753549.tif 000016
【図１６】
0004753549.tif 000017
【図１７】
0004753549.tif 000018
【図１８】
0004753549.tif 000019
【図１９】
0004753549.tif 000020
【図２０】
0004753549.tif 000021
【図２１】
0004753549.tif 000022
【図２２】
0004753549.tif 000023
【図２３】
0004753549.tif 000024
【図２４】
0004753549.tif 000025
【図２５】
0004753549.tif 000026
【図２６】
0004753549.tif 000027