JP4409619B2 - 情報処理装置、制御装置および制御方法 - Google Patents

情報処理装置、制御装置および制御方法 Download PDF

Info

Publication number
JP4409619B2
JP4409619B2 JP2008501536A JP2008501536A JP4409619B2 JP 4409619 B2 JP4409619 B2 JP 4409619B2 JP 2008501536 A JP2008501536 A JP 2008501536A JP 2008501536 A JP2008501536 A JP 2008501536A JP 4409619 B2 JP4409619 B2 JP 4409619B2
Authority
JP
Japan
Prior art keywords
data
arithmetic processing
cpu
memory
cache memory
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
JP2008501536A
Other languages
English (en)
Other versions
JPWO2007096979A1 (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 JPWO2007096979A1 publication Critical patent/JPWO2007096979A1/ja
Application granted granted Critical
Publication of JP4409619B2 publication Critical patent/JP4409619B2/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/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

本発明は、キャッシュメモリを有するマルチプロセッサ構成の情報処理装置、その情報処理装置に搭載される制御装置およびその制御方法に関するものであり、特に、キャッシュメモリ間またはキャッシュメモリとメインメモリ間のデータ転送において効率よくバスを使用する情報処理装置、制御装置および制御方法に関するものである。
キャッシュメモリを有する複数のCPUが搭載される複数のシステムボードを有する情報処理装置において、キャッシュメモリのコヒーレンシを保ちつつ高速にキャッシュメモリ間のデータ転送を実行するための従来技術として、たとえば、特許文献1がある。
特許文献1に記載の従来技術では、要求元デバイス(要求元キャッシュメモリ)が要求するデータとして転送可能なデータを有するデバイス(キャッシュメモリ)が複数存在する場合、論理的に近いキャッシュメモリ(たとえば、同一ノード(システムボード)上のキャッシュメモリや要求されたデータを変更したキャッシュメモリ、最も以前に選択されたキャッシュメモリ)選択し、選択したキャッシュメモリから要求元キャッシュメモリにデータを転送するようにしている。
特開2001−101147号公報
ここで、キャッシュメモリを有する複数のCPU、複数の入出力装置、および複数のメモリデバイス(メインメモリ)と、これらCPU,入出力装置、およびメインメモリを管理するシステムコントローラを搭載するシステムボードを複数備え、各システムボードをバス接続した構成の情報処理装置に、上記特許文献1に記載のデータ転送方法を適用した場合について考える。
キャッシュメモリがスワップ方式であり、キャッシュメモリ間のコヒーレンシを維持するキャッシュプロトコルとしてMOESIプロトコルを用いた場合に、キャッシュメモリ間のデータ転送については、同一システムボード上のキャッシュメモリに転送可能なデータが存在する場合には同一システムボード上のキャッシュメモリが選択されシステムボードを接続するバスを使用することなくデータ転送を行なうことができる。
しかしながら、上記特許文献1に記載の従来のデータ転送方法では、メモリアクセス要求の種類やキャッシュメモリとメインメモリとの関係について考慮されていないため、ライトバック時のキャッシュメモリからメインメモリへのデータ転送の効率を上げることはできないという問題があった。
本発明は、上述した従来技術による問題点を解消し、上記課題を解決するためになされたものであって、スワップ方式を用いたキャッシュメモリ間、またはキャッシュメモリとメインメモリ間のデータ転送において、データ転送に用いるバスを効率よく使用する情報処理装置、制御装置および制御方法を得ることを目的とする。
上述した課題を解決し、目的を達成するために、本発明は、キャッシュメモリを有する少なくとも1つのCPUと、共有メモリを構成する少なくとも1つのメインメモリと、前記CPUおよびメインメモリを管理するとともにメモリアクセス要求によって前記キャッシュメモリまたはメインメモリのデータ転送を制御するシステムコントローラとを有する複数のシステムボードがバスによって接続される情報処理装置において、前記各システムコントローラは、前記メモリアクセス要求の要求するデータが存在するキャッシュメモリが複数存在する場合、前記メモリアクセス要求の種類、および前記データが存在するキャッシュメモリ毎のデータの状態を示す登録型に基づいて、前記データが存在するキャッシュメモリを有する送信元候補のCPUの中から、前記メモリアクセス要求を発行した要求元のCPU、または前記メモリアクセス要求の要求するデータをライトバック時にストアするライトバック対象のメインメモリと物理的な距離が最も近い送信元候補のCPUを送信元のCPUとして選択し、選択した送信元のCPUが自身が管理するCPUの場合には前記メモリアクセス要求の要求するデータを転送するとともに、要求元のCPUおよび送信元のCPUと、前記ライトバック対象のメインメモリとの物理的な距離に応じて前記登録型を移動させるスヌープ制御部、を備えることを特徴とする。
また、本発明は、上記発明において、前記メモリアクセス要求がフェッチ要求あって、かつ共有型・更新済みのデータ転送である場合、前記スヌープ制御部は、前記送信元候補のCPUの中で、登録型が「オーナ」であるキャッシュメモリを有するCPUと前記フェッチ要求の要求するデータを格納するメインメモリとの物理的な距離、および前記フェッチ要求を発行した要求元であるCPUと前記ライトバック対象のメインメモリとの物理的な距離を求め、前記要求元のCPUの方が登録型が「オーナ」であるキャッシュメモリを有するCPUよりも前記ライトバック対象のメインメモリとの物理的な距離が近い場合には、前記登録型が「オーナ」であるキャッシュメモリを有するCPUを送信元のCPUとして選択し、選択した送信元のCPUが自身が管理するCPUの場合には前記フェッチ要求の要求するデータを送信元のCPUに転送するとともに、送信元のCPUが有するキャッシュメモリの登録型を「共有」に変更し、要求元のCPUが有するキャッシュメモリの登録型を「オーナ」に変更すること、を特徴とする。
また、本発明は、上記発明において、前記メモリアクセス要求がストア要求であって、かつ共有型・更新済みデータの転送である場合、前記スヌープ制御部は、前記送信元候補のCPUの中で、前記ライトバック対象のメインメモリに物理的な距離が最も近い送信元候補のCPUを送信元のCPUとして選択し、選択した送信元のCPUが自身が管理するCPUである場合には、前記ストア要求が要求するデータと前記送信元のCPUが有するキャッシュメモリから読み出したデータとをマージして前記ライトバック対象のメインメモリに格納させるとともに、前記送信元候補のCPUが有するキャッシュメモリの登録型を「無効」に変更すること、を特徴とする。
また、本発明は、キャッシュメモリを有する少なくとも1つのCPUと、共有メモリを構成する少なくとも1つのメインメモリと、前記CPUおよびメインメモリを管理するとともにメモリアクセス要求によって前記キャッシュメモリまたはメインメモリのデータ転送を制御するシステムコントローラとを有する複数のシステムボードがバスによって接続される情報処理装置に適用されるデータ転送方法であって、前記各システムコントローラは、前記メモリアクセス要求の要求するデータが存在するキャッシュメモリが複数存在する場合、前記メモリアクセス要求の種類、および前記データが存在するキャッシュメモリ毎のデータの状態を示す登録型に基づいて、前記データが存在するキャッシュメモリを有する送信元候補のCPUの中から、前記メモリアクセス要求を発行した要求元のCPU、または前記メモリアクセス要求の要求するデータをライトバック時にストアするライトバック対象のメインメモリと物理的な距離が最も近い送信元候補のCPUを送信元のCPUとして選択する送信元選択ステップと、前記送信元選択ステップによって選択された送信元のCPUが自身が管理するCPUの場合には前記メモリアクセス要求の要求するデータを転送するとともに、要求元のCPUおよび送信元のCPUと、前記ライトバック対象のメインメモリとの物理的な距離に応じて前記登録型を移動させるデータ転送ステップと、を含むことを特徴とする。
本発明によれば、メモリアクセス要求の要求するデータが存在するキャッシュメモリが複数存在する場合、メモリアクセス要求の種類、およびデータが存在するキャッシュメモリ毎のデータの状態を示す登録型に基づいて、データが存在するキャッシュメモリを有する送信元候補のCPUの中から、メモリアクセス要求を発行した要求元のCPU、またはメモリアクセス要求の要求するデータをライトバック時にストアするライトバック対象のメインメモリと物理的な距離が最も近い送信元候補のCPUを送信元のCPUとして選択してデータを転送するとともに、要求元のCPUおよび送信元のCPUと、ライトバック対象のメインメモリとの物理的な距離に応じて登録型を移動させるようにしているため、データ転送時にバスを効率よく使用することができる情報処理装置を得ることができるという効果を奏する。
また、本発明によれば、メモリアクセス要求がフェッチ要求あって、かつ共有型・更新済みのデータ転送である場合、要求元のCPUのほうが、送信元のCPUよりもライトバック対象のメインメモリと物理的な距離が近い場合には、要求元のCPUが有するキャッシュメモリの登録型を「オーナ」に変更することで、ライトバック時にライトバック対象のメインメモリに格納するデータが存在するキャッシュメモリを、ライトバック対象のメインメモリと物理的な距離を近づけるようにしているため、ライトバック時のデータ転送時にバスを効率よく使用することができる情報処理装置を得ることができるという効果を奏する。
また、本発明によれば、メモリアクセス要求がストア要求であって、かつ共有型・更新済みデータの転送である場合、送信元候補のCPUの中から、ライトバック対象のメインメモリに物理的な距離が最も近いCPUを送信元として選択するようにしているため、データ転送時にバスを効率よく使用することができる情報処理装置を得ることができるという効果を奏する。
また、本発明によれば、メモリアクセス要求の要求するデータが存在するキャッシュメモリが複数存在する場合、メモリアクセス要求の種類、およびデータが存在するキャッシュメモリ毎のデータの状態を示す登録型に基づいて、データが存在するキャッシュメモリを有する送信元候補のCPUの中から、メモリアクセス要求を発行した要求元のCPU、またはメモリアクセス要求の要求するデータをライトバック時にストアするライトバック対象のメインメモリと物理的な距離が最も近い送信元候補のCPUを送信元のCPUとして選択してデータを転送するとともに、要求元のCPUおよび送信元のCPUと、ライトバック対象のメインメモリとの物理的な距離に応じて登録型を移動させるようにしているため、データ転送時にバスを効率よく使用することができるデータ転送方法を得ることができるという効果を奏する。
以下に、本発明における情報処理装置、制御装置および制御方法の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
図1〜図11を用いてこの発明における情報処理装置の実施例を説明する。図1は、この発明における情報処理装置の構成を示す図である。図1において、情報処理装置は、クロスバーXB0に接続されるシステムボードSB0〜SB3と、クロスバーXB1に接続されるシステムボードSB4〜SB7とを備え、システムボードSB0〜SB3はクロスバーXB0を介してデータ転送を実行し、システムボードSB4〜SB7はクロスバーXB1を介してデータ転送を実行し、システムボードSB0〜SB3とシステムボードSB4〜SB7とは、クロスバーXB0,XB1を介してデータ転送を実行する。
システムボードSB0〜SB7は、全て同じ機能を備えている。図2に示したシステムボードSB0の構成を示すブロック図を参照して、システムボードの機能について説明する。システムボードSB0は、キャッシュメモリ11a,11bを有するCPU1a,1bと、入出力装置(以下、IO装置とする)2a,2bと、メインメモリ3a,3bと、システムコントローラSCとを備えている。
メインメモリ3(3a,3bを示す)は、キャッシュメモリ11(11a,11bを示す)よりも記憶容量が大きくて、かつキャッシュメモリ11よりもアクセス速度が遅いメモリデバイスで構成され、情報処理装置の共有メモリとして用いられ、システムボードSB0〜SB7のCPU1(1a,1bを示す)が実行するプログラムを含むデータを格納する。
キャッシュメモリ11は、メインメモリ3よりも記憶容量が小さくて、かつメインメモリ3よりもアクセス速度が速いメモリデバイスで構成され、CPU1が発行するメモリアクセス要求によって実行されるキャッシュメモリ11間、またはキャッシュメモリ11とメインメモリ3間のデータ転送によりメインメモリ3が格納するデータの一部を格納する。また、キャッシュメモリ11は、スワップ方式を用いている。
システムコントローラSCは、自身が搭載されるシステムボードSB0に搭載されるCPU1、IO装置2(2a,2bを示す)、およびメインメモリ3を管理する。また、システムコントローラSCは、たとえば、MOESIプロトコルなどの予め定められたキャッシュプロトコルに基づいてCPU1内のキャッシュメモリ11の状態を管理し、CPU1またはIO装置2からのメモリアクセス要求によりキャッシュメモリ11間のコヒーレンスを保ちつつ、キャッシュメモリ11間およびキャッシュメモリ11とメインメモリ3との間のデータ転送を制御する。
図3は、CPU1またはIO装置2からのメモリアクセス要求に対するデータ転送におけるメモリアクセス処理の起動に関するシステムコントローラSCの構成を示すブロック図である。図3において、システムコントローラSCは、メモリアクセス要求受信部4と、ブロードキャスト送受信部5と、スヌープ制御部6と、CPUリクエスト発行部7と、MSアクセス発行部8と、キャッシュ管理テーブル9とを備えている。
キャッシュ管理テーブル9には、自身が搭載されるシステムコントローラSCが管理するCPU1が有するキャッシュメモリ11の状態が登録され、メモリアクセス要求によって要求されたデータがキャッシュメモリ11に存在しているか否かの判定に用いられる。
キャッシュメモリ11間のデータ転送、およびキャッシュメモリ11からメインメモリ3へのデータ転送はキャッシュライン単位で実行され、メインメモリ3からキャッシュメモリ11へのデータ転送はエントリー単位で実行される。エントリーのバイト数とキャッシュラインのバイト数は、「エントリーのバイト数=キャッシュラインのバイト数×n(nは自然数)」が成り立つように予め定められている。よって、キャッシュメモリ11の状態はキャッシュライン毎に管理する。
図4は、キャッシュ管理テーブル9の構成の一例を示す図である。図4において、キャッシュ管理テーブル9には、キャッシュメモリ11a,11bのキャッシュラインを識別するためのキャッシュライン識別子が登録されるサブブロック情報に対応付けて、当該キャッシュラインが格納するデータとメインメモリ3のデータとの対応付けを示すメインメモリ情報、および当該キャッシュラインが格納するデータの状態(登録型)を示すキャッシュライン状態情報が登録される。
図2に戻って、メモリアクセス要求受信部4は、自身が搭載されるシステムコントローラSCが管理するCPU1およびIO装置2が発行するメモリアクセス要求を受信する。メモリアクセス要求受信部4は、受信したメモリアクセス要求をブロードキャスト送受信部5に出力する。
ブロードキャスト送受信部5は、システムコントローラSC間の通信インタフェースを有し、メモリアクセス要求受信部4から入力されるメモリアクセス要求をスヌープ制御部6に出力するとともに、他のシステムボードSB1〜SB7のシステムコントローラSCに送信する。また、他のシステムボードSB1〜SB7のシステムコントローラSCからのメモリアクセス要求を受信してスヌープ制御部6に出力する。すなわち、ブロードキャスト送受信部5は、自身が搭載されるシステムコントローラSCが管理するCPU1およびIO装置2が発行したメモリアクセス要求を全てのシステムボードSB0〜SB7システムコントローラSC内のスヌープ制御部6にブロードキャストする。
スヌープ制御部6は、メモリアクセス要求を受けると、自身が搭載されるシステムコントローラSCが管理するCPU1内のキャッシュメモリ11のキャッシュラインの状態(メモリアクセス要求によって要求されるデータがキャッシュメモリ11のキャッシュラインに存在するか否か)およびデータ転送に用いる資源(キャッシュメモリに対するチップセレクト信号やリードライト制御信号などの制御バス、アドレスバス、データバス)の状態を検出してメモリアクセス要求によって要求されたデータ(対象データ)に対するキャッシュメモリ11毎のステータスを選択するスヌープ処理を実行する。
また、スヌープ制御部6は、スヌープ処理によって選択したキャッシュメモリ11毎のステータスをスヌープ処理結果として他のスヌープ制御部6に通知し、装置内すべてのキャッシュメモリ11のステータスをマージして最終ステータスを決定し、決定したステータスに基づいてキャッシュメモリ11間、またはキャッシュメモリ11とメインメモリ3との間のメモリ間データ転送のためのメモリアクセス処理を起動するメモリアクセス起動処理を実行するとともに、キャッシュ管理テーブル9のキャッシュメモリ状態情報に登録される登録型を更新する。
ここで、スヌープ制御部6がスヌープ処理によって選択するステータスの種類と選択条件を説明する。スヌープ制御部6が選択するステータスとして「BUSY」、「HIT」、および「MISS」の3種類が定義される。「BUSY」は、現時点でキャッシュメモリ11に対象メモリアクセス要求の対象データが存在するかを特定することができないことを示すステータスであり、対象メモリアクセス要求の対象データと、メモリアクセス起動処理およびメモリアクセス処理の対象となっているメモリアクセス要求、すなわち対象メモリアクセス要求よりも前に発行され、メモリアクセス起動処理やメモリアクセス処理の対象となっているメモリアクセス要求(先行メモリアクセス要求)の対象データとが競合している場合(対象メモリアクセス要求の対象データと先行メモリアクセス要求の対象データとが同一のキャッシュラインに存在する場合)、またはデータ転送のための資源が枯渇している場合に選択される。なお、データ転送のための資源の枯渇とは、先行メモリアクセス要求のメモリアクセス処理によってキャッシュメモリ11にアクセスしており、対象メモリアクセス要求の対象データへのアクセスができない状態のことである。
「HIT」は、キャッシュメモリ11に対象メモリアクセス要求の対象データとして使用可能なデータが存在することを示すステータスであり、対象メモリアクセス要求の対象データと先行メモリアクセス要求の対象データとが競合しておらず、かつデータ転送のための資源が枯渇していない(「BUSY」ではない)場合であって、かつ対象メモリアクセス要求の対象データがキャッシュメモリ11のサブブロックに存在している場合に選択される。
「MISS」は、メインメモリ3からデータを転送する必要があることを示すステータスであり、対象メモリアクセス要求の対象データと先行メモリアクセス要求の対象データとが競合しておらず、かつデータ転送のための資源が枯渇していない(「BUSY」ではない)場合であって、かつ対象メモリアクセス要求の対象データがキャッシュメモリ11のサブブロックに存在していない場合に選択される。
スヌープ制御部6は、自身が搭載されるシステムコントローラSCが管理するCPU1内のキャッシュメモリ11毎に「BUSY」、「HIT」、および「MISS」の3つのステータスのいずれかを選択するスヌープ処理が終了すると、選択したキャッシュメモリ11毎のステータスをスヌープ処理結果として他のスヌープ処理部に通知する。そして、自身および他のスヌープ制御部6から得られた装置内すべてのキャッシュメモリ11のステータスをマージして最終ステータスを決定する。
具体的には、スヌープ制御部6は、すべてのステータスの中に「BUSY」が存在する場合には最終ステータスとして「BUSY」を選択し、ステータスの中に「BUSY」が存在せず、「HIT」が存在する場合には最終ステータスとして「HIT」を選択し、ステータスの中に「BUSY」および「HIT」が存在しない場合、すなわちすべてのステータスが「MISS」の場合には最終ステータスとして「MISS」を選択する。
最終ステータスが「BUSY」の場合、スヌープ制御部6は、最終ステートが「HIT」または「MISS」になるまでスヌープ処理を繰り返す。最終ステータスが「HIT」の場合、スヌープ制御部6は、ステータスが「HIT」であるキャッシュメモリ11の1つに対してデータ転送を要求するメモリアクセス処理を起動する。
詳細には、スヌープ制御部6は、データを要求しているCPU1が有するキャッシュメモリ11と、ステータスが「HIT」となっているキャッシュメモリ11を有するCPU1との物理的な距離が最も近いCPU1を選択する。ここで、キャッシュメモリ11を有するCPU1間の物理的な距離とは、データ転送に用いるバスの経路長であり、同一システムボード内に搭載されるCPU1aとCPU1bが最も物理的な距離が近く、つぎに、同一のクロスバーXB0を介して接続されるシステムボードSB0〜SB3に搭載されるCPU1、クロスバーXB1を介して接続されるシステムボードSB4〜SB7に搭載されるCPU1の物理的な距離が近く、最も物理的な距離が遠いのは、クロスバーXB0とクロスバーXB1とを介して接続されるシステムボードSB0〜SB3に搭載されるCPU1とシステムボードSB4〜SB7に搭載されるCPU1である。
スヌープ制御部6は、メモリアクセス要求をブロードキャストする際に要求元であるCPU1a,1bが搭載されるシステムボードSB0〜SB7に予め付与されている物理番号を付加しておく。また、スヌープ処理結果にも自身が搭載されるシステムボードSB0〜SB7の物理番号を付加しておく。そして、スヌープ制御部6は、メモリアクセス要求に含まれる物理番号、およびスヌープ処理結果に含まれる物理番号に基づいてCPU1の物理的な距離を求めて、メモリアクセス要求を発行したCPU1と最も物理的に近いCPU1を選択する。なお、同一システムボードSB0〜SB7に搭載されるCPU1aのキャッシュメモリ11aとCPU1bのキャッシュメモリ11bとのステータスがともに「HIT」の場合は、予め定められた順番にしたがって1つを選択するようにすればよい。
スヌープ制御部6は、選択したCPU1が自身を搭載するシステムコントローラSCが管理するCPU1の場合、スヌープ制御部6はキャッシュメモリ11に対してデータ転送を要求するメモリアクセス処理を起動する。
最終ステータスが「MISS」であって、かつメモリアクセス要求がフェッチ要求(データを参照する共有型フェッチ要求またはデータを更新することを前提とした排他型フェッチ要求)の場合、スヌープ制御部6は、メインメモリ3から対象データをリードするメモリアクセス処理を起動する。
詳細には、スヌープ制御部6は、共有型フェッチ要求または排他型フェッチ要求に含まれるアドレスおよびメインメモリ3に割当てられているアドレス空間に基づいて、共有型フェッチ要求または排他型フェッチ要求の対象データを格納するメインメモリ3が、自身を搭載するシステムコントローラSCが管理するメインメモリ3であるか否かを判定する。共有型フェッチ要求または排他型フェッチ要求の対象データを格納するメインメモリ3が、自身を搭載するシステムコントローラSCが管理するメインメモリ3である場合、スヌープ制御部6は、メインメモリ3に対してデータ転送を要求するメモリアクセス処理を起動する。
最終ステータスが「MISS」であって、かつメモリアクセス要求がストア要求の場合、スヌープ制御部6は、メインメモリ3に対象データをストアするメモリアクセス処理を起動する。
詳細には、スヌープ制御部6は、ストア要求に含まれるアドレスおよびメインメモリ3に割当てられているアドレス空間に基づいて、ストア要求の対象データをストアするメインメモリ3が、自身を搭載するシステムコントローラSCが管理するメインメモリ3であるか否かを判定する。ストア要求の対象データをストアするメインメモリ3が、自身を搭載するシステムコントローラSCが管理するメインメモリ3である場合、スヌープ制御部6は、ストア要求に含まれる対象データをメインメモリ3にストアするメモリアクセス処理を起動する。
また、スヌープ制御部6は、起動したメモリアクセス処理によって実行されるデータ転送に応じてキャッシュ管理テーブル9のキャッシュライン状態情報の登録型を遷移させて更新する。図5および図6を参照して、キャッシュ管理テーブル9のキャッシュライン状態情報に登録される登録型および遷移条件について説明する。
ここでは、キャッシュプロトコルとしてMOESIプロトコルを用いた場合を例に挙げて説明する。MOESIプロトコルでは、データの状態として、キャッシュラインに有効な状態が格納されていないことを示す「無効(I)」と、キャッシュラインが格納するデータが更新されており、当該データのコピーが他のキャッシュメモリ11のキャッシュラインおよびメインメモリ3に存在しない状態を示す「更新・排他(M)」と、キャッシュラインが格納するデータが未変更であって、かつ当該データのコピーが他のキャッシュメモリ11のキャッシュラインに存在しない状態を示す「未更新・排他(E)」と、キャッシュラインが格納するデータが未変更であって、かつ当該データのコピーが他のキャッシュメモリ11のキャッシュラインに存在することを示す「共有(S)」と、キャッシュラインが格納するデータが変更されており、ライトバック時にメインメモリにデータを書き込むオーナであることを示す「オーナ(O)」との5つの状態を有している。
「無効(I)」から「未更新・排他(E)」への遷移条件は、フェッチ要求によってメインメモリ3からキャッシュラインにデータを転送した場合、すなわちメインメモリ3からキャッシュラインにデータをコピーした場合である。「無効(I)」から「共有(S)」への遷移条件は、フェッチ要求によって他のキャッシュメモリ11からキャッシュラインにデータを転送した場合、すなわち他のキャッシュメモリ11からデータをコピーした場合である「無効(I)」から「更新・排他(M)」への遷移条件は、メモリアクセス要求であるストア要求によって、他のキャッシュメモリ11またはメインメモリ3からキャッシュラインにデータをコピーし、コピーしたデータを変更した場合である。「無効(I)」から「オーナ(O)」への遷移条件は、フェッチ要求によって登録型が「共有(S)」または「オーナ(O)」のキャッシュメモリ11のキャッシュラインからデータを転送した場合であって、かつ転送したデータを格納するメインメモリ3との物理的な距離がデータ転送前の「オーナ(O)」よりも近くなった場合である。
「未更新・排他(E)」から「更新・排他(M)」への遷移条件は、ストア要求によってキャッシュラインのデータを変更した場合である。「未更新・排他(E)」から「共有(S)」への遷移条件は、フェッチ要求により他のキャッシュメモリ11へデータを転送した場合である。「未更新・排他(E)」から「無効(I)」への遷移条件は、キャッシュラインが追い出される場合である。
「共有(S)」から「更新・排他(M)」への遷移条件は、ストア要求によってキャッシュラインのデータを変更した場合である。「共有(S)」から「無効(I)」への遷移条件は、ストア要求によって自身のキャッシュラインが格納するデータと同一のデータを格納している他のキャッシュラインのデータが変更された場合である。「共有(S)」から「無効(I)」への遷移条件は、ストア要求によって、キャッシュラインと同じデータを格納する他のキャッシュメモリ11のデータが変更された場合である。
「更新・排他(M)」から「オーナ(O)」への遷移条件は、フェッチ要求によって他のキャッシュメモリ11にデータを転送し、転送先のキャッシュメモリ11よりもデータを格納するメインメモリ3との物理的な距離が近い場合である。「更新・排他(M)」から「無効(I)」への遷移条件は、キャッシュラインから追い出された場合である。「更新・排他(M)」から「共有(S)」への遷移条件は、フェッチ要求によって他のキャッシュメモリ11へデータを転送した場合である。
「オーナ(O)」から「無効(I)」への遷移条件は、キャッシュラインから追い出された場合である。「オーナ(O)」から「更新・排他(M)」への遷移条件は、ストア要求によってキャッシュラインのデータが変更された場合である。「オーナ(O)」から「共有(S)」への遷移条件は、フェッチ要求によって他のキャッシュメモリ11にデータを転送し、転送先のキャッシュメモリ11よりもデータを格納するメインメモリ3との物理的な距離が遠い場合である。
ここで、メインメモリ3との物理的な距離とは、データ転送に用いるバスの経路長であり、同一システムボードSB0〜SB7内に、キャッシュラインのデータを格納するメインメモリ3と当該キャッシュラインを有するキャッシュメモリ11を有するCPU1とが存在する場合、すなわち、ライトバック時にクロスバーXB0,XB1を介する必要がない場合が最もメインメモリ3とCPU1と物理的な距離が最も近く、つぎに物理的な距離が近いのは、同一クロスバーXB0、またはクロスバーXB1のみを介してライトバックを行なう場合であり、最も物理的が遠いのは、クロスバーXB0およびクロスバーXB1を介してライトバックを行なう場合である。なお、同一システムボードSB0〜SB7に搭載されるCPU1aのキャッシュメモリ11aとCPU1bのキャッシュメモリ11bとのステータスがともに「HIT」の場合は、予め定められた順番にしたがって1つを選択するようにすればよい。
CPUリクエスト発行部7は、スヌープ制御部6によって起動されるメモリアクセス処理によってCPU1内のキャッシュメモリ11のアクセス制御を行う。MSアクセス発行部8は、スヌープ制御部6によって起動されるメモリアクセス処理によってメインメモリのアクセス制御を行う。
つぎに、図1〜図12を参照して、この発明における情報処理装置の動作をシステムボードSB0に搭載されるCPU1aがメモリアクセス要求を発行した場合を例に挙げて説明する。
システムボードSB0のCPU1aが発行したメモリアクセス要求を受信すると、システムボードSB0のシステムコントローラSCのメモリアクセス要求受信部4は、受信したメモリアクセス要求をブロードキャスト送受信部5に出力する。ブロードキャスト送受信部5は、システムボードSB0に予め付与された物理番号を付加した物理番号付きメモリアクセス要求をスヌープ制御部6に出力するとともに、システムボードSB1〜システムボードSB7のシステムコントローラSCのブロードキャスト送受信部5に送信する。
システムボードSB1〜システムボードSB7のシステムコントローラSCのブロードキャスト送受信部5は、受信した物理番号付きメモリアクセス要求をスヌープ制御部6に出力する。
システムボードSB0〜SB7のシステムコントローラSCのスヌープ制御部6は、自身が搭載されるシステムコントローラSCが管理するCPU1が有するキャッシュメモリ11のキャッシュラインの状態およびデータ転送に用いる資源の状態を検出して、キャッシュメモリ11のステータスを選択するスヌープ処理を実行する。
スヌープ処理を実行した後、システムボードSB0〜SB7のシステムコントローラSCのスヌープ制御部6は、キャッシュメモリを識別するためのキャッシュメモリ識別子、当該キャッシュメモリ識別子が示すキャッシュメモリ11のステータス、および自身が搭載されるシステムボードSB0〜SB7の物理番号を含むスヌープ処理結果を他のシステムボードSB0〜SB7のシステムコントローラSCのスヌープ制御部6に通知する。なお、スヌープ制御部6は、ステータスが「HIT」の場合には登録型も含めて通知する。
システムボードSB0〜SB7のシステムコントローラSCのスヌープ制御部6は、自身が選択したステータスおよび他のスヌープ制御部6から通知されたステータスをマージして、最終ステータスを選択する。最終ステータスが「BUSY」の場合、スヌープ制御部6は、最終ステートが「HIT」または「MISS」になるまでスヌープ処理を繰り返す。最終ステータスが「HIT」の場合、スヌープ制御部6は、ステータスが「HIT」であるキャッシュメモリ11の1つに対してデータ転送を要求するメモリアクセス処理を起動するとともに、当該キャッシュメモリ11の登録型を更新する。
最終ステータスが「MISS」であって、かつメモリアクセス要求がフェッチ要求の場合、スヌープ制御部6は、メインメモリ3から対象データをリードするメモリアクセス処理を起動するとともに、キャッシュメモリ11の登録型を更新する。
また、最終ステータスが「MISS」であって、かつメモリアクセス要求がストア要求の場合、スヌープ制御部6は、メインメモリ3に対象データをストアするメモリアクセス処理を起動する。
図7−1および図7−2のフローチャートを参照して、最終ステートが「HIT」の場合のデータ転送の転送元となるキャッシュメモリ11の選択動作について詳細に説明する。なお、スヌープ処理結果の中で「HIT」が1つの場合には、ステータスが「HIT」であるキャッシュメモリが転送元となるので、ここでは、複数のステータスが「HIT」である場合について説明する。
システムボードSB0〜SB7のシステムコントローラSCのスヌープ制御部6は、自身のスヌープ処理結果に「HIT」が含まれているか否かを判定する(図7−1のステップS100)。自身のスヌープ処理結果に「HIT」が含まれていない場合、データ転送の対象ではないので処理を終了する。自身のスヌープ処理結果に「HIT」が含まれている場合、各スヌープ制御部6は、物理番号付きメモリアクセス要求がフェッチ要求あって、かつ共有型・未更新のデータ転送であるか否か、すなわち物理番号付きメモリアクセス要求がフェッチ要求あって、かつスヌープ処理結果が「HIT」の登録型が全て「共有(S)」であるか否かを判定する(図7−1のステップS101)。
物理番号付きメモリアクセス要求がフェッチ要求あって、かつ共有型・未更新のデータ転送である場合、各スヌープ制御部6は、物理番号付きメモリアクセス要求の物理番号と、スヌープ処理結果に含まれる物理番号に基づいて、メモリアクセス要求を発行したCPU1(要求元)と、スヌープ処理結果が「HIT」であるキャッシュメモリ11を有するそれぞれのCPU1(送信元候補)との物理的な距離が最も近い送信元候補を送信元として選択する(図7−1のステップS102)。具体的には、たとえば、各スヌープ制御部6に予め各物理番号間の物理的な距離を数値化して登録しておき、物理番号付きメモリアクセス要求の物理番号とスヌープ処理結果に含まれる物理番号に対応付けられた数値を抽出し、抽出した数値が最も小さい送信元候補を送信元として選択する。
各スヌープ制御部6は、送信元となるCPU1が自身が搭載されるシステムコントローラSCが管理するCPU1であるか否かを判定する(図7−1のステップS103)。送信元となるCPUが自身が搭載されるシステムコントローラSCが管理するCPU1ではない場合、各スヌープ制御部6は処理を終了する。送信元となるCPUが自身が搭載されるシステムコントローラSCが管理するCPU1である場合、スヌープ制御部6は、CPUリクエスト発行部7を介して選択したCPU1のキャッシュメモリ11からデータを読み出すアクセス要求を出力してデータを読み出し、読み出したデータと当該データの登録型を「共有(S)」とすることを含む応答を要求元に送信する(図7−1のステップS104)。これにより、要求元であるCPU1は、応答に含まれるデータをキャッシュラインに格納するとともに、当該キャッシュラインのキャッシュライン識別子に対応付けて登録されているキャッシュライン状態情報に「共有(S)」を登録する。
たとえば、図8に示すように、システムボードSB1のCPU1a、システムボードSB4のCPU1a,1b、およびシステムボードSB5のCPU1a,1bの登録型が「共有(S)」であった場合には、要求元であるシステムボードSB0のCPU1aと最も物理的な距離が近いシステムボードSB1のCPU1aが送信元として選択され、システムボードSB1のCPU1aがシステムボードSB0のCPU1aにデータを転送し、データを格納したシステムボードSB0のCPU1aが有するキャッシュメモリ11aのキャッシュラインの登録型が「無効(I)」から「共有(S)」に変更される。
一方、物理番号付きメモリアクセス要求がフェッチ要求あって、かつ共有型・未更新のデータ転送ではない場合(図7−1のステップS101,No)、各スヌープ制御部6は、物理番号付きメモリアクセス要求がフェッチ要求あって、かつ共有型・更新済みのデータ転送であるか否か、すなわち物理番号付きメモリアクセス要求がフェッチ要求であって、かつスヌープ処理結果が「HIT」の登録型に「共有(S)」および「オーナ(O)」が含まれているか否かを判定する(図7−1のステップS105)。物理番号付きメモリアクセス要求がフェッチ要求あって、かつ共有型・更新済みのデータ転送である場合、各スヌープ制御部6は、登録型が「オーナ(O)」のCPU1とライトバック時にデータを格納するメインメモリ3(ライトバック対象メインメモリ)との物理的な距離、および要求元であるCPU1とライトバック対象メインメモリ3との物理的な距離を求める(図7−1のステップS106)。
具体的には、たとえば、スヌープ制御部6に、予め各システムボードSB0〜SB7に搭載されるそれぞれのメインメモリ3のアドレス空間と搭載されるシステムボードSB0〜SB7との対応付けを登録しておき、この対応付けと、物理番号付きメモリアクセス要求に含まれるアドレスとに基づいてライトバック対象メインメモリの物理番号を認識し、上述したCPU1間の物理的な距離を求めた場合と同様にして登録型が「オーナ(O)」のCPU1とライトバック時にデータを格納するメインメモリ3(ライトバック対象メインメモリ)との物理的な距離、および要求元であるCPU1とライトバック対象メインメモリとの物理的な距離を求める。
各スヌープ制御部6は、要求元であるCPU1の方が、登録型が「オーナ(O)」のCPU1よりもライトバック対象メインメモリとの物理的な距離が近いか否かを判定する(図7−1のステップS107)。要求元であるCPU1の方が登録型が「オーナ(O)」のCPU1よりもとライトバック対象メインメモリとの物理的な距離が近い場合、各スヌープ制御部6は、登録型が「オーナ(O)」のCPU1を送信元として選択する(図7−1のステップS108)。
各スヌープ制御部6は、送信元となるCPU1が自身が搭載されるシステムコントローラSCが管理するCPU1であるか否かを判定する(図7−1のステップS109)。送信元となるCPUが自身が搭載されるシステムコントローラSCが管理するCPU1ではない場合、スヌープ制御部6は処理を終了する。送信元となるCPUが自身が搭載されるシステムコントローラSCが管理するCPU1である場合、スヌープ制御部6は、CPUリクエスト発行部7を介して選択したCPU1のキャッシュメモリ11からデータを読み出すアクセス要求を出力し、読み出したデータと当該データの登録型を「オーナ(O)」とすることを含む応答を要求元に送信するとともに、当該キャッシュラインを示すキャッシュライン識別子に対応付けてキャッシュ管理テーブル9に登録されているキャッシュライン状態情報の登録型を「オーナ(O)」から「共有(S)」に変更する(図7−1のステップS110)。これにより、要求元であるCPU1は、応答に含まれるデータをキャッシュメモリ11aのキャッシュラインに格納するとともに、当該キャッシュラインのキャッシュライン識別子に対応付けてキャッシュ管理テーブル9に登録されているキャッシュライン状態情報に「オーナ(O)」を登録する。
たとえば、図9に示すように、システムボードSB1のCPU1aの登録型が「オーナ(O)」であって、システムボードSB4のCPU1a,1b、およびシステムボードSB5のCPU1a,1bの登録型が「共有(S)」である場合であって、かつライトバック対象メインメモリがシステムボードSB0のメインメモリ3bの場合、要求元であるシステムボードSB0のCPU1aとメインメモリ3bとの物理的な距離の方が、登録型が「オーナ(O)」のシステムボードSB1のCPU1aとシステムボードSB0のメインメモリ3bとの物理的な距離よりも近い。したがって、登録型が「オーナ(O)」のシステムボードSB1のCPU1aが送信元として選択され、システムボードSB1のCPU1aがシステムボードSB0のCPU1aにデータを転送するとともに、登録型を「オーナ(0)」から「共有(S)」に変更し、データを格納したシステムボードSB0のCPU1aが有するキャッシュメモリ11aのキャッシュラインの登録型が「無効(I)」から「オーナ(O)」に変更される。これにより、登録型が「オーナ(O)」のデータは、ライトバック時にデータを格納するメインメモリ3aと同一のシステムボードSB0に存在することになり、ライトバック時にバスおよびクロスバーXB0,XB1を介することなくメインメモリ3aに格納することが可能となる。
一方、要求元であるCPU1とライトバック対象メインメモリとの物理的な距離の方が登録型が「オーナ(O)」のCPU1とライトバック対象メインメモリとの物理的な距離の方が遠い場合(図7−1のステップS107,No)、システムボードSB0のシステムコントローラSCのスヌープ制御部6は、要求元と送信元候補との物理的な距離が最も近い送信元候補を送信元として選択する(図7−1のステップS111)。
システムボードSB0〜SB7のシステムコントローラSCのスヌープ制御部6は、送信元となるCPU1が自身が搭載されるシステムコントローラSCが管理するCPU1であるか否かを判定する(図7−1のステップS112)。送信元となるCPUが自身が搭載されるシステムコントローラSCが管理するCPU1であると判定した場合、スヌープ制御部6は、CPUリクエスト発行部7を介して選択したCPU1のキャッシュメモリ11からデータを読み出すアクセス要求を出力し、読み出したデータと当該データの登録型を「共有(S)」とすることを含む応答を要求元に送信する(図7−1のステップS113)。これにより、要求元であるCPU1は、応答に含まれるデータをキャッシュラインに格納するとともに、当該キャッシュラインのキャッシュライン識別子に対応付けて登録されているキャッシュライン状態情報に「共有(S)」を登録する。
たとえば、図10に示すように、システムボードSB1のCPU1aの登録型が「オーナ(O)」であって、システムボードSB1のCPU1b、およびシステムボードSB5のCPU1bの登録型が「共有(S)」である場合であって、かつライトバック対象メインメモリがシステムボードSB4のメインメモリ3aの場合、登録型が「オーナ(O)」のシステムボードSB1のCPU1aの方が、要求元であるシステムボードSB0のCPU1aよりもシステムボードSB4のメインメモリ3aとの物理的な距離が近い。また、システムボードSB1のCPU1aの方が、システムボードSB1のCPU1bおよびシステムボードSB5のCPU1aよりも、要求元であるシステムボードSB0のCPU1aとの物理的な距離が近い。したがって、登録型が「オーナ(O)」のシステムボードSB1のCPU1aが送信元として選択され、システムボードSB1のCPU1aがシステムボードSB0のCPU1aにデータを転送する。これにより、データを格納したシステムボードSB0のCPU1aが有するキャッシュメモリ11aのキャッシュラインの登録型が「無効(I)」から「共有(S)」に変更される。すなわち、「オーナ(O)」の登録型の移動は行わない。
一方、物理番号付きメモリアクセス要求がフェッチ要求あって、かつ共有型・更新済みのデータ転送ではない場合(図7−1のステップS105,No)、各スヌープ制御部6は、物理番号付きメモリアクセス要求がストア要求であって、かつ共有型・更新済みデータの転送であるか否か、すなわち物理番号付きメモリアクセス要求がフェッチ要求あって、かつスヌープ処理結果が「HIT」の登録型に、「共有(S)」および「オーナ(O)」が含まれているか否かを判定する(図7−2のステップS114)。
物理番号付きメモリアクセス要求がストア要求であって、かつ共有型・更新済みデータの転送である場合、各スヌープ制御部6は、送信元候補の中でデータをストアするメインメモリ3に物理的な距離が最も近い送信元候補を送信元として選択する(図7−2のステップS115)。送信元となるCPUが自身が搭載されるシステムコントローラSCが管理するCPU1である場合、スヌープ制御部6は、CPUリクエスト発行部7を介して選択したCPU1のキャッシュメモリ11からデータを読み出すアクセス要求を出力してデータを読み出し、読み出したデータとストア要求に含まれるデータとをマージする(ステップS117)。具体的には、キャッシュメモリ11から読み出したデータの内、ストア要求に含まれるアドレスに対応するデータをストア要求に含まれるデータに置き換える。
スヌープ制御部6は、マージしたデータをストア先のメインメモリ3に格納するとともに、スヌープ処理結果が「ヒット」であるすべてのCPU1に当該キャッシュラインの登録型を「無効(I)」にするように通知する(ステップS118)。具体的には、ストア先のメインメモリ3が自身が搭載されるシステムコントローラSCが管理するメインメモリ3である場合、スヌープ制御部6は、MSアクセス発行部8を介してストア先のメインメモリ3にマージしたデータを格納させるメモリアクセス処理を起動して、メインメモリ3にマージしたデータを格納させる。そして、当該キャッシュラインを示すキャッシュライン識別子に対応付けてキャッシュ管理テーブル9に登録されているキャッシュライン状態情報の登録型を「無効(I)」に変更するとともに、スヌープ処理結果が「HIT」であるすべてのCPU1に当該キャッシュラインの登録型を「無効(I)」にするように通知し、スヌープ処理結果が「HIT]であるすべてのCPU1の当該キャッシュラインの登録型を「無効(I)」に変更させる。
ストア先のメインメモリ3が自身が搭載されるシステムコントローラSCが管理するメインメモリ3ではない場合、スヌープ制御部6は、要求元としてストア先のメインメモリ3が搭載されるシステムボードSB0〜SB7のシステムコントローラSCを選択してマージしたデータを送信し、要求元として選択したシステムボードSB0〜SB7のシステムコントローラSCを介してストア先であるメインメモリ3にデータを格納させる。そして、当該キャッシュラインを示すキャッシュライン識別子に対応付けてキャッシュ管理テーブル9に登録されているキャッシュライン状態情報の登録型を「無効(I)」に変更するとともに、スヌープ処理結果が「HIT」であるすべてのCPU1に当該キャッシュラインの登録型を「無効(I)」にするように通知し、スヌープ処理結果が「HIT]であるすべてのCPU1の当該キャッシュラインの登録型を「無効(I)」に変更させる。
たとえば、図11に示すように、システムボードSB0のCPU1b、システムボードSB1のCPU1a,1b、システムボードSB4のCPU1b、およびシステムボードSB5のCPU1a,1bの登録型が「共有(S)」であって、システムボードSB4のCPU1aの登録型が「オーナ(O)」である場合であって、かつストア要求によるデータをストアするメインメモリがシステムボードSB4のメインメモリ3aである場合、システムボードSB4のメインメモリ3aと同一システムボードSB4のCPU1aが、システムボードSB4のメインメモリ3aと最も物理的な距離が近い。したがって、システムボードSB4のシステムコントローラSCのスヌープ制御部6は、システムボードSB4のCPU1aからデータを読み出してストア要求のデータとマージし、マージしたデータをバスやクロスバーXB0,XB1を介することなくシステムボードSB4のメインメモリ3aに格納させ、システムボードSB0のCPU1b、システムボードSB1のCPU1a,1b、システムボードSB4のCPU1b、およびシステムボードSB5のCPU1a,1bの当該キャッシュラインの登録型を「共有(S)」から「無効(I)」に変更させる。
また、図12に示すように、システムボードSB0のCPU1b、システムボードSB0のCPU1b、およびシステムボードSB5のCPU1bの登録型が「共有(S)」であって、システムボードSB1のCPU1aの登録型が「オーナ(O)」である場合であって、かつストア要求によるデータをストアするメインメモリがシステムボードSB4のメインメモリ3aである場合、システムボードSB5のCPU1aがシステムボードSB4のメインメモリ3aと最も物理的な距離が近い。したがって、システムボードSB5のシステムコントローラSCのスヌープ制御部6は、システムボードSB5のCPU1aからデータを読み出してストア要求のデータとマージし、マージしたデータをバス、クロスバーXB1、およびシステムボードSB4のシステムコントローラSCを介してシステムボードSB4のメインメモリ3aに格納させ、システムボードSB0のCPU1b、システムボードSB0のCPU1b、およびシステムボードSB5のCPU1bの当該キャッシュラインの登録型を「共有(S)」から「無効(I)」に変更させる。
一方、物理番号付きメモリアクセス要求がストア要求であって、かつ共有型・更新済みデータの転送ではない場合(図7−2のステップS114,No)、各スヌープ制御部6は、スヌープ処理結果が「HIT」したCPUを送信元として選択して、一般的なデータ転送を実行し、データ転送に応じた登録型の更新を行う(図7−2のステップS119)。すなわち、従来のMOESIプロトコルに基づいたデータ転送処理を実行する。
以上説明したように、この実施例においては、メモリアクセス要求の要求するデータが存在するキャッシュメモリが複数存在する場合、メモリアクセス要求の種類、およびデータが存在するキャッシュメモリ毎のデータの状態を示す登録型に基づいて、データが存在するキャッシュメモリを有する送信元候補のCPUの中から、メモリアクセス要求を発行した要求元のCPU、またはメモリアクセス要求の要求するデータをライトバック時にストアするライトバック対象のメインメモリと物理的な距離が最も近い送信元候補のCPUを送信元のCPUとして選択してデータを転送するとともに、要求元のCPUおよび送信元のCPUと、ライトバック対象のメインメモリとの物理的な距離に応じて登録型を移動させるようにしているため、データ転送時にバスを効率よく使用することができる。
また、この実施例においては、メモリアクセス要求がフェッチ要求あって、かつ共有型・更新済みのデータ転送である場合、要求元のCPUのほうが、送信元のCPUよりもライトバック対象のメインメモリと物理的な距離が近い場合には、要求元のCPUが有するキャッシュメモリの登録型を「オーナ」に変更することで、ライトバック時にライトバック対象のメインメモリに格納するデータが存在するキャッシュメモリを、ライトバック対象のメインメモリと物理的な距離を近づけるようにしているため、ライトバック時のデータ転送時にバスを効率よく使用することができる。
さらに、この実施例においては、メモリアクセス要求がストア要求であって、かつ共有型・更新済みデータの転送である場合、送信元候補のCPUの中から、ライトバック対象のメインメモリに物理的な距離が最も近いCPUを送信元として選択するようにしているため、データ転送時にバスを効率よく使用することができる。
なお、この実施例においては、MOESIプロトコルを用いた場合を例に挙げて説明したが、キャッシュメモリのコヒーレンシを維持するためのキャッシュプロトコルはこれに限るものではなく、登録型として「オーナ(O)」および「共有(S)」を有するキャッシュプロトコルであればよい。
以上のように、本発明における情報処理装置、制御装置および制御方法は、キャッシュメモリを有する複数のCPUと、共有メモリを構成する複数のメインメモリとをグループ分けし、グループ毎にCPUとメインメモリとを管理しキャッシュメモリ間またはキャッシュメモリとメインメモリとの間のデータ転送を制御するシステムコントローラを備える構成の大規模な情報処理装置に有用である。
図1は、この発明における情報処理装置の構成を示す図である。 図2は、図1に示したシステムボードの構成を示すブロック図である。 図3は、図2に示したシステムコントローラの構成を示すブロック図である。 図4は、図3に示したキャッシュ管理テーブルの構成を示す図である。 図5は、図2に示したキャッシュメモリのデータの状態の遷移を説明するための状態遷移図である。 図6は、図5に示した状態遷移図の遷移条件を説明するための図である。 図7−1は、この発明における情報処理装置の動作を説明するためのフローチャートである。 図7−2は、この発明における情報処理装置の動作を説明するためのフローチャートである。 図8は、この発明における情報処理装置の動作を説明するための図である。 図9は、この発明における情報処理装置の動作を説明するための図である。 図10は、この発明における情報処理装置の動作を説明するための図である。 図11は、この発明における情報処理装置の動作を説明するための図である。 図12は、この発明における情報処理装置の動作を説明するための図である。
1a,1b CPU
2a,2b IO装置
3a,3b メインメモリ
4 メモリアクセス要求受信部
5 ブロードキャスト送受信部
6 スヌープ制御部
7 CPUリクエスト発行部
8 MSアクセス発行部
9 キャッシュ管理テーブル
11a,11b キャッシュメモリ
SB0,SB1,SB2,SB3,SB4,SB5,SB6,SB7 システムボード
SC システムコントローラ
XB0,XB1 クロスバー

