JP2009070013A - マルチプロセッサ及びメモリリプレース方法 - Google Patents

マルチプロセッサ及びメモリリプレース方法 Download PDF

Info

Publication number
JP2009070013A
JP2009070013A JP2007236085A JP2007236085A JP2009070013A JP 2009070013 A JP2009070013 A JP 2009070013A JP 2007236085 A JP2007236085 A JP 2007236085A JP 2007236085 A JP2007236085 A JP 2007236085A JP 2009070013 A JP2009070013 A JP 2009070013A
Authority
JP
Japan
Prior art keywords
cell
memory
copy
snoop
processor
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.)
Granted
Application number
JP2007236085A
Other languages
English (en)
Other versions
JP4868246B2 (ja
Inventor
Masaaki Kitano
真章 北野
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.)
NEC Computertechno Ltd
Original Assignee
NEC Computertechno 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 NEC Computertechno Ltd filed Critical NEC Computertechno Ltd
Priority to JP2007236085A priority Critical patent/JP4868246B2/ja
Publication of JP2009070013A publication Critical patent/JP2009070013A/ja
Application granted granted Critical
Publication of JP4868246B2 publication Critical patent/JP4868246B2/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/0817Cache consistency protocols using directory methods
    • G06F12/082Associative directories

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)

Abstract

【課題】スパースディレクトリ方式を採用するマルチプロセッサシステムにおいて、コピー元のスパースディレクトリを用いてコピー先のスパースディレクトリを更新することによって、メモリの動的リプレースの処理を高速化させる。
【解決手段】キャッシュメモリを有するプロセッサ101〜104と、メモリ111〜114とを有するセルを複数備えるマルチプロセッサシステムであって、各セル100は、他セル内のキャッシュメモリに記録されている自セル内のメモリ111〜114のデータに関するステータス情報を保持するスパースディレクトリ121と、異なるメモリ間でデータコピーを行う場合、コピー元メモリからコピー先メモリへデータをコピーし、コピー元セル内のスパースディレクトリ121が保持するステータス情報に基づいて、コピー先セルのスパースディレクトリを更新するセルコントローラ120とを備える。
【選択図】図1

Description

