JP4082612B2 - 複数のコヒーレンシ領域およびキャッシュ・パージのないコヒーレンシ領域間ソフトウェア・プロセス移行を備えるマルチプロセッサ・コンピュータ・システム - Google Patents

複数のコヒーレンシ領域およびキャッシュ・パージのないコヒーレンシ領域間ソフトウェア・プロセス移行を備えるマルチプロセッサ・コンピュータ・システム Download PDF

Info

Publication number
JP4082612B2
JP4082612B2 JP2004185622A JP2004185622A JP4082612B2 JP 4082612 B2 JP4082612 B2 JP 4082612B2 JP 2004185622 A JP2004185622 A JP 2004185622A JP 2004185622 A JP2004185622 A JP 2004185622A JP 4082612 B2 JP4082612 B2 JP 4082612B2
Authority
JP
Japan
Prior art keywords
coherency
computer system
cache
multiprocessor computer
software
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
JP2004185622A
Other languages
English (en)
Other versions
JP2005018772A (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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2005018772A publication Critical patent/JP2005018772A/ja
Application granted granted Critical
Publication of JP4082612B2 publication Critical patent/JP4082612B2/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
    • EFIXED CONSTRUCTIONS
    • E01CONSTRUCTION OF ROADS, RAILWAYS, OR BRIDGES
    • E01DCONSTRUCTION OF BRIDGES, ELEVATED ROADWAYS OR VIADUCTS; ASSEMBLY OF BRIDGES
    • E01D19/00Structural or constructional details of bridges
    • E01D19/06Arrangement, construction or bridging of expansion joints
    • E01D19/062Joints having intermediate beams
    • EFIXED CONSTRUCTIONS
    • E01CONSTRUCTION OF ROADS, RAILWAYS, OR BRIDGES
    • E01DCONSTRUCTION OF BRIDGES, ELEVATED ROADWAYS OR VIADUCTS; ASSEMBLY OF BRIDGES
    • E01D19/00Structural or constructional details of bridges
    • E01D19/08Damp-proof or other insulating layers; Drainage arrangements or devices ; Bridge deck surfacings
    • E01D19/083Waterproofing of bridge decks; Other insulations for bridges, e.g. thermal ; Bridge deck surfacings
    • 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1048Scalability

Description

本発明は、複数のノードおよび動的キャッシュ・コヒーレンシ領域を有するマルチプロセッサ・コンピュータ・システムに関する。本発明は、詳細にはキャッシュ内容の選択的パージを必要とせずに、コヒーレンシ領域間でソフトウェア・プロセスを移動できるコンピュータ・システムに関するものである。
関連出願
本発明は、本明細書と同時に出願された、2003年6月23日出願の「Multiprocessor System with Dynamic Cache Coherency Regions」という名称の米国出願第10/603,252号と関連するものである。
この同時係属出願および本出願は、同一の譲受人である、米国ニューヨーク州アーモンクのインターナショナル・ビジネス・マシーンズ・コーポレーションが所有している。
この同時係属出願中に示される記述内容は、この参照により本出願に組み込まれる。
登録商標
IBM(登録商標)は、米国ニューヨーク州アーモンクのインターナショナル・ビジネス・マシーンズ・コーポレーションの登録商標である。その他の名称も、インターナショナル・ビジネス・マシーンズ・コーポレーションまたは他の企業の登録商標または製品名であることがある。
メモリ参照が完了するのを待つ間にコンピュータ・プロセッサによって費やされるアイドル時間は、広範で重要な商業的および技術的なコンピューティング・ワークロードの全実行時間のうちの、はるかに大きな部分を占めるようになってきた。マルチプロセッサ・システム設計において、主記憶装置ロケーションへのアクセスが完了するまでにプロセッサが待たなければならない時間を最小限に抑えるために、多くの従来技術による手法が使用されてきた。これらの手法は、おおまかに2つのカテゴリに分類される。手法の第1のカテゴリでは、遅延を伴うメモリ参照を待つ間に、プロセッサが実行すべき追加の命令を見つけようと試みる。これらの手法には、順不同の実行やマルチスレッド処理などの、ソフトウェアおよびハードウェアの機構が含まれる。手法の第2のカテゴリでは、例えばSRAMキャッシュ、DRAMキャッシュ、高速マルチプロセッサ・バス・アーキテクチャなど、メモリ参照自体の待ち時間を最小限に抑えることに焦点を合わせる。SRAMおよびDRAMキャッシュは、メモリ参照の待ち時間短縮にきわめて有効であり、その片方または両方が現行のすべてのマルチプロセッサ設計によって使用されている。従来技術によるキャッシュ設計には、マルチプロセッサ・システムのキャッシュ・コヒーレンスを維持する専用のハードウェアおよびソフトウェアが含まれる。共用バスを介して複数のプロセッサを接続するシステムでは、一般にスヌープ・バス・プロトコルが使用される。共用バス上で実施される各コヒーレント・トランザクションは、バスに接続された他のすべてのデバイスのキャッシュ中のデータと突き合わせて検査される(すなわち「スヌープされる」)。影響を受けるデータのコピーが見つかった場合には、コヒーレント・トランザクションに応答してそのデータを含むキャッシュ・ラインの状態が更新されることがある。
キャッシュは、中程度の数のプロセッサを有するマルチプロセッサ・システムではうまく動作したが、多数のプロセッサに拡張されたとき、従来技術のマルチプロセッサ設計では、TPC−Cベンチマークによってシミュレートされるトランザクションおよびデータベースのワークロードを含む多くの重要なワークロードに対してうまくスケール(scale)できない。
米国特許第4,843,541号に記載された論理区分化も、共用プロセッサを使用するとき、多数のプロセッサにまで拡張する場合、従来技術によるシステム設計に対してうまくスケールできない。米国特許第4,843,541号は、バーチャル・マシン・ハイパーバイザ・プログラムをどのように使用すれば、「データ処理システムの中央電子複合(central electronic complex)中のリソースを複数の論理区分に区分する」ことができるかを示している。論理区分化は、プライベート・データに対して同時に作用する多数のワークロードを実行させるために、大規模マルチプロセッサ・システム上で広く使用されている。論理区分化を使用する典型的なシステムでは、オペレーティング・システム・インスタンスが各論理区分内で初期化される。論理区分は、1〜n個の論理プロセッサを所有することができる。ハイパーバイザは、各論理プロセッサを物理プロセッサ上へディスパッチする役割を果たす。ある物理プロセッサが、長時間にわたり単一の論理プロセッサだけのホストである場合、それはこの論理プロセッサ区分に「専用」であると言われる。ある物理プロセッサが、複数の区分の論理プロセッサのホストである場合、それは「共用」プロセッサであると言われる。ハードウェア全体の利用率の点からは、大規模マルチプロセッサ・システムが、物理プロセッサの多くあるいは大部分を「共用」として定義するフレキシビリティを許容し、外部変化により物理プロセッサの使用状況が変動するとき、マルチプロセッサの物理プロセッサ間で論理プロセッサが移動できるようにすることが望ましい。従来技術によるマルチプロセッサ・キャッシュ設計では、これらの区分されたワークロードに対し、特に物理プロセッサが「共用」として定義されている場合にはうまくスケールできなかった。
大規模単一データベース・ワークロード(large single database workload)に対しても共用論理区分(shared logical partition)に対しても大規模マルチプロセッサのパフォーマンス・スケーリングが不十分である大きな要因は、増加するプロセッサの数とそれらの間での通信に必要な時間遅延との関係にある。スヌープ・バス・プロトコルでは、ローカル・キャッシュをミスしたメモリ参照を、要求された行のコピーを含む可能性があるすべてのキャッシュ、通常はシステム中の他のすべてのキャッシュにブロードキャストする必要がある。大規模マルチプロセッサ・システムのアドレスと応答を配送するために必要なバス帯域幅は非常に広い。必要な広帯域を提供する必要から、従来技術による設計では、多数のワイド・ポートを有するスイッチ・チップ(switch chips)、必要なピンを提供するための高価なチップ・キャリア、良好な電気的特性を、したがって高速バスを提供するための高価なカード技術、ワイド・バスを提供するための高価なカード・コネクタなどを使用せざるを得なかった。これらの要素すべてのコストが、大規模マルチプロセッサ・システムのコスト・パフォーマンスを向上させようとする際の重大な問題になってきた。
従来技術の設計では、これら2つの問題、すなわちコヒーレンシ動作待ち時間およびアドレス帯域幅制限の問題を多くの異なる方法で解決しようと試みてきたが、それぞれ本発明が回避しようとしているシステム設計上の他のコストがかかるものであった。
例えばIBM S/390 G4設計(「IBM Journal of Research and Development」、41巻、4号および5号、1997年)に例示されるような大規模共用キャッシュが、この両方の問題に対処するために従来技術設計で使用されてきた。少数の大規模共用キャッシュの相互接続では、共用キャッシュ中でヒットした要求に対して良好な待ち時間が得られる。この包括的共用キャッシュ(inclusive shared cache)はまた、フィルタとしても働き、このフィルタにより、場合によってはシステム中のすべてのプロセッサにアドレスをブロードキャストする必要がなくなる。この設計も多数のプロセッサにうまくスケールできない。追加のプロセッサの使用により、この設計では、多数の配線層を有するマルチチップ・モジュールと、接続された各プロセッサにポートを提供するために必要な極めて多数の入出力(I/O)を有するL2キャッシュ・チップとを使用せざるを得なくなる。
例えばSequent NUMA−Q設計(「STiNG: A CC-NUMA Computer System for the Commercial Marketplace」、Proc. 23rd International Symposium of Computer Architecture、1996年5月)に例示される、ディレクトリを利用してリモート要求元によるローカル・メモリのアクセスを追跡するマルチプロセッサ・システムは、多数のプロセッサのために必要とされるアドレス帯域幅を狭めるように働く。これらのシステムは、大規模RAMディレクトリならびにプロトコルの複雑さとハードウェア・サポートの増大という犠牲を払ってそれを実施している。このタイプの設計はまた、特定のソフトウェア・プロセスによって参照される主記憶ラインの大部分が、そのワークロードを実行中のプロセッサが現在ディスパッチされているノード上と同じ物理ノード上に位置しているとの想定に依存している。リモート・ノードによって「チェック・アウト」され得るラインの数がNUMAディレクトリのサイズによって制限されるので、ワークロードが多数のリモート・ラインにアクセスしている場合には大きなパフォーマンス上の不利益がある。本発明の1つの目標は、主記憶の内容を移動する必要なしに、かつ大幅なパフォーマンスの低下なしに、多数のプロセッサ間でワークロードの実行を迅速かつ容易に移動できるようにすることである。
「ローカル」であり、大規模マルチプロセッサ中のプロセッサのサブセットに限定される場合、あるいは「グローバル」であり、したがってすべてのプロセッサにブロードキャストされる場合のキャッシュ・コヒーレント動作を定義するために、Hagersten他による米国特許第5,852,716号は、複数のアドレス区分の使用を記載している。Hagersten他におけるローカル・トランザクションは、記憶要求を発生するプロセッサが属する処理ノードのサブセットと同一のサブセットに割り振られた物理メモリを有するものとして定義される。米国特許第5,852,716号の第7欄63行目以降の記載から、この従来技術による発明では、あるプロセスに関連する物理的な記憶域を移動せずに、あるいはアドレッシング・モードを「グローバル」に切り換えずに、いわゆる「ローカル・ドメイン」間でのプロセスの移動ができないことは明らかである。
米国出願第10/603,252号 米国特許第4,843,541号 米国特許第5,852,716号 「IBM Journal of Research and Development」、41巻、4号および5号、1997年 「STiNG: A CC-NUMA Computer System for the Commercial Marketplace」、Proc. 23rd International Symposium of Computer Architecture、1996年5月
大量のSRAMディレクトリを使用せずに、また主記憶内容の移動を必要とせずに、マルチプロセッサ・コンピュータ・システム中の種々のプロセッサ間でのアドレス要求送信を減らす手法に対するニーズがあると判断した。この必要を満たす解決策を開発するにあたり、大規模マルチプロセッサ・システムにおけるすべての記憶参照トランザクションの待ち時間を短縮するという関連するニーズがあると判断した。
これらの判断されたニーズを実現するために、複数のキャッシュ・コヒーレンシ領域を使用するシステムが、コヒーレンシ領域間でソフトウェア・プロセスを移動させるいくつかの動作の間にキャッシュ・パージを使用せずに動作することを可能にするハードウェア・コヒーレンシ制御がある。本発明は、もはや使用される予定のないコヒーレンシ領域から、最初のアドレス空間と同一のアドレス空間をカバーするために生成されたものではあるが、新しい1組の処理ノードを含むことになる他のコヒーレンシ領域に、ソフトウェア・プロセスを移動させる場合にうまく働く。本発明の好ましい実施形態では、スーパバイザ・プログラムが、ソフトウェア・プロセスを、ある1組の処理ノードを含むあるコヒーレンシ領域から他の1組の処理ノードを含む他のコヒーレンシ領域に、どの処理ノードにおいてもキャッシュのキャッシュ・パージを必要とせずに移動させることができる。移動先のコヒーレンシ領域が、移動元のコヒーレンシ領域より少ないハードウェア処理ノードしか含まない場合は、コヒーレンシ領域のサイズが実際に削減される。
本発明の好ましい実施形態は、複数のノードを有するマルチプロセッサ・コンピュータ・システム中で実施され、この実施形態は、各処理ノードに関連するアクティブ・コヒーレンシ領域情報のテーブルを使用して従来技術のキャッシュ状態遷移をいつ変更するかを判断する。スーパバイザ・プログラムは、各処理ノードに関連するテーブルを初期化する。スーパバイザ・プログラムがその処理ノード上で使用しようとしている各コヒーレンシ領域ごとにテーブルのエントリが作成される。各コヒーレンシ領域には、一意のコヒーレンシ領域IDが割り当てられ、スーパバイザは、そのIDをコヒーレンシ領域に含まれる記憶アドレスにアクセスするすべてのソフトウェア・プロセスと関連づけることができる。
本発明を使用する処理ノードは、もはやスーパバイザ・ソフトウェアがそのノード上に現在ディスパッチすることができるどのソフトウェア・プロセスのアドレス空間の一部でもないラインをターゲットとする着信記憶要求を識別することができる。この好ましい実施形態では、この情報により、処理ノードは、コヒーレンシ領域外部からの記憶要求に応答して、もはやそのノード上のどのソフトウェア・プロセスによっても実際に使用されていないキャッシュ・ラインを識別し、キャッシュ・エントリを無効に変更できる。
本発明の利点は非常に多い。本発明の1つの利点は、キャッシュ・コントロール・ハードウェアの必要性をなくすことである。このハードウェアは、本発明を使用しなければ、キャッシュ・コヒーレンシ領域間でソフトウェア・プロセスを移動する際に、キャッシュの選択的パージを実施するために必要になるはずのものである。第2の利点は、本発明により、システム中のキャッシュのすべてが、ソフトウェア・プロセスのコヒーレンシ境界が実際に変更されている間もコヒーレンシ・トランザクションの処理を続けることができることである。第3の利点は、もはや実際に所与のノード上にディスパッチされることがないソフトウェア・プロセスに属するキャッシュ・ラインを識別し、無効にできることであり、それによってそれらの再使用が可能になることである。
これらおよびその他の改良は、以下の詳細な説明の中で示される。本発明ならびにその利点と特徴のより良い理解のためには、以下の記述および図面を参照されたい。
この詳細な説明では、図面を参照しながら例によって本発明の好ましい実施形態を、利点および特徴とともに説明する。
ここで図1を参照すると、動的コヒーレンシ境界を有するコンピュータを含む1つのノード(10)の一実施形態のブロック図が示されている。図1は、ローカル・ノード・コントローラ(11)に接続された、それぞれキャッシュを備える複数のプロセッサP0〜P3を示す。ローカル・コントローラ(11)は、複数のプロセッサをDRAM主記憶要素(12)に接続する。単一のプロセッサによって開始された記憶トランザクションは、ノード・コントローラ(11)に送信され、ノード・コントローラ(11)は、次いでそのトランザクションをそのノードに属する他のプロセッサのいずれかまたはすべてに送信する。ノード・コントローラ(11)はまたバス(13)上のトランザクションを、追加のプロセッサ(図示せず)を含むコンピューティング・システムの他の部分に送信することもできる。アクティブ・コヒーレンシ領域テーブル(14)は、コンピューティング・システム(図示せず)の他の部分からバス(13)上のノードに入ってくる記憶要求に応答して必要とされる適切なキャッシュ状態遷移を決定するために、ノード・コントローラ(11)によって使用される。図2は、大規模マルチプロセッサ・システムを作成するために、図1のノード(10)の複数のインスタンスにセカンド・レベル・コントローラ(15)をどのように接続できるかを示している。図1には4個の処理要素の使用が示してあるが、任意の数の処理要素が使用できるものと理解されたい。図1には1つのメモリ要素だけが示してあるが、任意の数のメモリ要素が使用できるものと理解されたい。この好ましい実施形態では、図1および図2に示される階層的バス構成を使用しているが、本発明は、他のどのようなタイプの相互接続トポロジを使用するマルチプロセッサ・システムにも適用することができる。
図3は、図1の単一の処理要素を示す。本発明は、マルチプロセッサ・システム中の各プロセッサに対して1つまたは複数のコヒーレンシ・モード・ビット(16)を使用する。本発明は、マルチプロセッサ・システム中の各プロセッサに対して1つのコヒーレンシ領域IDを使用する。あるプロセッサに関連するコヒーレンシ・モード・ビットおよびコヒーレンシ領域IDは、そのプロセッサによって開始される各記憶トランザクションが図3のバス(17)を経由してノード・コントローラに送信されるとき、そのトランザクションと共に送信される。本実施形態ではノード・コントローラを使用しているが、他の実施形態では単純な物理バスで置き換えることができることを理解されたい。ノード・コントローラ(11)およびセカンド・レベル・コントローラ(15)中のキャッシュ・コヒーレンシ・ハードウェアは、各トランザクションに関連するモード・ビットを使用して、それらがいずれかのプロセッサから受信した任意の記憶トランザクションにどのキャッシュが関与しなければならないかを判断する。この好ましい実施形態では3つのモード・ビットを使用する。この3つのモード・ビットは、ノード・コントローラおよびセカンダリ・コントローラに対する以下の動作モードを識別するために共に使用される。コヒーレンシ・モード設定「000」は、図1中の破線(10’)によって示される単一のプロセッサだけのコヒーレンシ領域を定義するために使用される。他の3つのプロセッサのどれも、単一プロセッサ・コヒーレンシ領域でも使用できる。コヒーレンシ・モード設定「001」は、図1の破線(18)および(19)によって示される、2つのプロセッサのコヒーレンシ領域を定義するために使用される。本実施形態では、ノード・コントローラ中で必要なハードウェア制御を単純化するために、ハイパーバイザは、(P0とP1)または(P2とP3)をカバーする2プロセッサ・コヒーレンシ領域(two-processor coherency regions)を定義することができる。他の実施形態では、ノード1のP0とノード2のP1など他の組合せが可能になる。コヒーレンシ・モード設定「010」は、図1中の破線(20)によって示される単一のノードのすべてのプロセッサを含むコヒーレンシ領域を定義するために使用される。設定「101」は、図2中の破線(21)および(22)によって示される2つのノードを含むコヒーレンシ領域を定義する。最後に、設定「111」のプロセッサは、生成されたすべての記憶トランザクションが全体システム中のすべてのキャッシュに送信される必要があることを示す。
コヒーレンシ・モード設定は、論理区分の状態の一部と見なされ、したがってその区分中で定義された論理プロセッサの状態の一部と見なされる。本実施形態では、ある単一の論理区分の論理プロセッサはすべて、ある単一の時点で同一のコヒーレンシ・モード設定を有する。分離した1組の記憶アドレスを使用しており、したがってディスパッチのために使用される、異なるコヒーレンシ・モード設定および異なる1組の許容物理プロセッサが提供され得るプロセスを単一の区分内で定義するために、追加のソフトウェアまたはファームウェアが使用できることを理解されたい。論理プロセッサが、物理的な単一のプロセッサ上にディスパッチされると、その物理プロセッサは、一時的にその論理プロセッサのコヒーレンシ・モード設定を引き継ぐ。コヒーレンシ・モード・ビットは、このプロセッサによって生成されたあらゆる記憶トランザクションが、ノード・コントローラ(11)に送信されるとき、それらのトランザクションとともに送信される。一時に多数の論理区分を定義し使用できるので、同時に多数の異なる、オーバラップしたコヒーレンシ領域が使用される。本発明は、ノード・コントローラ(11)およびセカンド・レベル・コントローラ(15)中にハードウェアおよびファームウェアの制御を提供するものであり、それらのコントローラは、各バス・トランザクションに付随するコヒーレンシ・モード・ビットを使用して、システム中のプロセッサを相互接続するバスを介してトランザクションをどのような経路で送るべきかを判断する。
図4は、ノード・コントローラが、そのノード・コントローラが受信した任意の所与のトランザクションを、どのプロセッサが受信しなければならないかを判断するために、どのようにモード・ビットを使用するのかを記述したテーブルを示す。図5は、セカンド・レベル・コントローラが、そのセカンド・レベル・コントローラが受信した任意の所与のトランザクションを、どのノードが受信しなければならないかを判断するために、どのようにモード・ビットを使用するのかを記述したテーブルを示す。図6は、許容物理プロセッサへの論理区分の1つの可能なマッピングを示す。本実施形態では、ノード・コントローラは、セカンド・レベル・ノード・コントローラから受信したすべてのトランザクションを、そのノード・コントローラに接続されたすべてのプロセッサに転送することになる。ノード・コントローラが、セカンド・レベル・ノード・コントローラからきた要求を、そのセカンド・レベル・ノード・コントローラに接続されたプロセッサのサブセットだけに送信することを必要とする、他の多くのコヒーレンシ境界を確立できる可能性があることを理解されたい。
スーパバイザ・ソフトウェアは、それぞれコヒーレンシ領域を有する各プロセスに対し一意のコヒーレンシ領域IDを生成する。スーパバイザ・ソフトウェアはシステム中の各処理ノードについてテーブルを生成する。このテーブルは、各コヒーレンシ領域IDについて、現在その処理ノード上にディスパッチできるエントリを有する。
代替の手法は関連特許出願に記載されている。参照した関連特許出願は、ソフトウェア制御プログラムとハードウェア・モード・ビットの組合せを使用して、複数の処理ノードを使用するコンピューティング・システム中で動的コヒーレンシ境界を定義している。コヒーレンシ境界は、全体システム中の1つのノードからすべてのノードにいたる、任意の数の処理ノードをカバーするコヒーレンシ領域を生成するように調整することができる。この関連出願はまた、それぞれ専用のアドレス空間で動作する、複数のコヒーレンシ領域をどのように定義することができるかを記載している。このコヒーレンシ領域は、システム動作中の任意の時間に追加のノードを含むように拡張できる。このコヒーレンシ領域はまた、必要な手順に従って、その領域から処理ノードを取り除くことによってサイズを縮小することもできる。これらの手順においては、コヒーレンシ領域から取り除こうとしている処理ノード中のいくつかのキャッシュ・エントリをパージする必要がある。取り除く必要があるキャッシュ・エントリは、サイズを縮小しようとしているコヒーレンシ領域の一部であり、主記憶ラインのキャッシュされたコピーを保持しているキャッシュ・エントリだけである。キャッシュされたラインを「所有する(owns)」コヒーレンシ領域のIDに基づいて、選択的パージを実施することのできないキャッシュは、完全にパージしなければならない。この選択的パージでは、従来技術による設計と比べて追加のキャッシュ・コントローラ・ハードウェアを必要とする。本明細書で例示した好ましい実施形態は、異なる2組の処理ノードの間でソフトウェア・プロセスを移動する際に、キャッシュ・パージの必要性をなくす機能をうまく利用する処理システムに適用可能である。
この関連特許出願は、これまでディスパッチしていたソフトウェア・プロセスとは異なるキャッシュ・コヒーレンシ領域を使用するソフトウェア・プロセスをディスパッチするときに、スーパバイザ・ソフトウェアが、プロセッサの「キャッシュ・コヒーレンス・モード」をどのように変更しなければならないかを記載している。本発明では、記憶要求に、その要求を発信したコヒーレンシ領域そのものに関するより詳細な情報のタグを付けることを必要とする。本発明は、このより詳細なタグとして、発信元プロセスのコヒーレンシ領域IDを使用する。この好ましい実施形態では、記憶要求を検査するためにマルチプロセッサ・システム中のどのノードが必要であるかを判断するために、ノード制御論理によって、やはり「キャッシュ・コヒーレンシ・モード」が使用される。本発明のコヒーレンシ領域IDは、正しいスヌープ応答を判断するためにスヌーピング・プロセッサによって使用される。
本発明の好ましい代替実施形態では、コヒーレンシ領域IDを使用して、この好ましい実施形態で記述した機能に加えて、「キャッシュ・コヒーレンシ・モード」の機能が実施できることを理解されたい。好ましい代替実施形態では、「キャッシュ・コヒーレンシ・モード」の簡単なコード化が利用できれば、「キャッシュ・コヒーレンシ・モード」を読み取らなければならないノード・コントローラ論理を、より高速にかつより小型にできると想定している。本発明の好ましい代替実施形態は、ノード・コントローラ中に搭載されるプログラマブルな論理を提供し、スーパバイザ・プログラムは、この論理を使用して、どの物理ノードが特定のコヒーレンシ領域IDに関連するのかをノード・コントローラが判断するのを助ける。
本発明では、関連特許出願と比べて、どの処理ノードが特定の記憶要求を検査しなければならないかを決定するために使用される、論理を変更している。参照した関連特許出願では、モード・ビットで表されるコヒーレンシ領域が、判断を行うために使用されていた。本発明のこの好ましい実施形態では、これを変更して、発信元のコヒーレンシ領域中のすべてのキャッシュをミスしたどの記憶要求も、モード・ビットの設定に関係なく、次に全体システムのすべての処理ノードに転送される。発信元のコヒーレンシ領域中でヒットしたが、正しいキャッシュ状態を有していない要求は、そのコヒーレンシ領域の外部に送信する必要はない。この後者の場合の例は、ある記憶ラインの変更を目的とする記憶要求であるが、記憶トランザクションの間に、そのコヒーレンシ領域内のキャッシュが共用とマークされたラインのコピーを有していることが判明した記憶要求である。本発明のキャッシュ状態遷移は、あるキャッシュ・ラインが、2つの別々のコヒーレンシ領域において共用とマークできないように設定される。スーパバイザ・プログラムは、コヒーレンシ領域を、ある処理ノードのセットから他の処理ノードのセットに移動するとき、旧ノード上にそのコヒーレンシ領域のキャッシュ・エントリを実際に残したままにする。本発明は、これらの旧キャッシュ・エントリが、新しい処理ノードからの要求によって認識され、しかも旧エントリが無効化されるまでは、新しい処理ノード中で同じ主記憶アドレスについてキャッシュ・エントリが確立されないように働く。
本発明は、関連特許出願中に記載されたシステムに比べて、処理ノード間の追加の通信の使用を提供する。本発明は、大規模オンノード・キャッシュと共に使用されることを想定しており、それにより、このオンノード・キャッシュを完全にミスする記憶要求の数が最小限に抑えられることになる。本発明は、動的コヒーレンシ境界を使用しない従来技術の設計と比べて、処理ノード間の通信を全体としてさらに削減できるはずである。
本発明は、コヒーレンシ領域間でのソフトウェア・プロセスの容易な移動を提供するものである。本発明は、要求された記憶アドレスのキャッシュ・エントリが要求を開始したプロセッサを含む処理ノード中のいずれかのキャッシュ上に存在することが判明したときには、その処理ノード中のキャッシュ・コントローラが、スーパバイザ・ソフトウェアを使用して、現在のコヒーレンシ領域モードによって指定される、そのプロセッサの現在のコヒーレンシ領域の外部に、要求された記憶アドレスのコピーが存在しないようにすることを可能にする。
新しいコヒーレンシ領域IDは、記憶要求にどのように応答するかを決定するためにスヌーピング・キャッシュによって使用される。着信要求に付いているコヒーレンシ領域IDが、処理ノードのアクティブ・コヒーレンシ領域テーブル中のどのIDにも一致しない場合、この処理ノード中のキャッシュは、通常のMESIプロトコル応答で応答し、次いでこのキャッシュを無効に設定する。無効への変更により、汚いデータ(dirty data)を主記憶に書き戻すことが必要になる場合は、この動作も同時に開始される。図7は、着信記憶トランザクションの処理中に処理ノードによって使用される、アクティブ・コヒーレンシ領域IDテーブルの例を示す。このテーブルは、この処理ノード上でアクティブな一意のコヒーレンシ領域あたり1つずつ、予想される数のエントリを収容できるように任意に大きくすることができる。この好ましい実施形態ではハードウェア・テーブルを使用しているが、本発明に必要な機能を実施するためにソフトウェア、ファームウェア、およびハードウェアの任意の組合せが使用できることは明らかであろう。
動的コヒーレンシ境界を有するコンピュータを示すブロック図である。ノード・コントローラが、アクティブ・コヒーレンシ領域テーブルのハードウェア実装を含む。 大規模マルチプロセッサ・システムを作成するために、図1のコンピュータを含むノードの複数のインスタンスを、どのようにセカンド・レベル・コントローラに接続できるかを示す図である。 図1の単一の処理要素を示す図である。 ノード・コントローラによって受信された任意の所与のトランザクションを、どのプロセッサが受信しなければならないかを判断するために、ノード・コントローラがどのようにモード・ビットを使用するのかを記述するテーブルを示す図である。 セカンド・レベル・コントローラによって受信された任意の所与のトランザクションを、どのノードが受信しなければならないかを判断するために、セカンド・レベル・コントローラがどのようにモード・ビットを使用するのかを記述するテーブルを示す図である。 許容物理プロセッサへの論理区分の1つの可能なマッピングを示す図である。 アクティブ・コヒーレンシ領域テーブルのハードウェア実装の追加の詳細を示す図である。該テーブルは、ソフトウェア・プロセス・ディスパッチのために現在その処理ノードを使用できる、スーパバイザ・ソフトウェアによって制御されるコヒーレンシ領域のリストである。
符号の説明
10 ノード
11 ローカル・ノード・コントローラ、ノード・コントローラ
12 DRAM主記憶要素
13 バス
14 アクティブ・コヒーレンシ領域テーブル
15 セカンド・レベル・コントローラ
16 コヒーレンシ・モード・ビット
17 バス

Claims (31)

  1. マルチプロセッサ・コンピュータ・システムであって、
    複数の処理ノードと、
    前記処理ノードに関連付けられたキャッシュを使用する複数の動的キャッシュ・コヒーレンシ領域と
    を含み、
    1つまたは複数の前記処理ノード中のキャッシュ内容の選択的パージを必要とせずに、前記複数のキャッシュ・コヒーレンシ領域間でのソフトウェア・プロセスの移動を開始するソフトウェアの動きを制御する、前記処理ノード中のキャッシュ・コントローラ論理を有し、
    2つの別々のセットの処理ノード間でソフトウェア・プロセスを移動する場合に、キャッシュ・ラインを2つの別々のコヒーレンシ領域において共用とマーク付けすることができず、コヒーレンシ領域を処理ノードのあるセットから処理ノードの他のセットに移動するときに、旧処理ノード上のコヒーレンシ領域についてキャッシュ・エントリを実際に残したままにし、かつこれらの旧キャッシュ・エントリが新しい処理ノードからの着信記憶要求に見えるようにし、かつ旧エントリが無効化されるまでは同一の主記憶アドレスについてのキャッシュ・エントリが新しい処理ノード中で確立されないようにする、
    前記マルチプロセッサ・コンピュータ・システム。
  2. 要求された記憶アドレスのキャッシュ・エントリを、着信記憶要求を開始したプロセッサを含む処理ノード中のいずれかのキャッシュ上に存在させるようにするときには、該記憶アドレスについての前記着信記憶要求に応じて、処理ノード中の前記キャッシュ・コントローラ論理に、現在のコヒーレンシ領域モードによって指定される、前記プロセッサの現在のコヒーレンシ領域の外部に、該要求された記憶アドレスのコピーが存在しないようにする処理を実行させるためのスーパバイザ・ソフトウェアを含む、請求項1に記載のマルチプロセッサ・コンピュータ・システム。
  3. 前記マルチプロセッサ・コンピュータ・システムが、前記スーパバイザ・ソフトウェアを実行して、それ自体のコヒーレンシ領域を有する各プロセスについて一意のコヒーレンシ領域IDを生成する、請求項2に記載のマルチプロセッサ・コンピュータ・システム。
  4. 前記マルチプロセッサ・コンピュータ・システムが、前記スーパバイザ・ソフトウェアを実行して、各処理ノード上に現在ディスパッチ可能なすべてのコヒーレンシ領域IDについてエントリを有するテーブルをシステム内の前記各処理ノードごとに生成する、請求項2に記載のマルチプロセッサ・コンピュータ・システム。
  5. 前記マルチプロセッサ・コンピュータ・システムが、前記スーパバイザ・ソフトウェアを実行して、それ自体のコヒーレンシ領域を有する各プロセスについて一意のコヒーレンシ領域IDとマルチプロセッサ・コンピュータ・システム中の各プロセッサについて1つまたは複数のコヒーレンシ・モード・ビットとを生成し、そのプロセッサによって開始される各記憶トランザクションが、通信のために前記マルチプロセッサ・コンピュータ・システムの他のプロセッサに送信されるとき、このプロセッサに関連する前記コヒーレンシ・モード・ビットおよびコヒーレンシ領域IDがそのトランザクションと共に送信される、請求項2に記載のマルチプロセッサ・コンピュータ・システム。
  6. 前記マルチプロセッサ・コンピュータ・システムが、前記スーパバイザ・ソフトウェアを実行して、それ自体のコヒーレンシ領域を有する各プロセスについて一意のコヒーレンシ領域IDとマルチプロセッサ・コンピュータ・システム中の各プロセッサについて1つまたは複数のコヒーレンシ・モード・ビットとを生成する、請求項2に記載のマルチプロセッサ・コンピュータ・システム。
  7. 前記マルチプロセッサ・コンピュータ・システムが、前記スーパバイザ・ソフトウェアを実行して、それ自体のコヒーレンシ領域を有する各プロセスについて一意のコヒーレンシ領域IDとマルチプロセッサ・コンピュータ・システム中の各プロセッサについて1つまたは複数のコヒーレンシ・モード・ビットとを生成し、前記マルチプロセッサ・コンピュータ・システムのプロセッサのいずれかから受信するいずれかの記憶トランザクションにどのキャッシュが関与しなければならないかを判断するために、各トランザクションに関連する前記モード・ビットが使用される、請求項2に記載のマルチプロセッサ・コンピュータ・システム。
  8. 前記マルチプロセッサ・コンピュータ・システムが、前記スーパバイザ・ソフトウェアを実行して、それ自体のコヒーレンシ領域を有する各プロセスについて一意のコヒーレンシ領域IDとマルチプロセッサ・コンピュータ・システム中の各プロセッサについて1つまたは複数のコヒーレンシ・モード・ビットとを生成し、かつコヒーレンシ領域間でソフトウェア・プロセスを移動させるいくつかの動作の間に、複数のキャッシュ・コヒーレンシ領域がキャッシュ・パージを使用せずに動作することを可能にする、請求項2に記載のマルチプロセッサ・コンピュータ・システム。
  9. 前記マルチプロセッサ・コンピュータ・システムが、前記スーパバイザ・ソフトウェアを実行して、ソフトウェア・プロセスを、もはや前記ソフトウェア・プロセスによって使用される予定のないあるコヒーレンシ領域から、前者と同じアドレス空間をカバーするように生成されているが、新しい処理ノードのセットを含むことになる他のコヒーレンシ領域に移動させる、請求項8に記載のマルチプロセッサ・コンピュータ・システム。
  10. 前記マルチプロセッサ・コンピュータ・システムが、前記スーパバイザ・ソフトウェアを実行して、それ自体のコヒーレンシ領域を有する各プロセスごとに一意のコヒーレンシ領域IDを生成し、ある1組の処理ノードを含むあるコヒーレンシ領域から他の1組の処理ノードを含む他のコヒーレンシ領域に、どの処理ノード中のキャッシュについてもキャッシュ・パージを必要とせずに、ソフトウェア・プロセスを移動する、請求項2に記載のマルチプロセッサ・コンピュータ・システム。
  11. 前記他のコヒーレンシ領域が、元のコヒーレンシ領域より少数のハードウェア処理ノードを含む場合、前記処理ノードについてのコヒーレンシ領域のサイズが実際に縮小される、請求項10に記載のマルチプロセッサ・コンピュータ・システム。
  12. 複数の前記処理ノードを有するマルチプロセッサ・コンピュータ・システムが、各処理ノードに関連するアクティブ・コヒーレンシ領域情報のテーブルを使用して、その処理ノードのキャッシュ状態遷移をいつ変更するかを判断する、請求項1に記載のマルチプロセッサ・コンピュータ・システム。
  13. 前記マルチプロセッサ・コンピュータ・システムがスーパバイザ・ソフトウェアを実行して、各処理ノードに関連する前記テーブルを初期化し、その処理ノード上で使用される予定の各コヒーレンシ領域ごとに前記テーブル中のエントリが作成される、請求項12に記載のマルチプロセッサ・コンピュータ・システム。
  14. 前記マルチプロセッサ・コンピュータ・システムがスーパバイザ・ソフトウェアを実行して、コヒーレンシ領域によって含まれる記憶アドレスにアクセスするすべてのソフトウェア処理と関連づけることができる各コヒーレンシ領域ごとに、一意のコヒーレンシ領域IDを割り当てる、請求項1に記載のマルチプロセッサ・コンピュータ・システム。
  15. 処理ノードが、もはやスーパバイザ・ソフトウェアによって現在そのノード上にディスパッチ可能であるどのソフトウェア・プロセスのアドレス空間の一部でもないラインをターゲットとする着信記憶要求を識別できる、請求項1に記載のマルチプロセッサ・コンピュータ・システム。
  16. 処理ノードが、コヒーレンシ領域外部からの記憶要求に応答して、もはやスーパバイザ・ソフトウェアによって現在そのノード上にディスパッチ可能であるいずれのソフトウェア・プロセスのアドレス空間の一部でもないラインをターゲットとする着信記憶要求を識別でき、それによって、その処理ノード上のいずれのソフトウェア・プロセスによってももはや実際に使用されていないキャッシュ・ラインを識別でき、その処理ノードについてキャッシュ・エントリを無効に変更できる、請求項1に記載のマルチプロセッサ・コンピュータ・システム。
  17. 処理ノードが、もはやスーパバイザ・ソフトウェアによって現在そのノード上にディスパッチ可能であるいずれのソフトウェア・プロセスのアドレス空間の一部でもないラインをターゲットとする着信記憶要求を識別でき、あるソフトウェア・プロセスについてコヒーレンシ境界が実際に変更されている間もマルチプロセッサ・コンピュータ・システム中のキャッシュのすべてがコヒーレンシ・トランザクションの処理を続けることができるようにする、請求項1に記載のマルチプロセッサ・コンピュータ・システム。
  18. 処理ノードが、もはやスーパバイザ・ソフトウェアによって現在そのノード上にディスパッチ可能であるいずれのソフトウェア・プロセスのアドレス空間の一部でもないラインをターゲットとする着信記憶要求を識別でき、その結果、もはや所与の処理ノード上に実際にディスパッチされていないソフトウェア・プロセスに属するキャッシュ・ラインが識別され、無効化され、それによって、それらの再利用が可能になる、請求項1に記載のマルチプロセッサ・コンピュータ・システム。
  19. 前記マルチプロセッサ・コンピュータ・システムがスーパバイザ・ソフトウェアを実行して、プロセッサ状態情報を使用して、単一の発信元プロセッサの着信記憶要求によって生成されたコヒーレンシ・トランザクションを検査するのにマルチプロセッサ・コンピュータ・システム中のどのキャッシュが必要かを判断する、請求項1に記載のマルチプロセッサ・コンピュータ・システム。
  20. マルチプロセッサ・コンピュータ・システム中の処理ノードが動的コヒーレンシ境界を有しており、その結果、そのマルチプロセッサ・コンピュータ・システムが単一のワークロードのために任意の特定の時点でシステム中の全プロセッサのサブセットだけを使用し、
    前記マルチプロセッサ・コンピュータ・システムが、前記スーパバイザ・ソフトウェアを実行して、任意の単一のワークロードを実行させるために使用されるプロセッサの数を拡大および縮小する際にキャッシュ・コヒーレンシを最適化できる、請求項19に記載のマルチプロセッサ・コンピュータ・システム。
  21. 大規模マルチプロセッサ・システムを作成するために、処理ノードの複数のインスタンスをセカンド・レベル・コントローラと接続することができる、請求項20に記載のマルチプロセッサ・コンピュータ・システム。
  22. 前記マルチプロセッサ・コンピュータ・システムが、前記スーパバイザ・ソフトウェアを実行して、マルチプロセッサ・コンピュータ・システム中の各プロセッサについてそれ自体のコヒーレンシ領域と1つまたは複数のコヒーレンシ・モード・ビットを有する各プロセスについて一意のコヒーレンシ領域IDを生成し、かつコヒーレンシ領域間でソフトウェア・プロセスを移動するいくつかの動作の間にキャッシュ・パージを使用せずに、複数のキャッシュ・コヒーレンシ領域が動作することを可能にし、ノード・コントローラが、前記コヒーレンシ・モード・ビットを使用して、どのプロセッサがノード・コントローラによって受信された任意の所与のトランザクションを受信しなければならないかを判断する、請求項21に記載のマルチプロセッサ・コンピュータ・システム。
  23. セカンド・レベル・コントローラが、モード・ビットを使用して、どの処理ノードがセカンド・レベル・コントローラによって受信された任意の所与のトランザクションを受信しなければならないかを判断する、請求項22に記載のマルチプロセッサ・コンピュータ・システム。
  24. 前記マルチプロセッサ・コンピュータ・システムが、前記スーパバイザ・ソフトウェアを実行して、物理プロセッサにマップされた論理区分を使用し、ハイパーバイザを使用する各区分ごとに別個のキャッシュ・コヒーレンシ領域が定義できる、請求項21に記載のマルチプロセッサ・コンピュータ・システム。
  25. コヒーレンシ領域IDが、キャッシュ・コヒーレンシ・モードの機能を実施するために使用され、ノード・コントローラが、どの物理処理ノードが特定のコヒーレンシ領域IDに関連づけられるかを判断する、請求項2に記載のマルチプロセッサ・コンピュータ・システム。
  26. 発信元コヒーレンシ領域中のすべてのキャッシュをミスしたどの着信記憶要求も、モード・ビットの設定にかかわらず、次いで全体システム中のすべての処理ノードに転送される、請求項3に記載のマルチプロセッサ・コンピュータ・システム。
  27. 発信元のコヒーレンシ領域中でヒットするが、正しいキャッシュ状態を有していない要求であるどの着信記憶要求も、該コヒーレンシ領域の外部に送信する必要がない、請求項3に記載のマルチプロセッサ・コンピュータ・システム。
  28. マルチプロセッサ・コンピュータ・システムであって、
    複数の処理ノードと、
    前記処理ノードに関連付けられたキャッシュを使用する複数の動的キャッシュ・コヒーレンシ領域と
    を含み、
    1つまたは複数の前記処理ノード中のキャッシュ内容の選択的パージを必要とせずに、前記複数のキャッシュ・コヒーレンシ領域間でのソフトウェア・プロセスの移動を開始するソフトウェアの動きを制御する、前記処理ノード中のキャッシュ・コントローラ論理を有し、
    処理ノードが、コヒーレンシ領域外部からの記憶要求に応答して、もはやスーパバイザ・ソフトウェアによって現在そのノード上にディスパッチ可能であるいずれのソフトウェア・プロセスのアドレス空間の一部でもないラインをターゲットとする着信記憶要求を識別でき、それによって、その処理ノード上のいずれのソフトウェア・プロセスによってももはや実際に使用されていないキャッシュ・ラインを識別でき、その処理ノードについてキャッシュ・エントリを無効に変更できる、前記マルチプロセッサ・コンピュータ・システム。
  29. マルチプロセッサ・コンピュータ・システムであって、
    複数の処理ノードと、
    前記処理ノードに関連付けられたキャッシュを使用する複数の動的キャッシュ・コヒーレンシ領域と
    を含み、
    1つまたは複数の前記処理ノード中のキャッシュ内容の選択的パージを必要とせずに、前記複数のキャッシュ・コヒーレンシ領域間でのソフトウェア・プロセスの移動を開始するソフトウェアの動きを制御する、前記処理ノード中のキャッシュ・コントローラ論理を有し、
    処理ノードが、もはやスーパバイザ・ソフトウェアによって現在そのノード上にディスパッチ可能であるいずれのソフトウェア・プロセスのアドレス空間の一部でもないラインをターゲットとする着信記憶要求を識別でき、その結果、もはや所与の処理ノード上に実際にディスパッチされていないソフトウェア・プロセスに属するキャッシュ・ラインが識別され、無効化され、それによって、それらの再利用が可能になる、前記マルチプロセッサ・コンピュータ・システム。
  30. 複数の処理ノードと前記処理ノードに関連付けられたキャッシュを使用する複数の動的キャッシュ・コヒーレンシ領域とを含むマルチプロセッサ・コンピュータ・システム中で使用する方法であって、マルチプロセッサ・コンピュータ・システムに、
    1つまたは複数の前記処理ノードにおけるキャッシュ内容の選択的パージを必要とせずに、前記複数のキャッシュ・コヒーレンシ領域間でソフトウェア・プロセスを移動するステップと、
    2つの別々のセットの処理ノード間でソフトウェア・プロセスを移動する場合に、キャッシュ・ラインを2つの別々のコヒーレンシ領域において共用とマーク付けすることができず、コヒーレンシ領域を処理ノードのあるセットから処理ノードの他のセットに移動するときに、旧処理ノード上のコヒーレンシ領域についてキャッシュ・エントリを実際に残したままにし、かつこれらの旧キャッシュ・エントリが新しい処理ノードからの着信記憶要求に見えるようにし、かつ旧エントリが無効化されるまでは同一の主記憶アドレスについてのキャッシュ・エントリが新しい処理ノード中で確立されないようにするステップと
    を実行させる、方法。
  31. 要求された記憶アドレスのキャッシュ・エントリを、着信記憶要求を開始したプロセッサを含む処理ノード中のいずれかのキャッシュ上に存在させるようにするときには、該記憶アドレスについての前記着信記憶要求に応じて、前記マルチプロセッサ・コンピュータ・システムに、現在のコヒーレンシ領域モードによって指定される、前記プロセッサの現在のコヒーレンシ領域の外部に、該要求された記憶アドレスのコピーが存在しないようにするステップをさらに実行させる、請求項30に記載の方法。
JP2004185622A 2003-06-25 2004-06-23 複数のコヒーレンシ領域およびキャッシュ・パージのないコヒーレンシ領域間ソフトウェア・プロセス移行を備えるマルチプロセッサ・コンピュータ・システム Expired - Fee Related JP4082612B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/603,252 US7469321B2 (en) 2003-06-25 2003-06-25 Software process migration between coherency regions without cache purges

Publications (2)

Publication Number Publication Date
JP2005018772A JP2005018772A (ja) 2005-01-20
JP4082612B2 true JP4082612B2 (ja) 2008-04-30

Family

ID=34079546

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004185622A Expired - Fee Related JP4082612B2 (ja) 2003-06-25 2004-06-23 複数のコヒーレンシ領域およびキャッシュ・パージのないコヒーレンシ領域間ソフトウェア・プロセス移行を備えるマルチプロセッサ・コンピュータ・システム

Country Status (4)

Country Link
US (1) US7469321B2 (ja)
JP (1) JP4082612B2 (ja)
KR (1) KR100745478B1 (ja)
CN (1) CN1294497C (ja)

Families Citing this family (63)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7484043B2 (en) * 2003-06-25 2009-01-27 International Business Machines Corporation Multiprocessor system with dynamic cache coherency regions
GB0315504D0 (en) * 2003-07-02 2003-08-06 Advanced Risc Mach Ltd Coherent multi-processing system
US7725619B2 (en) * 2005-09-15 2010-05-25 International Business Machines Corporation Data processing system and method that permit pipelining of I/O write operations and multiple operation scopes
US20070150663A1 (en) 2005-12-27 2007-06-28 Abraham Mendelson Device, system and method of multi-state cache coherence scheme
US8195892B2 (en) * 2006-06-19 2012-06-05 International Business Machines Corporation Structure for silent invalid state transition handling in an SMP environment
US8812793B2 (en) * 2006-06-19 2014-08-19 International Business Machines Corporation Silent invalid state transition handling in an SMP environment
US7987464B2 (en) * 2006-07-25 2011-07-26 International Business Machines Corporation Logical partitioning and virtualization in a heterogeneous architecture
US20080104333A1 (en) * 2006-10-31 2008-05-01 Veazey Judson E Tracking of higher-level cache contents in a lower-level cache
US8683139B2 (en) 2006-10-31 2014-03-25 Hewlett-Packard Development Company, L.P. Cache and method for cache bypass functionality
US7818508B2 (en) * 2007-04-27 2010-10-19 Hewlett-Packard Development Company, L.P. System and method for achieving enhanced memory access capabilities
US7904676B2 (en) * 2007-04-30 2011-03-08 Hewlett-Packard Development Company, L.P. Method and system for achieving varying manners of memory access
US20080270708A1 (en) * 2007-04-30 2008-10-30 Craig Warner System and Method for Achieving Cache Coherency Within Multiprocessor Computer System
JP4457240B2 (ja) * 2007-05-09 2010-04-28 フェリカネットワークス株式会社 データ管理システム、管理サーバ、データ管理方法、およびプログラム
US8782779B2 (en) * 2007-09-26 2014-07-15 Hewlett-Packard Development Company, L.P. System and method for achieving protected region within computer system
US8612973B2 (en) * 2007-09-26 2013-12-17 Hewlett-Packard Development Company, L.P. Method and system for handling interrupts within computer system during hardware resource migration
US9207990B2 (en) * 2007-09-28 2015-12-08 Hewlett-Packard Development Company, L.P. Method and system for migrating critical resources within computer systems
US9035959B2 (en) 2008-03-28 2015-05-19 Intel Corporation Technique to share information among different cache coherency domains
US7743375B2 (en) * 2008-06-27 2010-06-22 International Business Machines Corporation Information handling system including dynamically merged physical partitions
US8140817B2 (en) * 2009-02-24 2012-03-20 International Business Machines Corporation Dynamic logical partition management for NUMA machines and clusters
US20110228674A1 (en) * 2010-03-18 2011-09-22 Alon Pais Packet processing optimization
US9037810B2 (en) 2010-03-02 2015-05-19 Marvell Israel (M.I.S.L.) Ltd. Pre-fetching of data packets
US8793439B2 (en) * 2010-03-18 2014-07-29 Oracle International Corporation Accelerating memory operations using virtualization information
US8327047B2 (en) 2010-03-18 2012-12-04 Marvell World Trade Ltd. Buffer manager and methods for managing memory
CN101819596B (zh) * 2010-04-28 2011-11-02 烽火通信科技股份有限公司 一种基于内存的xml脚本缓存容器
US8543770B2 (en) 2010-05-26 2013-09-24 International Business Machines Corporation Assigning memory to on-chip coherence domains
GB2481232A (en) * 2010-06-16 2011-12-21 Advanced Risc Mach Ltd Cache for a multiprocessor system which can treat a local access operation as a shared access operation
US8364904B2 (en) 2010-06-21 2013-01-29 International Business Machines Corporation Horizontal cache persistence in a multi-compute node, symmetric multiprocessing computer
JP5121896B2 (ja) * 2010-08-11 2013-01-16 株式会社東芝 マルチコアプロセッサシステムおよびマルチコアプロセッサ
CN102110019B (zh) * 2010-12-31 2013-01-30 北京航空航天大学 一种基于众核处理器和分区结构的事务存储方法
WO2012093488A1 (ja) 2011-01-07 2012-07-12 富士通株式会社 スケジューリング方法、およびマルチコアプロセッサシステム
US9098203B1 (en) 2011-03-01 2015-08-04 Marvell Israel (M.I.S.L) Ltd. Multi-input memory command prioritization
US8839275B1 (en) 2011-06-06 2014-09-16 Proximal Data, Inc. Method for intercepting input/output requests and responses
JP2013003793A (ja) 2011-06-15 2013-01-07 Toshiba Corp マルチコアプロセッサシステムおよびマルチコアプロセッサ
US8935485B2 (en) 2011-08-08 2015-01-13 Arm Limited Snoop filter and non-inclusive shared cache memory
WO2013095637A1 (en) * 2011-12-23 2013-06-27 Intel Corporation Apparatus and method of improved permute instructions
US9946540B2 (en) 2011-12-23 2018-04-17 Intel Corporation Apparatus and method of improved permute instructions with multiple granularities
WO2013095620A1 (en) 2011-12-23 2013-06-27 Intel Corporation Apparatus and method of improved insert instructions
CN102708190B (zh) * 2012-05-15 2016-09-28 浪潮电子信息产业股份有限公司 一种CC-NUMA系统中结点控制芯片目录Cache的方法
US8943516B2 (en) * 2012-05-31 2015-01-27 International Business Machines Corporation Mechanism for optimized intra-die inter-nodelet messaging communication
US9442859B1 (en) 2012-06-17 2016-09-13 Samsung Electronics Co., Ltd. Method for asynchronous population of data caches used with mass storage devices
US9104552B1 (en) 2012-06-23 2015-08-11 Samsung Electronics Co., Ltd. Method for the use of shadow ghost lists to prevent excessive wear on FLASH based cache devices
US20140032854A1 (en) * 2012-07-30 2014-01-30 Futurewei Technologies, Inc. Coherence Management Using a Coherent Domain Table
US9135172B2 (en) 2012-08-02 2015-09-15 Qualcomm Incorporated Cache data migration in a multicore processing system
EP3828700A1 (en) 2012-11-06 2021-06-02 Coherent Logix, Inc. Multiprocessor programming toolkit for design reuse
CN103049422B (zh) * 2012-12-17 2013-11-27 浪潮电子信息产业股份有限公司 一种具有多cache一致性域的多处理器节点系统构建方法
EP2979192B1 (en) * 2013-03-28 2018-05-30 Hewlett-Packard Enterprise Development LP Implementing coherency with reflective memory
CN103365656B (zh) * 2013-06-28 2016-10-19 华为技术有限公司 保证缓存一致性的方法和终端
US10258843B2 (en) 2014-05-15 2019-04-16 Karsten Manufacturing Corporation Club heads having reinforced club head faces and related methods
US10888743B2 (en) 2014-10-24 2021-01-12 Karsten Manufacturing Corporation Golf club heads with energy storage characteristics
US10918919B2 (en) 2014-05-15 2021-02-16 Karsten Manufacturing Corporation Club heads having reinforced club head faces and related methods
US10751587B2 (en) 2014-05-15 2020-08-25 Karsten Manufacturing Corporation Club heads having reinforced club head faces and related methods
US20230014268A1 (en) * 2014-10-24 2023-01-19 Karsten Manufacturing Corporation Golf club heads with energy storage characteristics
US11278772B2 (en) 2014-10-24 2022-03-22 Karsten Manufacturing Corporation Golf club heads with energy storage characteristics
US11027177B2 (en) 2014-10-24 2021-06-08 Karsten Manufacturing Corporation Golf club heads with energy storage characteristics
TWI636812B (zh) * 2014-10-24 2018-10-01 卡斯登製造公司 具有能量儲存特性的高爾夫球桿頭及其製作方法
US20160246721A1 (en) * 2015-02-19 2016-08-25 Qualcomm Incorporated Role based cache coherence bus traffic control
US20160271462A1 (en) * 2015-03-17 2016-09-22 Dean L. Knuth Golf club with low and rearward center of gravity
US11240334B2 (en) * 2015-10-01 2022-02-01 TidalScale, Inc. Network attached memory using selective resource migration
CN107894914A (zh) * 2016-09-30 2018-04-10 华为技术有限公司 缓存一致性处理方法和装置
US10579274B2 (en) 2017-06-27 2020-03-03 TidalScale, Inc. Hierarchical stalling strategies for handling stalling events in a virtualized environment
US10817347B2 (en) 2017-08-31 2020-10-27 TidalScale, Inc. Entanglement of pages and guest threads
US11175927B2 (en) 2017-11-14 2021-11-16 TidalScale, Inc. Fast boot
US10740239B2 (en) * 2018-12-11 2020-08-11 International Business Machines Corporation Translation entry invalidation in a multithreaded data processing system

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4843541A (en) * 1987-07-29 1989-06-27 International Business Machines Corporation Logical resource partitioning of a data processing system
JPH06291696A (ja) * 1993-03-30 1994-10-18 Sony Corp アンテナ共用器
RU2127946C1 (ru) * 1993-03-31 1999-03-20 Моторола Инк. Коммутационная цепь приемопередатчика и способ ее функционирования
JP3291913B2 (ja) * 1994-05-17 2002-06-17 株式会社村田製作所 高周波スイッチ
US5819061A (en) * 1994-07-25 1998-10-06 International Business Machines Corporation Method and apparatus for dynamic storage reconfiguration in a partitioned environment
US5852716A (en) * 1996-07-02 1998-12-22 Sun Microsystems, Inc. Split-SMP computer system with local domains and a top repeater that distinguishes local and global transactions
US6141733A (en) * 1998-02-17 2000-10-31 International Business Machines Corporation Cache coherency protocol with independent implementation of optimized cache operations
US6272602B1 (en) * 1999-03-08 2001-08-07 Sun Microsystems, Inc. Multiprocessing system employing pending tags to maintain cache coherence
US6636949B2 (en) * 2000-06-10 2003-10-21 Hewlett-Packard Development Company, L.P. System for handling coherence protocol races in a scalable shared memory system based on chip multiprocessing
US7065761B2 (en) * 2001-03-01 2006-06-20 International Business Machines Corporation Nonvolatile logical partition system data management
EP1255201B1 (en) * 2001-05-01 2009-12-23 Sun Microsystems, Inc. Shared memory multiprocessing system employing mixed broadcast snooping and directory based coherency protocols
US6633959B2 (en) * 2001-06-21 2003-10-14 International Business Machines Corporation Non-uniform memory access (NUMA) data processing system that provides notification of remote deallocation of shared data
US7484043B2 (en) * 2003-06-25 2009-01-27 International Business Machines Corporation Multiprocessor system with dynamic cache coherency regions

Also Published As

Publication number Publication date
CN1577294A (zh) 2005-02-09
JP2005018772A (ja) 2005-01-20
CN1294497C (zh) 2007-01-10
US20050021913A1 (en) 2005-01-27
KR100745478B1 (ko) 2007-08-02
US7469321B2 (en) 2008-12-23
KR20050001305A (ko) 2005-01-06

Similar Documents

Publication Publication Date Title
JP4082612B2 (ja) 複数のコヒーレンシ領域およびキャッシュ・パージのないコヒーレンシ領域間ソフトウェア・プロセス移行を備えるマルチプロセッサ・コンピュータ・システム
US7484043B2 (en) Multiprocessor system with dynamic cache coherency regions
US10078590B2 (en) Technique to share information among different cache coherency domains
US6289420B1 (en) System and method for increasing the snoop bandwidth to cache tags in a multiport cache memory subsystem
US6976131B2 (en) Method and apparatus for shared cache coherency for a chip multiprocessor or multiprocessor system
US9513904B2 (en) Computer processor employing cache memory with per-byte valid bits
US6370585B1 (en) Multiprocessing computer system employing a cluster communication launching and addressing mechanism
US5734922A (en) Multiprocessing system configured to detect and efficiently provide for migratory data access patterns
US5715428A (en) Apparatus for maintaining multilevel cache hierarchy coherency in a multiprocessor computer system
US7305523B2 (en) Cache memory direct intervention
US7305522B2 (en) Victim cache using direct intervention
US6640289B2 (en) Software controlled cache line ownership affinity enhancements in a multiprocessor environment
JP4085389B2 (ja) マルチプロセッサシステム、マルチプロセッサシステムにおける一貫性制御装置及び一貫性制御方法
JPH10187645A (ja) プロセス・ノードの多数のサブノード内にコヒーレンス状態で格納するように構成されたマルチプロセス・システム
JPH10149342A (ja) プリフェッチ動作を実行するマルチプロセス・システム
CA2508044A1 (en) Cross partition sharing of state information
JPH10340227A (ja) ローカル・グローバル・アドレス・スペース及びマルチアクセス・モードを用いたマルチプロセッサ・コンピュータ・システム
JPH10143476A (ja) プリフェッチ動作を開始するソフトウエアを実行するマルチプロセス・システム
US6351791B1 (en) Circuit arrangement and method of maintaining cache coherence utilizing snoop response collection logic that disregards extraneous retry responses
KR20030024895A (ko) 캐시 코히어런트 멀티-프로세서 시스템에서 순서화된입출력 트랜잭션을 파이프라이닝하기 위한 방법 및 장치
US20020188821A1 (en) Fast priority determination circuit with rotating priority
US6038642A (en) Method and system for assigning cache memory utilization within a symmetric multiprocessor data-processing system
JP4577729B2 (ja) ライトバックキャッシュにおいてスヌーププッシュ処理やスヌープキル処理が同時発生しているときのライトバック処理をキャンセルするためのシステムおよび方法
US7159079B2 (en) Multiprocessor system
US6314500B1 (en) Selective routing of data in a multi-level memory architecture based on source identification information

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20070821

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070910

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20071203

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20071203

RD12 Notification of acceptance of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7432

Effective date: 20071203

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20071204

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080121

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20080124

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080124

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

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20080206

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20080206

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20080207

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

Year of fee payment: 3

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

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

Free format text: PAYMENT UNTIL: 20110222

Year of fee payment: 3

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

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

Free format text: PAYMENT UNTIL: 20110222

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20120222

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20130222

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20130222

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20140222

Year of fee payment: 6

LAPS Cancellation because of no payment of annual fees