Claims (6)

  1. データを登録するキャッシュメモリをそれぞれ有し、ストア要求を発行する複数の演算処理装置と、
    前記複数の演算処理装置から共有される主記憶装置と、
    前記複数の演算処理装置と前記主記憶装置に接続され、前記複数の演算処理装置のうち一の演算処理装置からストア要求を受信した場合、前記キャッシュメモリが登録する前記ストア要求の対象データの状態を示す情報が、当該対象データが複数の演算処理装置から共有され且つ更新済みである旨の情報であるならば、前記対象データを登録するキャッシュメモリを有する複数の送信元候補の演算処理装置の中から、前記主記憶装置との物理的な距離が最も近い演算処理装置を選択し、前記対象データと前記選択した演算処理装置のキャッシュメモリから読み出したデータとを結合して前記主記憶装置に格納させるとともに、前記送信元候補の演算処理装置が有するキャッシュメモリが登録する前記対象データの状態を示す情報を無効に変更する制御装置を有することを特徴とする情報処理装置。
  2. 前記制御装置は、前記送信元候補の演算処理装置の中に、前記対象データを格納する前記主記憶装置に直接接続された該制御装置に直接接続された演算処理装置が存在する場合に、当該演算処理装置を、前記主記憶装置との物理的な距離が最も近い演算処理装置として選択することを特徴とする請求項1記載の情報処理装置。
  3. データを登録するキャッシュメモリをそれぞれ有し、ストア要求を発行する複数の演算処理装置と、前記複数の演算処理装置から共有される主記憶装置に接続される制御装置において、
    前記複数の演算処理装置のうちーの演算処理装置からストア要求を受信する受信部と、
    前記演算処理装置が有するキャッシュメモリが登録する各データの状態を示す情報を保持する情報保持部と、
    前記ストア要求の対象データに関して前記情報保持部が保持する情報が、当該対象データが複数の演算処理装置から共有され且つ更新済みである旨の情報であるとき、前記対象データを登録するキャッシュメモリを有する複数の送信元候補の演算処理装置の中から、前記主記憶装置との物理的な距離が最も近い演算処理装置を選択し、前記対象データと前記選択した演算処理装置のキャッシュメモリから読み出したデータとを結合して前記主記憶装置に格納させるとともに、前記送信元候補の演算処理装置が有するキャッシュメモリが登録する前記対象データの状態を示す前記情報保持部が保持する情報を無効に変更する制御部を有することを特徴とする制御装置。
  4. 前記制御部は、前記送信元候補の演算処理装置の中に、前記対象データを格納する前記主記憶装置に直接接続されるとともに、該制御部を有する制御装置に直接接続された演算処理装置が存在する場合に、当該演算処理装置を、前記主記憶装置との物理的な距離が最も近い演算処理装置として選択することを特徴とする請求項3記載の制御装置。
  5. データを登録するキャッシュメモリをそれぞれ有し、ストア要求を発行する複数の演算処理装置と、前記複数の演算処理装置から共有される主記憶装置と、前記複数の演算処理装置と前記主記憶装置に接続される制御装置の制御方法において、
    前記制御装置が有する受信部が、前記複数の演算処理装置のうち一の演算処理装置からストア要求を受信するステップと、
    前記ストア要求の対象データに関して前記制御装置が有する情報保持部が保持する情報が、当該対象データが複数の演算処理装置から共有され且つ更新済みである旨の情報であるとき、前記制御装置が有する制御部が、前記対象データを登録するキャッシュメモリを有する複数の送信元候補の演算処理装置の中から、前記主記憶装置と物理的な距離が最も近い演算処理装置を選択するステップと、
    前記制御部が、前記対象データと前記選択した演算処理装置のキャッシュメモリから読み出したデータとを結合して前記主記憶装置に格納させるステップと、
    前記制御部が、前記送信元候補の演算処理装置が有するキャッシュメモリが登録する前記対象データの状態を示す前記情報保持部が保持する情報を無効に変更するステップを有することを特徴とする制御方法。
  6. 前記主記憶装置と物理的な距離が最も近い演算処理装置を選択するステップにおいて、前記制御部は、前記送信元候補の演算処理装置の中に、前記対象データを格納する前記主記憶装置に直接接続されるとともに、該制御部を有する制御装置に直接接続された演算処理装置が存在する場合に、当該演算処理装置を、前記主記憶装置との物理的な距離が最も近い演算処理装置として選択することを特徴とする請求項5記載の制御方法。
