説明

キャッシュメモリ制御システム及びキャッシュメモリの制御方法

【課題】複数のプロセッサからのアクセス要求がアドレス競合状態である場合に、最後のアドレス競合リクエストを処理するまでにかかる時間を短縮すること。
【解決手段】コヒーレンシ制御部は、複数のプロセッサからメインメモリへの少なくとも排他的データ読み出しを含む複数のアクセス要求における対象アドレスが競合する場合に、当該複数のアクセス要求の競合に関する情報である競合情報を含めた応答指示を送受信制御部へ送信し、送受信制御部は、応答指示に含まれる競合情報に基づき、排他的データ読み出しをアクセス要求としたプロセッサの中から決定された返信対象のプロセッサに対して、アクセス要求に対応するデータを返信し、引き続き、当該返信対象のプロセッサが有するキャッシュメモリ内のデータの取得を要求するスヌープ要求を送信する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、キャッシュメモリ制御システム及びキャッシュメモリの制御方法に関し、特に、情報処理装置におけるメモリデータアクセス競合時のリクエスト処理についてのキャッシュメモリ制御システム及びキャッシュメモリの制御方法に関する。
【背景技術】
【0002】
特許文献1には、キャッシュを備えた複数のプロセッサとメモリとの間のデータ入出力を制御するメモリコントローラに関する技術が開示されている。特許文献1にかかるメモリコントローラは、読み出し要求を受けた場合、各プロセッサから当該要求についてのスヌープ結果が通知される前に、メモリに対するデータ読み出し処理を開始し、書き込み要求を受けた場合、各プロセッサから当該要求についてのスヌープ結果が通知されるのを待って、メモリに対するデータ書き込み処理を開始する。
【0003】
特許文献2には、マルチプロセッサ環境において、性能を改善するように管理されたメモリキャッシュシステムに関する技術が開示されている。特許文献2にかかるメモリキャッシュシステムにおいて、第1のプロセッサは、第1のレベル1キャッシュを用いてデータにアクセスし、第2のプロセッサは、第2のレベル1キャッシュを用いてデータにアクセスする。また、記憶制御回路は、第1と第2のレベル1キャッシュとレベル2キャッシュとメインメモリとの間に配置される。レベル2キャッシュは、主記憶装置内のデータのコピーを管理し、それらのレベル1キャッシュがデータのコピーを有し、それらのコピーが変更されているか否かの指示を、さらに管理する。
【0004】
特許文献3には、ノードの処理状態にしたがって主記憶アクセスの先行を許しマルチプロセッサシステムの性能を向上させる技術が開示されている。特許文献3にかかるマルチプロセッサシステムは、データ読み出しアクセスを全ノードで同期して選択し順序付けするだけでなく、データ書き戻し完了通知も全ノードで同期して選択し順序付けすることで、全ノードで観測されるデータ読み出しの順序とデータ書き戻しの完了順序を一意にする。また、各ノードにおいて、順序付けされたデータ読み出しアクセスと順序付けされたデータ書き戻し完了通知の対象アドレスを比較し、データ書き戻しの完了に追い越される同一アドレスのデータ読み出しを検出することで、データ読み出しとデータ書き戻しの順序を決定する。このとき、データ書き戻しの完了に追い越された同一アドレスのデータ読み出しアクセスを送信したノードへデータの読み直しを促すコヒーレンシ応答を送信することで、データのコヒーレンシを維持する。
【0005】
特許文献4には、ライトバック方式のキャッシュメモリを有する共有メモリ型マルチプロセッサシステムにおいて、余分なスヌープ処理をなくして高いシステム性能を実現するキャッシュメモリ制御方式に関する技術が開示されている。特許文献4にかかるキャッシュメモリ制御方式において、プロセッサは、無効状態、共有状態、排他一致状態、および排他変更状態の4状態を取る状態部を備えるコピータグを有している。キャッシュメモリが排他変更状態に遷移したときは、コピータグに通知することによってキャッシュメモリの状態と一致させ、共有バス上の共有メモリへのリード要求をバス監視回路によって検出し、コピータグの検査を行ってキャッシュメモリへのアクセスを減らし、排他変更状態のブロックにヒットしたときにだけ、変更信号線を出力して共有メモリを待機させ、キャッシュメモリに対してスヌープ処理を行う。
【0006】
特許文献5には、効率的に排他制御を調停することにより、タイムアウト等のシステムの処理に支障を来す事態の発生を防止するマルチプロセッサシステムに関する技術が開示されている。特許文献5にかかるマルチプロセッサシステムにおいて、プロセッサを搭載するカードと、カードを相互に接続するバスと、排他制御を実行中のプロセッサの存在を示す排他制御フラグと、プロセッサ毎に、排他制御の要求が失敗したことを示す失敗フラグと、および、再発行された排他制御要求が成功したことを示す成功フラグを備え、各カードからの排他制御要求を、他のカードが受け取り、共通の調停論理に基づき各カードのそれぞれが同一の要求処理順序を判定し実行する分散調停方式により排他制御の調停を行うことを特徴とする。
【0007】
特許文献6には、各ノードにローカルなメモリを有する複数のノードならびにすべてのノードを相互接続するタグ・アンド・アドレス・クロスバ・システムおよびデータ・クロスバ・システムに構成されたマルチプロセッサシステムに関する技術が開示されている。特許文献6にかかるマルチプロセッサシステムは、グローバル・スヌープを使用して、データ・タグの直列化の単一の点を提供する。中央クロスバ・コントローラが、すべてのノードの所与のアドレス・ラインのキャッシュ状態タグを同時に検査し、キャッシュ・コヒーレンスを維持し、要求されたデータを供給するためにシステム内の他のノードへの他のデータ要求を生成しながら、データを要求するノードに適当な応答を発行する。このシステムは、各ノードにローカルなメモリを、所与のキャッシュ・ラインについて相互に排他的なローカル・カテゴリおよびリモート・カテゴリに分割することによって、そのようなメモリを利用する。この開示では、各ノードの第3レベル・リモート・キャッシュのサポートを提供する。
【先行技術文献】
【特許文献】
【0008】
【特許文献1】特開2000−250811号公報
【特許文献2】特開2000−250812号公報
【特許文献3】特開2006−323432号公報
【特許文献4】特開平10−222423号公報
【特許文献5】特許第3560534号公報
【特許文献6】特表2005−539282号公報
【発明の概要】
【発明が解決しようとする課題】
【0009】
しかしながら、上述した特許文献1乃至6にかかる技術を用いても、マルチプロセッサシステムにおける複数プロセッサからあるひとつの主記憶上のキャッシュラインアドレスへのアクセスが同時期に発生した場合であるアドレス競合状態において、最後のアドレス競合リクエストを処理するまでにかかる時間が増大するという問題がある。その理由は、まず、アドレス競合状態にあるプロセッサ発行のリクエストを処理するにあたり、必ずキャッシュコヒーレンシ制御部から対象プロセッサへのスヌープリクエストのレイテンシと、そのコンプリーションのレイテンシがかかるためである。また、現状のマルチプロセッサシステムにおけるプロセッサ数は、数10から数100に達していることが一般的である。それにより、マルチプロセッサシステムにおけるプロセッサ数が多い場合、情報処理装置を構成するための物理的制約によりキャッシュコヒーレンシ制御部とプロセッサ間のレイテンシが増大するためである。なお、このようなアドレス競合処理は、マルチプロセッサシステムにおけるセマフォロックオペレーションにおいて一般的なこととして行われるものである。
【0010】
ここで、上述した課題の発生を以下に例示して説明する。まず、以下で対象とするSMP(Symmetric Multi-Processor)システムは、内部に主記憶データを一時的に格納するMESIなどの一般的なプロトコルを採用するストアイン方式のキャッシュメモリを搭載するCPUやI/Oプロセッサ複数個と、自己の管理対象主記憶データがどのCPU、I/Oプロセッサキャッシュに保持されているかを登録するディレクトリ方式によりCPUやI/Oプロセッサのキャッシュ間コヒーレンシ保障を行うキャッシュコヒーレンシ制御回路と、前記キャッシュコヒーレンシ制御回路を介してCPU、I/Oプロセッサからのメモリアクセスリクエストを受け取り、配下の主記憶に書き込み、読み出し動作を指示するメモリ制御回路と、を備え、これらを1対1接続、バス接続、スター接続などの方式により接続したものである。
【0011】
ここで、複数プロセッサからあるひとつの主記憶上のキャッシュラインアドレスへのアクセスが同時期に発生した状態であるアドレス競合状態である場合を考える。この場合、上述した特許文献5では、ある特定のプロセッサがメモリアクセスできない所謂ライブロック状態を回避しつつシステム内のキャッシュコヒーレンシを保証するためには、あるひとつのキャッシュコヒーレンシ制御部を有することとなる。または、複数個所に分散しつつも完全に全てが同期して動作するキャッシュコヒーレンシ制御部を有することとなる。そして、このキャッシュコヒーレンシ制御部でアドレス競合しているリクエストをひとつひとつシーケンシャルに処理する必要があった。
【0012】
これによると、複数プロセッサが同時期に同一メモリアドレスに対して更新を目的とする主記憶リードリクエストを発行した場合、次のような動作となる。尚、ここでは、主記憶上にあるデータがシステム唯一のデータであるとする。
【0013】
まず、上述したキャッシュコヒーレンシ制御部は、最初に処理すると決定されたリクエストの発行元プロセッサに対して主記憶読み出しデータを返却する。次に、キャッシュコヒーレンシ制御部は、2番目に処理すると決定したプロセッサのリクエストを処理するために、最初に処理したリクエストの発行元プロセッサにキャッシュ内データ掃き出し指示リクエスト(キャッシュスヌープリクエスト)を発行する。この結果、最初に処理したリクエストの発行元プロセッサからはキャッシュ内データとキャッシュスヌープリクエストに対するコンプリーションが発行される。
【0014】
そして、キャッシュ内データは、2番目に処理すると決定されたリクエストを発行したプロセッサに返却され、コンプリーションは、キャッシュコヒーレンシ制御部に返却される。
【0015】
続いて、最初に処理したリクエストの発行元プロセッサからのコンプリーションを受け付けたキャッシュコヒーレンシ制御部は、最初に処理したリクエストの発行元プロセッサからキャッシュ内データが掃き出されたこと、及び、そのデータが2番目に処理すると決定したリクエストの発行元プロセッサに渡されたことを知る。そして、当該キャッシュコヒーレンシ制御部は、それを契機に3番目に処理すると決定したリクエストを処理するために、2番目に処理したリクエストの発行元プロセッサにキャッシュスヌープリクエストを発行する。以下、2番目のリクエストを処理したときと同じ動作が行われ、更に、競合リクエストを発行したプロセッサがあればそれらについて同じ動作が繰り返し行われる。このように、マルチプロセッサシステムのアドレス競合状態において、最後のアドレス競合リクエストを処理するまでにかかる時間が増大するという問題が生じる。
【0016】
本発明は、このような問題点を解決するためになされたものであり、アドレス競合状態において、最後のアドレス競合リクエストを処理するまでにかかる時間を短縮することができるキャッシュメモリ制御システム及びキャッシュメモリの制御方法を提供することを目的とする。
【課題を解決するための手段】
【0017】
本発明の第1の態様にかかるキャッシュメモリ制御システムは、それぞれキャッシュメモリを有する複数のプロセッサと接続される送受信制御部と、メインメモリへアクセスし、前記複数のプロセッサが有するキャッシュメモリ間の一貫性を保つコヒーレンシ制御部と、を備え、前記コヒーレンシ制御部は、前記複数のプロセッサから前記メインメモリへの少なくとも排他的データ読み出しを含む複数のアクセス要求における対象アドレスが競合する場合に、当該複数のアクセス要求の競合に関する情報である競合情報を含めた応答指示を前記送受信制御部へ送信し、前記送受信制御部は、前記応答指示に含まれる競合情報に基づき、前記排他的データ読み出しをアクセス要求としたプロセッサの中から決定された返信対象のプロセッサに対して、前記アクセス要求に対応するデータを返信し、引き続き、当該返信対象のプロセッサが有するキャッシュメモリ内のデータの取得を要求するスヌープ要求を送信する。
【0018】
本発明の第2の態様にかかるキャッシュメモリの制御方法は、それぞれキャッシュメモリを有する複数のプロセッサと接続される送受信制御部と、メインメモリへアクセスし、前記複数のプロセッサが有するキャッシュメモリ間の一貫性を保つコヒーレンシ制御部と、を備えるマルチプロセッサシステムにおけるキャッシュメモリの制御方法であって、前記送受信制御部において、前記複数のプロセッサから前記メインメモリへの少なくとも排他的データ読み出しを含む複数のアクセス要求を受信し、前記コヒーレンシ制御部において、前記複数のアクセス要求における対象アドレスが競合する場合に、当該複数のアクセス要求の競合に関する情報である競合情報を含めた応答指示を前記送受信制御部へ送信し、前記送受信制御部において、前記応答指示に含まれる競合情報に基づき、前記排他的データ読み出しをアクセス要求としたプロセッサの中から決定された返信対象のプロセッサに対して、前記アクセス要求に対応するデータを返信し、引き続き、前記送受信制御部において、当該返信対象のプロセッサが有するキャッシュメモリ内のデータの取得を要求するスヌープ要求を送信する。
【発明の効果】
【0019】
本発明により、アドレス競合状態において、最後のアドレス競合リクエストを処理するまでにかかる時間を短縮することができる。
【図面の簡単な説明】
【0020】
【図1】本発明の実施の形態1にかかるキャッシュメモリ制御システムの構成を示すブロック図である。
【図2】本発明の実施の形態1にかかるキャッシュメモリの制御方法の流れを示すフローチャート図である。
【図3】本発明の実施の形態2にかかるマルチプロセッサシステムの構成を示すブロック図である。
【図4】本発明の実施の形態2で使用するキャッシュプロトコルのひとつであるMESIプロトコルのそれぞれのステータスの意味を説明したものである。
【図5】本発明の実施の形態2にかかるキャッシュステータス管理機能のために実装するディレクトリの構成図である。
【図6】本発明の実施の形態2にかかるディレクトリキャッシュステータスの説明である。
【図7】本発明の実施の形態2にかかるキャッシングエージェント情報の説明である。
【図8】本発明の実施の形態2にかかるメッセージ類の説明である。
【図9】本発明の実施の形態2にかかるプロセッサからのリクエスト及びレスポンス並びにプロセッサ内キャッシュのステータス遷移の一覧である。
【図10】本発明の実施の形態2にかかるシステムインタフェースからのリクエスト及びレスポンス並びにプロセッサ内キャッシュのステータス遷移の一覧である。
【図11】本発明の実施の形態2にかかる競合情報の構成を示すブロック図である。
【図12】本発明の実施の形態2にかかる競合情報の内容の説明である。
【図13】本発明の実施の形態2にかかるコヒーレンシ制御部におけるEBR、SBR受信時のアドレス競合制御部の内部情報の遷移を示す表である。
【図14】本発明の実施の形態2にかかるコヒーレンシ制御部におけるレスポンス生成を説明する表である。
【図15】本発明の実施の形態2にかかるレスポンスであるRsp_Data_EおよびRsp_Data_Sの内部構成を示すものである。
【図16】本発明の実施の形態2にかかるレスポンスであるRsp_Data_Cnfltの内部構成を示すものである。
【図17】本発明の実施の形態2にかかるアドレス競合時のコヒーレンシ制御部の処理の流れを示すフローチャート図である。
【図18】本発明の実施の形態2にかかるコヒーレンシ制御部がレスポンスであるRsp_Data_Cnfltを生成する処理の流れを示すフローチャート図である。
【図19】本発明の実施の形態2にかかるレスポンス/スヌープ制御部がRsp_Data_Cnfltを受信した場合における処理の前半の流れを示すフローチャート図である。
【図20】本発明の実施の形態2にかかるレスポンス/スヌープ制御部がRsp_Data_Cnfltを受信した場合における処理の後半の流れを示すフローチャート図である。
【発明を実施するための形態】
【0021】
以下では、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。各図面において、同一要素には同一の符号が付されており、説明の明確化のため、必要に応じて重複説明は省略する。
【0022】
<発明の実施の形態1>
図1は、本発明の実施の形態1にかかるキャッシュメモリ制御システムの構成を示すブロック図である。キャッシュメモリ制御システム15は、プロセッサ11、プロセッサ12及びメインメモリ18と接続され、プロセッサ11及び12がそれぞれ有するキャッシュメモリ13及び14の管理を行うものである。
【0023】
プロセッサ11は、キャッシュメモリ13を搭載するCPU及びI/Oプロセッサである。例えば、MESIプロトコルなどの一般的なキャッシュプロトコルを採用するストアイン方式のリクエスタである。プロセッサ12は、キャッシュメモリ14を搭載するCPU及びI/Oプロセッサであり、その他は、プロセッサ11と同様である。尚、本発明の実施の形態1にかかるプロセッサの数は、少なくとも2以上であればよい。
【0024】
キャッシュメモリ制御システム15は、送受信制御部16及びコヒーレンシ制御部17を備える。送受信制御部16は、プロセッサ11及び12と接続され、プロセッサ11及び12からの要求を受信し、当該要求をコヒーレンシ制御部17へ転送する。また、送受信制御部16は、コヒーレンシ制御部17からの指示を受信し、所定の応答をプロセッサ11又は12へ送信する。コヒーレンシ制御部17は、プロセッサ11及び12からメインメモリ18への少なくとも排他的データ読み出しを含む複数のアクセス要求における対象アドレスが競合する場合に、当該複数のアクセス要求の競合に関する情報である競合情報を含めた応答指示を送受信制御部16へ送信する。そして、送受信制御部16は、コヒーレンシ制御部17からの応答指示に含まれる競合情報に基づき、排他的データ読み出しをアクセス要求としたプロセッサの中から決定された返信対象のプロセッサに対して、アクセス要求に対応するデータを返信し、引き続き、当該返信対象のプロセッサが有するキャッシュメモリ内のデータの取得を要求するスヌープ要求を送信する。
【0025】
メインメモリ18は、コヒーレンシ制御部17からの対象アドレスを指定したデータ読み出し要求に応じて、対象アドレスにおけるデータを返信する。また、メインメモリ18は、コヒーレンシ制御部17からの対象アドレスを指定したデータ書き込み要求に応じて、対象アドレスにおけるデータを更新し、その旨を返信する。
【0026】
図2は、本発明の実施の形態1にかかるキャッシュメモリの制御方法の流れを示すフローチャート図である。
【0027】
まず、送受信制御部16は、プロセッサ11及び12からメインメモリ18への複数のアクセス要求を受信する(S11)。ここで、複数のアクセス要求には、少なくとも排他的データ読み出しを含むものとする。また、複数のアクセス要求は、メインメモリ18内の同一のアドレスを対象としたものとする。尚、送受信制御部16は、受信したアクセス要求をコヒーレンシ制御部17へ転送する。
【0028】
次に、コヒーレンシ制御部17は、複数のアクセス要求における対象アドレスが競合する場合に、当該複数のアクセス要求の競合に関する情報である競合情報を含めた応答指示を送受信制御部16へ送信する(S12)。
【0029】
そして、送受信制御部16は、応答指示に含まれる競合情報に基づき、排他的データ読み出しをアクセス要求としたプロセッサの中から決定された返信対象のプロセッサに対して、アクセス要求に対応するデータを返信する(S13)。
【0030】
引き続き、送受信制御部16は、当該返信対象のプロセッサが有するキャッシュメモリ内のデータの取得を要求するスヌープ要求を送信する(S14)。
【0031】
これにより、送受信制御部16からコヒーレンシ制御部17へのコンプリーション及びコヒーレンシ制御部17から送受信制御部16へのスヌープの送受信の時間を短縮できる。このように、本発明の実施の形態1により、アドレス競合状態において、最後のアドレス競合リクエストを処理するまでにかかる時間を短縮することができる。
【0032】
<発明の実施の形態2>
図3は、本発明の実施の形態2にかかるマルチプロセッサシステム100の構成を示すブロック図である。マルチプロセッサシステム100は、上述した本発明の実施の形態1にかかるキャッシュメモリ制御システムの一例である。マルチプロセッサシステム100は、2つのノードコントローラに複数のプロセッサを1対1接続する例を示すが、ノードコントローラとプロセッサとの接続方法は、これに限定されない。例えば、ノードコントローラとプロセッサとの接続方法は、バス接続やスター接続等であっても構わない。
【0033】
プロセッサ101乃至108は、それぞれMESIプロトコルなどの一般的なキャッシュプロトコルを採用するストアイン方式のキャッシュメモリ111乃至118を搭載するCPU及びI/Oプロセッサである。プロセッサ101乃至108は、主記憶アクセスリクエストのリクエスタとなるものである。尚、本発明の実施の形態2で用いられるプロセッサ101乃至108は、公知なものであるため、詳細な説明を省略する。尚、プロセッサ数は、これに限定されず、少なくとも2以上であればよい。図4は、本発明の実施の形態2で使用するキャッシュプロトコルの一例であるMESIプロトコルのそれぞれのステータスの意味を説明したものである。
【0034】
主記憶管理システム151は、主記憶153及び主記憶コントローラ155を備える。また、主記憶管理システム152は、主記憶154及び主記憶コントローラ156を備える。主記憶管理システム151及び152は、コヒーレンシ制御部143及び144を介して受け付けたプロセッサ101乃至108からの主記憶アクセスリクエストに対して適切に主記憶データの読み出し、主記憶データの更新を行う。尚、本発明の実施の形態2で用いられる主記憶管理システム151及び152は、公知なものであるため、詳細な説明を省略する。
【0035】
ノードコントローラ121は、プロセッサ101乃至104と接続され、主記憶管理システム151へのアクセス制御を行う。また、ノードコントローラ121は、ノードコントローラ122を介して、プロセッサ105乃至108から主記憶管理システム151へのアクセス制御を行い、プロセッサ101乃至104主記憶管理システム152へのアクセス要求を送信する。ノードコントローラ121は、レスポンス/スヌープ制御部131乃至134、クロスバー141及びコヒーレンシ制御部143を備える。
【0036】
同様に、ノードコントローラ122は、プロセッサ105乃至108と接続され、主記憶管理システム152へのアクセス制御を行う。また、ノードコントローラ122は、ノードコントローラ121を介して、プロセッサ101乃至104から主記憶管理システム152へのアクセス制御を行い、プロセッサ105乃至108主記憶管理システム151へのアクセス要求を送信する。ノードコントローラ122は、レスポンス/スヌープ制御部135乃至138、クロスバー142及びコヒーレンシ制御部144を備える。尚、本発明の実施の形態2で用いられるノードコントローラは、2個に限定されない。
【0037】
クロスバー141は、一般的なクロスバー回路であり、レスポンス/スヌープ制御部131乃至134、コヒーレンシ制御部143及びクロスバー142を接続する。同様に、クロスバー142は、一般的なクロスバー回路であり、レスポンス/スヌープ制御部135乃至138、コヒーレンシ制御部144及びクロスバー141を接続する。
【0038】
レスポンス/スヌープ制御部131は、プロセッサ101と直接接続され、プロセッサ101が発行した主記憶アクセスリクエストに対し、所定の応答を行う。また、レスポンス/スヌープ制御部131は、クロスバー141を介してコヒーレンシ制御部143、レスポンス/スヌープ制御部132乃至134並びにノードコントローラ122と通信可能である。
【0039】
ここで、特に、プロセッサ101を含む複数のプロセッサから主記憶153の同一のアドレスへのアクセス要求がされている場合、つまり、アドレス競合の場合について説明する。また、ここでは、プロセッサ101からの主記憶アクセスリクエストは、排他的データ読み出しであるものとする。この場合、レスポンス/スヌープ制御部131は、コヒーレンシ制御部143もしくは144又は他のレスポンス/スヌープ制御部132乃至138のいずれかから応答指示を受信する。そして、レスポンス/スヌープ制御部131は、当該応答指示に含まれる競合情報に基づき、プロセッサ101に対して当該主記憶アクセスリクエストに対応するデータを返信し、引き続き、プロセッサ101が有するキャッシュメモリ111内のデータの取得を要求するスヌープ要求を送信する。尚、競合情報については、後述する。
【0040】
また、レスポンス/スヌープ制御部131は、アドレス競合検出時レスポンスに含まれる競合情報に基づき、返信対象であるプロセッサ101の次に返信対象となるプロセッサを決定し、プロセッサ101からのスヌープ要求に対する応答を受信した後に、当該次に返信対象となるプロセッサに対して、アクセス要求に対応するデータを返信する。これにより、コヒーレンシ制御部143又は144を介さずに、連続してアドレス競合するプロセッサへデータ返信することができ、コヒーレンシ制御部143又は144との送受信時間を短縮することができる。
【0041】
尚、レスポンス/スヌープ制御部132乃至138は、レスポンス/スヌープ制御部131と同様に動作するため、詳細な説明を省略する。
【0042】
コヒーレンシ制御部143は、接続される主記憶管理システム151内の主記憶153及び主記憶コントローラ155へアクセスし、プロセッサ101乃至108が有するキャッシュメモリ111乃至118の一貫性を保つ。すなわち、コヒーレンシ制御部143は、主記憶管理システム151向けの主記憶アクセスリクエストが制御対象である。コヒーレンシ制御部143は、クロスバー141を介して、プロセッサ101乃至108からのアクセス要求を受信し、アクセス要求に応じて、主記憶管理システム151へアクセスする。また、コヒーレンシ制御部143は、クロスバー141を介して、主記憶管理システム151からのアクセス結果を所定のプロセッサへ返信する。コヒーレンシ制御部143は、キャッシュステータス管理機能145及びアドレス競合制御部147を備える。
【0043】
キャッシュステータス管理機能145は、ディレクトリ方式などの一般的なシステム内キャッシュステータス管理機能を実現する回路である。図5は、本発明の実施の形態2にかかるキャッシュステータス管理機能のために実装するディレクトリの構成の一例を示す図である。以下の説明においては、全ての主記憶をキャッシュラインサイズごとに管理可能なフルディレクトリ方式を採用するものとする。すなわち、各エントリは、かならず唯一の主記憶アドレスに対応するものとするが、セットアソシアティブ方式などを採用し同時には全主記憶アドレスを管理しないディレクトリ方式を用いても本発明は実現可能である。キャッシュステータス管理機能145は、エントリごとに、キャッシュステータス301とキャッシングエージェント情報302とを関連付けた情報を保持する。図6は、本発明の実施の形態2にかかるディレクトリのキャッシュステータス301の説明である。キャッシュステータス301は、主記憶アドレスのキャッシュステータス情報であり、システム内のプロセッサがどのようなキャッシュステータスでそのデータを保有しているかを示すものである。また、図7は、本発明の実施の形態2にかかるキャッシングエージェント情報302の説明である。キャッシングエージェント情報302は、キャッシュステータスでデータを保有しているプロセッサを示すキャッシングエージェント情報である。尚、キャッシュステータス管理機能145は、これに限定されず、他のものであっても構わない。
【0044】
アドレス競合制御部147は、コヒーレンシ制御部143が受信したプロセッサ101乃至108からのアクセス要求について、アクセス対象となる対象アドレスごとにアクセス要求の競合に関する情報である競合情報を保持する。つまり、アドレス競合制御部147は、対象アドレスごとに競合情報を格納する競合情報記憶手段を有する。
【0045】
コヒーレンシ制御部143は、複数のプロセッサから主記憶153への少なくとも排他的データ読み出しを含む複数のアクセス要求における対象アドレスが競合する場合に、当該複数のアクセス要求の競合に関する情報である競合情報を含めた応答指示をクロスバー141へ送信する。
【0046】
また、コヒーレンシ制御部143は、競合情報に基づき、最初の返信対象のプロセッサを決定し、当該決定した返信対象プロセッサへの応答指示としてレスポンス/スヌープ制御部131乃至138のいずれかへ送信する。これにより、本発明の実施の形態2にかかるマルチプロセッサシステム100のように、複数のレスポンス/スヌープ制御部が複数のプロセッサと一対一接続された場合、競合情報に基づき最初の返信対象を決定することにより、適切な応答先へ送信することができる。
【0047】
尚、コヒーレンシ制御部144並びにコヒーレンシ制御部144が備えるキャッシュステータス管理機能146及びアドレス競合制御部148は、上述したコヒーレンシ制御部143、キャッシュステータス管理機能145及びアドレス競合制御部147と同等であるため、詳細な説明を省略する。
【0048】
システムインタフェース161乃至168は、それぞれプロセッサ101乃至108とレスポンス/スヌープ制御部131乃至138とを接続するシステムインタフェースである。システムインタフェース161乃至168は、プロセッサ101乃至108から主記憶153及び154へのアクセスリクエスト及びそのデータリプライ、ノードコントローラ121及び122からプロセッサ101乃至108への主記憶データのキャッシング状態問い合わせリクエスト(以降、スヌープリクエストと呼ぶ)及びそのリプライの受け渡しを行う。
【0049】
インタフェース171乃至174は、レスポンス/スヌープ制御部131乃至134とクロスバー141とを接続するノードコントローラ121内のインタフェースである。インタフェース181は、クロスバー141とコヒーレンシ制御部143とを接続するノードコントローラ121内のインタフェースである。
【0050】
また、インタフェース175乃至178は、レスポンス/スヌープ制御部135乃至138とクロスバー142とを接続するノードコントローラ122内のインタフェースである。インタフェース182は、クロスバー142とコヒーレンシ制御部144とを接続するノードコントローラ122内のインタフェースである。
【0051】
メモリインタフェース183は、主記憶管理システム151とコヒーレンシ制御部143とを接続するメモリインタフェースである。メモリインタフェース183は、コヒーレンシ制御部143からの主記憶アクセスリクエスト及び主記憶管理システム151からのデータリプライの受け渡しを行う。
【0052】
また、メモリインタフェース184は、主記憶管理システム152とコヒーレンシ制御部144とを接続するメモリインタフェースである。メモリインタフェース184は、コヒーレンシ制御部144からの主記憶アクセスリクエスト及び主記憶管理システム152からのデータリプライの受け渡しを行う。
【0053】
ノードインタフェース185は、ノードコントローラ121内のクロスバー141と、ノードコントローラ122内のクロスバー142とを接続するインタフェースである。ノードインタフェース185は、異なるノードコントローラ上に搭載されるレスポンス/スヌープ制御部及びコヒーレンシ制御部間の主記憶アクセスリクエスト及びそのデータリプライ並びにスヌープリクエスト及びそのリプライの受け渡しを行う。
【0054】
ここで、本発明の実施の形態2にかかるメッセージ類の種類及び説明を図8に示す。図8は、本発明の実施の形態2にかかるマルチプロセッサシステム100内を実現するにあたり必要となるプロセッサ、レスポンス/スヌープ制御部、クロスバー及びコヒーレンシ制御部間、並びに、コヒーレンシ制御部及び主記憶管理システム間のリクエストメッセージや、レスポンス及びコンプリーションメッセージを示したものである。特に、図8に示すRsp_Data_Cnfltは、Rsp_Data_E、Rsp_Data_Sに加え、コヒーレンシ制御部で検出したEBRの同一アドレス競合状態、SBRの同一アドレス競合状態及び競合するEBR又はSBRのリクエストID情報を有するレスポンスメッセージである。
【0055】
図9は、本発明の実施の形態2にかかるプロセッサからのリクエスト及びレスポンス並びにプロセッサ内キャッシュのステータス遷移の一覧である。また、図10は、本発明の実施の形態2にかかるシステムインタフェースからのリクエスト及びレスポンス並びにプロセッサ内キャッシュのステータス遷移の一覧である。
【0056】
例えば、図9の903は、あるプロセッサがEBRを発行した際に、その発行元プロセッサの初期のキャッシュステータスはSであり、この場合、受信する可能性のあるレスポンスはRsp_Data_Eとなることを示す。これを受信したプロセッサは、それに付与されているデータを自キャッシュに格納し、そのステータスをEとして処理を完了する。
【0057】
尚、図9の901、902、904、906乃至909及び913乃至915は、リクエストとステータスの組み合わせとして挙げたものであるが、実際上は、発生し得ない組み合わせである。
【0058】
また、図10の916は、あるプロセッサ(仮にA)とは異なるプロセッサ(仮にB)が発行したEBRがキャッシュコヒーレンシ制御部に受信され、その中のディレクトリを索引した結果プロセッサAがデータをMで保持しているということが判明した場合の状態遷移を示すものである。そして、それを条件としてプロセッサAに対してSnp_Eが発行された場合を示す。このとき、プロセッサAのキャッシュステータスはMであるから、このキャッシュステータスはIに遷移し、同時に、システムインタフェースにCmp_IとRsp_Data_Eを発行し処理を完了する。
【0059】
なお、上述した課題で挙げたSMPシステムでは、Cmp_Iはコヒーレンシ制御部に転送されプロセッサAでの処理完了を知り、次の同一アドレスリクエストの処理を開始するきっかけとなり、Rsp_Data_EはプロセッサBに返却される。これに比べ、本発明の実施の形態2では、プロセッサAを管理するレスポンス/スヌープ管理部が、Cmp_IとRsp_Data_Eの両方を受け付け、そこからRsp_Data_Cnfltを生成し、プロセッサBに転送する。これにより、キャッシュステータスを遷移させ、キャッシュメモリの一貫性を保つことができる。つまり、コヒーレンシ制御部へのCmp_I転送は行わないため、転送時間分の処理時間を短縮することができる。
【0060】
図11は、本発明の実施の形態2にかかる競合情報の構成を示すブロック図である。図12は、本発明の実施の形態2にかかる競合情報の内容の説明である。競合情報は、Validビット701、EBR競合検出フラグ702、EBR競合検出フラグ703、リクエストID704を対象アドレス単位に関連付けたものである。Validビット701は、1のとき、当該セットが使用中であることを示す。EBR競合検出フラグ702は、コヒーレンシ制御部がEBRを受け取ったならば、そのEBRのリクエストソースに対応するビットを1にセットされる。EBR競合検出フラグ703は、コヒーレンシ制御部がSBRを受け取ったならば、そのSBRのリクエストソースに対応するビットを1にセットされる。リクエストID704は、EBR競合検出フラグ702及びEBR競合検出フラグ703をセットされると同時に、当該リクエストのリクエストIDを設定、保持されるためのフィールドである。
【0061】
尚、図11に示すのは、1つの主記憶アドレスに対応する1セットの図であり、競合情報は、セット単位で主記憶アドレスを管理される。つまり、競合情報は、メインメモリのアドレス単位に、競合有無フラグ、アクセス要求の種別及び当該アクセス要求の識別情報を含む。これにより、アドレスの競合関係を適切に管理が可能となり、参照が容易となる。
【0062】
図13は、本発明の実施の形態2にかかるコヒーレンシ制御部におけるEBR又はSBR受信時のアドレス競合制御部147及び148の内部情報の遷移を示す表である。以下では、アドレス競合制御部147における動作として説明する。図13の1301は、EBRを受け付けたときのものである。このとき、アドレス競合制御部147は、EBRのリクエストソースに対応するEBR競合検出フラグのビットを1にセットし、同時にEBRのリクエストIDを対応するリクエストIDフィールドにセットする。また、図13の1302は、SBRを受け付けたときのものである。このとき、アドレス競合制御部147は、SBRのリクエストソースに対応するSBR競合検出フラグのビットを1にセットし、同時にSBRのリクエストIDを対応するリクエストIDフィールドにセットする。
【0063】
図14は、本発明の実施の形態2にかかるコヒーレンシ制御部におけるレスポンス生成を説明する表である。図14は、コヒーレンシ制御部がEBR/SBRに対するリプライをリクエストソースのプロセッサに対して発行する際に、どのレスポンスを行うかの組み合わせを示す。つまり、コヒーレンシ制御部は、リクエスト種別と更新前のアドレス競合制御部が保持する競合情報のValidビットの組み合わせに応じて、通常のレスポンス(Rsp_Data_E又はRsp_Data_S)を返却するか、又は、Rsp_Data_Cnfltを生成しレスポンスとするかを決定する。
【0064】
図15は、本発明の実施の形態2にかかるレスポンスであるRsp_Data_EおよびRsp_Data_Sの内部構成を示すものである。図15に示すように、Rsp_Data_EおよびRsp_Data_Sは、コマンドコード、デスティネーションID、オリジナルリクエストID及びデータを備える。尚、Rsp_Data_EおよびRsp_Data_Sの内部構成は、公知のものを用いても構わない。また、図16は、本発明の実施の形態2にかかるレスポンスであるRsp_Data_Cnfltの内部構成を示すものである。図16に示すように、Rsp_Data_Cnfltは、図15の構成に加え、EBR競合検出フラグ、SBR競合検出フラグ、リクエストIDを備える。
【0065】
図17は、本発明の実施の形態2にかかるアドレス競合時のコヒーレンシ制御部の処理の流れを示すフローチャート図である。尚、以下の説明で扱う主記憶の対象アドレスは、全て同一のものであるとする。また、対象アドレスは、主記憶153のアドレスであるものとする。また、初期状態として、プロセッサ101乃至108のキャッシュメモリ111乃至118のいずれにも、当該対象アドレスに対応する主記憶153のデータがキャッシュされていないものとする。
【0066】
まず、プロセッサ101、103及び106がEBRを、プロセッサ104及び107がSBRを同時期に発行したものとする。このとき、ノードコントローラ121及び122は、複数のプロセッサから競合するアクセス要求を受信する(S21)。具体的には、レスポンス/スヌープ制御部131、133及び136は、プロセッサ101、103及び106からのアクセス要求であるEBRを受信する。同様に、レスポンス/スヌープ制御部134及び137は、プロセッサ104及び107からのアクセス要求であるSBRを受信する。そして、レスポンス/スヌープ制御部131、133及び134は、受信したアクセス要求をクロスバー141へ送信する。また、レスポンス/スヌープ制御部136及び137は、受信したアクセス要求をクロスバー142へ送信する。ここで、受信されたアクセス要求の対象アドレスは、全て主記憶153のアドレスであるため、クロスバー142は、クロスバー141へ受信したアクセス要求を送信する。その後、クロスバー141は、受信したアクセス要求をシリアライズし、インタフェース181を介してコヒーレンシ制御部143へ送信する。ここでは、コヒーレンシ制御部143は、プロセッサ101からのEBR、プロセッサ103からのEBR、プロセッサ104からのSBR、プロセッサ106からのEBR及びプロセッサ107からのSBRの順序で受信したものとする。
【0067】
次に、コヒーレンシ制御部143は、競合情報を登録する(S22)。具体的には、コヒーレンシ制御部143は、受信した複数のEBR及びSBRにより、アドレス競合制御部に格納された競合情報を図13に示したように更新する。すなわち、コヒーレンシ制御部は、複数のアクセス要求を受信した場合に、複数のアクセス要求を行ったプロセッサと、当該アクセス要求の種別とを対応付けて競合情報として競合情報記憶手段に格納する。これにより、競合情報を適切に登録し、参照が容易となる。
【0068】
ここでは、コヒーレンシ制御部143が全アクセス要求を受信した後、競合情報は、Valid=1、EBR競合検出フラグ(7:0)=0x25、SBR競合検出フラグ(7:0)=0x48、そしてリクエストID_0、リクエストID_2、リクエストID_3、リクエストID_5、リクエストID_6には、それぞれプロセッサ101からのEBRのリクエストID、プロセッサ103からのEBRのリクエストID、プロセッサ104からのSBRリクエストID、プロセッサ106からのEBRリクエストID、プロセッサ107からのSBRリクエストIDがセットされる。
【0069】
続いて、コヒーレンシ制御部143は、主記憶153から対象アドレスのデータを読み出す(S23)。具体的には、コヒーレンシ制御部143は、この状態でメモリインタフェース183を介してMEM_RQ_Rを主記憶管理システム151に送付し、主記憶管理システム151からMEM_RSP_Dを受信する。
【0070】
その後、コヒーレンシ制御部143は、対象アドレスのValidビットが1であるか否かを判定する(S24)。そして、対象アドレスのValidビットが1であると判定された場合、コヒーレンシ制御部143は、Rsp_Data_Cnflt生成する(S25)。すなわち、コヒーレンシ制御部は、アドレス競合制御部147を参照し、複数のアクセス要求における対象アドレスが競合するか否かを判定し、対象アドレスが競合すると判定した場合に、応答指示をクロスバー141へ送信する。
【0071】
ここでは、アドレス競合制御部147に格納された競合情報のValidビットが1であるから図14の1402の動作となる。尚、Rsp_Data_Cnfltの生成する処理は、図18にて後述する。そして、コヒーレンシ制御部143は、ディレクトリ更新する(S27)。すなわち、コヒーレンシ制御部143は、ステップS25において決定された最初の返信対象のプロセッサに対し、Rsp_Data_Cnfltを生成し、このRsp_Data_Cnfltの処理が完了した場合の最終形として適切な状態にキャッシュステータス管理機能145内のディレクトリを更新する。このとき、ディレクトリのステータスはSとなり、キャッシングエージェント情報は、プロセッサ104と107がキャッシュすることを示す0x48となる。
【0072】
また、ステップS24において、対象アドレスのValidビットが1でないと判定された場合、コヒーレンシ制御部143は、Rsp_Data_E又はRsp_Data_Sを発行する(S26)。その後、同様にステップS27を実行する。
【0073】
図18は、本発明の実施の形態2にかかるコヒーレンシ制御部がレスポンスであるRsp_Data_Cnfltを生成する処理の流れを示すフローチャート図である。
【0074】
まず、コヒーレンシ制御部143は、アドレス競合制御部147に格納された競合情報を参照し、EBR競合検出フラグが全て0であるか否かを判定する(S31)。EBR競合検出フラグが全て0であると判定した場合、コヒーレンシ制御部143は、SBR競合検出フラグが1であるビットの内、最も小さなビットに対応するプロセッサを最初の返信対象プロセッサと決定する(S32)。また、EBR競合検出フラグの全てが0ではないと判定した場合、コヒーレンシ制御部143は、EBR競合検出フラグが1であるビットの内、最も小さなビットに対応するプロセッサを最初の返信対象プロセッサと決定する(S33)。ここでは、EBR競合検出フラグ=0x25であるため、ビット0に対応するプロセッサ101が最初の返信対象として決定される。なお、上述した返信対象のプロセッサの決定方法は、これに限定されない。すなわち、返信対象のプロセッサは、任意のアルゴリズムにより、最終的に全てのプロセッサが選択される方法であればよい。言い換えると、返信対象のプロセッサは、複数のプロセッサにおける所定の順序に基づき、決定される。所定の順序とは、例えば、任意のアルゴリズムである。例えば、コヒーレンシ制御部143において、最もレイテンシの短いプロセッサが決定されるようなアルゴリズムを最要することが望ましい。これにより、最も遅延の短いプロセッサを選択することができる。尚、ここでは、説明の簡略化のため、単純に小さいビットに対応するプロセッサを優先して決定する方法を挙げた。
【0075】
その後、コヒーレンシ制御部143は、決定した最初の返信対象プロセッサを示すIDをRsp_Data_CnfltのデスティネーションIDフィールドに設定する(S34)。これにより、クロスバー141及び142は、Rsp_Data_CnfltのデスティネーションIDフィールドを参照することにより、適切にルーティングすることができる。そして、コヒーレンシ制御部143は、決定した最初の返信対象プロセッサのリクエストIDをRsp_Data_CnfltのオリジナルリクエストIDフィールドに設定する(S35)。これにより、返信における最終到着点であるプロセッサは、当該返信が自己の発行したどのリクエストに対するものであるか認識することができる。続いて、コヒーレンシ制御部143は、アドレス競合制御部の全EBR競合検出フラグ、全SBR競合検出フラグ及び全リクエストID情報をRsp_Data_CnfltのEBR競合検出フラグフィールド、SBR競合検出フラグフィールド及びリクエストIDフィールドに設定する(S36)。
【0076】
最後に、コヒーレンシ制御部143は、Rsp_Data_Cnfltを発行し、決定した最初の返信対象プロセッサであるプロセッサ101が接続されたレスポンス/スヌープ制御部131へ送信する(S37)。つまり、コヒーレンシ制御部は、複数のアクセス要求を行ったプロセッサと、当該アクセス要求の種別とを対応付けて競合情報として応答指示であるRsp_Data_Cnfltに含める。これにより、アドレス競合制御部に格納された競合情報内の各種フラグを設定する。そして、以降、レスポンス/スヌープ制御部において、コヒーレンシ制御部に戻すことなく次の返信対象のプロセッサを判定可能となるため、処理時間のさらなる短縮ができる。
【0077】
図19は、本発明の実施の形態2にかかるレスポンス/スヌープ制御部がRsp_Data_Cnfltを受信した場合における処理の前半の流れを示すフローチャート図である。また、図20は、本発明の実施の形態2にかかるレスポンス/スヌープ制御部がRsp_Data_Cnfltを受信した場合における処理の後半の流れを示すフローチャート図である。すなわち、図19及び図20は、Rsp_Data_Cnfltを受信したレスポンス/スヌープ制御部における、接続するプロセッサへのレスポンス返却法、スヌープリクエスト発行法、及び新たなRsp_Data_Cnflt生成法、Cmp_IとWBの生成法を示すフローチャートである。
【0078】
まず、レスポンス/スヌープ制御部131は、コヒーレンシ制御部143からクロスバー141を介して、Rsp_Data_Cnfltを受信する(S41)。次に、レスポンス/スヌープ制御部131は、Rsp_Data_CnfltのEBR競合検出フラグの中の、自レスポンス/スヌープ制御部の接続するプロセッサに対応するビットが1であるか否かを判定する(S42)。具体的には、レスポンス/スヌープ制御部131は、Rsp_Data_CnfltのEBR競合検出フラグ及びSBR競合検出フラグの中のプロセッサ101に対応するビットを参照し、当該Rsp_Data_Cnfltがプロセッサ101の発行したEBRに対応するレスポンスなのか、SBRに対応するレスポンスなのかを識別する。ここでは、EBR競合検出フラグのビット0が1であるから、レスポンス/スヌープ制御部131は、EBRに対するレスポンスと識別する。
【0079】
ステップS42において、自レスポンス/スヌープ制御部の接続するプロセッサに対応するビットが1であると判定された場合、レスポンス/スヌープ制御部131は、自己の接続するプロセッサ101に対し、Rsp_Data_Eを返信する(S43)。すなわち、レスポンス/スヌープ制御部131は、受信したRsp_Data_Cnfltをプロセッサ101が処理可能なRsp_Data_Eに変換すると言える。これにより、上述したとおり、本発明の実施の形態2にかかるプロセッサ101乃至108は、本発明のための特別なプロセッサではなく、一般的なものを使用可能とすることができる。
【0080】
引き続き、レスポンス/スヌープ制御部131は、プロセッサ101に対して、Snp_Eを送信する(S44)。
【0081】
尚、上述した課題で挙げたSMPシステムに適用した場合、このとき、レスポンス/スヌープ制御部131からコヒーレンシ制御部143にCmpを返却し、プロセッサ101へのレスポンスが完了したことを通知する。続いて、当該Cmp受信を契機として、コヒーレンシ制御部143は、プロセッサ101のキャッシュメモリ111内データを吐き出させるために生成、発行するプロセッサ103のEBRを要因とするSnp_Eが、プロセッサ101に届くのを待つ必要があった。すなわち、次に処理するリクエストの発行元であるプロセッサ103にデータを渡すためにプロセッサ101へSnp_Eを発行するまでに、レスポンス/スヌープ制御部131からコヒーレンシ制御部143までの間をCmpとSnp_Eが往復するレイテンシだけの時間が必要であった。
【0082】
本発明の実施の形態2では、コヒーレンシ制御部143とレスポンス/スヌープ制御部131間を同一のノードコントローラまたは一段渡ったノードコントローラという構成にしている。これは、実際の大規模コンピュータでは、この間に多段のノードコントローラを介する必要がある場合があるためである。そして、その場合、レスポンス/スヌープ制御部131からコヒーレンシ制御部143の間のCmpとSnp_Eの往復時間は、さらに大きなものとなることがあった。
【0083】
そこで、本発明の実施の形態2では、この往復によりプロセッサ101からプロセッサ101以外の他のプロセッサに対するレスポンスレイテンシを短縮することを目的としている。すなわち、プロセッサ101にレスポンスを行ったレスポンス/スヌープ制御部131は、コヒーレンシ制御部143にCmpを返信し、その後のSnp_E到着を待つことを行わない。その代りに、レスポンス/スヌープ制御部131は、ステップS44において、自主的にSnp_Eを生成し、プロセッサ101に発行する。そして、プロセッサ103では、この結果のCmp_IとRsp_Data_Eがプロセッサ101から返却されるのを待ち受ける。
【0084】
その後、レスポンス/スヌープ制御部131は、Snp_Eに対するCmp_I+Rsp_Data_Eをプロセッサから受信したか否かを判定する(S45)。受信しないと判定した場合、再度、ステップS45を実行する。そして、受信したと判定した場合、レスポンス/スヌープ制御部131は、Rsp_Data_Cnfltのデータ部をRsp_Data_Eのデータと差し替える(S46)。すなわち、データの最新化を行う。続いて、レスポンス/スヌープ制御部131は、Rsp_Data_CnfltのEBR競合検出フラグの中の自レスポンス/スヌープ管理部の接続するプロセッサ101に対応するビットを0にリセットする(S47)。
【0085】
続いて、図20に進み、レスポンス/スヌープ制御部131は、EBR競合検出フラグが全て0であるか否かを判定する(S51)。ここで、レスポンス/スヌープ制御部131は、ステップS47において、EBR競合検出フラグを0x25から0x24に更新した直後である。よって、全て0ではないため、ステップS51において、EBR競合検出フラグの全てが0ではないと判定される。このとき、レスポンス/スヌープ制御部131は、EBR競合検出フラグが1であるビットの内、最も小さなビットに対応するプロセッサを次の返信対象プロセッサと決定する(S56)。ここでは、EBR競合検出フラグが0x24であるからプロセッサ103を次の返信対象プロセッサと決定する。
【0086】
その後、レスポンス/スヌープ制御部131は、決定した次の返信対象プロセッサを示すIDをRsp_Data_CnfltのデスティネーションIDフィールドに設定する(S57)。具体的には、レスポンス/スヌープ制御部131は、次の返信対象プロセッサと決定されたプロセッサ103に対応するIDをRsp_Data_CnfltのデスティネーションIDフィールドに設定する。
【0087】
また、レスポンス/スヌープ制御部131は、決定した次の返信対象プロセッサのリクエストIDをRsp_Data_CnfltのオリジナルリクエストIDフィールドに設定する(S58)。具体的には、レスポンス/スヌープ制御部131は、プロセッサ103の発行したEBRのリクエストIDをRsp_Data_CnfltのリクエストID_2から読み出し、オリジナルリクエストIDフィールドにセットする。
【0088】
さらに、レスポンス/スヌープ制御部131は、Rsp_Data_Cnfltを発行し、決定した次の返信対象プロセッサであるプロセッサ103が接続されたレスポンス/スヌープ制御部133へ送信する(S59)。具体的には、レスポンス/スヌープ制御部131は、クロスバー141へRsp_Data_Cnfltを送信し、レスポンス/スヌープ制御部131は、レスポンス/スヌープ制御部133へ当該Rsp_Data_Cnfltを送信する。以後、レスポンス/スヌープ制御部133は、Rsp_Data_CnfltのデスティネーションIDフィールド情報に従い、適切にルーティングし、プロセッサ103へ送信する。
【0089】
以降、同様にEBRのリクエストソースであるプロセッサ103及び106に接続するレスポンス/スヌープ制御部133及び136においても、レスポンス/スヌープ制御部131同様に、図19及び図20に従った処理が行われる。
【0090】
ただし、最後のEBRソースであるプロセッサ106に接続するレスポンス/スヌープ制御部136においては、ステップS47までは、レスポンス/スヌープ制御部131及び133と同様であるが、ステップS51において、EBR競合検出フラグが全て0と判定される。そこで、レスポンス/スヌープ制御部136は、EBR競合検出フラグが全て0であると判定された場合、SBR競合検出フラグが全て0であるか否かを判定する(S52)。
【0091】
ここでは、Rsp_Data_CnfltのSBR競合検出フラグは0x48であるから、レスポンス/スヌープ制御部136は、SBR競合検出フラグの全てが0ではないと判定する。その後、レスポンス/スヌープ制御部136は、SBR競合検出フラグが1であるビットの内、最も小さなビットに対応するプロセッサであるプロセッサ104を次の返信対象プロセッサとして決定する(S55)。
【0092】
その後、レスポンス/スヌープ制御部136は、プロセッサ104を意味するIDをRsp_Data_CnfltのデスティネーションIDに設定(S57)し、Rsp_Data_CnfltのリクエストID_3の値を抜き出し、オリジナルリクエストIDに設定する(S58)。そして、レスポンス/スヌープ制御部136は、Rsp_Data_Cnfltを発行し、決定した次の返信対象プロセッサであるプロセッサ104が接続されたレスポンス/スヌープ制御部134へ送信する(S59)。
【0093】
ここで、レスポンス/スヌープ制御部134は、図19及び図20に従い、処理する。まず、レスポンス/スヌープ制御部134は、Rsp_Data_Cnfltを受信(S41)し、EBR競合検出フラグのプロセッサ104に対応するビットが1であるか否かを判定する(S42)。ここで、EBR競合検出フラグは全て0であるから、自レスポンス/スヌープ制御部の接続するプロセッサに対応するビットが1であると判定されない。そのため、レスポンス/スヌープ制御部134は、自レスポンス/スヌープ制御部の接続するプロセッサに対し、Rsp_Data_Sを返信する(S48)。すなわち、レスポンス/スヌープ制御部134は、受信したRsp_Data_Cnfltをプロセッサ104が処理可能なRsp_Data_Sに変換すると言える。
【0094】
続いて、レスポンス/スヌープ制御部134は、Rsp_Data_CnfltのSBR競合検出フラグの中の自レスポンス/スヌープ管理部の接続するプロセッサに対応するビットを0にリセットする(S49)。具体的には、レスポンス/スヌープ制御部134は、Rsp_Data_CnfltのSBR競合検出フラグの中のプロセッサ104に対応するビットを0リセットする。ここでは、SBR競合検出フラグが0x48から0x40に遷移する。
【0095】
続いて、図20へ進み、レスポンス/スヌープ制御部134は、EBR競合検出フラグが全て0であるか否かを判定する(S51)。ここでは、EBR競合検出フラグが全て0であると判定され、レスポンス/スヌープ制御部134は、SBR競合検出フラグが全て0であるか否かを判定する(S52)。ここでは、SBR競合検出フラグが0x40であるため、SBR競合検出フラグの全てが0ではないと判定される。そして、レスポンス/スヌープ制御部134は、EBR競合検出フラグが0x24であるからプロセッサ107を次の返信対象プロセッサと決定する(S55)。
【0096】
続いて、レスポンス/スヌープ制御部134は、プロセッサ107を意味するIDをRsp_Data_CnfltのデスティネーションIDに設定(S57)し、Rsp_Data_CnfltのリクエストID_6の値を抜き出し、オリジナルリクエストIDに設定する(S58)。そして、レスポンス/スヌープ制御部134は、Rsp_Data_Cnfltを発行し、決定した次の返信対象プロセッサであるプロセッサ107が接続されたレスポンス/スヌープ制御部137へ送信する(S59)。
【0097】
レスポンス/スヌープ制御部137は、レスポンス/スヌープ制御部134同様、図19及び図20に従い処理を行う。ただし、ステップS49において、プロセッサ107に対応するSBR競合検出フラグが0x40から0x00に遷移するため、ステップS52において、SBR競合検出フラグが全て0と判定され、ステップS53へ進む。
【0098】
そして、レスポンス/スヌープ制御部137は、ステップS52において、SBR競合検出フラグが全て0であると判定された場合、Cmp_IとWBを生成し、コヒーレンシ制御部へ返却する(S53)。具体的には、レスポンス/スヌープ制御部137は、図10の920同様に、Cmp_IとWBを生成し、これをコヒーレンシ制御部143へ発行する。
【0099】
その後、コヒーレンシ制御部143は、アドレス競合制御部147に格納された競合情報のValidビットを0にリセットする。また、コヒーレンシ制御部143は、WBによりMEM_RQ_Wを生成し、メモリインタフェース183を介して主記憶管理システム151に発行し、Cmpを発行する(S54)。これにより、全ての処理を終了する。
【0100】
以上に示したとおり、本発明の実施の形態2では、課題に示したように、1つのプロセッサリクエストを処理するたびにスヌープリクエスト及びそのコンプリーションが対象プロセッサとキャッシュコヒーレンシ制御部を往復するのではなく、コンプリーションなしに次のプロセッサのリクエストを処理可能とすることで、前記往復のレイテンシをなくし、システムとしてのキャッシュコヒーレンシは保証しつつアドレス競合データがプロセッサ間を直接移動する制御を可能とすることにより、アドレス競合発生時の全リクエスト処理時間を軽減する。
【0101】
<その他の発明の実施の形態>
さらに、本発明は上述した実施の形態のみに限定されるものではなく、既に述べた本発明の要旨を逸脱しない範囲において種々の変更が可能であることは勿論である。
【符号の説明】
【0102】
11 プロセッサ
12 プロセッサ
13 キャッシュメモリ
14 キャッシュメモリ
15 キャッシュメモリ制御システム
16 送受信制御部
17 コヒーレンシ制御部
18 メインメモリ
100 マルチプロセッサシステム
101 プロセッサ
102 プロセッサ
103 プロセッサ
104 プロセッサ
105 プロセッサ
106 プロセッサ
107 プロセッサ
108 プロセッサ
111 キャッシュメモリ
112 キャッシュメモリ
113 キャッシュメモリ
114 キャッシュメモリ
115 キャッシュメモリ
116 キャッシュメモリ
117 キャッシュメモリ
118 キャッシュメモリ
121 ノードコントローラ
122 ノードコントローラ
131 レスポンス/スヌープ制御部
132 レスポンス/スヌープ制御部
133 レスポンス/スヌープ制御部
134 レスポンス/スヌープ制御部
135 レスポンス/スヌープ制御部
136 レスポンス/スヌープ制御部
137 レスポンス/スヌープ制御部
138 レスポンス/スヌープ制御部
141 クロスバー
142 クロスバー
143 コヒーレンシ制御部
144 コヒーレンシ制御部
145 キャッシュステータス管理機能
146 キャッシュステータス管理機能
147 アドレス競合制御部
148 アドレス競合制御部
151 主記憶管理システム
152 主記憶管理システム
153 主記憶
154 主記憶
155 主記憶コントローラ
156 主記憶コントローラ
161 システムインタフェース
162 システムインタフェース
163 システムインタフェース
164 システムインタフェース
165 システムインタフェース
166 システムインタフェース
167 システムインタフェース
168 システムインタフェース
171 インタフェース
172 インタフェース
173 インタフェース
174 インタフェース
175 インタフェース
176 インタフェース
177 インタフェース
178 インタフェース
181 インタフェース
182 インタフェース
183 メモリインタフェース
184 メモリインタフェース
185 ノードインタフェース
301 キャッシュステータス
302 キャッシングエージェント情報
701 Validビット
702 EBR競合検出フラグ
703 EBR競合検出フラグ
704 リクエストID