本発明は、本発明は、スパースディレクトリ方式を採用するマルチプロセッサシステムにおけるメモリの動的リプレース方式に関する。
スパースディレクトリ方式を採用するマルチプロセッサシステムにおけるメモリの動的リプレースでは、リプレース前のメモリからリプレース後のメモリへデータのコピーが行われる。フルディレクトリ方式が、全メモリについてステータスとキャッシュしているプロセッサを管理するのに対し、スパースディレクトリ方式はメモリの一部についてのみ管理を行う方式である。スパースディレクトリ方式を採用するマルチプロセッサシステムにおける、関連するメモリの動的リプレースの方式について、図2を参照して説明する。図2は、複数のセルから構成されるマルチプロセッサシステムの一例を示す図である。図2において、セル100に備えるメモリ111からセル200に備えるメモリ214へ動的リプレースを行う場合を説明する。セル100、200は、1以上のプロセッサ、1以上のメモリ、及びセルコントローラを備える。
関連する方式では、メモリ間のデータコピー後にコピー先セルコントローラ220のスパースディレクトリを更新する。このため、メモリ間のデータコピー後に一度もアクセスされていないラインに対するアクセスの場合、全プロセッサにスヌープのブロードキャストを行う必要があった。さらに、スパースディレクトリでは全メモリのステータスを管理することができないので、コヒーレンシを保証するために、メモリのデータコピー後にコピー先の全メモリ214を一度リードし、スパースディレクトリを更新する必要があった。
スパースディレクトリ方式を採用するマルチプロセッサシステムにおけるメモリのデータコピー及びその終了後の動作を図9のフローチャートを使って説明する。
まず、コピー元プロセッサ101のメモリ111からコピー先プロセッサ201のメモリ211へのメモリのデータコピーを行う(S1001)。具体的には、次のような動作を行う。プロセッサ102は、システムFWから指示を受け、コピー元プロセッサ101に接続するメモリ111の全ラインを、キャッシュライン毎にリードし、コピー元プロセッサ101のメモリに対してライトを行う。コピー元プロセッサ101は、ライト要求を受けるたびにメモリ111に対して、ライトを行うとともに、コピー先プロセッサ204に接続するメモリ214に対しライトを転送する(ライト要求を行う)。このようにして、メモリのデータコピーを行う。
メモリ111の全ラインのリードおよびライトが完了した後に、システムFWはシステム内のアドレスとメモリの対応を示すレジスタをコピー元のメモリ111からコピー先のメモリ214に変更し、コピー元プロセッサ101とメモリ111をシステムから切り離す(S1002)。次に、システムFWから指示により、システム内の任意のプロセッサは、コピー先プロセッサ204に接続するメモリ214をキャッシュライン毎にリードする(S1003)。コピー先プロセッサ204は、接続する全てのプロセッサ201、202、203とセルコンローラ206に、スヌープを送信する(S1004)。スヌープを受けとったセルコントローラ220は、スパースディレクトリ221にスヌープを受けたラインのステータス情報を保持しているかの判断を行う(S1005)。
スパースディレクトリ221でラインのステータス情報を保持している場合(S1006でYes)、セルコントローラ220は、管理しているステータス情報に基づいてラインをキャッシュしている特定のプロセッサにスヌープを送信し(S1007)、該プロセッサよりスヌープレスポンスを受け取る(S1008)。一方、スパースディレクトリ221でラインのステータス情報を保持していない場合(S1006でNo)、セルコントローラ220は、セル200外の全てのプロセッサに対しスヌープのブロードキャストを行い(S1009)、そのスヌープレスポンスを全て受信する(S1010)。
次に、セルコントローラ220は、スヌープレスポンスに基づいて、スパースディレクトリ221の更新を行い(S1011)、コピー先プロセッサ204に対し、スヌープレスポンスを送信する(S1012)。コピー先プロセッサ204は、スヌープレスポンスを全て受信し、リクエストを送信したプロセッサにデータを送信する(S1013)。
任意のプロセッサは、コピー先メモリ214の全ラインのリードが終了したかを確認し、終了した場合(S1014でYes)、通常の動作に移行し(S1015)、リードしていないラインが残っている場合(S1014でNo)、コピー先メモリ214のキャッシュラインで、リードされていないラインにリードポイントをあわせ、リードを行い(S1016)、ステップS1004からの処理を繰り返す。このようにして、一連の動作をコピー先プロセッサ204のメモリの全キャッシュライン数分行う。
これにより、セルコントローラ220内のスパースディレクトリ221でセル200外のプロセッサのキャッシュ情報を全て管理する状態になり、プロセッサキャッシュ間コヒーレンシが保証される。また、特許文献1には、分散メモリマルチプロセッサシステムにおけるメモリ移行のためのシステムが開示されている。この技術はメモリの1ラインをコピーする毎に、アクセス先のラインを旧ラインから新ラインへ変更し、変更後のラインのアクセスを旧ラインから新ラインへ転送している。
特開2004−054931号公報
しかしながら、この関連する方式では、プロセッサキャッシュ間コヒーレンシを保証するため、コピー先メモリの全キャッシュラインをリードし、コピー先セル(上記例ではセル200)外に含まれる全プロセッサにスヌープのブロードキャストを行う必要があった。このため、メモリの動的リプレースの処理時間が長く、またメモリのデータコピー後のリードの間は、他のリクエストのスループットが落ち、性能が低下する問題があった。近年、システムあたりのメモリの容量は増加する傾向にあり、この問題を解決する必要があった。
本発明は、このような事情に鑑みてなされたものであり、スパースディレクトリ方式を採用するマルチプロセッサシステムにおいて、コピー元のスパースディレクトリを用いてコピー先のスパースディレクトリを更新することによって、メモリの動的リプレースの処理を高速化させることを目的とする。
本発明に係るマルチプロセッサの一態様は、キャッシュメモリを有する1以上のプロセッサと、1以上のメモリとを有するセルを複数備えるマルチプロセッサシステムであって、前記各セルは、他セル内のキャッシュメモリに記録されている自セル内のメモリのデータに関するステータス情報を保持するスパースディレクトリと、コピー元セルとコピー先セルが異なるメモリ間でデータコピーを行う場合、コピー元メモリからコピー先メモリへデータをコピーし、前記コピー元セル内のスパースディレクトリが保持するステータス情報に基づいて、前記コピー先セルのスパースディレクトリを更新するセルコントローラと、を備える。
また、本発明に係るメモリのリプレース方法の一態様は、キャッシュメモリを有する1以上のプロセッサと、1以上のメモリとを有するセルを複数備えるマルチプロセッサシステムのメモリリプレース方法であって、他セル内のキャッシュメモリに保持された自セル内のメモリのデータに関するステータス情報を保持し、セルが異なるメモリ間でコピー元メモリからコピー先メモリへデータをコピーし、コピー終了後、前記コピー元メモリへのアクセス先をコピー先メモリへ変更し、前記コピー元セル内のスパースディレクトリが保持するステータス情報に基づいて、前記コピー先セルのスパースディレクトリが保持するステータス情報を更新する。
本発明によれば、スパースディレクトリ方式を採用するマルチプロセッサシステムにおいて、コピー元のスパースディレクトリを用いてコピー先のスパースディレクトリを更新することによって、メモリの動的リプレースの処理を高速化させることが可能となる。
以下、本発明の実施形態について、図面を参照しながら説明する。説明の明確化のため、以下の記載及び図面は、適宜、省略、及び簡略化がなされている。各図面において同一の構成または機能を有する構成要素および相当部分には、同一の符号を付し、その説明を省略する。
(実施形態1)
本実施形態では、コピー元のスパースディレクトリにコピー元のメモリのキャッシュ状況を反映させ、メモリ間のデータコピー後にコピー元のスパースディレクトリの情報をコピー先のスパースディレクトリへ反映させる一態様を説明する。
図1は、本発明の実施形態に係るマルチプロセッサシステムが備えるセルの構成例を示すブロック図である。セル100はマルチプロセッサシステムの一つの単位であり、プロセッサ101、102、103、104、メモリ111、112、113、114、セルコントローラ120を備える。
キャッシュ(キャッシュメモリ)131、132、133、134は、プロセッサ101、102、103、104の内部にメモリのデータを一時的に格納するMESI(Modified Exclusive Shared Invalid)などの一般的なキャッシュプロトコルを採用するキャッシュメモリである。
プロセッサ101、102、103、104はメモリ111、112、113、114それぞれと接続され、各メモリのデータの管理を行っている。プロセッサ101〜104とセルコントローラ120は、インタフェース151〜160により、1対1で接続される。
メモリ111〜114は各プロセッサからキャッシュライン単位でアクセスされる。1キャッシュラインのビット幅は例えば64バイトで一定であり、メモリアクセスの際に指定されるアドレス(後述する図3のアドレス303)で、キャッシュラインの位置が決定される。
セルコントローラ120は、セル100内のメモリ111〜114とセル100外との間のアクセスを制御する。セルコントローラ120は、セル100の外部からのアクセスを受けたときに、メモリ111〜114が任意のプロセッサにキャッシュされているかどうかの情報と、キャッシュされている場合は、そのプロセッサ番号の情報を保持するスパースディレクトリ121を設ける。
スパースディレクトリ121は、セル内のメモリ111〜114に関して他セルのプロセッサが保持するキャッシュのステータスを全て管理する。ここで、スパースディレクトリ121は、セル100内のメモリ111〜114の全キャッシュラインより少ないエントリしか持たず、管理可能なエントリ数を越えた時には、他セル内のプロセッサからデータの掃き出しを行わせる機構を有する。
システムFW(Firmware)122は、セルコントローラ120内に設けられ、HW(hardware)の基本的な制御を行うソフトのことである。例えば、今回のメモリ間のデータコピーも、システムFWで制御可能なものの1つということができる。。
なお、図1に示すプロセッサ及びメモリの数は一例を示したものであり、1つのセルに1以上のプロセッサ及びメモリが備えられていればよい。
図2に、図1で示したセル間の接続を示す。図2は、複数のセルから構成されるマルチプロセッサシステムの一例を示す図である。図2では、セル100の他に、セル200、500、550を設けた例を示す。セル200、500、550は、セル100と同様の構成を有するが、図2中では一部省略している。セルコントローラ120、220、520、570はインタフェース251〜256で1対1接続され、セル100、200、500、550間のアクセスを転送する。セル200は、プロセッサ201、202、203、204とメモリ214、セルコントローラ220、セルコントローラ220に設置するスパースディレクトリ221を備える。セル500はプロセッサ501、502、503、504とセルコントローラ520を、セル550はプロセッサ551、552、553、554とセルコントローラ570を備えている。各セル200、500、550は、図1で示したキャッシュ105〜108とメモリ111〜114、スパースディレクトリ121、及びシステムFW122に対応する構成要素が存在するが、説明で使用しないため省略する。
図3は、本発明の実施形態におけるセル間の通信で使用されるパケットのフォーマットを示す図である。パケット300は、フラグ301、リクエストの種類302、アドレス303、キャッシュステータス304、送信先プロセッサ番号305、返信先プロセッサ番号306、及びデータ307から構成される。
フラグ301は、ディレクトリ更新中を示すフラグであり、コピー元セルコントローラまたは、コピー先セルコントローラで使用される。フラグ301は、"0"で通常のパケットであることを示し、"1"でディレクトリ更新するための専用パケットであることを示す。コピー元でもコピー先でもないセルコントローラでは、フラグ301の値を持ちまわる。フラグ301は、図4を用いて後述する、コピー元セルコントローラのリクエスト/スヌープ生成回路410で"1"にセットされ、コピー先セルコントローラの第1調停回路402とライトデータ生成回路406でチェックされる。
リクエストの種類302は、パケットが要求するリクエストの種類を示すフィールドであり、リード、リードリプライ、ライト、スヌープ、スヌープレスポンスに対応する値が格納される。リードはメモリからデータを読み出し、データを送信することを要求する。リードリプライは、リードに対する返信であり、読み出したデータをリード要求したプロセッサに送信する。スヌープは、リードされたアドレスのステータス情報をもとに、キャッシュしているプロセッサにキャッシュステータス304で示したステータスに変更することを要求する。スヌープレスポンスはスヌープに対する返信であり、スヌープを受信したプロセッサは、アドレスで示されるキャッシュラインのステータスをスヌープで要求されたステータスに変更した後に、スヌープレスポンスを送信する。
アドレス303は、メモリのアドレスを示すフィールドであり、どのメモリのどのキャッシュラインへのアクセスかが示される。また、アドレス303は、スパースディレクトリのエントリを決定するためにも使用される。
キャッシュステータス304は、アドレス303で特定されたラインのMESIステータスを示すフィールドである。パケットのリクエストの種類302がリードリプライの場合、キャッシュステータス304は、データ307のステータスを示す。リクエストの種類302がスヌープレスポンス、ライトの場合、キャッシュステータス304は、リクエストの送信元のプロセッサが保持する、アドレス303で特定されたキャッシュラインに対するステータスを示す。リクエストの種類302がリードの場合、キャッシュステータス304は、送信元のプロセッサがアドレス303で特定されたラインに要求するステータスを示す。リクエストの種類302がスヌープの場合は送信先のプロセッサにそのラインに対する変更するステータスを示す。
送信先プロセッサ番号305は、起因となるリクエスト(スヌープ、リード、ライト)を送信した先の(受信する)プロセッサ番号を示す。つまり、送信先プロセッサ番号305は、リクエストの種類302がスヌープとスヌープレスポンスの場合、アドレス303で特定されたラインをキャッシュしているプロセッサ番号を示し、リードとリードリプライ、ライトの場合、アクセスしたいメモリが接続しているプロセッサ番号を示す。
送信先プロセッサ番号305は、起因となるリクエスト(スヌープ、リード、ライト)を送信するプロセッサ番号を示す。つまり、返信先プロセッサ番号306は、リクエストの種類302がスヌープとスヌープレスポンスの場合、アドレスによって示されるメモリが接続するプロセッサ番号を示し、リードとリードリプライ、ライトの場合、リクエストを送信したプロセッサ番号を示す。コピー元セルコントローラ120から発振するスヌープにおける、返信先プロセッサ番号306値については、図4のリクエスト/スヌープ生成回路410後述する。
データ307は、データを格納する部分であり、リードリプライとライト、スヌープレスポンスで使用される。
図4に、本発明の実施形態に係るセルコントローラの構成例を示す。図4では、セル100内のセルコントローラ120を一例として示しているが、他のセル内に備えられるセルコントローラも同様の構成・機能を有する。セルコントローラ120は、図1に示したスパースディレクトリ121、システムFW122に加え、状態フラグ401、第1調停回路402、リクエスト格納バッファ403、スヌープレスポンス格納バッファ404、アドレス生成回路405、ライトデータ生成回路(スパースディレクトリライトデータ生成回路)406、ライトコマンド生成回路407、リードポインタ408、セレクタ409、413、リクエスト/スヌープ生成回路(生成部)410、合成回路411、及び第2調停回路412を備える。
状態フラグ401は、セルコントローラ120が、通常状態であるか、メモリのデータコピー後のコピー元セルコントローラとして動作している状態であるか、あるいは、メモリのデータコピー後のコピー先セルコントローラとして動作している状態であるかを示すフラグである。状態フラグ401は、システムFW122によって設定される。状態フラグ401のビット数は例えば2ビットであり、[00]で通常状態で動作することを示し、[01]でコピー元セルコントローラとして動作することを示し、[10]でコピー先セルコントローラとして動作することを示し、[11]は使用しない。2ビットの情報を第1調停回路402とライトデータ生成回路406、リクエスト/スヌープ生成回路410に出力する。また、アドレス生成回路405とリードポインタ408のセレクタ条件として出力される。
第1調停回路402は、セル100内のプロセッサ101〜104からのアクセス、及び、セル100外のセルコントローラ220、520、570からのアクセスを調停し、リクエスト格納バッファ403またはスヌープレスポンス格納バッファに出力する。第1調停回路402は、パケット300を入力し、状態フラグ401が[00]、[01]の場合は、リクエスト格納バッファ403へ出力を行う。第1調停回路402は、状態フラグ401が[10]の場合、パケット内のスパースディレクトリ121更新中を示すフラグ301のチェックを行い、フラグ301が"1"だった場合は、受信したパケットをスヌープレスポンス格納バッファ404に出力し、フラグ301が"1"でない場合は、リクエスト格納バッファ403に出力する。
リクエスト格納バッファ403は、現在セルコントローラ120で実行されているリクエストを全て保持している。また、保持しているリクエストに起因して、リクエスト/スヌープ生成回路410からスヌープが送信された場合、該リクエストと同一のエントリでスヌープの情報を保持し、該スヌープのレスポンスを受信する。
セルコントローラ120は、スパースディレクトリ121のエントリの読み出しを行う場合、保持したリクエストのアドレス303をアドレス生成回路405に送信し、エントリの特定を行う。スパースディレクトリ121のエントリの更新を行う場合、保持したリクエストのアドレス303をアドレス生成回路405に送信し、ライトデータ生成回路406へアドレスに対応するメモリラインのステータス(キャッシュステータス304とキャッシュするプロセッサ番号)を送信する。プロセッサに接続するメモリの更新が必要な場合、ライトコマンド生成回路407へリクエストの種類302とデータ307を送信する。メモリの更新が必要ない場合、リクエスト/スヌープ生成回路410へパケット内のリクエストの種類302を出力する。
スヌープレスポンス格納バッファ404は、コピー先セルコントローラである時に使用される。スヌープレスポンス格納バッファ404で受信するパケットのリクエストの種類は、スヌープレスポンスのみである。スヌープレスポンス格納バッファ404は、状態フラグ401が[10]のとき、すなわち、セルコントローラ120がメモリのデータコピー後のコピー先セルコントローラとなる場合、かつ、パケット300のフラグ301が"1"のとき、すなわち、スパースディレクトリ更新中の場合、第1調停回路402よりパケットを受信する。このため、スヌープレスポンス格納バッファ404に格納される、スパースディレクトリを更新するスヌープレスポンスを「更新用スヌープレスポンス」ともいう。セルコントローラ120は、受信したスヌープレスポンスの情報を基にして、スパースディレクトリ121の更新を行う。つまり、該スパースディレクトリのエントリを決定するために、アドレス生成回路405にアドレス303を送信し、更新するステータス情報(キャッシュステータス情報)を生成するためにライトデータ生成回路406にアドレスに対応するメモリラインのステータス情報(キャッシュステータス304とキャッシュするプロセッサ番号)を送信する。また、プロセッサに接続するメモリの更新が必要な場合は、ライトコマンド生成回路407へリクエストの種類302とデータ307を送信する。
アドレス生成回路405は、リクエスト格納バッファ403またはスヌープレスポンス格納バッファ404より送信されるアドレス303からキーアドレスを作成し、アクセスするスパースディレクトリ121のエントリを決定する。アドレス生成回路405は、状態フラグが[00]、[10]の時に、セレクタ409で選択され、スパースディレクトリをアクセスすることが可能になる。アドレスからキーアドレスを作成する方法はスパースディレクトリの構成に依存して決定する。ここではその方法の詳細には言及しない。決定したエントリのキーアドレスを基に、スパースディレクトリ121にアクセスを行う。
ライトデータ生成回路406は、リクエスト格納バッファ403またはスヌープレスポンス格納バッファ404から送られる情報からスパースディレクトリ121へ書き込むデータを生成する。書き込むデータは、ラインをキャッシュするプロセッサ番号、及び、該ラインのキャッシュステータス値、具体的には、ME(Modified Exclusive)、S(Shared)、I(Invalid)のいずれかの値である。本実施形態では、パケット300において、フラグ301が"1"(ディレクトリ更新中を示す)であるかを常時チェックし、"1"でない場合は、常にスパースディレクトリ121のステータス情報を更新する。フラグ301が"1"であり、スパースディレクトリ121にステータス情報が登録されていない場合は、該スパースディレクトリのステータス情報を更新し、ステータス情報が登録されている場合には、ステータス情報の更新は行わない。
ライトコマンド生成回路407は、セル100内のプロセッサ101〜104に接続するメモリ111〜114にデータを書き込む場合、または、他セル200、500、550のプロセッサからのリード要求に対応するデータを送信する場合に、リクエスト格納バッファ403またはスヌープレスポンス格納バッファ404から出力されるパケット300に含まれるリクエストの種類302及びデータ307に基づいてリードリプライ、ライトのコマンドを生成し、合成回路411へ出力する。
リードポインタ408は、スパースディレクトリ121のエントリ数の閾値を示すレジスタと、コピー元セルとして、スパースディレクトリ121を読み出すときのエントリを示すリードカウンタとを備える。リードカウンタの初期値は"0"である。リードポインタ408は、セルコントローラ120の状態フラグ401が[01]にアサートされている(すなわち、メモリのデータコピー後のコピー元セルコントローラである)時に、セレクタ409で選択され、リードカウンタに基づいてスパースディレクトリ121のエントリにアクセスする。また、リードポインタ408は、リクエスト/スヌープ生成回路410からストローブ信号を受信すると、リクエストカウンタを+1("1"インクリメント)し、スパースディレクトリの次エントリの読み込みを開始する。セルコントローラ120は、エントリ数の閾値(レジスタの値)を超えるまで、スパースディレクトリのエントリにアクセスを行う機能を有する。
セレクタ409は、状態フラグ401の値によって、セレクトを変更する。状態フラグ401が[00]、[10]のときは、アドレス生成回路405をセレクトし、状態フラグ401が[01]の時はリードポインタ408をセレクトする。ただし、状態フラグ401が[01]の場合でも、メモリ間のデータコピーに関与しないセル100内の他のプロセッサが存在するので、リクエスト格納バッファ403にリクエストが格納されている(セル100内の他のプロセッサからのリクエストか、または、セル100内の他のプロセッサに接続するメモリへのリクエストか、を受信している)場合は、優先してアドレス生成回路405をセレクトすることになる。
スパースディレクトリ121は、セル100内のメモリ111〜114に関してライン毎のステータス情報を管理する。ステータス情報は、ラインが他セル内のプロセッサにキャッシュされているかどうかの情報、及び、ラインが他セル内のプロセッサにキャッシュされている場合、キャッシュしているプロセッサ番号を含んだ情報を保持している。また、セル100外のプロセッサがキャッシュするセル内のメモリ111〜114のラインの管理を全て行う。メモリとプロセッサのキャッシュのアドレス・マッピングの方式として、例えばセット・アソシアティブ方式などがあるが、本発明では、アドレスとエントリの対応が取れればどのような方式でもよい。また、スパースディレクトリ121は、アドレス生成回路405より指示されたキーアドレスに対応するエントリへライトデータ生成回路406で生成されたステータス情報を書き込む機能を有する。また、アドレス生成回路405より指示されたキーアドレスに対応するエントリの読み出しを行い、読み出されたアドレスのステータス情報をリクエスト/スヌープ生成回路410と合成回路411とへ出力する機能を有する。また、リードポインタ408のリードカウンタにより指示されたエントリの読み出しを行い、読み出されたアドレス、及び、該アドレスのステータス情報をリクエスト/スヌープ生成回路410に出力する機能を有する。
リクエスト/スヌープ生成回路410は、スパースディレクトリ121から受け取るアドレス、該アドレスのステータス情報、及び、リクエスト格納バッファ403またはスヌープレスポンス格納バッファ404から受け取るリクエストの種類302に基づいて、スヌープの必要性を検証する。リクエスト/スヌープ生成回路410は、リクエストの種類302がスヌープ、リードであり、ステータス情報より他セルのプロセッサがキャッシュしていると判明した場合、スヌープリクエストの生成を行い、第2調停回路412に送信する。それと同時に、リクエスト格納バッファ403にスヌープの情報を通知する。リクエストの種類302がスヌープレスポンスの場合、スパースディレクトリ121から受け取る、アドレスに対応するラインのステータス情報(MESI)を付け、プロセッサに送信する。
また、リクエスト/スヌープ生成回路410は、セルコントローラ120がメモリのデータコピー後のコピー先セルコントローラである時、具体的には、状態フラグ401が[10]にアサートされている時に、スパースディレクトリ121に該リクエストのアドレスに対応するステータス情報を保持していないリクエストやスヌープを受信した場合、セル100外の全プロセッサにスヌープのブロードキャストを行う機構を有し、第2調停回路412に出力する。
さらに、リクエスト/スヌープ生成回路410は、セルコントローラ120がメモリのデータコピー後のコピー元セルコントローラである時、具体的には、状態フラグ401が[01]にアサートされている時に、スパースディレクトリ121からスヌープ指示があった場合、スヌープパケットの返信先プロセッサ番号306をコピー先セルコントローラに設定し、ディレクトリ更新中を示すフラグ301を"1"にセットしたスヌープを生成する機構を有する。生成したスヌープを第2調停回路412に出力すると同時に、リードポインタ408が保持するリードポインタを+1("1"インクリメント)するために、ストローブ信号をリードポインタ408に送信する。
合成回路411は、ライトコマンド生成回路407で生成されたリードリプライやライトと、スパースディレクトリ121から受け取る、アドレスに対応するラインのステータス情報(MESI)とを合成し、第2調停回路412に出力する。
第2調停回路412は、リクエスト/スヌープ生成回路410から出力されるスヌープ、リード、スヌープレスポンスの送信と、合成回路411から出力されるリードリプライやライトの送信を調停し、セル100のプロセッサ102、103、104(コピー元メモリと対応するプロセッサを除く)やセル100外のセルコントローラ220、520、550に送信する。
セレクタ413は、リクエスト格納バッファ403とスヌープレスポンス格納バッファ404との出力を選択する。セレクタ413は、状態フラグ401の値を入力し、状態フラグ401が[10]を示すとき、すなわち、コピー先セルのときに、スヌープレスポンス格納バッファ404の出力を優先して選択する構成にしてもよい。
続いて、図1、図2、及び図5を用いてメモリのデータコピーの動作を説明する。図5は、本実施形態のメモリ間のデータコピーの動作例を示すフローチャートである。ここでは、セル100のメモリ111のデータをセル200のメモリ214へデータコピーする場合の動作を一例として説明する。
メモリ間のデータコピーを行う前に、セルコントローラ120のスパースディレクトリ121で、プロセッサ101に接続するメモリ111のキャッシュ状況をコピー元セル100内のプロセッサ102〜104のキャッシュも含めて管理するために、セル100でプロセッサ101と接続するプロセッサ102、103,104との経路155、156、157をセルコントローラ120経由になるように経路変更する。具体的には、155は152と151、156は153と151、157は154と151へと変更する(S601)。これにより、通常は他セルのプロセッサのキャッシュ情報しか持たないスパースディレクトリ121に、セル内のプロセッサ102、103、104の、メモリ111に関するキャッシュ状況を反映させる。
次に、システムFW122などの指示によって、プロセッサ102(セル100内外のどのプロセッサでもよい)は、コピー元プロセッサ101に接続するメモリ111の全ラインを、キャッシュライン毎にリードし、コピー元プロセッサ101のメモリ111に対してライト(ライト要求)を行う。コピー元プロセッサ101は、ライト要求を受けるたびにメモリ111に対して、ライトを行うとともに、コピー先プロセッサ204に接続するメモリ214に対しライトを転送する(ライト要求を行う)ことによって、メモリのデータコピーをライン毎に全ラインについて行う(S602)。
システムFW122は、アクセス先の変更と状態フラグ401の設定を行う(S603)。具体的には、システムFW122は、アクセスするメモリが接続するプロセッサをコピー元プロセッサ101からコピー先プロセッサ204に変更し、コピー元プロセッサ101はシステムから切り離す。アクセスを行うプロセッサの変更や、コピー元プロセッサの切り離し方については、本実施形態では、一般的な方式を採用するため、その詳細説明を省略する。コピー完了後にシステムFW122は、セルコントローラ内の状態フラグ401を、コピー元セルコントローラ120について[01]に、コピー先セルコントローラ220について[10]にセットする。
コピー元セルコントローラ120は、セルコントローラ120内のスパースディレクトリ121が保持するエントリ毎のステータス情報を確認する(S604)。具体的には、リードポインタ408が保持するリードカウンタが示すエントリのステータス情報を確認する。ステータス情報を基に、コピー元セルコントローラ120のリクエスト/スヌープ生成回路410は、スパースディレクトリのステータス情報を基にメモリ111のデータをキャッシュしているプロセッサを決定し、スヌープパケットの返信先プロセッサ番号306をコピー先セルコントローラ220に変更し、ディレクトリ更新中を示すフラグ301を"1"にセットしたスヌープをキャッシュしている特定のプロセッサに送信する(605)。コピー元セルコントローラ120の詳しい内部動作については後述する。
スヌープを受信した特定のプロセッサは、自プロセッサ内のキャッシュにスヌープパケットのアドレス303で示されるラインがあるかを確認し、データが最新である場合は、ライトデータつきのスヌープレスポンスを、それ以外の場合は、データなしのスヌープレスポンスを、ディレクトリ更新中を示すフラグ301を持ちまわったまま、コピー先セルコントローラ220に送信する。
コピー先セルコントローラ220は、該特定のプロセッサよりディレクトリ更新中を示すフラグ301が"1"であるスヌープレスポンスを受け取り(S606)、スヌープレスポンスパケットのアドレス303が示すラインのステータス情報をスパースディレクトリ221で保持しているか判断する(S607)。保持している場合(S607でYes)、スパースディレクトリ221の更新を行うことなくスヌープレスポンスを破棄する(S608)。一方、ステータス情報を保持していない場合(S607でNo)、スパースディレクトリ221の情報を更新する(609)。コピー先セルコントローラ220の詳しい内部動作については後述する。
コピー元セルコントローラ120は、リードポインタ408のリードカウンタを "1"インクリメントする(S610)。コピー元セルコントローラ120は、リードポインタ408のリードカウンタの値がスパースディレクトリ121のエントリ数を超えているかを判断する(S611)。セルコントローラ120は、エントリ数(リードポインタ408のスパースディレクトリのエントリの閾値を示すレジスタの値)を超えている場合(S611でYes)、状態フラグ401を通常時の動作に移行させる(S612)。エントリ数以下の場合(S611でNo)、セルコントローラ120は、リードポインタ408のリードカウンタが示すスパースディレクトリ121のキャッシュラインのステータス情報を確認し(S613)、ステップS605以降の処理を繰り返す。一連の動作をコピー元セルコントローラ120のスパースディレクトリ121のエントリ数分行う。
このようにして、経路変更によってコピー元セルコントローラ120は、プロセッサ101に接続するメモリ111にアクセスする全プロセッサのステータス情報をスパースディレクトリ121で保持することになり、スパースディレクトリ121のステータス情報を基にスヌープを送信する。また、コピー先セルのセルコントローラ220は、コピー元セルコントローラ120から送信されたスヌープに対するスヌープレスポンスに基づいて、コピー先セルコントローラ220のスパースディレクトリ221を更新する。これにより、プロセッサキャッシュ間コヒーレンシを保証することができる。
ここで、コピー元セルコントローラとコピー先セルコントローラの詳しい内部の動作について、図4、5を用いて説明する。
コピー元セルコントローラ120は、状態フラグ401が[01]にセットされている場合、セレクタ409は、リードポインタ408を選択する。HW(Hardware)によってリクエスト/スヌープ生成回路410は、リードポインタ408のリードカウンタが示すスパースディレクトリ121のエントリをリードする。リードされたエントリのステータス情報を基に、リクエスト/スヌープ生成回路410は、宛先をキャッシュしているプロセッサに、返信先がコピー先セルコントローラ220になるように、パケットの送信先プロセッサ番号305設定し、パケット内のディレクトリ更新中を示す"1"をフラグ301へセットする。生成したパケット300を第2調停回路412に送信する。
第2調停回路412は、その他のスヌープや、リクエストとで調停を行い、調停で選択されたならばキャッシュしているプロセッサにスヌープを送信する。リクエスト/スヌープ生成回路410は、第2調停回路412に送信すると同時に、リードポインタ408のリードカウンタを"1"インクリメントするために、ストローブ信号を送信し、該ストローブ信号を受け取ったリードポインタ408は、リードカウンタを"1"インクリメントし(S610)、リードポインタ408の値とスパースディレクトリ121のエントリ数を比較し(S611)、リードポインタ408の値が超えている場合(S611でYes)、エントリのリードを終了し、状態フラグを[00]に変更する(S612)。超えていない場合(S612でNo)、スパースディレクトリ121をアクセスする(S613)。
コピー先セルコントローラ220は、状態フラグ401が[10]にセットされている場合、第1調停回路402は、パケット内のディレクトリ更新中を示すフラグ301が"1"であるかを確認し、"1"にセットされたパケットをスヌープレスポンス格納バッファ404に格納する。スヌープレスポンス格納バッファ404は格納したパケットについて、アドレス生成回路405にアドレス303を、ライトデータ生成回路406にアドレスに対応するメモリ214のラインのステータス情報(キャッシュステータス304とキャッシュを行うプロセッサ)を出力する。アドレス生成回路405は、アドレス303よりスパースディレクトリ121のエントリ番号を特定するためのキーアドレスを生成する。また、ライトデータ生成回路406は、ステータス情報よりスパースディレクトリ221を更新するためのデータを生成する。
セルコントローラ220は、アドレス生成回路405で生成したキーアドレスでスパースディレクトリ221を引いた(参照した)結果、エントリに登録されている場合(S607でYes)、ライトデータ生成回路406で生成したデータを破棄する。エントリに登録されていない場合(S607でNo)、スパースディレクトリ221を更新する。システムFW122は、コピー元セルコントローラの状態フラグが[00]に落とされたのを確認したら、コピー先セルコントローラの状態フラグも[00]に落として、通常動作に戻る。
次に、セルコントローラ220がコピー先セルコントローラとして動作している時、具体的には状態フラグ401が[10]にアサートされている時に、コピー先プロセッサ204に接続するメモリ214へのアクセスされた場合、あるいは、コピー先プロセッサ204からのスヌープを受信した場合の動作について図6を用いて説明する。図6は、セルコントローラがコピー先セルコントローラとして動作している場合の動作例を示すフローチャートである。
コピー先セルコントローラ220は、セル200外より、コピー先プロセッサ204に接続するメモリ214へのリクエストを受信する(S701)。あるいは、コピー先セルコントローラ220は、コピー先プロセッサ204より、スヌープを受信する(702)。ステップS701またはS702のいずれかが生じると、セルコントローラ220は、アクセスを受けたラインのステータス情報をスパースディレクトリ221で管理を行っているかを確認する(S703)。
管理している場合(S703でYes)、セルコントローラ220は、ステータス情報に基づいてキャッシュを行っている特定のプロセッサに対し、スヌープを送信し(S704)、その後レスポンスを受信して(S705)、スパースディレクトリの更新を行う(708)。スパースディレクトリ221で管理していない場合(S703でNo)、セル内外の全プロセッサに対し、スヌープのブロードキャストを行い(S706)、スヌープのレスポンスを全て受け取り(S707)、スパースディレクトリ221のステータス情報を更新する(S708)。スパースディレクトリ221の更新が終了したら、セルコントローラ220は、コピー先プロセッサ204に対し、ステップS701でリクエストを受信した場合リクエストを送信し、ステップS702でスヌープを受信した場合スヌープのレスポンスを行う(S709)。
この動作は、通常状態、すなわち状態フラグ401が[00]にアサートされている時の動作のように、スパースディレクトリ221にステータス情報が管理されていない場合、すぐにスヌープレスポンスやリード要求をアドレスで決定されるメモリが接続されているプロセッサに送信できるのと違い、プロセッサ間キャッシュコヒーレンシを保証するためにスヌープのブロードキャスト(S706)が必要となる。
次に、通常時の動作として、セル100内のプロセッサのリクエストからの動作とセル100外のプロセッサのリクエストからの動作について説明する。図7は、本実施形態のセルコントローラが通常状態において、セル内のプロセッサからリクエストを受けた場合の動作例を示すフローチャートである。図8は、本実施形態のセルコントローラが通常状態において、セル外のプロセッサからリクエストを受けた場合の動作例を示すフローチャートである。
図7を参照して、セル100内のプロセッサ102よりメモリ111へリードのリクエストが発行された場合を一例として説明する。プロセッサ102は、プロセッサ101に接続するメモリ111に対し、リクエストを発行する(S801)。リクエストを受信したプロセッサ101は、セル100内のプロセッサとセルコントローラ120に対し、スヌープのブロードキャストを行う(S802)。スヌープを受信したセルコントローラ120は、スパースディレクトリ121のステータス情報を管理しているかを確認する(S804)。
スパースディレクトリ121でステータス情報を保持している場合(S804でYes)、管理しているステータス情報を基にラインをキャッシュしているプロセッサに対し、スヌープを送信し(S805)、該プロセッサより、スヌープレスポンスを受け取る(S806)。受け取った情報を基にセルコントローラ120は、スパースディレクトリ221の書き換えを行い(S807)、リクエストが要求されたプロセッサ101に対してスヌープのレスポンスを行う(S808)。一方、スパースディレクトリ121でステータス情報を保持していない場合(S804でNo)、セルコントローラ120はスヌープレスポンスをすぐにプロセッサ101に返信する(S808)。
プロセッサ101は、セルコントローラ120からスヌープレスポンスを全て受け取った後、リードのリクエストを発行したプロセッサ102に対して、データを送信する(809)。このようにして、一連のセル内のプロセッサのリクエストからの動作を終了する。
次に、図8を参照して、セル100外のプロセッサ201よりメモリ111へリードリクエストが発行された場合を一例として説明する。プロセッサ201は、セルコントローラ220を介して、セルコントローラ120へプロセッサ101と接続するメモリ111へのリクエストを発行する(S901)。リクエストを受信したセルコントローラ120は、スパースディレクトリ121のステータス情報の確認をする(S902)。スパースディレクトリ121でステータス情報を管理しているかを確認する(S903)。
スパースディレクトリ121でステータス情報を保持している場合(S903でYes)、管理している情報を基にラインをキャッシュしているプロセッサに対し、スヌープを送信し(S904)、該プロセッサより、スヌープレスポンスを受け取る(S905)。セルコントローラ120は、受け取った情報を基にスパースディレクトリ121の書き換えを行い(S906)、リクエストが発行されたプロセッサ101に対しリクエストを送信する(S907)。一方、スパースディレクトリ121でステータス情報を保持していない場合(S903でNo)、リクエストをすぐにプロセッサ101に送信する(S907)。
リクエストを受信したプロセッサ101は、セル100内のプロセッサ102〜104に対し、スヌープのブロードキャストを行う(S908)。プロセッサ101は、プロセッサ102〜104からスヌープレスポンスを全て受け取った後、セルコントローラ120に対して、データを送信する(S909)。セルコントローラ120は、プロセッサ201にデータを送信する(S910)。このようにして、一連の他セルのプロセッサのリクエストからの動作を終了する。
上記ではコピー元セルをセル100とし、コピー先セルをセル200として説明したが、他のメモリ間のデータコピーでも同様に機能することはいうまでもない。
(その他の実施形態)
上記実施形態では、セルに複数のプロセッサを有する場合を説明したが、セル内に一つのプロセッサとメモリの組み合わせを備える場合であっても本発明を適用することができる。このような場合、図5のステップS601では、セル内のプロセッサがシステムFWの指示を受けてメモリ111へのリードを要求したが、システムFWは、セル外のプロセッサにリード要求の指示を行ってもよい。また、コピー元セル内のプロセッサのキャッシュメモリに保持されるコピー元メモリに関する情報はないため、コピー元セル内のスパースディレクトリへステータス情報を収集する処理は不要となる。
以上、説明したように、本発明の好適な実施形態によれば、メモリのデータコピーを行う前に、セル内のローカルプロセッサ間のインタフェースを切断して、コピー元のメモリをリードすることで、コピー元のスパースディレクトリにローカルプロセッサのステータス情報も反映させ、メモリのデータコピー後に、コピー元のスパースディレクトリの情報を使って、コピー先のスパースディレクトリを更新することで、メモリの動的リプレースの処理を高速化することができる。具体的には、コピー元プロセッサが接続するセルコントローラ(例えば、図2のセルコントローラ120)には、該セルコントローラのスパースディレクトリ(例えば図2のスパースディレクトリ121)をエントリ毎にリードをし、スヌープを送信する機構をリクエスト/スヌープ生成回路(例えば、図4のリクエスト/スヌープ生成回路410)に設ける。
また、コピー先プロセッサ(例えば、図2のプロセッサ204)の接続するセルコントローラ(例えば図2のセルコントローラ220)には、自身が送信していない(コピー元のセルコントローラが送信した)スヌープに対するスヌープレスポンスをスヌープレスポンス格納バッファ(例えば、図4のスヌープレスポンス格納バッファ404)に送信する機構を第1調停回路(例えば、図4の第1調停回路402)に設ける。コピー元セルコントローラが保持するスパースディレクトリのステータス情報に基づき、全プロセッサのキャッシュからデータを掃き出させ、コピー先のスパースディレクトリを更新することによって、コヒーレンシを保証し、かつメモリのラインの一部を管理するスパースディレクトリ(例えば、図2のスパースディレクトリ121)のエントリ数分のスヌープを発行するのみなので、メモリのデータコピー後にスパースディレクトリ(例えば、図2のスパースディレクトリ221)を高速に更新できる。さらに、1ラインのスヌープ数もキャッシュを行っているプロセッサへのスヌープのみに抑えられるので、スヌープによるトラフィックの増加を抑えられる。このようにして、スヌープのブロードキャストの発行数を抑え、メモリの動的リプレースの際に、従来よりも他のリクエストのスループットを低下させることなく処理する。
また、本発明の好適な実施形態によれば、以下に記載する効果が得られる。
第1の効果は、プロセッサ間キャッシュコヒーレンシの保証をするために、従来はメモリのデータコピー完了後にメモリのキャッシュライン数分を全てリードする必要があった。しかし、本発明では、メモリのキャッシュラインの一部のキャッシュラインを管理するスパースディレクトリの全エントリをリードすればよい。エントリ数がメモリのライン数より格段に少ないために、キャッシュコヒーレンシを保証するためにかかる時間を短縮することができる。
第2の効果は、従来は、メモリのデータコピー完了後に行うメモリのリードの際にメモリの1キャッシュラインに対し、全プロセッサにスヌープの送信をしていた。しかし本発明では、コピー元セルコントローラのスパースディレクトリを使用することで、1キャッシュラインに対し、特定のプロセッサにのみスヌープを送信すればよいので、トラフィックを減少させることができ、性能低下を抑えることができる。
なお、本発明は上記に示す実施形態に限定されるものではない。本発明の範囲において、上記実施形態の各要素を、当業者であれば容易に考えうる内容に変更、追加、変換することが可能である。
本発明の実施形態に係るマルチプロセッサシステムが備えるセルの構成例を示すブロック図である。 複数のセルから構成されるマルチプロセッサシステムの一例を示す図である。 本実施形態におけるセル間の通信で使用されるパケットのフォーマットを示す図である。 本実施形態に係るセルコントローラ内の構成例を示すブロック図である。 本実施形態のメモリ間のデータコピーの動作例を示すフローチャートである。 本実施形態のセルコントローラがコピー先セルコントローラとして動作している場合の動作例を示すフローチャートである。 本実施形態のセルコントローラが通常状態において、セル内のプロセッサからリクエストを受けた場合の動作例を示すフローチャートである。 本実施形態のセルコントローラが通常状態において、セル外のプロセッサからリクエストを受けた場合の動作例を示すフローチャートである。 関連する技術のメモリ間のデータコピーの動作例を示すフローチャートである。
符号の説明
100、200、500、550 セル
101、102、103、104 プロセッサ
111、112、113、114 メモリ
120 セルコントローラ
121 スパースディレクトリ
122 システムFW
131、132、133、134 キャッシュ
300 パケット
301 フラグ
302 リクエストの種類
303 アドレス
304 キャッシュステータス
305 送信先プロセッサ番号
306 返信先プロセッサ番号
307 データ
401 状態フラグ
402 第1調停回路
403 リクエスト格納バッファ
404 スヌープレスポンス格納バッファ
405 アドレス生成回路
406 ライトデータ生成回路
407 ライトコマンド生成回路
408 リードポインタ
409、413 セレクタ
410 リクエスト/スヌープ生成回路
411 合成回路
412 第2調停回路