JP2008501536A 2006-02-24 2006-02-24 情報処理装置、制御装置および制御方法 Expired - Fee Related JP4409619B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2006/303437 WO2007096979A1 (ja) 2006-02-24 2006-02-24 情報処理装置およびデータ転送方法

Publications (2)

Publication Number Publication Date
JPWO2007096979A1 JPWO2007096979A1 (ja) 2009-07-09
JP4409619B2 true JP4409619B2 (ja) 2010-02-03

Family

ID=38437041

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008501536A Expired - Fee Related JP4409619B2 (ja) 2006-02-24 2006-02-24 情報処理装置、制御装置および制御方法

Country Status (3)

Country Link
US (1) US8176261B2 (ja)
JP (1) JP4409619B2 (ja)
WO (1) WO2007096979A1 (ja)

Families Citing this family (10)

* 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 情報処理装置,メモリ制御方法およびメモリ制御装置
JP2009232097A (ja) * 2008-03-21 2009-10-08 Brother Ind Ltd 多機能周辺装置、およびネットワークシステム
US8468365B2 (en) * 2010-09-24 2013-06-18 Intel Corporation Tweakable encryption mode for memory encryption with protection against replay attacks
CN103620617B (zh) * 2011-06-29 2016-08-17 英特尔公司 用于带有完整性检查和防止重放攻击的保护的存储器加密的方法和设备
US9436605B2 (en) * 2013-12-20 2016-09-06 Intel Corporation Cache coherency apparatus and method minimizing memory writeback operations
US9483409B2 (en) * 2015-02-05 2016-11-01 International Business Machines Corporation Store forwarding cache
US10261690B1 (en) * 2016-05-03 2019-04-16 Pure Storage, Inc. Systems and methods for operating a storage system
US10353829B2 (en) * 2017-06-30 2019-07-16 Dell Products, Lp System and method to account for I/O read latency in processor caching algorithms
JP6907787B2 (ja) * 2017-07-28 2021-07-21 富士通株式会社 情報処理装置および情報処理方法
US11868309B2 (en) 2018-09-06 2024-01-09 Pure Storage, Inc. Queue management for data relocation

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05100952A (ja) * 1991-10-07 1993-04-23 Fuji Xerox Co Ltd データ処理装置
JPH06110844A (ja) * 1992-08-11 1994-04-22 Toshiba Corp 分散共有メモリ型マルチプロセッサシステム
US5522058A (en) * 1992-08-11 1996-05-28 Kabushiki Kaisha Toshiba Distributed shared-memory multiprocessor system with reduced traffic on shared bus
JPH0895858A (ja) 1994-09-28 1996-04-12 Hitachi Ltd マルチプロセッサシステム
JPH10232825A (ja) 1997-02-20 1998-09-02 Nec Ibaraki Ltd キャッシュメモリ制御方式
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
US6484220B1 (en) * 1999-08-26 2002-11-19 International Business Machines Corporation Transfer of data between processors in a multi-processor system
US6889293B1 (en) 2000-06-09 2005-05-03 Agere Systems Inc. Directory-based prediction methods and apparatus for shared-memory multiprocessor systems
US7133905B2 (en) * 2002-04-09 2006-11-07 Akamai Technologies, Inc. Method and system for tiered distribution in a content delivery network
US6848032B2 (en) * 2002-09-27 2005-01-25 Apple Computer, Inc. Pipelining cache-coherence operations in a shared-memory multiprocessing system
AU2003903967A0 (en) * 2003-07-30 2003-08-14 Canon Kabushiki Kaisha Distributed data caching in hybrid peer-to-peer systems
US7676637B2 (en) * 2004-04-27 2010-03-09 International Business Machines Corporation Location-aware cache-to-cache transfers
US7584327B2 (en) * 2005-12-30 2009-09-01 Intel Corporation Method and system for proximity caching in a multiple-core system
US7571285B2 (en) * 2006-07-21 2009-08-04 Intel Corporation Data classification in shared cache of multiple-core processor
US7870337B2 (en) * 2007-11-28 2011-01-11 International Business Machines Corporation Power-aware line intervention for a multiprocessor snoop coherency protocol

