(57)【要約】【課題】  マルチプロセッサシステムにおいて、いずれかのプロセッサに一定期間占有されるメモリについて、スヌープの回数を削減する。【解決手段】  複数ブロックを含むページに分割され、複数のプロセッサに共有される共有ページと一定期間何れかのプロセッサに占有される排他ページを包含する記憶装置と、複数のプロセッサと、を備えるコンピュータに、プロセッサに対応して設けられたキャッシュ装置であって、１）対応するプロセッサから排他ページ内の領域のアドレスを受信して、領域を含むページのスヌープ要求を他装置に送信して、領域を含むブロックのアドレスと最新データを自装置のキャッシュアレイに記憶し、２）他装置からページのスヌープ要求を受信して、指定されたページが包含する全てのブロックを自装置のキャッシュアレイから削除する管理手段と、キャッシュアレイと、を備える。【選択図】      図３
2015121945.tif 000002
【特許請求の範囲】
【請求項１】
複数ブロックを含むページに分割され、複数のプロセッサに共有される共有ページと一定期間何れかのプロセッサに占有される排他ページを包含する記憶装置と、前記複数のプロセッサと、を備えるコンピュータに、プロセッサに対応して設けられたキャッシュ装置であって、
１）対応するプロセッサから排他ページ内の領域のアドレスを受信して、前記領域を含むページのスヌープ要求を他装置に送信して、前記領域を含むブロックのアドレスと最新データを自装置のキャッシュアレイに記憶し、２）他装置からページのスヌープ要求を受信して、指定されたページが包含する全てのブロックを自装置のキャッシュアレイから削除する管理手段と、前記キャッシュアレイと、を備えるキャッシュ装置。
【請求項２】
前記キャッシュ装置は、さらに、ページアドレスアレイを備え、
前記管理手段は、１）前記領域を含むページのアドレスが前記ページアドレスアレイに登録されていなければ、これを前記ページアドレスアレイに登録して、ページのスヌープ要求を他装置に送信し、２）前記領域を含むページのアドレスが前記ページアドレスアレイに登録されていれば、ページのスヌープ要求を他装置に送信しない、請求項１のキャッシュ装置。
【請求項３】
前記管理手段は、
１）対応するプロセッサから共有ページ内の領域のアドレスを受信して、前記領域を含むブロックのスヌープ要求を他装置に送信して、前記領域を含むブロックのアドレスと最新データを自装置のキャッシュアレイに記憶し、２）他装置からブロックのスヌープ要求を受信して、指定されたブロックを自装置のキャッシュアレイから削除する、請求項１または２のキャッシュ装置。
【請求項４】
論理アドレスと、物理アドレスと、共用ページまたは排他ページの区別情報と、を格納するアドレス変換手段を備えた前記複数のプロセッサと、
前記記憶装置と、
プロセッサの論理アドレスによる前記記憶装置アクセス時に、前記アドレス変換手段から、前記物理アドレスと前記区別情報を取得する、請求項１乃至３の何れかのキャッシュ装置と、を備えるコンピュータ。
【請求項５】
複数ブロックを含むページに分割され、複数のプロセッサに共有される共有ページと一定期間何れかのプロセッサに占有される排他ページを包含する記憶装置と、前記複数のプロセッサと、を備えるコンピュータに、プロセッサに対応して設けられたキャッシュ装置において、
１）対応するプロセッサから排他ページ内の領域のアドレスを受信して、前記領域を含むページのスヌープ要求を他装置に送信して、前記領域を含むブロックのアドレスと最新データを自装置のキャッシュアレイに記憶し、２）他装置からページのスヌープ要求を受信して、指定されたページが包含する全てのブロックを自装置のキャッシュアレイから削除するキャッシュ制御方法。
【請求項６】
１）前記領域を含むページのアドレスが前記ページアドレスアレイに登録されていなければ、これを前記ページアドレスアレイに登録して、ページのスヌープ要求を他装置に送信し、２）前記領域を含むページのアドレスが前記ページアドレスアレイに登録されていれば、ページのスヌープ要求を他装置に送信しない、請求項5のキャッシュ制御方法。
【請求項７】
１）対応するプロセッサから共有ページ内の領域のアドレスを受信して、前記領域を含むブロックのスヌープ要求を他装置に送信して、前記領域を含むブロックのアドレスと最新データを自装置のキャッシュアレイに記憶し、２）他装置からブロックのスヌープ要求を受信して、指定されたブロックを自装置のキャッシュアレイから削除する、請求項５または６のキャッシュ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、キャッシュ装置、キャッシュ装置を備えるコンピュータ、および、キャッシュ制御方法、特に、キャッシュのコヒーレンシを保つキャッシュ装置、キャッシュ装置を備えるコンピュータ、および、キャッシュ制御方法に関する。
【背景技術】
【０００２】
プロセッサに対応してキャッシュメモリを有するマルチプロセッサ装置は、キャッシュメモリ間のコヒーレンシを保つ必要がある。この為の技術には、以下のようなものが有る。
【０００３】
特許文献１は、キャッシュの単位に、メモリデータのコピーを持つプロセッサを表す情報を管理する細粒度スヌープフィルタと、キャッシュの単位より大きな分割単位ごとに、当該分割単位のデータコピーがプロセッサにキャッシュされていることを示す粗粒度スヌープフィルタを備えるコンピュータシステムを開示する。このコンピュータシステムは、両フィルタを用いることにより、メモリコピーを保持しているプロセッサ以外のプロセッサに対するスヌープ発行数を減らす。
【０００４】
特許文献２は、ディレクトリ方式でコヒーレンシを制御するマルチプロセッサ装置を開示する。この装置は、キャッシュラインを分割したサブライン単位でデータのシェア状態をディレクトリに登録し、その状態に応じて、キャッシュメモリの無効化をキャッシュライン単位またはサブライン単位で行う。この装置は、これにより無効化処理の回数を減らす。
【０００５】
特許文献３は、ＣＰＵ（Central Processing Unit）と同じデータをアクセスしないアクセラレータ用のキャッシュ一貫性を維持するシステムを開示する。
【０００６】
特許文献４は、圧縮ディレクトリを用いて、キャッシュのコヒーレンシを保つマルチプロセッサシステムを開示する。このシステムは、それによりディレクトリ要領を削減する。
【０００７】
特許文献５は、ページ内にダーティデータが不連続に存在してもライトバックの回数を抑えることを目的とした、ディスクキャッシュの制御方法を開示する。
【０００８】
特許文献６は、共有メモリ管理手段と専用メモリ管理手段を有するコンピュータを開示する。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開2008-3アドレス変換部10414号公報
【特許文献２】特許第3875749号公報
【特許文献３】特開20メモリ制御部12181860号公報
【特許文献４】特開平8-263374号公報
【特許文献５】特開2006-163474号公報
【特許文献６】特開2009-087189号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
上記特許文献１の技術は、キャッシュの単位（キャッシュライン）ごとにスヌープを行う必要がありスヌープ回数が多く、性能劣化を発生する。本発明は、この課題を解決することを目的とする。なお、特許文献２乃至６の技術は、何れも、スヌープ回数の制御に関係しない。
【課題を解決するための手段】
【００１１】
本発明の一実施形態にかかるキャッシュ装置は、複数ブロックを含むページに分割され、複数のプロセッサに共有される共有ページと一定期間何れかのプロセッサに占有される排他ページを包含する記憶装置と、前記複数のプロセッサと、を備えるコンピュータに、プロセッサに対応して設けられたキャッシュ装置であって、
１）対応するプロセッサから排他ページ内の領域のアドレスを受信して、前記領域を含むページのスヌープ要求を他装置に送信して、前記領域を含むブロックのアドレスと最新データを自装置のキャッシュアレイに記憶し、２）他装置からページのスヌープ要求を受信して、指定されたページが包含する全てのブロックを自装置のキャッシュアレイから削除する管理手段と、前記キャッシュアレイと、を備える。
【００１２】
本発明の一実施形態にかかるキャッシュ制御方法は、複数ブロックを含むページに分割され、複数のプロセッサに共有される共有ページと一定期間何れかのプロセッサに占有される排他ページを包含する記憶装置と、前記複数のプロセッサと、を備えるコンピュータに、プロセッサに対応して設けられたキャッシュ装置において、
１）対応するプロセッサから排他ページ内の領域のアドレスを受信して、前記領域を含むページのスヌープ要求を他装置に送信して、前記領域を含むブロックのアドレスと最新データを自装置のキャッシュアレイに記憶し、２）他装置からページのスヌープ要求を受信して、指定されたページが包含する全てのブロックを自装置のキャッシュアレイから削除する。
【発明の効果】
【００１３】
本発明によれば、マルチプロセッサシステムにおいて、いずれかのプロセッサに一定期間占有されるメモリについて、スヌープの回数を削減することができる。
【図面の簡単な説明】
【００１４】
【図１】図１は、プロセスが使用する共有メモリ空間と排他メモリ空間の一例を説明する図である。
【図２】図２は、メモリ空間とアドレスの関係を示す。
【図３】図３は、第１の実施の形態のキャッシュ装置100を搭載したコンピュータ506の構成図である。
【図４】図４は、キャッシュ装置100の内部およびその周辺の構成図である。
【図５】図５は、コンピュータ506のページテーブルエントリに格納されるデータを示す図である。
【図６】図６は、プロセッサ122による記憶装置505のアクセス動作例を示す図である。
【図７】図７は、管理部120が行うスヌープ動作に関する判定表を示す図である。
【図８】図８は、第２の実施の形態のキャッシュ装置100の構成図である。
【発明を実施するための形態】
【００１５】
＜第１の実施の形態＞
本実施形態のキャッシュ装置100の構成及び動作を説明する前に、本実施形態に関する、基本的な考え方を説明する。
【００１６】
マルチプロセッサ構成の情報処理装置において、各プロセッサ(プロセッサ上で動作するプロセス)がアクセスするメモリ空間には２種類ある。一つは、複数プロセッサが同時にアクセスする可能性がある共有メモリ空間であり、他の一つは、一定期間排他的に唯一のプロセッサしかアクセスしない排他メモリ空間である。
【００１７】
共有メモリ空間は、複数プロセッサ間の制御に使用される空間であり、例えば、各プロセッサで実行されるプロセスの実行順やメモリのアクセス順、共有リソース等を管理する処理を実行する空間である。共有メモリ空間は、性能面ではアクセス帯域よりもレイテンシが求められる。
【００１８】
排他メモリ空間は、一定期間排他的な使用が保証された空間であり、当該期間は同時には唯一のプロセッサ(プロセス)しかアクセスしない。排他メモリ空間は、性能面ではアクセス帯域が求められる。
【００１９】
ここで、一定期間とは、例えば、子プロセスが存在する間、子プロセスがあるプロセッサを占有している間、子プロセスの実行があるプロセッサ上でのみ行われている間、を意味する。子プロセスがあるプロセッサを占有している間とは、例えば当該子プロセスが連続して中断することなく実行されている間を意味する。
【００２０】
図１は、プロセスが使用する共有メモリ空間と排他メモリ空間の一例を説明する図である。共有メモリ空間は、親(上位)プロセスと子(下位)プロセスが共有し、排他メモリ空間は、子(下位)プロセスが使用する。
【００２１】
親プロセスは、共有リソースを管理し、子プロセスの生成および完了を管理し、さらに、複数のプロセッサおよびプロセスがアクセス可能なメモリ空間を用意する。子プロセスは、それぞれ個別のメモリ空間が割り当てられ、さらに、一定期間個別のプロセッサに割り当てられる。プロセスを制御するＯＳ（Operating System）は、子プロセスに個別のプロセッサおよびメモリ空間を割り当てる事により、子プロセス相互の干渉を避ける。さらに、ＯＳは、これにより、子プロセスの処理性能、並びに、マルチプロセッサシステムの性能とスケーラビリティー効率を最大限に引き出す。
【００２２】
キャッシュを有するシステムは、キャッシュのデータ管理サイズ(例：128バイト等)ごとのメモリについてキャッシュ状態を管理している。そして、あるプロセッサ(プロセス)がメモリをアクセスする際、キャッシュは、他プロセッサ上のキャッシュ(階層キャッシュ含む)状態を監視(スヌープ)し、キャッシュのコヒーレンシを保つ動作を行う。このコヒーレンシを保つために、システムは、メモリアクセスのスループットを阻害しない様に十分なスヌープ用の帯域を備え、かつ短いレイテンシを達成する。コヒーレンシ機能の搭載、ＬＳＩ（Large Scale Integration）間のインタフェースの実現、および、高速動作のインタフェースの実装は、ＬＳＩ回路規模、物理ピン数投資や高速動作に伴う消費電力等の点で、テクノロジコストの増加を招いている。
【００２３】
この問題に対処するため、本実施の形態のキャッシュ装置100は、共有メモリ空間と排他メモリ空間を区別して管理する。図２は、この管理差を説明する為にメモリ空間とアドレスの関係を示す。
【００２４】
本実施の形態のキャッシュ装置100は、共有メモリ空間を、キャッシュのブロック単位で管理する。例えば、ブロックサイズを128バイト、メモリ空間の大きさを１テラバイト（アドレス長を40ビット）とする。この場合、キャッシュ装置100は、スヌープに使用するアドレスを33ビットのブロックアドレス（図２（ａ））、スヌープ実行単位をブロックとする。256メガバイト空間に連続アクセスした場合に必要なスヌープ回数は、約200万回となる。
【００２５】
一方、キャッシュ装置100は、排他メモリ空間を、キャッシュのブロック単位を所定数包含するページ単位で管理する。例えば、ページサイズを16メガバイト、メモリ空間の大きさを１テラバイトとしたとき、キャッシュ装置100は、スヌープに使用するアドレスを16ビットのページアドレス（図２（ｂ））、スヌープ実行単位をページとする。256メガバイト空間に連続アクセスした場合に必要なスヌープ回数は16回となる。
【００２６】
本実施の形態のキャッシュ装置100は、以下のような特徴を有する。
【００２７】
先ず、キャッシュ装置100は、共有メモリ空間と排他メモリ空間を区別する。この区別は、例えば、ページ単位でおこなう。ページテーブルエントリは、この区別の為のフラグを格納する。このフラグは、ソフトウエア(アプリケーションおよびＯＳ)で指定可能である。キャッシュ装置100は、メモリアクセスの都度に空間の種別を区別する。キャッシュ装置100は、キャッシュコヒーレンシ制御に必要なスヌープ・タグやディレクトリ・タグ等のアドレス管理サイズを可変とし、排他メモリ空間の場合の管理サイズを大きくする。この管理サイズは、例えば、共有メモリ空間については、ブロックサイズ（128バイト）、排他メモリ空間については、ページサイズ（16メガバイト）である。
【００２８】
さらに、キャッシュ装置100は、キャッシュの無効化処理、追い出し処理等は、大きい管理サイズの制御リクエストにも対応する。即ち、キャッシュ装置100は、キャッシュ本体(データ管理)と、スヌープ・タグ等の管理サイズは別々に扱い、ひとつの制御リクエストで、複数ブロックの無効化、追い出しを実行する。
【００２９】
また、キャッシュ装置100は、上述のキャッシュ無効化に伴う処理の完了を通知・保障する機能を実装する。即ち、キャッシュ装置100は、コヒーレンシおよびアクセスのオーダリング(順序)を保つために完了の保障機能を持つ。
【００３０】
（本実施形態の構成）
以降、本実施の形態のキャッシュ装置100の構成を説明する。図３は、本実施の形態のキャッシュ装置100を搭載したコンピュータ506の構成図である。
【００３１】
コンピュータ506は、記憶装置505と、当該記憶装置505に接続された複数のＬＳＩ501と、を備える。ＬＳＩ501は、キャッシュ装置100、メモリ制御部121、及び、一個以上のプロセッサ122を備える。各ＬＳＩ501は、キャッシュ装置100を介して相互に接続されている。
【００３２】
図４は、キャッシュ装置100の内部およびその周辺の構成図である。キャッシュ装置100は、キャッシュアレイ117、ページアドレスアレイ110、および、管理部120を備える。
【００３３】
管理部120は、物理アドレス保持部105、スヌープ制御部106スヌープアドレス保持部107、選択器108、ページアドレス保持部109、ページヒット／ミス判定部111、ページ制御部112、バースト制御部113、ブロックアドレス保持部114、選択器115、ブロックアドレス保持部116、キャッシュヒット／ミス判定部118、および、キャッシュ制御部119を備える。
【００３４】
キャッシュ装置100に接続されるプロセッサ122は、命令デコード部101、論理アドレス生成部102、アドレス変換制御部103、及び、アドレス変換部104を備える。なお、ここでは、プロセッサ122について、キャッシュ装置100と密接な構成要素だけを示す。
【００３５】
プロセッサ122の命令デコード部101は、実行する命令をデコードし必要な動作を解読する。論理アドレス生成部102は、命令デコード部101で命令をデコードした結果、記憶装置505へのアクセスが必要な場合にアクセスする論理アドレスを生成する。アドレス変換制御部103は、アドレス変換部104に対する登録、更新、等の制御をおこなう。アドレス変換部104は、論理アドレスに対応する物理アドレスを記憶している。アドレス変換部104は、ＴＬＢ（Translation Look-aside Buffer）とも呼ばれる。
【００３６】
キャッシュ装置100の物理アドレス保持部105は、アドレス変換部104で生成した物理アドレスを保持するスヌープアドレス保持部107は、スヌープ要求に含まれているアドレスを保持する。選択器108は、物理アドレス保持部105、スヌープアドレス保持部107の何れか一方を選択して、選択された方に格納されているアドレスおよびＳ／Ｅフラグ（後述）を出力する。ページアドレス保持部109は、ページアドレスアレイ110を索引するアドレスを保持する。
【００３７】
ページアドレスアレイ110は、ページアドレスを複数保持し、各ページの状態情報を保持する。ページアドレスアレイ110は、Ｓ／Ｅフラグを保持している。このＳ／Ｅフラグの保持は必須ではないが、ＯＳが管理するページエントリテーブルの矛盾や間違いを検出する機能に活用できる。例えば、ページヒット／ミス判定部111は、Ｓ／Ｅフラグ＝1（排他メモリ空間）で登録されているページ対し、他のキャッシュ装置100からＳ／Ｅフラグ＝0（共有メモリ空間）のスヌープ要求を受けた場合、例外としてＯＳに通知する等しても良い。また、ページアドレスアレイ110は、キャッシュアレイ117と連携して動作する。ページ制御部112は、キャッシュアレイ117にブロックが登録されると、当該ブロックが属するページをページアドレスアレイ110に登録する。
【００３８】
ページヒット／ミス判定部111は、ページアドレス保持部109に保持されたページアドレスが、ページアドレスアレイ110に登録されているか否か（ヒット/ミス）を判定する。ページ制御部112は、ページアドレスアレイ110に対する登録、更新、等の制御をおこなう。また、ページ制御部112は、ページアドレスアレイ110の制御に伴い、該当ページに属する複数のブロックのキャッシュの状態制御指示をバースト制御部113に対して出す。さらに、ページ制御部112は、ページの状態に応じてスヌープ制御部（出力）106に対する指示を出す。
【００３９】
バースト制御部113は、ページ制御部112からの制御指示を受け、該当ページに属するブロック数分のブロックアドレスを制御し、該当ブロックをキャッシュアレイ117から追い出す等の処理を行う。また、バースト制御部113は、該当ブロックに関する制御がすべて完了した事をページ制御部112とスヌープ制御部（出力）106に通知する機能を持つ。
【００４０】
ブロックアドレス保持部114は、バースト制御部113で生成されたブロックアドレスを保持する。選択器115は、選択器108が選択するアドレスとブロックアドレス保持部114が保持するアドレスの何れか一方を選択する。ブロックアドレス保持部116は、キャッシュアレイ117を索引するアドレスを保持する。
【００４１】
キャッシュアレイ117は、いわゆるキャッシュメモリであり、ブロックのアドレスと当該ブロックのデータのコピーをペアにして記憶している。キャッシュアレイ117は、アドレスアレイとデータアレイを包含する。キャッシュヒット／ミス判定部118は、ブロックアドレス保持部116が保持するブロックアドレスが、キャッシュアレイ117に登録されているか否か（ヒット/ミス）を判定する。
【００４２】
キャッシュ制御部119は、キャッシュアレイ117に対する登録、更新、等の制御をおこなう。また、キャッシュ制御部119は、スヌープ制御部（出力）106に対するスヌープ結果の通知と、記憶装置505内のメモリへのアクセスが必要な場合にページ制御部112にアクセス要求を通知する。
【００４３】
なお、スヌープ制御部（入力）106は、キャッシュ間のコヒーレンシを保つために必要なスヌープ動作に関して、他ＬＳＩ501からのスヌープ要求を受け付ける。スヌープ制御部（出力）106は、他ＬＳＩ501に対してスヌープ要求を出力する。スヌープ制御部（入力）106とスヌープ制御部（出力）106の一方または両方を、スヌープ制御部106と称することがある。スヌープ制御部106は、バースト制御部113からブロックに関する制御がすべて完了した通知を受け取り、スヌープ要求元のＬＳＩ501に完了を通知(出力)する。メモリ制御部121は、記憶装置505に対するアクセス制御を行う。
【００４４】
本図に於いて、“Ｓ／Ｅ”との記載が付加された要素は、後述するＳ／Ｅフラグを受信、記憶、または、出力する。
【００４５】
図５は、コンピュータ506のページテーブルエントリに格納されるデータを示す図である。ページテーブルエントリは、論理アドレスごとに、ＯＳにより作成および管理される。
【００４６】
ページテーブルエントリは、物理アドレス、Ｓ／Ｅフラグ、Ｒ／Ｗフラグ、Ｐフラグを記憶する。対応する論理アドレスの記憶装置505がアクセスされ、ページテーブルエントリが参照されると、その論理アドレス、物理アドレス、Ｓ／Ｅフラグがアドレス変換部104に格納される。
【００４７】
Ｐ（Present）フラグは、ページが記憶装置505にロードされているかどうかを示す。Ｒ／Ｗ（Read/Write）フラグは、ページの読み込み/書き込み可否を示す。
【００４８】
Ｓ／Ｅ（Share/Exclusion）フラグは、ページが共有メモリ空間であるか排他メモリ空間であるかを示す。物理アドレスは、このページエントリに対応する論理アドレスに割り当てられている記憶装置505内ページの物理アドレスである。
【００４９】
ページエントリは、他の情報を包含していても良いし、Ｒ／Ｗフラグ等、一部の情報が無くても良い。例えば、Ｓ／Ｅフラグは、別途、ページの集合、例えば、セグメント対応に設けられていても良い。また、論理アドレスの値が閾値より大きいか小さいかで、共有メモリ空間であるか排他メモリ空間を判断できるようにしても良い。
【００５０】
（本実施形態の動作）
本実施の形態のキャッシュ装置100の動作を説明する前に、説明で用いられる、プロセッサ122による記憶装置505内のメモリのアクセス動作例を説明する。図６は、プロセッサ122による記憶装置505のアクセス動作例を示す図である。
【００５１】
本例において、プロセッサ122は、1) Ａ番地から連続する各々8バイトのメモリ空間の値を順にリード (8バイト×n回)し、2) リードした値に対して演算を実行 (8バイト×n回)し、3) 演算結果をＢ番地から連続する空間に順にライト (バイト×n回)する。また、プロセッサ122がアクセスする領域は、キャッシュアレイ117に対して十分大きい領域をアクセスするものとする。
【００５２】
上記1)動作において、プロセッサ122はキャッシュアレイ117に対してＡ番地のリード要求(8バイト)を実行する。キャッシュアレイ117を索引した結果、Ａ番地はキャッシュアレイ117上に存在しない事が判明した場合(ミス)、キャッシュ装置100は、記憶装置505内のメモリに対してリード(a)動作を実行すると共に、他のキャッシュ装置100へのスヌープ(c)動作を実行する。スヌープする事で、記憶装置505のメモリ内容が最新か否かをチェックし、最新であれば記憶装置505のメモリが格納する内容を、最新でなければ最新状態を持っている他のキャッシュ装置100の内容をリプライデータとする。
【００５３】
メモリに対するリード(a)のリプライデータが戻ってきたら、キャッシュ装置100は、自装置のキャッシュアレイ117に当該データを登録すると共に、プロセッサ122にもデータを返却する。これらキャッシュ装置100間のコヒーレンシ制御は一般的な制御方式で良い。通常これら(a)と(c)の動作は、キャッシュの管理単位(例えば128バイト)で実行するのが一般的である。
【００５４】
上記2)動作において、プロセッサ122は上述1)動作で得たデータ(8バイト)を使用して演算を実行する。
【００５５】
上記3)動作において、プロセッサ122は上述2)動作で得た演算した結果データ(8バイト)をライトデートとしてキャッシュに対してＢ番地のライト要求(8バイト)を実行する。ストアスルー制御方式を例として説明すると、キャッシュ装置100は、キャッシュアレイ117を索引した結果、Ｂ番地はキャッシュアレイ117上に存在しない事が判明した場合(ミス)に、記憶装置505に対してライト動作(b)を実行すると共に、他のキャッシュ装置100へのスヌープ(c)動作を実行する。他のキャッシュ装置100をスヌープする事で他のキャッシュ装置100のキャッシュアレイ117上のデータが更新されたことを通知し、他キャッシュ装置100上に存在するデータを無効化する。
【００５６】
これらキャッシュ装置100間のコヒーレンシ制御方式は、ストアイン方式でも良い。キャッシュ装置100は、通常(b)の動作を、ストアスルー方式の場合はライト要求の単位(8バイト)で実行し、ストアイン方式の場合はキャッシュの管理単位(例えば128バイト)で実行する。なお、ストアイン方式の場合、ライト(b)の代わりに、キャッシュ上に対象ブロックを持ってくる必要があるためリード要求が出る。これは、ストアイン方式では一般的なことであり、説明は省略する。キャッシュ装置100は、通常(c)の動作を、キャッシュの管理単位(例えば128バイト)で実行する。
【００５７】
上述した動作は、8バイト動作1回の説明であるが、例として取り上げたプロセッサ122はこの動作をn回実行する。したがって、この様なプロセッサ122の性能を発揮させるためには、記憶装置505に対するリード(a)の性能(主に帯域とアクセスタイム)、ライト(b)の性能(主に帯域)、プロセッサ122の演算性能、キャッシュ装置100の索引・登録性能(帯域とアクセスタイム)が必要である。同時に、他のキャッシュ装置100との間のコヒーレンシ制御に必要なスヌープ(c)動作も、相応の帯域が求められる。
【００５８】
以降、本実施の形態のキャッシュ装置100の動作を説明する。先ず、図４における、命令デコード部101は、プロセッサ122内部で実行する命令をデコードし、その命令が必要とする動作を解読する。命令をデコードした結果、記憶装置505のアクセスが必要と判断された場合、論理アドレス生成部102は、アクセスするメモリの論理アドレスを生成する。アドレス変換制御部103は、生成した論理アドレスでアドレス変換部104を索引する。
【００５９】
アドレス変換制御部103は、索引する事で論理アドレスに対応する物理アドレスを求める。論理アドレスと物理アドレスの対応付けは、一般的にはコンピュータ506が実行するＯＳが管理している。ＯＳは、図５に示した様なページテーブルエントリを複数含むページテーブルを用意する。アドレス変換部104は、そのページテーブルの一部もしくは全部を保持する。その一部をアドレス変換部104が管理している場合は、論理アドレスに該当する物理アドレスがアドレス変換部104上に存在しない場合がある。その場合、アドレス変換制御部103は、ＯＳが管理しているページテーブルエントリ群から該当する情報を取り出してアドレス変換部104に格納する。またＯＳが管理しているページテーブルエントリ群にも存在しない場合、アドレス変換制御部103は、ＯＳに対して割り込み等で通知しページテーブルエントリの作成を依頼する。
【００６０】
アドレス変換制御部103は、ＯＳが管理しているページテーブルエントリが包含するＳ／Ｅフラグを持ち回り、アドレス変換部104に格納する。したがってアドレス変換部104に格納されているページテーブルエントリ情報の各々は、このＳ／Ｅフラグを含んでいる。
【００６１】
物理アドレス保持部105は、アドレス変換部104を索引した結果得られる物理アドレスを保持する。この物理アドレス保持部105もアドレス変換部104索引の結果得たＳ／Ｅフラグの情報を持ち回り保持している。
【００６２】
物理アドレス保持部105の物理アドレスは、選択器108を通り、ページアドレスアレイ110を索引するためにページアドレス保持部109に送られる。選択器108およびページアドレス保持部109も、Ｓ／Ｅフラグの情報を保持している。また同時にキャッシュアレイ117を索引するために、物理アドレス保持部105の物理アドレスは、選択器108および選択器115を通り、ブロックアドレス保持部116に送られる。
【００６３】
ページアドレスアレイ110は、ページアドレスを複数保持し、各ページの状態を保持する。ページアドレスアレイ110は、キャッシュアレイ117と連携して動作する。即ち、ページ制御部112とキャッシュ制御部119は、キャッシュアレイ117に登録されるブロックが属すページが、ページアドレスアレイ110に登録される関係となる様に、登録動作を制御する。ページアドレスアレイ110は、他の点で、一般的なアドレスアレイと同じである。
【００６４】
ページアドレスアレイ110は、ページアドレス保持部109に保持したページアドレスが自身に登録されているかを検索する。ページヒット／ミス判定部111は、アクセスするページがページアドレスアレイ110に登録されているか否かを判定する。ページヒット／ミス判定部111の判定結果は、ページアドレスと共にページ制御部112に送られる。
【００６５】
ページ制御部112は、ページヒット／ミス判定部111の判定結果を元にページアドレスアレイ110の登録更新動作を制御する。ページヒット／ミス判定部111とページ制御部112もＳ／Ｅフラグの情報を持ち回り保持している。また、ページ制御部112は、ページアドレスアレイ110にページアドレスを登録する際に、持ち回ってきたＳ／Ｅフラグの情報も登録する。また、ページ制御部112は、持ち回ってきたＳ／Ｅフラグの状態によってスヌープを実行する単位を判別する。
【００６６】
キャッシュアレイ117は、一般的なキャッシュアレイ117（アドレスアレイおよびデータアレイ）と同じである。キャッシュアレイ117は、ブロックアドレス保持部116が保持するブロックアドレスが自身に登録されているかを検索する。キャッシュヒット／ミス判定部118は、アクセスするブロックがキャッシュアレイ117に登録されているか否かを判定する。キャッシュヒット／ミス判定部118の判定結果はブロックアドレスと共にキャッシュ制御部119に送られる。
【００６７】
キャッシュ制御部119は、キャッシュヒット／ミス判定部118の判定結果を元にキャッシュアレイ117の登録更新動作を制御する。また、キャッシュ制御部119は、メモリアクセスが必要な場合、メモリ制御部121にメモリアクセス要求を通知する。メモリ制御部121は、要求に応じて記憶装置505に対するアクセス(リード・ライト等)を実行する。これは、一般的なメモリアクセス機能である。
【００６８】
ページ制御部112の情報とキャッシュ制御部119の情報は、スヌープ制御部（出力）106に送られ、そこから他のキャキャッシュ装置100にスヌープ要求が送信されるスヌープ制御部（出力）106は、スヌープ要求を出力する際に、Ｓ／Ｅフラグ情報を含めて出力する。
【００６９】
図７は、管理部120が行うスヌープ動作に関する判定表を示す図である。本図では、管理部120は、キャッシュ制御プロトコルとしてＭＥＳＩプロトコルを使用しているものとする。管理部120は、他のプロトコルを用いても良いが、動作の細部は異なってくる。また、本実形態では、説明の簡易化のためキャッシュ階層を一つとしているが、キャッシュ階層が複数であっても良い。管理部120は、各階層において、規定されたキャッシュコヒーレンシ制御のプロトコルに従えば良い。また、管理部120は、キャッシュステータスの遷移に伴う過渡的な状態に対する制御等を実行するが、一般的な装置において考慮・解決すべき事象であるためここでは説明しない。
【００７０】
ＭＥＳＩプロトコルが規定するキャッシュの状態は、以下の状態を含む。
M：Modified （データは当該キャッシュだけに存在し、主記憶上の値から変更されている)
E：Exclusive (データは当該キャッシュだけに存在するが、主記憶上の値と一致している)
S：Share (システム内の他のキャッシュにも同じデータが存在している)
I：Invalid (このキャッシュラインは無効である。キャッシュミス状態も同じ状態を示す)
スヌープ制御部（出力）106、ページ制御部112、および、キャッシュ制御部119は、この表に従って動作する。図７の表は、大きく二つの列に分かれている。「状態」と記された列は、命令に関する条件と、当該命令実行前のページアドレスアレイ110とキャッシュアレイ117の状態とを記述している。「判定と処理」と記された列は、スヌープ動作の単位と動作の要否、当該命令実行後のページアドレスアレイ110とキャッシュアレイ117の状態とを記述している。
【００７１】
図７の表の行は、発生し得る「状態」の組み合わせに対応している。表の行は、大きく二つのグループに分かれており、No.1-1〜1-24が共有メモリ空間（Ｓ／Ｅフラグ＝０）アクセス時の状態に対応し、No.2-1〜2-24が排他メモリ空間 (Ｓ／Ｅフラグ＝１)アクセス時の状態に対応する。なお、No.1-1〜1-24の状態および動作は、ページアドレスアレイ110を除いて、本実施の形態特有のものではない。
【００７２】
以降、プロセッサ122が、所定のＡ番地から連続するメモリ空間の値を順にリードする場合（図６）を例として、図７の表を説明する。まず、共有メモリ空間アクセス時の動作を説明する。
【００７３】
１−１
ページの先頭であるＡ番地に対する最初のリード動作を考えると、当該番地のデータは、ページアドレスアレイ110にもキャッシュアレイ117にも存在しない。この状態は、図７の表のNo.１-9〜1-12のいずれかの状態(Ｓ／Ｅフラグ＝0、メモリアクセス＝リード、自ページアドレスアレイ110＝ミス、自キャッシュアレイ117＝I)が該当する。この場合、管理部120は、他のキャッシュ装置100の状態を認識するため他のキャッシュ装置100に対するスヌープ動作（スヌープ要求の発行を含む）を実行する。
【００７４】
この場合、Ｓ／Ｅフラグ＝0(共有メモリ空間)であるため、スヌープの処理単位は、キャッシュの管理サイズ(例128バイト等)であるブロックとなる。他のキャッシュ装置100は、スヌープした結果をスヌープ要求元に通知する。通知される結果は、表の「状態」、「アレイ状態」、「他キャッシュ」の列の記載に応じたものとなる。他のキャッシュ装置100は、自分のキャッシュアレイ117が最新データを持っていた場合（Ｍ状態）、当該最新データを記憶装置505に書き出す。
【００７５】
管理部120は、その後、記憶装置505に該当ブロックのリード要求を出す。なお、該当ブロックの最新データは、スヌープの結果の通知に含めて、他のキャッシュ装置100から要求元に通知されても良い。このスヌープ動作および自キャッシュの状態遷移、他のキャッシュ装置100の状態遷移等の動作は、ＭＥＳＩプロトコルに規定されたとおりである。
【００７６】
管理部120は、他のキャッシュ装置100の状態に関係なく、自装置のページアドレスアレイ110に、該当ページアドレスを登録する。管理部120は、その際に、リードリクエストと共に持ち回っていたＳ／Ｅフラグの値(この場合は0)も一緒に、ページアドレスアレイ110に登録する。
【００７７】
１−２
続いて、プロセッサ122は、Ａ番地＋8番地に対するリード要求を出す。この時、ページアドレスアレイ110には当該番地のページアドレスは登録済みで、キャッシュアレイ117には当該番地のデータが存在している。この状態は、図７の表のNo.１-2〜1-4のいずれかの状態(Ｓ／Ｅフラグ＝0、メモリアクセス＝リード、自ページアドレスアレイ110＝ヒット、自キャッシュアレイ117＝E or S)が該当する。
【００７８】
この場合、リード要求がキャッシュアレイ117にヒットした状態であるので、他のキャッシュ装置100に対するスヌープ動作は発生しない。この状態は、後続のＡ番地＋120番地までのリードに対して同様である。
【００７９】
１−３
続いて、プロセッサ122は、Ａ番地＋128番地に対するリード要求を出す。このとき、ページアドレスアレイ110には当該番地のページアドレスは登録済みだが、キャッシュアレイ117には当該番地のデータは存在しない。当該番地は、次ブロックに属するためである。この状態は、図７の表のNo.１-5〜1-8いずれかの状態(Ｓ／Ｅフラグ＝0、メモリアクセス＝リード、自ページアドレスアレイ110＝ヒット、自キャッシュアレイ117＝I)が該当する。この場合、管理部120は、他のキャッシュ装置100の状態を認識するため他のキャッシュ装置100に対するスヌープ動作を実行する。
【００８０】
この場合、Ｓ／Ｅフラグ＝0(共有メモリ空間)であるため、スヌープの処理単位は、キャッシュの管理サイズであるブロックとなる。他のキャッシュ装置100は、スヌープした結果をスヌープ要求元に通知する。通知される結果は、表の「状態」、「アレイ状態」、「他キャッシュ」の列の記載に応じたものとなる。他のキャッシュ装置100は、自分のキャッシュアレイ117が最新データを持っていた場合（Ｍ状態）、当該最新データを記憶装置505に書き出す。
【００８１】
管理部120は、その後、記憶装置505に該当ブロックのリード要求を出す。なお、最新データは、スヌープの結果の通知に含めて、他のキャッシュ装置100から要求元に通知されても良い。このスヌープ動作および自キャッシュの状態遷移、他のキャッシュ装置100の状態遷移等の動作は、ＭＥＳＩプロトコルに規定されたとおりである。なお、ページアドレスは、自ページアドレスアレイ110に既に登録済みの状態であるため、更新は不要である。
【００８２】
１−４
以降のアクセスに対して管理部120は、キャッシュアレイ117に格納済みのブロック内にアクセスする場合は上述の１−２の動作を、格納済みブロックを越えて新たなブロックをアクセスする場合は上述の１−３の動作を実行する。更に管理部120は、ページを越えて新たなページに対してアクセスする場合は上述の１−１の動作を実行する。
【００８３】
１−５
ライト動作に関しても、リード時と同様に、状態に応じた処理が図７の表で規定してある。また、スヌープの処理単位は、キャッシュの管理サイズであるブロック単位である。詳細な説明は省略する。
【００８４】
次に排他メモリ空間（Ｓ／Ｅフラグ＝1）アクセス時の管理部120の動作を説明する。
【００８５】
２−１
Ａ番地に対する最初のリード動作を考えると、当該番地のデータは、ページアドレスアレイ110にもキャッシュアレイ117にも存在しない。この状態は、図７の表のNo.2-9〜2-12いずれかの状態(Ｓ／Ｅフラグ＝1、メモリアクセス＝リード、自ページアドレスアレイ110＝ミス、自キャッシュアレイ117＝I)が該当する。この場合、管理部120は、他のキャッシュ装置100の状態を認識するため他のキャッシュ装置100に対するスヌープ動作（スヌープ要求の発行を含む）を実行する。
【００８６】
この場合、Ｓ／Ｅフラグ＝１(排他メモリ空間)であるため、スヌープの処理単位は、ページ(例16メガバイト等)である。他のキャッシュ装置100は、スヌープした結果をスヌープ要求元に通知する。通知される結果は、表の「状態」、「アレイ状態」、「他キャッシュ」の列の記載に応じたものとなる。他のキャッシュ装置100は、自分のキャッシュアレイ117が最新データを持っていた場合（Ｍ状態）、当該最新データを記憶装置505に書き出す。
【００８７】
このスヌープ動作および自キャッシュの状態遷移、他のキャッシュ装置100の状態遷移等の動作は、一般的なＭＥＳＩプロトコルと異なる。即ち、他のキャッシュ装置100は、スヌープ要求で受け取ったページアドレスに属するブロックを全てキャッシュアレイ117から追い出しキャッシュステータスをIに更新する。その後、他のキャッシュ装置100は、スヌープ要求元のキャッシュ装置100に対して、該当ページの全ブロック追い出しが完了した事を通知する。
【００８８】
スヌープ要求元の管理部120は、その後、記憶装置505に該当ブロックのリード要求を出す。なお、ページ単位のスヌープ要求の場合であっても、スヌープ要求元の管理部120は、ブロックアドレスを他のキャッシュ装置100に通知し、そこから該当ブロックの最新データを、スヌープの結果の通知に含めて受信しても良い。
【００８９】
管理部120は、他のキャッシュ装置100の状態に関係なく、自装置のページアドレスアレイ110に、該当ページアドレス、および、他のキャッシュ装置100の該当ページの全ブロック追い出しが完了したか否かを管理する情報を登録する。管理部120は、その際に、リードリクエストと共に持ち回っていたＳ／Ｅフラグの値(この場合は1)も一緒に、ページアドレスアレイ110に登録する。管理部120は、自キャッシュアレイ117のステータスをEに更新する。その理由は、該当ページの全ブロックは他のキャッシュ装置100のキャッシュアレイ117から追い出されているためである。
【００９０】
２-２
続いて、プロセッサ122は、Ａ番地＋8番地に対するリード要求を出す。この時、ページアドレスアレイ110には当該番地のページアドレスは登録済みで、キャッシュアレイ117には当該番地のデータが存在している。この状態は、No.2-2状態(Ｓ／Ｅフラグ＝1、メモリアクセス＝リード、自ページアドレスアレイ110＝ヒット、自キャッシュアレイ117＝E)が該当する。Ｓ／Ｅフラグ＝1の場合、キャッシュアレイ117はSに遷移する事が無いため、自キャッシュアレイ117＝Sの状態(図７の表のNo.2-3〜2-4)は存在しない。
【００９１】
この場合、リード要求がキャッシュアレイ117にヒットした状態であるので、他のキャッシュ装置100に対するスヌープ動作は発生しない。この状態は、後続のＡ番地＋120番地までのリードに対して同様である。
【００９２】
２−３
続いて、プロセッサ122は、Ａ番地＋128番地に対するリード要求を出す。このとき、ページアドレスアレイ110には当該番地のページアドレスは登録済みだが、キャッシュアレイ117には当該番地のデータは存在しない。当該番地は、次ブロックに属するためである。この状態は、図７の表のNo.2-8状態(Ｓ／Ｅフラグ＝1、メモリアクセス＝リード、自ページアドレスアレイ110＝ヒット、自キャッシュアレイ117＝I)が該当する。リード要求の対象アドレスが、自装置のページアドレスアレイ110にヒットする状態は、既に他のキャッシュ装置100上に該当ページの全ブロックが存在していない事を意味している。したがって、必然的に他のキャッシュ装置100のキャッシュアレイ117の当該ブロックの状態はIであり、他の状態(図７の表のNo.2-5〜2-7)は存在しない。
【００９３】
管理部120は、その後、記憶装置505に該当ブロックのリード要求を出す。他のキャッシュ装置100のキャッシュアレイ117の当該ブロックの状態は既にIであるため、他のキャッシュ装置100に対するスヌープ動作は不要となる。なお、ページアドレスは、自ページアドレスアレイ110に既に登録済みの状態であるため、更新は不要である。
【００９４】
２−４
以降のアクセスに対して管理部120は、キャッシュアレイ117に格納済みのブロック内にアクセスする場合は上述の２−２の動作を、格納済みブロックを越えて新たなブロックをアクセスする場合は上述の２−３の動作を実行する。更に管理部120は、ページを越えて新たなページに対してアクセスする場合は上述の２−１の動作を実行する。
【００９５】
２−５
ライト動作に関しても、リード時と同様に、状態に応じた処理が図７の表で規定してある。また、スヌープの処理単位は、ページである。詳細な説明は省略する。
【００９６】
次に、図４に戻って、他のキャッシュ装置100におけるスヌープ動作を説明する。
【００９７】
すべての他のキャッシュ装置100のスヌープ制御部（入力）106は、スヌープ要求元キャッシュ装置100が発行したスヌープ要求を受信する。スヌープ制御部（入力）106は、Ｓ／Ｅフラグ情報も一緒に受け取る。受け取ったスヌープ要求は、スヌープアドレス保持部107スヌープアドレス保持部に送られる。スヌープアドレス保持部107もＳ／Ｅフラグ情報を一緒に持ち回り保持する。
【００９８】
スヌープアドレス保持部107のスヌープアドレスは、選択器108選択器を通り、ページアドレスアレイ110を索引するためにページアドレス保持部109に送られる。選択器108およびページアドレス保持部109もＳ／Ｅフラグの情報を持ち回り保持している。また同時にキャッシュアレイ117を索引するために、スヌープアドレス保持部107が保持する物理アドレスは、選択器108および選択器115を通り、ブロックアドレス保持部116に送られる。
【００９９】
スヌープ要求アドレスと一緒に持ち回るＳ／Ｅフラグの値が0(共有メモリ空間)の場合、スヌープ要求を受けて管理部120が行う動作は、一般的なスヌープ動作(例えば一般的なＭＥＳＩプロトコル時のスヌープ動作)と同じである。なお、管理部120は、ページアドレスアレイ110とキャッシュアレイ117の状態と照らし合わせて矛盾等が無いかチェックしても良い。
【０１００】
スヌープ要求アドレスと一緒に持ち回るＳ／Ｅフラグの値が1(排他メモリ空間)の場合、ページアドレス保持部109に保持したページアドレスでページアドレスアレイ110を索引し、ページヒット／ミス判定部111が、プロセッサ122がアクセスするページがページアドレスアレイ110に登録されているか否かを判定する。ページヒット／ミス判定部111は、判定結果をアドレスと共にページ制御部112に送る。
【０１０１】
ページヒット／ミス判定部111の判定結果がミスの場合、キャッシュアレイ117は該当ページのブロックを保持していない。このため、ページ制御部112は、スヌープ結果として、他キャッシュステータス＝Iを返却する様にスヌープ制御部（出力）106を制御する。
【０１０２】
一方、ページヒット／ミス判定部111の判定結果がヒットの場合、管理部120は、該当ページの全ブロックをキャッシュアレイ117上から追い出す。ページアドレスアレイ110は、該当ページアドレスを最終的に無効化するが、キャッシュアレイ117の該当ページの全ブロック追い出しが完了したか否かを管理する情報を保持する。その理由は、追い出しの過渡状態を制御する為である。
【０１０３】
ページ制御部112は、バースト制御部113に追い出し対象となるページアドレスを通知する。バースト制御部113は、受け取ったページアドレスを元に、ページ内の最初のブロックから順にブロックアドレスを生成し、順次、ブロックアドレス保持部114に送り、該当ブロックをキャッシュアレイ117から追い出すように指示する。ブロックアドレス保持部114が保持するブロックアドレスは、選択器115を通り、ブロックアドレス保持部116に送られる。ブロックアドレス保持部116に保持したブロックアドレスでキャッシュアレイ117を索引し、キャッシュヒット／ミス判定部118でアクセスするブロックがキャッシュアレイ117に登録されているか否かを判定する。
【０１０４】
キャッシュヒット／ミス判定部118の判定結果は、アドレスと共にキャッシュ制御部119に送られる。キャッシュ制御部119は、キャッシュヒット／ミス判定部118の判定結果を元に、キャッシュアレイ117の登録更新動作を制御する。
【０１０５】
この更新動作は、例えば一般的なＭＥＳＩプロトコル時の更新動作に同じである。ＭＥＳＩプロトコルを例に簡単に説明すると、キャッシュアレイ117のステータス＝Iの場合は、キャッシュアレイ117上に追い出し対象ブロックが存在しないため、キャッシュ制御部119は何もしない。ステータス＝EまたはSの場合は、キャッシュアレイ117上に追い出しブロックが存在している(データはメモリ内容に同じ状態である)ため、キャッシュ制御部119はキャッシュステータスを無効化する(ステータスをIに更新する)。ステータス＝Mの場合は、キャッシュ上のデータが唯一のデータであるため、キャッシュ制御部119は、データを記憶装置505に書き戻すと共にキャッシュステータスを無効化する(ステータスをIに更新する)。
【０１０６】
バースト制御部113は、該当ページの全ブロックの追い出しを終えるまで処理を続け、全ブロックの追い出しが完了した場合に、ページ制御部112とスヌープ制御部（出力）106に対して完了の報告を通知する。スヌープ制御部（出力）106は、スヌープ要求元のキャッシュ装置100に対して、該当ページの全ブロック追い出しが完了した事を通知する。スヌープ要求元のキャッシュ装置100のページアドレスアレイ110は、この完了通知を受け取り、他のキャッシュ装置100の該当ページの全ブロック追い出しが完了したか否かを管理する情報を追い出し完了を示すように更新する。
【０１０７】
なお、実際の装置においては、説明した動作を実行するにあたり、物理的な距離や時間を要する事を考慮する必要がある(処理の完了の待ち合わせ等)。この点に関しては、各装置の設計に依存する部分であり、解決方法もその設計によって様々であるため、ここでは、その実現手段に関しては言及しない。
【０１０８】
本実施の形態にかかるキャッシュ装置100は、排他メモリ空間のスヌープ回数を削減することができる。具体的には、Ａ番地から連続するメモリ空間の値を順にリードする例において、Ｓ／Ｅフラグ＝0(共有メモリ空間)時の動作とＳ／Ｅフラグ＝1(排他メモリ空間)時のスヌープ回数を比較すると以下となる。
【０１０９】
Ｓ／Ｅフラグ＝0(共有メモリ空間)時    …  ブロックを越える度にスヌープ
1-1)  No.1-9〜1-12      スヌープ
1-2)  No.1-2〜1-4        不要
1-3)  No.1-5〜1-8        スヌープ
1-4)  以降は1-2) → 1-3)を繰り返し、ページを越えたら1-1)へ
Ｓ／Ｅフラグ＝1(排他メモリ空間)時    …  ページを越える場合にのみスヌープ
2-1)  No.2-9〜2-12      スヌープ
2-2)  No.2-2            不要
2-3)  No.2-8            不要
2-4)  以降は2)→3)を繰り返し、ページを越えたら1)へ
この結果スヌープ帯域への要求が低減され、本願発明のキャッシュ装置100は、ＬＳＩ501の回路規模の低減、物理ピン数投資や高速動作に伴う消費電力等のテクノロジコストの低減が可能となる。
【０１１０】
このような効果を奏する理由は、管理部120が排他メモリ空間のスヌープをページ単位で実施するからである。
【０１１１】
また、本発明は、スヌープキャッシュ制御方式だけでなく、ディレクトリ制御方式にも適用できる。記憶装置505内のメモリが、共有メモリ空間であるか排他メモリ空間であるかの区別は、ページと異なる単位で与えられても良い。
【０１１２】
＜第２の実施の形態＞
図８は、本実施の形態のキャッシュ装置100の構成図である。
【０１１３】
キャッシュ装置100は、複数ブロックを含むページに分割され、複数のプロセッサ122に共有される共有ページと一定期間何れかのプロセッサ122に占有される排他ページを包含する記憶装置505と、複数のプロセッサ122と、を備えるコンピュータ506に、プロセッサ122に対応して設けられている。
【０１１４】
キャッシュ装置100は、管理部120と、キャッシュアレイ117と、を備える。
【０１１５】
管理部120は、対応するプロセッサ122から排他ページ内の領域のアドレスを受信して、領域を含むページのスヌープ要求を他装置に送信して、領域を含むブロックのアドレスと最新データを自装置のキャッシュアレイ117に登録する。管理イブ120は、さらに、他装置からページのスヌープ要求を受信して、指定されたページが包含する全てのブロックを自装置のキャッシュアレイ117から削除する。
【０１１６】
本実施の形態にかかるキャッシュ装置100は、排他メモリ空間のスヌープ回数を削減することができる。このような効果を奏する理由は、管理部120が排他メモリ空間のスヌープをページ単位で実施するからである。
【０１１７】
以上、実施形態を参照して本願発明を説明したが、本願発明は上記実施形態に限定されものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【符号の説明】
【０１１８】
100    キャッシュ装置
101    命令デコード部
102    論理アドレス生成部
103    アドレス変換制御部
104    アドレス変換部
105    物理アドレス保持部
106    スヌープ制御部
106    スヌープ制御部（入力）
106    スヌープ制御部（出力）
107    スヌープアドレス保持部
108    選択器
109    ページアドレス保持部
110    ページアドレスアレイ
111    ページヒット／ミス判定部
112    ページ制御部
113    バースト制御部
114    ブロックアドレス保持部
115    選択器
116    ブロックアドレス保持部
117    キャッシュアレイ
118    キャッシュヒット／ミス判定部
119    キャッシュ制御部
121    メモリ制御部
122    プロセッサ
501    ＬＳＩ
505    記憶装置
506    コンピュータ
【図１】
2015121945.tif 000003
【図２】
2015121945.tif 000004
【図３】
2015121945.tif 000005
【図４】
2015121945.tif 000006
【図５】
2015121945.tif 000007
【図６】
2015121945.tif 000008
【図７】
2015121945.tif 000009
【図８】
2015121945.tif 000010