JP3722415B2 - 効率的なバス機構及びコヒーレンス制御を有する繰り返しチップ構造を有するスケーラブル共用メモリ・マルチプロセッサ・コンピュータ・システム - Google Patents
効率的なバス機構及びコヒーレンス制御を有する繰り返しチップ構造を有するスケーラブル共用メモリ・マルチプロセッサ・コンピュータ・システム Download PDFInfo
- Publication number
- JP3722415B2 JP3722415B2 JP2000278528A JP2000278528A JP3722415B2 JP 3722415 B2 JP3722415 B2 JP 3722415B2 JP 2000278528 A JP2000278528 A JP 2000278528A JP 2000278528 A JP2000278528 A JP 2000278528A JP 3722415 B2 JP3722415 B2 JP 3722415B2
- Authority
- JP
- Japan
- Prior art keywords
- node
- processor
- computer system
- cache
- address
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0831—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0813—Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0817—Cache consistency protocols using directory methods
- G06F12/082—Associative directories
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/25—Using a specific main memory architecture
- G06F2212/254—Distributed memory
- G06F2212/2542—Non-uniform memory access [NUMA] architecture
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Memory System (AREA)
Description
【発明の属する技術分野】
本発明は単純な製造可能性を有する高度にスケーラブルな高性能共用メモリ・コンピュータ・システムのための、新規の非階層ノード構造を提供する。本発明は少数タイプのハードウェア・チップ・コンポーネントを使用して、広範囲のシステム・スケーラビリティをサポートし、製造の容易性及び市場拡大を可能にする。システムはこれらの各タイプの多数の複製プロセッサ・チップを含み得、そこでは大規模システム・メモリが、システム内の全てのプロセッサにより共用可能である。大規模共用メモリは一般に、それぞれがプロセッサ・チップに接続されるDRAMチップのサブセットにより構成される(SRAMなどの他のタイプのメモリ技術も代用され得る)。任意のDRAMサブセット内のデータは、システム内の任意のプロセッサによりアクセス可能であり、任意のプロセッサにより実行される命令内の同一のアドレスを用いてアクセスされる。従って、同一のメモリ・アドレスが、システム内の全てのプロセッサの実行可能な命令内で使用され得る。固有タイプのメモリ・バス機構が、各プロセッサ・チップを共用メモリ内のそれぞれのDRAMサブセットに接続し、DRAMサブセットに直結されるプロセッサによる高速メモリ・アクセスを可能にする。たとえ同一の共用システム・メモリ内の全てのDRAMが、全てのプロセッサによりアドレス指定可能であっても、従来のメモリ・バス設計により共用メモリ内で一般に発生するバス競合が、本発明により最小化される。DRAMのサブセットは、等しいサイズを有する必要はない。直結されるプロセッサを有するDRAMサブセットのグループが、共用メモリ・システムのノードを構成する。各ノードは、ノード・ディレクトリ及びノード電子スイッチと共にノード・キャッシュを有する。ノードのノード・キャッシュ間に接続されるノード間バスにより、複数のノードが一緒に接続される一方、全てのノードが単一の分散共用メモリ・システム内に含まれる。そこではノード・ディレクトリが、システム共用メモリを構成する全てのノードへの、またはそれらのノードからのプロセッサ・アクセス、並びにそれらのノード内のデータのコヒーレンスを管理する。
【0002】
【従来の技術】
従来のメモリ・システム制限:
本発明は従来のノード・システムにおいてしばしば見受けられるように、ノード間で通信するために、通信リンクまたは"メッセージ・プロトコル"を使用しない。従来システムはしばしば各ノード内に、任意の他のノード内のメモリと無関係に動作するメモリを提供するので、これはノード間(inter-nodal)共用メモリとは言えない。こうした従来システムは、単一ノード内のプロセッサ間でのみ共用されるノード内(intra-nodal)共用メモリを、ノード内に含む。こうした従来システムは、メモリ内のデータの保全性を保つために不可欠な、システム内のコヒーレンス要件に違反することなく、異なるノード内のプロセッサによるそれらのいわゆる共用メモリへのアクセスを可能にしない。
【0003】
それにひきかえ、本発明はシステムの全てのノード内の全てのDRAM内の全てのデータのシステム・コヒーレンスを保証する一方、システム内の任意のノード内のプロセッサによる、全てのノードDRAMへのノード間アクセスを可能にする。更に、本発明はDRAMが単一のノード・システム内にあるか、複数ノード・システム内にあるかに関わらず、複数の別々に接続されたDRAMを単一の共用メモリに結合する。そしてこれらのDRAMは、システム全体の全てのノード内の全てのプロセッサにより使用可能である。従って、本発明の任意のノード内のプロセッサが直接メモリ・アクセスにより、他のノード内に配置されるデータをアドレス指定及びアクセスできる。このアクセスは、異なるノード内のDRAMに記憶されるオペランドを要求する命令のプロセッサ実行の間に発生し得る。ノード内のデータをアクセスするために、またはシステムの異なるノード間でデータをアクセスするために、メッセージングまたはパケット処理は、本発明によれば使用されない。
【0004】
ノード間キャッシュ・コヒーレンス制御無しに、別のノードからデータをアクセスすると、システム・データの保全性を破壊する。十分なコヒーレンス制御無しに、データが実行のために独立のノード・メモリ間でコピーされると、コピーされたデータ項目の値が、システム内の他のコピーと不調和に変更されない保証はない。これはシステム内のデータの保全性に悪影響を及ぼす。コヒーレンス制御は、誤った処理結果の獲得につながり得る、データ項目のコピーの未知のバージョンの使用を阻止する。従来のコヒーレンス制御の大部分はノード内共用メモリを取り扱い、そこでは単一の集中化機構がコヒーレンスを維持するために使用される。
【0005】
ノード内共用メモリ及び分散コヒーレンス機構の従来の扱いは、一般に、次の3つのトピックの1つを扱う。すなわち、1)ノードに渡りキャッシュ・コヒーレンスを維持する詳細にほとんど注意を払わずに、非常に多数のノードにスケーリングする相互接続トポロジ、2)同様にノードに渡りキャッシュ・コヒーレンスを維持する方法にほとんど注意を払わずに、ノードを相互接続ネットワークに相互接続するインタフェース・コンポーネント、または3)特殊なコヒーレンス・ディレクトリ、メモリ・アレイにより記憶されるコヒーレンス情報、或いはシステム設計及びパッケージングに余分なコスト及び複雑性を追加する他の特殊なインタフェース及びスイッチ・コンポーネントの使用を通じた、ノード間キャッシュ・コヒーレンスの維持である。
【0006】
従来技術では、共用メモリ・コンピュータ・システムはハードウェア・コヒーレンス制御により、全てのオペランド・アクセスをチェックし、共用メモリ内の任意の場所のデータの全ての変化を検出及び制御し、データの保全性を維持する。コヒーレンス・チェックは、共用メモリ内の任意の場所に記憶されるデータ項目が、所与の時刻にそのデータ項目を用いて、全てのプロセスに同一の値を提供することを保証する。これはシステム内のどのプロセスまたはプロセッサがデータ項目を変更または使用するか、及び共用メモリのどの部分がデータ項目を記憶するかに関係しない。
【0007】
しかしながら、従来の共用メモリ・システム内の従来の共用メモリ制御装置の設計は、システムのスケーラビリティを制限する。なぜなら、従来の制御装置は一般に、たとえ制御装置が少ない数のプロセッサ及び小さなメモリ・サイズを有するシステム構成に導入される場合であっても、最大サイズのシステムに拡大されるように、最大数のプロセッサ及び最大サイズのメモリのために設計されているからである。その結果、こうした従来の制御装置の初期コストは、最大以下のシステム・サイズの場合にも低減せず、こうした従来のシステムを非常に狭い範囲のプロセッサ及びメモリ・スケーラビリティに制限する。
【0008】
従来の共用メモリ制御装置は、しばしば、メモリ制御装置と共用メモリ間に提供される共通バスを有する。共通バスはシステム内の多数のプロセッサにより、時に全てのプロセッサにより共用される。このバス共用は、バスを競合する全ての同時メモリ・アドレス間のバス競合を生じ、勝利したアドレスだけが共用メモリへの次のアクセスを獲得する。この全アドレス競合バス制御装置の設計は、帯域幅制限を被り、複数のプロセッサによる共用メモリに対する同時アクセス要求のスピードを低減する。また、プロセッサが従来の制御装置の共用バスを使用するためにアクセス要求を待機している間に、待ち時間ペナルティを被る。従って、こうした従来の共通記憶制御装置のバス設計は、システム内の最大数のプロセッサによるバス上の最大トラフィックを処理するように、最初に構成されなければならず、同一のメモリ制御装置及びそのバス機構を使用する小規模システムのコストを増加させる。半導体プロセッサ・スピードの継続的な増加は、従来の共用メモリ・システム内のプロセッサ、それらの記憶制御装置、及びそれらの共通のバス機構間の帯域幅及び待ち時間不一致を増加させる。
【0009】
同一ノード内のメモリ及び複数プロセッサ間に提供される共通バスの例が、Somaniらによる米国特許第5524212号で開示されており、そこではその共用メモリ・バス制御装置内に、共用メモリ・バスの集中型アービタを提供し、これがノード内の共通メモリ・バスを制御する。この特許はノード間共用メモリを開示しない。
【0010】
半導体技術及びソフトウェア設計の最近の動向は、前述のバス競合問題をより深刻にする。オンチップCMOS回路のスピードは、オフチップ・ドライバ及び関連バスのスピードよりも速く増加している。多くの従来設計は既に、オフチップ・バス・スピードの何倍もの内部プロセッサ・スピードを有し、格差は直ちに悪化する。これらの低速バスは主記憶アクセスの待ち時間を追加する。
【0011】
新たなプログラミング技術は、以前に考えられたよりも大きなコードを作成し、それらのコードはしばしばメモリ参照パターンを実行する。これらは実行される1命令当たり、従来のソフトウェアにより発生するよりも、平均的により多くのキャッシュ・ミスを発生する。追加のキャッシュ・ミスは、主記憶アクセスの間のソフトウェア待ち行列化を、従って待ち時間の増加をもたらす。大規模システムに対する要求が高まる動向により、より多くのプロセッサによる共用主記憶装置へのより多くの同時アクセスが将来要求されよう。多くのソフトウェア作業負荷は、ハイレベルのマルチプロセッサ実行を許可され、これは従来システム設計の制限に重い負担をかける。特に、1システム当たりの追加のプロセッサ及び共用主メモリ・サイズの使用は、システムのメモリ階層アクセス・レートにさらに大きな負担をかける。
【0012】
用語"ノード"は、従来技術では多くの多様な及び無関係の意味を有するために使用される。従来技術における用語"ノード"に関する一般的な使用は、通信ネットワークにおいて見い出され、そこではネットワークが通信リンクにより接続される複数の独立の"ノード"を含み、リンクを介してデータのパケットが"ノード"間で伝送される。各ノードは、それ自身の独立のオペレーティング・システムを有する独立のハードウェア・コンピュータ・システムであり、各"ノード"はしばしば、"中央電子コンプレックス"または"中央処理コンプレックス"と呼ばれる。用語"ノード"の異なる意味は、ソフトウェア従来技術において見い出され、そこでは"ノード"はしばしば、マルチノード・ソフトウェア構成内の1つ以上の他のノードを位置付ける1つ以上のアドレス・ポインタを含むソフトウェア構造体を表すために使用される。更に従来技術において、用語"ノード"の他の意味が存在する。従って、用語"ノード"が、それが使用されている詳細において示される意味を有することを認識することが重要である。これらの理由から、用語"ノード"の意味を従来技術の文献から本明細書に転換するには多大な注意が必要である。
【0013】
【発明が解決しようとする課題】
本明細書では、用語"ノード"は単一コンピュータ・システムのセクションを表し、これは"ノード間"(すなわちセクション間)バスにより接続される1つ以上の"ノード"(すなわち1つ以上のセクション)上に含まれる。最初に単一のセクションから構成される場合、1つ以上の追加のセクションが後に追加され、セクション間バスにより初期のセクションに接続されて、コンピュータ・システムの能力を拡大する。追加のセクション("ノード")の追加は、単一コンピュータ・システム特性を変更せず、そこでは全ての"ノード"(すなわちセクション)が、単一のオペレーティング・システムにより管理される。すなわち、本明細書では、複数ノード・システム内の各"ノード"が、単一コンピュータ・システム内の"セクション"の1つである。この単一コンピュータ・システム内において、複数"セクション"の各々は、複数の"システム・セル"からなり、各セルはプロセッサ・チップ、及びチップにローカル・バスにより接続されるローカル・メモリ(例えばDRAM)から成る。各プロセッサ・チップは少なくとも1つの中央プロセッサを含み、複数の中央プロセッサを含んでも良い。コンピュータ・システムの任意のセクション内の全てのまたは一部のシステム・セルは、I/Oインタフェースを含み得る。セルがI/Oインタフェースを含む場合、それはI/Oプロセッサをチップ上に提供するか、I/Oインタフェースを提供するために、チップ上の中央プロセッサに(中央処理機能に加え、)I/O機能を実行させることによりサポートされる。
【0014】
【課題を解決するための手段】
本発明の目的は、コンピュータ・システムにおけるメモリ・バス競合を多大に低減することであり、これは複数のプロセッサ・チップの各々内において、DRAMのサブセットを含むシステム共用メモリのサブセットを、サブセット・メモリ制御装置に接続する、固有のコンピュータ・システム設計を提供することにより達成される。この設計は幾つかの利点を有し、それらの中にはメモリ・バス競合の大きな低減が含まれる。このバス競合の低減は、多数のメモリ・バスを提供することにより獲得され、各バスは、共用メモリのアドレス範囲内の比較的小さな範囲の実アドレスだけを扱う。これはシステム共用メモリ内の小範囲のアドレスを、システム内の各プロセッサ・チップに接続されるDRAMのサブセットに割当てることにより達成される。多数のプロセッサ・チップがシステム内に提供され得て、各々がその接続されるDRAMサブセットを有し、自身のメモリ・バスは自身のそれぞれのDRAMサブセットだけをサービスする。これは共用メモリをかなりの数のDRAMサブセットに区分化し、各々はシステム共用メモリ内の異なる小アドレス範囲を有する。このように、各小範囲がそれ自身のメモリ・バス及びそれ自身のメモリ制御装置を有し、それにより異なるアドレス範囲をサービスする異なるプロセッサ・チップ・メモリ・バス上の同時メモリ・アクセスを可能にすることにより、システム内のメモリ・バス競合の多大な低減を可能にする。
【0015】
例えば、システム内に20個のプロセッサ・チップが存在する場合、システムは20のバスに接続される20のDRAMサブセットを有し、これらのバスは、20個のプロセッサ・チップ上の20個のメモリ制御装置に接続される。全共用メモリ範囲が0乃至1ギガバイトの実メモリの場合、各DRAMサブセットは1ギガバイト範囲内の異なる20メガバイト範囲のアドレス指定を割当てられる。これにより、20個の異なるプロセスが20個の異なるプロセッサ・チップ上で同時に実行され、これらは共用メモリの異なる範囲のローカル・サブセットを同時にアクセスする。
【0016】
一方、従来設計システムは、全ての(例えば20個の)プロセッサ間の共通バス及びシステム共用メモリを提供する、1つまたは2つのメモリ制御装置を有し得る。そこでは共通バスが1度に20個のプロセッサによる1アクセスだけを可能にし、20個のプロセッサによる20の同時アクセス要求を一度に1ギガバイト・メモリへの1アクセスだけに制限する。それにひきかえ、本発明の前述の操作例では、一度にシステム共用メモリへの20の同時アクセスを可能にする。この例は、本発明が従来の共通バス設計を使用するシステムの全メモリ・システム帯域幅に比較して、共用メモリ・アクセスにおいて、全システム帯域幅のほぼ20倍の増加を提供することを示す。
【0017】
更に、本発明はプロセッサ・チップか、またはそれらに接続されてシステム共用メモリを構成するDRAMサブセットの数及びサイズを加減算することにより、システムの全システム・メモリ帯域幅を容易にスケーリングすることができる。
【0018】
本発明の別の目的は、単一システムの共用メモリのための固有の構成を提供することである。このメモリ構成は、DRAMサブセット(及びそれらの別々に接続されるプロセッサ・チップ)を、共用メモリ・システムを構成する1つ以上のノードに区分化する。各ノードは、そのノードに直結されるDRAM内のデータへのアクセスを制御し、データのコヒーレンスを維持する責任を負う。2つ以上のノードがシステム内に提供される場合、各ノードは任意の数のプロセッサ・チップを含み得、各プロセッサはそのサブセット内に任意の数のDRAMを有し得る。本発明の好適な実施例は、システムの各ノード内に同数のプロセッサ・チップを提供し、各サブセット内に同数のDRAMを提供するが、1ノードにつき等しい数のプロセッサ・チップ及びDRAMの選択は、本発明により要求されない。例えば、システムの初期構造化は、システム内の複数のノードの各々内に、等しい数のプロセッサ・チップ及びDRAMを提供するが、後に任意のノードのプロセッサ・チップまたはDRAMの数が変更されて、そのノードがより大きな(または小さな)サイズにスケーリングされ、結果的に異なるサイズのノードが生成され得る(例えば、システムの複数のノードの1つ以上のノードが、残りの他のノードと異なる数のプロセッサ・チップ及びDRAMを含む)。
【0019】
ノードに区分化される共用メモリ・システムにおいて、本発明はシステムの各ノード内に"共通ディレクトリ"を提供する。各共通ディレクトリはそのノードを表し、同一ノード内の全てのプロセッサ・チップに接続される全てのDRAMを所有すると見なされる。共用メモリ・システムが2つ以上のノードから構成される場合、異なるノード内の共通ディレクトリ間に1つ以上の"ノード間バス"が接続される。これらのノード間バスは、共用メモリ・システムの共通ディレクトリ間で制御信号及びデータを伝達する。従って、システムの共用メモリは、システム内の全てのノード内のDRAMを含む。
【0020】
現共用メモリ・システム内で見いだされるバス・スピードの不一致は、本発明により多大に低減される。これは本発明に従い、各プロセッサ・チップ内に統合される別々のメモリ制御装置バスにそれぞれ接続される、独立の共用メモリDRAMサブセットの使用によるからで、それによりチップ内のプロセッサは共用メモリ内で非競合並列アクセスを達成でき、従来システムにおいて通常見いだされるメモリ・バス競合無しに、全体的なメモリ・アクセス・レートの多大な増加を可能にする。従来システムでは、1プロセッサ当たりのメモリ・アクセス・レートは、同時プロセッサ・アクセス要求間の競合を回避するメモリ・アクセスの直列化により、システム内のプロセッサの数が増えると低減する。それにひきかえ、本発明はシステム内のプロセッサの数が増加しても、1プロセッサ当たりのメモリ・アクセス・レートを著しく低下しない。これはその固有の共用メモリ設計が、各プロセッサのための別々のバスを、共用メモリの別々のセクションに提供し、それにより異なるプロセッサが単一の共用メモリ内の非競合セクションを割当てられるからである。従って、本発明はプロセッサの数が増加すると、全体的なシステム・メモリ・アクセス・レートが1プロセッサ当たりのアクセス・レートの低下により制限される従来の共用メモリ・システムと異なり、システム共用メモリへの全体的なシステム・メモリ・アクセス・レートが、システム内のプロセッサの数に比例して実質的に増加することを可能にする。これらの理由から、本発明は従来システムに比較してシステム性能の多大な増加を提供する。
【0021】
更に、本発明は従来の共用メモリ・システムに比較して、本発明を使用するシステムの費用性能比を多大に低減する。これは本発明が共用メモリ・システムのサイズを増加するために、同一チップ・タイプの複製を可能にする態様による。すなわち、同一のプロセッサ・チップ・タイプが、システム内の全てのDRAMサブセットと共に使用され、各プロセッサ・チップは同一のプロセッサ、同一のメモリ制御装置、及び同一の専用プロセッサ・キャッシュを有し、更に外部I/O装置を、それぞれのプロセッサ・チップに接続されるローカルDRAMサブセットに接続する1つ以上の同一の入出力(I/O)ポートを有する。
【0022】
プロセッサ・チップ・メモリ制御装置設計は、システム共用メモリのために、全メモリ制御装置機能のサブセット化を可能にする。このメモリ制御装置のサブセット化はまた、システム・コストがシステムにより必要とされるシステム資源に従い、直接変化するようにするために重要である。本発明により提供される結果のシステム設計は、システム製造コストを、同一チップ・タイプ(すなわち同一の部品番号を有する)の複製の増加に実質的に比例して変化させる。これはコストが共通メモリ設計により制約される従来の共用メモリ・システムでは見られない。本発明は、システムが最小数のプロセッサ及びメモリ・サイズだけを必要とする低システム・コストから、システムが多数のプロセッサ及びメモリ・サイズを必要とする高システム・コストまで、システム・コストが多岐に渡ることを可能にする。
【0023】
システム・コストは、本発明により使用される方法により、すなわちシステムにおける共用メモリ・アクセス・レートが、システム内のプロセッサの数にあまり依存しないようにする一方、システム構造全体を通じて複製チップの使用を可能にする方法により、多大に影響を受ける。これは従来の共用メモリ・システムに比較して、システムの費用性能比を多大に低減する。同時に、本発明は共用メモリ・コンピュータ・システムのスケーラビリティを多大に増加する。
【0024】
本発明により共用メモリ・コンピュータ・システムとして提供される新規の構造は、新規のコンピュータ・システムが最小の部品タイプにより製造されることを可能にし、これはコンピュータ・システムのサイズを増加する決定が下される時、コンピュータ・システムのサイズを、性能的に多大に増強された超大規模サイズに拡大するように、容易に複製され得る。すなわち、本発明は比較的小さなサイズから、超大規模サイズ(一般に"メインフレーム"に関連付けられる)までの共用メモリ・コンピュータ・システムの製造メーカをサポートし、これらの異なるサイズのコンピュータ・システムは全て、安価に製造可能な少数の同一タイプの部品だけを複製することにより、潜在的に製造される。
【0025】
本発明のスケーリング・フィーチャは、本発明の部品の複製による1つまたは複数のシステム・ノードから成る共用メモリ・システムの新規の構成により、追加のタイプのコンピュータ部品を有する必要無しに、システム拡張(または縮小)を可能にする。
【0026】
本発明の別の目的は、ノード間共用メモリにおいてノード間コヒーレンス問題を解決することである。ノード間接続される(すなわちノード間バスにより接続される)共通ディレクトリ内に、コヒーレンス制御が提供され、それによりシステム内のノード間データ・コヒーレンス問題を解決する。各共通ディレクトリを有する共通キャッシュがデータ・ラインのコピーを記憶する。所有ディレクトリはデータ・ラインに対する基本コヒーレンス責任を有するが、(別のノードの)別の共通ディレクトリは、ノード間トラフィックを低減するために、そのデータ・ラインのコピーを含み得、それによりシステム効率を増加させる。
【0027】
システム内のノードの数及びノードのサイズは、同一のコンピュータ部品番号を複製することにより、大きな範囲に渡って選択され得る。これは例えばプロセッサ・チップの数を増加したり、各プロセッサ・チップに接続されるDRAMの数またはサイズを増加したり、追加される各プロセッサ・チップに対して、別のノード・キャッシュ・セクションを追加したり、追加される各プロセッサ・チップとノード・キャッシュ・セクション間にバス機構を追加するなどによる。各ノードはメモリ階層構造を有し、これはチップ内のプロセッサにより使用されるプロセッサ・チップ内の専用キャッシュと、ノード・キャッシュと、ノード内の各プロセッサ・チップに接続されて、システム共用主メモリとして機能するDRAMとを含み、各ノード内に3つの階層レベルを提供する。また、多数のI/Oインタフェース接続が各プロセッサ・チップ内に提供され、I/Oインタフェースが各プロセッサ・チップ内に統合される。
【0028】
各ノードは、ノードのサイズを増加するためにノード内で複製され得る部品から構成される。複製部品には、プロセッサ・チップ(専用キャッシュを有する中央プロセッサと、区分化された共用メモリ制御装置エンティティと、I/Oインタフェース・エンティティとを統合)、各プロセッサ・チップに接続されるDRAM、ノード・キャッシュ・ディレクトリ・チップ、及びノード・キャッシュ・セクション・チップが含まれる。低待ち時間アクセスを有する高メモリ・アクセス帯域幅が、本発明の構造により獲得されて、同時メモリ・アクセス要求間の直列優先順位化を要求する共用メモリ・バスを使用する、従来の共用メモリ・システムで発生するメモリ・バス干渉を回避する。
【0029】
共用メモリの全体サイズは、異なって変更され得る。ある方法は、任意のノード内の各DRAM(ダイナミック・ランダム・アクセス・メモリ)のサイズ、または各中央プロセッサに接続されるDRAMの数を変更する。別の方法は、各ノード内の共用メモリの一部(任意のノード内の各中央プロセッサに接続される)のサイズの変更により、または変更無しにシステム内のノードの数を変更する。
【0030】
従って、本発明に従い形成されるノード・システムのサイズは、ノード内及びノード間の両方でスケーリングされて、共用メモリ・システムのサイズを増減する。ノード内変化は、システムの任意のノード内における、中央プロセッサ及びそれらの専用キャッシュの数、ノード・キャッシュ内のセクションの数、及びシステムへの入出力インタフェース接続の数を変更する。ノード間変化は、システムを構成するノードの数を変更する。
【0031】
本発明は、共用メモリ・システムの各ノード内に拡張可能なノード内バス機構を提供して、異なる数の中央プロセッサがノード・キャッシュ機能のセクションに接続されることを可能にする。そこではキャッシュ・セクションの数が、ノード内のプロセッサ・チップの数とは別に変更され得る。電子スイッチング機能(クロスポイント・スイッチ)が、ノード・キャッシュ機能の各セクションに設けられ、キャッシュ機能の各セクションをノード内の各プロセッサに突き合わせる。更に、電子スイッチング機能はノード内のノード・キャッシュをバイパスして、任意のノード内の任意のプロセッサによる任意のノード内の任意のメモリ・サブセットに記憶されるデータへのアクセスを高速化する。
【0032】
また各ノード内において、ノード・ディレクトリ機能が、ノード内の全てのキャッシュ・セクションに接続されて、ノード・キャッシュ内に記憶されたまたは記憶されるデータ・ラインを突き止め、こうした全てのデータのデータ・コヒーレンスを維持する。
【0033】
プロセッサの数はノード間で不同でよいが、少なくとも初期には、各ノード内に同数のプロセッサを有することが好ましい。かなり大きな総数のプロセッサがシステムの全てのノード内に含まれ得るが、実際にはより多くのプロセッサが追加されると、システム性能の相互問い合わせペナルティを被る。なぜなら、例えばデータ・ラインへの書込みの権限変更を要求する特定のプロセッサに、データ・ラインの制御を与えるために、共用データ・ラインが無効にされる必要がある場合、より多くのプロセッサ・チップがアクセスされなければならないからである。
【0034】
本発明の共用メモリ・コンピュータ・システムは、任意のコンピュータ・アーキテクチャを使用するように適応化され、コンピュータ・ハードウェアが、適応化されたアーキテクチャの下で使用可能な任意のソフトウェアの実行を可能にする。
【0035】
複数ノード・システムのノードを一緒に接続して、共用メモリ・ノード間システムにおけるバス機構コストとバス機構性能とのトレードオフを提供するために、ここでは異なるタイプのノード間バス機構が開示される。バスはまた同一のバスに対して、同一の部品番号を用いて複製され得る。
【0036】
従って、各ノードのために複製されるバス及び半導体チップが、プロセッサ機能と、ノード・キャッシュ機能と、ノード・ディレクトリ機能と、電子スイッチング機能とを実行する。各ノード内のプロセッサ機能は、ノード内に1つ以上のプロセッサ・チップを複製することにより提供され、各プロセッサ・チップは1つ以上の中央プロセッサと、各プロセッサのための専用キャッシュ及びディレクトリと、メモリDRAMをその中央プロセッサに接続するメモリ制御装置と、I/O装置を中央プロセッサに接続するI/Oインタフェースとを含む。DRAMはEDO、高速ページ、SDRAMなどの任意のタイプである。I/Oインタフェースは、全ての中央プロセッサで必要とされない場合、全てのプロセッサ・チップ内で提供または使用される必要はない。
【0037】
システムの各ノード内の任意の中央プロセッサに接続されるDRAMは、システム内の任意の中央プロセッサ上で実行される命令により直接アクセスされる。仮想アドレス指定が、システム内の任意のプロセッサ上の実行プログラムにより使用される場合、そのプロセッサが各仮想アドレスを実アドレスに変換し、これがその実アドレスを含むDRAMをアクセスするために使用される。本発明では、マルチノード・システムの任意のノード内の任意の中央プロセッサにより実行される任意の命令内の各記憶オペランドの実アドレスが、そのオペランドを記憶する特定のプロセッサDRAMを識別する。これはシステム構成制御において、各DRAMセットにシステム・ワイドな固有アドレス範囲を割当てる十分な柔軟性を実現することにより達成される。より一般的には、同一のローカルDRAMアドレスが、全てのDRAMサブセット内で繰り返される(一般にはアドレス"0"から開始する)。
【0038】
好適な実施例のハードウェアにおいて、固有アドレスを定義するために、各DRAMサブセット内の各ローカル・バイト・アドレスが、そのDRAMに接続されるプロセッサ・チップのノード識別子及びプロセッサ・チップ識別子に連結される。しかしながら、大部分のプログラムは連続範囲の固有の実アドレスを用いて、システム共用メモリ内の全てのバイト位置を定義する。システム・プログラムが共用メモリ内のオペランドをアクセスするためのプログラム実アドレスとしてDRAMアドレスと共に、ノードID及びプロセッサIDを使用することは、厄介である。従って、物理アドレス変換テーブルがシステム内の全てのプロセッサに提供され、プログラムにより生成される実アドレスを、DRAMの配置場所を指定するプロセッサID及びノードIDに連結されるローカルDRAMアドレスに変換する。
【0039】
物理アドレス変換テーブルは、各プロセッサ・チップに接続される各DRAMサブセット内に確保されるハードウェア・レジスタ内で、またはマイクロコード領域内で実現され得る。これはシステム内の各プロセッサに対して複製され、各プロセッサはそれ自身の物理アドレス変換テーブルへの並列アクセスを有する。システム内の全てのプロセッサは、システム内の他のプロセッサからの干渉無しに、または関係無しに、それらの実行プログラム内の物理アドレスを決定する。
【0040】
本発明の好適な実施例では、各ノード内のノード・キャッシュが、1つ以上のノード・キャッシュ・セクション・チップから成る第2レベル・キャッシュ機能である。ノードのノード・キャッシュ機能内のノード・キャッシュ・セクションの数は、プロセッサ・チップ間のデータ転送のサイズにより、及び各ノード・キャッシュ・セクション・チップに対して提供されるビット記憶容量により、決定される。1データ転送につき同一整数のビット数が、セクション・チップの各々に対して選択され、全てのノード・キャッシュ・セクション・チップが同一であることを可能にし、それによりそれらは同一の部品番号により製造され得る。ノード・キャッシュ・セクションの数は、ノード内のプロセッサの数には無関係である。
【0041】
各ノード・キャッシュ機能に記憶されるデータ・ラインは、一般に、ローカル・ノード内のプロセッサにより最も頻繁にアクセスされるラインであり、これらのデータ・ラインは、ノード・ディレクトリ(ノードの共通ディレクトリ)により管理される。
【0042】
ノードに含まれるDRAMサブセット(すなわちノードにとってローカル)は、ここではそのノード内の共通ディレクトリにより所有されると見なされる。DRAMを含むノード(すなわちDRAMにとってローカルのノード)は、ここではホーム・ノードと見なされ、ホーム・ディレクトリを含む。ホーム・ディレクトリはそのノード内のDRAM内の全てのメモリ位置を所有し、それらの位置のコヒーレンスを維持する責任を負う。従って、システムが複数のノード内にDRAMを有する場合、各ノードは共用メモリの一部を含み、各ノードの共通ディレクトリは、共用メモリ内のDRAMの一部だけを所有する。所与のアドレスに対するホーム・ノード以外のノードは、リモート・ノードと呼ばれる。
【0043】
しかしながら、任意のノード内の任意のプロセッサが、そのノードにとってローカルのDRAMか、リモート・ノードかに関わらずシステム共用メモリ内の任意の場所に記憶されるデータをアクセスできる。すなわち、システム内の任意のDRAMサブセットに記憶されるデータ・ラインがコピーされ、コピーが要求元プロセッサのノード内のリモート・ノード・キャッシュ機能に転送され、続いて要求元プロセッサの専用キャッシュに転送される。データ・ラインの複数のコピーが、一時的に、複数ノード内の複数のノード・キャッシュ機能に記憶され得る。これにより各要求元プロセッサに最も近いキャッシュが、現在複数のプロセッサにより並列に使用されているデータ・ラインのコピーを含むことができ、最速のシステム性能が提供される。しかしながら、1つのノード共通ディレクトリだけがホーム・ノード上に存在でき、ホーム・ノードは、プロセッサがストア権限を要求しているシステム内のデータ・ラインの全ての過剰なコピーの無効化を制御するなど、データ・ラインのシステム・コヒーレンスを維持する責任を負う。
【0044】
アクセス権限要求はまた、各メモリ・アクセス要求と一緒に含まれる。要求された権限は、共有権限(一般に命令フェッチのための読出し専用要求)か、排他権限(一般に記憶またはロック要求のために、キャッシュ・ラインへの記憶を可能にする)か、または条件付き排他権限(オペランド・フェッチ要求のための条件付き排他であり、しばしば後にそのラインのストア要求を伴う)である。
【0045】
各ノード・ディレクトリによる制御は、その所有DRAM内でアクセスされる全てのデータのコヒーレンスを維持し、ノード内のプロセッサにより現在使用されている非所有データ・ラインに対してコヒーレンス制御を支援する2次的な役割を演じる。ノード・ディレクトリ制御は、各プロセッサ・アドレス・コマンドと一緒に、"権限要求"を受信する。共用、排他及び条件付き排他権限に対するデータ・コヒーレンスは、一般に従来技術において教示されるが、本発明は共用メモリ・システムのローカル及びリモート・ノードにおけるコヒーレンス・チェックを扱う新規の制御を提供する。
【0046】
要求がプロセッサの専用ディレクトリ内でミスすると、要求が(そのデータのホーム・ノードの参照用要求ノードID、プロセッサID、及び要求DRAMアドレスと共に)要求元プロセッサのローカル・ノード・ディレクトリに送信される。要求が要求元プロセッサのそのノード・ディレクトリ内でヒットすると、要求されたアクセス権限がチェックされ、承認されると、関連データ・ラインのコピーまたはデータ・ラインの要求部分が、接続されるノード・キャッシュから要求元プロセッサの専用キャッシュに転送される。
【0047】
データ・ラインがローカル・ノード・ディレクトリ内に存在しない場合、または要求アクセス権限またはノード・ディレクトリ内のデータ・ラインの現状態との競合が発生する場合、そのアドレスのホームノードが、メモリまたは別のキャッシュ位置からデータのフェッチを開始しなければならず、そのデータに対してキャッシュ・コヒーレンスがシステム・ワイドに維持される。
【0048】
電子クロスポイント・タイプ・スイッチが、同一チップ上に含まれるノード・キャッシュ・セクションに関連して、各ノード・キャッシュ・セクション・チップ内に含まれる。電子スイッチは全てのデータを制御し、ローカル・ノード・キャッシュ・セクションと任意のローカル・プロセッサ・チップとの間の、またはローカル・ノード・キャッシュ・セクションと、要求されたまたは要求元のリモート・プロセッサ・チップを含むノード内のリモート・ノード・キャッシュ・セクションとの間の転送を制御する。従って、リモート・プロセッサのデータ・ラインが要求される場合、そのリモート・ノード・キャッシュ・セクションがそのライン・セクションをその電子スイッチを通じて、要求リモート・プロセッサ・チップにまたはそれから転送する。
【0049】
好適なノード構造は、個別化すなわちカストマイズ化された複製のチップ及びバスを含み、それらの複製は、同一の固有の部品番号を同じ設計の各複製チップまたはバスに割当てることにより管理される。好適な実施例では、同一の部品番号が各複製プロセッサ・チップ、各ノード・キャッシュ・セクション・チップ(ノード・キャッシュ・セクション及び電子スイッチを含む)、各ノード制御チップ(ノード・キャッシュ・ディレクトリ及びノード制御)、チップを接続するために使用される各バス・タイプ、及びバスをチップ上のピンに接続するためにチップに接続される各バス・コネクタ・タイプに割当てられる。好適な実施例では、1つのノード制御チップが、同一ノードにより所有される全てのDRAMのコヒーレンスを制御するために使用される。任意のノードのノード制御チップは、同一ノード内の全てのプロセッサ・チップ、及び同一ノード内の全てのノード・キャッシュ・セクション・チップ、更にノード間バスを通じて、システム内の他の各ノードのノード制御チップと通信する。
【0050】
ストアイン・プロトコルまたはストアスルー・プロトコルのいずれかが、各プロセッサ・チップ上の各専用キャッシュ内に組み込まれ得る。ストアイン・キャッシュ・プロトコルがここでは好適である。なぜなら、これはノード・ディレクトリ及びノード・キャッシュ機能における干渉を多大に低減するからである。また、ノード・キャッシュが全てストアイン・キャッシュであり、ノード間バス・トラフィックを多大に低減することも好ましい。
【0051】
ノード・バスはサブライン単位ではビット並列であり、各データ・ライン内のサブライン単位ではビット直列であるが、各データ・ライン内の全ビットに対してビット並列(現在の最速のデータ転送タイプであることが判明している)などの、他の周知のデータ転送方法も本発明において使用され得る。
【0052】
本発明はシステムの全体的な共用メモリ制御機能を、複数のプロセッサ・チップ・メモリ制御装置(MC)に物理的に分割し(1プロセッサ・チップにつき1MCが対応する)、MCはプロセッサ・チップに割当てられるDRAMのサブセットに接続する。
【0053】
プロセッサ・チップに接続されるDRAMに割当てられる実記憶アドレスの範囲は、連続バイト・アドレスである必要はないが、その方が一般に好適である。同一セットのDRAMアドレスが各ノード内に提供され得るが、これは本発明の要件ではなく、ノードが異なる範囲のDRAMアドレスを有することも可能である。異なるノード内のDRAMが同一のまたは重複するアドレスを有する場合、それらはシステムの構成時に、及びDRAMが任意のノード内で変更される度に、前述の物理アドレス変換テーブルを生成することにより、システム内の固有アドレスとされる。このように、システム内の共用メモリ制御装置の数は、将来プロセッサ・チップ及び接続されるDRAMを追加または除去するとき、変更され得る。また、任意のプロセッサ・チップに接続されるDRAMの数またはサイズは、将来任意のノードまたは全てのノード内で変更され得る。任意のDRAMがシステム内で変更されるとき、変更後に"物理アドレス変換テーブル"が全ての既存のDRAMを含むように再生されて、全てのノードのシステム共用メモリ内の連続アドレスを再割当てする。
【0054】
システムの共用メモリ・サイズは、システムの全てのノード内の各プロセッサ・チップのための共用システム・メモリに構成されるDRAM空間の合計であり、これは一般に、接続プロセッサのためのマイクロコードを記憶するためなどの、他の機能のために確保されたDRAM空間を差し引いた、全ノード内の全てのDRAM空間の合計である。
【0055】
従来技術では、各ページ・フレーム内の空間をデータ・ラインに分割し、ページ・フレームを含むDRAM内において、各データ・ラインがその全ビットを並列にアクセスされることが一般的であった。各データ・ラインは次にメモリ・バス上に、メモリ・アクセスの単位を提供する。各データ・ライン内のビットは、システム共用メモリ内のバイト・アドレスにより位置付けられる単位であるバイトに区分化される。本システムの共用メモリ内のデータ・ライン内のバイト位置のハードウェア・アドレス(任意のプロセッサにより要求される)は、次のアドレス要素の連結から構成される。すなわち、それらは要求ノードID及び要求プロセッサID(ターゲット・アドレスを含むDRAMサブセットを突き止める)、要求プロセッサのDRAM内のライン位置を識別するライン番号、及びライン内のバイト番号(要求アドレスのターゲット・バイトを突き止める)である(図6参照)。これらのアドレス要素内で使用される数が2の累乗であることは、好適ではあるが、理論的には不可欠ではない。
【0056】
本発明の重要な新規のフィーチャは、本発明がその共用メモリをそのプロセッサ・チップ間で区分化し、容易に拡張可能な可変サイズの共用メモリをサポートすることである。この新規の構成はまた、区分化された共用メモリ制御装置を提供し、それにより、現在大規模マルチプロセッサ・システム内で使用される従来の高価なトータル・メモリ制御装置チップの除去を可能にする。本発明による区分化共用メモリ制御装置の使用は、メモリ制御装置のコストを制御されるメモリのサイズに比例させることにより、大規模コンピュータ・システムのコスト・パフォーマンスを多大に改善する。すなわち、任意のプロセッサによるシステム共用メモリの一部分の容易な拡張が提供される。本メモリ制御装置サイズの拡張は、システム内のプロセッサ・チップの数だけの関数とされ、システム共用メモリのサイズは、プロセッサ・チップの数を拡大(または縮小)することにより、或いは任意のノードのサイズを変更することにより、またはより多くのノードをシステムに追加することにより、変更され得る。
【0057】
また、システム主メモリ容量及び接続性が、任意のメモリ制御装置チップの変更の要求無しに、より多くのDRAMを任意のプロセッサ・チップに接続することにより変更され得る。また、接続されるDRAMを含むより多くのプロセッサ・チップを設けることにより、システム主メモリのサイズが増加する。
【0058】
従って、システム主メモリ・サイズ及びプロセッサ容量及び接続性が、非常にハイレベルの容量及びシステム性能に増加され得る。メモリ容量は任意の所与のシステム構成のために、個別に容易に適合化され、過剰なハードウェア・システム資源の必要性を低減する。これらの全ての要因がシステム・スケーリングを改善する。
【0059】
従って、本発明は、プロセッサの数及びそれらがサポートするメモリのサイズを増加するために、従来の共用メモリ・システムの制御装置チップに対して要求される複雑で高価な変更を回避する。
【0060】
前述のように、本発明のフィーチャは、従来のメモリ制御装置チップセットの除去である。こうしたチップセットは一般に、別個のコンポーネントのセットであり、時に統合ノード・ディレクトリ及びノード・キャッシュを有する。実際問題として、こうしたディレクトリ/キャッシュ/制御装置の結合構成を製造することは、困難且つ高価である。なぜなら、結合チップは過剰な数のI/O接続を要求し、そのためにこのチップによるスケーリングを、接続可能なプロセッサの最大数に制限するからである。本発明はハイレベルの多重プロセシングにおいて、より優れたコスト・パフォーマンスを可能にする。これは従来の結合チップ上のI/Oピン数が、必要な全てのDRAMカードをコスト効率良く接続できない事実による。
【0061】
従って、本発明により、ハードウェア・バス・スピードの増加を要求すること無しに、有効メモリ・アクセス帯域幅が従来システムに勝って、多大に増加される。これは本発明がそのメモリ制御装置機能を、独立のメモリ制御装置セクションに分割し、別々のプロセッサ・チップ上に配置される各制御装置セクションが、別々の共用メモリDRAMセクションに接続されることによる。本発明により提供される区分化されたメモリ/制御装置/プロセッサ構造は、従来のメモリ制御装置により使用される共用メモリ・バス上の競合を排除することにより、メモリ・バス競合を回避する。こうしたメモリ・バス競合は、同時メモリ・アクセスの間の干渉をもたらし、複数の競合プロセッサの間のメモリ・アクセスを直列化する。本発明は異なるメモリ制御装置を用いて、同時要求を異なるメモリ・バス上で実行することにより競合を生じること無く、共用メモリの並列及び独立アクセスを可能にし、同時メモリ要求の従来の直列化を回避する。従って、本発明はメモリをアクセスするための複数のプロセッサ間の競合を多大に低減する。
【0062】
I/O制御装置が各プロセッサ・チップ上に提供されて、各プロセッサ及びその接続DRAMのためのI/Oインタフェースを提供する。各プロセッサ・チップ上のI/O制御装置は、外部I/Oバスに接続され、既存の多くのマルチプロセッサ・システム内で見いだされる従来のI/O制御装置チップが除去され、システムのサイズが増加されるとき、システムのI/O接続性を増加することにより、システム・スケーリングを改善する。このI/Oインタフェースは潜在的な追加の効率的利点を有し、I/Oデータがプロセッサ・チップに接続されるDRAM上の割当てられた位置に、直接転送されることを可能にする(オペレーティング・システムの制御に従い、好適なページ・フレームをI/Oデータ転送に割当てる)。それにより、システム内の他のデータ・パスとの競合の無いI/Oデータ・パスを提供できる。ノード内で使用され得る別のデータ・パスは、プロセッサ・チップ上の各プロセッサを通じて、I/Oデータをノード内のノード・キャッシュに転送する。I/Oデータのこのタイプの転送はプロセッサにより制御され、プロセッサはコマンド(addr/cmd)を、各プロセッサ・チップをそのノード・ディレクトリ・チップに接続するコマンド・バス上に送信する。コマンドは要求メモリ・アドレス、及びそのノード・キャッシュ機能のアクセスのための権限を含み、これらがノード・ディレクトリにより処理される。ノード内バスもまた、I/Oデータを転送するために必要に応じて使用され得る。
【0063】
【発明の実施の形態】
図1は好適な実施例の基本構成ブロックを示し、メモリ5及び半導体チップ7を含む単一プロセッサ構成である。チップ7はCP(中央プロセッサ)1、L1キャッシュ2、L1ディレクトリ3、メモリ制御装置4、及びI/O装置へのI/Oインタフェース12を含む。チップ7内において、L1キャッシュ2はCP1の専用キャッシュであり、L1ディレクトリ3はL1キャッシュ2用のディレクトリである。メモリ制御装置4は、メモリ5とCP1との間のインタフェースである。I/Oインタフェース12は、CP1を含むコンピュータ・システムの外部にあるI/O装置に接続可能である。バス・インタフェース・ユニット13は、プロセッサ・チップ7と共通スイッチ/キャッシュ(図2の40)との間のバス機構をサポートする。これはより大規模な構成のための基本構成ブロックとして作用する。
【0064】
メモリ制御装置4は、メモリ5の動作のために要求される制御論理を含む。ここでメモリ5はCP1の主記憶装置であり、DRAM素子により構成される。メモリ制御装置4における従来の制御は、業界標準DRAMのセットを駆動するために必要とされる信号を提供する組み合わせ論理及びラッチを含む。生成される信号には、ロウ・アドレス・ストローブ(RAS)、カラム・アドレス・ストローブ(CAS)、アドレス、チップ・セレクト(CS)、出力イネーブル(OE)、データ出力などが含まれる。これらの制御信号の動作シーケンスは、従来設計に帰属し、業界では周知である。制御論理はまた、DRAM製品仕様に従い要求されるDRAMリフレッシュ信号を生成する。制御論理は更に、全ての未解決の主記憶装置要求に対するステータスを維持し、またデータ・パリティまたはECCエラーの検出及び可能な訂正のための責任を担う。メモリ制御装置はまた、メモリ・フェッチが開始された後に、それらからの返却データを取消しまたは廃棄する能力をサポートする。メモリ5内のSIMM/DRAMは、複数のDRAMチップの複数のバンクから構成され、要求される合計サイズのDRAMアレイを提供する。
【0065】
メモリ制御装置4、双方向データ・バス8、及びアドレス/コマンド・バス9の組み合わせは、"メモリ・インタフェース"と称される。
【0066】
各I/Oインタフェース12は、CPがI/O装置の集まりのオペレーションとインタフェースするために要求される従来の制御論理を含む。制御論理は、業界標準I/Oバス(PCMCIAなど)またはプロプラエタリI/Oインタフェースを駆動するために必要とされる信号を、I/O制御装置に提供する組み合わせ論理及びラッチを含む。論理機能はバス調停、コマンド・フォーマッティング、割込み処理論理回路などを含む。
【0067】
チップ上の超高レベルの回路密度により、複数のプロセッサ1及び追加のキャッシュ・レベルが、同一チップ7上に提供され得る。こうしたケースでは、同一チップ7上の複数のCP1は、任意的に、1つ以上のキャッシュ・レベルを共用したり、メモリ及びI/Oへのインタフェースを共用し得る。
【0068】
メモリ5は、SIMM(シングル・インライン・メモリ・モジュール)5またはDIMM(デュアル・インライン・メモリ・モジュール)上に実装されるDRAMチップとして、従来通り実現される。高速性能のために、任意的な標準のリドライブ・チップ6が、プロセッサ・チップ7とSIMM5(またはDIMM)との間に追加され得る。
【0069】
図2は、制御チップ27及びM個のスイッチ/キャッシュ・チップ28を含む共通スイッチ/キャッシュを示す。制御チップ27は、ノード・キャッシュ及びスイッチの制御23、及びノード・ディレクトリ24を含む。制御23はノード・キャッシュ及び電子スイッチの動作の責任を担い、これらの資源に対する様々な要求を順序付けする。制御23はまた、システム内の全てのCPによる全てのメモリ・アクセスに対して、データ・コヒーレンス及びデータ保全性を維持する責任を負う。CPはそのノードの任意のプロセッサ・チップ7に接続される共用メモリ・セクション内のデータをアクセスし得る。制御チップ27はアドレス/コマンド・バス25を介して、プロセッサ・チップ7と通信し、ノード間アドレス/コマンド・バス30を介して、他のノード上の制御チップと通信する。
【0070】
各スイッチ/キャッシュ・チップ28は、電子スイッチ部分22及びノード・キャッシュ部分21を含む。電子スイッチ22は双方向データ・バス20を介して、プロセッサ・チップ7との間でデータを転送する。好適な実施例では、4つのスイッチ/キャッシュ・チップ28が存在する。データはビット・スライス方式により(16バイト・データ・バス20から1チップ28につき4バイト)、任意のプロセッサ・チップ7と4つのスイッチ/キャッシュ・チップ28との間で転送される。従って、4つの同一のスイッチ/キャッシュ・チップ28が各プロセッサ・チップ7との間で16バイトを並列に転送する。このようにして、各キャッシュ部分21がノード構成内の全てのプロセッサ・チップ7により共用される。
【0071】
電子スイッチ22はまた、ノード間データ・バス32を介して、他のノードとの間でデータを転送する。ノード間アドレス/コマンド・バス及びデータ・バスは、以下の図面を簡素化するために、単一のエンティティ31に結合されて示される。
【0072】
図3は、図1に示されるのと同一のタイプの複数のプロセッサ・チップ7を含む、単一ノード・コンピュータ・エンティティの好適な実施例を示す。ここでN個のプロセッサ・チップ及びメモリ構成ブロック15が、双方向バス20により、M個のスイッチ/キャッシュ・チップ28及び制御チップ27を含む共通スイッチ/キャッシュ・ブロック40に相互接続される。好適な実施例では、N=4及びM=4であり、これらの値を以下の議論の中で使用する。
【0073】
更に、このノードは3つの双方向ノード間バス・ポート31を介して、他のノードに接続する。バス31の他端は、別のノード内の対応するクロスバー・スイッチ22(後述)に接続する。バスのスピード整合のために、または必要に応じて、ストア・データを一時的にバッファリングするために、追加のバッファが各バス上に提供され得るが、これらは図示されていない。
【0074】
ノード制御チップ27はまた、ノード・キャッシュ(4つのノード・キャッシュ部分28により提供される)に接続するノード・ディレクトリ24を含む。ノード制御チップ27は更に、ノード・チップの各々に接続する論理回路23を含み、これはノード・キャッシュ部分28と選択ローカル・プロセッサ・チップまたは選択リモート・ノードとの間の、16バイト・データ単位の転送を制御する。
【0075】
ノード・ディレクトリ24は、少なくとも4つの独立にアクセス可能なインタリーブにより動作する高速SRAM技術を含む。ノード・ディレクトリ24のこうした実現は、キャッシュ・フェッチ及びストア要求はもとより、コヒーレンス・プロトコルを処理するために必要とされる高帯域幅を提供する。セット・アソシアティブ合同クラス・エントリが、各ノード・ディレクトリ24内に提供され得て、各ディレクトリ内のヒット及びミスを判断するために使用される。
【0076】
様々なキャッシュ・コヒーレンス・プロトコルが、この単一または複数ノード・コンピュータ構造内で使用され得る。好適な実施例では、ノード・ディレクトリ24は"包含的(inclusive)"であり、これはL1ディレクトリ3内の全てのエントリ(同一のプロセッサ・チップ7上のCPにとって直接使用可能)が、チップ7上のそれぞれのL1ディレクトリ3に接続されるノード・ディレクトリ24内にも含まれることを意味する。キャッシュ・ライン間のコヒーレンス一貫性が、標準MESIプロトコルまたはその変形を用いて維持される(詳細については、Gannonらによる米国特許第5265232号"Cross-Invalidate Directory Methods and Means"を参照)。各ノード・ディレクトリ24は、図7に示されるように、その関連ノード・キャッシュに記憶されるデータ・ラインのステータスに関する情報を含む。このデータはノード・コンピュータ・システム全体に渡り、データ一貫性を実現するために使用される。
【0077】
ノード・ディレクトリ24の探索は、単一ノード・システム内のデータ・コヒーレンスを維持するために、4プロセッサのノード構成内のそのラインのステータスに関する必要なデータを提供する。ラインがノード・ディレクトリ24内で排他とマークされる場合、ノード・ディレクトリの排他CP IDビットが、ラインを排他に保持するCPのIDを示す(各ディレクトリ・エントリ内のビットのリストについては、図7を参照)。ラインが共用とマークされる場合、好適な実施例では、そのノード上の任意のプロセッサ7が、それらのL1キャッシュ2内に、ラインのコピーを共用状態で含むと仮定される。各ラインに対するノード・ディレクトリ内の追加のビット、及び追加の制御複雑性により、実際にラインのコピーを共用状態で保持するL1キャッシュ2を示すことも可能である。
【0078】
ノード・ディレクトリ情報は、Gannonらにより米国特許第5265232号で述べられるタイプの、必要とされる相互問い合わせ要求を開始するために使用される。制御チップ27上の制御論理23は、複数ソース(後述のように他のノードを含む)から要求を受信し、バッファリングする能力、または優先機構を用いて、ノード・アクセスに対する要求を選択する能力、及び新たな要求オペレーションが現在進行中の前の要求オペレーションと競合する場合(必要とされるアドレスまたは資源の競合による)、その新たな要求オペレーションが開始されないように保証する能力を含む。
【0079】
制御論理23はまた、ノード・キャッシュ21を制御する従来手段を含み、これはノード・ディレクトリ24情報(ヒット、ミス、排他、変更、無効など)を用いて、各ノード・キャッシュ・エントリに記憶されるキャッシュ・ラインのステータスを決定する。制御論理23は更に、様々なノード間ポート間でデータを転送するために、クロスバー・スイッチ22の動作を制御する。
【0080】
ノード内バス機構は、一端が各プロセッサ・チップ7に、他端がスイッチ/キャッシュ部分28の1つに接続されるデータ・バス20を含む。ノード内バス機構は更に、一端が各プロセッサ・チップ7に他端がノード制御チップ27に接続されるアドレス/コマンド・バス25を含む。アドレス/コマンド・バス25は、フェッチ、ストア、及び相互問い合わせオペレーションのためのアドレス及び制御情報、オペレーション・タイプを区別するためのタグ、及び相互問い合わせまたは他のディレクトリ探索からの応答を伝搬する。好適な実施例のノード内L1/ノード・バス25は、各L1キャッシュ2に固有である。代わりに、ノード内バスが(各L1キャッシュ固有バス14の代わりに)マルチドロップ共用バスの場合、全てのL1ディレクトリ3が、業界において周知の従来の"スヌーピ"・プロトコルを用いて、全てのバス活動をスヌープする必要がある。この場合、オペレーション効率は低下し得る。
【0081】
各プロセッサ・チップ7内への追加レベルのプロセッサ及びキャッシュの統合が、将来のより高度なCMOS製造技術により達成されよう。更に将来、クロスバー・スイッチ22、ノード・キャッシュ21、次にノード制御23またはノード・ディレクトリ24の一部の機能が、各プロセッサ・チップ7内に結合されよう。
【0082】
従って、ノード内のCPメモリ全体は、好適な実施例において、ノード・メモリの区分にあたる全てのメモリ部分5から構成され、各メモリ5は固有の物理アドレス範囲を割当てられる。その結果、ノード内のそれぞれのメモリ5に割当てられるアドレス範囲の合計のノード・メモリが提供される。更に、本発明に従い構成されるマルチノード・コンピュータ・システムでは、各ノードが固有のアドレス範囲を有するか、各ノードが同一のまたは重複するアドレス範囲を使用するとき、各ノードが固有の識別子を割当てられる(これが好適な実施例である)。システム内の全てのノード内のアドレス範囲の合計は、コンピュータ・システムのアドレスの全セットを構成する。
【0083】
各メモリ・アクセスは、次の3つのタイプの1つに分類される。それらは、一般に命令フェッチに当てはまる共用要求と、一般にデータ・ストアまたはロッキング・オペレーションに当てはまる排他要求と、大抵のデータ・フェッチにおける条件付き排他要求(すなわちcond-excl)である。要求フェッチがそのプロセッサのL1ディレクトリ3内でミスし、ラインをシステム内の別の所からフェッチするとき、共用要求は常にラインを共用状態で返却し、排他要求は常にラインを排他状態で返却し、条件付き排他要求は、ラインがシステム内の任意の他のプロセッサによりキャッシュされていない場合、ラインを排他状態で返却し、それ以外では共用状態として返却する。
【0084】
要求フェッチがそのプロセッサのL1ディレクトリ3内でミスすると、フェッチがプロセッサ・チップ7により、プロセッサのアドレス/コマンド・バス25を用いて、ローカル・ノードのノード制御23に発行される。ノード制御23が、その特定のラインのアドレスを求めて、ノード・ディレクトリ24を探索する。ラインがノード・ディレクトリ24内に存在し、有効な場合、次の事象シーケンスが発生する。すなわち、ノード・ディレクトリ24が排他とマークされるデータを見いだし、ディレクトリ・エントリ内の排他CP IDビットが要求元CPに一致しない場合、ノード制御23がアドレス/コマンド・バス25を用いて、排他CP IDビット内で指定されるL1キャッシュに、変更データのコピーをデータ・バス20を介してノードに転送するように伝える。ノード制御23はまた、そのノード上のL1キャッシュに、L1ディレクトリ3内のそのラインの状態を無効に変更するように(データが排他として返却される場合)、または共用に変更するように(データが共用として返却される場合)伝える。ノード・ディレクトリ内のラインの状態が共用であり、データが排他として返却される場合、そのノード上の全てのL1ディレクトリ3は、そのラインを無効にするように伝えられなければならない。なぜなら、ノード・ディレクトリ24は、そのラインの共用コピーをあるディレクトリ空間に保管するための、全ての位置のリストを保持しないからである。そのデータが次にノード・キャッシュにより要求元プロセッサ・チップ7に供給され、データ転送が関連クロスバー・スイッチ22を介し、その接続データ・バス20を用いて実行される。全ての場合において、共用/排他状態がノード・ディレクトリ24内で適切にマークされ、ラインを要求するCPを識別するノード・ディレクトリ24内の排他CP IDビットが、適切なCP ID値にセットされる。
【0085】
そのプロセッサのL1ディレクトリ3内でミスする要求フェッチが、要求元プロセッサ・チップ7に局所的に接続されるDRAMセクション5からのデータに対するものであるとき、メモリ制御装置4は要求をノードに送信するのと並列に、局所的に接続されるメモリ位置に対して、即時フェッチ・オペレーションを開始する。こうしたフェッチは、後にラインがそのノードのノード・ディレクトリ24内に存在することが見いだされる場合、またはシステム内の任意の他のキャッシュ内で変更された場合、取り消される。これは本発明のフィーチャを使用するように適合されるアプリケーションのプログラミングにとって、局所的に接続されるメモリへの低待ち時間且つ高帯域幅アクセスを可能にする。
【0086】
前述のメモリ・インタリーブ技法の代替アプローチは、キャッシュ・ラインよりも小さなインタリーブ・サイズを使用し、そのためキャッシュ・ラインが複数のメモリ・インタフェースに渡って広がる。複数のメモリ・インタフェース及びデータ・バス20を並列に使用することにより、ラインがフェッチされ、ノード・キャッシュ21に転送される。これは個々のフェッチに対して、より高い帯域幅性能を提供する。
【0087】
データがノード・ディレクトリ24内において、別のプロセッサにより排他に保持されているが、変更されていないことが見い出される場合(排他CP IDビットが要求元CPに一致しない)、最初にデータをL1キャッシュ2からノード・キャッシュ21にコピーし戻す(コピー・バック)ことなく、ノード・キャッシュ21から直接データの有効なコピーをフェッチすることが可能である。しかしながら、好適な実施例では、オペレーション・シーケンスにおいて後に潜在的に発生し得るストア・ミスに関わる問題を回避するために、L1キャッシュ2からノード・キャッシュ21へのこうしたフェッチが、それにも関わらず実行される。
【0088】
要求ラインがそのノードのノード・ディレクトリ24内に存在し、有効であると見いだされない場合、及び要求データが要求元プロセッサ・チップ7に局所的に接続されるDRAM5内に存在しない場合、及び他のノードがシステム内に存在しない場合、フェッチ・コマンドが適切なアドレス/コマンド・バス25を介して、そのノード上の適切なメモリ制御装置4に送信され、メモリ・アクセスが開始する。データがメモリDRAM5から返却されるとき、それはデータ・バス20を介して、スイッチ/キャッシュ・チップ28に転送される。そこで、制御チップ27の指示に従い、データがノード・キャッシュ21にロードされ、ノード・ディレクトリ24が更新され、データが電子スイッチ22及び適切なデータ・バス20を介して、要求元プロセッサに転送される。システム内に他のノードが存在する場合、それらは問い合わされなければならない。そのオペレーションの詳細論議については後述する。
【0089】
図4は、4つのノードを大規模なキャッシュ・コヒーレンス・マルチプロセッサ・コンピュータ構成に一緒に相互接続する好適な方法を示す。図4のマルチノード構成は、追加のチップ・タイプを使用することなく、図3の単一ノード・コンピュータ構造を構築するために使用されるのと同一のチップ・タイプにより構築され、メモリ部分5及びI/O部分12は、全てのノードに追加されるプロセッサの数に比例してスケーリングされる。4つのノード41は図4では、ノードを相互接続する双方向バス31により相互接続される。各バス31は16バイト・データ・バス32、及びフェッチ、ストア、及び相互問い合わせオペレーションのためのアドレスを伝搬する"アドレス/コマンド"・バス30を含む。コマンド・タグがオペレーション・タイプを指定し、応答が相互問い合わせまたは他のディレクトリ探索コマンドを受信するノードから提供される。
【0090】
ノード内のメモリ5は、割当てられた主記憶アドレス範囲にもとづき、チップ7内のメモリ・インタフェース間で区分化され、システム内の全てのプロセッサにより、大域的にアドレス指定可能である。I/Oアドレス範囲は、全てのプロセッサ・チップ7内の主記憶アドレス範囲と重複しないように割当てられ、これらのI/O範囲を通じて全てのI/O装置がシステム内の全てのプロセッサによりアクセスされ得る。
【0091】
図4の各ノード41は、同一ノード内のCP1のL1キャッシュ2内にキャッシュされる全てのラインを包含するノード・ディレクトリ24を含む。しかしながら、任意のノード内のL1キャッシュ及びノード・キャッシュは、コンピュータ・システム内の任意のノード内のメモリ5からフェッチされるデータをアクセス及びキャッシュできる。キャッシュ・ラインは複数のノード・ディレクトリ24内に、共用(読出し専用)状態で同時に存在できる。従来のMESIプロトコルによれば、ラインは単一のノード・ディレクトリ24内でのみ、排他状態または変更状態で存在できる。
【0092】
図4のマルチノード・コンピュータ・システムでは、メモリ要求を開始するCPを含む任意のノードが、要求元ノードと呼ばれる。アクセスされるデータを有するメモリ5を含むノード41は、その要求のホーム・ノードと呼ばれ、そのデータのコヒーレンスを維持する責任を担う。排他状態のラインを現在キャッシュしているノード41は、そのデータの保持ノード(holding node)と呼ばれる。
【0093】
複数のノード・ディレクトリ24のいずれかにおいて、データ・ラインの状態が変更されるとき、2つの同時要求が互いに競合しないように保証するために、"直列化プロセス"が使用され、コンピュータ・システムの記憶装置内のデータの一貫したビューが、全てのノード内の全てのCP1により観察されるように維持する。一般にこれは、ラインの1つ以上のコピーが無効化されなければならないときに常時実行され、あるプロセッサが例えばデータ・ラインへの書込みなど、排他アクセスを必要とするときに発生する。別のこうした状況は、ラインが排他から共用に変更されなければならないときに発生し、複数のプロセッサにそのラインへの共用アクセスを許可し、ラインの複数のコピーを共用状態で使用することを許可する。"直列化プロセス"は、全てのこうした要求を要求アドレスのホーム・ノードに送信することにより達成される。ホーム・ノード41内のノード制御論理23は、各ノード内に実装される優先機構にもとづき定義された順序に従い、こうした要求の各々を処理する。
【0094】
フェッチがノード・ディレクトリ24内でミスし、要求元ノードがホーム・ノードの場合、ノード制御23は図3に関連して述べたように、即時そのメモリ位置に対してフェッチ・オペレーションを開始する。同時にノード制御23はフェッチ・コマンドのアドレスを、ノード間アドレス/コマンド・バス30を介して、他のノード上のノード制御23に同報する。ノード制御23の各々は、それらのノード・ディレクトリ24内でこのアドレスを探索し、そのステータスにより、ノード間アドレス/コマンド・バス30を介して、要求元ノードのノード制御23に応答する。使用される直接ノード相互接続技法のために、このオペレーションはメモリ・アクセスよりも大変高速である。他のノード制御23の1つが、ラインがそのノード・ディレクトリ24内で排他状態であると応答する場合、要求元ノード上のノード制御23が、メモリ要求を取り消す信号を適切なアドレス/コマンド・バス20を介して送信し、ラインが保持ノード・キャッシュ21から電子スイッチ22及びノード間データ・バス30を介して、要求元ノード・キャッシュ21にフェッチされる。全てのノード・ディレクトリ24は包含的であるので、L1ディレクトリ3内の排他または変更状態のデータは、その情報をそのノード・ディレクトリ24内に反映される。こうしたケースでは、データが図3に関連して述べた方法により、L1キャッシュ2内の実際のコピーからフェッチされ、その後、要求元ノードに転送される。オリジナル要求タイプが排他であった場合、要求データは排他状態で返却され、最初にそのラインを保持する任意の他のノード・ディレクトリ24またはL1ディレクトリ3は、その状態を無効に変更しなければならない。オリジナル要求タイプが共用または条件付き排他であった場合、それがシステム内のどこかに既にキャッシュされていると判明した場合、要求データが共用状態で返却され、データを排他または変更状態で保持する任意の他のノード・ディレクトリ24またはL1ディレクトリ3が、その状態を共用に変更しなければならない。複数のノード・ディレクトリ24に渡って共用されるために、変更キャシュ・ラインが共用状態に変更される場合、それは一般にオペレーションの一部として、ホーム・メモリ5にストアバックされる(従って"変更−共用"状態の必要性を回避する)。データが任意の他のディレクトリ(3または24)内で、排他または変更と見い出されない場合、図3に関連して述べたように、オリジナル・メモリ要求が完了し、データを提供することを許可される。返却ラインの最終状態(排他または共用)は、要求タイプ、並びに図3で述べたように、ラインがシステム内の任意の他のキャッシュ内に存在すると見い出されたか否かの関数である。
【0095】
フェッチがノード・ディレクトリ24内でミスし、要求元ノードがホーム・ノードでない場合、ノード制御23は適切なノード間アドレス/コマンド・バス30を介して、処理のための要求をホーム・ノード上のノード制御23に送信する。ホーム・ノードのノード制御23内の優先機構による処理が選択される場合、ノード制御23はそのノード・ディレクトリ24を探索し、ラインが存在するか否かを確認する。ヒットが検出される場合、ラインがホーム・ノードのノード・キャッシュ21から、電子スイッチ22及び適切なノード間データ・バス32を介して、要求元ノードのノード・キャッシュ21に返却され、必要とされるキャッシュ状態の変更が、ホーム・ノードによりノード間アドレス/コマンド・バス30を介して、全ての適切なノード上のノード制御23に同報される。ノード・ディレクトリ24がラインが排他状態であったと示した場合、ラインは最初に、図3で述べた方法により、排他CP IDビットにより示されるL1キャッシュ1からフェッチされ、その後、要求元ノードのノード・キャッシュ21に転送される。ラインがノード・ディレクトリ24内に存在しなかった場合、メモリ・フェッチがノード制御23により、適切なアドレス/コマンド・バス25を介して、ホーム・ノード内の適切なメモリ制御装置4に発行される。
【0096】
ホーム・ノード上でのメモリ・フェッチと並列に、ホーム・ノードのノード制御23がフェッチ・コマンドの要求アドレスを、ノード間アドレス/コマンド・バス30を介して、(要求元ノードを除く)全ての他のノード上のノード制御23に同報する。他のノード上のノード制御23はそれらのノード・ディレクトリ24を探索して、それらがラインを排他状態または共用状態で保持するか否かを確認する。ラインを排他状態で保持する場合、前述の方法により、ラインがそのノード・キャッシュ21から適切な電子スイッチ22及びノード間データ・バス32を介して、ホーム・ノードにフェッチされる。ホーム・ノードは適切なノード間データ・バス32を介して、ラインを要求元ノードに転送する。
【0097】
他のノード・ディレクトリ24がラインを排他状態で保持している場合、メモリ・フェッチがホーム・ノード上で完了することを許可され、データ・ラインが適切なノード内データ・バス20を介して、ホーム・ノード電子スイッチ21に転送され、次に適切なノード間データ・バス32を介して、要求元ノードに転送される。
【0098】
オリジナル要求タイプが排他であった場合、要求データが排他状態で返却される。オリジナル要求タイプが条件付き排他であり、データがシステム内の任意の他のキャッシュ内に存在すると見いだされなかった場合、要求データが排他状態で返却される。他のケースでは、要求データが共用状態で返却される。
【0099】
データが要求元プロセッサに排他状態で返却される場合、ホーム・ノードのノード制御23はアドレス/コマンド・バス25を介して、要求データに対する無効化コマンドを他のノードに適宜発行する。要求データが共用状態で返却される場合、そのデータを排他状態または変更状態で保持する任意の他のノード・ディレクトリ24及び任意のL1ディレクトリ3が、その状態を共用に変更する。更に、ラインの共用コピーがホーム・ノードのノード・キャッシュ21内に配置され得る。
【0100】
変更キャッシュ・ラインが複数ノード・ディレクトリ24に渡って共用されるために、共用状態に変更される場合、それは一般にオペレーションの一部として、ホーム・メモリ5にストアバックされる。
【0101】
L1ディレクトリ3内の現在共用状態のラインへのストアは、キャッシュ・ミスとして扱われ、要求データ・ラインの排他所有権を要求するフェッチ・コマンドが、アドレス/コマンド・バス25を介して、ノード制御23に送信される。性能改善のために、これは任意的に、業界において既知の方法(例えばGannonらによる米国特許第5265232号を参照)を用いることにより、データを返却することなく、排他所有権を返却する特殊な要求として扱われ得る。
【0102】
I/O装置に対応するアドレス範囲は、主記憶装置のアドレス範囲と重複せず、一部のまたは全てのプロセッサ・チップ7に渡って区分化される。全てのI/O装置は、システム内の全てのプロセッサによりアドレス指定可能である。プロセッサ7からI/O装置へのコマンドは、局所的に接続されるI/O装置に対しては、I/Oアドレス/コマンド・バス11(図1)を介して、I/O装置に直接送信される。他のI/O装置のためのコマンドは、ノード内アドレス/コマンド・バス25、ノード間アドレス/コマンド・バス30、及び制御チップ27を介して、適切なI/O制御ポート12に経路指定される。I/O装置からのDMAコマンドもまた、アドレス/コマンド・バス25及び30及び制御チップ27を介して経路指定される。同様に、I/O装置へのまたはそれらからのデータ転送は、メモリ・オペレーションの場合同様、ノード内及びノード間データ・バス20及び32、並びにスイッチ部分22を介して適切なI/O制御12に経路指定される。I/Oオペレーションはキャッシュ内のデータをアクセスできるが、新たなデータをキャッシュ内にもたらすことはない。
【0103】
複数ノードの代替相互接続(図5):
図5は、4ノード・コンピュータ・システムの代替相互接続技法を示し、これはノード・バス32に接続される共用マルチドロップ・データ・バス及びアドレス/コマンド・バス33を利用して、業界において周知の調停技術を使用する。これらは図4のノード・バス31により提供される直接2地点間接続を置換する。図5の4つのノード41は、図4の4つのノード41と同様に構成されるが、ノードはマルチドロップ・タイプの異なるタイプのノード間バス33により接続される。単一マルチドロップ・バスが、図5のシステムを実現するために使用され得るが、図5では2つのバスが示され、アドレス範囲にもとづきインタリーブされて動作し、帯域幅を改善する。図4に関連して前述したオペレーション・シーケンスは、図4の構成において使用され得るが、図4の実施例はノード間フェッチのために、スヌープ同報を単純化及び結合する潜在性を有する。
【0104】
図4で述べた方法により実現される直列化機構のために、全てのノード・ミス・オペレーションが、要求アドレスに対するホーム・ノードの制御チップ27内のコマンドの処理に関係する。この構成は、現在別のノード上で使用中の所与のノードからの全てのアドレスに関して、制御チップ27により管理されるディレクトリ・テーブルの実現に大いに適する。こうしたディレクトリ・テーブルは、ノード間での不要な相互問い合わせ探索を回避するために使用され得る。
【0105】
用語"ノード"は、従来技術では多くの多様な無関係の意味を有して参照される。従来技術において、用語"ノード"は、一般的に通信ネットワークにおいて使用される。ネットワークは通信リンクにより接続される複数の独立の"ノード"を含み、通信リンクが"ノード"間でデータのパケットを送信し、各ノードは独自のオペレーティング・システムを有する独立のハードウェア・コンピュータ・システムであり、各ノードはしばしば、"中央電子コンプレックス"または"中央処理コンプレックス"と呼ばれる。用語"ノード"の異なる意味は、従来一般にソフトウェア技術において見いだされ、そこでは"ノード"はしばしば、マルチノード・ソフトウェア構成内の1つ以上の他のノードを突き止める、1つ以上のアドレス・ポインタを含むソフトウェア構造体を表すために使用される。更に、従来技術において、用語"ノード"の他の意味が存在する。従って、用語"ノード"が、それが使用されている仕様内で示される意味だけを有するべきことを認識することが重要である。これらの理由から、用語"ノード"の意味を従来技術の文献から本明細書に転用するには、多大な注意が必要である。
【0106】
本明細書では、用語"ノード"は単一コンピュータ・システムのセクションを表し、これは"ノード間"(すなわちセクション間)バスにより接続される1つ以上の"ノード"(すなわち1つ以上のセクション)から構成される。最初に単一のセクションから構成される場合、1つ以上の追加のセクションが後に追加され、セクション間バスにより初期のセクションに接続されて、コンピュータ・システムの容量を拡大する。追加のセクション("ノード")の追加は、単一コンピュータ・システムの特性を変更せず、全ての"ノード"(すなわちセクション)は、単一のオペレーティング・システムにより管理され得る。すなわち、本明細書では、複数ノード・システム内の各"ノード"は、単一コンピュータ・システム内の"セクション"の1つである。この単一コンピュータ・システム内において、複数"セクション"の各々は、複数の"システム・セル"から構成され、各セルはプロセッサ・チップ、及びプロセッサ・チップにローカル・バスにより接続されるローカル・メモリ(例えばDRAM)から構成される。各プロセッサ・チップは少なくとも1つの中央プロセッサを含み、複数の中央プロセッサを含み得る。コンピュータ・システムの任意のセクション内の全てのまたは一部のシステム・セルは、I/Oインタフェースを含み得る。セルがI/Oインタフェースを含む場合、それはチップ上にI/Oプロセッサを提供することにより、またはチップ上の中央プロセッサに、(その中央処理機能に加え)I/Oインタフェースを提供するためのI/O機能を実行させることによりサポートされる。
【0107】
まとめとして、本発明の構成に関して以下の事項を開示する。
【0108】
(1)1つ以上のノードから成るスケーラブル・コンピュータ・システムであって、任意のノードのサイズ及びシステム内のノードの数が、コンピュータ・システムのサイズ及び性能を変更するために容易に変更可能であり、コンピュータ・システム内の各ノードが、
専用キャッシュ(L1キャッシュ)を有する少なくとも1つの中央プロセッサと、メモリ制御装置とを含み、それぞれが同一の製造仕様を有して、容易な複製をサポートする、各ノード内の複数のプロセッサ半導体チップ(プロセッサ・チップ)と、
コンピュータ・システム内の全てのプロセッサ・チップ上の全ての中央プロセッサによりアクセス可能な、コンピュータ・システム内の共用メモリを提供する複数のRAM(ランダム・アクセス・メモリ)半導体チップであって、共用メモリがコンピュータ・システム内のRAM全体から成り、コンピュータ・システム内の異なるプロセッサ・チップ上のメモリ制御装置に接続されるRAMの複数のサブセット(RAMセクション)に分割される、複数のRAMチップと、
各々がそれぞれのRAMセクションと、それぞれのプロセッサ・チップ上のそれぞれのメモリ制御装置との間に局所的に接続され、それぞれのプロセッサ・チップ上の各プロセッサに対して、局所的に接続されるRAMセクションとの間の直接アクセスを提供する複数のローカル・メモリ・バスと、
同一ノード内の各プロセッサ・チップに接続されて、同一ノード内の任意のプロセッサ・チップによりアクセスされる共用メモリ内のデータを記憶する、各ノード内のノード・キャッシュと、
同一ノード内のノード・キャッシュと、同一ノード内の各プロセッサ・チップとに接続される、各ノード内のノード・ディレクトリと、
各プロセッサ・チップを同一ノード内のノード・キャッシュ及びノード・ディレクトリに接続して、任意のプロセッサがそのプロセッサを含むプロセッサ・チップに直結されないRAMセクションをアクセスするとき、ノード内の任意のプロセッサが、ノードの共用メモリの任意のRAMセクション上のデータをアクセスすることを可能にする、各ノード内のノード内バス機構と
を含む、スケーラブル・コンピュータ・システム。
(2)ノード内の中央プロセッサによりアクセスされる、またはRAMに記憶されるデータを記憶する各ノードのノード・キャッシュを構成する、1つ以上の複製可能なノード・キャッシュ半導体チップ(ノード・キャッシュ・チップ)と、
ノード・キャッシュ内のプロセッサ要求データを突き止める同一ノードのノード・ディレクトリに接続される、ノード・キャッシュの各ノード・キャッシュ・チップと、
ノード・ディレクトリ及び各ノード・キャッシュ・チップを、同一ノード内の各プロセッサ・チップに接続する電子スイッチと
を含む、前記(1)記載のスケーラブル・コンピュータ・システム。
(3)各プロセッサ・チップに接続されるRAMセクションに記憶されるデータであって、ノード・キャッシュまたはノード・ディレクトリへのアクセスと重複して、プロセッサ・チップ上の任意のプロセッサにより迅速にアクセス及び使用されて、データの変更コピーがシステム内のどこかに存在するか否かを判断する、前記(2)記載のスケーラブル・コンピュータ・システム。
(4)データのプロセッサ要求アドレスを接続ノード・ディレクトリに提供することにより、データを接続ノード・キャッシュから要求する、各プロセッサ・チップ内の制御であって、データが要求元プロセッサ・チップに接続されるRAM内で短路データとして入手可能でない場合、接続ノード・キャッシュからのデータのフェッチを制御する、前記(3)記載のスケーラブル・コンピュータ・システム。
(5)データが現在接続ノード・キャッシュに含まれている場合、接続ノード・キャッシュからデータをフェッチする、ノード・ディレクトリのノード制御と、
データが接続ノード・キャッシュに含まれない場合、データに対するノード要求を、プロセッサ要求アドレスを有するRAMセクションに接続されるプロセッサ・チップに提供することにより応答する、ノード・ディレクトリのノード・ミス制御であって、ノード要求プロセッサ・チップが要求アドレスのデータのコピーをノード・キャッシュに送信し、そのデータが次にノード・キャッシュにより、ノード・キャッシュ内でミスしたプロセッサ要求アドレスを提供するプロセッサに送信される、前記(4)記載のスケーラブル・コンピュータ・システム。
(6)ノード・キャッシュを構成する複数の同一のノード・キャッシュ・チップを含み、各ノード・キャッシュ・チップがノード・キャッシュに記憶される各データ・ラインの一部を記憶し、各データ・ラインが共用メモリ内の単一のアクセスにより決定されるデータの単位である、前記(5)記載のスケーラブル・コンピュータ・システム。
(7)ノード内電子スイッチがノード・ディレクトリと共に提供されて、ノード・ディレクトリを同一ノード内の各プロセッサ・チップに接続し、コンピュータ・システム内の任意のプロセッサにより要求される、任意のローカルRAMセクション(ノード・ディレクトリを含むノード内のRAM)に記憶されるデータのデータ転送を制御する、前記(6)記載のスケーラブル・コンピュータ・システム。
(8)ノード内電子スイッチが各ノード・キャッシュ・チップと共に提供されて、各ノード・キャッシュ・チップを同一ノード内の各プロセッサ・チップに接続し、接続されるノード・ディレクトリの制御に従い、コンピュータ・システム内の任意のプロセッサにより要求されるデータを転送する、前記(7)記載のスケーラブル・コンピュータ・システム。
(9)ノード内電子スイッチがノード・ディレクトリと共に提供され、ノード・ディレクトリを含む同一チップ上に形成される、前記(8)記載のスケーラブル・コンピュータ・システム。
(10)ノード内電子スイッチが各ノード・キャッシュ・チップと共に提供され、ノード・キャッシュ・チップを含む同一チップ上に形成される、前記(8)記載のスケーラブル・コンピュータ・システム。
(11)コンピュータ・システム内に提供される複数のノードと、
各ノード内のノード・キャッシュ及びノード・ディレクトリを、コンピュータ・システム内の他の各ノード内のノード・キャッシュ及びノード・ディレクトリに接続する1つ以上のノード間バスと
を含む、前記(10)記載のスケーラブル・コンピュータ・システム。
(12)ノード間電子スイッチがノード・ディレクトリと共に提供され、ノード・ディレクトリをコンピュータ・システム内の他の各ノード内のノード・ディレクトリに接続する、前記(11)記載のスケーラブル・コンピュータ・システム。
(13)ノード間電子スイッチが各ノード・キャッシュ・チップと共に提供され、ノード・キャッシュ・チップを、コンピュータ・システム内の他の各ノードのノード・キャッシュ内の対応するノード・キャッシュ・チップに接続する、前記(12)記載のスケーラブル・コンピュータ・システム。
(14)(プロセッサ・チップに接続される)各RAMセクションが、データ・ラインを記憶可能なRAMライン単位に分割され、データ・ラインが接続プロセッサ・チップ上のメモリ制御装置セクションにより、RAMアドレスを用いて検索され、RAMセクション内のアドレスがそれぞれのRAMセクション内で固有であり、システム共用メモリ内の他のRAMセクションのRAMアドレスと一意であることを要求されず、
コンピュータ・システム内の全てのRAMセクションが、システム共用メモリを提供するように制御される、前記(13)記載のスケーラブル・コンピュータ・システム。
(15)固有の実アドレスの範囲が、システム共用メモリ内の異なるバイト位置に割当てられ、実アドレスが共用メモリ内のバイト・アドレスであり、コンピュータ・システム内のプロセッサ・チップ内のプロセッサ上で実行するプログラムにより使用可能であって、コンピュータ・システム内の任意のチップ上の任意のプロセッサが、プログラム定義アドレスにより、共用メモリ内に配置されるデータ及びプログラムをアクセスすることを可能にし、
各プロセッサ・チップ内に提供されるアドレス変換制御が、共用メモリのプログラム定義アドレスをRAMアドレスに変換し、コンピュータ・システム内の任意のノードの任意のRAMセクション内の要求RAMアドレスを突き止める、前記(14)記載のスケーラブル・コンピュータ・システム。
(16)各それぞれのRAMセクション上の各RAMアドレスが、コンピュータ・システム内の固有のプロセッサ・チップ識別子(ID)を追加されることにより、システム共用メモリ内で固有にされ、各共用メモリ・アドレスが少なくともプロセッサ・チップ識別子(ID)及びRAMアドレスを含む、前記(15)記載のスケーラブル・コンピュータ・システム。
(17)固有のプロセッサ・チップIDが、プロセッサ・チップを含むノードのノード・アドレスを含み、各ノードがコンピュータ・システム内で固有のノード・アドレスを有し、追加されるチップIDがそのノード内でのみ固有であることを要求される、前記(16)記載のスケーラブル・コンピュータ・システム。
(18)各プロセッサ・チップ上のプロセッサが、特定のコンピュータ・アーキテクチャに従い構築されて、そのアーキテクチャ用に作成されたプログラムを実行し、アドレス変換制御が実行プログラム内のアドレスを要求RAMアドレスに変換して、コンピュータ・システム内の任意の要求RAMセクション内の要求データをアクセスする、前記(17)記載のスケーラブル・コンピュータ・システム。
(19)アドレス変換制御によるRAMアドレスへの変換後に、プロセッサ・チップの外部のプログラム・アドレスを伝達する、各プロセッサ・チップ上のアドレス通信制御を含む、前記(18)記載のスケーラブル・コンピュータ・システム。
(20)各RAMセクション内のメモリ実アドレス空間が、複数のアドレス空間に分割され、それらが
コンピュータ・システム内の任意のプロセッサ・チップ上で実行されるプログラムによりアクセス可能な、システム共用メモリの一部として提供される第1のメモリ空間と、
接続されるプロセッサ・チップ上のプロセッサにより実行されるマイクロコードによってのみアクセス可能で、コンピュータ・システム内の任意のプロセッサ・チップ上で実行するプログラムによってはアクセス可能でない、ハードウェア・メモリの第2のメモリ空間と
を含む、前記(19)記載のスケーラブル・コンピュータ・システム。
(21)各RAMセクションの第1及び第2のメモリ空間が、RAMアドレスのそれぞれの範囲を含み、
(共用メモリの一部である)第1のメモリ空間内のRAMアドレスだけが、アドレス変換制御によりサポートされて、プログラム・アドレスからRAMアドレスに変換される、前記(20)記載のスケーラブル・コンピュータ・システム。
(22)アドレス変換制御が、各RAMセクションの第1のメモリ空間内のRAMアドレスを、固有プログラム・バイト・アドレスの範囲に割当て、プログラム・アドレスが、コンピュータ・システム内の任意のプロセッサ・チップ内のプロセッサ内で実行するプログラムにより生成されるとき、RAMセクション内の要求データ位置のアクセスを可能にする、前記(21)記載のスケーラブル・コンピュータ・システム。
(23)任意のプロセッサ・チップがシステム共用メモリをアクセスできる複数のプロセッサを含むとき、プロセッサ・チップIDとは別の固有のプロセッサ識別子(ID)が、各プロセッサ・チップ内の各プロセッサに割当てられ、各システム固有のRAMアドレスが、プロセッサID、プロセッサ・チップID、及びそれぞれのRAMセクションのRAMアドレスを含み、RAMアドレスがそのRAMセクション内でのみ固有である必要がある、前記(22)記載のスケーラブル・コンピュータ・システム。
(24)各ノード・ディレクトリが、所有ノード・ディレクトリと同一のノード内のプロセッサ・チップに接続されるRAMセクションを所有し、
各所有ノード・ディレクトリが、それ自身のRAMセクション内でアクセスされる全てのRAMアドレスを記憶し、所有ノード・ディレクトリへの送信前に、各RAMアドレスがプログラム・アドレスからRAMアドレスに変換され、各要求アドレスが要求元プロセッサを識別し、要求アドレスを含むRAMセクションを識別し、
(所有ノード・ディレクトリに接続される)ノード・キャッシュが、同一ノード内の任意のRAMセクション内でアクセスされるデータのコピーを受信及び記憶し、アクセス・データがRAMセクション内に留まり、ノード・キャッシュに記憶されるデータのコピーをバックさせる、前記(23)記載のスケーラブル・コンピュータ・システム。
(25)コンピュータ・システムが2つ以上のノードを有する場合、所有ノード・ディレクトリが要求アドレスを、同一ノード内のローカル・プロセッサから、及びコンピュータ・システム内のリモート・ノード・ディレクトリから受信し、各要求アドレスが要求元プロセッサ、及び要求アドレスを含むRAMセクションを識別し、
各所有ノード・ディレクトリが各受信される要求アドレスを探索し、それが所有ノード・ディレクトリ内の有効エントリ内で見い出されない場合、任意的に要求アドレスを記憶し、
(所有ノード・ディレクトリに接続される)ノード・キャッシュが、識別されるRAMセクションに接続されるプロセッサ・チップのメモリ制御装置によりフェッチされるデータ・ラインを受信して、任意的に記憶する、前記(24)記載のスケーラブル・コンピュータ・システム。
(26)コンピュータ・システムが2つ以上のノードを含む場合、
要求アドレスが要求RAMセクションに接続されるプロセッサ・チップにより提供されなかったとき、所有ノード・ディレクトリが要求アドレスを、識別されたRAMセクションに接続されるプロセッサ・チップに転送し、
接続されるプロセッサ・チップが要求アドレスを用いて、識別されたRAMセクション内のアドレス指定データ・ラインをアクセスし、要求アドレスが識別されたRAMセクションに接続されるプロセッサ・チップにより提供されなかったとき、プロセッサ・チップがデータ・ラインを所有ノード・キャッシュに送信し、
要求アドレスが別のノード内の接続リモート・ノード・ディレクトリから受信されたとき、所有ノード・ディレクトリが要求データ・ラインのコピーをリモート・ノード・キャッシュに転送し、リモート・ノード・ディレクトリが要求データ・ラインのコピーを、その接続ノード・キャッシュから要求元リモート・プロセッサに転送する、前記(25)記載のスケーラブル・コンピュータ・システム。
(27)各ノード・ディレクトリ内のコヒーレンス制御が、各有効ノード・ディレクトリ・エントリ内の制御情報を用いて、1つ以上のL1キャッシュ及びノード・キャッシュにコピーされ、コンピュータ・システム内のプロセッサにより変更されたかもしれない要求データ・ラインの複数のコピーに渡り、コヒーレンスを維持し、制御情報が記憶要求元プロセッサID、及び要求RAMアドレスを含むRAMセクションの記憶IDを含む、前記(26)記載のスケーラブル・コンピュータ・システム。
(28)要求RAMデータ・ラインに対し、要求元プロセッサに一時的に与えられるアクセス権限を示す権限標識が、コンピュータ・システム内の各ノード・ディレクトリ内の各有効ノード・ディレクトリ・エントリ内に記憶され、アクセス権限が読出し専用及びストア権限を含む、前記(27)記載のスケーラブル・コンピュータ・システム。
(29)コンピュータ・システム内の他の各ノード・ディレクトリと通信する、各ノード・ディレクトリのコヒーレンス通信制御が、同一のRAMデータ・ラインをアクセスして、システム共用メモリ内の全てのデータのコヒーレンスを維持する、前記(28)記載のスケーラブル・コンピュータ・システム。
(30)各有効データ・ラインが、コンピュータ・システムの1つ以上の専用プロセッサ・キャッシュ及びノード・キャッシュに同時に記憶可能であり、同一のデータ・ラインが、要求RAMアドレスの接続ノード・ディレクトリ内の対応するノード・ディレクトリ・エントリ内で識別されるRAMセクションにバックされ、
ノード・ディレクトリ、ノード・キャッシュ及び専用プロセッサ・キャッシュ内のストアバック制御が、データ・ラインの最新の変更バージョンを、識別されたRAMセクション内の要求アドレスに後に記憶する、前記(29)記載のスケーラブル・コンピュータ・システム。
(31)ストアバック制御及びコヒーレンス通信制御が、所有ノード・ディレクトリのノード内のノード内バスと、ノード間バスを用いて、要求元プロセッサIDを有する各リモート・ノード・ディレクトリに接続する、前記(30)記載のスケーラブル・コンピュータ・システム。
(32)各所有ノード・ディレクトリのコヒーレンス通信制御が、コヒーレンス信号を所有RAMセクションの識別子を含む各非所有(リモート)ノード・ディレクトリに伝達することにより、コンピュータ・システム全体に渡って、所有ノード・ディレクトリにより所有される全てのRAMセクションに記憶される全てのデータ・ラインに対して、全てのコヒーレンス・オペレーションを調整する、前記(31)記載のスケーラブル・コンピュータ・システム。
(33)各ノード・ディレクトリのコヒーレンス施行制御が、ノード・ディレクトリに接続されるノード・キャッシュに記憶される所有データ及び非所有データに対して異なって作用し、所有データはノード・ディレクトリにより所有されるRAMによりバックされ、非所有データはノード・ディレクトリにより所有されるRAMによりバックされず、リモート・ノード内のRAMによりバックされ、
共用システム・メモリ内の所有データのコヒーレンスを維持するために、コピー無効化が要求される場合、ノード・ディレクトリのコヒーレンス施行制御において、無効制御が所有データに対して作用し、コンピュータ・システム内の全てのノード内の所有データのコピーの無効化を調整し、
所有データがコンピュータ・システム内の任意のプロセッサにより変更された後、ノード・ディレクトリのコヒーレンス施行制御において、ライトバック制御が所有データに対して作用し、所有データの補助RAMセクションへのライトバックを調整する、前記(32)記載のスケーラブル・コンピュータ・システム。
(34)非所有ノード・ディレクトリの無効化制御が、接続ノード・キャッシュ内の、及びノード内の任意の専用プロセッサ・キャッシュ内の非所有データのコピーだけを無効化するように作用する、前記(33)記載のスケーラブル・コンピュータ・システム。
(35)各ノード・ディレクトリへのコヒーレンス信号制御が、所有ノード・ディレクトリに、非所有ノード・ディレクトリのノード内の非所有データのコピーに対する権限変更要求を知らせ、所有ノード・ディレクトリがコンピュータ・システムの全てのノード内のデータの権限変更を調整することを可能にする、前記(34)記載のスケーラブル・コンピュータ・システム。
(36)1つ以上のシステム・セクションを含み、
各システム・セクションが複数のシステム・セル、セクション・キャッシュ及びディレクトリ、及びセルをセクション・キャッシュ及びディレクトリに接続する電子スイッチ及びセクション内バスを含み、
各システム・セルがプロセッサ半導体チップ(プロセッサ・チップ)、ローカル・メモリ、及びローカル・メモリをプロセッサ・チップに接続するローカル・バスを含み、ローカル・メモリが、システムの任意のセル内に配置される中央プロセッサにより共用可能なデータ及び命令を記憶するシステム・メモリのサブセットであり、
各プロセッサ・チップが少なくとも1つの中央プロセッサ、プロセッサ・キャッシュ、及びサブセット・メモリ制御装置インタフェースを含み、
セクション内バスが各プロセッサ・チップをセクション内の電子スイッチを介して、セクション・キャッシュ及びディレクトリに接続し、
電子スイッチが、後にセクションに追加されるセルとセクション・キャッシュ及びディレクトリとの間に、将来バスを接続するスイッチング能力を有し、
コヒーレンス制御がディレクトリ内のエントリを提供されて、システム内のセル間で通信されるデータ及び命令のコヒーレンスを制御する、スケーラブル・コンピュータ・システム。
(37)セクション内の任意の中央プロセッサにより、システム内の任意のセルからアクセスされるデータを記憶するセクション・キャッシュのサブセットを含む、複数の複製可能なキャッシュ半導体チップと、
複数の複製可能なキャッシュ半導体チップ内のエントリに関連付けられるアクセス及びコヒーレンス情報を記憶するセクション・ディレクトリのサブセットを含む、複数の複製可能なディレクトリ半導体チップと
を含む、前記(36)記載のスケーラブル・コンピュータ・システム。
(38)各プロセッサ・チップのサブセット制御装置インタフェースが、セクション内バスの1つの一端に接続され、セクション内バスの他端がセクション内の1つ以上の電子スイッチに接続されて、セクション・キャッシュ及びセクション・ディレクトリへの接続を形成する、前記(37)記載のスケーラブル・コンピュータ・システム。
(39)データが要求元プロセッサ・チップのセル内のローカル・サブセット・メモリ内で入手可能でないとき、各プロセッサ・チップ内の専用キャッシュ・ミス制御が、データの要求を生成し、要求データのプロセッサ要求アドレスを、接続されるセクション・ディレクトリに送信することにより、データの要求を接続されるセクション内バスを介してセクション・キャッシュに送信し、セクション・キャッシュからのデータのフェッチを制御する、前記(38)記載のスケーラブル・コンピュータ・システム。
(40)プロセッサ・チップ上のサブセット・メモリ制御装置インタフェースが、チップ上の中央プロセッサのI/O接続機能として提供され、中央プロセッサのI/O接続機能がローカル・メモリ・バス及びセクション内バスに接続されて、コマンド及びメモリ要求を、チップを含むセクション内のセクション・ディレクトリとの間で転送し、コマンドまたは要求により要求されるとき、セクション内バスが、チップを含むセクション内のセクション・キャッシュとの間でデータを転送する、前記(36)記載のスケーラブル・コンピュータ・システム。
(41)チップ上のサブセット・メモリ制御装置インタフェースが、ローカル・メモリ・バスとチップ上の各中央プロセッサとの間に接続されるチップ上の独立の制御装置プロセッサにより提供され、制御装置プロセッサが更にセクション内バスに接続されて、コマンド、メモリ要求及びデータを、チップを含むセクション内のセクション・ディレクトリ及びセクション・キャッシュとの間で転送する、前記(36)記載のスケーラブル・コンピュータ・システム。
(42)セクション間バスがシステム・セクションを、システム・セクションの複製である追加のシステム・セクションに接続し、セクション間バスが各システム・セクション内の電子スイッチで終端して、要求制御情報及びデータをシステム・セクション間で伝送し、複数システム・セクションを単一コンピュータ・システムに統合する、前記(39)記載のスケーラブル・コンピュータ・システム。
(43)1つ以上の非共用セクション間バス(非共用バス)が、システム・セクションをコンピュータ・システム内の追加のシステム・セクションに接続し、各追加のシステム・セクションがシステム・セクションの複製であり、各非共用バスが1対のシステム・セクションの各々内のセクション・ディレクトリで終端し、非共用バスにより接続されるコンピュータ・システム内のシステム・セクションの各々が、コマンド及びデータを、同一の非共用バスに接続される他のシステム・セクションとの間で送受信し、コンピュータ・システム内の全ての非共用バスが、それらの接続システム・セクションをコンピュータ・システムに統合して、任意のシステム・セクション内の任意のセル内の任意の中央プロセッサが、コンピュータ・システム内の任意のセクションの任意のセルに記憶されるデータをアクセスすることを可能にする、前記(39)記載のスケーラブル・コンピュータ・システム。
(44)共用セクション間バス(バス)がシステム・セクションを、コンピュータ・システム内の1つ以上の追加のシステム・セクションに接続し、各追加のシステム・セクションがシステム・セクションの複製であり、共用セクション間バスがバスに接続される各システム・セクション内の電子スイッチで終端し、システム・バスがコマンドを、バスに接続される任意のシステム・セクション内の任意のセル内の任意の中央プロセッサから、バスに接続される任意の他のシステム・セクション内の任意のセルに伝送し、中央プロセッサがバスに接続される任意のシステム・セクション内の任意のセルに記憶されるデータ及び命令をアクセスすることを可能にする、前記(39)記載のスケーラブル・コンピュータ・システム。
(45)プロセッサ・チップがチップ上のI/O接続ポイントによりサポートされるI/Oインタフェースを含み、I/O接続ポイントがチップ上のメモリ制御装置に接続されて、I/Oインタフェースをローカル・メモリ・バス及びノード内メモリ・バスに接続し、
I/Oデータが任意のプロセッサ・チップ上のI/Oインタフェースを用いて、I/O装置に及びI/O装置から提供され、I/Oデータがプロセッサ・アクセスの場合と同一のノード・コヒーレンス制御、バス機構、及びメモリ制御装置を用いて、適切なホーム・メモリ位置またはキャッシュにフェッチ/記憶される、前記(36)記載のスケーラブル・コンピュータ・システム。
(46)各システム・セルが、チップ上の中央プロセッサとは独立に、チップのI/Oインタフェースを提供し、同一チップ上のメモリ制御装置に接続されるI/Oプロセッサを含む、前記(45)記載のスケーラブル・コンピュータ・システム。
【図面の簡単な説明】
【図1】システムの各ノード内に複製されるプロセッサ機能の一部であるプロセッサ・チップ7の構成を示す。プロセッサ・チップ7は、プロセッサ回路論理から成る中央プロセッサ(CP)1を含み、L1キャッシュ2、関連L1ディレクトリ3、メモリ制御装置セクション4、及びCPをI/O装置に接続するI/Oインタフェースを提供する入出力(I/O)制御装置12と一緒に統合される。メモリ制御装置セクション4は、SIMM(シングル・インライン・メモリ・モジュール)5上のDRAMなどの、ランダム・アクセス電子メモリ・チップのセットに接続可能なメモリ・インタフェースを含む。オプションの標準リドライブ・チップ6がプロセッサ・チップ7とSIMM5との間に示され、高性能化のために信号を再駆動する。バス・インタフェース・ユニット13は、プロセッサ・チップ7と共通スイッチ/キャッシュ(図2の40)と間のバス機構をサポートする。
【図2】制御チップ27及び"M"個のスイッチ/キャッシュ・チップ28から成る共通スイッチ/キャッシュを示す。制御チップ27はキャッシュ及びスイッチの制御23、及びノード・ディレクトリ24を含む。制御23はノード・キャッシュ及び電子スイッチの動作の責任を担い、これらの資源に対する様々な要求をサービスする。制御23はまた、システム内の全てのCPによる全てのメモリ・アクセスに対して、データ・コヒーレンス及びデータ保全性を維持する責任を負う。CPはそのノードの任意のプロセッサ・チップ7に接続される共用メモリ・セクション内のデータをアクセスし得る。制御チップ27はアドレス/コマンド・バス25を介して、プロセッサ・チップ7と通信し、ノード間アドレス/コマンド・バス30を介して、他のノード上の制御チップと通信する。各スイッチ/キャッシュ・チップ28は、電子スイッチ部分22及びノード・キャッシュ部分21を含む。全ての電子セクション・スイッチ22及びノード・キャッシュ・セクション21は、ノード・ディレクトリ24及びノード・キャッシュ及びクロスバー・スイッチ制御23を含むノード制御チップ27への接続により、ノード内に一緒に統合される。電子スイッチ22は双方向データ・バス20を介して、プロセッサ・チップ7との間でデータを転送する。電子スイッチ22はまた、ノード間データ・バス32を介して、他のノードとの間でデータを転送する。ノード間アドレス/コマンド・バス及びデータ・バスは、以下の図面を簡素化するために、単一のエンティティ31に結合されて示される。
【図3】図1に示されるプロセッサ・チップ及びメモリ組み合わせ15をN個含むノードを示す。バス・インタフェース・ユニット13が双方向ノード内データ・バス20、すなわち双方向バス・セットの一端に接続され、各バスの他端は、電子セクション・スイッチ22を介して、異なるノード・セクション・チップ28に接続される。ノード内の任意のCP7が、ノードの任意のノード・キャッシュ・セクション内のオペランドをアクセスでき、ノードのノード・キャッシュ・ディレクトリが、システム内の全てのCPによるメモリ・アクセスに対して、データ・コヒーレンス及びデータ保全性を維持する。すなわち、全てのCPがそのノードの任意のCP7に接続される共用メモリ・セクション内のデータをアクセスし得る。
【図4】各々が図3に示されるように構成される4つのノードを有するコンピュータ・エンティティを示し、4xN個のCP、及び4個のノード・キャッシュから成る構成を有するコンピュータ・エンティティを提供する。図4では、ノードがノード間バス31により一緒に接続され、これは図2に示されるように、アドレス/制御バス30及びデータ・バス32を含む。各バスの端部は、図3のコンピュータ・エンティティ内の1ノードに接続される。I/Oインタフェース12及びそれらのバス部分10及び11(図1参照)が、図3の各プロセッサ・チップ7内に含まれるが、それらは配線の混乱を回避するために図4では示されていない。
【図5】4つのノード・コンピュータ・エンティティ(図4と同じ16個のプロセッサを有する)を相互接続するノード間バス機構の代替方法を示す。図5では異なるタイプのノード間バスを使用し、これは共用マルチドロップ・バス33である。各マルチドロップ・バス33は、各ノードに接続されるノード間バス31と類似のデータ・バス部分及びアドレス/制御バス部分を含む。単一の共用マルチドロップ・バス31が使用され得るが、図5はより大きな総帯域幅を提供するために、2つのこうしたバスを示す。要求される物理アドレスにもとづき、要求がバス間で分割される。
【図6】データ・ラインをシステム・ワイドに一意的に識別するために使用される物理アドレスを示す。この物理アドレスは、そのデータを所有するDRAMのノードID及びCP ID、更にそのDRAMセクション内のデータのバイト・アドレスを含む。物理ライン・アドレスはビット0乃至56の物理アドレスから成り、ビット57乃至63は、データ・ライン内のバイトを指定するために使用される。この例は128バイト・ライン・サイズを想定する。
【図7】L1ディレクトリ3及びノード・ディレクトリ24のエントリ内容を示す。L1キャッシュ2はストアインとして管理される。L1ディレクトリ3は標準MESIキャッシュ・コヒーレンス・プロトコルに従い、ラインを排他または共用としてマークする。排他ラインは変更データを含み、変更としてマークされる。ディレクトリのアドレス部分は、データのシステム・ワイドな固有のライン・アドレスを識別するために必要な情報を含む。これは一般に、そのラインを所有するDRAMのノードID及びCP ID、並びにそのDRAMセクション内のデータのライン・アドレスを含む。ノード・キャッシュ21もまたストアインとして管理される。ノード・ディレクトリ24は標準MESIキャッシュ・コヒーレンス・プロトコルに従い、ラインを排他または共用としてマークする。ラインが排他としてマークされるとき、排他CP IDビットが、ラインの排他的所有権を要求したプロセッサ7を示す。ラインが共用としてマークされるとき、排他CPIDビットは意味を持たない。排他ラインは変更データを含み得、その場合、変更とマークされる。ディレクトリのアドレス部分は、データのシステム・ワイドな固有のライン・アドレスを識別するために必要な情報を含む。これは一般に、そのラインを所有するDRAMのノードID及びCP ID、並びにそのDRAMセクション内のデータのライン・アドレスを含む。
【符号の説明】
1 CP(中央プロセッサ)
2 L1キャッシュ
3 L1ディレクトリ
4 メモリ制御装置
5 メモリ
6 リドライブ・チップ
7 半導体チップ
8 双方向データ・バス
9 アドレス/コマンド・バス
12 I/Oインタフェース
13 バス・インタフェース・ユニット
15 メモリ構成ブロック
20 双方向データ・バス
21 ノード・キャッシュ部分
22 電子スイッチ部分
23 ノード・キャッシュ及びスイッチの制御
24 ノード・ディレクトリ
25 アドレス/コマンド・バス
27 制御チップ
28 スイッチ/キャッシュ・チップ
30 ノード間アドレス/コマンド・バス
31 双方向ノード間バス・ポート
32 ノード間データ・バス
40 共通スイッチ/キャッシュ・ブロック
41 ノード
Claims (23)
- 1つ以上のノードから成る非階層のスケーラブル・コンピュータ・システムであって、コンピュータ・システム内の各ノードが、専用キャッシュ(L1キャッシュ)を有する少なくとも1つの中央プロセッサと、メモリ制御装置とを含み、それぞれが同一の製造仕様を有する、各ノード内の複数のプロセッサ半導体チップ(プロセッサ・チップ)と、
コンピュータ・システム内の全てのプロセッサ・チップ上の全ての中央プロセッサによりアクセス可能な、コンピュータ・システム内の共用メモリを提供する複数のRAM(ランダム・アクセス・メモリ)半導体チップであって、共用メモリがコンピュータ・システム内のRAM全体から成り、コンピュータ・システム内の異なるプロセッサ・チップ上のメモリ制御装置に接続されるRAMの複数のサブセット(RAMセクション)に分割される、複数のRAMチップと、
各々がそれぞれのRAMセクションと、それぞれのプロセッサ・チップ上のそれぞれのメモリ制御装置との間に局所的に接続され、それぞれのプロセッサ・チップ上の各プロセッサに対して、局所的に接続されるRAMセクションとの間の直接アクセスを提供する複数のローカル・メモリ・バスと、
同一ノード内の各プロセッサ・チップに接続されて、同一ノード内の任意のプロセッサ・チップによりアクセスされる共用メモリ内のデータを記憶する、各ノード内のノード・キャッシュであって、該ノード・キャッシュは、複数の同一のノード・キャッシュ・チップから構成され、各ノード・キャッシュ・チップがノード・キャッシュに記憶される各データ・ラインの一部を記憶して、前記複数のノード・キャッシュ・チップがデータ・ラインの各部を並列に送信する、ノード・キャッシュと、
同一ノード内の各ノード・キャッシュ・チップと、同一ノード内の各プロセッサ・チップとに接続され、同一ノード内の総てのプロセッサ・チップ上の前記L1キャッシュに格納されるデータ・ラインのステータスに関するデータを記録する、各ノード内のノード・ディレクトリと、
システム内のデータ・コヒーレンスを維持し、ノード・キャッシュからデータをフェッチする、ノード・ディレクトリのノード制御手段と、
各プロセッサ・チップを同一ノード内のノード・キャッシュ・チップ及びノード・ディレクトリに接続して、任意のプロセッサが該任意のプロセッサを含むプロセッサ・チップに直結されていないRAMセクションをアクセスするとき、該任意のプロセッサが、ノードの共用メモリの任意のRAMセクション上のデータをアクセスすることを可能にする、各ノード内のノード内バス機構と、
を含み、
任意のプロセッサがL1キャッシュでミスした場合、メモリ制御装置が要求をノード制御手段に送信するのと並列に、RAMセクションからのフェッチ・オペレーションを開始し、後に要求されたデータ・ラインがノード・ディレクトリに存在することが見出された場合、フェッチ・オペレーションが取り消される、
スケーラブル・コンピュータ・システム。 - ノード・ディレクトリ及び各ノード・キャッシュ・チップを、同一ノード内の各プロセッサ・チップに接続する電子スイッチをさらに含む、請求項1記載のスケーラブル・コンピュータ・システム。
- データのプロセッサ要求アドレスを接続ノード・ディレクトリに提供することにより、データを接続ノード・キャッシュから要求する、各プロセッサ・チップ内の制御手段であって、データが要求元プロセッサ・チップに接続されるRAMセクションから入手可能でない場合、接続ノード・キャッシュからのデータのフェッチを制御する、請求項2記載のスケーラブル・コンピュータ・システム。
- データが該ノード・キャッシュに含まれない場合、データに対するノード要求を、要求先アドレスを含むRAMセクションに接続されているプロセッサ・チップに提供する、ノード・ディレクトリのノード・ミス制御手段であって、要求先プロセッサ・チップが要求先アドレスのデータのコピーを該ノード・キャッシュに送信し、そのデータが次に該ノード・キャッシュにより、要求元プロセッサに送信される、ノード・ミス制御手段と、
をさらに含む請求項1〜3のいずれか1項記載のスケーラブル・コンピュータ・システム。 - ノード内電子スイッチが、ノード・ディレクトリ及び各ノード・キャッシュ・チップの夫々と同一のチップに備えられ、各ノード・キャッシュ・チップを同一ノード内の各プロセッサ・チップに接続し、前記ノード内電子スイッチに接続されるノード制御手段が、前記ノード内電子スイッチを制御してコンピュータ・システム内の任意のプロセッサにより要求されるデータを転送する、請求項2〜4のいずれか1項記載のスケーラブル・コンピュータ・システム。
- コンピュータ・システム内に提供される複数のノードと、
各ノード内のノード・キャッシュ及びノード・ディレクトリを、コンピュータ・システム内の他の各ノード内のノード・キャッシュ及びノード・ディレクトリに接続する1つ以上のノード間バスと
を含む、請求項1〜5のいずれか1項記載のスケーラブル・コンピュータ・システム。 - 前記各RAMセクションに固有の実アドレスの範囲が、システム共用メモリ内の異なるバイト位置に割当てられ、実アドレスが共用メモリ内のバイト・アドレスであり、コンピュータ・システム内の任意のプロセッサ上で実行するプログラムにより使用可能であって、コンピュータ・システム内の任意のプロセッサが、プログラム定義アドレスにより、共用メモリ内に配置されるデータ及びプログラムをアクセスすることを可能にし、
各プロセッサ・チップが、共用メモリのプログラム定義アドレスを各RAMアドレスに変換するアドレス変換制御手段を含む、請求項1〜6のいずれか1項記載のスケーラブル・コンピュータ・システム。 - 各それぞれのRAMセクション上の各RAMアドレスが、コンピュータ・システム内の固有のプロセッサ・チップ識別子(ID)を追加されることにより、システム共用メモリ内で固有にされ、各共用メモリ・アドレスが少なくともプロセッサ・チップ識別子(ID)及びRAMアドレスを含む、請求項7記載のスケーラブル・コンピュータ・システム。
- 固有のプロセッサ・チップIDが、プロセッサ・チップを含むノードのノード・アドレスを含み、各ノードがコンピュータ・システム内で固有のノード・アドレスを有し、追加されるチップIDがそのノード内でのみ固有であることを要求される、請求項8記載のスケーラブル・コンピュータ・システム。
- 各プロセッサ・チップ上のプロセッサが、特定のコンピュータ・アーキテクチャに従い構築されて、そのアーキテクチャ用に作成されたプログラムを実行し、アドレス変換制御手段が実行プログラム内のアドレスを要求RAMアドレスに変換する、請求項7記載のスケーラブル・コンピュータ・システム。
- アドレス変換制御手段によるRAMアドレスへの変換後に、プロセッサ・チップの外部のプログラム・アドレスを伝達する、各プロセッサ・チップ上のアドレス通信制御手段をさらに含む、請求項10記載のスケーラブル・コンピュータ・システム。
- 各RAMセクション内のメモリ実アドレス空間が、複数のアドレス空間に分割され、それらが
コンピュータ・システム内の任意のプロセッサ・チップ上で実行されるプログラムによりアクセス可能な、システム共用メモリの一部として提供される第1のメモリ空間と、
接続されるプロセッサ・チップ上のプロセッサにより実行されるマイクロコードによってのみアクセス可能で、コンピュータ・システム内の任意のプロセッサ・チップ上で実行するプログラムによってはアクセス可能でない、ハードウェア・メモリの第2のメモリ空間と
を含む、請求項11記載のスケーラブル・コンピュータ・システム。 - 各RAMセクションの第1及び第2のメモリ空間が、RAMアドレスのそれぞれの範囲を含み、第1のメモリ空間内のRAMアドレスだけが、アドレス変換制御によりサポートされて、プログラム・アドレスからRAMアドレスに変換される、請求項12記載のスケーラブル・コンピュータ・システム。
- アドレス変換制御手段が、各RAMセクションの第1のメモリ空間内のRAMアドレスを、固有のプログラム・バイト・アドレスの範囲に割当て、プログラム・アドレスが、コンピュータ・システム内の任意のプロセッサ・チップ内のプロセッサ内で実行するプログラムにより生成されるとき、RAMセクション内の要求データ位置のアクセスを可能にする、請求項13記載のスケーラブル・コンピュータ・システム。
- 任意のプロセッサ・チップがシステム共用メモリをアクセスできる複数のプロセッサを含み、プロセッサ・チップIDとは別の固有のプロセッサ識別子(ID)が、各プロセッサ・チップ内の各プロセッサに割当てられ、各システム固有のRAMアドレスが、プロセッサID、プロセッサ・チップID、及びそれぞれのRAMセクションのRAMアドレスを含み、RAMアドレスがそのRAMセクション内でのみ固有である必要がある、請求項14記載のスケーラブル・コンピュータ・システム。
- 各ノード・ディレクトリが、同一ノード内の総てのプロセッサ・チップ上の前記L1キャッシュ格納されるデータ・ラインの総てのRAMアドレスを記憶し、及び、各ノード・キャッシュが、同一ノード内の任意のプロセッサ・チップによりアクセスされる共用メモリ内のコピーを受信及び記憶する、請求項1〜15のいずれか1項記載のスケーラブル・コンピュータ・システム。
- コンピュータ・システムが2つ以上のノードを含み、要求元ノードのノード制御手段からの要求アドレスの同報に応答して、要求先ノード・ディレクトリが要求されたデータ・ラインのコピーを要求元ノード・キャッシュに転送し、要求元ノード制御手段が該データ・ラインのコピーを、要求元ノード・キャッシュから要求元リモート・プロセッサに転送する、請求項16記載のスケーラブル・コンピュータ・システム。
- 各ノード・ディレクトリ内のコヒーレンス制御が、各有効ノード・ディレクトリ・エントリ内の制御情報を用いて行われ、該制御情報が要求元プロセッサID、及び要求RAMアドレスを含むRAMセクションの記憶IDを含む、請求項1〜17のいずれか1項記載のスケーラブル・コンピュータ・システム。
- 要求RAMデータ・ラインに対し、要求元プロセッサに一時的に与えられるアクセス権限を示す権限標識が、コンピュータ・システム内の各ノード・ディレクトリ内の各有効ノード・ディレクトリ・エントリ内に記憶され、アクセス権限が読出し専用及びストア権限を含む、請求項18記載のスケーラブル・コンピュータ・システム。
- コンピュータ・システム内の他の各ノード・ディレクトリと通信する、各ノード・ディレクトリのコヒーレンス通信制御手段が、同一のRAMデータ・ラインをアクセスして、システム共用メモリ内の全てのデータのコヒーレンスを維持する、請求項19記載のスケーラブル・コンピュータ・システム。
- 各有効データ・ラインが、コンピュータ・システムの1つ以上の専用プロセッサ・キャッシュ及びノード・キャッシュに同時に記憶可能であり、同一のデータ・ラインが、要求RAMアドレスの接続ノード・ディレクトリ内の対応するノード・ディレクトリ・エントリ内で識別されるRAMセクションにストアバックされ、
ノード・ディレクトリ、ノード・キャッシュ及び専用プロセッサ・キャッシュ内のストアバック制御手段が、データ・ラインの最新の変更バージョンを、識別されたRAMセクション内の要求アドレスに後に記憶する、請求項20記載のスケーラブル・コンピュータ・システム。 - ノード間バスが、非共用バスである請求項6〜21のいずれか1項記載のスケーラブル・コンピュータ・システム。
- ノード間バスが、共用バスである請求項6〜21のいずれか1項記載のスケーラブル・コンピュータ・システム。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/396319 | 1999-09-15 | ||
US09/396,319 US6457100B1 (en) | 1999-09-15 | 1999-09-15 | Scaleable shared-memory multi-processor computer system having repetitive chip structure with efficient busing and coherence controls |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2001147903A JP2001147903A (ja) | 2001-05-29 |
JP3722415B2 true JP3722415B2 (ja) | 2005-11-30 |
Family
ID=23566757
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2000278528A Expired - Fee Related JP3722415B2 (ja) | 1999-09-15 | 2000-09-13 | 効率的なバス機構及びコヒーレンス制御を有する繰り返しチップ構造を有するスケーラブル共用メモリ・マルチプロセッサ・コンピュータ・システム |
Country Status (2)
Country | Link |
---|---|
US (1) | US6457100B1 (ja) |
JP (1) | JP3722415B2 (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9389808B2 (en) | 2013-08-22 | 2016-07-12 | Kabushiki Kaisha Toshiba | Storage device and data processing method |
US9823862B2 (en) | 2014-02-10 | 2017-11-21 | Toshiba Memory Corporation | Storage system |
Families Citing this family (81)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8230411B1 (en) | 1999-06-10 | 2012-07-24 | Martin Vorbach | Method for interleaving a program over a plurality of cells |
US7509391B1 (en) * | 1999-11-23 | 2009-03-24 | Texas Instruments Incorporated | Unified memory management system for multi processor heterogeneous architecture |
JP2001290751A (ja) * | 2000-04-04 | 2001-10-19 | Sony Corp | 情報処理装置、制御装置及び情報処理システム並びにそれらの方法 |
US6725334B2 (en) * | 2000-06-09 | 2004-04-20 | Hewlett-Packard Development Company, L.P. | Method and system for exclusive two-level caching in a chip-multiprocessor |
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 |
US6668308B2 (en) * | 2000-06-10 | 2003-12-23 | Hewlett-Packard Development Company, L.P. | Scalable architecture based on single-chip multiprocessing |
EP1182564A3 (en) | 2000-08-21 | 2004-07-28 | Texas Instruments France | Local memory with indicator bits to support concurrent DMA and CPU access |
US6594733B1 (en) * | 2000-09-27 | 2003-07-15 | John T. Cardente | Cache based vector coherency methods and mechanisms for tracking and managing data use in a multiprocessor system |
US8058899B2 (en) | 2000-10-06 | 2011-11-15 | Martin Vorbach | Logic cell array and bus system |
US9411532B2 (en) * | 2001-09-07 | 2016-08-09 | Pact Xpp Technologies Ag | Methods and systems for transferring data between a processing device and external devices |
US9250908B2 (en) * | 2001-03-05 | 2016-02-02 | Pact Xpp Technologies Ag | Multi-processor bus and cache interconnection system |
US9552047B2 (en) | 2001-03-05 | 2017-01-24 | Pact Xpp Technologies Ag | Multiprocessor having runtime adjustable clock and clock dependent power supply |
US9436631B2 (en) | 2001-03-05 | 2016-09-06 | Pact Xpp Technologies Ag | Chip including memory element storing higher level memory data on a page by page basis |
US6799217B2 (en) * | 2001-06-04 | 2004-09-28 | Fujitsu Limited | Shared memory multiprocessor expansion port for multi-node systems |
US10031733B2 (en) | 2001-06-20 | 2018-07-24 | Scientia Sol Mentis Ag | Method for processing data |
JP3508857B2 (ja) * | 2001-07-31 | 2004-03-22 | 日本電気株式会社 | ノード間データ転送方法およびデータ転送装置 |
US9170812B2 (en) | 2002-03-21 | 2015-10-27 | Pact Xpp Technologies Ag | Data processing system having integrated pipelined array data processor |
US7328314B2 (en) * | 2002-06-19 | 2008-02-05 | Alcatel-Lucent Canada Inc. | Multiprocessor computing device having shared program memory |
US6892289B2 (en) * | 2002-07-02 | 2005-05-10 | Lsi Logic Corporation | Methods and structure for using a memory model for efficient arbitration |
US7394284B2 (en) | 2002-09-06 | 2008-07-01 | Pact Xpp Technologies Ag | Reconfigurable sequencer structure |
US6795850B2 (en) * | 2002-12-13 | 2004-09-21 | Sun Microsystems, Inc. | System and method for sharing memory among multiple storage device controllers |
US6917967B2 (en) * | 2002-12-13 | 2005-07-12 | Sun Microsystems, Inc. | System and method for implementing shared memory regions in distributed shared memory systems |
US6898687B2 (en) * | 2002-12-13 | 2005-05-24 | Sun Microsystems, Inc. | System and method for synchronizing access to shared resources |
US7028147B2 (en) * | 2002-12-13 | 2006-04-11 | Sun Microsystems, Inc. | System and method for efficiently and reliably performing write cache mirroring |
US7917646B2 (en) * | 2002-12-19 | 2011-03-29 | Intel Corporation | Speculative distributed conflict resolution for a cache coherency protocol |
US6954829B2 (en) * | 2002-12-19 | 2005-10-11 | Intel Corporation | Non-speculative distributed conflict resolution for a cache coherency protocol |
US7130969B2 (en) * | 2002-12-19 | 2006-10-31 | Intel Corporation | Hierarchical directories for cache coherency in a multiprocessor system |
US7945738B2 (en) * | 2003-04-11 | 2011-05-17 | Oracle America, Inc. | Multi-node computer system employing a reporting mechanism for multi-node transactions |
WO2004092958A2 (en) * | 2003-04-11 | 2004-10-28 | Sun Microsystems, Inc. | Multi-node computer system with proxy transaction to read data from a non-owning memory device |
EP1616260A2 (en) * | 2003-04-11 | 2006-01-18 | Sun Microsystems, Inc. | Multi-node system with global access states |
US7089361B2 (en) * | 2003-08-07 | 2006-08-08 | International Business Machines Corporation | Dynamic allocation of shared cache directory for optimizing performance |
US7139881B2 (en) * | 2003-09-25 | 2006-11-21 | International Business Machines Corporation | Semiconductor device comprising a plurality of memory structures |
JP4412981B2 (ja) * | 2003-11-26 | 2010-02-10 | 株式会社日立製作所 | ストレージシステム及同システムにおけるデータキャッシング方法 |
JP4085389B2 (ja) * | 2003-12-24 | 2008-05-14 | 日本電気株式会社 | マルチプロセッサシステム、マルチプロセッサシステムにおける一貫性制御装置及び一貫性制御方法 |
US7240165B2 (en) * | 2004-01-15 | 2007-07-03 | Hewlett-Packard Development Company, L.P. | System and method for providing parallel data requests |
US7856534B2 (en) | 2004-01-15 | 2010-12-21 | Hewlett-Packard Development Company, L.P. | Transaction references for requests in a multi-processor network |
US7962696B2 (en) * | 2004-01-15 | 2011-06-14 | Hewlett-Packard Development Company, L.P. | System and method for updating owner predictors |
US8145847B2 (en) * | 2004-01-20 | 2012-03-27 | Hewlett-Packard Development Company, L.P. | Cache coherency protocol with ordering points |
US7143245B2 (en) | 2004-01-20 | 2006-11-28 | Hewlett-Packard Development Company, L.P. | System and method for read migratory optimization in a cache coherency protocol |
US8176259B2 (en) * | 2004-01-20 | 2012-05-08 | Hewlett-Packard Development Company, L.P. | System and method for resolving transactions in a cache coherency protocol |
US8090914B2 (en) * | 2004-01-20 | 2012-01-03 | Hewlett-Packard Development Company, L.P. | System and method for creating ordering points |
US7395374B2 (en) * | 2004-01-20 | 2008-07-01 | Hewlett-Packard Company, L.P. | System and method for conflict responses in a cache coherency protocol with ordering point migration |
US7620696B2 (en) * | 2004-01-20 | 2009-11-17 | Hewlett-Packard Development Company, L.P. | System and method for conflict responses in a cache coherency protocol |
US7818391B2 (en) | 2004-01-20 | 2010-10-19 | Hewlett-Packard Development Company, L.P. | System and method to facilitate ordering point migration |
US7177987B2 (en) * | 2004-01-20 | 2007-02-13 | Hewlett-Packard Development Company, L.P. | System and method for responses between different cache coherency protocols |
US7149852B2 (en) * | 2004-01-20 | 2006-12-12 | Hewlett Packard Development Company, Lp. | System and method for blocking data responses |
US20050160238A1 (en) * | 2004-01-20 | 2005-07-21 | Steely Simon C.Jr. | System and method for conflict responses in a cache coherency protocol with ordering point migration |
US7769959B2 (en) * | 2004-01-20 | 2010-08-03 | Hewlett-Packard Development Company, L.P. | System and method to facilitate ordering point migration to memory |
US8468308B2 (en) * | 2004-01-20 | 2013-06-18 | Hewlett-Packard Development Company, L.P. | System and method for non-migratory requests in a cache coherency protocol |
US7757237B2 (en) * | 2004-06-16 | 2010-07-13 | Hewlett-Packard Development Company, L.P. | Synchronization of threads in a multithreaded computer program |
US7366956B2 (en) * | 2004-06-16 | 2008-04-29 | Hewlett-Packard Development Company, L.P. | Detecting data races in multithreaded computer programs |
US20050283770A1 (en) * | 2004-06-18 | 2005-12-22 | Karp Alan H | Detecting memory address bounds violations |
US20060100965A1 (en) * | 2004-11-10 | 2006-05-11 | Nokia Corporation | Digital content after-market broker system, method, apparatus and computer program |
US7398360B2 (en) * | 2005-08-17 | 2008-07-08 | Sun Microsystems, Inc. | Multi-socket symmetric multiprocessing (SMP) system for chip multi-threaded (CMT) processors |
JP4335298B2 (ja) * | 2006-02-24 | 2009-09-30 | 富士通株式会社 | スヌープ制御方法および情報処理装置 |
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 |
US7734873B2 (en) * | 2007-05-29 | 2010-06-08 | Advanced Micro Devices, Inc. | Caching of microcode emulation memory |
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 |
US8782779B2 (en) * | 2007-09-26 | 2014-07-15 | Hewlett-Packard Development Company, L.P. | System and method for achieving protected region within computer system |
US9207990B2 (en) * | 2007-09-28 | 2015-12-08 | Hewlett-Packard Development Company, L.P. | Method and system for migrating critical resources within computer systems |
US8108056B2 (en) * | 2007-11-13 | 2012-01-31 | Rockwell Automation Technologies, Inc. | Industrial controller using shared memory multicore architecture |
US8332580B2 (en) * | 2008-04-02 | 2012-12-11 | Zikbit Ltd. | System, method and apparatus for memory with embedded associative section for computations |
JP5404433B2 (ja) * | 2010-01-08 | 2014-01-29 | 株式会社東芝 | マルチコアシステム |
WO2012008008A1 (ja) * | 2010-07-12 | 2012-01-19 | 富士通株式会社 | 情報処理システム |
KR101671494B1 (ko) * | 2010-10-08 | 2016-11-02 | 삼성전자주식회사 | 공유 가상 메모리를 이용한 멀티 프로세서 및 주소 변환 테이블 생성 방법 |
JP5238791B2 (ja) | 2010-11-10 | 2013-07-17 | 株式会社東芝 | 転送機能を有するメモリノードを相互に接続したストレージ装置及びデータ処理方法 |
US20120179883A1 (en) * | 2011-01-12 | 2012-07-12 | Broadcom Corpotation | System and method for dynamically adjusting memory performance |
US9047686B2 (en) | 2011-02-10 | 2015-06-02 | Qualcomm Incorporated | Data storage address assignment for graphics processing |
EP2680149A4 (en) * | 2011-02-24 | 2014-01-22 | Fujitsu Ltd | INFORMATION PROCESSING DEVICE |
WO2012174128A1 (en) * | 2011-06-13 | 2012-12-20 | Paneve, Llc | General purpose digital data processor, systems and methods |
JP5573829B2 (ja) * | 2011-12-20 | 2014-08-20 | 富士通株式会社 | 情報処理装置およびメモリアクセス方法 |
CN102646060B (zh) * | 2012-02-23 | 2014-04-09 | 中国人民解放军国防科学技术大学 | 高性能计算机系统中不满足计算精度要求的结点检测方法 |
JP5985403B2 (ja) | 2013-01-10 | 2016-09-06 | 株式会社東芝 | ストレージ装置 |
JP6005533B2 (ja) | 2013-01-17 | 2016-10-12 | 株式会社東芝 | 記憶装置および記憶方法 |
JP2014160502A (ja) * | 2014-04-28 | 2014-09-04 | Fujitsu Ltd | 情報処理装置およびメモリアクセス方法 |
JP5936152B2 (ja) * | 2014-05-17 | 2016-06-15 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | メモリアクセストレース方法 |
US9720827B2 (en) * | 2014-11-14 | 2017-08-01 | Intel Corporation | Providing multiple memory modes for a processor including internal memory |
US11275721B2 (en) * | 2015-07-17 | 2022-03-15 | Sap Se | Adaptive table placement in NUMA architectures |
CN115114200B (zh) * | 2022-06-29 | 2023-11-17 | 海光信息技术股份有限公司 | 一种多芯片系统及基于其的启动方法 |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0291747A (ja) * | 1988-09-29 | 1990-03-30 | Hitachi Ltd | 情報処理装置 |
JPH0711793B2 (ja) | 1989-07-13 | 1995-02-08 | 株式会社東芝 | マイクロプロセッサ |
US5261066A (en) | 1990-03-27 | 1993-11-09 | Digital Equipment Corporation | Data processing system and method with small fully-associative cache and prefetch buffers |
US5303362A (en) | 1991-03-20 | 1994-04-12 | Digital Equipment Corporation | Coupled memory multiprocessor computer system including cache coherency management protocols |
US5265232A (en) | 1991-04-03 | 1993-11-23 | International Business Machines Corporation | Coherence control by data invalidation in selected processor caches without broadcasting to processor caches not having the data |
US5524212A (en) | 1992-04-27 | 1996-06-04 | University Of Washington | Multiprocessor system with write generate method for updating cache |
US5327548A (en) * | 1992-11-09 | 1994-07-05 | International Business Machines Corporation | Apparatus and method for steering spare bit in a multiple processor system having a global/local memory architecture |
US5535417A (en) | 1993-09-27 | 1996-07-09 | Hitachi America, Inc. | On-chip DMA controller with host computer interface employing boot sequencing and address generation schemes |
US5596765A (en) | 1994-10-19 | 1997-01-21 | Advanced Micro Devices, Inc. | Integrated processor including a device for multiplexing external pin signals |
US5586308A (en) | 1994-10-19 | 1996-12-17 | Advanced Micro Devices, Inc. | Clock control unit responsive to a power management state for clocking multiple clocked circuits connected thereto |
ATE205616T1 (de) | 1994-10-19 | 2001-09-15 | Advanced Micro Devices Inc | Integrierte prozessorsysteme für tragbare informationsgeräte |
US5669008A (en) | 1995-05-05 | 1997-09-16 | Silicon Graphics, Inc. | Hierarchical fat hypercube architecture for parallel processing systems |
US5659714A (en) * | 1995-07-05 | 1997-08-19 | Mitsubishi Denki Kabushiki Kaisha | Data processor including memory for associating data elements of two-dimensional array which are numbered in spiral order with element numbers thereof |
US5796605A (en) | 1996-07-02 | 1998-08-18 | Sun Microsystems, Inc. | Extended symmetrical multiprocessor address mapping |
US5895487A (en) * | 1996-11-13 | 1999-04-20 | International Business Machines Corporation | Integrated processing and L2 DRAM cache |
US6209065B1 (en) * | 1997-10-24 | 2001-03-27 | Compaq Computer Corporation | Mechanism for optimizing generation of commit-signals in a distributed shared-memory system |
US6055605A (en) * | 1997-10-24 | 2000-04-25 | Compaq Computer Corporation | Technique for reducing latency of inter-reference ordering using commit signals in a multiprocessor system having shared caches |
US6108737A (en) * | 1997-10-24 | 2000-08-22 | Compaq Computer Corporation | Method and apparatus for reducing latency of inter-reference ordering in a multiprocessor system |
-
1999
- 1999-09-15 US US09/396,319 patent/US6457100B1/en not_active Expired - Fee Related
-
2000
- 2000-09-13 JP JP2000278528A patent/JP3722415B2/ja not_active Expired - Fee Related
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9389808B2 (en) | 2013-08-22 | 2016-07-12 | Kabushiki Kaisha Toshiba | Storage device and data processing method |
US9823862B2 (en) | 2014-02-10 | 2017-11-21 | Toshiba Memory Corporation | Storage system |
Also Published As
Publication number | Publication date |
---|---|
US6457100B1 (en) | 2002-09-24 |
JP2001147903A (ja) | 2001-05-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3722415B2 (ja) | 効率的なバス機構及びコヒーレンス制御を有する繰り返しチップ構造を有するスケーラブル共用メモリ・マルチプロセッサ・コンピュータ・システム | |
KR101887797B1 (ko) | 메모리 내 가벼운 일관성 | |
US7363462B2 (en) | Performing virtual to global address translation in processing subsystem | |
US6636949B2 (en) | System for handling coherence protocol races in a scalable shared memory system based on chip multiprocessing | |
KR100491435B1 (ko) | 다수의 시스템 버스를 가지는 컴퓨터 시스템 내의 메모리 일관성을 유지하기 위한 시스템 및 방법 | |
US6289420B1 (en) | System and method for increasing the snoop bandwidth to cache tags in a multiport cache memory subsystem | |
US6675265B2 (en) | Multiprocessor cache coherence system and method in which processor nodes and input/output nodes are equal participants | |
US6738868B2 (en) | System for minimizing directory information in scalable multiprocessor systems with logically independent input/output nodes | |
US7765381B2 (en) | Multi-node system in which home memory subsystem stores global to local address translation information for replicating nodes | |
US6640287B2 (en) | Scalable multiprocessor system and cache coherence method incorporating invalid-to-dirty requests | |
US6925537B2 (en) | Multiprocessor cache coherence system and method in which processor nodes and input/output nodes are equal participants | |
KR101497002B1 (ko) | 스누프 필터링 메커니즘 | |
US6826653B2 (en) | Block data mover adapted to contain faults in a partitioned multiprocessor system | |
US6654858B1 (en) | Method for reducing directory writes and latency in a high performance, directory-based, coherency protocol | |
JP2000067024A (ja) | 分散共有メモリマルチプロセッサシステムのための分割疎ディレクトリ | |
US5713004A (en) | Cache control for use in a multiprocessor to prevent data from ping-ponging between caches | |
US20050216672A1 (en) | Method and apparatus for directory-based coherence with distributed directory management utilizing prefetch caches | |
US7159079B2 (en) | Multiprocessor system | |
EP1611513B1 (en) | Multi-node system in which global address generated by processing subsystem includes global to local translation information | |
US7818508B2 (en) | System and method for achieving enhanced memory access capabilities | |
US6636948B2 (en) | Method and system for a processor to gain assured ownership of an up-to-date copy of data | |
US20030101280A1 (en) | Fast jump address algorithm |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20040113 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20040330 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A821 Effective date: 20040630 Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040630 |
|
RD12 | Notification of acceptance of power of sub attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7432 Effective date: 20040630 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A821 Effective date: 20040630 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20050511 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A821 Effective date: 20050810 Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20050810 |
|
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: 20050822 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A821 Effective date: 20050822 |
|
RD14 | Notification of resignation of power of sub attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7434 Effective date: 20050822 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20050909 |
|
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: 20080922 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090922 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090922 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100922 Year of fee payment: 5 |
|
LAPS | Cancellation because of no payment of annual fees |