(57)【特許請求の範囲】
【請求項１】
それぞれキャッシュメモリを有する複数のプロセッサと接続される送受信制御部と、
メインメモリへアクセスし、前記複数のプロセッサが有するキャッシュメモリ間の一貫性を保つコヒーレンシ制御部と、を備え、
前記コヒーレンシ制御部は、前記複数のプロセッサから前記メインメモリへの少なくとも排他的データ読み出しを含む複数のアクセス要求における対象アドレスが競合する場合に、当該複数のアクセス要求の競合に関する情報である競合情報を含めた応答指示を前記送受信制御部へ送信し、
前記送受信制御部は、前記応答指示に含まれる競合情報に基づき、前記排他的データ読み出しをアクセス要求としたプロセッサの中から決定された返信対象のプロセッサに対して、前記アクセス要求に対応するデータを返信し、引き続き、当該返信対象のプロセッサが有するキャッシュメモリ内のデータの取得を要求するスヌープ要求を送信する、ことを特徴とするキャッシュメモリ制御システム。
【請求項２】
前記送受信制御部は、前記応答指示に含まれる競合情報に基づき、前記返信対象のプロセッサの次に返信対象となるプロセッサを決定し、前記返信対象のプロセッサからの前記スヌープ要求に対する応答を受信した後に、当該次に返信対象となるプロセッサに対して、前記アクセス要求に対応するデータを返信することを特徴とする請求項１に記載のキャッシュメモリ制御システム。
【請求項３】
前記コヒーレンシ制御部は、前記競合情報に基づき、最初の返信対象のプロセッサを決定し、当該決定した返信対象プロセッサへの応答指示として前記送受信制御部へ送信することを特徴とする請求項１又は２に記載のキャッシュメモリ制御システム。
【請求項４】
前記コヒーレンシ制御部は、前記複数のアクセス要求を行ったプロセッサと、当該アクセス要求の種別とを対応付けて前記競合情報として前記応答指示に含めることを特徴とする請求項１乃至３のいずれか１項に記載のキャッシュメモリ制御システム。
【請求項５】
前記競合情報を格納する競合情報記憶手段を備え、
前記コヒーレンシ制御部は、前記競合情報記憶手段を参照し、前記複数のアクセス要求における対象アドレスが競合するか否かを判定し、対象アドレスが競合すると判定した場合に、前記応答指示を前記送受信制御部へ送信することを特徴とする請求項１乃至４のいずれか１項に記載のキャッシュメモリ制御システム。
【請求項６】
前記コヒーレンシ制御部は、前記複数のアクセス要求を受信した場合に、前記複数のアクセス要求を行ったプロセッサと、当該アクセス要求の種別とを対応付けて前記競合情報として前記競合情報記憶手段に格納することを特徴とする請求項５に記載のキャッシュメモリ制御システム。
【請求項７】
前記返信対象のプロセッサは、前記複数のプロセッサにおける所定の順序に基づき、決定されることを特徴とする請求項１乃至６のいずれか１項に記載のキャッシュメモリ制御システム。
【請求項８】
前記競合情報は、前記メインメモリのアドレス単位に、競合有無フラグ、アクセス要求の種別及び当該アクセス要求の識別情報を含むことを特徴とする請求項１乃至７のいずれか１項に記載のキャッシュメモリ制御システム。
【請求項９】
それぞれキャッシュメモリを有する複数のプロセッサと接続される送受信制御部と、
メインメモリへアクセスし、前記複数のプロセッサが有するキャッシュメモリ間の一貫性を保つコヒーレンシ制御部と、を備えるマルチプロセッサシステムにおけるキャッシュメモリの制御方法であって、
前記送受信制御部において、前記複数のプロセッサから前記メインメモリへの少なくとも排他的データ読み出しを含む複数のアクセス要求を受信し、
前記コヒーレンシ制御部において、前記複数のアクセス要求における対象アドレスが競合する場合に、当該複数のアクセス要求の競合に関する情報である競合情報を含めた応答指示を前記送受信制御部へ送信し、
前記送受信制御部において、前記応答指示に含まれる競合情報に基づき、前記排他的データ読み出しをアクセス要求としたプロセッサの中から決定された返信対象のプロセッサに対して、前記アクセス要求に対応するデータを返信し、
引き続き、前記送受信制御部において、当該返信対象のプロセッサが有するキャッシュメモリ内のデータの取得を要求するスヌープ要求を送信する、ことを特徴とする制御方法。
【請求項１０】
前記送受信制御部において、前記応答指示に含まれる競合情報に基づき、前記返信対象のプロセッサの次に返信対象となるプロセッサを決定し、前記返信対象のプロセッサからの前記スヌープ要求に対する応答を受信した後に、当該次に返信対象となるプロセッサに対して、前記アクセス要求に対応するデータを返信することを特徴とする請求項９に記載の制御方法。
【請求項１１】
前記コヒーレンシ制御部において、前記競合情報に基づき、最初の返信対象のプロセッサを決定し、当該決定した返信対象プロセッサへの応答指示として前記送受信制御部へ送信することを特徴とする請求項９又は１０に記載の制御方法。
【請求項１２】
前記コヒーレンシ制御部において、前記複数のアクセス要求を行ったプロセッサと、当該アクセス要求の種別とを対応付けて前記競合情報として前記応答指示に含めることを特徴とする請求項９乃至１１のいずれか１項に記載の制御方法。
【請求項１３】
前記マルチプロセッサシステムは、前記競合情報を格納する競合情報記憶手段を備え、
前記コヒーレンシ制御部において、前記競合情報記憶手段を参照し、前記複数のアクセス要求における対象アドレスが競合するか否かを判定し、対象アドレスが競合すると判定した場合に、前記応答指示を前記送受信制御部へ送信することを特徴とする請求項９乃至１２のいずれか１項に記載の制御方法。
【請求項１４】
前記コヒーレンシ制御部において、前記複数のアクセス要求を受信した場合に、前記複数のアクセス要求を行ったプロセッサと、当該アクセス要求の種別とを対応付けて前記競合情報として前記競合情報記憶手段に格納することを特徴とする請求項１３に記載の制御方法。
【請求項１５】
前記返信対象のプロセッサは、前記複数のプロセッサにおける所定の順序に基づき、決定されることを特徴とする請求項９乃至１４のいずれか１項に記載の制御方法。
【請求項１６】
前記競合情報は、前記メインメモリのアドレス単位に、競合有無フラグ、アクセス要求の種別及び当該アクセス要求の識別情報を含むことを特徴とする請求項９乃至１５のいずれか１項に記載の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、キャッシュメモリ制御システム及びキャッシュメモリの制御方法に関し、特に、情報処理装置におけるメモリデータアクセス競合時のリクエスト処理についてのキャッシュメモリ制御システム及びキャッシュメモリの制御方法に関する。
【背景技術】
【０００２】
特許文献１には、キャッシュを備えた複数のプロセッサとメモリとの間のデータ入出力を制御するメモリコントローラに関する技術が開示されている。特許文献１にかかるメモリコントローラは、読み出し要求を受けた場合、各プロセッサから当該要求についてのスヌープ結果が通知される前に、メモリに対するデータ読み出し処理を開始し、書き込み要求を受けた場合、各プロセッサから当該要求についてのスヌープ結果が通知されるのを待って、メモリに対するデータ書き込み処理を開始する。
【０００３】
特許文献２には、マルチプロセッサ環境において、性能を改善するように管理されたメモリキャッシュシステムに関する技術が開示されている。特許文献２にかかるメモリキャッシュシステムにおいて、第１のプロセッサは、第１のレベル１キャッシュを用いてデータにアクセスし、第２のプロセッサは、第２のレベル１キャッシュを用いてデータにアクセスする。また、記憶制御回路は、第１と第２のレベル１キャッシュとレベル２キャッシュとメインメモリとの間に配置される。レベル２キャッシュは、主記憶装置内のデータのコピーを管理し、それらのレベル１キャッシュがデータのコピーを有し、それらのコピーが変更されているか否かの指示を、さらに管理する。
【０００４】
特許文献３には、ノードの処理状態にしたがって主記憶アクセスの先行を許しマルチプロセッサシステムの性能を向上させる技術が開示されている。特許文献３にかかるマルチプロセッサシステムは、データ読み出しアクセスを全ノードで同期して選択し順序付けするだけでなく、データ書き戻し完了通知も全ノードで同期して選択し順序付けすることで、全ノードで観測されるデータ読み出しの順序とデータ書き戻しの完了順序を一意にする。また、各ノードにおいて、順序付けされたデータ読み出しアクセスと順序付けされたデータ書き戻し完了通知の対象アドレスを比較し、データ書き戻しの完了に追い越される同一アドレスのデータ読み出しを検出することで、データ読み出しとデータ書き戻しの順序を決定する。このとき、データ書き戻しの完了に追い越された同一アドレスのデータ読み出しアクセスを送信したノードへデータの読み直しを促すコヒーレンシ応答を送信することで、データのコヒーレンシを維持する。
【０００５】
特許文献４には、ライトバック方式のキャッシュメモリを有する共有メモリ型マルチプロセッサシステムにおいて、余分なスヌープ処理をなくして高いシステム性能を実現するキャッシュメモリ制御方式に関する技術が開示されている。特許文献４にかかるキャッシュメモリ制御方式において、プロセッサは、無効状態、共有状態、排他一致状態、および排他変更状態の４状態を取る状態部を備えるコピータグを有している。キャッシュメモリが排他変更状態に遷移したときは、コピータグに通知することによってキャッシュメモリの状態と一致させ、共有バス上の共有メモリへのリード要求をバス監視回路によって検出し、コピータグの検査を行ってキャッシュメモリへのアクセスを減らし、排他変更状態のブロックにヒットしたときにだけ、変更信号線を出力して共有メモリを待機させ、キャッシュメモリに対してスヌープ処理を行う。
【０００６】
特許文献５には、効率的に排他制御を調停することにより、タイムアウト等のシステムの処理に支障を来す事態の発生を防止するマルチプロセッサシステムに関する技術が開示されている。特許文献５にかかるマルチプロセッサシステムにおいて、プロセッサを搭載するカードと、カードを相互に接続するバスと、排他制御を実行中のプロセッサの存在を示す排他制御フラグと、プロセッサ毎に、排他制御の要求が失敗したことを示す失敗フラグと、および、再発行された排他制御要求が成功したことを示す成功フラグを備え、各カードからの排他制御要求を、他のカードが受け取り、共通の調停論理に基づき各カードのそれぞれが同一の要求処理順序を判定し実行する分散調停方式により排他制御の調停を行うことを特徴とする。
【０００７】
特許文献６には、各ノードにローカルなメモリを有する複数のノードならびにすべてのノードを相互接続するタグ・アンド・アドレス・クロスバ・システムおよびデータ・クロスバ・システムに構成されたマルチプロセッサシステムに関する技術が開示されている。特許文献６にかかるマルチプロセッサシステムは、グローバル・スヌープを使用して、データ・タグの直列化の単一の点を提供する。中央クロスバ・コントローラが、すべてのノードの所与のアドレス・ラインのキャッシュ状態タグを同時に検査し、キャッシュ・コヒーレンスを維持し、要求されたデータを供給するためにシステム内の他のノードへの他のデータ要求を生成しながら、データを要求するノードに適当な応答を発行する。このシステムは、各ノードにローカルなメモリを、所与のキャッシュ・ラインについて相互に排他的なローカル・カテゴリおよびリモート・カテゴリに分割することによって、そのようなメモリを利用する。この開示では、各ノードの第３レベル・リモート・キャッシュのサポートを提供する。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２０００−２５０８１１号公報
【特許文献２】特開２０００−２５０８１２号公報
【特許文献３】特開２００６−３２３４３２号公報
【特許文献４】特開平１０−２２２４２３号公報
【特許文献５】特許第３５６０５３４号公報
【特許文献６】特表２００５−５３９２８２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかしながら、上述した特許文献１乃至６にかかる技術を用いても、マルチプロセッサシステムにおける複数プロセッサからあるひとつの主記憶上のキャッシュラインアドレスへのアクセスが同時期に発生した場合であるアドレス競合状態において、最後のアドレス競合リクエストを処理するまでにかかる時間が増大するという問題がある。その理由は、まず、アドレス競合状態にあるプロセッサ発行のリクエストを処理するにあたり、必ずキャッシュコヒーレンシ制御部から対象プロセッサへのスヌープリクエストのレイテンシと、そのコンプリーションのレイテンシがかかるためである。また、現状のマルチプロセッサシステムにおけるプロセッサ数は、数１０から数１００に達していることが一般的である。それにより、マルチプロセッサシステムにおけるプロセッサ数が多い場合、情報処理装置を構成するための物理的制約によりキャッシュコヒーレンシ制御部とプロセッサ間のレイテンシが増大するためである。なお、このようなアドレス競合処理は、マルチプロセッサシステムにおけるセマフォロックオペレーションにおいて一般的なこととして行われるものである。
【００１０】
ここで、上述した課題の発生を以下に例示して説明する。まず、以下で対象とするＳＭＰ(Symmetric Multi-Processor)システムは、内部に主記憶データを一時的に格納するＭＥＳＩなどの一般的なプロトコルを採用するストアイン方式のキャッシュメモリを搭載するＣＰＵやＩ／Ｏプロセッサ複数個と、自己の管理対象主記憶データがどのＣＰＵ、Ｉ／Ｏプロセッサキャッシュに保持されているかを登録するディレクトリ方式によりＣＰＵやＩ／Ｏプロセッサのキャッシュ間コヒーレンシ保障を行うキャッシュコヒーレンシ制御回路と、前記キャッシュコヒーレンシ制御回路を介してＣＰＵ、Ｉ／Ｏプロセッサからのメモリアクセスリクエストを受け取り、配下の主記憶に書き込み、読み出し動作を指示するメモリ制御回路と、を備え、これらを１対１接続、バス接続、スター接続などの方式により接続したものである。
【００１１】
ここで、複数プロセッサからあるひとつの主記憶上のキャッシュラインアドレスへのアクセスが同時期に発生した状態であるアドレス競合状態である場合を考える。この場合、上述した特許文献５では、ある特定のプロセッサがメモリアクセスできない所謂ライブロック状態を回避しつつシステム内のキャッシュコヒーレンシを保証するためには、あるひとつのキャッシュコヒーレンシ制御部を有することとなる。または、複数個所に分散しつつも完全に全てが同期して動作するキャッシュコヒーレンシ制御部を有することとなる。そして、このキャッシュコヒーレンシ制御部でアドレス競合しているリクエストをひとつひとつシーケンシャルに処理する必要があった。
【００１２】
これによると、複数プロセッサが同時期に同一メモリアドレスに対して更新を目的とする主記憶リードリクエストを発行した場合、次のような動作となる。尚、ここでは、主記憶上にあるデータがシステム唯一のデータであるとする。
【００１３】
まず、上述したキャッシュコヒーレンシ制御部は、最初に処理すると決定されたリクエストの発行元プロセッサに対して主記憶読み出しデータを返却する。次に、キャッシュコヒーレンシ制御部は、２番目に処理すると決定したプロセッサのリクエストを処理するために、最初に処理したリクエストの発行元プロセッサにキャッシュ内データ掃き出し指示リクエスト（キャッシュスヌープリクエスト）を発行する。この結果、最初に処理したリクエストの発行元プロセッサからはキャッシュ内データとキャッシュスヌープリクエストに対するコンプリーションが発行される。
【００１４】
そして、キャッシュ内データは、２番目に処理すると決定されたリクエストを発行したプロセッサに返却され、コンプリーションは、キャッシュコヒーレンシ制御部に返却される。
【００１５】
続いて、最初に処理したリクエストの発行元プロセッサからのコンプリーションを受け付けたキャッシュコヒーレンシ制御部は、最初に処理したリクエストの発行元プロセッサからキャッシュ内データが掃き出されたこと、及び、そのデータが２番目に処理すると決定したリクエストの発行元プロセッサに渡されたことを知る。そして、当該キャッシュコヒーレンシ制御部は、それを契機に３番目に処理すると決定したリクエストを処理するために、２番目に処理したリクエストの発行元プロセッサにキャッシュスヌープリクエストを発行する。以下、２番目のリクエストを処理したときと同じ動作が行われ、更に、競合リクエストを発行したプロセッサがあればそれらについて同じ動作が繰り返し行われる。このように、マルチプロセッサシステムのアドレス競合状態において、最後のアドレス競合リクエストを処理するまでにかかる時間が増大するという問題が生じる。
【００１６】
本発明は、このような問題点を解決するためになされたものであり、アドレス競合状態において、最後のアドレス競合リクエストを処理するまでにかかる時間を短縮することができるキャッシュメモリ制御システム及びキャッシュメモリの制御方法を提供することを目的とする。
【課題を解決するための手段】
【００１７】
本発明の第１の態様にかかるキャッシュメモリ制御システムは、それぞれキャッシュメモリを有する複数のプロセッサと接続される送受信制御部と、メインメモリへアクセスし、前記複数のプロセッサが有するキャッシュメモリ間の一貫性を保つコヒーレンシ制御部と、を備え、前記コヒーレンシ制御部は、前記複数のプロセッサから前記メインメモリへの少なくとも排他的データ読み出しを含む複数のアクセス要求における対象アドレスが競合する場合に、当該複数のアクセス要求の競合に関する情報である競合情報を含めた応答指示を前記送受信制御部へ送信し、前記送受信制御部は、前記応答指示に含まれる競合情報に基づき、前記排他的データ読み出しをアクセス要求としたプロセッサの中から決定された返信対象のプロセッサに対して、前記アクセス要求に対応するデータを返信し、引き続き、当該返信対象のプロセッサが有するキャッシュメモリ内のデータの取得を要求するスヌープ要求を送信する。
【００１８】
本発明の第２の態様にかかるキャッシュメモリの制御方法は、それぞれキャッシュメモリを有する複数のプロセッサと接続される送受信制御部と、メインメモリへアクセスし、前記複数のプロセッサが有するキャッシュメモリ間の一貫性を保つコヒーレンシ制御部と、を備えるマルチプロセッサシステムにおけるキャッシュメモリの制御方法であって、前記送受信制御部において、前記複数のプロセッサから前記メインメモリへの少なくとも排他的データ読み出しを含む複数のアクセス要求を受信し、前記コヒーレンシ制御部において、前記複数のアクセス要求における対象アドレスが競合する場合に、当該複数のアクセス要求の競合に関する情報である競合情報を含めた応答指示を前記送受信制御部へ送信し、前記送受信制御部において、前記応答指示に含まれる競合情報に基づき、前記排他的データ読み出しをアクセス要求としたプロセッサの中から決定された返信対象のプロセッサに対して、前記アクセス要求に対応するデータを返信し、引き続き、前記送受信制御部において、当該返信対象のプロセッサが有するキャッシュメモリ内のデータの取得を要求するスヌープ要求を送信する。
【発明の効果】
【００１９】
本発明により、アドレス競合状態において、最後のアドレス競合リクエストを処理するまでにかかる時間を短縮することができる。
【図面の簡単な説明】
【００２０】
【図１】本発明の実施の形態１にかかるキャッシュメモリ制御システムの構成を示すブロック図である。
【図２】本発明の実施の形態１にかかるキャッシュメモリの制御方法の流れを示すフローチャート図である。
【図３】本発明の実施の形態２にかかるマルチプロセッサシステムの構成を示すブロック図である。
【図４】本発明の実施の形態２で使用するキャッシュプロトコルのひとつであるMESIプロトコルのそれぞれのステータスの意味を説明したものである。
【図５】本発明の実施の形態２にかかるキャッシュステータス管理機能のために実装するディレクトリの構成図である。
【図６】本発明の実施の形態２にかかるディレクトリキャッシュステータスの説明である。
【図７】本発明の実施の形態２にかかるキャッシングエージェント情報の説明である。
【図８】本発明の実施の形態２にかかるメッセージ類の説明である。
【図９】本発明の実施の形態２にかかるプロセッサからのリクエスト及びレスポンス並びにプロセッサ内キャッシュのステータス遷移の一覧である。
【図１０】本発明の実施の形態２にかかるシステムインタフェースからのリクエスト及びレスポンス並びにプロセッサ内キャッシュのステータス遷移の一覧である。
【図１１】本発明の実施の形態２にかかる競合情報の構成を示すブロック図である。
【図１２】本発明の実施の形態２にかかる競合情報の内容の説明である。
【図１３】本発明の実施の形態２にかかるコヒーレンシ制御部におけるＥＢＲ、ＳＢＲ受信時のアドレス競合制御部の内部情報の遷移を示す表である。
【図１４】本発明の実施の形態２にかかるコヒーレンシ制御部におけるレスポンス生成を説明する表である。
【図１５】本発明の実施の形態２にかかるレスポンスであるＲｓｐ＿Ｄａｔａ＿ＥおよびＲｓｐ＿Ｄａｔａ＿Ｓの内部構成を示すものである。
【図１６】本発明の実施の形態２にかかるレスポンスであるＲｓｐ＿Ｄａｔａ＿Ｃｎｆｌｔの内部構成を示すものである。
【図１７】本発明の実施の形態２にかかるアドレス競合時のコヒーレンシ制御部の処理の流れを示すフローチャート図である。
【図１８】本発明の実施の形態２にかかるコヒーレンシ制御部がレスポンスであるＲｓｐ＿Ｄａｔａ＿Ｃｎｆｌｔを生成する処理の流れを示すフローチャート図である。
【図１９】本発明の実施の形態２にかかるレスポンス／スヌープ制御部がＲｓｐ＿Ｄａｔａ＿Ｃｎｆｌｔを受信した場合における処理の前半の流れを示すフローチャート図である。
【図２０】本発明の実施の形態２にかかるレスポンス／スヌープ制御部がＲｓｐ＿Ｄａｔａ＿Ｃｎｆｌｔを受信した場合における処理の後半の流れを示すフローチャート図である。
【発明を実施するための形態】
【００２１】
以下では、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。各図面において、同一要素には同一の符号が付されており、説明の明確化のため、必要に応じて重複説明は省略する。
【００２２】
＜発明の実施の形態１＞
図１は、本発明の実施の形態１にかかるキャッシュメモリ制御システムの構成を示すブロック図である。キャッシュメモリ制御システム１５は、プロセッサ１１、プロセッサ１２及びメインメモリ１８と接続され、プロセッサ１１及び１２がそれぞれ有するキャッシュメモリ１３及び１４の管理を行うものである。
【００２３】
プロセッサ１１は、キャッシュメモリ１３を搭載するＣＰＵ及びＩ／Ｏプロセッサである。例えば、ＭＥＳＩプロトコルなどの一般的なキャッシュプロトコルを採用するストアイン方式のリクエスタである。プロセッサ１２は、キャッシュメモリ１４を搭載するＣＰＵ及びＩ／Ｏプロセッサであり、その他は、プロセッサ１１と同様である。尚、本発明の実施の形態１にかかるプロセッサの数は、少なくとも２以上であればよい。
【００２４】
キャッシュメモリ制御システム１５は、送受信制御部１６及びコヒーレンシ制御部１７を備える。送受信制御部１６は、プロセッサ１１及び１２と接続され、プロセッサ１１及び１２からの要求を受信し、当該要求をコヒーレンシ制御部１７へ転送する。また、送受信制御部１６は、コヒーレンシ制御部１７からの指示を受信し、所定の応答をプロセッサ１１又は１２へ送信する。コヒーレンシ制御部１７は、プロセッサ１１及び１２からメインメモリ１８への少なくとも排他的データ読み出しを含む複数のアクセス要求における対象アドレスが競合する場合に、当該複数のアクセス要求の競合に関する情報である競合情報を含めた応答指示を送受信制御部１６へ送信する。そして、送受信制御部１６は、コヒーレンシ制御部１７からの応答指示に含まれる競合情報に基づき、排他的データ読み出しをアクセス要求としたプロセッサの中から決定された返信対象のプロセッサに対して、アクセス要求に対応するデータを返信し、引き続き、当該返信対象のプロセッサが有するキャッシュメモリ内のデータの取得を要求するスヌープ要求を送信する。
【００２５】
メインメモリ１８は、コヒーレンシ制御部１７からの対象アドレスを指定したデータ読み出し要求に応じて、対象アドレスにおけるデータを返信する。また、メインメモリ１８は、コヒーレンシ制御部１７からの対象アドレスを指定したデータ書き込み要求に応じて、対象アドレスにおけるデータを更新し、その旨を返信する。
【００２６】
図２は、本発明の実施の形態１にかかるキャッシュメモリの制御方法の流れを示すフローチャート図である。
【００２７】
まず、送受信制御部１６は、プロセッサ１１及び１２からメインメモリ１８への複数のアクセス要求を受信する（Ｓ１１）。ここで、複数のアクセス要求には、少なくとも排他的データ読み出しを含むものとする。また、複数のアクセス要求は、メインメモリ１８内の同一のアドレスを対象としたものとする。尚、送受信制御部１６は、受信したアクセス要求をコヒーレンシ制御部１７へ転送する。
【００２８】
次に、コヒーレンシ制御部１７は、複数のアクセス要求における対象アドレスが競合する場合に、当該複数のアクセス要求の競合に関する情報である競合情報を含めた応答指示を送受信制御部１６へ送信する（Ｓ１２）。
【００２９】
そして、送受信制御部１６は、応答指示に含まれる競合情報に基づき、排他的データ読み出しをアクセス要求としたプロセッサの中から決定された返信対象のプロセッサに対して、アクセス要求に対応するデータを返信する（Ｓ１３）。
【００３０】
引き続き、送受信制御部１６は、当該返信対象のプロセッサが有するキャッシュメモリ内のデータの取得を要求するスヌープ要求を送信する（Ｓ１４）。
【００３１】
これにより、送受信制御部１６からコヒーレンシ制御部１７へのコンプリーション及びコヒーレンシ制御部１７から送受信制御部１６へのスヌープの送受信の時間を短縮できる。このように、本発明の実施の形態１により、アドレス競合状態において、最後のアドレス競合リクエストを処理するまでにかかる時間を短縮することができる。
【００３２】
＜発明の実施の形態２＞
図３は、本発明の実施の形態２にかかるマルチプロセッサシステム１００の構成を示すブロック図である。マルチプロセッサシステム１００は、上述した本発明の実施の形態１にかかるキャッシュメモリ制御システムの一例である。マルチプロセッサシステム１００は、２つのノードコントローラに複数のプロセッサを１対１接続する例を示すが、ノードコントローラとプロセッサとの接続方法は、これに限定されない。例えば、ノードコントローラとプロセッサとの接続方法は、バス接続やスター接続等であっても構わない。
【００３３】
プロセッサ１０１乃至１０８は、それぞれＭＥＳＩプロトコルなどの一般的なキャッシュプロトコルを採用するストアイン方式のキャッシュメモリ１１１乃至１１８を搭載するＣＰＵ及びＩ／Ｏプロセッサである。プロセッサ１０１乃至１０８は、主記憶アクセスリクエストのリクエスタとなるものである。尚、本発明の実施の形態２で用いられるプロセッサ１０１乃至１０８は、公知なものであるため、詳細な説明を省略する。尚、プロセッサ数は、これに限定されず、少なくとも２以上であればよい。図４は、本発明の実施の形態２で使用するキャッシュプロトコルの一例であるＭＥＳＩプロトコルのそれぞれのステータスの意味を説明したものである。
【００３４】
主記憶管理システム１５１は、主記憶１５３及び主記憶コントローラ１５５を備える。また、主記憶管理システム１５２は、主記憶１５４及び主記憶コントローラ１５６を備える。主記憶管理システム１５１及び１５２は、コヒーレンシ制御部１４３及び１４４を介して受け付けたプロセッサ１０１乃至１０８からの主記憶アクセスリクエストに対して適切に主記憶データの読み出し、主記憶データの更新を行う。尚、本発明の実施の形態２で用いられる主記憶管理システム１５１及び１５２は、公知なものであるため、詳細な説明を省略する。
【００３５】
ノードコントローラ１２１は、プロセッサ１０１乃至１０４と接続され、主記憶管理システム１５１へのアクセス制御を行う。また、ノードコントローラ１２１は、ノードコントローラ１２２を介して、プロセッサ１０５乃至１０８から主記憶管理システム１５１へのアクセス制御を行い、プロセッサ１０１乃至１０４主記憶管理システム１５２へのアクセス要求を送信する。ノードコントローラ１２１は、レスポンス／スヌープ制御部１３１乃至１３４、クロスバー１４１及びコヒーレンシ制御部１４３を備える。
【００３６】
同様に、ノードコントローラ１２２は、プロセッサ１０５乃至１０８と接続され、主記憶管理システム１５２へのアクセス制御を行う。また、ノードコントローラ１２２は、ノードコントローラ１２１を介して、プロセッサ１０１乃至１０４から主記憶管理システム１５２へのアクセス制御を行い、プロセッサ１０５乃至１０８主記憶管理システム１５１へのアクセス要求を送信する。ノードコントローラ１２２は、レスポンス／スヌープ制御部１３５乃至１３８、クロスバー１４２及びコヒーレンシ制御部１４４を備える。尚、本発明の実施の形態２で用いられるノードコントローラは、２個に限定されない。
【００３７】
クロスバー１４１は、一般的なクロスバー回路であり、レスポンス／スヌープ制御部１３１乃至１３４、コヒーレンシ制御部１４３及びクロスバー１４２を接続する。同様に、クロスバー１４２は、一般的なクロスバー回路であり、レスポンス／スヌープ制御部１３５乃至１３８、コヒーレンシ制御部１４４及びクロスバー１４１を接続する。
【００３８】
レスポンス／スヌープ制御部１３１は、プロセッサ１０１と直接接続され、プロセッサ１０１が発行した主記憶アクセスリクエストに対し、所定の応答を行う。また、レスポンス／スヌープ制御部１３１は、クロスバー１４１を介してコヒーレンシ制御部１４３、レスポンス／スヌープ制御部１３２乃至１３４並びにノードコントローラ１２２と通信可能である。
【００３９】
ここで、特に、プロセッサ１０１を含む複数のプロセッサから主記憶１５３の同一のアドレスへのアクセス要求がされている場合、つまり、アドレス競合の場合について説明する。また、ここでは、プロセッサ１０１からの主記憶アクセスリクエストは、排他的データ読み出しであるものとする。この場合、レスポンス／スヌープ制御部１３１は、コヒーレンシ制御部１４３もしくは１４４又は他のレスポンス／スヌープ制御部１３２乃至１３８のいずれかから応答指示を受信する。そして、レスポンス／スヌープ制御部１３１は、当該応答指示に含まれる競合情報に基づき、プロセッサ１０１に対して当該主記憶アクセスリクエストに対応するデータを返信し、引き続き、プロセッサ１０１が有するキャッシュメモリ１１１内のデータの取得を要求するスヌープ要求を送信する。尚、競合情報については、後述する。
【００４０】
また、レスポンス／スヌープ制御部１３１は、アドレス競合検出時レスポンスに含まれる競合情報に基づき、返信対象であるプロセッサ１０１の次に返信対象となるプロセッサを決定し、プロセッサ１０１からのスヌープ要求に対する応答を受信した後に、当該次に返信対象となるプロセッサに対して、アクセス要求に対応するデータを返信する。これにより、コヒーレンシ制御部１４３又は１４４を介さずに、連続してアドレス競合するプロセッサへデータ返信することができ、コヒーレンシ制御部１４３又は１４４との送受信時間を短縮することができる。
【００４１】
尚、レスポンス／スヌープ制御部１３２乃至１３８は、レスポンス／スヌープ制御部１３１と同様に動作するため、詳細な説明を省略する。
【００４２】
コヒーレンシ制御部１４３は、接続される主記憶管理システム１５１内の主記憶１５３及び主記憶コントローラ１５５へアクセスし、プロセッサ１０１乃至１０８が有するキャッシュメモリ１１１乃至１１８の一貫性を保つ。すなわち、コヒーレンシ制御部１４３は、主記憶管理システム１５１向けの主記憶アクセスリクエストが制御対象である。コヒーレンシ制御部１４３は、クロスバー１４１を介して、プロセッサ１０１乃至１０８からのアクセス要求を受信し、アクセス要求に応じて、主記憶管理システム１５１へアクセスする。また、コヒーレンシ制御部１４３は、クロスバー１４１を介して、主記憶管理システム１５１からのアクセス結果を所定のプロセッサへ返信する。コヒーレンシ制御部１４３は、キャッシュステータス管理機能１４５及びアドレス競合制御部１４７を備える。
【００４３】
キャッシュステータス管理機能１４５は、ディレクトリ方式などの一般的なシステム内キャッシュステータス管理機能を実現する回路である。図５は、本発明の実施の形態２にかかるキャッシュステータス管理機能のために実装するディレクトリの構成の一例を示す図である。以下の説明においては、全ての主記憶をキャッシュラインサイズごとに管理可能なフルディレクトリ方式を採用するものとする。すなわち、各エントリは、かならず唯一の主記憶アドレスに対応するものとするが、セットアソシアティブ方式などを採用し同時には全主記憶アドレスを管理しないディレクトリ方式を用いても本発明は実現可能である。キャッシュステータス管理機能１４５は、エントリごとに、キャッシュステータス３０１とキャッシングエージェント情報３０２とを関連付けた情報を保持する。図６は、本発明の実施の形態２にかかるディレクトリのキャッシュステータス３０１の説明である。キャッシュステータス３０１は、主記憶アドレスのキャッシュステータス情報であり、システム内のプロセッサがどのようなキャッシュステータスでそのデータを保有しているかを示すものである。また、図７は、本発明の実施の形態２にかかるキャッシングエージェント情報３０２の説明である。キャッシングエージェント情報３０２は、キャッシュステータスでデータを保有しているプロセッサを示すキャッシングエージェント情報である。尚、キャッシュステータス管理機能１４５は、これに限定されず、他のものであっても構わない。
【００４４】
アドレス競合制御部１４７は、コヒーレンシ制御部１４３が受信したプロセッサ１０１乃至１０８からのアクセス要求について、アクセス対象となる対象アドレスごとにアクセス要求の競合に関する情報である競合情報を保持する。つまり、アドレス競合制御部１４７は、対象アドレスごとに競合情報を格納する競合情報記憶手段を有する。
【００４５】
コヒーレンシ制御部１４３は、複数のプロセッサから主記憶１５３への少なくとも排他的データ読み出しを含む複数のアクセス要求における対象アドレスが競合する場合に、当該複数のアクセス要求の競合に関する情報である競合情報を含めた応答指示をクロスバー１４１へ送信する。
【００４６】
また、コヒーレンシ制御部１４３は、競合情報に基づき、最初の返信対象のプロセッサを決定し、当該決定した返信対象プロセッサへの応答指示としてレスポンス／スヌープ制御部１３１乃至１３８のいずれかへ送信する。これにより、本発明の実施の形態２にかかるマルチプロセッサシステム１００のように、複数のレスポンス／スヌープ制御部が複数のプロセッサと一対一接続された場合、競合情報に基づき最初の返信対象を決定することにより、適切な応答先へ送信することができる。
【００４７】
尚、コヒーレンシ制御部１４４並びにコヒーレンシ制御部１４４が備えるキャッシュステータス管理機能１４６及びアドレス競合制御部１４８は、上述したコヒーレンシ制御部１４３、キャッシュステータス管理機能１４５及びアドレス競合制御部１４７と同等であるため、詳細な説明を省略する。
【００４８】
システムインタフェース１６１乃至１６８は、それぞれプロセッサ１０１乃至１０８とレスポンス／スヌープ制御部１３１乃至１３８とを接続するシステムインタフェースである。システムインタフェース１６１乃至１６８は、プロセッサ１０１乃至１０８から主記憶１５３及び１５４へのアクセスリクエスト及びそのデータリプライ、ノードコントローラ１２１及び１２２からプロセッサ１０１乃至１０８への主記憶データのキャッシング状態問い合わせリクエスト（以降、スヌープリクエストと呼ぶ）及びそのリプライの受け渡しを行う。
【００４９】
インタフェース１７１乃至１７４は、レスポンス／スヌープ制御部１３１乃至１３４とクロスバー１４１とを接続するノードコントローラ１２１内のインタフェースである。インタフェース１８１は、クロスバー１４１とコヒーレンシ制御部１４３とを接続するノードコントローラ１２１内のインタフェースである。
【００５０】
また、インタフェース１７５乃至１７８は、レスポンス／スヌープ制御部１３５乃至１３８とクロスバー１４２とを接続するノードコントローラ１２２内のインタフェースである。インタフェース１８２は、クロスバー１４２とコヒーレンシ制御部１４４とを接続するノードコントローラ１２２内のインタフェースである。
【００５１】
メモリインタフェース１８３は、主記憶管理システム１５１とコヒーレンシ制御部１４３とを接続するメモリインタフェースである。メモリインタフェース１８３は、コヒーレンシ制御部１４３からの主記憶アクセスリクエスト及び主記憶管理システム１５１からのデータリプライの受け渡しを行う。
【００５２】
また、メモリインタフェース１８４は、主記憶管理システム１５２とコヒーレンシ制御部１４４とを接続するメモリインタフェースである。メモリインタフェース１８４は、コヒーレンシ制御部１４４からの主記憶アクセスリクエスト及び主記憶管理システム１５２からのデータリプライの受け渡しを行う。
【００５３】
ノードインタフェース１８５は、ノードコントローラ１２１内のクロスバー１４１と、ノードコントローラ１２２内のクロスバー１４２とを接続するインタフェースである。ノードインタフェース１８５は、異なるノードコントローラ上に搭載されるレスポンス／スヌープ制御部及びコヒーレンシ制御部間の主記憶アクセスリクエスト及びそのデータリプライ並びにスヌープリクエスト及びそのリプライの受け渡しを行う。
【００５４】
ここで、本発明の実施の形態２にかかるメッセージ類の種類及び説明を図８に示す。図８は、本発明の実施の形態２にかかるマルチプロセッサシステム１００内を実現するにあたり必要となるプロセッサ、レスポンス／スヌープ制御部、クロスバー及びコヒーレンシ制御部間、並びに、コヒーレンシ制御部及び主記憶管理システム間のリクエストメッセージや、レスポンス及びコンプリーションメッセージを示したものである。特に、図８に示すＲｓｐ＿Ｄａｔａ＿Ｃｎｆｌｔは、Ｒｓｐ＿Ｄａｔａ＿Ｅ、Ｒｓｐ＿Ｄａｔａ＿Ｓに加え、コヒーレンシ制御部で検出したＥＢＲの同一アドレス競合状態、ＳＢＲの同一アドレス競合状態及び競合するＥＢＲ又はＳＢＲのリクエストＩＤ情報を有するレスポンスメッセージである。
【００５５】
図９は、本発明の実施の形態２にかかるプロセッサからのリクエスト及びレスポンス並びにプロセッサ内キャッシュのステータス遷移の一覧である。また、図１０は、本発明の実施の形態２にかかるシステムインタフェースからのリクエスト及びレスポンス並びにプロセッサ内キャッシュのステータス遷移の一覧である。
【００５６】
例えば、図９の９０３は、あるプロセッサがＥＢＲを発行した際に、その発行元プロセッサの初期のキャッシュステータスはＳであり、この場合、受信する可能性のあるレスポンスはＲｓｐ＿Ｄａｔａ＿Ｅとなることを示す。これを受信したプロセッサは、それに付与されているデータを自キャッシュに格納し、そのステータスをＥとして処理を完了する。
【００５７】
尚、図９の９０１、９０２、９０４、９０６乃至９０９及び９１３乃至９１５は、リクエストとステータスの組み合わせとして挙げたものであるが、実際上は、発生し得ない組み合わせである。
【００５８】
また、図１０の９１６は、あるプロセッサ（仮にＡ）とは異なるプロセッサ（仮にＢ）が発行したＥＢＲがキャッシュコヒーレンシ制御部に受信され、その中のディレクトリを索引した結果プロセッサＡがデータをＭで保持しているということが判明した場合の状態遷移を示すものである。そして、それを条件としてプロセッサＡに対してＳｎｐ＿Ｅが発行された場合を示す。このとき、プロセッサＡのキャッシュステータスはＭであるから、このキャッシュステータスはＩに遷移し、同時に、システムインタフェースにＣｍｐ＿ＩとＲｓｐ＿Ｄａｔａ＿Ｅを発行し処理を完了する。
【００５９】
なお、上述した課題で挙げたＳＭＰシステムでは、Ｃｍｐ＿Ｉはコヒーレンシ制御部に転送されプロセッサＡでの処理完了を知り、次の同一アドレスリクエストの処理を開始するきっかけとなり、Ｒｓｐ＿Ｄａｔａ＿ＥはプロセッサＢに返却される。これに比べ、本発明の実施の形態２では、プロセッサＡを管理するレスポンス/スヌープ管理部が、Ｃｍｐ＿ＩとＲｓｐ＿Ｄａｔａ＿Ｅの両方を受け付け、そこからＲｓｐ＿Ｄａｔａ＿Ｃｎｆｌｔを生成し、プロセッサＢに転送する。これにより、キャッシュステータスを遷移させ、キャッシュメモリの一貫性を保つことができる。つまり、コヒーレンシ制御部へのＣｍｐ＿Ｉ転送は行わないため、転送時間分の処理時間を短縮することができる。
【００６０】
図１１は、本発明の実施の形態２にかかる競合情報の構成を示すブロック図である。図１２は、本発明の実施の形態２にかかる競合情報の内容の説明である。競合情報は、Ｖａｌｉｄビット７０１、ＥＢＲ競合検出フラグ７０２、ＥＢＲ競合検出フラグ７０３、リクエストＩＤ７０４を対象アドレス単位に関連付けたものである。Ｖａｌｉｄビット７０１は、１のとき、当該セットが使用中であることを示す。ＥＢＲ競合検出フラグ７０２は、コヒーレンシ制御部がＥＢＲを受け取ったならば、そのＥＢＲのリクエストソースに対応するビットを１にセットされる。ＥＢＲ競合検出フラグ７０３は、コヒーレンシ制御部がＳＢＲを受け取ったならば、そのＳＢＲのリクエストソースに対応するビットを１にセットされる。リクエストＩＤ７０４は、ＥＢＲ競合検出フラグ７０２及びＥＢＲ競合検出フラグ７０３をセットされると同時に、当該リクエストのリクエストＩＤを設定、保持されるためのフィールドである。
【００６１】
尚、図１１に示すのは、１つの主記憶アドレスに対応する１セットの図であり、競合情報は、セット単位で主記憶アドレスを管理される。つまり、競合情報は、メインメモリのアドレス単位に、競合有無フラグ、アクセス要求の種別及び当該アクセス要求の識別情報を含む。これにより、アドレスの競合関係を適切に管理が可能となり、参照が容易となる。
【００６２】
図１３は、本発明の実施の形態２にかかるコヒーレンシ制御部におけるＥＢＲ又はＳＢＲ受信時のアドレス競合制御部１４７及び１４８の内部情報の遷移を示す表である。以下では、アドレス競合制御部１４７における動作として説明する。図１３の１３０１は、ＥＢＲを受け付けたときのものである。このとき、アドレス競合制御部１４７は、ＥＢＲのリクエストソースに対応するＥＢＲ競合検出フラグのビットを１にセットし、同時にＥＢＲのリクエストＩＤを対応するリクエストＩＤフィールドにセットする。また、図１３の１３０２は、ＳＢＲを受け付けたときのものである。このとき、アドレス競合制御部１４７は、ＳＢＲのリクエストソースに対応するＳＢＲ競合検出フラグのビットを１にセットし、同時にＳＢＲのリクエストＩＤを対応するリクエストＩＤフィールドにセットする。
【００６３】
図１４は、本発明の実施の形態２にかかるコヒーレンシ制御部におけるレスポンス生成を説明する表である。図１４は、コヒーレンシ制御部がＥＢＲ／ＳＢＲに対するリプライをリクエストソースのプロセッサに対して発行する際に、どのレスポンスを行うかの組み合わせを示す。つまり、コヒーレンシ制御部は、リクエスト種別と更新前のアドレス競合制御部が保持する競合情報のＶａｌｉｄビットの組み合わせに応じて、通常のレスポンス（Ｒｓｐ＿Ｄａｔａ＿Ｅ又はＲｓｐ＿Ｄａｔａ＿Ｓ）を返却するか、又は、Ｒｓｐ＿Ｄａｔａ＿Ｃｎｆｌｔを生成しレスポンスとするかを決定する。
【００６４】
図１５は、本発明の実施の形態２にかかるレスポンスであるＲｓｐ＿Ｄａｔａ＿ＥおよびＲｓｐ＿Ｄａｔａ＿Ｓの内部構成を示すものである。図１５に示すように、Ｒｓｐ＿Ｄａｔａ＿ＥおよびＲｓｐ＿Ｄａｔａ＿Ｓは、コマンドコード、デスティネーションＩＤ、オリジナルリクエストＩＤ及びデータを備える。尚、Ｒｓｐ＿Ｄａｔａ＿ＥおよびＲｓｐ＿Ｄａｔａ＿Ｓの内部構成は、公知のものを用いても構わない。また、図１６は、本発明の実施の形態２にかかるレスポンスであるＲｓｐ＿Ｄａｔａ＿Ｃｎｆｌｔの内部構成を示すものである。図１６に示すように、Ｒｓｐ＿Ｄａｔａ＿Ｃｎｆｌｔは、図１５の構成に加え、ＥＢＲ競合検出フラグ、ＳＢＲ競合検出フラグ、リクエストＩＤを備える。
【００６５】
図１７は、本発明の実施の形態２にかかるアドレス競合時のコヒーレンシ制御部の処理の流れを示すフローチャート図である。尚、以下の説明で扱う主記憶の対象アドレスは、全て同一のものであるとする。また、対象アドレスは、主記憶１５３のアドレスであるものとする。また、初期状態として、プロセッサ１０１乃至１０８のキャッシュメモリ１１１乃至１１８のいずれにも、当該対象アドレスに対応する主記憶１５３のデータがキャッシュされていないものとする。
【００６６】
まず、プロセッサ１０１、１０３及び１０６がＥＢＲを、プロセッサ１０４及び１０７がＳＢＲを同時期に発行したものとする。このとき、ノードコントローラ１２１及び１２２は、複数のプロセッサから競合するアクセス要求を受信する（Ｓ２１）。具体的には、レスポンス／スヌープ制御部１３１、１３３及び１３６は、プロセッサ１０１、１０３及び１０６からのアクセス要求であるＥＢＲを受信する。同様に、レスポンス／スヌープ制御部１３４及び１３７は、プロセッサ１０４及び１０７からのアクセス要求であるＳＢＲを受信する。そして、レスポンス／スヌープ制御部１３１、１３３及び１３４は、受信したアクセス要求をクロスバー１４１へ送信する。また、レスポンス／スヌープ制御部１３６及び１３７は、受信したアクセス要求をクロスバー１４２へ送信する。ここで、受信されたアクセス要求の対象アドレスは、全て主記憶１５３のアドレスであるため、クロスバー１４２は、クロスバー１４１へ受信したアクセス要求を送信する。その後、クロスバー１４１は、受信したアクセス要求をシリアライズし、インタフェース１８１を介してコヒーレンシ制御部１４３へ送信する。ここでは、コヒーレンシ制御部１４３は、プロセッサ１０１からのＥＢＲ、プロセッサ１０３からのＥＢＲ、プロセッサ１０４からのＳＢＲ、プロセッサ１０６からのＥＢＲ及びプロセッサ１０７からのＳＢＲの順序で受信したものとする。
【００６７】
次に、コヒーレンシ制御部１４３は、競合情報を登録する（Ｓ２２）。具体的には、コヒーレンシ制御部１４３は、受信した複数のＥＢＲ及びＳＢＲにより、アドレス競合制御部に格納された競合情報を図１３に示したように更新する。すなわち、コヒーレンシ制御部は、複数のアクセス要求を受信した場合に、複数のアクセス要求を行ったプロセッサと、当該アクセス要求の種別とを対応付けて競合情報として競合情報記憶手段に格納する。これにより、競合情報を適切に登録し、参照が容易となる。
【００６８】
ここでは、コヒーレンシ制御部１４３が全アクセス要求を受信した後、競合情報は、Ｖａｌｉｄ＝１、ＥＢＲ競合検出フラグ（７：０）＝０ｘ２５、ＳＢＲ競合検出フラグ（７：０）＝０ｘ４８、そしてリクエストＩＤ＿０、リクエストＩＤ＿２、リクエストＩＤ＿３、リクエストＩＤ＿５、リクエストＩＤ＿６には、それぞれプロセッサ１０１からのＥＢＲのリクエストＩＤ、プロセッサ１０３からのＥＢＲのリクエストＩＤ、プロセッサ１０４からのＳＢＲリクエストＩＤ、プロセッサ１０６からのＥＢＲリクエストＩＤ、プロセッサ１０７からのＳＢＲリクエストＩＤがセットされる。
【００６９】
続いて、コヒーレンシ制御部１４３は、主記憶１５３から対象アドレスのデータを読み出す（Ｓ２３）。具体的には、コヒーレンシ制御部１４３は、この状態でメモリインタフェース１８３を介してＭＥＭ＿ＲＱ＿Ｒを主記憶管理システム１５１に送付し、主記憶管理システム１５１からＭＥＭ＿ＲＳＰ＿Ｄを受信する。
【００７０】
その後、コヒーレンシ制御部１４３は、対象アドレスのＶａｌｉｄビットが１であるか否かを判定する（Ｓ２４）。そして、対象アドレスのＶａｌｉｄビットが１であると判定された場合、コヒーレンシ制御部１４３は、Ｒｓｐ＿Ｄａｔａ＿Ｃｎｆｌｔ生成する（Ｓ２５）。すなわち、コヒーレンシ制御部は、アドレス競合制御部１４７を参照し、複数のアクセス要求における対象アドレスが競合するか否かを判定し、対象アドレスが競合すると判定した場合に、応答指示をクロスバー１４１へ送信する。
【００７１】
ここでは、アドレス競合制御部１４７に格納された競合情報のＶａｌｉｄビットが１であるから図１４の１４０２の動作となる。尚、Ｒｓｐ＿Ｄａｔａ＿Ｃｎｆｌｔの生成する処理は、図１８にて後述する。そして、コヒーレンシ制御部１４３は、ディレクトリ更新する（Ｓ２７）。すなわち、コヒーレンシ制御部１４３は、ステップＳ２５において決定された最初の返信対象のプロセッサに対し、Ｒｓｐ＿Ｄａｔａ＿Ｃｎｆｌｔを生成し、このＲｓｐ＿Ｄａｔａ＿Ｃｎｆｌｔの処理が完了した場合の最終形として適切な状態にキャッシュステータス管理機能１４５内のディレクトリを更新する。このとき、ディレクトリのステータスはＳとなり、キャッシングエージェント情報は、プロセッサ１０４と１０７がキャッシュすることを示す０ｘ４８となる。
【００７２】
また、ステップＳ２４において、対象アドレスのＶａｌｉｄビットが１でないと判定された場合、コヒーレンシ制御部１４３は、Ｒｓｐ＿Ｄａｔａ＿Ｅ又はＲｓｐ＿Ｄａｔａ＿Ｓを発行する（Ｓ２６）。その後、同様にステップＳ２７を実行する。
【００７３】
図１８は、本発明の実施の形態２にかかるコヒーレンシ制御部がレスポンスであるＲｓｐ＿Ｄａｔａ＿Ｃｎｆｌｔを生成する処理の流れを示すフローチャート図である。
【００７４】
まず、コヒーレンシ制御部１４３は、アドレス競合制御部１４７に格納された競合情報を参照し、ＥＢＲ競合検出フラグが全て０であるか否かを判定する（Ｓ３１）。ＥＢＲ競合検出フラグが全て０であると判定した場合、コヒーレンシ制御部１４３は、ＳＢＲ競合検出フラグが１であるビットの内、最も小さなビットに対応するプロセッサを最初の返信対象プロセッサと決定する（Ｓ３２）。また、ＥＢＲ競合検出フラグの全てが０ではないと判定した場合、コヒーレンシ制御部１４３は、ＥＢＲ競合検出フラグが１であるビットの内、最も小さなビットに対応するプロセッサを最初の返信対象プロセッサと決定する（Ｓ３３）。ここでは、ＥＢＲ競合検出フラグ＝０ｘ２５であるため、ビット０に対応するプロセッサ１０１が最初の返信対象として決定される。なお、上述した返信対象のプロセッサの決定方法は、これに限定されない。すなわち、返信対象のプロセッサは、任意のアルゴリズムにより、最終的に全てのプロセッサが選択される方法であればよい。言い換えると、返信対象のプロセッサは、複数のプロセッサにおける所定の順序に基づき、決定される。所定の順序とは、例えば、任意のアルゴリズムである。例えば、コヒーレンシ制御部１４３において、最もレイテンシの短いプロセッサが決定されるようなアルゴリズムを最要することが望ましい。これにより、最も遅延の短いプロセッサを選択することができる。尚、ここでは、説明の簡略化のため、単純に小さいビットに対応するプロセッサを優先して決定する方法を挙げた。
【００７５】
その後、コヒーレンシ制御部１４３は、決定した最初の返信対象プロセッサを示すＩＤをＲｓｐ＿Ｄａｔａ＿ＣｎｆｌｔのデスティネーションＩＤフィールドに設定する（Ｓ３４）。これにより、クロスバー１４１及び１４２は、Ｒｓｐ＿Ｄａｔａ＿ＣｎｆｌｔのデスティネーションＩＤフィールドを参照することにより、適切にルーティングすることができる。そして、コヒーレンシ制御部１４３は、決定した最初の返信対象プロセッサのリクエストＩＤをＲｓｐ＿Ｄａｔａ＿ＣｎｆｌｔのオリジナルリクエストＩＤフィールドに設定する（Ｓ３５）。これにより、返信における最終到着点であるプロセッサは、当該返信が自己の発行したどのリクエストに対するものであるか認識することができる。続いて、コヒーレンシ制御部１４３は、アドレス競合制御部の全ＥＢＲ競合検出フラグ、全ＳＢＲ競合検出フラグ及び全リクエストＩＤ情報をＲｓｐ＿Ｄａｔａ＿ＣｎｆｌｔのＥＢＲ競合検出フラグフィールド、ＳＢＲ競合検出フラグフィールド及びリクエストＩＤフィールドに設定する（Ｓ３６）。
【００７６】
最後に、コヒーレンシ制御部１４３は、Ｒｓｐ＿Ｄａｔａ＿Ｃｎｆｌｔを発行し、決定した最初の返信対象プロセッサであるプロセッサ１０１が接続されたレスポンス／スヌープ制御部１３１へ送信する（Ｓ３７）。つまり、コヒーレンシ制御部は、複数のアクセス要求を行ったプロセッサと、当該アクセス要求の種別とを対応付けて競合情報として応答指示であるＲｓｐ＿Ｄａｔａ＿Ｃｎｆｌｔに含める。これにより、アドレス競合制御部に格納された競合情報内の各種フラグを設定する。そして、以降、レスポンス／スヌープ制御部において、コヒーレンシ制御部に戻すことなく次の返信対象のプロセッサを判定可能となるため、処理時間のさらなる短縮ができる。
【００７７】
図１９は、本発明の実施の形態２にかかるレスポンス／スヌープ制御部がＲｓｐ＿Ｄａｔａ＿Ｃｎｆｌｔを受信した場合における処理の前半の流れを示すフローチャート図である。また、図２０は、本発明の実施の形態２にかかるレスポンス／スヌープ制御部がＲｓｐ＿Ｄａｔａ＿Ｃｎｆｌｔを受信した場合における処理の後半の流れを示すフローチャート図である。すなわち、図１９及び図２０は、Ｒｓｐ＿Ｄａｔａ＿Ｃｎｆｌｔを受信したレスポンス／スヌープ制御部における、接続するプロセッサへのレスポンス返却法、スヌープリクエスト発行法、及び新たなＲｓｐ＿Ｄａｔａ＿Ｃｎｆｌｔ生成法、Ｃｍｐ＿ＩとWBの生成法を示すフローチャートである。
【００７８】
まず、レスポンス／スヌープ制御部１３１は、コヒーレンシ制御部１４３からクロスバー１４１を介して、Ｒｓｐ＿Ｄａｔａ＿Ｃｎｆｌｔを受信する（Ｓ４１）。次に、レスポンス／スヌープ制御部１３１は、Ｒｓｐ＿Ｄａｔａ＿ＣｎｆｌｔのＥＢＲ競合検出フラグの中の、自レスポンス/スヌープ制御部の接続するプロセッサに対応するビットが１であるか否かを判定する（Ｓ４２）。具体的には、レスポンス／スヌープ制御部１３１は、Ｒｓｐ＿Ｄａｔａ＿ＣｎｆｌｔのＥＢＲ競合検出フラグ及びＳＢＲ競合検出フラグの中のプロセッサ１０１に対応するビットを参照し、当該Ｒｓｐ＿Ｄａｔａ＿Ｃｎｆｌｔがプロセッサ１０１の発行したＥＢＲに対応するレスポンスなのか、ＳＢＲに対応するレスポンスなのかを識別する。ここでは、ＥＢＲ競合検出フラグのビット０が１であるから、レスポンス／スヌープ制御部１３１は、ＥＢＲに対するレスポンスと識別する。
【００７９】
ステップＳ４２において、自レスポンス／スヌープ制御部の接続するプロセッサに対応するビットが１であると判定された場合、レスポンス／スヌープ制御部１３１は、自己の接続するプロセッサ１０１に対し、Ｒｓｐ＿Ｄａｔａ＿Ｅを返信する（Ｓ４３）。すなわち、レスポンス／スヌープ制御部１３１は、受信したＲｓｐ＿Ｄａｔａ＿Ｃｎｆｌｔをプロセッサ１０１が処理可能なＲｓｐ＿Ｄａｔａ＿Ｅに変換すると言える。これにより、上述したとおり、本発明の実施の形態２にかかるプロセッサ１０１乃至１０８は、本発明のための特別なプロセッサではなく、一般的なものを使用可能とすることができる。
【００８０】
引き続き、レスポンス／スヌープ制御部１３１は、プロセッサ１０１に対して、Ｓｎｐ＿Ｅを送信する（Ｓ４４）。
【００８１】
尚、上述した課題で挙げたＳＭＰシステムに適用した場合、このとき、レスポンス／スヌープ制御部１３１からコヒーレンシ制御部１４３にＣｍｐを返却し、プロセッサ１０１へのレスポンスが完了したことを通知する。続いて、当該Ｃｍｐ受信を契機として、コヒーレンシ制御部１４３は、プロセッサ１０１のキャッシュメモリ１１１内データを吐き出させるために生成、発行するプロセッサ１０３のＥＢＲを要因とするＳｎｐ＿Ｅが、プロセッサ１０１に届くのを待つ必要があった。すなわち、次に処理するリクエストの発行元であるプロセッサ１０３にデータを渡すためにプロセッサ１０１へＳｎｐ＿Ｅを発行するまでに、レスポンス／スヌープ制御部１３１からコヒーレンシ制御部１４３までの間をＣｍｐとＳｎｐ＿Ｅが往復するレイテンシだけの時間が必要であった。
【００８２】
本発明の実施の形態２では、コヒーレンシ制御部１４３とレスポンス／スヌープ制御部１３１間を同一のノードコントローラまたは一段渡ったノードコントローラという構成にしている。これは、実際の大規模コンピュータでは、この間に多段のノードコントローラを介する必要がある場合があるためである。そして、その場合、レスポンス／スヌープ制御部１３１からコヒーレンシ制御部１４３の間のＣｍｐとＳｎｐ＿Ｅの往復時間は、さらに大きなものとなることがあった。
【００８３】
そこで、本発明の実施の形態２では、この往復によりプロセッサ１０１からプロセッサ１０１以外の他のプロセッサに対するレスポンスレイテンシを短縮することを目的としている。すなわち、プロセッサ１０１にレスポンスを行ったレスポンス／スヌープ制御部１３１は、コヒーレンシ制御部１４３にＣｍｐを返信し、その後のＳｎｐ＿Ｅ到着を待つことを行わない。その代りに、レスポンス／スヌープ制御部１３１は、ステップＳ４４において、自主的にＳｎｐ＿Ｅを生成し、プロセッサ１０１に発行する。そして、プロセッサ１０３では、この結果のＣｍｐ＿ＩとＲｓｐ＿Ｄａｔａ＿Ｅがプロセッサ１０１から返却されるのを待ち受ける。
【００８４】
その後、レスポンス／スヌープ制御部１３１は、Ｓｎｐ＿Ｅに対するＣｍｐ＿Ｉ+Ｒｓｐ＿Ｄａｔａ＿Ｅをプロセッサから受信したか否かを判定する（Ｓ４５）。受信しないと判定した場合、再度、ステップＳ４５を実行する。そして、受信したと判定した場合、レスポンス／スヌープ制御部１３１は、Ｒｓｐ＿Ｄａｔａ＿Ｃｎｆｌｔのデータ部をＲｓｐ＿Ｄａｔａ＿Ｅのデータと差し替える（Ｓ４６）。すなわち、データの最新化を行う。続いて、レスポンス／スヌープ制御部１３１は、Ｒｓｐ＿Ｄａｔａ＿ＣｎｆｌｔのＥＢＲ競合検出フラグの中の自レスポンス／スヌープ管理部の接続するプロセッサ１０１に対応するビットを０にリセットする（Ｓ４７）。
【００８５】
続いて、図２０に進み、レスポンス／スヌープ制御部１３１は、ＥＢＲ競合検出フラグが全て０であるか否かを判定する（Ｓ５１）。ここで、レスポンス／スヌープ制御部１３１は、ステップＳ４７において、ＥＢＲ競合検出フラグを０ｘ２５から０ｘ２４に更新した直後である。よって、全て０ではないため、ステップＳ５１において、ＥＢＲ競合検出フラグの全てが０ではないと判定される。このとき、レスポンス／スヌープ制御部１３１は、ＥＢＲ競合検出フラグが１であるビットの内、最も小さなビットに対応するプロセッサを次の返信対象プロセッサと決定する（Ｓ５６）。ここでは、ＥＢＲ競合検出フラグが０ｘ２４であるからプロセッサ１０３を次の返信対象プロセッサと決定する。
【００８６】
その後、レスポンス／スヌープ制御部１３１は、決定した次の返信対象プロセッサを示すＩＤをＲｓｐ＿Ｄａｔａ＿ＣｎｆｌｔのデスティネーションＩＤフィールドに設定する（Ｓ５７）。具体的には、レスポンス／スヌープ制御部１３１は、次の返信対象プロセッサと決定されたプロセッサ１０３に対応するＩＤをＲｓｐ＿Ｄａｔａ＿ＣｎｆｌｔのデスティネーションＩＤフィールドに設定する。
【００８７】
また、レスポンス／スヌープ制御部１３１は、決定した次の返信対象プロセッサのリクエストＩＤをＲｓｐ＿Ｄａｔａ＿ＣｎｆｌｔのオリジナルリクエストＩＤフィールドに設定する（Ｓ５８）。具体的には、レスポンス／スヌープ制御部１３１は、プロセッサ１０３の発行したＥＢＲのリクエストＩＤをＲｓｐ＿Ｄａｔａ＿ＣｎｆｌｔのリクエストＩＤ＿２から読み出し、オリジナルリクエストＩＤフィールドにセットする。
【００８８】
さらに、レスポンス／スヌープ制御部１３１は、Ｒｓｐ＿Ｄａｔａ＿Ｃｎｆｌｔを発行し、決定した次の返信対象プロセッサであるプロセッサ１０３が接続されたレスポンス／スヌープ制御部１３３へ送信する（Ｓ５９）。具体的には、レスポンス／スヌープ制御部１３１は、クロスバー１４１へＲｓｐ＿Ｄａｔａ＿Ｃｎｆｌｔを送信し、レスポンス／スヌープ制御部１３１は、レスポンス／スヌープ制御部１３３へ当該Ｒｓｐ＿Ｄａｔａ＿Ｃｎｆｌｔを送信する。以後、レスポンス／スヌープ制御部１３３は、Ｒｓｐ＿Ｄａｔａ＿ＣｎｆｌｔのデスティネーションＩＤフィールド情報に従い、適切にルーティングし、プロセッサ１０３へ送信する。
【００８９】
以降、同様にＥＢＲのリクエストソースであるプロセッサ１０３及び１０６に接続するレスポンス／スヌープ制御部１３３及び１３６においても、レスポンス／スヌープ制御部１３１同様に、図１９及び図２０に従った処理が行われる。
【００９０】
ただし、最後のＥＢＲソースであるプロセッサ１０６に接続するレスポンス／スヌープ制御部１３６においては、ステップＳ４７までは、レスポンス／スヌープ制御部１３１及び１３３と同様であるが、ステップＳ５１において、ＥＢＲ競合検出フラグが全て０と判定される。そこで、レスポンス／スヌープ制御部１３６は、ＥＢＲ競合検出フラグが全て０であると判定された場合、ＳＢＲ競合検出フラグが全て０であるか否かを判定する（Ｓ５２）。
【００９１】
ここでは、Ｒｓｐ＿Ｄａｔａ＿ＣｎｆｌｔのＳＢＲ競合検出フラグは０ｘ４８であるから、レスポンス／スヌープ制御部１３６は、ＳＢＲ競合検出フラグの全てが０ではないと判定する。その後、レスポンス／スヌープ制御部１３６は、ＳＢＲ競合検出フラグが１であるビットの内、最も小さなビットに対応するプロセッサであるプロセッサ１０４を次の返信対象プロセッサとして決定する（Ｓ５５）。
【００９２】
その後、レスポンス／スヌープ制御部１３６は、プロセッサ１０４を意味するＩＤをＲｓｐ＿Ｄａｔａ＿ＣｎｆｌｔのデスティネーションＩＤに設定（Ｓ５７）し、Ｒｓｐ＿Ｄａｔａ＿ＣｎｆｌｔのリクエストＩＤ＿３の値を抜き出し、オリジナルリクエストＩＤに設定する（Ｓ５８）。そして、レスポンス／スヌープ制御部１３６は、Ｒｓｐ＿Ｄａｔａ＿Ｃｎｆｌｔを発行し、決定した次の返信対象プロセッサであるプロセッサ１０４が接続されたレスポンス／スヌープ制御部１３４へ送信する（Ｓ５９）。
【００９３】
ここで、レスポンス／スヌープ制御部１３４は、図１９及び図２０に従い、処理する。まず、レスポンス／スヌープ制御部１３４は、Ｒｓｐ＿Ｄａｔａ＿Ｃｎｆｌｔを受信（Ｓ４１）し、ＥＢＲ競合検出フラグのプロセッサ１０４に対応するビットが１であるか否かを判定する（Ｓ４２）。ここで、ＥＢＲ競合検出フラグは全て０であるから、自レスポンス／スヌープ制御部の接続するプロセッサに対応するビットが１であると判定されない。そのため、レスポンス／スヌープ制御部１３４は、自レスポンス／スヌープ制御部の接続するプロセッサに対し、Ｒｓｐ＿Ｄａｔａ＿Ｓを返信する（Ｓ４８）。すなわち、レスポンス／スヌープ制御部１３４は、受信したＲｓｐ＿Ｄａｔａ＿Ｃｎｆｌｔをプロセッサ１０４が処理可能なＲｓｐ＿Ｄａｔａ＿Ｓに変換すると言える。
【００９４】
続いて、レスポンス／スヌープ制御部１３４は、Ｒｓｐ＿Ｄａｔａ＿ＣｎｆｌｔのＳＢＲ競合検出フラグの中の自レスポンス／スヌープ管理部の接続するプロセッサに対応するビットを０にリセットする（Ｓ４９）。具体的には、レスポンス／スヌープ制御部１３４は、Ｒｓｐ＿Ｄａｔａ＿ＣｎｆｌｔのＳＢＲ競合検出フラグの中のプロセッサ１０４に対応するビットを０リセットする。ここでは、ＳＢＲ競合検出フラグが０ｘ４８から０ｘ４０に遷移する。
【００９５】
続いて、図２０へ進み、レスポンス／スヌープ制御部１３４は、ＥＢＲ競合検出フラグが全て０であるか否かを判定する（Ｓ５１）。ここでは、ＥＢＲ競合検出フラグが全て０であると判定され、レスポンス／スヌープ制御部１３４は、ＳＢＲ競合検出フラグが全て０であるか否かを判定する（Ｓ５２）。ここでは、ＳＢＲ競合検出フラグが０ｘ４０であるため、ＳＢＲ競合検出フラグの全てが０ではないと判定される。そして、レスポンス／スヌープ制御部１３４は、ＥＢＲ競合検出フラグが０ｘ２４であるからプロセッサ１０７を次の返信対象プロセッサと決定する（Ｓ５５）。
【００９６】
続いて、レスポンス／スヌープ制御部１３４は、プロセッサ１０７を意味するＩＤをＲｓｐ＿Ｄａｔａ＿ＣｎｆｌｔのデスティネーションＩＤに設定（Ｓ５７）し、Ｒｓｐ＿Ｄａｔａ＿ＣｎｆｌｔのリクエストＩＤ＿６の値を抜き出し、オリジナルリクエストＩＤに設定する（Ｓ５８）。そして、レスポンス／スヌープ制御部１３４は、Ｒｓｐ＿Ｄａｔａ＿Ｃｎｆｌｔを発行し、決定した次の返信対象プロセッサであるプロセッサ１０７が接続されたレスポンス／スヌープ制御部１３７へ送信する（Ｓ５９）。
【００９７】
レスポンス／スヌープ制御部１３７は、レスポンス／スヌープ制御部１３４同様、図１９及び図２０に従い処理を行う。ただし、ステップＳ４９において、プロセッサ１０７に対応するＳＢＲ競合検出フラグが０ｘ４０から０ｘ００に遷移するため、ステップＳ５２において、ＳＢＲ競合検出フラグが全て０と判定され、ステップＳ５３へ進む。
【００９８】
そして、レスポンス／スヌープ制御部１３７は、ステップＳ５２において、ＳＢＲ競合検出フラグが全て０であると判定された場合、Ｃｍｐ＿ＩとＷＢを生成し、コヒーレンシ制御部へ返却する（Ｓ５３）。具体的には、レスポンス／スヌープ制御部１３７は、図１０の９２０同様に、Ｃｍｐ＿ＩとWBを生成し、これをコヒーレンシ制御部１４３へ発行する。
【００９９】
その後、コヒーレンシ制御部１４３は、アドレス競合制御部１４７に格納された競合情報のＶａｌｉｄビットを０にリセットする。また、コヒーレンシ制御部１４３は、ＷＢによりＭＥＭ＿ＲＱ＿Ｗを生成し、メモリインタフェース１８３を介して主記憶管理システム１５１に発行し、Ｃｍｐを発行する（Ｓ５４）。これにより、全ての処理を終了する。
【０１００】
以上に示したとおり、本発明の実施の形態２では、課題に示したように、１つのプロセッサリクエストを処理するたびにスヌープリクエスト及びそのコンプリーションが対象プロセッサとキャッシュコヒーレンシ制御部を往復するのではなく、コンプリーションなしに次のプロセッサのリクエストを処理可能とすることで、前記往復のレイテンシをなくし、システムとしてのキャッシュコヒーレンシは保証しつつアドレス競合データがプロセッサ間を直接移動する制御を可能とすることにより、アドレス競合発生時の全リクエスト処理時間を軽減する。
【０１０１】
＜その他の発明の実施の形態＞
さらに、本発明は上述した実施の形態のみに限定されるものではなく、既に述べた本発明の要旨を逸脱しない範囲において種々の変更が可能であることは勿論である。
【符号の説明】
【０１０２】
１１  プロセッサ
１２  プロセッサ
１３  キャッシュメモリ
１４  キャッシュメモリ
１５  キャッシュメモリ制御システム
１６  送受信制御部
１７  コヒーレンシ制御部
１８  メインメモリ
１００  マルチプロセッサシステム
１０１  プロセッサ
１０２  プロセッサ
１０３  プロセッサ
１０４  プロセッサ
１０５  プロセッサ
１０６  プロセッサ
１０７  プロセッサ
１０８  プロセッサ
１１１  キャッシュメモリ
１１２  キャッシュメモリ
１１３  キャッシュメモリ
１１４  キャッシュメモリ
１１５  キャッシュメモリ
１１６  キャッシュメモリ
１１７  キャッシュメモリ
１１８  キャッシュメモリ
１２１  ノードコントローラ
１２２  ノードコントローラ
１３１  レスポンス／スヌープ制御部
１３２  レスポンス／スヌープ制御部
１３３  レスポンス／スヌープ制御部
１３４  レスポンス／スヌープ制御部
１３５  レスポンス／スヌープ制御部
１３６  レスポンス／スヌープ制御部
１３７  レスポンス／スヌープ制御部
１３８  レスポンス／スヌープ制御部
１４１  クロスバー
１４２  クロスバー
１４３  コヒーレンシ制御部
１４４  コヒーレンシ制御部
１４５  キャッシュステータス管理機能
１４６  キャッシュステータス管理機能
１４７  アドレス競合制御部
１４８  アドレス競合制御部
１５１  主記憶管理システム
１５２  主記憶管理システム
１５３  主記憶
１５４  主記憶
１５５  主記憶コントローラ
１５６  主記憶コントローラ
１６１  システムインタフェース
１６２  システムインタフェース
１６３  システムインタフェース
１６４  システムインタフェース
１６５  システムインタフェース
１６６  システムインタフェース
１６７  システムインタフェース
１６８  システムインタフェース
１７１  インタフェース
１７２  インタフェース
１７３  インタフェース
１７４  インタフェース
１７５  インタフェース
１７６  インタフェース
１７７  インタフェース
１７８  インタフェース
１８１  インタフェース
１８２  インタフェース
１８３  メモリインタフェース
１８４  メモリインタフェース
１８５  ノードインタフェース
３０１  キャッシュステータス
３０２  キャッシングエージェント情報
７０１  Ｖａｌｉｄビット
７０２  ＥＢＲ競合検出フラグ
７０３  ＥＢＲ競合検出フラグ
７０４  リクエストＩＤ
【図１】
0005408713.tif 000002
【図２】
0005408713.tif 000003
【図３】
0005408713.tif 000004
【図４】
0005408713.tif 000005
【図５】
0005408713.tif 000006
【図６】
0005408713.tif 000007
【図７】
0005408713.tif 000008
【図８】
0005408713.tif 000009
【図９】
0005408713.tif 000010
【図１０】
0005408713.tif 000011
【図１１】
0005408713.tif 000012
【図１２】
0005408713.tif 000013
【図１３】
0005408713.tif 000014
【図１４】
0005408713.tif 000015
【図１５】
0005408713.tif 000016
【図１６】
0005408713.tif 000017
【図１７】
0005408713.tif 000018
【図１８】
0005408713.tif 000019
【図１９】
0005408713.tif 000020
【図２０】
0005408713.tif 000021