JP4335298B2 - スヌープ制御方法および情報処理装置 - Google Patents

スヌープ制御方法および情報処理装置 Download PDF

Info

Publication number
JP4335298B2
JP4335298B2 JP2008501535A JP2008501535A JP4335298B2 JP 4335298 B2 JP4335298 B2 JP 4335298B2 JP 2008501535 A JP2008501535 A JP 2008501535A JP 2008501535 A JP2008501535 A JP 2008501535A JP 4335298 B2 JP4335298 B2 JP 4335298B2
Authority
JP
Japan
Prior art keywords
access request
memory access
memory
target data
cache
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2008501535A
Other languages
English (en)
Other versions
JPWO2007096978A1 (ja
Inventor
剛 杉崎
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Publication of JPWO2007096978A1 publication Critical patent/JPWO2007096978A1/ja
Application granted granted Critical
Publication of JP4335298B2 publication Critical patent/JP4335298B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means

Description

本発明は、キャッシュメモリを有するマルチプロセッサ構成の情報処理装置に関するものであり、特に、メモリアクセス要求の処理時間を短縮するスヌープ制御方法および情報処理装置に関するものである。
従来から、キャッシュメモリを有するマルチプロセッサ構成の情報処理装置において、メモリアクセス要求を高速に実行するために種々の技術が考えられている。たとえば、特許文献1に記載の従来技術では、キャッシュメモリの状態として、通常のキャッシュ・プロトコル(MESIプロトコルなど)が有する変更状態、排他状態、共有状態、および無効状態に加えて、アドレス・タグは有効であるがデータ・アレイの対応するウェイに記憶されたデータ項目は無効であることを示すホバーリング状態と、データ項目のコピーを記憶する複数のキャッシュメモリの内どのキャッシュメモリが相互接続線上のトランザクションを介して共用データを最近受け取ったかを表すリーセント状態を新たに追加することで、ローカル・プロセッサが明示的な読取または書込みリクエストを発行することなく、有効アドレス・タグと関連してキャッシュメモリ内に記憶された無効データ項目を有効データによって自動的に更新する。
これにより、リモート・プロセッサのアクティビティによって無効にされたデータは、そのデータがローカル・プロセッサによってアクセスされる前にリフレッシュされるので、リモート・キャッシュメモリまたはシステムメモリからデータを検索する必要がなくなり、キャッシュメモリやシステムメモリへのアクセス待ち時間を減少させることができる。
特開平11−328026号公報
ところで、キャッシュメモリを有する複数のプロセッサ、複数の入出力装置、および複数のメモリデバイス(メインメモリ)からなる共有メモリを有するマルチプロセッサ構成の情報処理装置において、これらプロセッサ、入出力装置、およびメインメモリを複数のグループに分け、グループ毎にプロセッサ、入出力装置、およびメインメモリを管理するシステムコントローラを備えた場合について考える。
システムコントローラは、自身が管理するプロセッサからメモリアクセス要求を受けると、そのメモリアクセス要求を他のシステムコントローラに通知し、各システムコントローラは、それぞれ自身が管理するプロセッサ内のキャッシュメモリが格納するデータの状態およびデータ転送に用いる資源(キャッシュメモリに対するチップセレクト信号やリードライト制御信号などの制御バス、アドレスバス、データバス)の状態を検出してメモリアクセス要求によって要求されたデータ(対象データ)に対するキャッシュメモリのステータスを選択するスヌープ処理を実行する。
各システムコントローラは、スヌープ処理によって選択したキャッシュメモリ毎のステータスをスヌープ処理結果として他のシステムコントローラに通知し、装置内の全てのキャッシュメモリのステータスをマージして最終ステータスを決定し、決定した最終ステータスに基づいてキャッシュメモリ間またはキャッシュメモリとメインメモリとの間のメモリ間データ転送のためのメモリアクセス処理を起動するメモリアクセス起動処理を実行する。
このような従来の情報処理装置では、対象データのデータ転送が不可であることを示す「BUSY」、対象データのデータ転送が可能であることを示す「HIT」、および対象データがキャッシュメモリに存在しないことを示す「MISS」の3種類のステータスが定義されている。システムコントローラは、スヌープ処理の対象となるメモリアクセス要求(対象メモリアクセス要求)が要求するデータ(対象データ)と、メモリアクセス起動処理およびメモリアクセス処理の対象となっているメモリアクセス要求、すなわち対象メモリアクセス要求よりも前に発行され、メモリアクセス起動処理やメモリアクセス処理の対象となっているメモリアクセス要求(先行メモリアクセス要求)の対象データとが競合していること、またはデータ転送のための資源が枯渇していることを検出した場合にはステータスとして「BUSY」を選択する。
システムコントローラは、プロセッサのキャッシュメモリに対象データが存在していること、対象モリアクセス要求の対象データに対する競合がないこと、およびデータ転送のための資源が枯渇していないことを検出した場合には「HIT」を選択する。また、システムコントローラは、プロセッサのキャッシュメモリに対象データが存在していないこと、およびデータ転送のための資源が枯渇していないことを検出した場合には「MISS」を選択する。
システムコントローラは、全てのキャッシュメモリのステータスの中に「BUSY」が存在する場合には最終ステータスを「BUSY」とし、「BUSY」が存在しておらず、かつ「HIT」が存在する場合には最終ステータスを「HIT」とし、全てのステータスが「MISS」である場合には最終ステータスを「MISS」とする。すなわち、ステータス「BUSY」が最も優先順位が高く、ステータス「HIT」、ステータス「MISS」の順に優先順位が低く、システムコントローラは、全てのステータスの中で優先順位の高いステータスを最終ステータスとする。
システムコントローラは、最終ステータスが「BUSY」の場合にはスヌープ処理をリトライする。システムコントローラは、最終ステータスが「HIT」であって、かつメモリアクセス要求が対象データを参照する共有型フェッチ要求の場合には、ステータスとして「HIT」が選択されたキャッシュメモリの1つに対してデータ転送を要求するメモリアクセス処理を起動し、最終ステータスが「HIT」であって、かつメモリアクセス要求が対象データを更新することを前提とした排他型フェッチ要求である場合には、ステータスとして「HIT」が選択されたキャッシュメモリの1つに対してデータ転送を要求するとともに、ステータスとして「HIT」が選択された他のキャッシュメモリを無効化するメモリアクセス処理を起動し、最終ステータスが「HIT」であって、かつメモリアクセス要求がデータをストアするストア要求の場合には、ステータスとして「HIT」が選択された全てのキャッシュメモリを無効化するとともに、対象データをメインメモリにストアするメモリアクセス処理を起動する。また、システムコントローラは、最終ステータスが「MISS」であって、かつメモリアクセス要求が共有型フェッチ要求または排他方フェッチ要求の場合には、メインメモリからデータをリードするメモリアクセス処理を起動し、最終ステータスが「MISS」であって、かつメモリアクセス要求がストア要求の場合には、対象データをメインメモリにストアするメモリアクセス処理を起動する。
ここで、あるキャッシュメモリのステータスが「BUSY」であり、他のキャッシュメモリの内少なくとも1つのステータスが「HIT」である場合について考える。システムコントローラは、最も優先順位の高い「BUSY」を最終ステータスに決定する。上述したように、ステータスとして「BUSY」が選択されるのは、対象データに対する競合があるか、またはデータ転送のための資源が枯渇している場合である。対象データに対する競合によって「BUSY」が選択された場合は、先行メモリアクセス要求に対するメモリアクセス処理によってキャッシュメモリのデータが変更される可能性がある。そのため、先行メモリアクセス要求のメモリアクセス処理が終了して、キャッシュメモリの状態が確定するまでスヌープ処理をリトライする必要がある。
一方、対象データに対する競合はなく、データ転送のための資源が枯渇しているためにステータスとして「BUSY」が選択された場合は、キャッシュメモリへのアクセスは不可であるが、対象データに対する競合が無いため先行メモリアクセス要求のメモリアクセス処理が実行されても、対象メモリアクセス要求の対象データを格納するキャッシュメモリの領域のデータは更新されることはない。すなわち、対象メモリアクセス要求の対象データに関する領域のキャッシュメモリの状態が変更されることはない。したがって、ステータスとして「HIT」が選択されたキャッシュメモリに格納されたデータを使用することが可能である。
しかしながら、従来の情報処理装置では、全てのキャッシュメモリのステータスの中に「BUSY」と選択されたキャッシュメモリが1つでも存在すると最終ステータスは「BUSY」となり、実際には使用可能なデータが存在する場合でもスヌープ処理のリトライが発生してしまい、キャッシュメモリへのアクセス待ち時間が長くなり、結果的にメモリアクセス要求の処理時間が長くなってしまうという問題があった。
本発明は、上述した従来技術による問題点を解消し、上記課題を解決するためになされたものであって、スヌープ処理のリトライ回数を削減してメモリアクセス要求の処理時間を短縮するスヌープ制御方法および情報処理装置を目的とする。
上述した課題を解決し、目的を達成するために、本発明は、キャッシュメモリを有する複数のCPUと、共有メモリを構成する複数のメインメモリとをグループ分けし、グループ毎にCPUとメインメモリとを管理し前記キャッシュメモリ間または前記キャッシュメモリとメインメモリとの間のデータ転送を制御するシステムコントローラを備える情報処理装置に適用されるスヌープ制御方法であって、前記システムコントローラは、自身が管理するCPUからのメモリアクセス要求を受けて他のシステムコントローラに通知するメモリアクセス要求通知ステップと、自身が管理するCPUからのメモリアクセス要求、または前記メモリアクセス要求通知ステップによって他のシステムコントローラからメモリアクセス要求を受けると、前記メモリアクセス要求の要求する対象データが前記メモリアクセス要求よりも先に受けた先行メモリアクセス要求の要求する対象データと競合するか否か、前記メモリアクセス要求の要求する対象データが自身が管理するキャッシュメモリ内に存在するか否か、前記メモリアクセス要求の要求する対象データを転送するための資源が枯渇しているか否かを自身が管理するCPU内のキャッシュメモリ毎に判定する判定ステップと、前記判定ステップによって、前記メモリアクセス要求の要求する対象データが前記先行メモリアクセス要求の要求する対象データと競合すると判定した場合には、当該キャッシュメモリのステータスとして「BUSY」を選択し、前記メモリアクセス要求の要求する対象データが前記先行メモリアクセス要求の要求する対象データと競合しておらず、前記メモリアクセス要求の要求する対象データが自身が管理するキャッシュメモリ内に存在し、かつ前記メモリアクセス要求の要求する対象データを転送するための資源が枯渇していないと判定した場合には、当該キャッシュメモリのステータスとして「HIT」を選択し、前記メモリアクセス要求の要求する対象データが前記先行メモリアクセス要求の要求する対象データと競合しておらず、前記メモリアクセス要求の要求する対象データが自身が管理するキャッシュメモリ内に存在し、かつ前記メモリアクセス要求の要求する対象データを転送するための資源が枯渇していると判定した場合には、当該キャッシュメモリのステータスとして「HIT&BUSY」を選択し、前記メモリアクセス要求の要求する対象データが前記先行メモリアクセス要求の要求する対象データと競合しておらず、かつ前記メモリアクセス要求の要求する対象データが自身が管理するキャッシュメモリ内に存在しない場合には、当該キャッシュメモリのステータスとして「MISS」を選択するステータス選択ステップと、前記ステータス選択ステップによって選択したステータスとキャッシュメモリとを対応付けたスヌープ処理結果を他のシステムコントローラに通知するスヌープ処理結果通知ステップと、前記スヌープ処理結果通知ステップによって通知されたスヌープ処理結果および自身のスヌープ処理結果に含まれるすべてのステータスの中に「BUSY」が存在する場合には最終ステータスを「BUSY」とし、すべてのステータスの中に「BUSY」が存在せず、かつ「HIT」が存在する場合には最終ステータスを「HIT」とし、すべてのステータスの中に「BUSY」および「HIT」が存在せず、かつ「HIT&BUSY」が存在する場合には最終ステータスを「HIT&BUSY」とし、すべてのステータスが「MISS」の場合には最終ステータスを「MISS」とする最終ステータス決定ステップと、前記最終ステータス選択ステップによって、最終ステータスが「BUSY」または「HIT&BUSY」と決定された場合には、前記判定ステップ、前記ステータス選択ステップ、前記スヌープ処理結果通知ステップ、および最終ステータス決定ステップを繰り返し、最終ステータスが「HIT」と決定された場合には、ステータスが「HIT」であるキャッシュメモリを有するCPUと、メモリアクセス要求を発行したCPUとの物理的な距離に基づいて1つのCPUを選択し、選択したCPUが自身が管理するCPUの場合には選択したCPUのキャッシュメモリへのメモリアクセス処理を起動してデータ転送を実行させ、前記最終ステータスが「MISS」の場合には、前記メモリアクセス要求の対象データを有するメインメモリが自身が管理するメインメモリであるか否かを判定し、判定の結果自身が管理するメインメモリである場合当該メインメモリへのアクセス処理を起動してデータ転送を実行させるメモリアクセス処理起動ステップと、実行することを特徴とする。
また、本発明は、上記発明において、前記キャッシュメモリ間のデータ転送の単位であるキャッシュラインのバイト数よりも、前記メインメモリから前記キャッシュメモリへのデータ転送の単位であるエントリーのバイト数が大きい場合であって、かつ前記メモリアクセス要求が対象データの読み出しを要求するフェッチ要求の場合、前記判定ステップは、前記メモリアクセス要求の要求する対象データと、前記先行メモリアクセス要求の対象データとが同一エントリー内のデータであるか否かの判定をさらに含み、前記ステータス選択ステップは、前記メモリアクセス要求の要求する対象データが前記先行メモリアクセス要求の要求する対象データと競合しておらず、前記メモリアクセス要求の要求する対象データが自身が管理するキャッシュメモリ内に存在しておらず、かつメモリアクセス要求の要求する対象データが前記先行メモリアクセス要求の対象データと同一エントリー内のデータである場合には、当該キャッシュメモリのステータスとして「MISS&BUSY」を選択し、前記最終ステータス選択ステップは、「BUSY」、「HIT」&「HIT&BUSY」が存在せず、かつ「MISS&BUSY」が存在する場合には最終ステータスを「MISS&BUSY」とし、前記メモリアクセス処理起動ステップは、前記最終ステータスが「MISS&BUSY」の場合も、前記判定ステップ、前記ステータス選択ステップ、前記スヌープ処理結果通知ステップ、および最終ステータス決定ステップを繰り返すこと、を特徴とする。
また、本発明は、キャッシュメモリを有する複数のCPUと、共有メモリを構成する複数のメインメモリとをグループ分けし、グループ毎にCPUとメインメモリとを管理し前記キャッシュメモリ間または前記キャッシュメモリとメインメモリとの間のデータ転送を制御するシステムコントローラを備える情報処理装置において、前記各システムコントローラは、自身が管理するCPUからのメモリアクセス要求を受けて他のシステムコントローラに通知するブロードキャスト送受信部と、自身が管理するCPUからのメモリアクセス要求、または前記ブロードキャスト送受信部を介した他のシステムコントローラからのメモリアクセス要求を受けると、前記メモリアクセス要求の要求する対象データが前記メモリアクセス要求よりも先に受けた先行メモリアクセス要求の要求する対象データと競合するか否か、前記メモリアクセス要求の要求する対象データが自身が管理するキャッシュメモリ内に存在するか否か、前記メモリアクセス要求の要求する対象データを転送するための資源が枯渇しているか否かを自身が管理するCPU内のキャッシュメモリ毎に判定し、前記メモリアクセス要求の要求する対象データが前記先行メモリアクセス要求の要求する対象データと競合すると判定した場合には、当該キャッシュメモリのステータスとして「BUSY」を選択し、前記メモリアクセス要求の要求する対象データが前記先行メモリアクセス要求の要求する対象データと競合しておらず、前記メモリアクセス要求の要求する対象データが自身が管理するキャッシュメモリ内に存在し、かつ前記メモリアクセス要求の要求する対象データを転送するための資源が枯渇していないと判定した場合には、当該キャッシュメモリのステータスとして「HIT」を選択し、前記メモリアクセス要求の要求する対象データが前記先行メモリアクセス要求の要求する対象データと競合しておらず、前記メモリアクセス要求の要求する対象データが自身が管理するキャッシュメモリ内に存在し、かつ前記メモリアクセス要求の要求する対象データを転送するための資源が枯渇していると判定した場合には、当該キャッシュメモリのステータスとして「HIT&BUSY」を選択し、前記メモリアクセス要求の要求する対象データが前記先行メモリアクセス要求の要求する対象データと競合しておらず、かつ前記メモリアクセス要求の要求する対象データが自身が管理するキャッシュメモリ内に存在しない場合には、当該キャッシュメモリのステータスとして「MISS」を選択し、選択したステータスとキャッシュメモリとを対応付けたスヌープ処理結果を他のシステムコントローラに通知するスヌープ処理を実行し、このスヌープ処理によって通知されたスヌープ処理結果および自身のスヌープ処理結果に含まれるすべてのステータスの中に「BUSY」が存在する場合には最終ステータスを「BUSY」とし、すべてのステータスの中に「BUSY」が存在せず、かつ「HIT」が存在する場合には最終ステータスを「HIT」とし、すべてのステータスの中に「BUSY」および「HIT」が存在せず、かつ「HIT&BUSY」が存在する場合には最終ステータスを「HIT&BUSY」とし、すべてのステータスが「MISS」の場合には最終ステータスを「MISS」とし、最終ステータスが「BUSY」または「HIT&BUSY」と決定された場合には前記スヌープ処理をリトライし、最終ステータスが「HIT」と決定された場合には、ステータスが「HIT」であるキャッシュメモリを有するCPUと、メモリアクセス要求を発行したCPUとの物理的な距離に基づいて1つのCPUを選択し、選択したCPUが自身が管理するCPUの場合には選択したCPUのキャッシュメモリへのメモリアクセス処理を起動してデータ転送を実行させ、前記最終ステータスが「MISS」の場合には、前記メモリアクセス要求の対象データを有するメインメモリが自身が管理するメインメモリであるか否かを判定し、判定の結果自身が管理するメインメモリである場合当該メインメモリへのアクセス処理を起動してデータ転送を実行させるスヌープ制御部と、を備えることを特徴とする。
また、本発明は、上記発明において、前記キャッシュメモリ間のデータ転送の単位であるキャッシュラインのバイト数よりも、前記メインメモリから前記キャッシュメモリへのデータ転送の単位であるエントリーのバイト数が大きい場合であって、かつ前記メモリアクセス要求が対象データの読み出しを要求するフェッチ要求の場合、前記スヌープ制御部は、メモリアクセス要求の要求する対象データと、前記先行メモリアクセス要求の対象データとが同一エントリー内のデータであるか否かを判定し、前記メモリアクセス要求の要求する対象データが前記先行メモリアクセス要求の要求する対象データと競合しておらず、前記メモリアクセス要求の要求する対象データが自身が管理するキャッシュメモリ内に存在しておらず、かつ前記メモリアクセス要求の要求する対象データが前記先行メモリアクセス要求の対象データと同一エントリー内のデータである場合には、当該キャッシュメモリのステータスとして「MISS&BUSY」を選択し、「BUSY」、「HIT」&「HIT&BUSY」が存在せず、かつ「MISS&BUSY」が存在する場合には最終ステータスを「MISS&BUSY」として前記スヌープ処理をリトライすること、を特徴とする。
本発明によれば、スヌープ処理をリトライするステータスとして、対象メモリアクセス要求の要求する対象データが先行メモリアクセス要求の要求する対象データと競合しており、装置全体としてデータ転送が不可能な状態を示す「BUSY」と、対象メモリアクセス要求の要求する対象データが先行メモリアクセス要求の要求する対象データと競合しておらず、メモリアクセス要求の要求する対象データが自身が管理するキャッシュメモリ内に存在し、かつ前記メモリアクセス要求の要求する対象データを転送するための資源が枯渇している状態、すなわち自身が管理するキャッシュメモリからのデータ転送が不可能な状態を示す「HIT&BUSY」との2つのステータスを設け、最終ステータスを決定する「HIT&BUSY」の優先順位を、データ転送が可能であることを示す「HIT」よりも低くしているため、任意のシステムコントローラでみた場合にはデータ転送が不可能であっても、他のシステムコントローラがデータ転送が可能な場合にはスヌープ処理をリトライすることなくデータ転送を実行することが可能となり、スヌープ処理のリトライ回数を削減してメモリアクセス要求の処理時間を短縮することができるスヌープ制御方法を得ることができるという効果を奏する。
また、本発明によれば、キャッシュメモリ間のデータ転送の単位であるキャッシュラインのバイト数よりも、メインメモリからキャッシュメモリへのデータ転送の単位であるエントリーのバイト数が大きい場合であって、かつメモリアクセス要求が対象データの読み出しを要求するフェッチ要求の場合、スヌープ処理をリトライするステータスとして、メモリアクセス要求の要求する対象データが先行メモリアクセス要求の要求する対象データと競合しておらず、メモリアクセス要求の要求する対象データが自身が管理するキャッシュメモリ内に存在しておらず、かつメモリアクセス要求の要求する対象データが先行メモリアクセス要求の対象データと同一エントリー内のデータである状態、すなわち自身が管理するキャッシュメモリからのデータ転送が不可能な状態を示す「MISS&BUSY」のステータスをさらに設け、最終ステータスを決定する「MISII&BUSY」の優先順位を、データ転送が可能であることを示す「HIT」よりも低くしているため、キャッシュメモリ間のデータ転送の単位であるキャッシュラインのバイト数よりも、メインメモリからキャッシュメモリへのデータ転送の単位であるエントリーのバイト数が大きい場合において、任意のシステムコントローラでみた場合にはデータ転送が不可能であっても、他のシステムコントローラがデータ転送が可能な場合にはスヌープ処理をリトライすることなくデータ転送を実行することが可能となり、スヌープ処理のリトライ回数を削減してメモリアクセス要求の処理時間を短縮することができるスヌープ制御方法を得ることができるという効果を奏する。
本発明によれば、スヌープ処理をリトライするステータスとして、対象メモリアクセス要求の要求する対象データが先行メモリアクセス要求の要求する対象データと競合しており、装置全体としてデータ転送が不可能な状態を示す「BUSY」と、対象メモリアクセス要求の要求する対象データが先行メモリアクセス要求の要求する対象データと競合しておらず、メモリアクセス要求の要求する対象データが自身が管理するキャッシュメモリ内に存在し、かつ前記メモリアクセス要求の要求する対象データを転送するための資源が枯渇している状態、すなわち自身が管理するキャッシュメモリからのデータ転送が不可能な状態を示す「HIT&BUSY」との2つのステータスを設け、最終ステータスを決定する「HIT&BUSY」の優先順位を、データ転送が可能であることを示す「HIT」よりも低くしているため、任意のシステムコントローラでみた場合にはデータ転送が不可能であっても、他のシステムコントローラがデータ転送が可能な場合にはスヌープ処理をリトライすることなくデータ転送を実行することが可能となり、スヌープ処理のリトライ回数を削減してメモリアクセス要求の処理時間を短縮することができる情報処理装置を得ることができるという効果を奏する。
また、本発明によれば、キャッシュメモリ間のデータ転送の単位であるキャッシュラインのバイト数よりも、メインメモリからキャッシュメモリへのデータ転送の単位であるエントリーのバイト数が大きい場であって、かつメモリアクセス要求が対象データの読み出しを要求するフェッチ要求の場合、スヌープ処理をリトライするステータスとして、メモリアクセス要求の要求する対象データが先行メモリアクセス要求の要求する対象データと競合しておらず、メモリアクセス要求の要求する対象データが自身が管理するキャッシュメモリ内に存在しておらず、かつメモリアクセス要求の要求する対象データが先行メモリアクセス要求の対象データと同一エントリー内のデータである状態、すなわち自身が管理するキャッシュメモリからのデータ転送が不可能な状態を示す「MISS&BUSY」のステータスをさらに設け、最終ステータスを決定する「MISII&BUSY」の優先順位を、データ転送が可能であることを示す「HIT」よりも低くしているため、キャッシュメモリ間のデータ転送の単位であるキャッシュラインのバイト数よりも、メインメモリからキャッシュメモリへのデータ転送の単位であるエントリーのバイト数が大きい場合において、任意のシステムコントローラでみた場合にはデータ転送が不可能であっても、他のシステムコントローラがデータ転送が可能な場合にはスヌープ処理をリトライすることなくデータ転送を実行することが可能となり、スヌープ処理のリトライ回数を削減してメモリアクセス要求の処理時間を短縮することができる情報処理装置を得ることができるという効果を奏する。
以下に、本発明におけるスヌープ制御方法および情報処理装置の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
図1〜図7を用いてこの発明における情報処理装置の実施例を説明する。図1は、この発明における情報処理装置の構成を示す図である。図1において、情報処理装置は、バスによって接続される複数(この場合は2つ)のシステムボードSB0,SB1を備えている。
システムボードSB0は、キャッシュメモリ11a,11bを有するCPU1a,1bと、入出力装置(以下、IO装置とする)2a,2bと、メインメモリ3a,3bと、システムコントローラSC0とを備えている。また、システムボードSB1は、キャッシュメモリ11c,11dを有するCPU1c,1dと、IO装置2c,2dと、メインメモリ3c,3dと、システムコントローラSC1とを備えている。
メインメモリ3(3a〜3dを示す)は、キャッシュメモリ11(11a〜11dを示す)よりも記憶容量が大きくて、かつキャッシュメモリ11よりもアクセス速度が遅いメモリデバイスで構成され、情報処理装置の共有メモリとして用いられ、CPU1(1a〜1dを示す)が実行するプログラムを含むデータを格納する。
キャッシュメモリ11は、メインメモリ3よりも記憶容量が小さくて、かつメインメモリ3よりもアクセス速度が速いメモリデバイスで構成され、CPU1が発行するメモリアクセス要求によって実行されるキャッシュメモリ11間、またはキャッシュメモリ11とメインメモリ3間のデータ転送によりメインメモリ3が格納するデータの一部を格納する。
システムコントローラSC(SC0,SC1を示す)は、自身が搭載されるシステムボードSB(SB0,SB1を示す)に搭載されるCPU1、IO装置2、およびメインメモリ3を管理する。図1においては、システムコントローラSC0は、CPU1a,1b、IO装置2a,2b、およびメインメモリ3a,3bを管理し、システムコントローラSC1は、CPU1c,1d、IO装置2c,2d、およびメインメモリ3c,3dを管理する。
また、システムコントローラSCは、たとえば、MESIプロトコルやMOESIプロトコルなどの予め定められたキャッシュプロトコルに基づいてCPU1内のキャッシュメモリ11の状態を管理し、CPU1またはIO装置2からのメモリアクセス要求によりキャッシュメモリ11間のコヒーレンスを保ちつつ、キャッシュメモリ11間およびキャッシュメモリ11とメインメモリ3との間のデータ転送を制御する。
図2は、CPU1またはIO装置2からのメモリアクセス要求に対するデータ転送におけるメモリアクセス処理の起動に関するシステムコントローラSCの構成を示すブロック図である。図2において、システムコントローラSC0は、メモリアクセス要求受信部4aと、ブロードキャスト送受信部5aと、スヌープ制御部6aと、CPUリクエスト発行部7aと、MSアクセス発行部8aと、キャッシュ管理テーブル9aとを備えている。また、システムコントローラSC1は、メモリアクセス要求受信部4cと、ブロードキャスト送受信部5cと、スヌープ制御部6cと、CPUリクエスト発行部7cと、MSアクセス発行部8cと、キャッシュ管理テーブル9cとを備えている。
キャッシュ管理テーブル9(9a,9cを示す)には、自身が搭載されるシステムコントローラSCが管理するCPU1が有するキャッシュメモリ11の状態が登録され、メモリアクセス要求によって要求されたデータがキャッシュメモリ11に存在しているか否かの判定に用いられる。
キャッシュメモリ11間のデータ転送、およびキャッシュメモリ11からメインメモリ3へのデータ転送はキャッシュライン単位で実行され、メインメモリ3からキャッシュメモリ11へのデータ転送はエントリー単位で実行される。エントリーのバイト数とキャッシュラインのバイト数は、「エントリーのバイト数=キャッシュラインのバイト数×n(nは自然数)」が成り立つように予め定められている。よって、キャッシュメモリ11の状態はキャッシュライン毎に管理する。
図3は、キャッシュ管理テーブル9aの構成の一例を示す図である。図3において、キャッシュ管理テーブル9aには、キャッシュメモリ11a,11bのキャッシュラインを識別するためのキャッシュライン識別子が登録されるサブブロック情報に対応付けて、当該キャッシュラインが格納するデータとメインメモリ3のデータとの対応付けを示すメインメモリ情報、および当該キャッシュラインが格納するデータの状態(有効/無効)を示すキャッシュライン状態情報が登録される。
図3に示したキャッシュ管理テーブル9aは、キャッシュプロトコルとしてMESIプロトコルを用いた場合であり、キャッシュライン状態としては、キャッシュラインに有効な状態が格納されていないことを示す「無効」と、キャッシュラインが格納するデータが更新されており、当該データのコピーが他のキャッシュメモリ11のキャッシュラインおよびメインメモリ3に存在しない状態を示す「更新・排他」と、キャッシュラインが格納するデータが未変更であって、かつ当該データのコピーが他のキャッシュメモリ11のキャッシュラインに存在しない状態を示す「未更新・排他」と、キャッシュラインが格納するデータが未変更であって、かつ当該データのコピーが他のキャッシュメモリ11のキャッシュラインに存在することを示す「未変更・共有」の4つの状態を有している。この場合は、「無効」がキャッシュラインが格納するデータが「無効」であることを意味し、「更新・排他」、「未更新・排他」、および「未更新・共有」がキャッシュラインが格納するデータが「有効」であることを意味している。
図2に戻って、メモリアクセス要求受信部4(4a,4cを示す)は、自身が搭載されるシステムコントローラSCが管理するCPU1およびIO装置2が発行するメモリアクセス要求を受信する。メモリアクセス要求受信部4は、受信したメモリアクセス要求をブロードキャスト送受信部5に出力する。
ブロードキャスト送受信部5(5a,5cを示す)は、システムコントローラSC間の通信インタフェースを有し、メモリアクセス要求受信部4から入力されるメモリアクセス要求をスヌープ制御部6(6a,6cを示す)に出力するとともに、全てのシステムコントローラSCに送信する。また、他のシステムコントローラSCからのメモリアクセス要求を受信してスヌープ制御部6に出力する。すなわち、ブロードキャスト送受信部5は、自身が搭載されるシステムコントローラSCが管理するCPU1およびIO装置2が発行したメモリアクセス要求を全てのシステムコントローラSC内のスヌープ制御部6にブロードキャストする。
スヌープ制御部6は、メモリアクセス要求を受けると、自身が搭載されるシステムコントローラSCが管理するCPU1内のキャッシュメモリ11のキャッシュラインの状態(メモリアクセス要求によって要求されるデータがキャッシュメモリ11のキャッシュラインに存在するか否か)およびデータ転送に用いる資源(キャッシュメモリに対するチップセレクト信号やリードライト制御信号などの制御バス、アドレスバス、データバス)の状態を検出してメモリアクセス要求によって要求されたデータ(対象データ)に対するキャッシュメモリ11毎のステータスを選択するスヌープ処理を実行する。
また、スヌープ制御部6は、スヌープ処理によって選択したキャッシュメモリ11毎のステータスをスヌープ処理結果として他のスヌープ制御部6に通知し、装置内すべてのキャッシュメモリ11のステータスをマージして最終ステータスを決定し、決定したステータスに基づいてキャッシュメモリ11間、またはキャッシュメモリ11とメインメモリ3との間のメモリ間データ転送のためのメモリアクセス処理を起動するメモリアクセス起動処理を実行する。
図4は、スヌープ制御部6がスヌープ処理によって選択するステータスの種類と選択条件を示す図である。本発明においては、「BUSY」、「HIT」、「HIT&BUSY」、「MISS&BUSY」、「MISS」の5種類のステータスを定義する。
「BUSY」は、現時点でキャッシュメモリ11に対象メモリアクセス要求の対象データが存在するかを特定することができないことを示すステータスである。対象メモリアクセス要求の対象データと、メモリアクセス起動処理およびメモリアクセス処理の対象となっているメモリアクセス要求、すなわち対象メモリアクセス要求よりも前に発行され、メモリアクセス起動処理やメモリアクセス処理の対象となっているメモリアクセス要求(先行メモリアクセス要求)の対象データとが競合している場合(対象メモリアクセス要求の対象データと先行メモリアクセス要求の対象データとが同一のキャッシュラインに存在する場合)、先行メモリアクセス要求のメモリアクセス処理によってキャッシュメモリ11のキャッシュラインの状態は変化する。そのため、現時点では対象メモリアクセス要求の対象データがどのキャッシュメモリ11に存在するかを特定することができない。したがって、対象メモリアクセス要求の対象データと先行メモリアクセス要求の対象データとが競合していることが「BUSY」の選択条件となる。
「HIT」は、キャッシュメモリ11に対象メモリアクセス要求の対象データとして使用可能なデータが存在することを示すステータスである。対象メモリアクセス要求の対象データと先行メモリアクセス要求の対象データとが競合していない(「BUSY」ではない)場合であって、対象メモリアクセス要求の対象データがキャッシュメモリ11のサブブロックに存在しており、かつデータ転送のための資源が枯渇していなければ、キャッシュメモリ11のデータを転送することができる。したがって、対象メモリアクセス要求の対象データと先行メモリアクセス要求の対象データとが競合していないこと、メモリアクセス要求の対象データがキャッシュメモリ11に存在していること、およびデータ転送のための資源が枯渇していないことが「HIT」の選択条件となる。なお、データ転送のための資源の枯渇とは、先行メモリアクセス要求のメモリアクセス処理によってキャッシュメモリ11にアクセスしており、対象メモリアクセス要求の対象データへのアクセスができない状態のことである。
「HIT&BUSY」は、対象メモリアクセス要求の対象データがキャッシュメモリ11に存在するが、そのデータを転送することができないことを示すステータスである。対象メモリアクセス要求の対象データと先行メモリアクセス要求の対象データとが競合していない(「BUSY」ではない)場合であって、かつ対象メモリアクセス要求の対象データがキャッシュメモリ11に存在している場合でも、データ転送のための資源が枯渇しているとデータを転送することはできない。したがって、対象メモリアクセス要求の対象データと先行メモリアクセス要求の対象データとが競合していないこと、メモリアクセス要求の対象データがキャッシュメモリ11に存在していること、およびデータ転送のための資源が枯渇していることが「HIT&BUSY」の選択条件となる。
「MISS&BUSY」は、現時点では対象メモリアクセス要求の対象データがキャッシュメモリ11に存在していないが先行メモリアクセス要求のメモリアクセス処理によってキャッシュメモリ11の状態が変更され対象メモリアクセス要求の対象データが存在する可能性があることを示すステータスである。
先行メモリアクセス要求が対象データを参照する共有型フェッチ要求、または対象データを更新することを前提とした排他型フェッチ要求であって、かつ先行メモリアクセス要求に対する最終ステータスが決定していない場合、キャッシュメモリ11間のデータ転送が行われるのか、メインメモリ3からキャッシュメモリ11へのデータ転送が行われるのかを判断することはできない。
上述したように、キャッシュメモリ11間のデータ転送はキャッシュライン単位で実行され、メインメモリ3からキャッシュメモリ11へのデータ転送はエントリー単位で実行され、「エントリーのバイト数=キャッシュラインのバイト数×n」が成り立つように定められている。n=1の場合はエントリーのバイト数とキャッシュラインのバイト数とが同一バイト数であるので、キャッシュメモリ11間のデータ転送が行われても、メインメモリ3からキャッシュメモリ11へのデータ転送が行われても、キャッシュメモリ11内の1つのキャッシュラインの状態が変更されるだけである。
しかし、n≠1の場合はエントリーのバイト数の方がキャッシュラインのバイト数よりも大きくなる。たとえば、n=4の場合、先行メモリアクセス要求によってメインメモリ3からキャッシュメモリ11へのデータ転送が行われると、メインメモリ3から4つのキャッシュラインへデータが転送される。そのため、その1つのキャッシュラインに対象メモリアクセス要求の対象データが存在する可能性がある。すなわち、対象メモリアクセス要求の対象データが先行メモリアクセス要求の対象データと同一エントリーに存在している場合、データが競合する可能性がある。
「MISS&BUSY」はエントリーのバイト数の方がキャッシュラインのバイト数よりも大きく設定されている場合のみ存在するステータスであり、対象メモリアクセス要求の対象データと先行メモリアクセス要求の対象データとが競合していないこと、メモリアクセス要求の対象データがキャッシュメモリ11に存在していないこと、および先行メモリアクセス要求の最終ステータスによって対象メモリアクセス要求の対象データがキャッシュメモリに存在する可能性があることが「MISS&BUSY」の選択条件となる。
「MISS」は、メインメモリ3からデータを転送する必要があることを示すステータスである。すなわち、対象メモリアクセス要求の対象データと先行メモリアクセス要求の対象データとが競合していない(「BUSY」ではない)場合であって、現時点でキャッシュメモリ11に先行メモリアクセス要求の対象データが存在していない場合である。したがって、対象メモリアクセス要求の対象データと先行メモリアクセス要求の対象データとが競合していないこと、キャッシュメモリ11にメモリアクセス要求の対象データが存在していないこと、および先行メモリアクセス要求の最終ステータスによって対象メモリアクセス要求の対象データがキャッシュメモリに存在する可能性がないことが、「MISS」の選択条件となる。
スヌープ制御部6は、自身が搭載されるシステムコントローラSCが管理するCPU1内のキャッシュメモリ11毎に「BUSY」、「HIT」、「HIT&BUSY」、「MISS&BUSY」、および「MISS」の5つのステータスのいずれかを選択するスヌープ処理が終了すると、選択したキャッシュメモリ11毎のステータスをスヌープ処理結果として他のスヌープ処理部に通知する。そして、自身および他のスヌープ制御部6から得られた装置内すべてのキャッシュメモリ11のステータスをマージして最終ステータスを決定する。
ここで、ステータスの優先順位は、「BUSY」の優先順位が最も高く、「HIT」は「BUSY」のつぎに優先順位が高く、「HIT&BUSY」は「HIT」のつぎに優先順位が高く、「MISS&BUSY」は「HIT&BUSY」のつぎに優先順位が高く、「MISS」の優先順位は最も低く設定する。したがって、キャッシュメモリ11のステータスに「BUSY」が存在する場合には最終ステータスは「BUSY」となり、キャッシュメモリ11のステータスに「BUSY」存在せず「HIT」が存在する場合には最終ステータスは「HIT」となり、キャッシュメモリ11のステータスに「BUSY」および「HIT」が存在せずに「HIT&BUSY」が存在する場合には最終ステータスは「HIT&BUSY」となり、キャッシュメモリ11のステータスに「BUSY」、「HIT」、および「HIT&BUSY」が存在せずに「MISS&BUSY」が存在する場合には最終ステータスは「MISS&BUSY」となり、キャッシュメモリ11のステータスがすべて「MISS」の場合には最終ステータスは「MISS」となる。
スヌープ制御部6は、決定した最終ステータス、およびメモリアクセス要求に基づいてメモリアクセス処理を起動するメモリアクセス起動処理を実行する。具体的には、図5に示すように、最終ステータスが「BUSY」、「HIT&BUSY」、または「MISS&BUSY」の場合、スヌープ制御部6は、メモリアクセス要求の種類に依存することなくスヌープ処理をリトライする。
最終ステータスが「HIT」であって、かつメモリアクセス要求が共有型フェッチ要求の場合、スヌープ制御部6は、ステータスが「HIT」であるキャッシュメモリ11の1つに対してデータ転送を要求するメモリアクセス処理を起動する。
詳細には、スヌープ制御部6は、データを要求しているCPU1が有するキャッシュメモリ11と、ステータスが「HIT」となっているキャッシュメモリ11を有するCPU1との物理的な距離が最も近いCPU1を選択する。選択したCPU1が自身を搭載するシステムコントローラSCが管理するCPU1の場合、スヌープ制御部6はキャッシュメモリ11に対してデータ転送を要求するメモリアクセス処理を起動する。
最終ステータスが「HIT」であって、かつメモリアクセス要求が排他型フェッチ要求の場合、スヌープ制御部6は、ステータスが「HIT」であるキャッシュメモリ11の1つに対してデータ転送を要求するとともに、他のステータスが「HIT」であるキャッシュメモリ11を無効にするメモリアクセス処理を起動する。
詳細には、スヌープ制御部6は、データを要求しているCPU1(転送先)と、ステータスが「HIT」となっているキャッシュメモリ11を有するCPU1(転送元)との物理的な距離が最も近いCPU1を選択する。選択したCPU1が自身を搭載するシステムコントローラSCが管理するCPU1の場合、スヌープ制御部6は、キャッシュメモリ11に対して対象データを格納するキャッシュラインのデータ転送を要求するとともに、対象データを格納する他のキャッシュメモリ11のキャッシュラインに対応付けてキャッシュ管理テーブル9に登録されているキャッシュライン状態情報を「無効」にするメモリアクセス処理を起動する。選択したCPU1が自身を搭載するシステムコントローラSCが管理するCPU1ではない場合、スヌープ制御部6は、対象データを格納するキャッシュメモリ11のキャッシュラインに対応付けてキャッシュ管理テーブル9に登録されているキャッシュライン状態情報を「無効」にするメモリアクセス処理を起動する。
最終ステータスが「HIT」であって、かつメモリアクセス要求がストア要求の場合、スヌープ制御部6は、ステータスが「HIT」となっているキャッシュメモリ11を無効にし、メインメモリ3に対象データをストアするメモリアクセス処理を起動する。
詳細には、スヌープ制御部6は、ストア要求に含まれるアドレスおよびメインメモリ3に割当てられているアドレス空間に基づいて、ストア要求の対象データをストアするメインメモリ3が、自身を搭載するシステムコントローラSCが管理するメインメモリ3であるか否かを判定する。ストア要求の対象データをストアするメインメモリ3が、自身を搭載するシステムコントローラSCが管理するメインメモリ3である場合、スヌープ制御部6は、ストア要求に含まれる対象データをメインメモリ3にストアするとともに、ストア要求に含まれるアドレスのデータを格納しているキャッシュメモリ11のキャッシュラインに対応付けて登録されているキャッシュライン情報を「無効」にするメモリアクセス処理を起動する。ストア要求の対象データをストアするメインメモリ3が、自身を搭載するシステムコントローラSCが管理するメインメモリ3ではない場合、スヌープ制御部6は、ストア要求に含まれるアドレスのデータを格納しているキャッシュメモリ11のキャッシュラインに対応付けてキャッシュ管理テーブル9に登録されているキャッシュライン情報を「無効」にするメモリアクセス処理を起動する。
最終ステータスが「MISS」であって、かつメモリアクセス要求が共有型フェッチ要求または排他型フェッチ要求の場合、スヌープ制御部6は、メインメモリから対象データをリードするメモリアクセス処理を起動する。
詳細には、スヌープ制御部6は、共有型フェッチ要求または排他型フェッチ要求に含まれるアドレスおよびメインメモリ3に割当てられているアドレス空間に基づいて、共有型フェッチ要求または排他型フェッチ要求の対象データを格納するメインメモリ3が、自身を搭載するシステムコントローラSCが管理するメインメモリ3であるか否かを判定する。共有型フェッチ要求または排他型フェッチ要求の対象データを格納するメインメモリ3が、自身を搭載するシステムコントローラSCが管理するメインメモリ3である場合、スヌープ制御部6は、メインメモリ3に対してデータ転送を要求するメモリアクセス処理を起動する。
最終ステータスが「MISS」であって、かつメモリアクセス要求がストア要求の場合、スヌープ制御部6は、メインメモリ3に対象データをストアするメモリアクセス処理を起動する。
詳細には、スヌープ制御部6は、ストア要求に含まれるアドレスおよびメインメモリ3に割当てられているアドレス空間に基づいて、ストア要求の対象データをストアするメインメモリ3が、自身を搭載するシステムコントローラSCが管理するメインメモリ3であるか否かを判定する。ストア要求の対象データをストアするメインメモリ3が、自身を搭載するシステムコントローラSCが管理するメインメモリ3である場合、スヌープ制御部6は、ストア要求に含まれる対象データをメインメモリ3にストアするメモリアクセス処理を起動する。
CPUリクエスト発行部7は、スヌープ制御部6によって起動されるメモリアクセス処理によってCPU1内のキャッシュメモリ11のアクセス制御を行う。MSアクセス発行部8は、スヌープ制御部6によって起動されるメモリアクセス処理によってメインメモリのアクセス制御を行う。
つぎに、図6のシーケンス図、図7のフローチャート、および図1〜図5を参照して、CPU1aがメモリアクセス要求として排他型フェッチ要求を発行した場合を例に挙げて、この発明における情報処理装置の動作を説明する。
CPU1aが発行した排他型フェッチ要求(FCH要求)を受信すると、システムコントローラSC0のメモリアクセス要求受信部4aは、受信した排他型フェッチ要求をブロードキャスト送受信部5aに出力する。ブロードキャスト送受信部5aは、排他型フェッチ要求をスヌープ制御部6aに出力するとともに、システムコントローラSC1に送信する。
システムコントローラSC0のスヌープ制御部6aは、CPU1a,1bが有するキャッシュメモリ11a,11bのキャッシュラインの状態およびデータ転送に用いる資源の状態を検出して、キャッシュメモリ11a,11bのステータスを選択するスヌープ処理を実行する。
ここで、図7のフローチャートを参照して、スヌープ処理の詳細な動作を説明する。スヌープ制御部6aは、予め定められた順番にしたがってキャッシュメモリ11a,11bから処理の対象とする処理対象キャッシュメモリを選択する(ステップS100)。ここで、スヌープ制御部6aは、キャッシュメモリ11aを処理対象キャッシュメモリとして選択したとする。
スヌープ制御部6aは、ブロードキャスト送受信部5aから入力されたメモリアクセス要求(ここでは、排他型フェッチメモリ要求)を対象メモリアクセス要求とし、対象メモリアクセス要求とキャッシュメモリ11aに対する先行メモリアクセス要求とに基づいて対象メモリアクセス要求の対象データに対する競合があるか否かを判定する(ステップS101)。
具体的には、スヌープ制御部6aは、対象メモリアクセス要求に含まれるアドレスが示すデータと、先行メモリアクセス要求に含まれるアドレスが示すデータとが、同一のキャッシュライン内に格納されるデータであるか否かによって対象データに対する競合があるか否かを判定する。対象メモリアクセス要求に含まれるアドレスが示すデータと、先行メモリアクセス要求に含まれるアドレスが示すデータとが、同一のキャッシュライン内に格納されるデータである場合には、スヌープ制御部6aは、対象メモリアクセス要求の対象データと先行メモリアクセス要求の対象データとが競合していると判定する。対象メモリアクセス要求に含まれるアドレスが示すデータと、先行メモリアクセス要求に含まれるアドレスが示すデータとが、同一のキャッシュライン内に格納されるデータではない場合には、スヌープ制御部6aは、対象メモリアクセス要求の対象データと先行メモリアクセス要求の対象データとが競合していないと判定する。
対象メモリアクセス要求とキャッシュメモリ11aに対する先行メモリアクセス要求とに基づいて対象メモリアクセス要求の対象データに対する競合がある場合(ステップS101,Yes)、スヌープ制御部6aは、キャッシュメモリ11aのステータスとして「BUSY」を選択する(ステップS102)。
対象メモリアクセス要求の対象データに対する競合がない場合(ステップS101,No)、スヌープ制御部6aは、対象メモリアクセス要求に含まれるアドレスおよびキャッシュ管理テーブル9aに基づいて、キャッシュメモリ11a内に対象メモリアクセス要求の対象データが存在するか否かを判定する(ステップS103)。
具体的には、たとえば、スヌープ制御部6aは、キャッシュメモリ11aのキャッシュライン情報に対応付けてキャッシュ管理テーブル9aのメインメモリ情報に登録されているメインメモリ3の先頭アドレスとキャッシュラインのバイト数から当該キャッシュラインが格納するメインメモリ3のアドレス空間を算出し、算出したアドレス空間内に対象メモリアクセス要求に含まれるアドレスが含まれるキャッシュラインを検出する。スヌープ制御部6aは、検出したキャッシュラインに対応付けてキャッシュ管理テーブル9aのキャッシュライン情報が「有効」である場合にはキャッシュメモリ11aに対象メモリアクセス要求が要求する対象データが存在すると判定し、検出したキャッシュラインに対応付けてキャッシュ管理テーブル9aのキャッシュライン情報が「有効」である場合、または算出したアドレス空間内に対象メモリアクセス要求に含まれるアドレスが含まれるキャッシュラインを検索できなかった場合には、キャッシュメモリ11aに対象メモリアクセス要求が要求する対象データが存在しないと判定する。
キャッシュメモリ11a内に対象メモリアクセス要求の対象データが存在する場合(ステップS103,Yse)、スヌープ制御部6aは、キャッシュメモリ11aのチップセレクト信号やリードライト制御信号などの制御バス、アドレスバス、およびデータバスの状態に基づいてデータ転送に用いる資源が枯渇しているか否かを判定する(ステップS104)。具体的には、たとえば、スヌープ制御部6aは、キャッシュメモリ11aのチップセレクト信号がアサートである場合には、データ転送のための資源が枯渇していると判定し、キャッシュメモリ11のチップセレクト信号がネゲートである場合には、データ転送のための資源が枯渇していないと判定する。
データ転送に用いる資源が枯渇している場合(ステップS104,Yes)、スヌープ制御部6aは、キャッシュメモリ11aのステータスとして「HIT&BUSY」を選択する(ステップS105)。データ転送に用いる資源が枯渇していない場合(ステップS104,No)、スヌープ制御部6aは、キャッシュメモリ11aのステータスとして「HIT」を選択する(ステップS106)。
一方、キャッシュメモリ11a内に対象メモリアクセス要求の対象データが存在しない場合(ステップS103,No)、スヌープ制御部6aは、先行メモリアクセス要求の最終ステータスによって対象メモリアクセス要求の対象データと競合する可能性があるか否かを判定する(ステップS107)。具体的には、対象メモリアクセス要求に含まれるアドレスが最終ステータスが決定していない先行メモリアクセス要求に含まれるアドレスのエントリー内に存在するか否か、すなわち先行メモリアクセス要求の対象データと対象メモリアクセス要求の対象データとが同一エントリーのデータであるか否かを判定する。スヌープ制御部6aは、対象メモリアクセス要求に含まれるアドレスが最終ステータスが決定していない先行メモリアクセス要求に含まれるアドレスのエントリー内に存在する場合には、先行メモリアクセス要求の最終ステータスによって対象メモリアクセス要求の対象データと競合する可能性があると判定し、対象メモリアクセス要求に含まれるアドレスが最終ステータスが決定していない先行メモリアクセス要求に含まれるアドレスのエントリー内に存在しない場合には、先行メモリアクセス要求の最終ステータスによって対象メモリアクセス要求の対象データと競合する可能性がないと判定する。
先行メモリアクセス要求の最終ステータスによって対象メモリアクセス要求の対象データと競合する可能性がある場合(ステップS107,Yes)、スヌープ制御部6aは、キャッシュメモリ11aのステータスとして「MISS&BUSY」を選択する(ステップS108)。先行メモリアクセス要求の最終ステータスによって対象メモリアクセス要求の対象データと競合する可能性がない場合(ステップS107,No)、スヌープ制御部6aは、キャッシュメモリ11aのステータスとして「MISS」を選択する(ステップS109)。
処理対象キャッシュメモリ(この場合は、キャッシュメモリ11a)のステータスを選択した後、スヌープ制御部6aは、未処理のキャッシュメモリがあるか否かを判定し(ステップS110)、未処理のキャッシュメモリがある場合には未処理のキャッシュメモリ(この場合は、キャッシュメモリ11b)を処理対象キャッシュメモリとして選択し、未処理のキャッシュメモリがなくなるまで処理対象キャッシュメモリに対してステータスを選択する判定を繰り返す(ステップS100〜S110)。
上述したスヌープ処理を実行した後、スヌープ制御部6aは、キャッシュメモリ11a,11bを識別するためのキャッシュメモリ識別子と当該キャッシュメモリ識別子が示すキャッシュメモリ11a,11bのステータスとを含むスヌープ処理結果をスヌープ制御部6cに通知する。
一方、システムコントローラSC0のメモリアクセス要求受信部4aから送信された排他型フェッチ要求を受信すると、システムコントローラSC1のメモリアクセス要求受信部4cは、受信した排他型フェッチ要求をスヌープ制御部6cに出力する。スヌープ制御部6cは、受信した排他型フェッチ要求を対象メモリアクセス要求として、先の図7のフローチャートを参照して説明したスヌープ処理を実行する。すなわち、スヌープ制御部6cは、キャッシュメモリ11c,11dに対するステータスを選択する。そして、キャッシュメモリ11c,11dを識別するためのキャッシュメモリ識別子と当該キャッシュメモリ識別子が示すキャッシュメモリ11c,11dのステータスとを含むスヌープ処理結果をスヌープ制御部6aに通知する。
図5においては、スヌープ制御部6aは、CPU1aが有するキャッシュメモリ11aのステータスとして「MISS」を選択し、CPU1bが有するキャッシュメモリ11bのステータスとして「HIT」を選択しており、スヌープ制御部6cは、CPU1cが有するキャッシュメモリ11cのステータスとして「HIT&BUSY」を選択し、CPU1dが有するキャッシュメモリ11dのステータスとして「MISS」を選択している。
スヌープ制御部6a,6cは、自身が選択したステータスおよび他のスヌープ制御部6a,6cから通知されたステータスをマージして、最終ステータスを選択する。ステータスの優先順位は、上述したように、「BUSY」、「HIT」、「HIT&BUSY」、「MISS&BUSY」、「MISS」の順に低くなっている。したがって、この場合、スヌープ制御部6a,6cは、最終ステータスとしてキャッシュメモリ11bの「HIT」となる。メモリアクセス要求が排他型フェッチ要求であるので、スヌープ制御部6aは、対象データを格納するCPU1bが有するキャッシュメモリ11bのキャッシュラインにデータ転送を要求するメモリアクセス処理を起動する。これにより、対象データが読み出され、スヌープ制御部6aは、読み出された対象データを排他型フェッチ要求の応答(FCH応答)としてCPU1aのキャッシュメモリ11aに転送する。
以上説明したように、この実施例においては、スヌープ処理をリトライするステータスとして、対象メモリアクセス要求の要求する対象データが先行メモリアクセス要求の要求する対象データと競合しており、装置全体としてデータ転送が不可能な状態を示す「BUSY」と、対象メモリアクセス要求の要求する対象データが先行メモリアクセス要求の要求する対象データと競合しておらず、メモリアクセス要求の要求する対象データが自身が管理するキャッシュメモリ内に存在し、かつ前記メモリアクセス要求の要求する対象データを転送するための資源が枯渇している状態、すなわち自身が管理するキャッシュメモリからのデータ転送が不可能な状態を示す「HIT&BUSY」との2つのステータスを設け、最終ステータスを決定する「HIT&BUSY」の優先順位を、データ転送が可能であることを示す「HIT」よりも低くしているため、任意のシステムコントローラでみた場合にはデータ転送が不可能であっても、他のシステムコントローラがデータ転送が可能な場合にはスヌープ処理をリトライすることなくデータ転送を実行することが可能となり、スヌープ処理のリトライ回数を削減してメモリアクセス要求の処理時間を短縮することができる。
また、この実施例においては、キャッシュメモリ間のデータ転送の単位であるキャッシュラインのバイト数よりも、メインメモリからキャッシュメモリへのデータ転送の単位であるエントリーのバイト数が大きい場合であって、かつメモリアクセス要求が対象データの読み出しを要求するフェッチ要求の場合、スヌープ処理をリトライするステータスとして、メモリアクセス要求の要求する対象データが先行メモリアクセス要求の要求する対象データと競合しておらず、メモリアクセス要求の要求する対象データが自身が管理するキャッシュメモリ内に存在しておらず、かつメモリアクセス要求の要求する対象データが先行メモリアクセス要求の対象データと同一エントリー内のデータである状態、すなわち自身が管理するキャッシュメモリからのデータ転送が不可能な状態を示す「MISS&BUSY」のステータスをさらに設け、最終ステータスを決定する「MISII&BUSY」の優先順位を、データ転送が可能であることを示す「HIT」よりも低くしているため、キャッシュメモリ間のデータ転送の単位であるキャッシュラインのバイト数よりも、メインメモリからキャッシュメモリへのデータ転送の単位であるエントリーのバイト数が大きい場合において、任意のシステムコントローラでみた場合にはデータ転送が不可能であっても、他のシステムコントローラがデータ転送が可能な場合にはスヌープ処理をリトライすることなくデータ転送を実行することが可能となり、スヌープ処理のリトライ回数を削減してメモリアクセス要求の処理時間を短縮することができる。
なお、図1においては、説明を簡単にするために、システムボードSB0とシステムボードSB1が搭載するCPU、IO装置、およびメインメモリの個数を同一にしたが、これらの構成要素の個数は、システムボード毎に異なっていてもかまわない。
以上のように、本発明におけるスヌープ制御方法および情報処理装置は、キャッシュメモリを有する複数のCPUと、共有メモリを構成する複数のメインメモリとをグループ分けし、グループ毎にCPUとメインメモリとを管理しキャッシュメモリ間またはキャッシュメモリとメインメモリとの間のデータ転送を制御するシステムコントローラを備える構成の大規模な情報処理装置に有用である。
図1は、この発明における情報処理装置の構成を示す図である。 図2は、図1に示したシステムコントローラの構成を示すブロック図である。 図3は、図2に示したキャッシュ管理テーブルの構成の一例を示す図である。 図4は、図2に示したスヌープ制御部が選択するステータスの種類と選択条件を示す図である。 図5は、最終ステータスおよびメモリアクセス要求の種類によって起動されるメモリアクセス処理の動作を説明するための図である。 図6は、この発明における情報処理装置の動作を説明するためのシーケンス図である。 図7は、この発明における情報処理装置のスヌープ処理の動作を説明するためのフローチャートである。
1a,1b,1c,1d CPU
2a,2b,2c,2d IO装置
3a,3b,3c,3d メインメモリ
4a,4c メモリアクセス要求受信部
5a,5c ブロードキャスト送受信部
6a,6c スヌープ制御部
7a,7c CPUリクエスト発行部
8a,8c MSアクセス発行部
9a,9c キャッシュ管理テーブル
11a,11b,11c,11d キャッシュメモリ
SB0,SB1 システムボード
SC0,SC1 システムコントローラ

Claims (4)

  1. キャッシュメモリを有する複数のCPUと、共有メモリを構成する複数のメインメモリとをグループ分けし、グループ毎にCPUとメインメモリとを管理し前記キャッシュメモリ間または前記キャッシュメモリとメインメモリとの間のデータ転送を制御するシステムコントローラを備える情報処理装置に適用されるスヌープ制御方法であって、
    前記システムコントローラは、
    自身が管理するCPUからのメモリアクセス要求を受けて他のシステムコントローラに通知するメモリアクセス要求通知ステップと、
    自身が管理するCPUからのメモリアクセス要求、または前記メモリアクセス要求通知ステップによって他のシステムコントローラからメモリアクセス要求を受けると、前記メモリアクセス要求の要求する対象データが前記メモリアクセス要求よりも先に受けた先行メモリアクセス要求の要求する対象データと競合するか否か、前記メモリアクセス要求の要求する対象データが自身が管理するキャッシュメモリ内に存在するか否か、前記メモリアクセス要求の要求する対象データを転送するための資源が枯渇しているか否かを自身が管理するCPU内のキャッシュメモリ毎に判定する判定ステップと、
    前記判定ステップによって、前記メモリアクセス要求の要求する対象データが前記先行メモリアクセス要求の要求する対象データと競合すると判定した場合には、当該キャッシュメモリのステータスとして「BUSY」を選択し、前記メモリアクセス要求の要求する対象データが前記先行メモリアクセス要求の要求する対象データと競合しておらず、前記メモリアクセス要求の要求する対象データが自身が管理するキャッシュメモリ内に存在し、かつ前記メモリアクセス要求の要求する対象データを転送するための資源が枯渇していないと判定した場合には、当該キャッシュメモリのステータスとして「HIT」を選択し、前記メモリアクセス要求の要求する対象データが前記先行メモリアクセス要求の要求する対象データと競合しておらず、前記メモリアクセス要求の要求する対象データが自身が管理するキャッシュメモリ内に存在し、かつ前記メモリアクセス要求の要求する対象データを転送するための資源が枯渇していると判定した場合には、当該キャッシュメモリのステータスとして「HIT&BUSY」を選択し、前記メモリアクセス要求の要求する対象データが前記先行メモリアクセス要求の要求する対象データと競合しておらず、かつ前記メモリアクセス要求の要求する対象データが自身が管理するキャッシュメモリ内に存在しない場合には、当該キャッシュメモリのステータスとして「MISS」を選択するステータス選択ステップと、
    前記ステータス選択ステップによって選択したステータスとキャッシュメモリとを対応付けたスヌープ処理結果を他のシステムコントローラに通知するスヌープ処理結果通知ステップと、
    前記スヌープ処理結果通知ステップによって通知されたスヌープ処理結果および自身のスヌープ処理結果に含まれるすべてのステータスの中に「BUSY」が存在する場合には最終ステータスを「BUSY」とし、すべてのステータスの中に「BUSY」が存在せず、かつ「HIT」が存在する場合には最終ステータスを「HIT」とし、すべてのステータスの中に「BUSY」および「HIT」が存在せず、かつ「HIT&BUSY」が存在する場合には最終ステータスを「HIT&BUSY」とし、すべてのステータスが「MISS」の場合には最終ステータスを「MISS」とする最終ステータス決定ステップと、
    前記最終ステータス選択ステップによって、最終ステータスが「BUSY」または「HIT&BUSY」と決定された場合には、前記判定ステップ、前記ステータス選択ステップ、前記スヌープ処理結果通知ステップ、および最終ステータス決定ステップを繰り返し、最終ステータスが「HIT」と決定された場合には、ステータスが「HIT」であるキャッシュメモリを有するCPUと、メモリアクセス要求を発行したCPUとの物理的な距離に基づいて1つのCPUを選択し、選択したCPUが自身が管理するCPUの場合には選択したCPUのキャッシュメモリへのメモリアクセス処理を起動してデータ転送を実行させ、前記最終ステータスが「MISS」の場合には、前記メモリアクセス要求の対象データを有するメインメモリが自身が管理するメインメモリであるか否かを判定し、判定の結果自身が管理するメインメモリである場合当該メインメモリへのアクセス処理を起動してデータ転送を実行させるメモリアクセス処理起動ステップと、
    実行することを特徴とするスヌープ制御方法。
  2. 前記キャッシュメモリ間のデータ転送の単位であるキャッシュラインのバイト数よりも、前記メインメモリから前記キャッシュメモリへのデータ転送の単位であるエントリーのバイト数が大きい場合であって、かつ前記メモリアクセス要求が対象データの読み出しを要求するフェッチ要求の場合、
    前記判定ステップは、
    前記メモリアクセス要求の要求する対象データと、前記先行メモリアクセス要求の対象データとが同一エントリー内のデータであるか否かの判定をさらに含み、
    前記ステータス選択ステップは、
    前記メモリアクセス要求の要求する対象データが前記先行メモリアクセス要求の要求する対象データと競合しておらず、前記メモリアクセス要求の要求する対象データが自身が管理するキャッシュメモリ内に存在しておらず、かつメモリアクセス要求の要求する対象データが前記先行メモリアクセス要求の対象データと同一エントリー内のデータである場合には、当該キャッシュメモリのステータスとして「MISS&BUSY」を選択し、
    前記最終ステータス選択ステップは、
    「BUSY」、「HIT」&「HIT&BUSY」が存在せず、かつ「MISS&BUSY」が存在する場合には最終ステータスを「MISS&BUSY」とし、
    前記メモリアクセス処理起動ステップは、
    前記最終ステータスが「MISS&BUSY」の場合も、前記判定ステップ、前記ステータス選択ステップ、前記スヌープ処理結果通知ステップ、および最終ステータス決定ステップを繰り返すこと、
    を特徴とする請求項1に記載のスヌープ制御方法。
  3. キャッシュメモリを有する複数のCPUと、共有メモリを構成する複数のメインメモリとをグループ分けし、グループ毎にCPUとメインメモリとを管理し前記キャッシュメモリ間または前記キャッシュメモリとメインメモリとの間のデータ転送を制御するシステムコントローラを備える情報処理装置において、
    前記各システムコントローラは、
    自身が管理するCPUからのメモリアクセス要求を受けて他のシステムコントローラに通知するブロードキャスト送受信部と、
    自身が管理するCPUからのメモリアクセス要求、または前記ブロードキャスト送受信部を介した他のシステムコントローラからのメモリアクセス要求を受けると、前記メモリアクセス要求の要求する対象データが前記メモリアクセス要求よりも先に受けた先行メモリアクセス要求の要求する対象データと競合するか否か、前記メモリアクセス要求の要求する対象データが自身が管理するキャッシュメモリ内に存在するか否か、前記メモリアクセス要求の要求する対象データを転送するための資源が枯渇しているか否かを自身が管理するCPU内のキャッシュメモリ毎に判定し、前記メモリアクセス要求の要求する対象データが前記先行メモリアクセス要求の要求する対象データと競合すると判定した場合には、当該キャッシュメモリのステータスとして「BUSY」を選択し、前記メモリアクセス要求の要求する対象データが前記先行メモリアクセス要求の要求する対象データと競合しておらず、前記メモリアクセス要求の要求する対象データが自身が管理するキャッシュメモリ内に存在し、かつ前記メモリアクセス要求の要求する対象データを転送するための資源が枯渇していないと判定した場合には、当該キャッシュメモリのステータスとして「HIT」を選択し、前記メモリアクセス要求の要求する対象データが前記先行メモリアクセス要求の要求する対象データと競合しておらず、前記メモリアクセス要求の要求する対象データが自身が管理するキャッシュメモリ内に存在し、かつ前記メモリアクセス要求の要求する対象データを転送するための資源が枯渇していると判定した場合には、当該キャッシュメモリのステータスとして「HIT&BUSY」を選択し、前記メモリアクセス要求の要求する対象データが前記先行メモリアクセス要求の要求する対象データと競合しておらず、かつ前記メモリアクセス要求の要求する対象データが自身が管理するキャッシュメモリ内に存在しない場合には、当該キャッシュメモリのステータスとして「MISS」を選択し、選択したステータスとキャッシュメモリとを対応付けたスヌープ処理結果を他のシステムコントローラに通知するスヌープ処理を実行し、このスヌープ処理によって通知されたスヌープ処理結果および自身のスヌープ処理結果に含まれるすべてのステータスの中に「BUSY」が存在する場合には最終ステータスを「BUSY」とし、すべてのステータスの中に「BUSY」が存在せず、かつ「HIT」が存在する場合には最終ステータスを「HIT」とし、すべてのステータスの中に「BUSY」および「HIT」が存在せず、かつ「HIT&BUSY」が存在する場合には最終ステータスを「HIT&BUSY」とし、すべてのステータスが「MISS」の場合には最終ステータスを「MISS」とし、最終ステータスが「BUSY」または「HIT&BUSY」と決定された場合には前記スヌープ処理をリトライし、最終ステータスが「HIT」と決定された場合には、ステータスが「HIT」であるキャッシュメモリを有するCPUと、メモリアクセス要求を発行したCPUとの物理的な距離に基づいて1つのCPUを選択し、選択したCPUが自身が管理するCPUの場合には選択したCPUのキャッシュメモリへのメモリアクセス処理を起動してデータ転送を実行させ、前記最終ステータスが「MISS」の場合には、前記メモリアクセス要求の対象データを有するメインメモリが自身が管理するメインメモリであるか否かを判定し、判定の結果自身が管理するメインメモリである場合当該メインメモリへのアクセス処理を起動してデータ転送を実行させるスヌープ制御部と、
    を備えることを特徴とする情報処理装置。
  4. 前記キャッシュメモリ間のデータ転送の単位であるキャッシュラインのバイト数よりも、前記メインメモリから前記キャッシュメモリへのデータ転送の単位であるエントリーのバイト数が大きい場合であって、かつ前記メモリアクセス要求が対象データの読み出しを要求するフェッチ要求の場合、
    前記スヌープ制御部は、
    メモリアクセス要求の要求する対象データと、前記先行メモリアクセス要求の対象データとが同一エントリー内のデータであるか否かを判定し、前記メモリアクセス要求の要求する対象データが前記先行メモリアクセス要求の要求する対象データと競合しておらず、前記メモリアクセス要求の要求する対象データが自身が管理するキャッシュメモリ内に存在しておらず、かつ前記メモリアクセス要求の要求する対象データが前記先行メモリアクセス要求の対象データと同一エントリー内のデータである場合には、当該キャッシュメモリのステータスとして「MISS&BUSY」を選択し、「BUSY」、「HIT」&「HIT&BUSY」が存在せず、かつ「MISS&BUSY」が存在する場合には最終ステータスを「MISS&BUSY」として前記スヌープ処理をリトライすること、
    を特徴とする請求項3に記載の情報処理装置。
JP2008501535A 2006-02-24 2006-02-24 スヌープ制御方法および情報処理装置 Expired - Fee Related JP4335298B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2006/303436 WO2007096978A1 (ja) 2006-02-24 2006-02-24 スヌープ制御方法および情報処理装置

Publications (2)

Publication Number Publication Date
JPWO2007096978A1 JPWO2007096978A1 (ja) 2009-07-09
JP4335298B2 true JP4335298B2 (ja) 2009-09-30

Family

ID=38437040

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008501535A Expired - Fee Related JP4335298B2 (ja) 2006-02-24 2006-02-24 スヌープ制御方法および情報処理装置

Country Status (4)

Country Link
US (1) US8051251B2 (ja)
EP (1) EP1988464B1 (ja)
JP (1) JP4335298B2 (ja)
WO (1) WO2007096978A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011148482A1 (ja) * 2010-05-27 2011-12-01 富士通株式会社 情報処理システム及びシステムコントローラ

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009223759A (ja) * 2008-03-18 2009-10-01 Fujitsu Ltd 情報処理装置,メモリ制御方法およびメモリ制御装置
JP5440067B2 (ja) * 2009-09-18 2014-03-12 富士通株式会社 キャッシュメモリ制御装置およびキャッシュメモリ制御方法

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5522058A (en) * 1992-08-11 1996-05-28 Kabushiki Kaisha Toshiba Distributed shared-memory multiprocessor system with reduced traffic on shared bus
JP2809961B2 (ja) * 1993-03-02 1998-10-15 株式会社東芝 マルチプロセッサ
US5673413A (en) 1995-12-15 1997-09-30 International Business Machines Corporation Method and apparatus for coherency reporting in a multiprocessing system
JPH09221381A (ja) 1996-02-08 1997-08-26 Komatsu Electron Metals Co Ltd 単結晶引上装置の真空排気装置
US5924121A (en) * 1996-12-23 1999-07-13 International Business Machines Corporation Adaptive writeback of cache line data in a computer operated with burst mode transfer cycles
US5940864A (en) * 1997-04-14 1999-08-17 International Business Machines Corporation Shared memory-access priorization method for multiprocessors using caches and snoop responses
US5940856A (en) 1997-04-14 1999-08-17 International Business Machines Corporation Cache intervention from only one of many cache lines sharing an unmodified value
US5963974A (en) 1997-04-14 1999-10-05 International Business Machines Corporation Cache intervention from a cache line exclusively holding an unmodified value
US5946709A (en) 1997-04-14 1999-08-31 International Business Machines Corporation Shared intervention protocol for SMP bus using caches, snooping, tags and prioritizing
US6138218A (en) * 1998-02-17 2000-10-24 International Business Machines Corporation Forward progress on retried snoop hits by altering the coherency state of a local cache
US6141733A (en) 1998-02-17 2000-10-31 International Business Machines Corporation Cache coherency protocol with independent implementation of optimized cache operations
US6292872B1 (en) 1998-02-17 2001-09-18 International Business Machines Corporation Cache coherency protocol having hovering (H) and recent (R) states
JPH11328027A (ja) 1998-02-17 1999-11-30 Internatl Business Mach Corp <Ibm> キャッシュ・コヒ―レンスを維持する方法及びコンピュ―タ・システム
US6108764A (en) 1998-12-17 2000-08-22 International Business Machines Corporation Non-uniform memory access (NUMA) data processing system with multiple caches concurrently holding data in a recent state from which data can be sourced by shared intervention
US6115804A (en) 1999-02-10 2000-09-05 International Business Machines Corporation Non-uniform memory access (NUMA) data processing system that permits multiple caches to concurrently hold data in a recent state from which data can be sourced by shared intervention
US6266743B1 (en) 1999-02-26 2001-07-24 International Business Machines Corporation Method and system for providing an eviction protocol within a non-uniform memory access system
US6275909B1 (en) * 1999-08-04 2001-08-14 International Business Machines Corporation Multiprocessor system bus with system controller explicitly updating snooper cache state information
US6457100B1 (en) * 1999-09-15 2002-09-24 International Business Machines Corporation Scaleable shared-memory multi-processor computer system having repetitive chip structure with efficient busing and coherence controls
US6356983B1 (en) 2000-07-25 2002-03-12 Src Computers, Inc. System and method providing cache coherency and atomic memory operations in a multiprocessor computer architecture
US6751705B1 (en) * 2000-08-25 2004-06-15 Silicon Graphics, Inc. Cache line converter
US6976131B2 (en) * 2002-08-23 2005-12-13 Intel Corporation Method and apparatus for shared cache coherency for a chip multiprocessor or multiprocessor system

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011148482A1 (ja) * 2010-05-27 2011-12-01 富士通株式会社 情報処理システム及びシステムコントローラ

Also Published As

Publication number Publication date
EP1988464A4 (en) 2009-12-02
US20080320238A1 (en) 2008-12-25
EP1988464A1 (en) 2008-11-05
EP1988464B1 (en) 2018-11-21
US8051251B2 (en) 2011-11-01
WO2007096978A1 (ja) 2007-08-30
JPWO2007096978A1 (ja) 2009-07-09

Similar Documents

Publication Publication Date Title
CN108885583B (zh) 高速缓存存储器访问
KR101639672B1 (ko) 무한 트랜잭션 메모리 시스템 및 그 동작 방법
US7234029B2 (en) Method and apparatus for reducing memory latency in a cache coherent multi-node architecture
US8806148B2 (en) Forward progress mechanism for stores in the presence of load contention in a system favoring loads by state alteration
JP3924203B2 (ja) マルチノード・コンピュータ・システムにおける非集中グローバル・コヒーレンス管理
KR100318789B1 (ko) 멀티프로세서 데이타 처리 시스템에서의 캐쉬를 관리하는시스템과 방법
JP3900478B2 (ja) 不均等メモリ・アクセス(numa)コンピュータ・システム及び該コンピュータ・システムを操作する方法
JP3900479B2 (ja) システム・メモリに組み込まれるリモート・メモリ・キャッシュを有する不均等メモリ・アクセス(numa)データ処理システム
US8015365B2 (en) Reducing back invalidation transactions from a snoop filter
US8131935B2 (en) Virtual barrier synchronization cache
US8095733B2 (en) Virtual barrier synchronization cache castout election
US8799589B2 (en) Forward progress mechanism for stores in the presence of load contention in a system favoring loads
JP4474570B2 (ja) キャッシュコヒーレンシ制御方法
US8176261B2 (en) Information processing apparatus and data transfer method
JPH11272557A (ja) キャッシュ・コヒ―レンシを維持する方法及びシステム
US8266386B2 (en) Structure for maintaining memory data integrity in a processor integrated circuit using cache coherency protocols
JP3550092B2 (ja) キャッシュ装置及び制御方法
JP4335298B2 (ja) スヌープ制御方法および情報処理装置
US8108618B2 (en) Method and apparatus for maintaining memory data integrity in an information handling system using cache coherency protocols
US8972663B2 (en) Broadcast cache coherence on partially-ordered network
JP6631317B2 (ja) 演算処理装置、情報処理装置および情報処理装置の制御方法
CN112955877A (zh) 修改存储数据的装置和方法
KR19980079625A (ko) 데이타 처리 시스템 내의 캐쉬 메모리 데이타를 추론적으로 공급하기 위한 방법 및 장치

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090407

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090605

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20090623

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20090624

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120703

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4335298

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120703

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130703

Year of fee payment: 4

LAPS Cancellation because of no payment of annual fees