【特許請求の範囲】
【請求項1】
それぞれキャッシュメモリを有する複数のプロセッサと接続される送受信制御部と、
メインメモリへアクセスし、前記複数のプロセッサが有するキャッシュメモリ間の一貫性を保つコヒーレンシ制御部と、を備え、
前記コヒーレンシ制御部は、前記複数のプロセッサから前記メインメモリへの少なくとも排他的データ読み出しを含む複数のアクセス要求における対象アドレスが競合する場合に、当該複数のアクセス要求の競合に関する情報である競合情報を含めた応答指示を前記送受信制御部へ送信し、
前記送受信制御部は、前記応答指示に含まれる競合情報に基づき、前記排他的データ読み出しをアクセス要求としたプロセッサの中から決定された返信対象のプロセッサに対して、前記アクセス要求に対応するデータを返信し、引き続き、当該返信対象のプロセッサが有するキャッシュメモリ内のデータの取得を要求するスヌープ要求を送信する、ことを特徴とするキャッシュメモリ制御システム。
【請求項2】
前記送受信制御部は、前記応答指示に含まれる競合情報に基づき、前記返信対象のプロセッサの次に返信対象となるプロセッサを決定し、前記返信対象のプロセッサからの前記スヌープ要求に対する応答を受信した後に、当該次に返信対象となるプロセッサに対して、前記アクセス要求に対応するデータを返信することを特徴とする請求項1に記載のキャッシュメモリ制御システム。
【請求項3】
前記コヒーレンシ制御部は、前記競合情報に基づき、最初の返信対象のプロセッサを決定し、当該決定した返信対象プロセッサへの応答指示として前記送受信制御部へ送信することを特徴とする請求項1又は2に記載のキャッシュメモリ制御システム。
【請求項4】
前記コヒーレンシ制御部は、前記複数のアクセス要求を行ったプロセッサと、当該アクセス要求の種別とを対応付けて前記競合情報として前記応答指示に含めることを特徴とする請求項1乃至3のいずれか1項に記載のキャッシュメモリ制御システム。
【請求項5】
前記競合情報を格納する競合情報記憶手段を備え、
前記コヒーレンシ制御部は、前記競合情報記憶手段を参照し、前記複数のアクセス要求における対象アドレスが競合するか否かを判定し、対象アドレスが競合すると判定した場合に、前記応答指示を前記送受信制御部へ送信することを特徴とする請求項1乃至4のいずれか1項に記載のキャッシュメモリ制御システム。
【請求項6】
前記コヒーレンシ制御部は、前記複数のアクセス要求を受信した場合に、前記複数のアクセス要求を行ったプロセッサと、当該アクセス要求の種別とを対応付けて前記競合情報として前記競合情報記憶手段に格納することを特徴とする請求項5に記載のキャッシュメモリ制御システム。
【請求項7】
前記返信対象のプロセッサは、前記複数のプロセッサにおける所定の順序に基づき、決定されることを特徴とする請求項1乃至6のいずれか1項に記載のキャッシュメモリ制御システム。
【請求項8】
前記競合情報は、前記メインメモリのアドレス単位に、競合有無フラグ、アクセス要求の種別及び当該アクセス要求の識別情報を含むことを特徴とする請求項1乃至7のいずれか1項に記載のキャッシュメモリ制御システム。
【請求項9】
それぞれキャッシュメモリを有する複数のプロセッサと接続される送受信制御部と、
メインメモリへアクセスし、前記複数のプロセッサが有するキャッシュメモリ間の一貫性を保つコヒーレンシ制御部と、を備えるマルチプロセッサシステムにおけるキャッシュメモリの制御方法であって、
前記送受信制御部において、前記複数のプロセッサから前記メインメモリへの少なくとも排他的データ読み出しを含む複数のアクセス要求を受信し、
前記コヒーレンシ制御部において、前記複数のアクセス要求における対象アドレスが競合する場合に、当該複数のアクセス要求の競合に関する情報である競合情報を含めた応答指示を前記送受信制御部へ送信し、
前記送受信制御部において、前記応答指示に含まれる競合情報に基づき、前記排他的データ読み出しをアクセス要求としたプロセッサの中から決定された返信対象のプロセッサに対して、前記アクセス要求に対応するデータを返信し、
引き続き、前記送受信制御部において、当該返信対象のプロセッサが有するキャッシュメモリ内のデータの取得を要求するスヌープ要求を送信する、ことを特徴とする制御方法。
【請求項10】
前記送受信制御部において、前記応答指示に含まれる競合情報に基づき、前記返信対象のプロセッサの次に返信対象となるプロセッサを決定し、前記返信対象のプロセッサからの前記スヌープ要求に対する応答を受信した後に、当該次に返信対象となるプロセッサに対して、前記アクセス要求に対応するデータを返信することを特徴とする請求項9に記載の制御方法。
【請求項11】
前記コヒーレンシ制御部において、前記競合情報に基づき、最初の返信対象のプロセッサを決定し、当該決定した返信対象プロセッサへの応答指示として前記送受信制御部へ送信することを特徴とする請求項9又は10に記載の制御方法。
【請求項12】
前記コヒーレンシ制御部において、前記複数のアクセス要求を行ったプロセッサと、当該アクセス要求の種別とを対応付けて前記競合情報として前記応答指示に含めることを特徴とする請求項9乃至11のいずれか1項に記載の制御方法。
【請求項13】
前記マルチプロセッサシステムは、前記競合情報を格納する競合情報記憶手段を備え、
前記コヒーレンシ制御部において、前記競合情報記憶手段を参照し、前記複数のアクセス要求における対象アドレスが競合するか否かを判定し、対象アドレスが競合すると判定した場合に、前記応答指示を前記送受信制御部へ送信することを特徴とする請求項9乃至12のいずれか1項に記載の制御方法。
【請求項14】
前記コヒーレンシ制御部において、前記複数のアクセス要求を受信した場合に、前記複数のアクセス要求を行ったプロセッサと、当該アクセス要求の種別とを対応付けて前記競合情報として前記競合情報記憶手段に格納することを特徴とする請求項13に記載の制御方法。
【請求項15】
前記返信対象のプロセッサは、前記複数のプロセッサにおける所定の順序に基づき、決定されることを特徴とする請求項9乃至14のいずれか1項に記載の制御方法。
【請求項16】
前記競合情報は、前記メインメモリのアドレス単位に、競合有無フラグ、アクセス要求の種別及び当該アクセス要求の識別情報を含むことを特徴とする請求項9乃至15のいずれか1項に記載の制御方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate