(57)【要約】  システムコントローラ（ＳＣ０，ＳＣ１）は、自身が管理するＣＰＵが有するキャッシュメモリの状態およびデータ転送のための資源の状態に基づいて、ＣＰＵ１ａが発行したメモリアクセス要求であるフェッチ要求が要求するデータに対するキャッシュメモリ毎のステータスとして、「ＢＵＳＹ」、「ＨＩＴ」、「ＨＩＴ＆ＢＵＳＹ」、「ＭＩＳＳ＆ＢＵＳＹ」、または「ＭＩＳＳ」を選択するスヌープ処理を実行し、スヌープ処理結果を他のシステムコントローラ（ＳＣ０，ＳＣ１）に通知する。システムコントローラ（ＳＣ０，ＳＣ１）は、ステータスの優先順位を、優先順位が最も高い「ＢＵＳＹ」から順に、「ＨＩＴ」、「ＨＩＴ＆ＢＵＳＹ」、「ＭＩＳＳ＆ＢＵＳＹ」、「ＭＩＳＳ］として全てのステータスをマージして最終ステータスを決定する。システムコントローラ（ＳＣ０，ＳＣ１）は、最終ステータスが「ＢＵＳＹ」、「ＨＩＴ＆ＢＵＳＹ」または「ＭＩＳＳ＆ＢＵＳＹ」の場合にはスヌープ処理をリトライし、最終ステータスが「ＨＩＴ」、または「ＭＩＳＳ」の場合には最終ステータスに応じたデータ転送を実行するメモリアクセス処理を起動する。
2007096978.tif 000002
【特許請求の範囲】
【請求項１】
キャッシュメモリを有する複数のＣＰＵと、共有メモリを構成する複数のメインメモリとをグループ分けし、グループ毎にＣＰＵとメインメモリとを管理し前記キャッシュメモリ間または前記キャッシュメモリとメインメモリとの間のデータ転送を制御するシステムコントローラを備える情報処理装置に適用されるスヌープ制御方法であって、
前記システムコントローラは、
自身が管理するＣＰＵからのメモリアクセス要求を受けて他のシステムコントローラに通知するメモリアクセス要求通知ステップと、
自身が管理するＣＰＵからのメモリアクセス要求、または前記メモリアクセス要求通知ステップによって他のシステムコントローラからメモリアクセス要求を受けると、前記メモリアクセス要求の要求する対象データが前記メモリアクセス要求よりも先に受けた先行メモリアクセス要求の要求する対象データと競合するか否か、前記メモリアクセス要求の要求する対象データが自身が管理するキャッシュメモリ内に存在するか否か、前記メモリアクセス要求の要求する対象データを転送するための資源が枯渇しているか否かを自身が管理するＣＰＵ内のキャッシュメモリ毎に判定する判定ステップと、
前記判定ステップによって、前記メモリアクセス要求の要求する対象データが前記先行メモリアクセス要求の要求する対象データと競合すると判定した場合には、当該キャッシュメモリのステータスとして「ＢＵＳＹ」を選択し、前記メモリアクセス要求の要求する対象データが前記先行メモリアクセス要求の要求する対象データと競合しておらず、前記メモリアクセス要求の要求する対象データが自身が管理するキャッシュメモリ内に存在し、かつ前記メモリアクセス要求の要求する対象データを転送するための資源が枯渇していないと判定した場合には、当該キャッシュメモリのステータスとして「ＨＩＴ」を選択し、前記メモリアクセス要求の要求する対象データが前記先行メモリアクセス要求の要求する対象データと競合しておらず、前記メモリアクセス要求の要求する対象データが自身が管理するキャッシュメモリ内に存在し、かつ前記メモリアクセス要求の要求する対象データを転送するための資源が枯渇いると判定した場合には、当該キャッシュメモリのステータスとして「ＨＩＴ＆ＢＵＳＹ」を選択し、前記メモリアクセス要求の要求する対象データが前記先行メモリアクセス要求の要求する対象データと競合しておらず、かつ前記メモリアクセス要求の要求する対象データが自身が管理するキャッシュメモリ内に存在しない場合には、当該キャッシュメモリのステータスとして「ＭＩＳＳ」を選択するステータス選択ステップと、
前記ステータス選択ステップによって選択したステータスとキャッシュメモリとを対応付けたスヌープ処理結果を他のシステムコントローラに通知するスヌープ処理結果通知ステップと、
前記スヌープ処理結果通知ステップによって通知されたスヌープ処理結果および自身のスヌープ処理結果に含まれるすべてのステータスの中に「ＢＵＳＹ」が存在する場合には最終ステータスを「ＢＵＳＹ」とし、すべてのステータスの中に「ＢＵＳＹ」が存在せず、かつ「ＨＩＴ」が存在する場合には最終ステータスを「ＨＩＴ」とし、すべてのステータスの中に「ＢＵＳＹ」および「ＨＩＴ」が存在せず、かつ「ＨＩＴ＆ＢＵＳＹ」が存在する場合には最終ステータスを「ＨＩＴ＆ＢＵＳＹ」とし、すべてのステータスが「ＭＩＳＳ」の場合には最終ステータスを「ＭＩＳＳ」とする最終ステータス決定ステップと、
前記最終ステータス選択ステップによって、最終ステータスが「ＢＵＳＹ」または「ＨＩＴ＆ＢＵＳＹ」と決定された場合には、前記判定ステップ、前記ステータス選択ステップ、前記スヌープ処理結果通知ステップ、および最終ステータス決定ステップを繰り返し、最終ステータスが「ＨＩＴ」と決定された場合には、最終ステータスが「ＨＩＴ」であるキャッシュメモリを有するＣＰＵと、メモリアクセス要求を発行したＣＰＵとの物理的な距離に基づいて１つのＣＰＵを選択し、選択したＣＰＵが自身が管理するＣＰＵの場合には選択したＣＰＵのキャッシュメモリへのメモリアクセス処理を起動してデータ転送を実行させ、前記最終ステータスが「ＭＩＳＳ」の場合には、前記メモリアクセス要求の対象データを有するメインメモリが自身が管理するメインメモリであるか否かを判定し、判定の結果自身が管理するメインメモリである場合当該メインメモリへのアクセス処理を起動してデータ転送を実行させるメモリアクセス処理起動ステップと、
を備えることを特徴とするスヌープ制御方法。
【請求項２】
前記キャッシュメモリ間のデータ転送の単位であるキャッシュラインのバイト数よりも、前記メインメモリから前記キャッシュメモリへのデータ転送の単位であるエントリーのバイト数が大きい場合であって、かつ前記メモリアクセス要求が対象データの読み出しを要求するフェッチ要求の場合、
前記判定ステップは、
前記メモリアクセス要求の要求する対象データと、前記先行メモリアクセス要求の対象データとが同一エントリー内のデータであるか否かの判定をさらに含み、
前記ステータス選択ステップは、
前記メモリアクセス要求の要求する対象データが前記先行メモリアクセス要求の要求する対象データと競合しておらず、前記メモリアクセス要求の要求する対象データが自身が管理するキャッシュメモリ内に存在しておらず、かつメモリアクセス要求の要求する対象データが前記先行メモリアクセス要求の対象データと同一エントリー内のデータである場合には、当該キャッシュメモリのステータスとして「ＭＩＳＳ＆ＢＵＳＹ」を選択し、
前記最終ステータス選択ステップは、
「ＢＵＳＹ」、「ＨＩＴ」＆「ＨＩＴ＆ＢＵＳＹ」が存在せず、かつ「ＭＩＳＳ＆ＢＵＳＹ」が存在する場合には最終ステータスを「ＭＩＳＳ＆ＢＵＳＹ」とし、
前記メモリアクセス処理起動ステップは、
前記最終ステータスが「ＭＩＳＳ＆ＢＵＳＹ」の場合も、前記判定ステップ、前記ステータス選択ステップ、前記スヌープ処理結果通知ステップ、および最終ステータス決定ステップを繰り返すこと、
を特徴とする請求項１に記載のスヌープ制御方法。
【請求項３】
キャッシュメモリを有する複数のＣＰＵと、共有メモリを構成する複数のメインメモリとをグループ分けし、グループ毎にＣＰＵとメインメモリとを管理し前記キャッシュメモリ間または前記キャッシュメモリとメインメモリとの間のデータ転送を制御するシステムコントローラを備える情報処理装置において、
前記各システムコントローラは、
自身が管理するＣＰＵからのメモリアクセス要求を受けて他のシステムコントローラに通知するブロードキャスト送受信部と、
自身が管理するＣＰＵからのメモリアクセス要求、または前記メモリアクセス要求通知ステップによって他のシステムコントローラからメモリアクセス要求を受けると、前記メモリアクセス要求の要求する対象データが前記メモリアクセス要求よりも先に受けた先行メモリアクセス要求の要求する対象データと競合するか否か、前記メモリアクセス要求の要求する対象データが自身が管理するキャッシュメモリ内に存在するか否か、前記メモリアクセス要求の要求する対象データを転送するための資源が枯渇しているか否かを自身が管理するＣＰＵ内のキャッシュメモリ毎に判定し、前記メモリアクセス要求の要求する対象データが前記先行メモリアクセス要求の要求する対象データと競合すると判定した場合には、当該キャッシュメモリのステータスとして「ＢＵＳＹ」を選択し、前記メモリアクセス要求の要求する対象データが前記先行メモリアクセス要求の要求する対象データと競合しておらず、前記メモリアクセス要求の要求する対象データが自身が管理するキャッシュメモリ内に存在し、かつ前記メモリアクセス要求の要求する対象データを転送するための資源が枯渇していないと判定した場合には、当該キャッシュメモリのステータスとして「ＨＩＴ」を選択し、前記メモリアクセス要求の要求する対象データが前記先行メモリアクセス要求の要求する対象データと競合しておらず、前記メモリアクセス要求の要求する対象データが自身が管理するキャッシュメモリ内に存在し、かつ前記メモリアクセス要求の要求する対象データを転送するための資源が枯渇いると判定した場合には、当該キャッシュメモリのステータスとして「ＨＩＴ＆ＢＵＳＹ」を選択し、前記メモリアクセス要求の要求する対象データが前記先行メモリアクセス要求の要求する対象データと競合しておらず、かつ前記メモリアクセス要求の要求する対象データが自身が管理するキャッシュメモリ内に存在しない場合には、当該キャッシュメモリのステータスとして「ＭＩＳＳ」を選択し、選択したステータスとキャッシュメモリとを対応付けたスヌープ処理結果を他のシステムコントローラに通知するスヌープ処理を実行し、このスヌープ処理によって通知されたスヌープ処理結果および自身のスヌープ処理結果に含まれるすべてのステータスの中に「ＢＵＳＹ」が存在する場合には最終ステータスを「ＢＵＳＹ」とし、すべてのステータスの中に「ＢＵＳＹ」が存在せず、かつ「ＨＩＴ」が存在する場合には最終ステータスを「ＨＩＴ」とし、すべてのステータスの中に「ＢＵＳＹ」および「ＨＩＴ」が存在せず、かつ「ＨＩＴ＆ＢＵＳＹ」が存在する場合には最終ステータスを「ＨＩＴ＆ＢＵＳＹ」とし、すべてのステータスが「ＭＩＳＳ」の場合には最終ステータスを「ＭＩＳＳ」とし、最終ステータスが「ＢＵＳＹ」または「ＨＩＴ＆ＢＵＳＹ」と決定された場合には前記スヌープ処理をリトライし、最終ステータスが「ＨＩＴ」と決定された場合には、最終ステータスが「ＨＩＴ」であるキャッシュメモリを有するＣＰＵと、メモリアクセス要求を発行したＣＰＵとの物理的な距離に基づいて１つのＣＰＵを選択し、選択したＣＰＵが自身が管理するＣＰＵの場合には選択したＣＰＵのキャッシュメモリへのメモリアクセス処理を起動してデータ転送を実行させ、前記最終ステータスが「ＭＩＳＳ」の場合には、前記メモリアクセス要求の対象データを有するメインメモリが自身が管理するメインメモリであるか否かを判定し、判定の結果自身が管理するメインメモリである場合当該メインメモリへのアクセス処理を起動してデータ転送を実行させるスヌープ制御部と、
を備えることを特徴とする情報処理装置。
【請求項４】
前記キャッシュメモリ間のデータ転送の単位であるキャッシュラインのバイト数よりも、前記メインメモリから前記キャッシュメモリへのデータ転送の単位であるエントリーのバイト数が大きい場合であって、かつ前記メモリアクセス要求が対象データの読み出しを要求するフェッチ要求の場合、
前記スヌープ制御部は、
メモリアクセス要求の要求する対象データと、前記先行メモリアクセス要求の対象データとが同一エントリー内のデータであるか否かを判定し、前記メモリアクセス要求の要求する対象データが前記先行メモリアクセス要求の要求する対象データと競合しておらず、前記メモリアクセス要求の要求する対象データが自身が管理するキャッシュメモリ内に存在しておらず、かつ前記メモリアクセス要求の要求する対象データが前記先行メモリアクセス要求の対象データと同一エントリー内のデータである場合には、当該キャッシュメモリのステータスとして「ＭＩＳＳ＆ＢＵＳＹ」を選択し、「ＢＵＳＹ」、「ＨＩＴ」＆「ＨＩＴ＆ＢＵＳＹ」が存在せず、かつ「ＭＩＳＳ＆ＢＵＳＹ」が存在する場合には最終ステータスを「ＭＩＳＳ＆ＢＵＳＹ」として前記スヌープ処理をリトライすること、
を特徴とする請求項３に記載の情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、キャッシュメモリを有するマルチプロセッサ構成の情報処理装置に関するものであり、特に、メモリアクセス要求の処理時間を短縮するスヌープ制御方法および情報処理装置に関するものである。
【背景技術】
【０００２】
従来から、キャッシュメモリを有するマルチプロセッサ構成の情報処理装置において、メモリアクセス要求を高速に実行するために種々の技術が考えられている。たとえば、特許文献１に記載の従来技術では、キャッシュメモリの状態として、通常のキャッシュ・プロトコル（ＭＥＳＩプロトコルなど）が有する変更状態、排他状態、共有状態、および無効状態に加えて、アドレス・タグは有効であるがデータ・アレイの対応するウェイに記憶されたデータ項目は無効であることを示すホバーリング状態と、データ項目のコピーを記憶する複数のキャッシュメモリの内どのキャッシュメモリが相互接続線上のトランザクションを介して共用データを最近受け取ったかを表すリーセント状態を新たに追加することで、ローカル・プロセッサが明示的な読取または書込みリクエストを発行することなく、有効アドレス・タグと関連してキャッシュメモリ内に記憶された無効データ項目を有効データによって自動的に更新する。【０００３】
これにより、リモート・プロセッサのアクティビティによって無効にされたデータは、そのデータがローカル・プロセッサによってアクセスされる前にリフレッシュされるので、リモート・キャッシュメモリまたはシステムメモリからデータを検索する必要がなくなり、キャッシュメモリやシステムメモリへのアクセス待ち時間を減少させることができる。【０００４】
【特許文献１】特開平１１−３２８０２６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ところで、キャッシュメモリを有する複数のプロセッサ、複数の入出力装置、および複数のメモリデバイス（メインメモリ）からなる共有メモリを有するマルチプロセッサ構成の情報処理装置において、これらプロセッサ、入出力装置、およびメインメモリを複数のグループに分け、グループ毎にプロセッサ、入出力装置、およびメインメモリを管理するシステムコントローラを備えた場合について考える。【０００６】
システムコントローラは、自身が管理するプロセッサからメモリアクセス要求を受けると、そのメモリアクセス要求を他のシステムコントローラに通知し、各システムコントローラは、それぞれ自身が管理するプロセッサ内のキャッシュメモリが格納するデータの状態およびデータ転送に用いる資源（キャッシュメモリに対するチップセレクト信号やリードライト制御信号などの制御バス、アドレスバス、データバス）の状態を検出してメモリアクセス要求によって要求されたデータ（対象データ）に対するキャッシュメモリのステータスを選択するスヌープ処理を実行する。【０００７】
各システムコントローラは、スヌープ処理によって選択したキャッシュメモリ毎のステータスをスヌープ処理結果として他のシステムコントローラに通知し、装置内の全てのキャッシュメモリのステータスをマージして最終ステータスを決定し、決定した最終ステータスに基づいてキャッシュメモリ間またはキャッシュメモリとメインメモリとの間のメモリ間データ転送のためのメモリアクセス処理を起動するメモリアクセス起動処理を実行する。【０００８】
このような従来の情報処理装置では、対象データのデータ転送が不可であることを示す「ＢＵＳＹ」、対象データのデータ転送が可能であることを示す「ＨＩＴ」、および対象データがキャッシュメモリに存在しないことを示す「ＭＩＳＳ」の３種類のステータスが定義されている。システムコントローラは、スヌープ処理の対象となるメモリアクセス要求（対象メモリアクセス要求）が要求するデータ（対象データ）と、メモリアクセス起動処理およびメモリアクセス処理の対象となっているメモリアクセス要求、すなわち対象メモリアクセス要求よりも前に発行され、メモリアクセス起動処理やメモリアクセス処理の対象となっているメモリアクセス要求（先行メモリアクセス要求）の対象データとが競合していること、またはデータ転送のための資源が枯渇していることを検出した場合にはステータスとして「ＢＵＳＹ」を選択する。【０００９】
システムコントローラは、プロセッサのキャッシュメモリに対象データが存在していること、対象モリアクセス要求の対象データに対する競合がないこと、およびデータ転送のための資源が枯渇していないことを検出した場合には「ＨＩＴ」を選択する。また、システムコントローラは、プロセッサのキャッシュメモリに対象データが存在していないこと、およびデータ転送のための資源が枯渇していないことを検出した場合には「ＭＩＳＳ」を選択する。【００１０】
システムコントローラは、全てのキャッシュメモリのステータスの中に「ＢＵＳＹ」が存在する場合には最終ステータスを「ＢＵＳＹ」とし、「ＢＵＳＹ」が存在しておらず、かつ「ＨＩＴ」が存在する場合には最終ステータスを「ＨＩＴ」とし、全てのステータスが「ＭＩＳＳ」である場合には最終ステータスを「ＭＩＳＳ」とする。すなわち、ステータス「ＢＵＳＹ」が最も優先順位が高く、ステータス「ＨＩＴ」、ステータス「ＭＩＳＳ」の順に優先順位が低く、システムコントローラは、全てのステータスの中で優先順位の高いステータスを最終ステータスとする。【００１１】
システムコントローラは、最終ステータスが「ＢＵＳＹ」の場合にはスヌープ処理をリトライする。システムコントローラは、最終ステータスが「ＨＩＴ」であって、かつメモリアクセス要求が対象データを参照する共有型フェッチ要求の場合には、ステータスとして「ＨＩＴ」が選択されたキャッシュメモリの１つに対してデータ転送を要求するメモリアクセス処理を起動し、最終ステータスが「ＨＩＴ」であって、かつメモリアクセス要求が対象データを更新することを前提とした排他型フェッチ要求である場合には、ステータスとして「ＨＩＴ」が選択されたキャッシュメモリの１つに対してデータ転送を要求するとともに、ステータスとして「ＨＩＴ」が選択された他のキャッシュメモリを無効化するメモリアクセス処理を起動し、最終ステータスが「ＨＩＴ」であって、かつメモリアクセス要求がデータをストアするストア要求の場合には、ステータスとして「ＨＩＴ」が選択された全てのキャッシュメモリを無効化するとともに、対象データをメインメモリにストアするメモリアクセス処理を起動する。また、システムコントローラは、最終ステータスが「ＭＩＳＳ」であって、かつメモリアクセス要求が共有型フェッチ要求または排他方フェッチ要求の場合には、メインメモリからデータをリードするメモリアクセス処理を起動し、最終ステータスが「ＭＩＳＳ」であって、かつメモリアクセス要求がストア要求の場合には、対象データをメインメモリにストアするメモリアクセス処理を起動する。【００１２】
ここで、あるキャッシュメモリのステータスが「ＢＵＳＹ」であり、他のキャッシュメモリの内少なくとも１つのステータスが「ＨＩＴ」である場合について考える。システムコントローラは、最も優先順位の高い「ＢＵＳＹ」を最終ステータスに決定する。上述したように、ステータスとして「ＢＵＳＹ」が選択されるのは、対象データに対する競合があるか、またはデータ転送のための資源が枯渇している場合である。対象データに対する競合によって「ＢＵＳＹ」が選択された場合は、先行メモリアクセス要求に対するメモリアクセス処理によってキャッシュメモリのデータが変更される可能性がある。そのため、先行メモリアクセス要求のメモリアクセス処理が終了して、キャッシュメモリの状態が確定するまでスヌープ処理をリトライする必要がある。【００１３】
一方、対象データに対する競合はなく、データ転送のための資源が枯渇しているためにステータスとして「ＢＵＳＹ」が選択された場合は、キャッシュメモリへのアクセスは不可であるが、対象データに対する競合が無いため先行メモリアクセス要求のメモリアクセス処理が実行されても、対象メモリアクセス要求の対象データを格納するキャッシュメモリの領域のデータは更新されることはない。すなわち、対象メモリアクセス要求の対象データに関する領域のキャッシュメモリの状態が変更されることはない。したがって、ステータスとして「ＨＩＴ」が選択されたキャッシュメモリに格納されたデータを使用することが可能である。【００１４】
しかしながら、従来の情報処理装置では、全てのキャッシュメモリのステータスの中に「ＢＵＳＹ」と選択されたキャッシュメモリが１つでも存在すると最終ステータスは「ＢＵＳＹ」となり、実際には使用可能なデータが存在する場合でもスヌープ処理のリトライが発生してしまい、キャッシュメモリへのアクセス待ち時間が長くなり、結果的にメモリアクセス要求の処理時間が長くなってしまうという問題があった。【００１５】
本発明は、上述した従来技術による問題点を解消し、上記課題を解決するためになされたものであって、スヌープ処理のリトライ回数を削減してメモリアクセス要求の処理時間を短縮するスヌープ制御方法および情報処理装置を目的とする。
【課題を解決するための手段】
【００１６】
上述した課題を解決し、目的を達成するために、本発明は、キャッシュメモリを有する複数のＣＰＵと、共有メモリを構成する複数のメインメモリとをグループ分けし、グループ毎にＣＰＵとメインメモリとを管理し前記キャッシュメモリ間または前記キャッシュメモリとメインメモリとの間のデータ転送を制御するシステムコントローラを備える情報処理装置に適用されるスヌープ制御方法であって、前記システムコントローラは、自身が管理するＣＰＵからのメモリアクセス要求を受けて他のシステムコントローラに通知するメモリアクセス要求通知ステップと、自身が管理するＣＰＵからのメモリアクセス要求、または前記メモリアクセス要求通知ステップによって他のシステムコントローラからメモリアクセス要求を受けると、前記メモリアクセス要求の要求する対象データが前記メモリアクセス要求よりも先に受けた先行メモリアクセス要求の要求する対象データと競合するか否か、前記メモリアクセス要求の要求する対象データが自身が管理するキャッシュメモリ内に存在するか否か、前記メモリアクセス要求の要求する対象データを転送するための資源が枯渇しているか否かを自身が管理するＣＰＵ内のキャッシュメモリ毎に判定する判定ステップと、前記判定ステップによって、前記メモリアクセス要求の要求する対象データが前記先行メモリアクセス要求の要求する対象データと競合すると判定した場合には、当該キャッシュメモリのステータスとして「ＢＵＳＹ」を選択し、前記メモリアクセス要求の要求する対象データが前記先行メモリアクセス要求の要求する対象データと競合しておらず、前記メモリアクセス要求の要求する対象データが自身が管理するキャッシュメモリ内に存在し、かつ前記メモリアクセス要求の要求する対象データを転送するための資源が枯渇していないと判定した場合には、当該キャッシュメモリのステータスとして「ＨＩＴ」を選択し、前記メモリアクセス要求の要求する対象データが前記先行メモリアクセス要求の要求する対象データと競合しておらず、前記メモリアクセス要求の要求する対象データが自身が管理するキャッシュメモリ内に存在し、かつ前記メモリアクセス要求の要求する対象データを転送するための資源が枯渇いると判定した場合には、当該キャッシュメモリのステータスとして「ＨＩＴ＆ＢＵＳＹ」を選択し、前記メモリアクセス要求の要求する対象データが前記先行メモリアクセス要求の要求する対象データと競合しておらず、かつ前記メモリアクセス要求の要求する対象データが自身が管理するキャッシュメモリ内に存在しない場合には、当該キャッシュメモリのステータスとして「ＭＩＳＳ」を選択するステータス選択ステップと、前記ステータス選択ステップによって選択したステータスとキャッシュメモリとを対応付けたスヌープ処理結果を他のシステムコントローラに通知するスヌープ処理結果通知ステップと、前記スヌープ処理結果通知ステップによって通知されたスヌープ処理結果および自身のスヌープ処理結果に含まれるすべてのステータスの中に「ＢＵＳＹ」が存在する場合には最終ステータスを「ＢＵＳＹ」とし、すべてのステータスの中に「ＢＵＳＹ」が存在せず、かつ「ＨＩＴ」が存在する場合には最終ステータスを「ＨＩＴ」とし、すべてのステータスの中に「ＢＵＳＹ」および「ＨＩＴ」が存在せず、かつ「ＨＩＴ＆ＢＵＳＹ」が存在する場合には最終ステータスを「ＨＩＴ＆ＢＵＳＹ」とし、すべてのステータスが「ＭＩＳＳ」の場合には最終ステータスを「ＭＩＳＳ」とする最終ステータス決定ステップと、
前記最終ステータス選択ステップによって、最終ステータスが「ＢＵＳＹ」または「ＨＩＴ＆ＢＵＳＹ」と決定された場合には、前記判定ステップ、前記ステータス選択ステップ、前記スヌープ処理結果通知ステップ、および最終ステータス決定ステップを繰り返し、最終ステータスが「ＨＩＴ」と決定された場合には、最終ステータスが「ＨＩＴ」であるキャッシュメモリを有するＣＰＵと、メモリアクセス要求を発行したＣＰＵとの物理的な距離に基づいて１つのＣＰＵを選択し、選択したＣＰＵが自身が管理するＣＰＵの場合には選択したＣＰＵのキャッシュメモリへのメモリアクセス処理を起動してデータ転送を実行させ、前記最終ステータスが「ＭＩＳＳ」の場合には、前記メモリアクセス要求の対象データを有するメインメモリが自身が管理するメインメモリであるか否かを判定し、判定の結果自身が管理するメインメモリである場合当該メインメモリへのアクセス処理を起動してデータ転送を実行させるメモリアクセス処理起動ステップと、を備えることを特徴とする。【００１７】
また、本発明は、上記発明において、前記キャッシュメモリ間のデータ転送の単位であるキャッシュラインのバイト数よりも、前記メインメモリから前記キャッシュメモリへのデータ転送の単位であるエントリーのバイト数が大きい場合であって、かつ前記メモリアクセス要求が対象データの読み出しを要求するフェッチ要求の場合、前記判定ステップは、前記メモリアクセス要求の要求する対象データと、前記先行メモリアクセス要求の対象データとが同一エントリー内のデータであるか否かの判定をさらに含み、前記ステータス選択ステップは、前記メモリアクセス要求の要求する対象データが前記先行メモリアクセス要求の要求する対象データと競合しておらず、前記メモリアクセス要求の要求する対象データが自身が管理するキャッシュメモリ内に存在しておらず、かつメモリアクセス要求の要求する対象データが前記先行メモリアクセス要求の対象データと同一エントリー内のデータである場合には、当該キャッシュメモリのステータスとして「ＭＩＳＳ＆ＢＵＳＹ」を選択し、前記最終ステータス選択ステップは、「ＢＵＳＹ」、「ＨＩＴ」＆「ＨＩＴ＆ＢＵＳＹ」が存在せず、かつ「ＭＩＳＳ＆ＢＵＳＹ」が存在する場合には最終ステータスを「ＭＩＳＳ＆ＢＵＳＹ」とし、前記メモリアクセス処理起動ステップは、前記最終ステータスが「ＭＩＳＳ＆ＢＵＳＹ」の場合も、前記判定ステップ、前記ステータス選択ステップ、前記スヌープ処理結果通知ステップ、および最終ステータス決定ステップを繰り返すこと、を特徴とする。【００１８】
また、本発明は、キャッシュメモリを有する複数のＣＰＵと、共有メモリを構成する複数のメインメモリとをグループ分けし、グループ毎にＣＰＵとメインメモリとを管理し前記キャッシュメモリ間または前記キャッシュメモリとメインメモリとの間のデータ転送を制御するシステムコントローラを備える情報処理装置において、前記各システムコントローラは、自身が管理するＣＰＵからのメモリアクセス要求を受けて他のシステムコントローラに通知するブロードキャスト送受信部と、自身が管理するＣＰＵからのメモリアクセス要求、または前記メモリアクセス要求通知ステップによって他のシステムコントローラからメモリアクセス要求を受けると、前記メモリアクセス要求の要求する対象データが前記メモリアクセス要求よりも先に受けた先行メモリアクセス要求の要求する対象データと競合するか否か、前記メモリアクセス要求の要求する対象データが自身が管理するキャッシュメモリ内に存在するか否か、前記メモリアクセス要求の要求する対象データを転送するための資源が枯渇しているか否かを自身が管理するＣＰＵ内のキャッシュメモリ毎に判定し、前記メモリアクセス要求の要求する対象データが前記先行メモリアクセス要求の要求する対象データと競合すると判定した場合には、当該キャッシュメモリのステータスとして「ＢＵＳＹ」を選択し、前記メモリアクセス要求の要求する対象データが前記先行メモリアクセス要求の要求する対象データと競合しておらず、前記メモリアクセス要求の要求する対象データが自身が管理するキャッシュメモリ内に存在し、かつ前記メモリアクセス要求の要求する対象データを転送するための資源が枯渇していないと判定した場合には、当該キャッシュメモリのステータスとして「ＨＩＴ」を選択し、前記メモリアクセス要求の要求する対象データが前記先行メモリアクセス要求の要求する対象データと競合しておらず、前記メモリアクセス要求の要求する対象データが自身が管理するキャッシュメモリ内に存在し、かつ前記メモリアクセス要求の要求する対象データを転送するための資源が枯渇いると判定した場合には、当該キャッシュメモリのステータスとして「ＨＩＴ＆ＢＵＳＹ」を選択し、前記メモリアクセス要求の要求する対象データが前記先行メモリアクセス要求の要求する対象データと競合しておらず、かつ前記メモリアクセス要求の要求する対象データが自身が管理するキャッシュメモリ内に存在しない場合には、当該キャッシュメモリのステータスとして「ＭＩＳＳ」を選択し、選択したステータスとキャッシュメモリとを対応付けたスヌープ処理結果を他のシステムコントローラに通知するスヌープ処理を実行し、このスヌープ処理によって通知されたスヌープ処理結果および自身のスヌープ処理結果に含まれるすべてのステータスの中に「ＢＵＳＹ」が存在する場合には最終ステータスを「ＢＵＳＹ」とし、すべてのステータスの中に「ＢＵＳＹ」が存在せず、かつ「ＨＩＴ」が存在する場合には最終ステータスを「ＨＩＴ」とし、すべてのステータスの中に「ＢＵＳＹ」および「ＨＩＴ」が存在せず、かつ「ＨＩＴ＆ＢＵＳＹ」が存在する場合には最終ステータスを「ＨＩＴ＆ＢＵＳＹ」とし、すべてのステータスが「ＭＩＳＳ」の場合には最終ステータスを「ＭＩＳＳ」とし、最終ステータスが「ＢＵＳＹ」または「ＨＩＴ＆ＢＵＳＹ」と決定された場合には前記スヌープ処理をリトライし、最終ステータスが「ＨＩＴ」と決定された場合には、最終ステータスが「ＨＩＴ」であるキャッシュメモリを有するＣＰＵと、メモリアクセス要求を発行したＣＰＵとの物理的な距離に基づいて１つのＣＰＵを選択し、選択したＣＰＵが自身が管理するＣＰＵの場合には選択したＣＰＵのキャッシュメモリへのメモリアクセス処理を起動してデータ転送を実行させ、前記最終ステータスが「ＭＩＳＳ」の場合には、前記メモリアクセス要求の対象データを有するメインメモリが自身が管理するメインメモリであるか否かを判定し、判定の結果自身が管理するメインメモリである場合当該メインメモリへのアクセス処理を起動してデータ転送を実行させるスヌープ制御部と、を備えることを特徴とする。【００１９】
また、本発明は、上記発明において、前記キャッシュメモリ間のデータ転送の単位であるキャッシュラインのバイト数よりも、前記メインメモリから前記キャッシュメモリへのデータ転送の単位であるエントリーのバイト数が大きい場合であって、かつ前記メモリアクセス要求が対象データの読み出しを要求するフェッチ要求の場合、前記スヌープ制御部は、メモリアクセス要求の要求する対象データと、前記先行メモリアクセス要求の対象データとが同一エントリー内のデータであるか否かを判定し、前記メモリアクセス要求の要求する対象データが前記先行メモリアクセス要求の要求する対象データと競合しておらず、前記メモリアクセス要求の要求する対象データが自身が管理するキャッシュメモリ内に存在しておらず、かつ前記メモリアクセス要求の要求する対象データが前記先行メモリアクセス要求の対象データと同一エントリー内のデータである場合には、当該キャッシュメモリのステータスとして「ＭＩＳＳ＆ＢＵＳＹ」を選択し、「ＢＵＳＹ」、「ＨＩＴ」＆「ＨＩＴ＆ＢＵＳＹ」が存在せず、かつ「ＭＩＳＳ＆ＢＵＳＹ」が存在する場合には最終ステータスを「ＭＩＳＳ＆ＢＵＳＹ」として前記スヌープ処理をリトライすること、を特徴とする。
【発明の効果】
【００２０】
本発明によれば、スヌープ処理をリトライするステータスとして、対象メモリアクセス要求の要求する対象データが先行メモリアクセス要求の要求する対象データと競合しており、装置全体としてデータ転送が不可能な状態を示す「ＢＵＳＹ」と、対象メモリアクセス要求の要求する対象データが先行メモリアクセス要求の要求する対象データと競合しておらず、メモリアクセス要求の要求する対象データが自身が管理するキャッシュメモリ内に存在し、かつ前記メモリアクセス要求の要求する対象データを転送するための資源が枯渇している状態、すなわち自身が管理するキャッシュメモリからのデータ転送が不可能な状態を示す「ＨＩＴ＆ＢＵＳＹ」との２つのステータスを設け、最終ステータスを決定する「ＨＩＴ＆ＢＵＳＹ」の優先順位を、データ転送が可能であることを示す「ＨＩＴ」よりも低くしているため、任意のシステムコントローラでみた場合にはデータ転送が不可能であっても、他のシステムコントローラがデータ転送が可能な場合にはスヌープ処理をリトライすることなくデータ転送を実行することが可能となり、スヌープ処理のリトライ回数を削減してメモリアクセス要求の処理時間を短縮することができるスヌープ制御方法を得ることができるという効果を奏する。【００２１】
また、本発明によれば、キャッシュメモリ間のデータ転送の単位であるキャッシュラインのバイト数よりも、メインメモリからキャッシュメモリへのデータ転送の単位であるエントリーのバイト数が大きい場合であって、かつメモリアクセス要求が対象データの読み出しを要求するフェッチ要求の場合、スヌープ処理をリトライするステータスとして、メモリアクセス要求の要求する対象データが先行メモリアクセス要求の要求する対象データと競合しておらず、メモリアクセス要求の要求する対象データが自身が管理するキャッシュメモリ内に存在しておらず、かつメモリアクセス要求の要求する対象データが先行メモリアクセス要求の対象データと同一エントリー内のデータである状態、すなわち自身が管理するキャッシュメモリからのデータ転送が不可能な状態を示す「ＭＩＳＳ＆ＢＵＳＹ」のステータスをさらに設け、最終ステータスを決定する「ＭＩＳＩＩ＆ＢＵＳＹ」の優先順位を、データ転送が可能であることを示す「ＨＩＴ」よりも低くしているため、キャッシュメモリ間のデータ転送の単位であるキャッシュラインのバイト数よりも、メインメモリからキャッシュメモリへのデータ転送の単位であるエントリーのバイト数が大きい場合において、任意のシステムコントローラでみた場合にはデータ転送が不可能であっても、他のシステムコントローラがデータ転送が可能な場合にはスヌープ処理をリトライすることなくデータ転送を実行することが可能となり、スヌープ処理のリトライ回数を削減してメモリアクセス要求の処理時間を短縮することができるスヌープ制御方法を得ることができるという効果を奏する。【００２２】
本発明によれば、スヌープ処理をリトライするステータスとして、対象メモリアクセス要求の要求する対象データが先行メモリアクセス要求の要求する対象データと競合しており、装置全体としてデータ転送が不可能な状態を示す「ＢＵＳＹ」と、対象メモリアクセス要求の要求する対象データが先行メモリアクセス要求の要求する対象データと競合しておらず、メモリアクセス要求の要求する対象データが自身が管理するキャッシュメモリ内に存在し、かつ前記メモリアクセス要求の要求する対象データを転送するための資源が枯渇している状態、すなわち自身が管理するキャッシュメモリからのデータ転送が不可能な状態を示す「ＨＩＴ＆ＢＵＳＹ」との２つのステータスを設け、最終ステータスを決定する「ＨＩＴ＆ＢＵＳＹ」の優先順位を、データ転送が可能であることを示す「ＨＩＴ」よりも低くしているため、任意のシステムコントローラでみた場合にはデータ転送が不可能であっても、他のシステムコントローラがデータ転送が可能な場合にはスヌープ処理をリトライすることなくデータ転送を実行することが可能となり、スヌープ処理のリトライ回数を削減してメモリアクセス要求の処理時間を短縮することができる情報処理装置を得ることができるという効果を奏する。【００２３】
また、本発明によれば、キャッシュメモリ間のデータ転送の単位であるキャッシュラインのバイト数よりも、メインメモリからキャッシュメモリへのデータ転送の単位であるエントリーのバイト数が大きい場であって、かつメモリアクセス要求が対象データの読み出しを要求するフェッチ要求の場合、スヌープ処理をリトライするステータスとして、メモリアクセス要求の要求する対象データが先行メモリアクセス要求の要求する対象データと競合しておらず、メモリアクセス要求の要求する対象データが自身が管理するキャッシュメモリ内に存在しておらず、かつメモリアクセス要求の要求する対象データが先行メモリアクセス要求の対象データと同一エントリー内のデータである状態、すなわち自身が管理するキャッシュメモリからのデータ転送が不可能な状態を示す「ＭＩＳＳ＆ＢＵＳＹ」のステータスをさらに設け、最終ステータスを決定する「ＭＩＳＩＩ＆ＢＵＳＹ」の優先順位を、データ転送が可能であることを示す「ＨＩＴ」よりも低くしているため、キャッシュメモリ間のデータ転送の単位であるキャッシュラインのバイト数よりも、メインメモリからキャッシュメモリへのデータ転送の単位であるエントリーのバイト数が大きい場合において、任意のシステムコントローラでみた場合にはデータ転送が不可能であっても、他のシステムコントローラがデータ転送が可能な場合にはスヌープ処理をリトライすることなくデータ転送を実行することが可能となり、スヌープ処理のリトライ回数を削減してメモリアクセス要求の処理時間を短縮することができる情報処理装置を得ることができるという効果を奏する。
【図面の簡単な説明】
【００２４】
【図１】図１は、この発明における情報処理装置の構成を示す図である。
【図２】図２は、図１に示したシステムコントローラの構成を示すブロック図である。
【図３】図３は、図２に示したキャッシュ管理テーブルの構成の一例を示す図である。
【図４】図４は、図２に示したスヌープ制御部が選択するステータスの種類と選択条件を示す図である。
【図５】図５は、最終ステータスおよびメモリアクセス要求の種類によって起動されるメモリアクセス処理の動作を説明するための図である。
【図６】図６は、この発明における情報処理装置の動作を説明するためのシーケンス図である。
【図７】図７は、この発明における情報処理装置のスヌープ処理の動作を説明するためのフローチャートである。
【符号の説明】
【００２５】
１ａ，１ｂ，１ｃ，１ｄ  ＣＰＵ
２ａ，２ｂ，２ｃ，２ｄ  ＩＯ装置
３ａ，３ｂ，３ｃ，３ｄ  メインメモリ
４ａ，４ｃ  メモリアクセス要求受信部
５ａ，５ｃ  ブロードキャスト送受信部
６ａ，６ｃ  スヌープ制御部
７ａ，７ｃ  ＣＰＵリクエスト発行部
８ａ，８ｃ  ＭＳアクセス発行部
９ａ，９ｃ  キャッシュ管理テーブル
１１ａ，１１ｂ，１１ｃ，１１ｄ  キャッシュメモリ
ＳＢ０，ＳＢ１  システムボード
ＳＣ０，ＳＣ１  システムコントローラ
【発明を実施するための最良の形態】
【００２６】
以下に、本発明におけるスヌープ制御方法および情報処理装置の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
【実施例】
【００２７】
図１〜図７を用いてこの発明における情報処理装置の実施例を説明する。図１は、この発明における情報処理装置の構成を示す図である。図１において、情報処理装置は、バスによって接続される複数（この場合は２つ）のシステムボードＳＢ０，ＳＢ１を備えている。【００２８】
システムボードＳＢ０は、キャッシュメモリ１１ａ，１１ｂを有するＣＰＵ１ａ，１ｂと、入出力装置（以下、ＩＯ装置とする）２ａ，２ｂと、メインメモリ３ａ，３ｂと、システムコントローラＳＣ０とを備えている。また、システムボードＳＢ１は、キャッシュメモリ１１ｃ，１１ｄを有するＣＰＵ１ｃ，１ｄと、ＩＯ装置２ｃ，２ｄと、メインメモリ３ｃ，３ｄと、システムコントローラＳＣ１とを備えている。【００２９】
メインメモリ３（３ａ〜３ｄを示す）は、キャッシュメモリ１１（１１ａ〜１１ｄを示す）よりも記憶容量が大きくて、かつキャッシュメモリ１１よりもアクセス速度が遅いメモリデバイスで構成され、情報処理装置の共有メモリとして用いられ、ＣＰＵ１（１ａ〜１ｄを示す）が実行するプログラムを含むデータを格納する。【００３０】
キャッシュメモリ１１は、メインメモリ３よりも記憶容量が小さくて、かつメインメモリ３よりもアクセス速度が速いメモリデバイスで構成され、ＣＰＵ１が発行するメモリアクセス要求によって実行されるキャッシュメモリ１１間、またはキャッシュメモリ１１とメインメモリ３間のデータ転送によりメインメモリ３が格納するデータの一部を格納する。【００３１】
システムコントローラＳＣ（ＳＣ０，ＳＣ１を示す）は、自身が搭載されるシステムボードＳＢ（ＳＢ０，ＳＢ１を示す）に搭載されるＣＰＵ１、ＩＯ装置２、およびメインメモリ３を管理する。図１においては、システムコントローラＳＣ０は、ＣＰＵ１ａ，１ｂ、ＩＯ装置２ａ，２ｂ、およびメインメモリ３ａ，３ｂを管理し、システムコントローラＳＣ１は、ＣＰＵ１ｃ，１ｄ、ＩＯ装置２ｃ，２ｄ、およびメインメモリ３ｃ，３ｄを管理する。【００３２】
また、システムコントローラＳＣは、たとえば、ＭＥＳＩプロトコルやＭＯＥＳＩプロトコルなどの予め定められたキャッシュプロトコルに基づいてＣＰＵ１内のキャッシュメモリ１１の状態を管理し、ＣＰＵ１またはＩＯ装置２からのメモリアクセス要求によりキャッシュメモリ１１間のコヒーレンスを保ちつつ、キャッシュメモリ１１間およびキャッシュメモリ１１とメインメモリ３との間のデータ転送を制御する。【００３３】
図２は、ＣＰＵ１またはＩＯ装置２からのメモリアクセス要求に対するデータ転送におけるメモリアクセス処理の起動に関するシステムコントローラＳＣの構成を示すブロック図である。図２において、システムコントローラＳＣ０は、メモリアクセス要求受信部４ａと、ブロードキャスト送受信部５ａと、スヌープ制御部６ａと、ＣＰＵリクエスト発行部７ａと、ＭＳアクセス発行部８ａと、キャッシュ管理テーブル９ａとを備えている。また、システムコントローラＳＣ１は、メモリアクセス要求受信部４ｃと、ブロードキャスト送受信部５ｃと、スヌープ制御部６ｃと、ＣＰＵリクエスト発行部７ｃと、ＭＳアクセス発行部８ｃと、キャッシュ管理テーブル９ｃとを備えている。【００３４】
キャッシュ管理テーブル９（９ａ，９ｃを示す）には、自身が搭載されるシステムコントローラＳＣが管理するＣＰＵ１が有するキャッシュメモリ１１の状態が登録され、メモリアクセス要求によって要求されたデータがキャッシュメモリ１１に存在しているか否かの判定に用いられる。【００３５】
キャッシュメモリ１１間のデータ転送、およびキャッシュメモリ１１からメインメモリ３へのデータ転送はキャッシュライン単位で実行され、メインメモリ３からキャッシュメモリ１１へのデータ転送はエントリー単位で実行される。エントリーのバイト数とキャッシュラインのバイト数は、「エントリーのバイト数＝キャッシュラインのバイト数×ｎ（ｎは自然数）」が成り立つように予め定められている。よって、キャッシュメモリ１１の状態はキャッシュライン毎に管理する。【００３６】
図３は、キャッシュ管理テーブル９ａの構成の一例を示す図である。図３において、キャッシュ管理テーブル９ａには、キャッシュメモリ１１ａ，１１ｂのキャッシュラインを識別するためのキャッシュライン識別子が登録されるサブブロック情報に対応付けて、当該キャッシュラインが格納するデータとメインメモリ３のデータとの対応付けを示すメインメモリ情報、および当該キャッシュラインが格納するデータの状態（有効／無効）を示すキャッシュライン状態情報が登録される。【００３７】
図３に示したキャッシュ管理テーブル９ａは、キャッシュプロトコルとしてＭＥＳＩプロトコルを用いた場合であり、キャッシュライン状態としては、キャッシュラインに有効な状態が格納されていないことを示す「無効」と、キャッシュラインが格納するデータが更新されており、当該データのコピーが他のキャッシュメモリ１１のキャッシュラインおよびメインメモリ３に存在しない状態を示す「更新・排他」と、キャッシュラインが格納するデータが未変更であって、かつ当該データのコピーが他のキャッシュメモリ１１のキャッシュラインに存在しない状態を示す「未更新・排他」と、キャッシュラインが格納するデータが未変更であって、かつ当該データのコピーが他のキャッシュメモリ１１のキャッシュラインに存在することを示す「未変更・共有」の４つの状態を有している。この場合は、「無効」がキャッシュラインが格納するデータが「無効」であることを意味し、「更新・排他」、「未更新・排他」、および「未更新・共有」がキャッシュラインが格納するデータが「有効」であることを意味している。【００３８】
図２に戻って、メモリアクセス要求受信部４（４ａ，４ｃを示す）は、自身が搭載されるシステムコントローラＳＣが管理するＣＰＵ１およびＩＯ装置２が発行するメモリアクセス要求を受信する。メモリアクセス要求受信部４は、受信したメモリアクセス要求をブロードキャスト送受信部５に出力する。【００３９】
ブロードキャスト送受信部５（５ａ，５ｃを示す）は、システムコントローラＳＣ間の通信インタフェースを有し、メモリアクセス要求受信部４から入力されるメモリアクセス要求をスヌープ制御部６（６ａ，６ｃを示す）に出力するとともに、全てのシステムコントローラＳＣに送信する。また、他のシステムコントローラＳＣからのメモリアクセス要求を受信してスヌープ制御部６に出力する。すなわち、ブロードキャスト送受信部５は、自身が搭載されるシステムコントローラＳＣが管理するＣＰＵ１およびＩＯ装置２が発行したメモリアクセス要求を全てのシステムコントローラＳＣ内のスヌープ制御部６にブロードキャストする。【００４０】
スヌープ制御部６は、メモリアクセス要求を受けると、自身が搭載されるシステムコントローラＳＣが管理するＣＰＵ１内のキャッシュメモリ１１のキャッシュラインの状態（メモリアクセス要求によって要求されるデータがキャッシュメモリ１１のキャッシュラインに存在するか否か）およびデータ転送に用いる資源（キャッシュメモリに対するチップセレクト信号やリードライト制御信号などの制御バス、アドレスバス、データバス）の状態を検出してメモリアクセス要求によって要求されたデータ（対象データ）に対するキャッシュメモリ１１毎のステータスを選択するスヌープ処理を実行する。【００４１】
また、スヌープ制御部６は、スヌープ処理によって選択したキャッシュメモリ１１毎のステータスをスヌープ処理結果として他のスヌープ制御部６に通知し、装置内すべてのキャッシュメモリ１１のステータスをマージして最終ステータスを決定し、決定したステータスに基づいてキャッシュメモリ１１間、またはキャッシュメモリ１１とメインメモリ３との間のメモリ間データ転送のためのメモリアクセス処理を起動するメモリアクセス起動処理を実行する。【００４２】
図４は、スヌープ制御部６がスヌープ処理によって選択するステータスの種類と選択条件を示す図である。本発明においては、「ＢＵＳＹ」、「ＨＩＴ」、「ＨＩＴ＆ＢＵＳＹ」、「ＭＩＳＳ＆ＢＵＳＹ」、「ＭＩＳＳ」の５種類のステータスを定義する。【００４３】
「ＢＵＳＹ」は、現時点でキャッシュメモリ１１に対象メモリアクセス要求の対象データが存在するかを特定することができないことを示すステータスである。対象メモリアクセス要求の対象データと、メモリアクセス起動処理およびメモリアクセス処理の対象となっているメモリアクセス要求、すなわち対象メモリアクセス要求よりも前に発行され、メモリアクセス起動処理やメモリアクセス処理の対象となっているメモリアクセス要求（先行メモリアクセス要求）の対象データとが競合している場合（対象メモリアクセス要求の対象データと先行メモリアクセス要求の対象データとが同一のキャッシュラインに存在する場合）、先行メモリアクセス要求のメモリアクセス処理によってキャッシュメモリ１１のキャッシュラインの状態は変化する。そのため、現時点では対象メモリアクセス要求の対象データがどのキャッシュメモリ１１に存在するかを特定することができない。したがって、対象メモリアクセス要求の対象データと先行メモリアクセス要求の対象データとが競合していることが「ＢＵＳＹ」の選択条件となる。【００４４】
「ＨＩＴ」は、キャッシュメモリ１１に対象メモリアクセス要求の対象データとして使用可能なデータが存在することを示すステータスである。対象メモリアクセス要求の対象データと先行メモリアクセス要求の対象データとが競合していない（「ＢＵＳＹ」ではない）場合であって、対象メモリアクセス要求の対象データがキャッシュメモリ１１のサブブロックに存在しており、かつデータ転送のための資源が枯渇していなければ、キャッシュメモリ１１のデータを転送することができる。したがって、対象メモリアクセス要求の対象データと先行メモリアクセス要求の対象データとが競合していないこと、メモリアクセス要求の対象データがキャッシュメモリ１１に存在していること、およびデータ転送のための資源が枯渇していないことが「ＨＩＴ」の選択条件となる。なお、データ転送のための資源の枯渇とは、先行メモリアクセス要求のメモリアクセス処理によってキャッシュメモリ１１にアクセスしており、対象メモリアクセス要求の対象データへのアクセスができない状態のことである。【００４５】
「ＨＩＴ＆ＢＵＳＹ」は、対象メモリアクセス要求の対象データがキャッシュメモリ１１に存在するが、そのデータを転送することができないことを示すステータスである。対象メモリアクセス要求の対象データと先行メモリアクセス要求の対象データとが競合していない（「ＢＵＳＹ」ではない）場合であって、かつ対象メモリアクセス要求の対象データがキャッシュメモリ１１に存在している場合でも、データ転送のための資源が枯渇しているとデータを転送することはできない。したがって、対象メモリアクセス要求の対象データと先行メモリアクセス要求の対象データとが競合していないこと、メモリアクセス要求の対象データがキャッシュメモリ１１に存在していること、およびデータ転送のための資源が枯渇していることが「ＨＩＴ＆ＢＵＳＹ」の選択条件となる。【００４６】
「ＭＩＳＳ＆ＢＵＳＹ」は、現時点では対象メモリアクセス要求の対象データがキャッシュメモリ１１に存在していないが先行メモリアクセス要求のメモリアクセス処理によってキャッシュメモリ１１の状態が変更され対象メモリアクセス要求の対象データが存在する可能性があることを示すステータスである。【００４７】
先行メモリアクセス要求が対象データを参照する共有型フェッチ要求、または対象データを更新することを前提とした排他型フェッチ要求であって、かつ先行メモリアクセス要求に対する最終ステータスが決定していない場合、キャッシュメモリ１１間のデータ転送が行われるのか、メインメモリ３からキャッシュメモリ１１へのデータ転送が行われるのかを判断することはできない。【００４８】
上述したように、キャッシュメモリ１１間のデータ転送はキャッシュライン単位で実行され、メインメモリ３からキャッシュメモリ１１へのデータ転送はエントリー単位で実行され、「エントリーのバイト数＝キャッシュラインのバイト数×ｎ」が成り立つように定められている。ｎ＝１の場合はエントリーのバイト数とキャッシュラインのバイト数とが同一バイト数であるので、キャッシュメモリ１１間のデータ転送が行われても、メインメモリ３からキャッシュメモリ１１へのデータ転送が行われても、キャッシュメモリ１１内の１つのキャッシュラインの状態が変更されるだけである。【００４９】
しかし、ｎ≠１の場合はエントリーのバイト数の方がキャッシュラインのバイト数よりも大きくなる。たとえば、ｎ＝４の場合、先行メモリアクセス要求によってメインメモリ３からキャッシュメモリ１１へのデータ転送が行われると、メインメモリ３から４つのキャッシュラインへデータが転送される。そのため、その１つのキャッシュラインに対象メモリアクセス要求の対象データが存在する可能性がある。すなわち、対象メモリアクセス要求の対象データが先行メモリアクセス要求の対象データと同一エントリーに存在している場合、データが競合する可能性がある。【００５０】
「ＭＩＳＳ＆ＢＵＳＹ」はエントリーのバイト数の方がキャッシュラインのバイト数よりも大きく設定されている場合のみ存在するステータスであり、対象メモリアクセス要求の対象データと先行メモリアクセス要求の対象データとが競合していないこと、メモリアクセス要求の対象データがキャッシュメモリ１１に存在していないこと、および先行メモリアクセス要求の最終ステータスによって対象メモリアクセス要求の対象データがキャッシュメモリに存在する可能性があることが「ＭＩＳＳ＆ＢＵＳＹ」の選択条件となる。【００５１】
「ＭＩＳＳ」は、メインメモリ３からデータを転送する必要があることを示すステータスである。すなわち、対象メモリアクセス要求の対象データと先行メモリアクセス要求の対象データとが競合していない（「ＢＵＳＹ」ではない）場合であって、現時点でキャッシュメモリ１１に先行メモリアクセス要求の対象データが存在していない場合である。したがって、対象メモリアクセス要求の対象データと先行メモリアクセス要求の対象データとが競合していないこと、キャッシュメモリ１１にメモリアクセス要求の対象データが存在していないこと、および先行メモリアクセス要求の最終ステータスによって対象メモリアクセス要求の対象データがキャッシュメモリに存在する可能性がないことが、「ＭＩＳＳ」の選択条件となる。【００５２】
スヌープ制御部６は、自身が搭載されるシステムコントローラＳＣが管理するＣＰＵ１内のキャッシュメモリ１１毎に「ＢＵＳＹ」、「ＨＩＴ」、「ＨＩＴ＆ＢＵＳＹ」、「ＭＩＳＳ＆ＢＵＳＹ」、および「ＭＩＳＳ」の５つのステータスのいずれかを選択するスヌープ処理が終了すると、選択したキャッシュメモリ１１毎のステータスをスヌープ処理結果として他のスヌープ処理部に通知する。そして、自身および他のスヌープ制御部６から得られた装置内すべてのキャッシュメモリ１１のステータスをマージして最終ステータスを決定する。【００５３】
ここで、ステータスの優先順位は、「ＢＵＳＹ」の優先順位が最も高く、「ＨＩＴ」は「ＢＵＳＹ」のつぎに優先順位が高く、「ＨＩＴ＆ＢＵＳＹ」は「ＨＩＴ」のつぎに優先順位が高く、「ＭＩＳＳ＆ＢＵＳＹ」は「ＨＩＴ＆ＢＵＳＹ」のつぎに優先順位が高く、「ＭＩＳＳ」の優先順位は最も低く設定する。したがって、キャッシュメモリ１１のステータスに「ＢＵＳＹ」が存在する場合には最終ステータスは「ＢＵＳＹ」となり、キャッシュメモリ１１のステータスに「ＢＵＳＹ」存在せず「ＨＩＴ」が存在する場合には最終ステータスは「ＨＩＴ」となり、キャッシュメモリ１１のステータスに「ＢＵＳＹ」および「ＨＩＴ」が存在せずに「ＨＩＴ＆ＢＵＳＹ」が存在する場合には最終ステータスは「ＨＩＴ＆ＢＵＳＹ」となり、キャッシュメモリ１１のステータスに「ＢＵＳＹ」、「ＨＩＴ」、および「ＨＩＴ＆ＢＵＳＹ」が存在せずに「ＭＩＳＳ＆ＢＵＳＹ」が存在する場合には最終ステータスは「ＭＩＳＳ＆ＢＵＳＹ」となり、キャッシュメモリ１１のステータスがすべて「ＭＩＳＳ」の場合には最終ステータスは「ＭＩＳＳ」となる。【００５４】
スヌープ制御部６は、決定した最終ステータス、およびメモリアクセス要求に基づいてメモリアクセス処理を起動するメモリアクセス起動処理を実行する。具体的には、図５に示すように、最終ステータスが「ＢＵＳＹ」、「ＨＩＴ＆ＢＵＳＹ」、または「ＭＩＳＳ＆ＢＵＳＹ」の場合、スヌープ制御部６は、メモリアクセス要求の種類に依存することなくスヌープ処理をリトライする。【００５５】
最終ステータスが「ＨＩＴ」であって、かつメモリアクセス要求が共有型フェッチ要求の場合、スヌープ制御部６は、ステータスが「ＨＩＴ」であるキャッシュメモリ１１の１つに対してデータ転送を要求するメモリアクセス処理を起動する。【００５６】
詳細には、スヌープ制御部６は、データを要求しているＣＰＵ１が有するキャッシュメモリ１１と、ステータスが「ＨＩＴ」となっているキャッシュメモリ１１を有するＣＰＵ１との物理的な距離が最も近いＣＰＵ１を選択する。選択したＣＰＵ１が自身を搭載するシステムコントローラＳＣが管理するＣＰＵ１の場合、スヌープ制御部６はキャッシュメモリ１１に対してデータ転送を要求するメモリアクセス処理を起動する。【００５７】
最終ステータスが「ＨＩＴ」であって、かつメモリアクセス要求が排他型フェッチ要求の場合、スヌープ制御部６は、ステータスが「ＨＩＴ」であるキャッシュメモリ１１の１つに対してデータ転送を要求するとともに、他のステータスが「ＨＩＴ」であるキャッシュメモリ１１を無効にするメモリアクセス処理を起動する。【００５８】
詳細には、スヌープ制御部６は、データを要求しているＣＰＵ１（転送先）と、ステータスが「ＨＩＴ」となっているキャッシュメモリ１１を有するＣＰＵ１（転送元）との物理的な距離が最も近いＣＰＵ１を選択する。選択したＣＰＵ１が自身を搭載するシステムコントローラＳＣが管理するＣＰＵ１の場合、スヌープ制御部６は、キャッシュメモリ１１に対して対象データを格納するキャッシュラインのデータ転送を要求するとともに、対象データを格納する他のキャッシュメモリ１１のキャッシュラインに対応付けてキャッシュ管理テーブル９に登録されているキャッシュライン状態情報を「無効」にするメモリアクセス処理を起動する。選択したＣＰＵ１が自身を搭載するシステムコントローラＳＣが管理するＣＰＵ１ではない場合、スヌープ制御部６は、対象データを格納するキャッシュメモリ１１のキャッシュラインに対応付けてキャッシュ管理テーブル９に登録されているキャッシュライン状態情報を「無効」にするメモリアクセス処理を起動する。【００５９】
最終ステータスが「ＨＩＴ」であって、かつメモリアクセス要求がストア要求の場合、スヌープ制御部６は、ステータスが「ＨＩＴ」となっているキャッシュメモリ１１を無効にし、メインメモリ３に対象データをストアするメモリアクセス処理を起動する。【００６０】
詳細には、スヌープ制御部６は、ストア要求に含まれるアドレスおよびメインメモリ３に割当てられているアドレス空間に基づいて、ストア要求の対象データをストアするメインメモリ３が、自身を搭載するシステムコントローラＳＣが管理するメインメモリ３であるか否かを判定する。ストア要求の対象データをストアするメインメモリ３が、自身を搭載するシステムコントローラＳＣが管理するメインメモリ３である場合、スヌープ制御部６は、ストア要求に含まれる対象データをメインメモリ３にストアするとともに、ストア要求に含まれるアドレスのデータを格納しているキャッシュメモリ１１のキャッシュラインに対応付けて登録されているキャッシュライン情報を「無効」にするメモリアクセス処理を起動する。ストア要求の対象データをストアするメインメモリ３が、自身を搭載するシステムコントローラＳＣが管理するメインメモリ３ではない場合、スヌープ制御部６は、ストア要求に含まれるアドレスのデータを格納しているキャッシュメモリ１１のキャッシュラインに対応付けてキャッシュ管理テーブル９に登録されているキャッシュライン情報を「無効」にするメモリアクセス処理を起動する。【００６１】
最終ステータスが「ＭＩＳＳ」であって、かつメモリアクセス要求が共有型フェッチ要求または排他型フェッチ要求の場合、スヌープ制御部６は、メインメモリから対象データをリードするメモリアクセス処理を起動する。【００６２】
詳細には、スヌープ制御部６は、共有型フェッチ要求または排他型フェッチ要求に含まれるアドレスおよびメインメモリ３に割当てられているアドレス空間に基づいて、共有型フェッチ要求または排他型フェッチ要求の対象データを格納するメインメモリ３が、自身を搭載するシステムコントローラＳＣが管理するメインメモリ３であるか否かを判定する。共有型フェッチ要求または排他型フェッチ要求の対象データを格納するメインメモリ３が、自身を搭載するシステムコントローラＳＣが管理するメインメモリ３である場合、スヌープ制御部６は、メインメモリ３に対してデータ転送を要求するメモリアクセス処理を起動する。【００６３】
最終ステータスが「ＭＩＳＳ」であって、かつメモリアクセス要求がストア要求の場合、スヌープ制御部６は、メインメモリ３に対象データをストアするメモリアクセス処理を起動する。【００６４】
詳細には、スヌープ制御部６は、ストア要求に含まれるアドレスおよびメインメモリ３に割当てられているアドレス空間に基づいて、ストア要求の対象データをストアするメインメモリ３が、自身を搭載するシステムコントローラＳＣが管理するメインメモリ３であるか否かを判定する。ストア要求の対象データをストアするメインメモリ３が、自身を搭載するシステムコントローラＳＣが管理するメインメモリ３である場合、スヌープ制御部６は、ストア要求に含まれる対象データをメインメモリ３にストアするメモリアクセス処理を起動する。【００６５】
ＣＰＵリクエスト発行部７は、スヌープ制御部６によって起動されるメモリアクセス処理によってＣＰＵ１内のキャッシュメモリ１１のアクセス制御を行う。ＭＳアクセス発行部８は、スヌープ制御部６によって起動されるメモリアクセス処理によってメインメモリのアクセス制御を行う。【００６６】
つぎに、図６のシーケンス図、図７のフローチャート、および図１〜図５を参照して、ＣＰＵ１ａがメモリアクセス要求として排他型フェッチ要求を発行した場合を例に挙げて、この発明における情報処理装置の動作を説明する。【００６７】
ＣＰＵ１ａが発行した排他型フェッチ要求（ＦＣＨ要求）を受信すると、システムコントローラＳＣ０のメモリアクセス要求受信部４ａは、受信した排他型フェッチ要求をブロードキャスト送受信部５ａに出力する。ブロードキャスト送受信部５ａは、排他型フェッチ要求をスヌープ制御部６ａに出力するとともに、システムコントローラＳＣ１に送信する。【００６８】
システムコントローラＳＣ０のスヌープ制御部６ａは、ＣＰＵ１ａ，１ｂが有するキャッシュメモリ１１ａ，１１ｂのキャッシュラインの状態およびデータ転送に用いる資源の状態を検出して、キャッシュメモリ１１ａ，１１ｂのステータスを選択するスヌープ処理を実行する。【００６９】
ここで、図７のフローチャートを参照して、スヌープ処理の詳細な動作を説明する。スヌープ制御部６ａは、予め定められた順番にしたがってキャッシュメモリ１１ａ，１１ｂから処理の対象とする処理対象キャッシュメモリを選択する（ステップＳ１００）。ここで、スヌープ制御部６ａは、キャッシュメモリ１１ａを処理対象キャッシュメモリとして選択したとする。【００７０】
スヌープ制御部６ａは、ブロードキャスト送受信部５ａから入力されたメモリアクセス要求（ここでは、排他型フェッチメモリ要求）を対象メモリアクセス要求とし、対象メモリアクセス要求とキャッシュメモリ１１ａに対する先行メモリアクセス要求とに基づいて対象メモリアクセス要求の対象データに対する競合があるか否かを判定する（ステップＳ１０１）。【００７１】
具体的には、スヌープ制御部６ａは、対象メモリアクセス要求に含まれるアドレスが示すデータと、先行メモリアクセス要求に含まれるアドレスが示すデータとが、同一のキャッシュライン内に格納されるデータであるか否かによって対象データに対する競合があるか否かを判定する。対象メモリアクセス要求に含まれるアドレスが示すデータと、先行メモリアクセス要求に含まれるアドレスが示すデータとが、同一のキャッシュライン内に格納されるデータである場合には、スヌープ制御部６ａは、対象メモリアクセス要求の対象データと先行メモリアクセス要求の対象データとが競合していると判定する。対象メモリアクセス要求に含まれるアドレスが示すデータと、先行メモリアクセス要求に含まれるアドレスが示すデータとが、同一のキャッシュライン内に格納されるデータではない場合には、スヌープ制御部６ａは、対象メモリアクセス要求の対象データと先行メモリアクセス要求の対象データとが競合していないと判定する。【００７２】
対象メモリアクセス要求とキャッシュメモリ１１ａに対する先行メモリアクセス要求とに基づいて対象メモリアクセス要求の対象データに対する競合がある場合（ステップＳ１０１，Ｙｅｓ）、スヌープ制御部６ａは、キャッシュメモリ１１ａのステータスとして「ＢＵＳＹ」を選択する（ステップＳ１０２）。【００７３】
対象メモリアクセス要求の対象データに対する競合がない場合（ステップＳ１０１，Ｎｏ）、スヌープ制御部６ａは、対象メモリアクセス要求に含まれるアドレスおよびキャッシュ管理テーブル９ａに基づいて、キャッシュメモリ１１ａ内に対象メモリアクセス要求の対象データが存在するか否かを判定する（ステップＳ１０３）。【００７４】
具体的には、たとえば、スヌープ制御部６ａは、キャッシュメモリ１１ａのキャッシュライン情報に対応付けてキャッシュ管理テーブル９ａのメインメモリ情報に登録されているメインメモリ３の先頭アドレスとキャッシュラインのバイト数から当該キャッシュラインが格納するメインメモリ３のアドレス空間を算出し、算出したアドレス空間内に対象メモリアクセス要求に含まれるアドレスが含まれるキャッシュラインを検出する。スヌープ制御部６ａは、検出したキャッシュラインに対応付けてキャッシュ管理テーブル９ａのキャッシュライン情報が「有効」である場合にはキャッシュメモリ１１ａに対象メモリアクセス要求が要求する対象データが存在すると判定し、検出したキャッシュラインに対応付けてキャッシュ管理テーブル９ａのキャッシュライン情報が「有効」である場合、または算出したアドレス空間内に対象メモリアクセス要求に含まれるアドレスが含まれるキャッシュラインを検索できなかった場合には、キャッシュメモリ１１ａに対象メモリアクセス要求が要求する対象データが存在しないと判定する。【００７５】
キャッシュメモリ１１ａ内に対象メモリアクセス要求の対象データが存在する場合（ステップＳ１０３，Ｙｓｅ）、スヌープ制御部６ａは、キャッシュメモリ１１ａのチップセレクト信号やリードライト制御信号などの制御バス、アドレスバス、およびデータバスの状態に基づいてデータ転送に用いる資源が枯渇しているか否かを判定する（ステップＳ１０４）。具体的には、たとえば、スヌープ制御部６ａは、キャッシュメモリ１１ａのチップセレクト信号がアサートである場合には、データ転送のための資源が枯渇していると判定し、キャッシュメモリ１１のチップセレクト信号がネゲートである場合には、データ転送のための資源が枯渇していないと判定する。【００７６】
データ転送に用いる資源が枯渇している場合（ステップＳ１０４，Ｙｅｓ）、スヌープ制御部６ａは、キャッシュメモリ１１ａのステータスとして「ＨＩＴ＆ＢＵＳＹ」を選択する（ステップＳ１０５）。データ転送に用いる資源が枯渇していない場合（ステップＳ１０４，Ｎｏ）、スヌープ制御部６ａは、キャッシュメモリ１１ａのステータスとして「ＨＩＴ」を選択する（ステップＳ１０６）。【００７７】
一方、キャッシュメモリ１１ａ内に対象メモリアクセス要求の対象データが存在しない場合（ステップＳ１０３，Ｎｏ）、スヌープ制御部６ａは、先行メモリアクセス要求の最終ステータスによって対象メモリアクセス要求の対象データと競合する可能性があるか否かを判定する（ステップＳ１０７）。具体的には、対象メモリアクセス要求に含まれるアドレスが最終ステータスが決定していない先行メモリアクセス要求に含まれるアドレスのエントリー内に存在するか否か、すなわち先行メモリアクセス要求の対象データと対象メモリアクセス要求の対象データとが同一エントリーのデータであるか否かを判定する。スヌープ制御部６ａは、対象メモリアクセス要求に含まれるアドレスが最終ステータスが決定していない先行メモリアクセス要求に含まれるアドレスのエントリー内に存在する場合には、先行メモリアクセス要求の最終ステータスによって対象メモリアクセス要求の対象データと競合する可能性があると判定し、対象メモリアクセス要求に含まれるアドレスが最終ステータスが決定していない先行メモリアクセス要求に含まれるアドレスのエントリー内に存在しない場合には、先行メモリアクセス要求の最終ステータスによって対象メモリアクセス要求の対象データと競合する可能性がないと判定する。【００７８】
先行メモリアクセス要求の最終ステータスによって対象メモリアクセス要求の対象データと競合する可能性がある場合（ステップＳ１０７，Ｙｅｓ）、スヌープ制御部６ａは、キャッシュメモリ１１ａのステータスとして「ＭＩＳＳ＆ＢＵＳＹ」を選択する（ステップＳ１０８）。先行メモリアクセス要求の最終ステータスによって対象メモリアクセス要求の対象データと競合する可能性がない場合（ステップＳ１０７，Ｎｏ）、スヌープ制御部６ａは、キャッシュメモリ１１ａのステータスとして「ＭＩＳＳ」を選択する（ステップＳ１０９）。【００７９】
処理対象キャッシュメモリ（この場合は、キャッシュメモリ１１ａ）のステータスを選択した後、スヌープ制御部６ａは、未処理のキャッシュメモリがあるか否かを判定し（ステップＳ１１０）、未処理のキャッシュメモリがある場合には未処理のキャッシュメモリ（この場合は、キャッシュメモリ１１ｂ）を処理対象キャッシュメモリとして選択し、未処理のキャッシュメモリがなくなるまで処理対象キャッシュメモリに対してステータスを選択する判定を繰り返す（ステップＳ１００〜Ｓ１１０）。【００８０】
上述したスヌープ処理を実行した後、スヌープ制御部６ａは、キャッシュメモリ１１ａ，１１ｂを識別するためのキャッシュメモリ識別子と当該キャッシュメモリ識別子が示すキャッシュメモリ１１ａ，１１ｂのステータスとを含むスヌープ処理結果をスヌープ制御部６ｃに通知する。【００８１】
一方、システムコントローラＳＣ０のメモリアクセス要求受信部４ａから送信された排他型フェッチ要求を受信すると、システムコントローラＳＣ１のメモリアクセス要求受信部４ｃは、受信した排他型フェッチ要求をスヌープ制御部６ｃに出力する。スヌープ制御部６ｃは、受信した排他型フェッチ要求を対象メモリアクセス要求として、先の図７のフローチャートを参照して説明したスヌープ処理を実行する。すなわち、スヌープ制御部６ｃは、キャッシュメモリ１１ｃ，１１ｄに対するステータスを選択する。そして、キャッシュメモリ１１ｃ，１１ｄを識別するためのキャッシュメモリ識別子と当該キャッシュメモリ識別子が示すキャッシュメモリ１１ｃ，１１ｄのステータスとを含むスヌープ処理結果をスヌープ制御部６ａに通知する。【００８２】
図５においては、スヌープ制御部６ａは、ＣＰＵ１ａが有するキャッシュメモリ１１ａのステータスとして「ＭＩＳＳ」を選択し、ＣＰＵ１ｂが有するキャッシュメモリ１１ｂのステータスとして「ＨＩＴ」を選択しており、スヌープ制御部６ｃは、ＣＰＵ１ｃが有するキャッシュメモリ１１ｃのステータスとして「ＨＩＴ＆ＢＵＳＹ」を選択し、ＣＰＵ１ｄが有するキャッシュメモリ１１ｄのステータスとして「ＭＩＳＳ」を選択している。【００８３】
スヌープ制御部６ａ，６ｃは、自身が選択したステータスおよび他のスヌープ制御部６ａ，６ｃから通知されたステータスをマージして、最終ステータスを選択する。ステータスの優先順位は、上述したように、「ＢＵＳＹ」、「ＨＩＴ」、「ＨＩＴ＆ＢＵＳＹ」、「ＭＩＳＳ＆ＢＵＳＹ」、「ＭＩＳＳ」の順に低くなっている。したがって、この場合、スヌープ制御部６ａ，６ｃは、最終ステータスとしてキャッシュメモリ１１ｂの「ＨＩＴ」となる。メモリアクセス要求が排他型フェッチ要求であるので、スヌープ制御部６ａは、対象データを格納するＣＰＵ１ｂが有するキャッシュメモリ１１ｂのキャッシュラインにデータ転送を要求するメモリアクセス処理を起動する。これにより、対象データが読み出され、スヌープ制御部６ａは、読み出された対象データを排他型フェッチ要求の応答（ＦＣＨ応答）としてＣＰＵ１ａのキャッシュメモリ１１ａに転送する。【００８４】
以上説明したように、この実施例においては、スヌープ処理をリトライするステータスとして、対象メモリアクセス要求の要求する対象データが先行メモリアクセス要求の要求する対象データと競合しており、装置全体としてデータ転送が不可能な状態を示す「ＢＵＳＹ」と、対象メモリアクセス要求の要求する対象データが先行メモリアクセス要求の要求する対象データと競合しておらず、メモリアクセス要求の要求する対象データが自身が管理するキャッシュメモリ内に存在し、かつ前記メモリアクセス要求の要求する対象データを転送するための資源が枯渇している状態、すなわち自身が管理するキャッシュメモリからのデータ転送が不可能な状態を示す「ＨＩＴ＆ＢＵＳＹ」との２つのステータスを設け、最終ステータスを決定する「ＨＩＴ＆ＢＵＳＹ」の優先順位を、データ転送が可能であることを示す「ＨＩＴ」よりも低くしているため、任意のシステムコントローラでみた場合にはデータ転送が不可能であっても、他のシステムコントローラがデータ転送が可能な場合にはスヌープ処理をリトライすることなくデータ転送を実行することが可能となり、スヌープ処理のリトライ回数を削減してメモリアクセス要求の処理時間を短縮することができる。【００８５】
また、この実施例においては、キャッシュメモリ間のデータ転送の単位であるキャッシュラインのバイト数よりも、メインメモリからキャッシュメモリへのデータ転送の単位であるエントリーのバイト数が大きい場合であって、かつメモリアクセス要求が対象データの読み出しを要求するフェッチ要求の場合、スヌープ処理をリトライするステータスとして、メモリアクセス要求の要求する対象データが先行メモリアクセス要求の要求する対象データと競合しておらず、メモリアクセス要求の要求する対象データが自身が管理するキャッシュメモリ内に存在しておらず、かつメモリアクセス要求の要求する対象データが先行メモリアクセス要求の対象データと同一エントリー内のデータである状態、すなわち自身が管理するキャッシュメモリからのデータ転送が不可能な状態を示す「ＭＩＳＳ＆ＢＵＳＹ」のステータスをさらに設け、最終ステータスを決定する「ＭＩＳＩＩ＆ＢＵＳＹ」の優先順位を、データ転送が可能であることを示す「ＨＩＴ」よりも低くしているため、キャッシュメモリ間のデータ転送の単位であるキャッシュラインのバイト数よりも、メインメモリからキャッシュメモリへのデータ転送の単位であるエントリーのバイト数が大きい場合において、任意のシステムコントローラでみた場合にはデータ転送が不可能であっても、他のシステムコントローラがデータ転送が可能な場合にはスヌープ処理をリトライすることなくデータ転送を実行することが可能となり、スヌープ処理のリトライ回数を削減してメモリアクセス要求の処理時間を短縮することができる。【００８６】
なお、図１においては、説明を簡単にするために、システムボードＳＢ０とシステムボードＳＢ１が搭載するＣＰＵ、ＩＯ装置、およびメインメモリの個数を同一にしたが、これらの構成要素の個数は、システムボード毎に異なっていてもかまわない。
【産業上の利用可能性】
【００８７】
以上のように、本発明におけるスヌープ制御方法および情報処理装置は、キャッシュメモリを有する複数のＣＰＵと、共有メモリを構成する複数のメインメモリとをグループ分けし、グループ毎にＣＰＵとメインメモリとを管理しキャッシュメモリ間またはキャッシュメモリとメインメモリとの間のデータ転送を制御するシステムコントローラを備える構成の大規模な情報処理装置に有用である。
【図１】
2007096978.tif 000003
【図２】
2007096978.tif 000004
【図３】
2007096978.tif 000005
【図４】
2007096978.tif 000006
【図５】
2007096978.tif 000007
【図６】
2007096978.tif 000008
【図７】
2007096978.tif 000009
【国際調査報告】
2007096978.tif 000010
2007096978.tif 000011