(57)【要約】【課題】複数のアクセス要求に対する全ての応答が完了するまでの時間が長くなること。【解決手段】本発明にかかるキャッシュメモリ装置１００は、複数のタグメモリ１２１〜１２ｎと、各タグメモリに対応する複数のデータメモリ１３１〜１３ｎと、第１のアクセス要求ＡＲに対して複数のタグメモリ１２１〜１２ｎへのキャッシュヒット判定を行い、第２のアクセス要求に基づき複数のデータメモリのいずれかにアクセス処理中に、第１のアクセス要求ＡＲにおけるキャッシュヒットの際に特定されるタグメモリに対応するデータメモリが第２のアクセス要求に基づきアクセス処理中ではない場合に、当該データメモリへのアクセス処理を開始する制御部１１０と、を備える。【選択図】図１
2013210961.tif 000002
【特許請求の範囲】
【請求項１】
複数のタグメモリと、
各タグメモリに対応する複数のデータメモリと、
第１のアクセス要求に対して前記複数のタグメモリへのキャッシュヒット判定を行い、第２のアクセス要求に基づき前記複数のデータメモリのいずれかにアクセス処理中に、前記第１のアクセス要求におけるキャッシュヒットの際に特定されるタグメモリに対応するデータメモリが、前記第２のアクセス要求に基づきアクセス処理中ではない場合に、当該データメモリへのアクセス処理を開始する制御部と、
を備えるキャッシュメモリ装置。
【請求項２】
前記制御部は、前記アクセス処理として、前記データメモリから読み出したデータを前記アクセス要求の要求元へバースト転送することを特徴とする請求項１に記載のキャッシュメモリ装置。
【請求項３】
前記データメモリがアクセス処理中か否かを示すアクセス状態情報を記憶する記憶領域をさらに備え、
前記制御部は、
前記キャッシュヒットである場合に前記第２のアクセス要求に基づきアクセス処理を開始する際に、当該アクセス処理対象のデータメモリを処理中とし、当該アクセス処理が完了した後に、当該アクセス処理対象のデータメモリを処理中でないとして、それぞれ前記アクセス状態情報を更新し、
前記第１のアクセス要求が前記キャッシュヒットである場合に前記特定されるタグメモリに対応するデータメモリについて前記アクセス状態情報を参照して、当該アクセス状態情報が処理中でなければ、当該データメモリへのアクセス処理を開始する
ことを特徴とする請求項１に記載のキャッシュメモリ装置。
【請求項４】
複数のアクセス要求を受け付けて調停を行う調停部をさらに備え、
前記制御部は、
前記調停された後続のアクセス要求が前記キャッシュヒットの際に特定されるタグメモリに対応するデータメモリが、前記調停された先行のアクセス要求に基づきアクセス処理中である場合には、当該後続のアクセス要求を前記調停部へ戻す
ことを特徴とする請求項１に記載のキャッシュメモリ装置。
【請求項５】
前記アクセス要求が前記キャッシュヒット判定によりキャッシュミスと判定された場合に、当該アクセス要求が要求するデータを下位層のメモリから前記複数のデータメモリのいずれかへロードするロードストアユニットをさらに備え、
前記ロードストアユニットは、前記アクセス状態情報を参照して、アクセス処理中以外のデータメモリをロード先として決定する
ことを特徴とする請求項３に記載のキャッシュメモリ装置。
【請求項６】
前記アクセス要求が前記キャッシュヒット判定によりキャッシュミスと判定された場合に、当該アクセス要求が要求するデータを下位層のメモリから前記複数のデータメモリのいずれかへロードするロードストアユニットをさらに備え、
前記ロードストアユニットは、直前にロードされたデータメモリとは異なるデータメモリをロード先として決定する
ことを特徴とする請求項１に記載のキャッシュメモリ装置。
【請求項７】
前記アクセス要求が前記キャッシュヒット判定によりキャッシュミスと判定された場合に、当該アクセス要求が要求するデータを下位層のメモリから前記複数のデータメモリのいずれかへロードするロードストアユニットをさらに備え、
前記ロードストアユニットは、前記複数のデータメモリにおけるアクセス頻度に応じてロード先となるデータメモリを決定する
ことを特徴とする請求項１に記載のキャッシュメモリ装置。
【請求項８】
前記キャッシュメモリ装置は、セットアソシアティブ方式であることを特徴とする請求項１に記載のキャッシュメモリ装置。
【請求項９】
前記キャッシュメモリ装置は、複数のプロセッサコアにより共有され、各プロセッサコアから個別にアクセス要求を受け付けることを特徴とする請求項１に記載のキャッシュメモリ装置。
【請求項１０】
アソシアティブキャッシュメモリに対する第１のアクセス要求に基づき複数のウェイのいずれかにデータアクセス中に、当該第１のアクセス要求以外の第２のアクセス要求におけるキャッシュヒットにより特定されるウェイが、当該第１のアクセス要求に基づきデータアクセス中ではない場合、当該特定されるウェイに対するデータアクセスを開始するキャッシュメモリ装置。
【請求項１１】
第１のアクセス要求に基づきキャッシュヒットしたタグメモリを特定し、
当該第１のアクセス要求以外の第２のアクセス要求に基づき複数のデータメモリのいずれかにアクセス処理中に、前記第１のアクセス要求における前記特定されたタグメモリに対応するデータメモリが前記第２のアクセス要求に基づきアクセス処理中であるか否かを判定し、
前記アクセス処理中ではないと判定した場合に、前記第１のアクセス要求に基づきアクセス処理を開始する
キャッシュメモリの制御方法。
【請求項１２】
前記第２のアクセス要求に基づきアクセス処理を開始する際に、当該アクセス処理対象のデータメモリにロックをかけ、当該アクセス処理が完了した後に、当該アクセス処理対象のデータメモリのロックを解除し、
前記第１のアクセス要求に基づき特定されたタグメモリに対応するデータメモリについて前記ロックがかけられているか否かを判定し、
前記ロックがかけられていないと判定した場合に、前記第１のアクセス要求のアクセス処理対象のデータメモリにロックをかける
ことを特徴とする請求項１１に記載のキャッシュメモリの制御方法。
【請求項１３】
複数のアクセス要求を受け付けた場合に調停を行い、
前記調停により先行して処理されるアクセス要求を前記第２のアクセス要求とし、前記調停により前記第２のアクセス要求の後続に処理されるアクセス要求を前記第１のアクセス要求とし、
前記第１のアクセス要求のアクセス処理対象のデータメモリが、前記第２のアクセス要求に基づきアクセス処理中であると判定した場合に、当該第１のアクセス要求を再度、調停対象とする
ことを特徴とする請求項１１に記載のキャッシュメモリの制御方法。
【請求項１４】
前記第１のアクセス要求がキャッシュミスと判定された場合に、複数のデータメモリのうち前記ロックがかけられていないデータメモリをロード先として決定し、
前記第１のアクセス要求が要求するデータを下位層のメモリから前記ロード先へロードする
ことを特徴とする請求項１２に記載のキャッシュメモリの制御方法。
【請求項１５】
前記第１のアクセス要求がキャッシュミスと判定された場合に、直前にロードされたデータメモリとは異なるデータメモリをロード先として決定し、
前記第１のアクセス要求が要求するデータを下位層のメモリから前記ロード先へロードする
ことを特徴とする請求項１１に記載のキャッシュメモリの制御方法。
【請求項１６】
前記第１のアクセス要求がキャッシュミスと判定された場合に、複数のデータメモリにおけるアクセス頻度に応じてロード先となるデータメモリを決定し、
前記第１のアクセス要求が要求するデータを下位層のメモリから前記ロード先へロードする
ことを特徴とする請求項１１に記載のキャッシュメモリの制御方法。
【請求項１７】
複数のプロセッサコアと、
複数のタグメモリと、
各タグメモリに対応する複数のデータメモリと、
前記複数のプロセッサコアのいずれかからの第１のアクセス要求に対して前記複数のタグメモリへのキャッシュヒット判定を行い、当該第１のアクセス要求とは異なる第２のアクセス要求に基づき前記複数のデータメモリのいずれかにアクセス処理中に、前記第１のアクセス要求におけるキャッシュヒットの際に特定されるタグメモリに対応するデータメモリが、前記第２のアクセス要求に基づきアクセス処理中ではない場合に、当該データメモリへのアクセス処理を開始するキャッシュ制御部と、
を備える情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、キャッシュメモリ装置及びキャッシュメモリの制御方法並びに情報処理装置に関し、例えば、複数のアクセス要求を処理するためのキャッシュメモリ装置及びキャッシュメモリの制御方法並びに情報処理装置に関する。
【背景技術】
【０００２】
プロセッサの速度向上に対して、外部メモリの速度向上は限られる。そのため、プロセッサと外部メモリとの間にキャッシュメモリを設けることで、システム全体としてのメモリレイテンシやスループットの改善を図る手法が用いられている。
【０００３】
ここで、キャッシュメモリは、応答速度とコスト（容量）との関係から複数に階層化されていることが一般的である。すなわち、最上位階層の一次キャッシュは、高速アクセスが可能な代わりに、その高速性を維持することや消費電力のため容量が制限される。そこで、一次キャッシュは、プロセッサの役割を担うＩＰコア（Ｉｎｔｅｌｌｅｃｔｕａｌ  Ｐｒｏｐｅｒｔｙ  Ｃｏｒｅ）のプライベートキャッシュとして用いられることが多い。
【０００４】
一方、二次キャッシュ以降は、一次キャッシュと比べて容量が確保できる代わりに、アクセス速度が相対的に遅くなる。そこで、二次キャッシュ以降は、複数のＩＰコアから共有される共有キャッシュメモリとして用いられることが多い。ここで、共有キャッシュメモリは、複数のアクセス要求に対して応答する必要がある。そのためには、例えば、マルチバンクやマルチポートといった技術が挙げられる。
【０００５】
非特許文献１には、マルチバンクに関する技術が開示されている。非特許文献１にかかるＬ２キャッシュメモリは、命令又はデータのキャッシュであり、物理的に８バンクに分割されている。また、当該Ｌ２キャッシュメモリは、全ＣＰＵの間で論理的に共有されている。そして、当該Ｌ２キャッシュメモリは、キャッシュラインの物理アドレス（６４バイト）の下位ビットを用いてインターリーブするものである。
【０００６】
また、特許文献１には、マルチポートに関する技術が開示されている。特許文献１にかかるマルチポートキャッシュメモリは、各メモリセルについて複数の入出力ポートを有する。そのため、同一のキャッシュメモリに対して複数のアクセス要求が発生しても、複数のメモリセルに対して同時並行に処理が可能である。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００６−１３９４０１号公報
【非特許文献】
【０００８】
【非特許文献１】Luiz Andre Barroso, Kourosh Gharachorloo, Robert McNamara, Andreas Nowatzyk, Shaz Qadeer, Barton Sano, Scott Smith, Robert Stets, and Ben Verghese, "Piranha: A Scalable Architecture Based on Single-Chip Multiprocessing", International Symposium of Comupter Architecture 2000, pp 282 - 293
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかしながら、非特許文献１には、複数のアクセス要求に対する全ての応答が完了するまでの時間が長くなる場合があるという問題点がある。それは、複数のアクセス要求のアクセス対象のアドレスが同一のバンクを指す場合（いわゆるバンク競合の場合）に、各アクセス要求を並列に処理できないためである。したがって、バンク競合を減らすように並列に実行するプログラムをチューニングする必要などが生じる可能性がある。
【００１０】
尚、特許文献１にかかるマルチポートキャッシュメモリは、一次キャッシュを対象としたものである。一般にマルチポートメモリは、面積コストが大きく、二次キャッシュ以降のキャッシュメモリの様に容量が重要なキャッシュメモリには適さない。よって、特許文献１では、上述した課題を解決することができない。
【００１１】
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【００１２】
一実施の形態によれば、キャッシュメモリ装置は、第１のアクセス要求に対して複数のタグメモリへのキャッシュヒット判定を行い、第２のアクセス要求に基づき前記複数のデータメモリのいずれかにアクセス処理中に、前記第１のアクセス要求におけるキャッシュヒットの際に特定されるタグメモリに対応するデータメモリが、前記第２のアクセス要求に基づきアクセス処理中ではない場合に、当該データメモリへのアクセス処理を開始する。
【００１３】
また、他の実施の形態によれば、キャッシュメモリ装置は、アソシアティブキャッシュメモリに対する第１のアクセス要求に基づき複数のウェイのいずれかにデータアクセス中に、当該第１のアクセス要求以外の第２のアクセス要求におけるキャッシュヒットにより特定されるウェイが、当該第１のアクセス要求に基づきデータアクセス中ではない場合、当該特定されるウェイに対するデータアクセスを開始する。
【００１４】
さらに、他の実施の形態によれば、キャッシュメモリの制御方法は、第１のアクセス要求に基づきキャッシュヒットしたタグメモリを特定し、当該第１のアクセス要求以外の第２のアクセス要求に基づき複数のデータメモリのいずれかにアクセス処理中に、前記第１のアクセス要求における前記特定されたタグメモリに対応するデータメモリが当該第１のアクセス要求以外の第２のアクセス要求に基づきアクセス処理中であるか否かを判定し、前記アクセス処理中ではないと判定した場合に、前記第１のアクセス要求に基づきアクセス処理を開始する。
【００１５】
また、他の実施の形態によれば、情報処理装置は、複数のプロセッサコアのいずれかからの第１のアクセス要求に対して複数のタグメモリへのキャッシュヒット判定を行い、当該第１のアクセス要求とは異なる第２のアクセス要求に基づき前記複数のデータメモリのいずれかにアクセス処理中に、前記第１のアクセス要求におけるキャッシュヒットの際に特定されるタグメモリに対応するデータメモリが、前記第２のアクセス要求に基づきアクセス処理中ではない場合に、当該データメモリへのアクセス処理を開始する。
【発明の効果】
【００１６】
前記一実施の形態によれば、複数のアクセス要求に対する全ての応答が完了するまでの時間を短縮することができる。
【図面の簡単な説明】
【００１７】
【図１】本実施の形態１にかかるキャッシュメモリ装置の構成を示すブロック図である。
【図２】本実施の形態１にかかるキャッシュメモリ装置の制御処理の流れを示すフローチャートである。
【図３】本実施の形態２にかかるマルチプロセッサシステムの構成を示すブロック図である。
【図４】本実施の形態２にかかるキャッシュメモリ装置の制御処理の流れを示すフローチャートである。
【図５】本実施の形態２にかかるキャッシュメモリ装置の動作を説明するタイミングチャートである。
【図６】本実施の形態２にかかるキャッシュメモリ装置の動作を説明するタイミングチャートである。
【図７】本実施の形態２にかかるキャッシュメモリ装置の動作を説明するタイミングチャートである。
【図８】本実施の形態３にかかるキャッシュメモリ装置の制御処理の流れを示すフローチャートである。
【図９】本実施の形態６にかかる情報処理装置の構成を示すブロック図である。
【図１０】関連技術にかかるマルチバンクによるプロセッサシステムの構成を示すブロック図である。
【発明を実施するための形態】
【００１８】
以下では、上述した課題を解決するための手段を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。各図面において、同一要素には同一の符号が付されており、説明の明確化のため、必要に応じて重複説明は省略する。
【００１９】
＜実施の形態１＞
図１は、本実施の形態１にかかるキャッシュメモリ装置１００の構成を示すブロック図である。キャッシュメモリ装置１００は、複数のアクセス要求ＡＲを受け付けて、それぞれの要求元に対する応答としてのデータ転送ＤＴを部分的に並列処理するものである。尚、アクセス要求に対する応答は、データ転送の他、書き込み処理等のデータメモリへのアクセス処理を含むものとする。キャッシュメモリ装置１００は、制御部１１０と、タグメモリ群１２０と、データメモリ群１３０とを備える。
【００２０】
タグメモリ群１２０は、複数のタグメモリ１２１〜１２ｎを含む。データメモリ群１３０は、複数のデータメモリ１３１〜１３ｎを含む。ここで、タグメモリ１２１〜１２ｎと、データメモリ１３１〜１３ｎとはそれぞれが対応するものである。例えば、タグメモリ１２１とデータメモリ１３１とが対応し、この対応関係をウェイＷ１と定義する。同様に、タグメモリ１２２とデータメモリ１３２との対応関係がウェイＷ２であり、・・・タグメモリ１２ｎとデータメモリ１３ｎとの対応関係がウェイＷｎである。尚、タグメモリ１２１〜１２ｎ並びにデータメモリ１３１〜１３ｎは、それぞれ異なるメモリモジュールとする。メモリモジュールとしては、例えば、ＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）が採用できる。そのため、タグメモリ１２１〜１２ｎには並列にキャッシュヒット判定のアクセスが可能である。また、データメモリ１３１〜１３ｎには並列にデータアクセス処理が可能である。例えば、データメモリ１３１とデータメモリ１３２から並列にデータ転送が可能である。
【００２１】
制御部１１０は、第１のアクセス要求ＡＲに対して複数のタグメモリ１２１〜１２ｎへのキャッシュヒット判定を行う。そして、制御部１１０は、第２のアクセス要求に基づき複数のデータメモリのいずれかにアクセス処理中に、第１のアクセス要求ＡＲにおけるキャッシュヒットの際に特定されるタグメモリに対応するデータメモリが、第２のアクセス要求に基づきアクセス処理中ではない場合に、当該データメモリへのアクセス処理を開始する。つまり、制御部１１０は、アクセス要求ＡＲがキャッシュヒットしたウェイと、他のアクセス要求がキャッシュヒットしたウェイとが異なるか否かを判定し、異なると判定した場合に当該ウェイへのデータアクセス処理を開始する。また、他のアクセス要求は、アクセス要求ＡＲに先行して受け付けられたものとする。特に、制御部１１０は、アクセス処理として、データメモリから読み出したデータをアクセス要求ＡＲの要求元へバースト転送する。
【００２２】
これにより、複数のアクセス要求のデータ転送を部分的に並列処理できるため、全体としてデータ転送処理時間を短縮することができる。
【００２３】
図２は、本実施の形態１にかかるキャッシュメモリ装置１００の制御処理の流れを示すフローチャートである。まず、制御部１１０は、受け付けたアクセス要求ＡＲがキャッシュヒットであるか否かを判定する（Ｓ１０１）。ステップＳ１０１においてキャッシュヒットであると判定した場合、制御部１１０は、ヒットしたウェイを特定する（Ｓ１０２）。すなわち、制御部１１０は、第１のアクセス要求に基づきキャッシュヒットしたタグメモリを特定する。
【００２４】
ここで、この時点で少なくともアクセス要求ＡＲにより先行又は同時に受け付けられたアクセス要求に基づきデータメモリ群１３０内のいずれかのデータメモリに対するアクセス処理が実行中であるものとする。このとき、制御部１１０は、特定されたウェイにかかるデータメモリがアクセス処理中であるか否かを判定する（Ｓ１０３）。
【００２５】
ステップＳ１０３においてアクセス処理中であると判定した場合、制御部１１０は、アクセス要求ＡＲに基づくアクセス処理を待機する（Ｓ１０４）。そして、一定時間後に、再度、ステップＳ１０３を実行する。また、ステップＳ１０３においてアクセス処理中でないと判定した場合、制御部１１０は、アクセス要求ＡＲに基づきアクセス処理を開始する（Ｓ１０５）。例えば、第１のアクセス要求以外の第２のアクセス要求に基づきデータメモリ１３２に対してアクセス処理中であっても、ステップＳ１０２により特定されたタグメモリに対応するデータメモリ１３１が第２のアクセス要求に基づきアクセス処理中ではないため、第１のアクセス要求に基づきアクセス処理を開始する。また、ステップＳ１０４による待機の間に第２のアクセス要求に基づくアクセス処理が完了すれば、ステップＳ１０３においてアクセス処理中でないと判定される。
【００２６】
また、ステップＳ１０１においてキャッシュミスであると判定した場合、制御部１１０は、該当データのロード処理する（Ｓ１０６）。
【００２７】
そのため、例えば、先行するアクセス要求に基づいて任意のデータメモリからデータ転送中に、後続するアクセス要求を受け付けた場合、キャッシュメモリ装置１００は、後続するアクセス要求のアクセス対象として特定されたデータメモリが、先行するアクセス要求に基づきデータ転送中でなければ、後続するアクセス要求のデータ転送を開始する。そのため、先行するアクセス要求と後続するアクセス要求とに基づくデータ転送が部分的に並列実行される。よって、先行するアクセス要求のデータ転送が完了するまで待ち合わせるようなシーケンシャルに処理する場合に比べて、全体のデータ転送時間を短縮することができる。
【００２８】
尚、本実施の形態１にかかるキャッシュメモリ装置１００は、次のように言い換えることができる。すなわち、キャッシュメモリ装置は、アソシアティブキャッシュメモリに対する第１のアクセス要求に基づき複数のウェイのいずれかにデータアクセス中に、当該第１のアクセス要求以外の第２のアクセス要求におけるキャッシュヒットにより特定されるウェイが、当該第１のアクセス要求に基づきデータアクセス中ではない場合、当該特定されるウェイに対するデータアクセスを開始する。
【００２９】
このように、実施の形態１は例えば、通常の複数ウェイを持ったセットアソシアティブキャッシュを拡張することで実現可能である。すなわち、キャッシュタグはシーケンシャルにサーチし、その結果によって、ウェイがアクセス処理中でなければ、並列にデータアクセスをできるようにするものである。つまり、アクセスするウェイが異なれば、アクセス処理中でないため、異なったイニシエータから並列アクセス可能となり、スループットが向上する。特に、バースト転送によって、タグ引きサイクルに比べて、データアレイへのアクセスサイクルが長くなる場合に有効である。
【００３０】
上述したように共有キャッシュメモリは、複数のＩＰコアからのアクセス要求に対して応答する必要が生じる。そのため、プライベートキャッシュのヒット率が低いアプリケーション実行時などには、この共有キャッシュメモリがアクセスネックとなり、性能を律速する可能性が生じる。
【００３１】
続いて、以下に非特許文献１における課題と、本実施の形態１による課題の解決及び効果について詳述する。共有キャッシュメモリには、上述の通りキャッシュネックが存在するが、これに対して上述したマルチバンク方式のキャッシュメモリが利用されていることが多い。マルチバンク方式は、アドレスの特定ビットを識別ビットとして割り付け、複数のキャッシュメモリの中から識別ビットによって該当するキャッシュメモリを決定してアクセスを行うものである。これにより、識別ビット（バンクアドレス）の異なるキャッシュメモリに対しては、異なったＩＰコアからのアクセス要求を許容することができる。
【００３２】
図１０は、非特許文献１にかかるマルチバンクによるプロセッサシステムの構成を示すブロック図である。Ｌ２キャッシュメモリＬ２０〜Ｌ２７は、命令又はデータのキャッシュであり、物理的に８バンクに分割されている。また、Ｌ２キャッシュメモリＬ２０〜Ｌ２７は、全ＣＰＵの間で論理的に共有されている。そして、Ｌ２キャッシュメモリＬ２０〜Ｌ２７は、キャッシュラインの物理アドレス（６４バイト）の下位ビットを用いてインターリーブするものである。これは、非特許文献１のpp285.左側の15-17行目に、"The L2 banks are interleaved using the lower address bits of a cache line's physical address (64-byte line)."と記載されていることから明らかである。
【００３３】
そのため、非特許文献１では、例えば、２つのアクセス要求が１つのＬ２キャッシュメモリ（バンク）に対してアクセスする場合には、一方のアクセス要求によるキャッシュのヒット判定を行い、ヒットした場合にＬ２キャッシュメモリから該当データを読み出し、要求元へデータ転送を行う。そして、当該データ転送が完了した後に、他方のアクセス要求に対するヒット判定等の処理が開始される。つまり、バンク競合の場合には、アクセス要求をシーケンシャルに処理せざるを得ず、結果として、複数のアクセス要求に対する全ての応答が完了するまでの時間が長くなってしまう。
【００３４】
また、非特許文献１のようなマルチバンク方式では、アドレスによって一意にアクセスするキャッシュメモリが決定できるため、構成が容易となる。しかし、次のような主な３つの課題が挙げられる。１つ目は、複数のキャッシュヒットミス判定などの制御論理が必要なことである。２つ目は、バンクアドレスを分散させるチューニングが必要になることである。これは、バンクアドレスが分散しない場合には、特定のキャッシュメモリのバンクのみにアクセスが集中するためである。３つ目は、キャッシュメモリに対するアクセス負荷に対して、電源切断によるキャッシュ容量の増減などに対応しづらいことである。
【００３５】
そこで、１バンク内を複数のウェイにより管理するセットアソシアティブ方式を用いることが考えられる。セットアソシアティブ方式では、あるアドレスのデータについて複数のキャッシュエントリ、つまりウェイのいずれかに格納することが可能である。しかし、セットアソシアティブ方式では、あるアクセス要求についてキャッシュヒットした場合に、ヒットしたウェイにおけるデータの転送が完了するまでの間、他のアクセス要求についての処理を進められない。つまり、並列したアクセス要求に対応していない。
【００３６】
ここで、このような共有キャッシュメモリは、上位のプライベートキャッシュを介したアクセスが中心となるため、複数個のデータを何回かのサイクルに分けて転送するバースト転送がほとんどになる。ここで、シングルデータ転送では、転送ごとにキャッシュタグを比較する必要が生じる。一方、バースト転送では、転送開始時のみキャッシュタグを比較するだけでよい。つまり、バースト転送では、１サイクル目でキャッシュタグの比較を行い、キャッシュヒットした場合には、データメモリに格納されたデータを複数サイクルによりバースト転送する。上述の通り、キャッシュタグへのヒットミス判定は、１サイクルで可能であるにもかかわらず、バースト転送の間のサイクル中の間も、他のアクセス要求についてのヒットミス判定が待機させられていた。
【００３７】
そこで、本実施の形態１では、複数のキャッシュエントリの候補すなわちウェイを、キャッシュタグアクセス後に並列にアクセスするものである。すなわち、本実施の形態１は、複数のアクセス要求に対して、タグメモリへのアクセスは直列に行い、データメモリへのアクセスは並列に行うキャッシュメモリ装置である。これにより、スループット向上が可能となり、マルチバンク方式に匹敵するスループット向上が可能になる。しかも、マルチバンク方式キャッシュのチューニングコスト、容量増減、論理量などの課題を解決できる。
【００３８】
＜実施の形態２＞
本実施の形態２では、上述した実施の形態１の具体的な実施例であり、複数のアクセス要求を同時に受け付けた場合に、アクセス要求を調停するものである。
【００３９】
図３は、本実施の形態２にかかるマルチプロセッサシステム２００の構成を示すブロック図である。マルチプロセッサシステム２００は、ＩＰコア２１１〜２１４と、Ｌ１キャッシュ２２１〜２２４と、キャッシュメモリ装置２３０と、ＳＤＲＡＭ（Ｓｙｎｃｈｒｏｎｏｕｓ  Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）２４０とを備える。つまり、マルチプロセッサシステム２００は、Ｌ１キャッシュ２２１〜２２４と、Ｌ２キャッシュであるキャッシュメモリ装置２３０と、さらに下位層のＳＤＲＡＭ２４０との階層メモリを有する。
【００４０】
ＩＰコア２１１〜２１４は、データの読み出しや書き込みをするためのアクセス要求を階層メモリに対して行う。ＩＰコア２１１〜２１４は、それぞれＬ１キャッシュ２２１〜２２４を備える。ＩＰコア２１１〜２１４は、Ｌ１キャッシュミスの場合、アクセス要求バスＢ２０を介してアービタスケジューラ２３１へアクセス要求を発行する。尚、ＩＰコアの数はこれに限定されない。
【００４１】
アービタスケジューラ２３１は、複数のアクセス要求を受け付け、調停を行った上で、Ｌ２ＨＩＴ／ＭＩＳＳ判定部２３２に対して一つずつアクセス要求を発行する。尚、調停を実現するためのアルゴリズム等は公知なもののいずれを採用しても構わない。Ｌ２ＨＩＴ／ＭＩＳＳ判定部２３２は、アクセス要求に応じてＷＡＹ０タグ２３３０及びＷＡＹ１タグ２３３１に対してキャッシュのヒット判定を行う。
【００４２】
ＷＡＹ０データアレイ２３５０及びＷＡＹ１データアレイ２３５１は、それぞれ独立したＳＲＡＭで構成され、ＳＤＲＡＭ２４０内の一部のアドレスに対応するデータをラインごとに格納しているデータメモリである。尚、ＳＤＲＡＭ２４０内の同一のアドレスに対応したデータは、ＷＡＹ０データアレイ２３５０及びＷＡＹ１データアレイ２３５１のいずれにも格納可能である。
【００４３】
ＷＡＹ０アクセス状態フラグ２３４０は、ＷＡＹ０データアレイ２３５０が読出し又は書込みのアクセス処理が処理中であるか否かを示すアクセス状態情報である。同様に、ＷＡＹ１アクセス状態フラグ２３４１は、ＷＡＹ１データアレイ２３５１が読出し又は書込みのアクセス処理が処理中であるか否かを示すアクセス状態情報である。ＷＡＹ０アクセス状態フラグ２３４０及びＷＡＹ１アクセス状態フラグ２３４１は、少なくともＬ２ＨＩＴ／ＭＩＳＳ判定部２３２が参照可能なデータである。例えば、ＷＡＹ０アクセス状態フラグ２３４０は、例えば、ＷＡＹ０データアレイ２３５０内の制御領域に格納されるものである。同様に、ＷＡＹ１アクセス状態フラグ２３４１は、ＷＡＹ１データアレイ２３５１内の制御領域に格納されるものである。または、キャッシュメモリ装置２３０内の記憶領域に管理テーブルとしてアクセス状態情報を格納してもよい。ここで、管理テーブルは、データメモリがアクセス処理中か否かを示す情報を格納するものである。
【００４４】
また、アクセス状態フラグとしては、"Ｆｒｅｅ"と"Ｂｕｓｙ"とのいずれかを示す値であればよい。例えば、"０"が"Ｆｒｅｅ"であり、"１"が"Ｂｕｓｙ"であってもよく、これ以外の例であってもよい。ここで、"Ｆｒｅｅ"は「アクセス処理中でない」ことを示し、"Ｂｕｓｙ"は「アクセス処理中である」ことを示すものである。また、Ｌ２ＨＩＴ／ＭＩＳＳ判定部２３２は、ウェイにロックをかけるときには、アクセス状態フラグを"１"に更新し、ウェイのロックを解除するときには、アクセス状態フラグを"０"に更新する。
【００４５】
ＷＡＹ０タグ２３３０は、ＷＡＹ０データアレイ２３５０の各ラインに対応するアドレス情報である。同様に、ＷＡＹ１タグ２３３１は、ＷＡＹ１データアレイ２３５１の各ラインに対応するアドレス情報である。尚、ＷＡＹ０タグ２３３０及びＷＡＹ１タグ２３３１は、１枚のＳＲＡＭで実現しても構わない。
【００４６】
ＷＡＹ０タグ２３３０、ＷＡＹ０アクセス状態フラグ２３４０及びＷＡＹ０データアレイ２３５０は、ＷＡＹ０として対応付けられている。同様に、ＷＡＹ１タグ２３３１、ＷＡＹ１アクセス状態フラグ２３４１及びＷＡＹ１データアレイ２３５１は、ＷＡＹ１として対応付けられている。尚、図３では、２ウェイのキャッシュメモリ装置を例示しているが、ウェイ数は２以上であればよい。
【００４７】
ＳＤＲＡＭコントローラ２３６は、Ｌ２ＨＩＴ／ＭＩＳＳ判定部２３２においてキャッシュミスと判定されたアクセス要求に応じて、ＳＤＲＡＭ２４０へのアクセスを制御し、応答データを要求元へ転送し、かつ、応答データをＷＡＹ０データアレイ２３５０又はＷＡＹ１データアレイ２３５１にロードする。
【００４８】
ＳＤＲＡＭ２４０は、メインメモリであり、Ｌ１キャッシュ２２１〜２２４並びにＷＡＹ０データアレイ２３５０及びＷＡＹ１データアレイ２３５１に格納されないデータも含めて格納されている。
【００４９】
上述したＬ２ＨＩＴ／ＭＩＳＳ判定部２３２は、制御部１１０の一例である。そのため、本実施の形態２にかかる制御部は、キャッシュヒットである場合にアクセス要求に基づきアクセス処理を開始する際に、当該アクセス処理対象のデータメモリを処理中とし、当該アクセス処理が完了した後に、当該アクセス処理対象のデータメモリを処理中でないとして、それぞれアクセス状態情報を更新する。言い換えると、当該制御部は、アクセス処理の開始時に、当該アクセス処理対象のデータメモリに排他制御のためにロックをかける。また、当該制御部は、アクセス処理の完了後に、当該アクセス処理対象のデータメモリのロックを解除する。また、当該制御部は、アクセス要求がキャッシュヒットである場合に特定されるタグメモリに対応するデータメモリについてアクセス状態情報を参照して、当該アクセス状態情報が処理中でなければ、当該データメモリへのアクセス処理を開始する。このように、アクセス状態情報を用いることにより、アクセス処理中であるか否かについて、データメモリ単位、つまりウェイ単位で容易に確認することが可能となり、排他制御を容易に実現することができる。
【００５０】
また、上述したアービタスケジューラ２３１は、複数のアクセス要求を受け付けて調停を行う調停部である。そして、上記制御部は、調停された後続のアクセス要求がキャッシュヒットの際に特定されるタグメモリに対応するデータメモリが、調停された先行のアクセス要求に基づきアクセス処理中である場合には、当該後続のアクセス要求を調停部へ戻す。このように、調停部を用いることにより、複数のアクセス要求が同時に発行された場合であっても、１サイクルに調停された一つの要求のヒットミス判定を行いつつ、アクセス処理については上記同様に、部分的に並列処理することができる。
【００５１】
図４は、本実施の形態２にかかるキャッシュメモリ装置２３０の制御処理の流れを示すフローチャートである。まず、アービタスケジューラ２３１は、複数のアクセス要求を受け付ける（Ｓ２０１）。次に、アービタスケジューラ２３１は、複数のアクセス要求を調停する（Ｓ２０２）。そして、アービタスケジューラ２３１は、処理対象のアクセス要求を選択する（Ｓ２０３）。つまり、アービタスケジューラ２３１は、複数のアクセス要求のうち、調停により最優先と判定されたアクセス要求をＬ２ＨＩＴ／ＭＩＳＳ判定部２３２へ通知する。例えば、２つのアクセス要求を受け付けた場合、調停により先行して処理されるアクセス要求を上述した第２のアクセス要求とし、調停により第２のアクセス要求の後続に処理されるアクセス要求を上述した第１のアクセス要求とする。
【００５２】
そして、Ｌ２ＨＩＴ／ＭＩＳＳ判定部２３２は、Ｌ２キャッシュのヒットミス判定を行う（Ｓ２０４）。つまり、Ｌ２ＨＩＴ／ＭＩＳＳ判定部２３２は、当該アクセス要求がキャッシュヒットであるか否かを判定する。具体的には、Ｌ２ＨＩＴ／ＭＩＳＳ判定部２３２は、アクセス要求に含まれるアドレスとＷＡＹ０タグ２３３０及びＷＡＹ１タグ２３３１とを照合し、一致するか否かを判定し、一致する場合にはキャッシュヒットと判定する。
【００５３】
ステップＳ２０４においてキャッシュヒットと判定した場合、Ｌ２ＨＩＴ／ＭＩＳＳ判定部２３２は、アクセス対象のウェイのフラグが"Ｆｒｅｅ"であるか否かを判定する（Ｓ２０５）。Ｌ２ＨＩＴ／ＭＩＳＳ判定部２３２は、アクセス状態情報を参照して判定する。例えば、ＷＡＹ０がキャッシュヒットした場合、Ｌ２ＨＩＴ／ＭＩＳＳ判定部２３２は、ＷＡＹ０アクセス状態フラグ２３４０のフラグが"０"であれば、"Ｆｒｅｅ"と判定し、"１"であれば"Ｂｕｓｙ"と判定する。つまり、Ｌ２ＨＩＴ／ＭＩＳＳ判定部２３２は、第１のアクセス要求に基づき特定されたタグメモリに対応するデータメモリについて、ロックがかけられているか否かにより、当該データメモリが前記アクセス処理中であるか否かを判定する。
【００５４】
ステップＳ２０５においてアクセス対象のウェイのフラグが"Ｆｒｅｅ"でない、つまり"Ｂｕｓｙ"であると判定した場合、当該アクセス要求は、アービタスケジューラ２３１に戻されて、再度、調停が行われる。つまり、アービタスケジューラ２３１は、第１のアクセス要求のアクセス処理対象のデータメモリが、第２のアクセス要求に基づきアクセス処理中であると判定した場合に、当該第１のアクセス要求を再度、調停対象とする。例えば、先行するアクセス要求により同一のウェイに対して既にアクセス処理が開始されている場合には、同一のＳＲＡＭに対する処理は行えないため、所定時間後にアクセスする必要がある。
【００５５】
ステップＳ２０５においてアクセス対象のウェイのフラグが"Ｆｒｅｅ"であると判定した場合、Ｌ２ＨＩＴ／ＭＩＳＳ判定部２３２は、アクセス対象のウェイのフラグを"Ｂｕｓｙ"に更新する（Ｓ２０６）。つまり、Ｌ２ＨＩＴ／ＭＩＳＳ判定部２３２は、アクセス要求に基づきアクセス処理を開始する際に、当該アクセス処理対象のデータメモリにロックをかけて、アクセス処理中とする。言い換えると、Ｌ２ＨＩＴ／ＭＩＳＳ判定部２３２は、ロックがかけられていないと判定した場合に、第１のアクセス要求のアクセス処理対象のデータメモリにロックをかける。これにより、当該ウェイに対して後続のアクセス要求に対してアクセス処理を排除できる。
【００５６】
例えば、並行してアクセス処理が行われているアクセス要求がない場合には、いずれのウェイであっても"Ｆｒｅｅ"である。また、本実施の形態で顕著な場合としては、既に他のアクセス要求によりアクセス処理が開始されている場合である。このとき、他のアクセス要求によりアクセスされているウェイについては、"Ｂｕｓｙ"となっているが、それ以外のウェイについて"Ｆｒｅｅ"であれば、アクセス可能である。よって、このような場合には、複数のアクセス要求に対してアクセス処理を並列実行することができる。
【００５７】
そして、Ｌ２ＨＩＴ／ＭＩＳＳ判定部２３２は、対象のデータアレイへのアクセス処理を開始する（Ｓ２０７）。例えば、アクセス要求が読出し命令である場合、要求元のＩＰコアに対してデータ転送が行われる。
【００５８】
データ転送の完了後、Ｌ２ＨＩＴ／ＭＩＳＳ判定部２３２は、対象のタグを更新し、かつ、ウェイのフラグを"Ｆｒｅｅ"に更新する（Ｓ２０８）。つまり、Ｌ２ＨＩＴ／ＭＩＳＳ判定部２３２は、当該アクセス処理が完了した後に、当該アクセス処理対象のデータメモリのロックを解除して、アクセス処理中でないものとする。これにより、以後のアクセス要求については当該ウェイに対してアクセス処理が可能となる。
【００５９】
ステップＳ２０４においてキャッシュミスと判定した場合、ＳＤＲＡＭコントローラ２３６は、ロード対象のウェイを決定する（Ｓ２０９）。そして、ＳＤＲＡＭコントローラ２３６は、ロード対象のウェイのフラグが"Ｆｒｅｅ"であるか否かを判定する（Ｓ２１０）。ステップＳ２０９においてアクセス対象のウェイのフラグが"Ｆｒｅｅ"であると判定した場合、Ｌ２ＨＩＴ／ＭＩＳＳ判定部２３２は、ロード対象のウェイのフラグを"Ｂｕｓｙ"に更新する（Ｓ２１１）。その後、ＳＤＲＡＭコントローラ２３６は、ロード対象のウェイに対してデータをロードする（Ｓ２１２）。
【００６０】
図５は、本実施の形態２にかかるキャッシュメモリ装置２３０の動作を説明するタイミングチャートである。ここでは、アクセス要求ＸがＷＡＹ０をアクセス対象とし、アクセス要求ＹがＷＡＹ1をアクセス対象とする例を示す。
【００６１】
まず、キャッシュメモリ装置２３０がＩＰコアＡ及びＢからそれぞれアクセス要求Ｘ及びＹを同時に受け付けたものとする（Ｓ２０１）。そのため、アービタスケジューラ２３１は、アクセス要求Ｘ及びＹの調停を行う（Ｓ２０２）。このとき、調停によりアクセス要求Ｘが先行となったものとする。よって、次のサイクルにて、アービタスケジューラ２３１は、アクセス要求Ｘを処理対象として選択する（Ｓ２０３）。
【００６２】
続いて、Ｌ２ＨＩＴ／ＭＩＳＳ判定部２３２は、アクセス要求Ｘについてヒットミス判定を行う（Ｓ２０４）。つまり、Ｌ２ＨＩＴ／ＭＩＳＳ判定部２３２は、ＷＡＹ０タグ２３３０及びＷＡＹ１タグ２３３１に共にヒットミス判定を行う。ここでは、ＷＡＹ０でキャッシュヒットしたものとする（Ｓ２０４でＹＥＳ）。
【００６３】
そこで、Ｌ２ＨＩＴ／ＭＩＳＳ判定部２３２は、ＷＡＹ０アクセス状態フラグ２３４０が"Ｆｒｅｅ"か否かを判定する（Ｓ２０５）。ここでは、ＷＡＹ０アクセス状態フラグ２３４０が"Ｆｒｅｅ"であるものとする。そのため、Ｌ２ＨＩＴ／ＭＩＳＳ判定部２３２は、ＷＡＹ０アクセス状態フラグ２３４０を"Ｂｕｓｙ"に更新し（Ｓ２０６）、ＷＡＹ０データアレイ２３５０へのアクセス処理を開始する（Ｓ２０７）。ここでは、アクセス要求Ｘがデータ読出しであるものとする。よって、ヒットミス判定の次のサイクルからＷＡＹ０データアレイ２３５０からＤ０、Ｄ１、・・・Ｄ１５と読み出され、ＩＰコアＡへデータ転送される。尚、この例では、データ転送に１６サイクル要するが、１ライン当たりのデータ量に応じて３２、６４サイクル等、２以上のサイクルを要することが一般的である。
【００６４】
また、ＷＡＹ０データアレイ２３５０からＤ０を読み出すサイクルと同時に、アービタスケジューラ２３１は、後続のアクセス要求Ｙを処理対象として選択し（Ｓ２０３）、Ｌ２ＨＩＴ／ＭＩＳＳ判定部２３２は、アクセス要求Ｙのヒットミス判定を行う（Ｓ２０４）。ここでは、ＷＡＹ１でキャッシュヒットしたものとする（Ｓ２０４でＹＥＳ）。
【００６５】
そこで、Ｌ２ＨＩＴ／ＭＩＳＳ判定部２３２は、ＷＡＹ１アクセス状態フラグ２３４１が"Ｆｒｅｅ"か否かを判定する（Ｓ２０５）。ここでは、ＷＡＹ１アクセス状態フラグ２３４１が"Ｆｒｅｅ"であるものとする。そのため、Ｌ２ＨＩＴ／ＭＩＳＳ判定部２３２は、ＷＡＹ１アクセス状態フラグ２３４１を"Ｂｕｓｙ"に更新し（Ｓ２０６）、ＷＡＹ１データアレイ２３５１へのアクセス処理を開始する（Ｓ２０７）。ここでは、アクセス要求Ｙがデータ読出しであるものとする。よって、ヒットミス判定の次のサイクル、つまり、ＷＡＹ０データアレイ２３５０からＤ１が読み出されるタイミングからＷＡＹ１データアレイ２３５１からＤ０、Ｄ１、・・・Ｄ１５と読み出され、ＩＰコアＢへデータ転送される。このとき、アクセス要求Ｘ及びＹに基づくデータ転送が部分的に並列処理される。
【００６６】
その後、Ｌ２ＨＩＴ／ＭＩＳＳ判定部２３２は、ＷＡＹ０データアレイ２３５０からＤ１５が読み出されたことにより、ＷＡＹ０アクセス状態フラグ２３４０を"Ｆｒｅｅ"に更新する（Ｓ２０８）。また、Ｌ２ＨＩＴ／ＭＩＳＳ判定部２３２は、ＷＡＹ１データアレイ２３５１からＤ１５が読み出されたことにより、ＷＡＹ１アクセス状態フラグ２３４１を"Ｆｒｅｅ"に更新する（Ｓ２０８）。
【００６７】
このように、図５の例では、同時に発行されたアクセス要求ＸとＹに対して、わずか１サイクル差で全てのデータ転送を完了することができる。
【００６８】
図６は、本実施の形態２にかかるキャッシュメモリ装置２３０の動作を説明するタイミングチャートである。ここでは、アクセス要求Ｘ及びＹが共にＷＡＹ０をアクセス対象とする例を示す。以下、図５との違いを中心に説明する。
【００６９】
まず、先行のアクセス要求Ｘに基づくアクセス処理としてＷＡＹ０データアレイ２３５０からＤ０が読み出される。このときのサイクルと同時に、アービタスケジューラ２３１は、後続のアクセス要求Ｙを処理対象として選択し（Ｓ２０３）、Ｌ２ＨＩＴ／ＭＩＳＳ判定部２３２は、アクセス要求Ｙのヒットミス判定を行う（Ｓ２０４）。ここでは、再び、ＷＡＹ０でキャッシュヒットしたものとする（Ｓ２０４でＹＥＳ）。
【００７０】
そこで、Ｌ２ＨＩＴ／ＭＩＳＳ判定部２３２は、ＷＡＹ０アクセス状態フラグ２３４０が"Ｆｒｅｅ"か否かを判定する（Ｓ２０５）。ここでは、ＷＡＹ０アクセス状態フラグ２３４０が"Ｂｕｓｙ"であるため（Ｓ２０５でＮＯ）、アクセス要求Ｙは、再度、アービタスケジューラ２３１における調停が行われる。その後、Ｌ２ＨＩＴ／ＭＩＳＳ判定部２３２は、ＷＡＹ０データアレイ２３５０からＤ１５が読み出されたことにより、ＷＡＹ０アクセス状態フラグ２３４０を"Ｆｒｅｅ"に更新する（Ｓ２０８）。そして、アクセス要求ＹについてＷＡＹ０に対するアクセスが可能となり、データ転送が開始される。
【００７１】
このように、アクセス状態フラグにより同一のウェイに対する同時アクセスを適切に排除し、応答データの整合性を保つことができる。
【００７２】
図７は、本実施の形態２にかかるキャッシュメモリ装置２３０の動作を説明するタイミングチャートである。ここでは、アクセス要求Ｘ及びＹが共にＷＡＹ０をアクセス対象とし、アクセス要求ＺがＷＡＹ１をアクセス対象とする例を示す。以下、図５及び図６との違いを中心に説明する。
【００７３】
まず、キャッシュメモリ装置２３０がＩＰコアＡ及びＢからそれぞれアクセス要求Ｘ及びＹを同時に受け付けたものとする（Ｓ２０１）。そして、調停により、アクセス要求Ｘが先行となったものとする。そして、Ｌ２ＨＩＴ／ＭＩＳＳ判定部２３２は、アクセス要求Ｘについてヒットミス判定を行い、ＷＡＹ０でキャッシュヒットしたものとする（Ｓ２０４でＹＥＳ）。
【００７４】
同時に、キャッシュメモリ装置２３０は、ＩＰコアＣからアクセス要求Ｚを受け付けたものとする。このとき、アービタスケジューラ２３１は、アクセス要求Ｙ及びＺ及びＹの調停を行う（Ｓ２０２）。このとき、調停によりアクセス要求Ｙが先行となったものとする。よって、次のサイクルにて、アービタスケジューラ２３１は、アクセス要求Ｙを処理対象として選択する（Ｓ２０３）。
【００７５】
続いて、Ｌ２ＨＩＴ／ＭＩＳＳ判定部２３２は、アクセス要求Ｙについてヒットミス判定を行う（Ｓ２０４）。このとき、上述した通り、並行して、アクセス要求Ｘに基づくデータ転送が開始される。そして、図６と同様に、ＷＡＹ０アクセス状態フラグ２３４０が"Ｂｕｓｙ"であるため、アクセス要求Ｙは、再度、アービタスケジューラ２３１における調停が行われる。
【００７６】
次に、アクセス要求Ｘに基づきＷＡＹ０データアレイ２３５０からＤ１を読み出すサイクルと同時に、アービタスケジューラ２３１は、後続のアクセス要求Ｚを処理対象として選択し（Ｓ２０３）、Ｌ２ＨＩＴ／ＭＩＳＳ判定部２３２は、アクセス要求Ｚのヒットミス判定を行う（Ｓ２０４）。ここでは、ＷＡＹ１でキャッシュヒットしたものとする（Ｓ２０４でＹＥＳ）。そこで、アクセス要求Ｚに基づきＷＡＹ１データアレイ２３５１からデータ転送が開始される。このとき、アクセス要求Ｘ及びＺに基づくデータ転送が部分的に並列処理される。
【００７７】
その後、アクセス要求Ｙについては図６と同様に、アクセス要求Ｘに基づくデータ転送の完了後にデータ転送が開始される。アクセス要求Ｙ及びＺに基づくデータ転送が部分的に並列処理される。
【００７８】
このように、本実施の形態２にかかるＷＡＹ０データアレイ２３５０及びＷＡＹ１データアレイ２３５１は、それぞれ別のＳＲＡＭマクロにすることで、また、応答バスＢ２１及び応答バスＢ２２を設けることで、並列したアクセス処理を実現することができる。
【００７９】
さらに、キャッシュメモリ装置２３０は、ＷＡＹ０及びＷＡＹ１それぞれにＢＵＳＹ及びＦＲＥＥを管理するアクセス状態情報を用いるものである。そして、アービタスケジューラ２３１は、ＢＵＳＹと判定されたウェイへのアクセス要求を再度スケジューリングしなおすものである。
【００８０】
尚、本実施の形態２は、バースト転送が行われる場合に、特に有効である。そのため、Ｌ２以下のキャッシュメモリに適用可能である。また、本実施の形態２は、マルチバンク方式と異なり、アドレス振り分け不要である。
【００８１】
ここで、本実施の形態２について、改めて説明する。まず、共有キャッシュへの複数のアクセス要求が生じた場合、キャッシュへのアクセス要求をアービタスケジューラで調停し、その後、複数のウェイのタグを引く。ここで、キャッシュのヒット又はミスを判定し、アクセスを行うウェイを決定する。アクセスを行うウェイがフリーであれば、ビジーに状態を遷移させ、データアクセスを行う。他方、ビジーであれば、当該キャッシュアクセス要求は、ウェイト状態となり、アービタスケジューラで再度スケジュールし、他のアクセス要求と再度調停しつつ、当該アクセス要求は、当該ウェイがフリーとなるまで、キャッシュのヒットミス判定を繰り返す処理を行う。
【００８２】
また、ＷＡＹ０がバースト転送中にも、ＷＡＹ０及びＷＡＹ１のタグに対しては、共にアクセス可能であり、後続のアクセス要求がＷＡＹ１へのアクセスとなった場合には、ＷＡＹ０とＷＡＹ１がそれぞれ異なったＩＰコアに対してデータのやり取りが可能になる。
【００８３】
そのため、本実施の形態２により、キャッシュメモリに対する部分的な並列アクセスが可能になる。また、ウェイ単位での並列アクセスであるため、上述したマルチバンク方式と違い、プログラムのチューニングが不要となるという効果も奏する。
【００８４】
尚、本実施の形態２にかかるキャッシュメモリ装置２３０は、複数のプロセッサコアにより共有され、各プロセッサコアから個別にアクセス要求を受け付けるものである。これにより、複数のアクセス要求の発行元に対して共有キャッシュメモリを実現することができ、かつ、アクセス処理を部分的に並列処理可能とできる。また、本実施の形態２にかかるキャッシュメモリ装置２３０は、上述したようにセットアソシアティブ又はフルアソシアティブ方式であることが望ましい。これにより、バンク競合の場合であっても、アクセスを分散させることができる。
【００８５】
＜実施の形態３＞
本実施の形態３にかかるキャッシュメモリ装置は、キャッシュミス時にＷＡＹ０アクセス状態フラグ２３４０及びＷＡＹ１アクセス状態フラグ２３４１を確認した上で、ロード先を決定するものである。本実施の形態３にかかるキャッシュメモリ装置は、図３と同等であるため図示及び詳細な説明を省略する。
【００８６】
図８は、本実施の形態３にかかるキャッシュメモリ装置の制御処理の流れを示すフローチャートである。図８において、図４と同等の処理については同一の符号を付し、詳細な説明を省略する。
【００８７】
ステップＳ２０４においてキャッシュミスと判定した場合、ＳＤＲＡＭコントローラ２３６は、ウェイのフラグが"Ｆｒｅｅ"であるウェイが存在するか否かを判定する（Ｓ３０９）。例えば、ＳＤＲＡＭコントローラ２３６は、ＷＡＹ０アクセス状態フラグ２３４０及びＷＡＹ１アクセス状態フラグ２３４１を参照し、"Ｆｒｅｅ"が１以上存在するか否かを判定する。
【００８８】
ステップＳ３０９において"Ｆｒｅｅ"であるウェイが存在しない、つまり、全てのウェイがアクセス処理中である場合には、ステップＳ２０２へ戻る。
【００８９】
また、ステップＳ３０９において"Ｆｒｅｅ"であるウェイが存在すると判定した場合、ＳＤＲＡＭコントローラ２３６は、"Ｆｒｅｅ"であるウェイの中からロード対象のウェイを決定する（Ｓ３１０）。つまり、第１のアクセス要求がキャッシュミスと判定された場合に、複数のデータメモリのうちロックがかけられていないデータメモリをロード先として決定する。従来は、ＬＲＵ（Ｌｅａｓｔ  Ｒｅｃｅｎｔｌｙ  Ｕｓｅｄ）等に基づいて決定されたウェイにロードをするか否かを判定し、当該ウェイが使用中であればロードを待機せざるをえなかった。しかし、本実施の形態３では、予め各ウェイのアクセス状態フラグを参照することで、ロード対象として決定する際には、確実にロード可能なウェイを決定することができる。
【００９０】
つまり、ＳＤＲＡＭコントローラ２３６は、アクセス要求がキャッシュヒット判定によりキャッシュミスと判定された場合に、当該アクセス要求が要求するデータを下位層のメモリから複数のデータメモリのいずれかへロードするロードストアユニットである。そして、ＳＤＲＡＭコントローラ２３６は、アクセス状態情報を参照して、処理中以外のデータメモリをロード先として決定する。
【００９１】
または、図４のステップＳ２０９のようにＬＲＵなど既存技術によるウェイ選択を行い、ステップＳ２１０においてウェイがＢＵＳＹだった場合に、アクセス状態フラグが"Ｆｒｅｅ"であるウェイの中からロード対象を決定するようにしてもよい。これにより、キャッシュミスによって新たにデータをロードしようとした際に、選択を行ったウェイがＢＵＳＹだったの場合、他のウェイをロード対象として、なるべく並列アクセスができるようにして、並列アクセスによる性能向上率を高めることができる。
【００９２】
＜実施の形態４＞
既存のロード対象のウェイの決定の仕方では、あるウェイにデータ格納し切ってから別のウェイへデータを格納するようにしていた。そして、本実施の形態１〜３では、複数の異なったウェイに対するアクセス要求について部分的に並列処理を行うものである。そのため、１つ目のウェイにデータが格納し終わるまでの間は、同じウェイに対しては本実施の形態１〜３により並列処理が実行できないといえる。
【００９３】
そこで、本実施の形態４では、直前にロード対象とされたウェイと異なるウェイをロード対象として選択するものである。例えば、２ウェイの場合には、ロード対象のウェイを交互に選択することとなる。まず、本実施の形態４では、アクセス要求がキャッシュヒット判定によりキャッシュミスと判定された場合に、当該アクセス要求が要求するデータを下位層のメモリから前記複数のデータメモリのいずれかへロードするロードストアユニットを備える。そして、本実施の形態４にかかるロードストアユニットは、直前にロードされたデータメモリとは異なるデータメモリをロード先として決定する。つまり、連続してロードするときに、直前のロード先のウェイとは異なるウェイをロード先として決定する。例えば、複数のウェイが空の状態である初期段階などでは、新規に割り付けるウェイをＷＡＹ０、ＷＡＹ１、ＷＡＹ０・・・と交互に割り付ける。これにより、各ウェイに対して均等にデータを格納することができ、並列処理が行える確率を高めることができる。
【００９４】
＜実施の形態５＞
キャッシュメモリ内の複数のウェイに対するアクセスのヒット率は、アクセス要求元のアプリケーション等や処理過程に応じて変動することがある。そのため、本実施の形態５では、キャッシュミス時にロードするデータを複数のウェイに分散させるものである。すなわち、まず、本実施の形態５では、アクセス要求がキャッシュヒット判定によりキャッシュミスと判定された場合に、当該アクセス要求が要求するデータを下位層のメモリから複数のデータメモリのいずれかへロードするロードストアユニットを備える。そして、本実施の形態５にかかるロードストアユニットは、複数のデータメモリにおけるアクセス頻度に応じてロード先となるデータメモリを決定するものである。アクセス頻度とは、例えば、ウェイの使用比率を含む。これにより、各ウェイに分散してデータを格納することができ、ウェイごとのヒット率が分散し、並列アクセス処理ができる確率を向上させることができる。
【００９５】
＜実施の形態６＞
図９は、本実施の形態６にかかる情報処理装置６００の構成を示すブロック図である。情報処理装置６００は、複数のプロセッサコア６１１〜６１ｍと、タグメモリ群１２０と、データメモリ群１３０と、キャッシュ制御部６２０とを備える。
【００９６】
複数のプロセッサコア６１１〜６１ｍは、それぞれアクセス要求ＡＲをキャッシュ制御部６２０に対して発行する。そして、複数のプロセッサコア６１１〜６１ｍは、アクセス要求ＡＲの応答としてデータ転送ＤＴ等を受け付ける。
【００９７】
キャッシュ制御部６２０は、複数のプロセッサコア６１１〜６１ｍのいずれかからの第１のアクセス要求に対して複数のタグメモリ１２１〜１２ｎへのキャッシュヒット判定を行う。そして、キャッシュ制御部６２０は、第１のアクセス要求とは異なる第２のアクセス要求に基づき複数のデータメモリのいずれかにアクセス処理中に、第１のアクセス要求におけるキャッシュヒットの際に特定されるタグメモリに対応するデータメモリが当該第１のアクセス要求とは異なる第２のアクセス要求に基づきアクセス処理中ではない場合に、当該データメモリへのアクセス処理を開始する。
【００９８】
尚、タグメモリ群１２０とデータメモリ群１３０とは、図１と同等であるため説明を省略する。
【００９９】
これにより、本実施の形態１と同様の効果を奏することができる。
【０１００】
＜その他の実施の形態＞
また、他の実施の形態として、ヒットミス判定部を複数かつ並列に備えるようにしてもよい。これにより、複数のアクセス要求に対してヒットミス判定を並列化することができる。
【０１０１】
尚、上述した実施の形態２ではマルチプロセッサシステムを対象としたが、１つのプロセッサから複数のアクセス要求を発行するものであっても適用可能である。
【０１０２】
尚、上述した実施の形態１〜６では、ウェイごとにデータアレイのＳＲＡＭマクロを分離するため、ウェイ単位でのシャットダウンが容易に実現可能となる。よって、アクセス頻度が低い場合などに、キャッシュ容量を電源遮断によって減らすことにより、省電力化が可能である。
【０１０３】
尚、図４のステップ２０３の後に、ウェイが"Ｆｒｅｅ"の場合に、キャッシュがヒットするものと仮定して、投機的にデータ読み出しを開始するようにしてもよい。これにより、後続のアクセス要求のヒットミス判定と同時にデータ読出しを開始することができる。また、レイテンシ短縮も実現でき得る。
【０１０４】
さらに、その他の実施の形態としては、以下のキャッシュメモリシステムがある。すなわち、キャッシュメモリシステムは、複数のＩＰコアにより共有されるキャッシュメモリを有する。当該共有キャッシュメモリは、複数の連想度を持ったセットアソシアティブ方式のキャッシュ構成である。そして、ウェイごとにビジー又はフリーの状態管理を行う。また、キャッシュアクセス要求によって、上記キャッシュメモリのタグメモリをアクセスする。そして、アクセスを行う必要のあるウェイを決定し、当該ウェイがフリーであればアクセスを許可する。同時に、当該ウェイの状態をビジーにする。また、データ転送の完了後に再度フリーの状態に戻す。そして、後続のアクセス要求が、続くサイクルで上記タグメモリをアクセスし、異なったウェイにアクセスすると決定され、当該ウェイがフリーであれば、前記先行するアクセス要求と当該後続のアクセス要求に基づくデータアクセスを並列に行う。
【０１０５】
尚、本実施の形態は、複数のプロセッサおよびプロセッサや他のハードウェアＩＰと、共有のキャッシュメモリを集積したＳｏＣ（Ｓｙｓｔｅｍ  ｏｎ  ａ  Ｃｈｉｐ）に適用可能である。
【０１０６】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
【符号の説明】
【０１０７】
１００  キャッシュメモリ装置
１１０  制御部
１２０  タグメモリ群
１２１  タグメモリ
１２２  タグメモリ
１２ｎ  タグメモリ
１３０  データメモリ群
１３１  データメモリ
１３２  データメモリ
１３ｎ  データメモリ
Ｗ１  ウェイ
Ｗ２  ウェイ
Ｗｎ  ウェイ
ＡＲ１  アクセス要求
ＡＲ２  アクセス要求
ＤＴ１  データ転送
ＤＴ２  データ転送
２００  マルチプロセッサシステム
２１１  ＩＰコア
２１２  ＩＰコア
２１３  ＩＰコア
２１４  ＩＰコア
２２１  Ｌ１キャッシュ
２２２  Ｌ１キャッシュ
２２３  Ｌ１キャッシュ
２２４  Ｌ１キャッシュ
２３０  キャッシュメモリ装置
２３１  アービタスケジューラ
２３２  Ｌ２ＨＩＴ／ＭＩＳＳ判定部
２３３０  ＷＡＹ０タグ
２３３１  ＷＡＹ１タグ
２３４０  ＷＡＹ０アクセス状態フラグ
２３４１  ＷＡＹ１アクセス状態フラグ
２３５０  ＷＡＹ０データアレイ
２３５１  ＷＡＹ１データアレイ
２３６  ＳＤＲＡＭコントローラ
２４０  ＳＤＲＡＭ
Ｂ２０  アクセス要求バス
Ｂ２１  応答バス
Ｂ２２  応答バス
Ａ  ＩＰコア
Ｂ  ＩＰコア
Ｃ  ＩＰコア
Ｘ  アクセス要求
Ｙ  アクセス要求
Ｚ  アクセス要求
６００  情報処理装置
６１１  プロセッサコア
６１２  プロセッサコア
６１ｍ  プロセッサコア
６２０  キャッシュ制御部
Ｌ２０〜Ｌ２７  Ｌ２キャッシュメモリ
【図１】
2013210961.tif 000003
【図２】
2013210961.tif 000004
【図３】
2013210961.tif 000005
【図４】
2013210961.tif 000006
【図５】
2013210961.tif 000007
【図６】
2013210961.tif 000008
【図７】
2013210961.tif 000009
【図８】
2013210961.tif 000010
【図９】
2013210961.tif 000011
【図１０】
2013210961.tif 000012