Claims (9)

  1. キャッシュメモリを有する1以上のプロセッサと、1以上のメモリとを有するセルを複数備えるマルチプロセッサシステムであって、
    前記各セルは、
    他セル内のキャッシュメモリに記録されている自セル内のメモリのデータに関するステータス情報を保持するスパースディレクトリと、
    コピー元セルとコピー先セルが異なるメモリ間でデータコピーを行う場合、コピー元メモリからコピー先メモリへデータをコピーし、前記コピー元セル内のスパースディレクトリが保持するステータス情報に基づいて、前記コピー先セルのスパースディレクトリを更新するセルコントローラと、を備えるマルチプロセッサシステム。
  2. 前記セルコントローラは、前記コピー元セルのスパースディレクトリが保持するステータス情報に基づいて、前記コピー先セルのセルコントローラを返信先とするスヌープを発行することを特徴とする請求項1記載のマルチプロセッサシステム。
  3. 前記メモリは接続されたプロセッサを介してアクセスされ、
    前記セルは、複数のプロセッサを有し、前記データコピーを行う場合、前記接続されたプロセッサが前記セルコントローラを介して自セル内の他のプロセッサへアクセスするようにプロセッサ間を接続し、
    前記セルコントローラは、前記コピー元メモリへのアクセスによって、前記自セル内の他のプロセッサがキャッシュメモリに保持する前記コピー元メモリのデータに関するステータス情報を、前記コピー元のスパースディレクトリが保持するステータス情報へ追加することを特徴とする請求項2記載のマルチプロセッサシステム。
  4. 前記セルコントローラは、前記コピー元セルである場合、前記コピー元メモリに関するステータス情報に基づいて、前記コピー元メモリのデータを前記キャッシュメモリに保持するプロセッサを特定し、前記コピー先セルのセルコントローラを返信先とするスヌープを生成し、生成したスヌープを前記特定したプロセッサへ送信することを特徴とする請求項1乃至3のいずれか一項に記載のマルチプロセッサシステム。
  5. 前記セルコントローラは、前記コピー先セルである場合、前記特定したプロセッサから送信されたスヌープレスポンスを受信し、受信したスヌープレスポンスに基づいて、スパースディレクトリのステータス情報を更新することを特徴とする請求項4記載のマルチプロセッサシステム。
  6. 前記セルコントローラは、前記コピー先セルである場合、前記スパースディレクトリのステータス情報を更新中に、前記コピー先メモリへアクセスするリクエストを受け付け、受け付けたリクエストがアクセスするメモリラインが前記スパースディレクトリのステータス情報に含まれていないと判断した場合、全プロセッサにスヌープを送信し、返信されるスヌープレスポンスに基づいて前記スパースディレクトリを更新することを特徴とする請求項5記載のマルチプロセッサシステム。
  7. 前記セルコントローラは、前記メモリ間のデータコピー終了後、前記コピー元メモリへのアクセス先をコピー先メモリへ変更し、前記スパースディレクトリのステータス情報を更新することを特徴とする請求項4乃至6記載のいずれか一項に記載のマルチプロセッサシステム。
  8. 前記セルコントローラは、
    前記セルが、通常状態、コピー元セル、及びコピー先セルのいずれであるかを示す状態フラグと、
    セル内へのアクセスのリクエストを格納するリクエスト格納バッファと、
    前記コピー元セルのセルコントローラが発行したスヌープの返信を更新用スヌープレスポンスとして格納するスヌープレスポンス格納バッファと、
    前記リクエスト、及び前記更新用スヌープレスポンスを受信し、状態フラグに基づいて、前記リクエスト格納バッファと前記更新用スヌープレスポンスとのいずれかへ格納する調停回路と、
    前記状態フラグがコピー先セルであり、かつ、前記リクエストが前記スパースディレクトリにステータス情報を保持していないメモリラインへのアクセスである場合、スヌープを生成し、全プロセッサへ発行する生成部と、を備え、
    前記スパースディレクトリは、前記更新用スヌープレスポンス、及び、前記生成部によって発行されたスヌープについて返信されるスヌープレスポンスに基づいて更新されることを特徴とする請求項2乃至7のいずれか一項に記載のマルチプロセッサシステム。
  9. キャッシュメモリを有する1以上のプロセッサと、1以上のメモリとを有するセルを複数備えるマルチプロセッサシステムのメモリリプレース方法であって、
    他セル内のキャッシュメモリに保持された自セル内のメモリのデータに関するステータス情報を保持し、
    セルが異なるメモリ間でコピー元メモリからコピー先メモリへデータをコピーし、
    コピー終了後、前記コピー元メモリへのアクセス先をコピー先メモリへ変更し、
    前記コピー元セル内のスパースディレクトリが保持するステータス情報に基づいて、前記コピー先セルのスパースディレクトリが保持するステータス情報を更新するメモリリプレース方法。
