(57)【特許請求の範囲】
【請求項１】
複数の演算装置と、
前記複数の演算装置によって共有されるメモリ部と、
複数のキャッシュを含むキャッシュ装置とを備え、
各前記キャッシュは、
複数のウェイが割り当てられるキャッシュコア部と、
前記複数のウェイのうち、前記複数の演算装置のいずれかからのラインへのアクセス状態と優先度との対応関係について予め設定される情報に基づき、キャッシュミス時に優先的にリプレース対象とする前記ウェイを決定するリプレース対象選択部とを含む、情報処理装置。
【請求項２】
前記メモリ部のメモリ空間は、複数の領域に分割され、
前記複数のキャッシュは、前記複数の領域にそれぞれ対応する同一階層のキャッシュであり、
各前記キャッシュの前記キャッシュコア部には、対応する前記領域のデータが独占的に配置される、請求項１に記載の情報処理装置。
【請求項３】
各前記キャッシュは、
各前記演算装置が最後にアクセスした前記キャッシュコア部内の位置を記憶する第１の記憶部を含み、
前記リプレース対象選択部は、前記第１の記憶部に記憶されている前記キャッシュコア部内の位置をリプレース対象から除外する、請求項２に記載の情報処理装置。
【請求項４】
複数の演算装置と、
前記複数の演算装置によって共有されるメモリ部と、
キャッシュ装置とを備え、
前記キャッシュ装置は、前記メモリ部のメモリ空間を複数の領域に分割し、前記複数の領域にそれぞれ対応する同一階層の複数のキャッシュを含み、
各前記キャッシュは、
対応する前記領域のデータが独占的に配置されるキャッシュコア部と、
各前記演算装置が最後にアクセスした前記キャッシュコア部内の位置を記憶する第１の記憶部と、
前記第１の記憶部に記憶されている前記キャッシュコア部内の位置をリプレース対象から除外するリプレース対象選択部とを含む、情報処理装置。
【請求項５】
前記リプレース対象選択部は、前記第１の記憶部に記憶されている前記キャッシュコア部内の位置のうちキャッシュミスを引き起こした演算装置が最後にアクセスした位置を、リプレース対象に加える、請求項３または４に記載の情報処理装置。
【請求項６】
各前記キャッシュは、
リプレースの単位となる前記キャッシュコア部内の位置毎に、データの更新の有無と更新後の参照の有無とを記憶する第２の記憶部をさらに備え、
前記リプレース対象選択部は、データ更新後に再参照されていないデータをリプレース対象から除外する、請求項３〜５のいずれか１項に記載の情報処理装置。
【請求項７】
前記複数のキャッシュはコヒーレンス機構を有していない、請求項２〜６のいずれか１項に記載の情報処理装置。
【請求項８】
各前記演算装置は、前記メモリ部の前記複数の領域のうちアクセスを必要とする領域に対応するキャッシュと選択的に接続可能である、請求項２〜７のいずれか１項に記載の情報処理装置。
【請求項９】
前記キャッシュ装置は、
前記複数のキャッシュよりも下位の階層の１個以上のキャッシュをさらに備える、請求項１〜８のいずれか１項に記載の情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この開示は情報処理装置に関し、たとえば、複数の演算装置とこれらの演算装置で共有されるメモリ部と複数のキャッシュとを備えた情報処理装置に好適に用いられるものである。
【背景技術】
【０００２】
［ＡＳＩＣおよびＦＰＧＡなどによるデータ処理の高速化］
近年、組込みからＨＰＣ（High  Performance  Computer）までの幅広い分野において、データ処理の高速化にＡＳＩＣ（Application  Specific  Integrated  Circuit）またはＦＰＧＡ（Field  Programmable  Gate  Array）などが活用されている。ＡＳＩＣおよびＦＰＧＡでは、シリコンダイ上に複数の演算装置を構築し相互に接続することによって、従来のＣＰＵ（Central  Processing  Unit）において実行されている命令デコードならびにレジスタへのデータのロードおよびストア等を排除することができ、この結果、演算並列性の高い効率的なデータ処理を実現できる。【０００３】
［ＡＳＩＣおよびＦＰＧＡによるＤＲＡＭ活用］
これまでＡＳＩＣおよびＦＰＧＡでは、各演算装置への入出力データの保持にフリップフロップまたはＳＲＡＭ（Static  Random  Access  Memory）等を利用していた。一方、近年、システムが扱うデータ規模の増大に伴い、ＤＲＡＭ（Dynamic  Random  Access  Memory）等の大容量メモリ（以下、「メモリ」と称する）をデータ保持に利用するシステムが増加しつつある。【０００４】
しかし、ＡＳＩＣまたはＦＰＧＡ上に構成される各演算装置と比較してメモリは低速であり、メモリアクセスがシステム性能のボトルネックとなることが多い。【０００５】
［共有メモリ方式におけるキャッシュに関する先行技術］
低速なメモリへのアクセスレイテンシを隠蔽する技術として、キャッシュが知られている。また、複数の演算装置がメモリを共有する構成の代表例であるマルチプロセッサシステムでは、キャッシュ構成に関して多くの研究開発がなされている。マルチプロセッサシステムは、一般的に速度と容量の異なる複数のキャッシュで構成されたキャッシュ階層を有する（たとえば、David  Culler他２名、"Parallel  Computer  Architecture:  A  Hardware/Software  Approach"（非特許文献１）の第６章を参照）。【０００６】
［プライベートキャッシュ方式］
プロセッサに近い高速低容量なレベル１〜２キャッシュでは、各プロセッサに専用キャッシュを割り当てるプライベートキャッシュ方式（たとえば、非特許文献１の第６章を参照）が利用されることが多い。専用キャッシュを配置することで、各プロセッサからのアクセス競合による性能低下を防止できる。【０００７】
プライベートキャッシュ方式では、各キャッシュ間でデータ同期を行うコヒーレンス機構が設けられる。ただし、各プロセッサにはプロセス単位で処理が割当てられるためプロセッサ間での共有データは少なく、データ同期による性能への影響は小さい。また、コヒーレンス機構を設けずに、共有データはキャッシュ上に配置しないで直接メモリに格納する構成もある。【０００８】
［共有キャッシュ方式］
一方、メモリに近い低速大容量なラストレベルキャッシュでは、複数のアクセス要求元回路が単一のキャッシュにアクセスする共有キャッシュ方式（非特許文献１の第６章参照）が利用されることが多い。共有キャッシュ方式では各上位回路からのアクセス競合が発生するが、上位のキャッシュはミス時のみ下位にアクセスするため、競合の発生頻度は低く、コヒーレンス機構も不要である。【０００９】
［データリプレース方式］
共有キャッシュでは、あるプロセッサのアクセスにより、他のプロセッサで使用中のデータがキャッシュからリプレースされることがある。特に、低頻度でメモリアクセスを行うプロセッサ側のデータが高頻度でメモリアクセスを行うプロセッサによってリプレースされることで、前者のプロセッサで性能低下が発生する。また、各プロセッサが同一のセット（キャッシュ内のデータ管理単位をいう）にアクセスを繰り返した場合、スラッシングと呼ばれるデータの追い出し合いが発生し、両者の性能が著しく低下する。【００１０】
上記の問題に対して、プロセッサ毎またはプロセッサ上で実行中のプロセス毎に、ウェイと呼ばれるキャッシュ内のデータ管理単位を専用で割り当てることによって、回避する手法が知られている（特許文献１）。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】特開２０１０−２４４４３５号公報
【非特許文献】
【００１２】
【非特許文献１】David  Culler他２名、"Parallel  Computer  Architecture:  A  Hardware/Software  Approach"、第１版、Morgan  Kaufmann、１９９８年８月
【発明の概要】
【発明が解決しようとする課題】
【００１３】
本開示が主として対象とするＡＳＩＣまたはＦＰＧＡで実現される複数の演算装置を有するシステムは、従来のマルチプロセッサとはシステムの特性が異なるため、従来のマルチプロセッサシステムを対象としたキャッシュ構成では性能の高いシステムを実現できない。【００１４】
具体的に本開示が対象とするシステムではメモリ上に各演算装置間で授受するデータが多く配置されている。したがって、従来技術のように、上位キャッシュにプライベートキャッシュ方式を用いた場合、データ同期が多発し性能が大きく低下する。一方、演算装置の数は、マルチプロセッサシステムにおけるプロセッサ数よりも多いため、共有キャッシュ方式を採用すると、アクセス競合やスラッシングによる大きな性能低下が発生する。【００１５】
また、特許文献１に開示されている専用ウェイ割当てによるデータリプレース方式は、共有データをキャッシュに配置しないことを前提とした管理手法である。一方、本開示が対象とするシステムでは演算装置の入出力データの保存が主目的のため、複数の演算装置で共有される共有データのキャッシュ配置が必須である。【００１６】
この発明は上記の問題点を考慮してなされたものであり、その主たる目的は、複数の演算装置を有する情報処理装置において、キャッシュへのアクセス競合およびスラッシングの発生頻度を抑制することが可能な情報処理装置を提供することである。
【課題を解決するための手段】
【００１７】
この開示の一局面による情報処理装置は、複数の演算装置と、複数の演算装置によって共有されるメモリ部と、キャッシュ装置とを備える。キャッシュ装置は、メモリ部のメモリ空間を複数の領域に分割し、複数の領域にそれぞれ対応する同一階層の複数のキャッシュを含む。各キャッシュは、対応する領域のデータが独占的に配置されるキャッシュコア部を含む。
【発明の効果】
【００１８】
同一階層に複数のキャッシュＣＳ１〜ＣＳ４を有するが、各キャッシュＣＳに同一データが配置されることがないためコヒーレンス機構が不要であり、データ同期による性能低下を抑止できる。また、複数の演算装置ＡＲ１〜ＡＲ４からのアクセスが、アドレスに応じて異なるキャッシュＣＳに分散されることで、キャッシュＣＳへのアクセス競合やスラッシングの発生頻度を抑制することができ、この結果、情報処理装置のシステム性能を向上させることができる。
【図面の簡単な説明】
【００１９】
【図１】情報処理装置の構成を示すブロック図である。
【図２】図１の各キャッシュの内部構成を示すブロック図である。
【図３】図２のキャッシュの動作を示すフローチャートである。
【図４】４ウェイキャッシュにおけるＬＲＵテーブルの例を示す図である。
【図５】ＭＲＵテーブルの一例を示す図である。
【図６】図２のＭＲＵ更新部の動作を示すフローチャートである。
【図７】キャッシュミス時のリプレースマスク生成部の動作を説明するための機能ブロック図である。
【図８】図２の更新参照テーブルおよび更新参照優先度生成部の構成を示すブロック図である。
【図９】更新参照テーブル更新部５１における各ラインの状態遷移の一例を示す図である。
【図１０】リプレース選択部の動作の詳細を説明するための機能ブロック図である。
【発明を実施するための形態】
【００２０】
以下、実施の形態について図面を参照して詳しく説明する。なお、同一または相当する部分には同一の参照符号を付して、その説明を繰り返さない場合がある。
【００２１】
［情報処理装置の構成］
図１は、情報処理装置の構成を示すブロック図である。図１の情報処理装置は、複数の演算装置ＡＲ１〜ＡＲ５と、複数のキャッシュＣＳ１〜ＣＳ４と、キャッシュアクセスバスＣＢＵＳ１〜ＣＢＵＳ４と、メモリアクセスバスＭＢＵＳと、物理層を含むメモリ制御部ＭＣＴＬと、メモリ部ＭＥＭとを備える。複数の演算装置ＡＲ１〜ＡＲ５、複数のキャッシュＣＳ１〜ＣＳ４、およびキャッシュアクセスバスＣＢＵＳ１〜ＣＢＵＳ４おいて、総称する場合または不特定ものを示す場合にはそれぞれ、演算装置ＡＲ、キャッシュＣＳ、およびキャッシュアクセスバスＣＢＵＳと記載する。
【００２２】
図１の演算装置の数およびキャッシュの数は一例であってこの数に限られない。各キャッシュＣＳは、特定の１つ以上の演算装置ＡＲから共有される。キャッシュアクセスバスＣＢＵＳ１〜ＣＢＵＳ４は、演算装置ＡＲ１〜ＡＲ５とキャッシュＣＳ１〜ＣＳ４との間の接続バスである。メモリアクセスバスＭＢＵＳは、キャッシュＣＳ１〜ＣＳ４とメモリ制御部ＭＣＴＬと間の接続バスである。以下、各構成要素についてさらに詳しく説明する。
【００２３】
（演算装置）
各演算装置ＡＲは固有の識別情報である演算装置ＩＤ（Identification）を有する。
【００２４】
各演算装置ＡＲは特定の１つ以上のキャッシュＣＳとインタフェースを介して接続される。このインタフェースは、メモリアドレスおよびアクセス元の演算装置ＩＤの通知、ライトデータの通知、およびリードデータの取得を行うためのキャッシュアクセスバスＣＢＵＳから構成される。
【００２５】
各演算装置ＡＲは、アクセスすべきメモリのアドレスに応じて適切なインタフェース（すなわち、キャッシュアクセスバスＣＢＵＳ）を選択する機能を有しており、当該アドレスに対応したキャッシュＣＳにアクセスする。
【００２６】
（キャッシュ、キャッシュアクセスバス）
各キャッシュＣＳは、演算装置ＡＲとの間のインタフェース（図２のキャッシュアクセス制御部２１）と、メモリ制御部ＭＣＴＬとの間のインタフェース（図２のメモリアクセス制御部２２）をそれぞれ１つ有する。また、各キャッシュＣＳと対応する特定の演算装置ＡＲとの間にキャッシュアクセスバスＣＢＵＳが設けられる。
【００２７】
各キャッシュＣＳは、あるアドレスに対するアクセス要求を演算装置ＡＲから受けた場合、当該アドレスのデータがキャッシュ上に配置されていれば、直接演算装置ＡＲに対してアクセス応答を返す。一方、各キャッシュＣＳは、当該アドレスのデータがキャッシュ上に配置されていない場合は、メモリアクセスバスＭＢＵＳにアクセス要求を発行し、メモリ部ＭＥＭから当該アドレスに対応するデータを取得する。そして、各キャッシュＣＳは、取得したデータによってキャッシュデータのリプレースを行った後、演算装置ＡＲに対して応答を発行する。
【００２８】
各キャッシュＣＳは、一般的なライトバック動作を行う。すなわち、キャッシュＣＳにデータが書き込まれた場合には、そのデータがリプレースされる時点でキャッシュＣＳからメモリ部ＭＥＭにデータが書き込まれる。
【００２９】
（メモリアクセスバス、メモリ制御部）
メモリアクセスバスＭＢＵＳは、各キャッシュＣＳからのアクセス要求を調停し、メモリ制御部ＭＣＴＬに通知する。
【００３０】
メモリ制御部ＭＣＴＬは、各キャッシュＣＳからアクセス要求が発行された場合、当該アクセス要求をメモリ部ＭＥＭのプロトコルに変換し、変換後のコマンドをメモリ部ＭＥＭ部に発行することによって、メモリ部ＭＥＭに対してデータ取得等を実施する。この実施結果に基づいて、メモリ制御部ＭＣＴＬは、アクセス応答をキャッシュＣＳに発行する。
【００３１】
（メモリ部）
メモリ部は汎用的なＤＲＡＭ等にて構成される。メモリ部ＭＥＭ部の内部はシステム的には複数のキャッシュＣＳ１〜ＣＳ４にそれぞれ対応する複数の領域ＲＧ１〜ＲＧ４に分割され、各領域ごとに対応するキャッシュＣＳとの間でのみ独占的にデータのやりとりが行われる。このような構成によれば、各キャッシュＣＳに同一データが配置されることがないためコヒーレンス機構が不要であり、データ同期による性能低下を抑止できる。
【００３２】
なお、メモリ部ＭＥＭ部は、メモリ制御部ＭＣＴＬが発行するアクセス要求等に従いリード動作やライト動作等を実施しているのであって、メモリ部ＭＥＭ自身が対応するキャッシュを認識可能に構成されているわけではない。
【００３３】
なお、上記の情報処理装置の構成において、キャッシュアクセスバスＣＢＵＳ、キャッシュＣＳ、およびメモリアクセスバスＭＢＵＳをまとめてキャッシュ装置１０と称する場合がある。
【００３４】
［本システムのデータアクセスの特徴］
キャッシュの内部構成を説明する前に、まず、ＡＳＩＣまたはＦＰＧＡによる並列処理のデータ処理システムにおけるデータアクセスの特徴について説明する。
【００３５】
具体的に、各演算装置は、メモリアクセスの際に、ある程度のデータを一括でライトまたはリードするため、シーケンシャルアクセスが多いという特徴を有している。また、ある演算装置がライトした結果を、自身またはほかの演算装置がリードするという特徴を持っている。
【００３６】
したがって、ある演算装置が現在アクセスしているラインと呼ばれるキャッシュ上のリプレース単位データは、同一演算装置によって近い将来に再度アクセスされる可能性が高い。また、ある演算装置が現在アクセスしているラインよりも過去に参照し且つ更新を行わなかったラインは、同一演算装置によって、近い将来に再度参照される可能性は低い。一方、ある演算装置によって更新が行われたラインは、近い将来に同一演算装置または他の演算装置によって参照される可能性が高い。
【００３７】
キャッシュの効果を高めるには上記アクセスの特徴に基づき、スラッシングを回避しつつ、データ利用効率の高いリプレース管理方式が必要である。このための具体的なキャッシュ構成およびデータリプレース方式を以下に説明する。
【００３８】
［キャッシュの内部構成］
図２は、図１の各キャッシュの内部構成を示すブロック図である。図２を参照して、各キャッシュＣＳは、キャッシュアクセス制御部２１と、キャッシュコア部２０と、ＬＲＵ制御部３０と、ＭＲＵ制御部４０と、更新参照制御部５０と、メモリアクセス制御部２２とを備える。
【００３９】
キャッシュアクセス制御部２１は、各演算装置ＡＲとの間のインタフェースである。
キャッシュコア部２０は、一般的なセットアソシアティブキャッシュからなる。図２では、キャッシュコア部２０が４ウェイ（ＷＹ０〜ＷＹ３）のセットアソシアティブキャッシュによって構成された例が示されている。キャッシュコア部２０は、４個のウェイＩＤ（０〜３）とＭ個のセットＩＤ（０〜Ｍ−１）とを有する。
【００４０】
ＬＲＵ制御部３０は、一般的なＬＲＵ（Least  Recently  Used）アルゴリズムに基づいてウェイのアクセス履歴の計算およびキャッシュミス時のリプレース対象となるウェイの決定を行う。具体的に、ＬＲＵ制御部は３０、各セット内でのウェイのアクセス履歴を保持するＬＲＵテーブル３２、ＬＲＵテーブル３２の更新を行うＬＲＵ更新部３１、および、キャッシュミス時にリプレースするウェイを決定するリプレース対象選択部３３を備える。
【００４１】
ＭＲＵ制御部４０は、各演算装置ＡＲが直近にアクセスしたキャッシュ位置の計算およびキャッシュミス時にリプレース対象から除外するウェイを指示するマスクを生成する。具体的に、ＭＲＵ制御部４０は、各演算装置ＡＲにおけるＭＲＵ（Most  Recently  Used）ラインを保持するＭＲＵテーブル４２、ＭＲＵテーブル４２の更新を行うＭＲＵ更新部４１、および、他の演算装置ＡＲが直近にアクセスしたウェイをリプレース対象から除外するためのマスク情報を生成するリプレースマスク生成部４３を備える。
【００４２】
更新参照制御部５０は、各ラインにおいて各演算装置ＡＲによる更新および更新後参照を示す状態の計算およびキャッシュミス時にリプレース対象を決定する際の優先度を生成する。具体的に、更新参照制御部５０は、各ラインの更新および参照状態を保持する更新参照テーブル５２、更新参照テーブル５２を更新する更新参照テーブル更新部５１、および、キャッシュミス時にリプレース対象を決定する際の優先度を生成する更新参照優先度生成部５３を備える。
【００４３】
メモリアクセス制御部２２は、メモリ部ＭＥＭとの間のインタフェースであり、キャッスミス発生時にメモリ部ＭＥＭに対してアクセスを行う。
【００４４】
上記の構成のうち、ＭＲＵ制御部４０および更新参照制御部５０は、必要に応じて取捨選択可能である。
［キャッシュの動作の概要］
図３は、図２のキャッシュの動作を示すフローチャートである。以下、図２および図３を参照して、図２に示すキャッシュの動作の概要について説明する。
【００４５】
まず、キャッシュアクセス制御部２１は、演算装置ＡＲからアクセス要求を受け付ける（ステップＳ１００）。具体的に、データ読み出し要求の場合には、キャッシュアクセス制御部２１は、メモリ部ＭＥＭのアドレスと当該アクセスを要求する演算装置の識別情報（すなわち、演算装置ＩＤ）とを受け付ける。データ書き込み要求の場合には、キャッシュアクセス制御部２１は、メモリ部ＭＥＭのアドレスと書き込みデータと当該アクセスを要求する演算装置の演算装置ＩＤとを受け付ける。
【００４６】
キャッシュコア部２０は、アクセス要求のあったアドレスとタグとの比較を行って、ヒットまたはミスの判定を行う（Ｓ１０５）。ヒット／ミスの判定結果Ｃ１は、ＬＲＵ制御部３０、ＭＲＵ制御部４０、および更新参照制御部５０に伝達される。判定結果がミスの場合、キャッシュコア部２０は、データを一部追い出し、演算装置ＡＲがアクセスするデータをキャッシュコア部２０上に配置する。具体的には以下の手順による。
【００４７】
まず、リプレースマスク生成部４３は、リプレース対象外となるウェイを示すマスクを生成する（ステップＳ１１０）。並行して、更新参照優先度生成部５３は、リプレース対象を決定する際の各ウェイの優先度を生成する（ステップＳ１１５）。
【００４８】
次に、リプレース対象選択部３３は、ＬＲＵテーブル３２と上記のリプレースマスクと上記の優先度に基づいて、リプレース対象となるウェイを決定する（ステップＳ１２０）。
【００４９】
次に、キャッシュコア部２０は、上記ステップＳ１２０で決定されたリプレース対象のウェイＩＤ（図２のＣ２）と、アクセス要求で指示されたアドレスに対応するセットＩＤとから、リプレースするライン位置を特定する。そして、特定ライン位置に配置されたデータに対応するフラグを確認する（ステップＳ１２５）。フラグは、対応するデータがキャッシュに配置された後にそのデータが更新されたか否かを示すものである。
【００５０】
フラグが更新有りを示している場合はライトバックが必要であるので、キャッシュコア部２０は、メモリアクセス制御部２２を経由して、当該データ（すなわち、旧データ）をメモリ部ＭＥＭへライトバックする（ステップＳ１３５）。
【００５１】
フラグが更新なしを示している場合（すなわち、ライトバックが不要な場合）、もしくはステップＳ１３５のメモリへのライトバックが完了した後に、キャッシュコア部２０は、メモリアクセス制御部２２を経由してメモリ部ＭＥＭから、次に当該ラインに配置するデータ（すなわち、新データ）の読み出しを行う（ステップＳ１３０）。
【００５２】
データの読み出しが完了すると、キャッシュコア部２０はリプレース対象となるライン位置に読み出したデータを書き込む（ステップＳ１４０）。これにより、キャッシュミスの場合において、演算装置ＡＲがアクセスするデータのキャッシュ上への配置（すなわち、リプレース）が完了する。リプレースの完了通知（図２のＣ３）は、キャッシュコア部２０、ＬＵＲ制御部３０、ＭＲＵ制御部４０、および更新参照制御部５０に伝達される。
【００５３】
キャッシュヒットの場合、もしくは上記のリプレース完了後に、キャッシュコア部２０は、演算装置ＡＲからのアクセス要求に従い、当該キャッシュラインに対してリード操作またはライト操作を実行し（ステップＳ１４５）、キャッシュアクセス制御部２１経由で演算装置ＡＲに対してアクセス応答を発行する（ステップＳ１５０）。並行して、アクセス要求に合わせて、ＭＲＵテーブル４２、ＬＲＵテーブル３２、および更新参照テーブル５２が更新される（ステップＳ１５５，Ｓ１６０，Ｓ１６５）。アクセス応答（ステップＳ１５０）と上記の更新（ステップＳ１５５，Ｓ１６０，Ｓ１６５）が完了次第、次のアクセス要求受付（ステップＳ１００）に戻る。
【００５４】
［ＬＲＵテーブル、ＬＲＵ更新部の詳細］
図４は、４ウェイキャッシュにおけるＬＲＵテーブルの例を示す図である。図４を参照して、図２のＬＲＵテーブル３２は、キャッシュコア部２０のセット毎に、そのセットに属するウェイの過去の参照の順番を示す機能ブロックである。
【００５５】
図４の例では、セット内で最近にアクセスされたウェイには１が、その次にアクセスされたウェイには２、３と順にナンバリングされ、最も古くにアクセスされたウェイには４がナンバリングされる。具体的にセットＩＤ＝２のＬＲＵテーブル情報は｛１、３、２、４｝であるので、最近にアクセスされたウェイのウェイＩＤは０であり、ウェイＩＤ＝２，１，３の順にアクセス順が古くなる。ここで、（セットＩＤ、ウェイＩＤ）＝（２、３）が次にアクセスされた場合、ＬＲＵテーブルの情報は、｛１、３、２、４｝から｛２、４、３、１｝に更新される。
【００５６】
図２のＬＲＵ更新部３１の構成は一般的なキャッシュにおけるＬＲＵの実装方式と同様の構成である。
【００５７】
［ＭＲＵテーブルの詳細］
図５は、ＭＲＵテーブルの一例を示す図である。図２のＭＲＵテーブル４２は、各演算装置ＡＲが直近にアクセスしたキャッシュ内の位置（すなわち、セットＩＤおよびウェイＩＤ）を示す機能ブロックである。
【００５８】
図５の例では、ＭＲＵテーブル４２は、Ｎｏ．０からＮｏ．３までの４つのエントリを含む。各エントリは、演算装置ＩＤ、セットＩＤ、およびウェイＩＤの３つのフィールドで構成される。
【００５９】
演算装置ＩＤのフィールドには、そのキャッシュにアクセス可能な演算装置ＡＲの演算装置ＩＤが予め設定される。各演算装置ＡＲからのアクセスの度に、対応するエントリにおいて当該演算装置ＡＲがアクセスしたキャッシュ上のライン位置に対応するセットＩＤとウェイＩＤとが更新される。
【００６０】
一つの演算装置ＡＲに対して、複数のエントリを設定しても良い。ただし、あるセットに複数の演算装置ＡＲのアクセスが集中した場合に、全てのウェイが他の演算装置ＡＲに利用されているとリプレース対象のウェイが選択できない。したがって、ＭＲＵテーブル４２のエントリ数の上限はキャッシュのウェイ数に等しい値とする。
【００６１】
［ＭＲＵ更新部の動作の詳細］
図６は、図２のＭＲＵ更新部の動作を示すフローチャートである。図２および図６を参照して、ＭＲＵ更新部４１は、演算装置ＡＲのアクセス要求毎にＭＲＵテーブル４２の更新を行う機能ブロックである。
【００６２】
ＭＲＵ更新部４１は、キャッシュコア部２０にてヒットが発生したとき、もしくは、キャッシュミス発生した後にメモリアクセス制御部２２がリプレースのために新たに配置されるデータの読み出しを完了したときに、ＭＲＵテーブル４２の更新を開始する。それまでは、ＭＲＵ更新部４１は待ち状態である（ステップＳ２００）。
【００６３】
ＭＲＵテーブル４２を更新する際、ＭＲＵ更新部４１は、まず、キャッシュアクセス制御部２１が通知するアドレスからセットＩＤを計算する（ステップＳ２１０）。
【００６４】
次に、ＭＲＵ更新部４１は、ＭＲＵテーブル４２において、アクセスしている演算装置ＩＤに対応するエントリを探索する（ステップＳ２２０）。もし、複数のエントリが存在する場合は、より古い時刻にアクセスしたエントリが選択される。
【００６５】
次に、ＭＲＵ更新部４１は、探索されたエントリに対して、ステップＳ２１０で計算されたセットＩＤおよび、キャッシュコア部２０より取得したアクセスウェイＩＤ（図２のＣ１に対応する）を書き込む（ステップＳ２３０）。以上により、ＭＲＵテーブル４２の更新が完了する。
【００６６】
［リプレースマスク生成部の詳細］
図７は、キャッシュミス時のリプレースマスク生成部の動作を説明するための機能ブロック図である。
【００６７】
まず、図２のリプレースマスク生成部４３は、キャッシュアクセス制御部２１が通知するアドレスと演算装置ＩＤ６０とを取得し、アドレスからセットＩＤ６１を計算する。
【００６８】
次に、リプレースマスク生成部４３の演算部６４は、ＭＲＵテーブル４２の各エントリ６２に対して、上記の取得した演算装置ＩＤ６０と、エントリ６２に保存された演算装置ＩＤが不一致となるかを確認する。並行して、リプレースマスク生成部４３の演算部６５は、上記の計算したセットＩＤ６１とエントリ６２に保存されたセットＩＤが一致するかを確認する。
【００６９】
次に、演算部６６は、演算部６４における演算装置ＩＤの不一致確認結果と、演算部６５におけるセットＩＤの一致確認結果との積を求める。デマルチプレクサ６７（ＤＥＭＵＸ）は、エントリ６２に保存されたウェイＩＤに応じて、演算部６６の演算結果を、対応する出力部６８＿０〜６８＿Ｎに出力する。あるエントリ６２において、現在アクセス中の演算装置ＡＲ（すなわち、キャッシュミスを引き起こした演算装置ＡＲ）以外の演算装置ＡＲによって当該セットにおいて直近にアクセスしたウェイがあれば、その出力部６８への出力が１となり、そうでなければ０となる。
【００７０】
最後に、各出力部６８＿０〜６８＿Ｎは、エントリ毎に求めた上記の出力値の和を、対応するウェイ位置のリプレースマスク７０として出力する。
【００７１】
［更新参照テーブルおよび更新参照優先度生成部の詳細］
図８は、図２の更新参照テーブルおよび更新参照優先度生成部の構成を示すブロック図である。
【００７２】
図８を参照して、更新参照テーブル５２は、セットＩＤとウェイＩＤによって決まるライン毎にエントリを有する。各エントリは、更新参照状態、更新中の演算装置ＩＤ、および参照中の演算装置ＩＤの３つのフィールドを有する。更新参照状態は、ラインの状態を示すものであり、未更新、更新中、更新完了、および参照中の４つの状態を取りうる。更新中の演算装置ＩＤは、更新中状態にあって当該ラインを更新している演算装置ＡＲの識別情報（すなわち、更新中演算装置ＩＤ）を示す。参照中の演算装置ＩＤは、参照中状態にあって当該ラインを参照している演算装置ＡＲの識別情報（すなわち、参照中識別情報ＩＤ）を示す。
【００７３】
更新参照優先度生成部５３は、演算装置ＡＲのアクセスアドレスから生成したセットＩＤに基づいて、更新参照テーブル５２から、当該セットに対応する参照更新状態フィールドの情報５４をウェイごとに取り出す。更新参照優先度生成部５３の状態−優先度変換部５５は、予め設定された更新参照優先度情報５７に基づいて、各ウェイの更新参照優先度５６を決定する。更新参照優先度情報５７は、更新参照状態と優先度との対応関係を示すものである。
【００７４】
［更新参照テーブル更新部の動作の詳細］
図９は、更新参照テーブル更新部５１における各ラインの状態遷移の一例を示す図である。
【００７５】
図８および図９を参照して、セットＩＤとウェイＩＤとで決定される各ラインは、未更新ＳＴ１、更新中ＳＴ２、更新完了ＳＴ３、および参照中ＳＴ４の４つのいずれかの状態を持つ。更新参照テーブル更新部５１は、あるラインに対してリセットまたはリプレースが行われた場合、当該ラインに対して未更新の状態ＳＴ１を割り当てる。
【００７６】
更新参照テーブル更新部５１は、当該ラインに対して任意の演算装置ＩＤからライト（Write）が行われた場合、当該ラインに更新中の状態ＳＴ２を割り当てるとともに、更新参照テーブル５２の当該ラインに対応する更新中演算装置ＩＤフィールドに、ライトを実施した演算装置のＩＤを保存する。ここで、当該演算装置ＩＤをもつ演算装置が、当該ラインが属するセットの次のセット（すなわち、現行のセットＩＤ＋１）にライトを実施した場合、更新参照テーブル更新部５１は、当該演算装置による更新が完了したと判定し、当該ラインに対して更新完了の状態ＳＴ３を割り当てる。
【００７７】
その後、任意の演算装置により当該ラインへのリードが実施された場合、更新参照テーブル更新部５１は、当該ラインに参照中の状態ＳＴ４を割り当てるとともに、更新参照テーブル５２の当該ラインに対応する参照中演算装置ＩＤフィールドに、リードを実施した演算装置のＩＤを保存する。ここで、更新時と同様に、当該演算装置ＩＤをもつ演算装置が、当該ラインが属するセットの次のセット（すなわち、現行のセットＩＤ＋１）にリードを実施した場合、更新参照テーブル更新部５１は、当該演算装置による参照が完了したと判定し、当該ラインに対して未更新の状態ＳＴ１を割り当てるとともに、更新中演算装置ＩＤおよび参照中演算装置ＩＤフィールドをクリアする。
【００７８】
なお、あらかじめ特定の演算装置のみを優先度制御対象の演算装置として登録し、上記の更新中への遷移条件において、特定の演算装置によるライトのみ状態遷移を引き起こすようにしても制御してもよい。
【００７９】
［リプレース選択部の動作の詳細］
図１０は、リプレース選択部の動作の詳細を説明するための機能ブロック図である。図２および図１０を参照して、リプレース対象選択部３３は、ＬＲＵテーブル３２、リプレースマスク７０および更新参照優先度５６より、リプレース対象となるキャッシュ位置を特定する機能ブロックである。
【００８０】
まず、リプレース対象選択部３３は、ＬＲＵテーブル３２から、アクセス中のセットに対応するエントリ８０を得る。ＬＲＵテーブル３２の対応するエントリ８０には、ウェイごとのアクセス順番が格納されている。リプレース対象選択部３３は、ＬＲＵテーブル３２の対応するエントリ８０の各ビットと、リプレースマスク７０の対応するビットの“１”と“０”とを反転したものと積を演算する。演算結果８３において、“０”はリプレース対象外のウェイであることを意味する。その他の演算結果はウェイごとのアクセス順番を意味している。
【００８１】
次に、図８で説明したウェイ毎の更新参照優先度５６に基づいて、デマルチプレクサ８５（ＤＥＭＵＸ）は、上記の演算結果８３（すなわち、マスクされたウェイ毎のアクセス順番）を、同じ更新参照優先度を持つウェイ同士の組合せとして分離する。図１０の例では、ウェイＩＤ＝０，３は同じ更新参照優先度“１”を有しているので、ウェイＩＤ＝０，３の演算結果である“１”および“３”は、格納部８６＿１の対応するウェイの位置に格納される。ウェイＩＤ＝１は更新参照優先度“２”を有しているので、ウェイＩＤ＝１の演算結果である“２”は、格納部８６＿２の対応するウェイの位置に格納される。
【００８２】
その後、各優先度におけるリプレースウェイ選択部８７＿０〜８７＿３は、最もアクセス順番の古いウェイを選択する。全てのウェイがリプレース対象外を意味する“０”の場合は、該当ウェイなし（図１０の“−”）とする。具体的に図１０の例では、優先度１におけるリプレースウェイ選択部８７＿１は、最もアクセス順番が古い（すなわち、アクセス順番が３の）ウェイＩＤ＝３を選択する。優先度２におけるリプレースウェイ選択部８７＿２は、最もアクセス順番が古い（すなわち、アクセス順番が２）のウェイＩＤ＝１を選択する。
【００８３】
最後に、優先度を考慮したリプレースウェイ選択部８９は、高い優先度での判断結果から順に確認し（すなわち、８８＿３，８８＿２，８８＿１，８８＿０）の順に確認し、リプレースするウェイを決定する。図１０の例では、優先度２におけるリプレースウェイの選択結果であるリプレースウェイＩＤ＝１が最終的なリプレースウェイの選択結果として選択される。
【００８４】
［まとめ］
本実施の形態の情報処理装置にキャッシュ装置の主な特徴をまとめると以下のようになる。
【００８５】
（キャッシュの構成）
本実施の形態の情報処理装置におけるキャッシュ装置１０は、メモリ空間を複数の領域ＲＧ１〜ＲＧ４に分割し、これら複数の領域のデータをそれぞれ独占的に配置可能な複数のキャッシュＣＳ１〜ＣＳ４を備える。
【００８６】
上記構成のキャッシュ装置によれば、同一階層に複数のキャッシュＣＳ１〜ＣＳ４を有するが、各キャッシュＣＳに同一データが配置されることがないためコヒーレンス機構が不要であり、データ同期による性能低下を抑止できる。また、複数の演算装置ＡＲ１〜ＡＲ４からのアクセスが、アドレスに応じて異なるキャッシュＣＳに分散されることで、キャッシュＣＳへのアクセス競合やスラッシングの発生頻度を抑制することができ、この結果、情報処理装置のシステム性能を向上させることができる。
【００８７】
（演算装置とキャッシュの接続）
各演算装置ＡＲは、アクセスが必要なメモリ領域に対応する１つ以上のキャッシュに限定的に接続可能になっている。各演算装置ＡＲは、自身がアクセスを必要とするメモリアドレスの範囲に応じて、接続された１つ以上のキャッシュＣＳのいずれかと選択的に接続する。
【００８８】
このように各演算装置ＡＲとキャッシュＣＳとの間での接続を簡略化することによって、ハードウェアの複雑化を抑止することができる。さらにはバス性能（すなわち、キャッシュアクセスバスＣＢＵＳの性能）の向上を図ることができる。
【００８９】
（スラッシング防止のリプレース方式）
各キャッシュＣＳは、各演算装置ＡＲが直前にアクセスしたキャッシュ内の位置（すなわち、セットＩＤとウェイＩＤとの組み合わせ）を記憶する第１の記憶部としてＭＲＵテーブル４２を備える。リプレース対象選択部３３は、ＭＲＵテーブル４２に基づいて、キャッシュミス発生時にミスを引き起こした演算装置ＡＲ以外の演算装置ＡＲがアクセスしているキャッシュ内位置をデータリプレース対象から除外する（すなわち、マスクする）。これによって、演算装置ＡＲ間でのスラッシングの発生を防止することができ、結果として、情報処理装置のシステム性能を向上させることができる。
【００９０】
（データ再利用性を高めるリプレース方式）
各キャッシュＣＳは、キャッシュ内のリプレース単位となる位置毎に、ある演算装置ＡＲによってデータ更新中であることを示す状態と、そのデータ更新後に同演算装置または他の演算装置によって参照中であることを示す状態とを判定する手段（すなわち、更新参照制御部５０）を備える。上記の判定のために、各キャッシュＣＳは、データの更新の有無と更新後の参照の有無とを少なくとも記憶する第２の記憶部として更新参照テーブル５２を備える。
【００９１】
これによって、ある演算装置ＡＲによって更新されたデータは、同演算装置または他演算装置による参照が完了するまでリプレースの優先順位を下げることができる。すなわち、リプレース対象選択部３３は、データ更新後に再参照されていないデータをリプレース対象から除外する。この結果、データ再利用効率を高め、システム性能を向上させることができる。
【００９２】
上記のキャッシュ装置の構成によれば、ＡＳＩＣおよびＦＰＧＡなどの専用回路ならびにマルチプロセッサなど、複数の演算装置がメモリを共有し、かつ各演算装置間で共有されるデータの比率が高いシステムにおいて、システムの処理速度を向上させることができる。
【００９３】
［変更例］
本実施の形態の情報処理装置におけるキャッシュ装置１０は以下のように変更することが可能である。
（キャッシュのマルチポート対応）
本実施の形態では、１ポートキャッシュのみを記載しているが、各キャッシュＣＳをマルチポート対応させてもよい。この場合、各キャッシュＣＳは、演算装置ＡＲとの間のインタフェースをポート数分だけ有する。本構成により、共有する演算装置間でのアクセス競合を解消し、アクセス性能を向上させる効果が得られる。
【００９４】
（下位レベルキャッシュ）
本実施の形態では、レベル１のキャッシュＣＳのみ記載しているが、各キャッシュＣＳとメモリアクセスバスＭＢＵＳとの間に下位レベルのキャッシュを１階層もしくは複数階層配置しても良い。この場合、下位レベルキャッシュはプライベートキャッシュ方式、共有キャッシュ方式のいずれでも良い。なお、プライベートキャッシュ方式ではレベル１のキャッシュの場合と同様にコヒーレンス機構は不要である。
【００９５】
今回開示された実施の形態はすべての点で例示であって制限的なものでないと考えられるべきである。この発明の範囲は上記した説明ではなくて請求の範囲によって示され、請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【００９６】
１０  キャッシュ装置、２０  キャッシュコア部、２１  キャッシュアクセス制御部、２２  メモリアクセス制御部、３０  ＬＲＵ制御部、３１  ＬＲＵ更新部、３２  ＬＲＵテーブル、３３  リプレース対象選択部、４０  ＭＲＵ制御部、４１  ＭＲＵ更新部、４２  ＭＲＵテーブル、４３  リプレースマスク生成部、５０  更新参照制御部、５１  更新参照テーブル更新部、５２  更新参照テーブル、５３  更新参照優先度生成部、５６  更新参照優先度、７０  リプレースマスク、ＡＲ  演算装置、ＣＢＵＳ  キャッシュアクセスバス、ＣＳ  キャッシュ、ＭＢＵＳ  メモリアクセスバス、ＭＣＴＬ  メモリ制御部、ＭＥＭ  メモリ部、ＲＧ１〜ＲＧ４  領域。
【図１】
0006732032.tif 000002
【図２】
0006732032.tif 000003
【図３】
0006732032.tif 000004
【図４】
0006732032.tif 000005
【図５】
0006732032.tif 000006
【図６】
0006732032.tif 000007
【図７】
0006732032.tif 000008
【図８】
0006732032.tif 000009
【図９】
0006732032.tif 000010
【図１０】
0006732032.tif 000011