Also Published As

Publication number Publication date
JPWO2007096979A1 (ja) 2009-07-09
US20080320234A1 (en) 2008-12-25
US8176261B2 (en) 2012-05-08
WO2007096979A1 (ja) 2007-08-30

Similar Documents

Publication Publication Date Title
JP4409619B2 (ja) 情報処理装置、制御装置および制御方法
CN108885583B (zh) 高速缓存存储器访问
US8806148B2 (en) Forward progress mechanism for stores in the presence of load contention in a system favoring loads by state alteration
KR101639672B1 (ko) 무한 트랜잭션 메모리 시스템 및 그 동작 방법
JP4362454B2 (ja) キャッシュコヒーレンス管理装置およびキャッシュコヒーレンス管理方法
US7657710B2 (en) Cache coherence protocol with write-only permission
US8762651B2 (en) Maintaining cache coherence in a multi-node, symmetric multiprocessing computer
JP5445581B2 (ja) コンピュータシステム、制御方法、記録媒体及び制御プログラム
US7640401B2 (en) Remote hit predictor
JPH11272557A (ja) キャッシュ・コヒ―レンシを維持する方法及びシステム
JP2007257637A (ja) アクセラレータ用低コストのキャッシュ一貫性を維持する方法及びシステム
JP4673585B2 (ja) メモリシステム制御装置およびメモリシステム制御方法
JP2005189928A (ja) マルチプロセッサシステム、マルチプロセッサシステムにおける一貫性制御装置及び一貫性制御方法
US20140006716A1 (en) Data control using last accessor information
JP3550092B2 (ja) キャッシュ装置及び制御方法
EP4066119A1 (en) Cache snooping mode extending coherence protection for certain requests
WO2021111255A1 (en) Cache snooping mode extending coherence protection for certain requests
JP2022015514A (ja) 半導体装置
JP2008046961A (ja) システムコントローラ,スヌープタグ更新方法および情報処理装置
JP4335298B2 (ja) スヌープ制御方法および情報処理装置
JPWO2007097029A1 (ja) プロセッサ装置および命令処理方法
JPH09128346A (ja) 階層バスシステム
US11157408B2 (en) Cache snooping mode extending coherence protection for certain requests
JP2016015135A (ja) キャッシュメモリ管理ディレクトリにおけるエビクションの低減
Sorin et al. Directory Coherence Protocols

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090407

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090605

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090623

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090819

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090908

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20091008

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: 20091110

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: 20091111

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20121120

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20121120

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20131120

Year of fee payment: 4

LAPS Cancellation because of no payment of annual fees