JP2007236085A 2007-09-12 2007-09-12 マルチプロセッサ及びメモリリプレース方法 Expired - Fee Related JP4868246B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2007236085A JP4868246B2 (ja) 2007-09-12 2007-09-12 マルチプロセッサ及びメモリリプレース方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007236085A JP4868246B2 (ja) 2007-09-12 2007-09-12 マルチプロセッサ及びメモリリプレース方法

Publications (2)

Publication Number Publication Date
JP2009070013A true JP2009070013A (ja) 2009-04-02
JP4868246B2 JP4868246B2 (ja) 2012-02-01

Family

ID=40606220

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007236085A Expired - Fee Related JP4868246B2 (ja) 2007-09-12 2007-09-12 マルチプロセッサ及びメモリリプレース方法

Country Status (1)

Country Link
JP (1) JP4868246B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012035605A1 (ja) 2010-09-13 2012-03-22 富士通株式会社 情報処理装置および情報処理装置の制御方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11154115A (ja) * 1997-08-25 1999-06-08 Hewlett Packard Co <Hp> 分散メモリ・マルチプロセッサ・システム
JP2001525095A (ja) * 1998-03-12 2001-12-04 富士通株式会社 パイプライン化されたスヌーピィプロトコルを有する相互結合マルチプロセッサノードのためのキャッシュコヒーレンスユニット
JP2004054931A (ja) * 2002-07-23 2004-02-19 Hewlett-Packard Development Co Lp 分散メモリマルチプロセッサシステムにおけるメモリ移行のためのシステムおよび方法
JP2006293550A (ja) * 2005-04-07 2006-10-26 Fujitsu Ltd キャッシュコヒーレンス管理装置およびキャッシュコヒーレンス管理方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11154115A (ja) * 1997-08-25 1999-06-08 Hewlett Packard Co <Hp> 分散メモリ・マルチプロセッサ・システム
JP2001525095A (ja) * 1998-03-12 2001-12-04 富士通株式会社 パイプライン化されたスヌーピィプロトコルを有する相互結合マルチプロセッサノードのためのキャッシュコヒーレンスユニット
JP2004054931A (ja) * 2002-07-23 2004-02-19 Hewlett-Packard Development Co Lp 分散メモリマルチプロセッサシステムにおけるメモリ移行のためのシステムおよび方法
JP2006293550A (ja) * 2005-04-07 2006-10-26 Fujitsu Ltd キャッシュコヒーレンス管理装置およびキャッシュコヒーレンス管理方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012035605A1 (ja) 2010-09-13 2012-03-22 富士通株式会社 情報処理装置および情報処理装置の制御方法

Also Published As

Publication number Publication date
JP4868246B2 (ja) 2012-02-01

Similar Documents

Publication Publication Date Title
US7120755B2 (en) Transfer of cache lines on-chip between processing cores in a multi-core system
JP5153172B2 (ja) アクセラレータ用低コストのキャッシュ一貫性を維持する方法及びシステム
JP4237142B2 (ja) 統合ディレクトリとプロセッサキャッシュを備えたコンピュータシステム
US7395376B2 (en) Method, apparatus, and computer program product for a cache coherency protocol state that predicts locations of shared memory blocks
JP5575870B2 (ja) 部分読出と非スヌープアクセスとの間のメモリ順序付け要件の充足
CN108153683B (zh) 用于在存储器中的地址范围之间传输数据的装置和方法
US8291175B2 (en) Processor-bus attached flash main-memory module
CN1996930B (zh) 用于通信接口的队列头高速缓存
JP3661764B2 (ja) 不均等メモリ・アクセス・コンピュータ・システムにおいてエヴィクション・プロトコルを提供するための方法およびシステム
JP2006501548A (ja) リモートキャッシュプレゼンス情報を記録するプロセッサキャッシュを備えたコンピュータシステム
US6260117B1 (en) Method for increasing efficiency in a multi-processor system and multi-processor system with increased efficiency
JP5550089B2 (ja) マルチプロセッサシステム、ノードコントローラ、障害回復方式
CN103999057B (zh) 具有开关的相变存储器(pcms)的元数据管理和支持
JP4673585B2 (ja) メモリシステム制御装置およびメモリシステム制御方法
KR970002652A (ko) 캐시 메모리의 내용을 플러시하는 장치 및 방법
JP5212478B2 (ja) 制御装置、データ転送装置、情報処理装置、演算処理装置および情報処理装置の制御方法
US20020013886A1 (en) Multiprocessor system
JP4507563B2 (ja) マルチプロセッサシステム
JP2004199677A (ja) キャッシュを動作させるためのシステム及び方法
JP2000172562A (ja) 情報処理装置
JP4868246B2 (ja) マルチプロセッサ及びメモリリプレース方法
JPH09179779A (ja) コンピュータシステムおよびデータ転送方法
US8015372B2 (en) Apparatus and method for memory migration in a distributed memory multiprocessor system
JP2005250830A (ja) プロセッサおよび主記憶共有マルチプロセッサ
JP4030951B2 (ja) データ二重化装置及び方法

Legal Events

Date Code Title Description
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: 20111018

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

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

Year of fee payment: 3

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees