JP2004506981A - マルチプロセッサにおけるセマフォおよびアトミック動作の管理のためのシステムおよび方法 - Google Patents
マルチプロセッサにおけるセマフォおよびアトミック動作の管理のためのシステムおよび方法 Download PDFInfo
- Publication number
- JP2004506981A JP2004506981A JP2002520083A JP2002520083A JP2004506981A JP 2004506981 A JP2004506981 A JP 2004506981A JP 2002520083 A JP2002520083 A JP 2002520083A JP 2002520083 A JP2002520083 A JP 2002520083A JP 2004506981 A JP2004506981 A JP 2004506981A
- Authority
- JP
- Japan
- Prior art keywords
- semaphore
- memory
- address space
- register
- registers
- 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.)
- Withdrawn
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/173—Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
- G06F15/17356—Indirect interconnection networks
- G06F15/17368—Indirect interconnection networks non hierarchical topologies
- G06F15/17375—One dimensional, e.g. linear array, ring
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Multi Processors (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Bus Control (AREA)
Abstract
複数のデータ処理ユニットを含む方法および装置である。共有アドレス空間を有する複数のメモリバンクは、クロスバ結合によりプロセッサに結合され、プロセッサ間のデータの読出および書込を可能にし、キャッシュコヒーレンシメッセージがメモリからプロセッサに伝送されることを可能にする。複数のセマフォレジスタは、メモリバンクの共有アドレス空間で具体化され、セマフォレジスタは、プロセッサによってクロスバ結合を介してアクセス可能である。
Description
【0001】
【発明の分野】
この発明は、一般にマイクロプロセッサシステムに関し、特に、マルチプロセッサコンピュータシステム内でアトミック動作を実行するためのソフトウェア、システムおよび方法に関する。
【0002】
【関連の背景】
マイクロプロセッサは、コンピュータプログラムにより特定された命令に従ってデータを操作する。従来のシステムにおける命令およびデータは、メモリバスによってプロセッサに結合されるメモリ内に記憶される。コンピュータプログラムは、並列処理を活かすためにますますコンパイルされる。並列処理により、同時に実行される類似のまたはばらばらの複数のタスクとして、複雑なプログラムの実行が可能となり、性能が向上する。
【0003】
伝統的にマイクロプロセッサは、マイクロプロセッサがメモリアドレス空間を完全に制御する環境において、単一の命令ストリームを処理するよう設計された。マルチプロセッサコンピュータシステムは、並列に動作する複数のデータプロセッサを設けることにより、プログラム実行が向上するよう開発された。初期のマルチプロセッサシステムは、複数のプロセッサのアクティビティを調整するよう特別に設計された特徴を含む、専用のプロセッサを用いた。さらにソフトウェアは、しばしばある特定のマルチプロセッサプラットフォームに特別にコンパイルされた。これらの要因により、マルチプロセッシングの入手および維持が高価なものとなった。
【0004】
低コストで高性能のマイクロプロセッサがますます利用可能になったことにより、汎用のマルチプロセッシングコンピュータが実行可能となる。ここで用いられるように、「マイクロプロセッサ」および「プロセッサ」という用語は、複雑命令セットコンピュータ(CISC)、縮小命令セットコンピュータ(RISC)およびハイブリッドコンピュータを含む。しかしながら、汎用のマイクロプロセッサは典型的には、大規模なマルチプロセッシングのために特別に設計されているわけではない。いくつかのマイクロプロセッサは、共有バス上のシステム内で最高4つまでのプロセッサの構成をサポートする。これらの限界を超えるために、専用のハードウェア、ファームウェアおよびソフトウェアが、システム内のさまざまなマイクロプロセッサのアクティビティを調整するよう利用される必要がある。
【0005】
プロセス間通信および同期は、マルチプロセッサシステムの設計者が直面する、より難しい調整問題のうちの2つである。本質的に、それらの問題は、異なった、そしてしばしば自律したプロセッサ上で実行される関連したプロセス間の状態情報の交換によって、各々のプロセッサのアクティビティを調整することを含む。プロセッサアクティビティを調整できないことは、マルチプロセッサ設計の拡張性においては主たる制限である。プロセッサ数の増加に伴い、この問題を解決することはかなり複雑となっている。
【0006】
状態情報は、「セマフォ」と称されるデータ構造にしばしば実施され、共有メモリリソースまたはセマフォレジスタに記憶され得る。セマフォは本質的に、共通の(すなわち、共有)リソースの状態を示す値を含む、1つのフラグまたはフラグの組である。たとえば、1組のセマフォは、ある特定の共有リソースにロックを確立するために用いられ得る。マルチプロセッサシステム内のすべてのプロセッサにとって、セマフォが利用可能となることが望ましい。
【0007】
セマフォは、継続的にさまざまなプロセスによってアクセスされ、変更され、そしてさまざまなプロセスと通信される。セマフォ操作は典型的には、テスト、セット、テストおよびセット、書込、クリアならびにフェッチ等の、比較的単純な動作の、1つの小さな組を含む。これらの動作は時折、いくつかの基本的な数学または論理演算(たとえば、インクリメント、デクリメント、AND、OR)との組合せで行なわれる。セマフォがメモリ常駐であるとき、セマフォへのアクセスは、セマフォデータが読出され、更新され、セマフォレジスタ構造にライトバックされるという点において、メモリ動作(たとえば、読出/書込またはロード/記憶動作)に類似した態様で達成される。このプロセスはしばしば、「読出−変更−書込」サイクルと称される。
【0008】
これらのセマフォ管理動作は、典型的には、プロセッサのキャッシュ/内部レジスタへのセマフォの転送と、セマフォ値の更新と、更新されたセマフォのセマフォレジスタ構造への返送とを含む。セマフォ管理動作がペンディング状態であるか、またはフライト中である間(たとえば、セマフォが別のプロセッサにより操作されているとき)、プロセッサがセマフォ値を操作(すなわち、変更)できないという理由から、セマフォ操作はアトミック動作でなければならない。したがってメモリマップドセマフォ操作は、典型的な読出−変更−書込サイクルの間バスロックまたは他のロックメカニズムを包含し、最小単位を保証する。しかしながらバスロックは、すべてのプロセッサが共通のバスを共有しない限り実行不可能なことがあり、マルチプロセッサ設計の性能および拡張性に強い影響を与える。さらに、アトミック動作を確実にするためのいくつかのメカニズムは、マイクロプロセッサ命令セットアーキテクチャ(ISA)の特別の命令に依存する。このような必要性により、プロセッサ選択において柔軟性が大いに制限される。従来のアトミックメモリ動作に伴うロックペナルティを被らない、メモリマップドセマフォレジスタを操作するための方法およびシステムが必要である。
【0009】
最小単位は、セマフォをキャッシュ可能にし、キャッシュコヒーレンシメカニズム、例えばMESIプロトコル等を用いることにより、最小単位を強要することで保証される。または、セマフォはキャッシュ不可能とされ得るので、それは共有メモリ空間内のみに存在し、使用されるプロセッサバスロックメカニズムは、セマフォ管理動作が完了するまですべてのプロセッサ通信を妨げる。いずれの場合においても、セマフォが多くのプロセッサ数によって同時に共有されているとき、性能および具体化に関する問題が生じる。
【0010】
キャッシュセマフォの使用には、1つのプロセッサがセマフォを変更し、次いでその変更を、そのセマフォのコピーを有する他のすべてのキャッシュに伝達することが必要とされる。書込アクセスでキャッシュラインを1つのプロセッサから別のプロセッサに移行することには、1つ以上のキャッシュコヒーレンシ動作およびそれらに伴う応答に加えて、複数のメモリ読出トランザクションが頻繁に伴う。キャッシュラインへの排他的なアクセスを獲得するための待ち時間は、ラインへのアクセスを同時に共有するプロセッサの数の関数である。このため、MESIプロトコル等のキャッシュコヒーレンシメカニズムを用いると、十分に基準化しない。(特に、書込割当キャッシュポリシーを用いて)メモリをキャッシュ可能に構成することが望ましい場合、およびキャッシュコヒーレンシプロトコルが40個以上のプロセッサをサポートするよう設計されることが望ましい場合、多くのプロセッサ数がプログラムフローを同期化するために、共有メモリロケーションを用いる並列アプリケーションが存在することは避けられないであろう。
【0011】
ホストバスロックは、非常に強制的な態様で最小単位を保証する。アンキャッシュメモリを伴うIA32命令セットでのアトミック動作サポートは、2つのバス動作、すなわち読出と、それに続く書込とを必要とする。これらの動作が行なわれる間バスロックが確立され、これにより、使用されていないバスバンド幅に他のプロセッサがアクセスし、これを利用することを防ぐ。このことは、複数のプロセッサおよび他のコンポーネントがホストバスを共有するコンピュータシステムでは、システムデッドロックのための条件を作り出す可能性があり、特に不利益である。ホストバスを用いるいずれかのエージェントによってバスロックを確立することにより、他のプロセッサがメモリをターゲットとするいずれのバストランザクションをも、開始または完了させ得ることを妨ぐ。
【0012】
類似の問題がいずれのアトミックメモリ動作についても存在する。アトミックメモリ動作は、読出または書込動作が共有メモリロケーションに合わせて行われる動作である。共有メモリロケーションがアンキャッシュである時でさえ、共有メモリロケーションにアクセスしているいずれのプロセッサも、アトミック動作が完了するまでロケーションの読出を確実に防げられるような態様で、アトミックメモリ動作を完了する必要がある。
【0013】
より複雑なマルチプロセッサアーキテクチャは、各々のプロセッサボードが共有フロントサイドバスとともに結合される複数のプロセッサを含む、複数のプロセッサボードを組合せる。このようなシステムでは、複数のボードは互いに相互接続され、かつフロントサイドバスから独立した相互接続ネットワークを用いるメモリと相互接続される。本質的にマルチプロセッシングボードの各々は、独立したフロントサイドバスを有する。フロントサイドバスはすべてのシステムプロセッサにより共有されているわけではないので、フロントサイドバスでのみ動作するバスロックおよびバススヌープ等のコヒーレンシメカニズムの実現は、不可能ではないが困難である。
【0014】
このためセマフォ管理動作は、単にオーバーヘッドであるバスバンド幅を消費する。したがって、オーバーヘッドを最小限にするよう効率的に動作する、セマフォ管理メカニズムおよび方法を提供することが望ましい。より具体的には、キャッシュコヒーレンシメカニズムまたはバスロックメカニズムのいずれにも依存することのない、セマフォ管理を提供するための手段が必要とされている。
【0015】
【発明の概要】
簡潔に述べると、この発明は、複数のデータ処理ユニットを含むマルチプロセッサ内でセマフォを具体化するための方法および装置を含む。共有アドレス空間を有する複数のメモリバンクが、プロセッサに結合され、プロセッサとメモリバンクとの間のデータの読出および書込を可能にする。複数のセマフォレジスタがメモリバンクの共有アドレス空間内で具体化され、セマフォレジスタは、セマフォレジスタに割当てられた共有アドレス空間の部分に向けられたメモリ動作を用いるプロセッサによって、アクセス可能である。
【0016】
別の局面では、この発明は、複数のプロセッサがメモリ要求を生成する、マルチプロセッサコンピューティングシステムを動作する方法を含む。複数のメモリバンクが共有アドレス空間を有するよう設けられ、データを読出しおよび書込むメモリ要求に応答する。クロスバネットワークは複数のプロセッサを複数のメモリバンクに結合する。各々のメモリバンク内の共有アドレス空間のある部分は、セマフォレジスタの専用とされる。メモリの専用部分は、キャッシュ不可能として指定される。複数のプロセスが、複数のプロセッサのうちの1つ以上のプロセッサ上で実行される。実行時には、共有アドレス空間のある部分は複数のプロセスに割当てられる。好ましくは、ある特定のメモリバンク内の少なくとも1つの物理的なセマフォレジスタは、その特定のメモリバンク内の複数のプロセスに割当てられる共通のアドレス空間にマッピングされる。
【0017】
【好ましい実施例の詳細な説明】
一般的には、この発明は「セマフォレジスタ」として、小さく、固定された範囲の共有メモリの割当を含む。セマフォレジスタは、フラグ、カウンタなど等の状態情報を保持するデータ構造である。セマフォ操作は典型的には、非常に「簡単な」動作を含み、それはいくつかの基本的な動作(すなわち、インクリメント、デクリメント、AND、OR、など)を備えた、テスト、書込、セット、クリア、テストおよびセット、ならびにフェッチを含む。セマフォはしばしば、複数のソフトウェアプロセスの中で情報および/またはリソースを共有するために用いられる。セマフォレジスタは一種のアンキャッシュメモリ構造を表わす。
【0018】
この発明の重要な特徴は、事実上すべてのマイクロプロセッサによりサポートされる従来の「読出」および「書込」メモリ参照を用いる、メモリマップドレジスタ上でアトミック動作がそれによって実行され得る機構を提供することである。しかしながら、この発明はセマフォを操作することにおける、読出/変更/書込サイクルの必要性を軽減する。
【0019】
この発明に従って、セマフォレジスタはメモリバンク上に常駐し、共有アドレス空間のある部分を割当てられているので、マルチプロセッサシステム内のすべてのプロセッサが実質的に均一な待ち時間でそれらにアクセスする。また、共有メモリが用いられているので、セマフォトラヒックを専用に管理するための専用のネットワークを必要とすることなく、既存のプロセッサ・メモリ間の通信ネットワークを使用することができる。さらにセマフォ操作は、読出および書込動作等の基本的なメモリ動作によって達成されるので、事実上、いずれのマイクロプロセッサおよび命令セットアーキテクチャも用いることができる。
【0020】
この発明は、一体化されたキャッシュメモリを有するいくつかの実質的に同一のマイクロプロセッサを含む、汎用のマルチプロセッシングコンピューティングシステムに関して例示および説明される。この種類のコンピューティングシステムは、この発明の特徴および原理を例示するのに優れたツールであるが、異なる種類のプロセッサのセットも用いることができることが理解されるべきである。いくつかのプロセッサは一体化されたキャッシュを含んでいてもよく、いくつかのプロセッサは外部キャッシュを含んでいてもよく、さらに他のプロセッサはキャッシュを全く有していなくてもよい。この発明は共有メモリシステムに関して例示されるが、ある局面では区分されたメモリシステムでの適用も有する。したがって、ここに与えられる特定の例は、例示および理解のために提供されており、特に説明されない限りこの発明の限定として見なされるべきではない。さらに、この発明の重要な特徴は、それが容易に上向きおよび下向きに調整されて、ある特定の適用例の必要に応じることである。したがって反対に特定されない限り、この発明は、極めて大きくより複雑なネットワーク環境、および従来のローカルエリアネットワーク(LAN)システム等の小さなネットワーク環境に適用できる。
【0021】
図1は、この発明が実現されるマルチプロセッサコンピュータ環境を示す。マルチプロセッサコンピュータシステム100は、N個のプロセッサボード101を組込む。各々のプロセッサボード101は、論理的にプロセッサノード101と称される。各々のプロセッサボード101は、特定の例では、一体化されたキャッシュメモリを有する、プロセッサP1およびP2等の1つ以上のマイクロプロセッサを含む。プロセッサボード101は、共通のフロントサイドバス(FSB)104を共有し、さらにブリッジ107を通じてホストバスネットワーク102に達する共通のゲートウェイを共有するグループで構成され得る。ある例示的なプロセッサは、単一のプロセッサおよび最高で4つまでのプロセッサの対称型マルチプロセッサ(SMP)として構成され得る、インテル社(Intel Corporation)によって製造されるペンティアム(R)IIIジーオン(XEON)(商標)プロセッサである。複数のSMPシステムのクラスタ設計も利用可能である。
【0022】
プロセッサ101は、相互接続ネットワーク102を介して共有メモリ103に双方向に結合される。相互接続ネットワーク102は好ましくは、フルクロスバ接続を具体化し、いずれのプロセッサボード101も、いずれのメモリバンク105内で具体化されるいずれのメモリロケーションにもアクセスすることが可能となる。共有メモリ103は、複数のM個のメモリバンク105として構成される。各々のメモリバンク105はそれ自体が、メモリコンポーネントの群を含み得る。好ましくは、共有メモリ103は複数の「ライン」として編成され、各々のラインは、プロセッサ101内における、アーキテクチャにより規定されたキャッシュのラインサイズに基づいた大きさにされる。メモリまたはキャッシュ内のラインは、最小のアクセス可能なデータの単位であるが、この発明は、ライン内でのアドレス指定を可能にするメモリアーキテクチャをサポートする。
【0023】
各々のプロセッサボード101は、フロントサイドバス(FSB)ゲートウェイインターフェイス106を含むことができ、これによりローカルメモリ108および周辺コンポーネント相互接続(PCI)ブリッジ110へのアクセスを可能にする。特定の例では、ローカルメモリ108は共有メモリ103のアドレス空間に含まれず、FSBクロスバ106と同じフロントサイドバス104に結合されるプロセッサP1およびP2の中でのみ共有される。PCIブリッジ110は、従来のPCIデバイスが、たとえば外部ネットワーク111および/または記憶装置112にアクセスすること、およびそれらへの接続を管理することをサポートする。いくつかのプロセッサボード101は、PCIデバイスが他のボード101を介して利用可能な場合、PCIブリッジ機能をなくし得ることが企図される。
【0024】
注目すべきは、各々のプロセッサボード101のフロントサイドバス104が、他のすべてのプロセッサボード101のフロントサイドバス104から独立していることである。したがって、アトミック動作を実行するために、たとえばIA32命令セットによって提供されるいずれのメカニズムも、異なったボード101上に位置するプロセッサ間にあるようには動作しない。
【0025】
プロセッサP1またはP2が、メモリ103内でターゲットロケーションからのロードまたはターゲットロケーションへの記憶を必要とする命令を実行すると、メモリ動作が行なわれる。メモリ動作を実行する際、プロセッサは第1に、ターゲットメモリロケーションがキャッシュ内で表わされ、有効で、かつアクセス可能であるかどうかを判断する。キャッシュは、メモリ動作を実行するプロセッサのボード上にあってもよいし、または外部キャッシュメモリ内にあってもよい。キャッシュミスの場合、メモリ動作はブリッジ107によって処理される。ブリッジ107は、アクセス要求をホストバスネットワーク102に対して生成し、ターゲットロケーションアドレスと、動作の種類(たとえば、読出/書込)と、ある特定の実現例で必要とされ得る他の制御情報とを特定する。共有メモリ103は要求を受取り、特定されたメモリロケーションにアクセスする。読出動作の場合、要求されたデータは、ホストバスネットワーク102を通り、そしてアクセス要求を生成したブリッジ107に宛てられた応答によって戻される。書込トランザクションは、書込が行なわれたという肯定応答を返すことができる。共有メモリ103内でエラーが生じた場合、ブリッジ107への応答は、エラーについての情報を示す状態コードを含み得る。
【0026】
図2は、ある特定の実現例およびこの発明の実現例をサポートする相互接続ストラテジを例示する。図2の実現例では、SEGMENT_0からSEGMENT_15と示された16のセグメントがある。各々のセグメントはプロセッサグループ201を含む。ある特定の例でのプロセッサグループ201は、32個のプロセッサを含み、各々は、双方向データおよびコマンドインターフェイスを介してプロセッサスイッチ202に結合される。プロセッサスイッチ202は、各々のメモリバンクグループ205のための中継線214への出力を含む。同様に各々のメモリスイッチ203は、各々のプロセッサグループ201のための中継線214への出力を含む。この態様では、いずれのプロセッサグループも、プロセッサスイッチ202およびメモリスイッチ203の適切な構成により、いずれのメモリバンクグループへも選択的に結合され得る。
【0027】
図3は、この発明に従ったメモリバンク205に関連した重要なセマフォ管理メカニズムを示す。メモリスイッチ203は(図2に図示される)中継線214と通信し、メモリ制御装置301へのメモリアクセス要求を送信および受信する。メモリアクセス要求を受信すると、メモリスイッチ203はターゲットメモリアドレスおよびプロセッサノード識別を含む情報、ならびに制御およびモード情報をメモリ制御装置301に渡す。ターゲットメモリアドレスは、メモリバンクデータ部分302内のロケーション、またはセマフォ制御装置302に割当てられたメモリアドレス空間のある部分を指す。
【0028】
プロセッサIDは、メモリ動作を行なっているマルチプロセッサシステム内の独自のプロセッサノード101を示す値である。ある特定の実施例では、この情報は、さまざまな種類の情報のために規定されたフィールドを有するデータパケットとして、スイッチ203とメモリバンク301内のメモリ制御装置301との間で渡される。このデータパケットの特定のレイアウトは、ある特定の実現例の必要に応じて選択される。
【0029】
共有アドレス空間の大部分は、メモリ302内のデータおよび命令のために割当てられる。メモリ302は複数のメモリライン312として編成され、キャッシュラインとも呼ばれる。ある特定の例では、各々のメモリライン312は256ビット幅であり、メモリ302は、具体化される物理的なメモリの量による可変数のラインを含む。メモリ302は、実質的に従来の態様で、利用可能なメモリ管理および割当メカニズムを用いる実行プロセスに割当てられる。典型的には実行プロセスの群は、実行時にそれらのプロセスに割当てられる共通のアドレス空間を共有する。典型的にはすべてまたは大部分の従来のメモリ領域302は、キャッシュ可能なメモリとして指定される。
【0030】
キャッシュコヒーレンシユニット305は、キャッシュディレクトリ304に関連して動作し、キャッシュ可能なメモリロケーションのコピーをキャッシュした可能性のある複数のプロセッサ全体にわたって、キャッシュコヒーレンシを管理する。各々のエントリ314はメモリ302内のメモリラインに対応する。キャッシュコヒーレンシチップ301は、ASIC等のカスタム集積回路として、プログラム可能なゲートアレイ等の1回限りの、もしくは再プログラム可能な論理装置として、または従来の回路ボードもしくはマルチチップモジュール内で結合される個別のコンポーネントとして、具体化され得る。キャッシュコヒーレンシチップ301は、メモリアドレスを用いてキャッシュコヒーレンシディレクトリ304にアクセスする。キャッシュコヒーレンシディレクトリ304は、特定のメモリバンクデータ部分320の共有メモリアドレス空間内の、各メモリラインのためのマルチビットエントリ314を含む。キャッシュディレクトリ314は複数のエントリ314を含み、各々はある特定の例では36ビット幅である。各々のエントリ314は、対応するメモリラインの現在の状態を示す値を含む。
【0031】
この発明に従って、各々のメモリバンクの共有アドレス空間のある部分がハードウェアセマフォに割当てられ、以下「ハードウェアセマフォ部分」と称される。ハードウェアセマフォ部分への参照は、従来のメモリ部分302よりもむしろ、セマフォ制御装置302に送信される。アドレス空間のハードウェアセマフォ部分は、キャッシュ不可能として指定される。ある特定の例では、ハードウェアセマフォ部分の大きさは、約4Kバイトの固定されたアドレス空間をシステム内の各々の物理的なプロセッサに割当てるよう選択される。このため321個のプロセッサを備えたシステムは、合計1.25MBをメモリバンク205の中に広げて、ハードウェアセマフォ制御装置303に割当てる。例示的なシステムでは、利用可能な全体のアドレス空間は64GBのオーダか、またはそれ以上である。このため、ハードウェアセマフォに割当てられた部分は比較的小さい。
【0032】
実行プロセスには、仮想記憶管理システムによってハードウェアセマフォ部分内においてアドレス空間を指定できないので、通常のメモリ読出/書込動作は、従来のメモリ部分302内にロケーションをアドレス指定する。この発明は新しいシステムコールを動作システムコードに導入し、セマフォ制御装置302内の1つ以上の物理的なセマフォレジスタをプロセスの共通のアドレス空間にマッピングするものである。これにより、従来のメモリ動作によってハードウェアセマフォレジスタでデータを、プロセスが読出しおよび書込むことが可能となる。
【0033】
ある「n」個の物理的なプロセッサを有する任意のマルチプロセッサシステムのために、任意の所与のときに実行されるOSプロセスに加えて、実行される「n」個のプロセスがあってもよい。各々のプロセスはそれ自身のセマフォレジスタを有するべきであり、このためシステムは、n+1個のセマフォレジスタをサポートすべきである。
【0034】
セマフォ動作の最小単位は、セマフォを読出すかまたは操作する別の動作が行われ得る前に、セマフォ値を操作するいかなる動作も完了させることを確実とするために重要である。好ましい実現例においては、メモリ動作の逐次化は、図1に示されるブリッジ制御装置107の制御下にある。ブリッジ制御装置107は、アンキャッシュアドレス空間に影響を与えるメモリ動作に順序を課す、「フェンス動作」と称されるメカニズムを含む。プログラマーは、フェンス動作を用いて正確さを確実なものにする。これらのメカニズムは、いかなるキャッシュ読出/書込またはアンキャッシュ読出動作も行われることが可能となる前に、アンキャッシュメモリ参照が完了することを確実にする。アンキャッシュメモリ参照は、アドレス空間のハードウェアセマフォ部分を含む、アドレス空間のアンキャッシュ領域を特定するメモリ動作である。これらのメカニズムは、この発明に関連して類似の態様で動作し、ブリッジ制御装置107にとってアンキャッシュメモリ動作として現われるセマフォ操作を確実に逐次化する。これは、アンキャッシュハードウェアセマフォ領域303へのすべての参照が逐次化されることを暗に保証している。この機能は、セマフォ書込動作の間メモリバスをストールする先行技術の方法に類似している。しかしながら、ここに説明されている方法でこれらのメモリトランザクションをストールすることにより、不利な影響が大いに削減される。セマフォ変更動作は、先のバスストール技術がもたらす数百以上ものクロックサイクルに比べて、完了するのにわずか6クロックサイクルしか費やさないことが企図される。
【0035】
図4は、全メモリアドレス空間のコンテキスト内の、セマフォレジスタの例示的なレイアウトを図示する概念図を示す。リニアアドレス空間401は、独立した、または共通の実行プロセスの所与の組に指定されたアドレス空間の共通のブロックを表わす。物理的なアドレス空間402は、利用可能な物理的なメモリを表わし、(図3に示される)メモリ部分302および303はそこで物理的に具体化される。図4に示されるように、いくつかの物理的なメモリラインが、ハードウェアセマフォレジスタ303に割当てられる。特定の例では、各々のメモリラインは64ビット幅であるので、通常の動作においてメモリ読出および書込は、8バイト幅のデータの群で実行される。
【0036】
ハードウェアセマフォメモリ領域303は、ハードウェアセマフォレジスタのクラスタを保持する。レジスタのクラスタは好ましくは、複数のプロセスにより共有される共通のリニアアドレス空間にマッピングされる。注目すべきは、メモリ管理システムおよび/またはマイクロプロセッサアーキテクチャが、いくらかの実質的な制限をセマフォレジスタの大きさおよび編成に課すという点である。特定の例では、セマフォ「クラスタ」は4KBの境界で割当てられるが、これはプロセッサの仮想メモリ(VM)管理が、そういう単位にまで、マルチプロセッシング保護メカニズムに対し備えているからである。セマフォレジスタ割当の管理は、制御装置304内のある特定のハードウェアセマフォレジスタを、VMシステムによってある特定のプロセスに割当てるかまたは指定することを含むので、単一のレジスタが無関係のプロセスに指定されることを防ぐことができる。クラスタレベルでの管理により、たとえば、レジスタごとに個々のまたは小さなグループのハードウェアセマフォレジスタを効率的に割当てることができる。
【0037】
図4の分解部分に例示されるように、各々のメモリラインは、1つ(1)の64ビットまたは2つ(2)の32ビットのセマフォレジスタ、2つのセマフォレジスタ403のどちらかを保持する。特定の例では、例示的な具体化例における各々のセマフォレジスタ403は32ビット幅である。セマフォ内の各々のビットの意味および使用は、アプリケーション自身に任される。
【0038】
図5および図6は、セマフォ303の内容を読出および書込むために用いられる、例示的なアドレス指定のフォーマットを図示する。これらの例は、(図5に示される)32ビット仮想アドレス、および(図6に示される)36ビット物理的アドレスとされる。両方の場合とも、ビット[0:2]は、メモリが64または32ビット動作として参照されるかどうかを判断するために提供されるバイトオフセットビットであり、ビット[3:4]はレジスタのための動作コード指示子であり、ビット[5:11]はクラスタ内のある特定のセマフォを示す。仮想アドレスの残りのビット[12:31]は、当該のセマフォクラスタの仮想ベースを示す。図6に示される物理的なアドレスフォーマットでは、ビット[12:19]は、図4に示される複数のクラスタ内の、ある特定のクラスタを識別するためのクラスタ番号を示す。セマフォの物理的なベースは、図6に示されるようにビット[20:35]により示される。
【0039】
クラスタ内のいずれかの特定の32ビットハードウェアセマフォにアクセスするために、アドレスが、仮想クラスタのベースアドレスをセマフォ番号および読出/書込動作コードと組合せることにより算出される。動作コードは、表1に示されるようにワードセレクト(WS)ビットに符号化される。
【0040】
【表1】
【0041】
以下は、表1で説明された読出動作を簡潔に要約したものである。
Test/ShrRead(WS=00b)
要求されたセマフォレジスタの内容を読出し、および戻す。
【0042】
要求されたセマフォレジスタのビット(20)を読出し、および戻す。
【0043】
セマフォレジスタビット20を非ゼロ値(すなわち、=1)にセット。
要求されたセマフォレジスタの内容を読出し、および戻す。
【0044】
読出の後、要求されたセマフォレジスタの32または64ビット符号付きインクリメント。
【0045】
要求されたセマフォレジスタの内容を読出し、および戻す。
【0046】
読出の後、要求されたセマフォレジスタの32または64ビット符号付きデクリメント。
【0047】
以下は、表1に示された書込動作を簡潔に説明する。
書込パケットからの32または64ビットデータを、要求されたセマフォレジスタに記憶。
【0048】
注:セマフォレジスタのセットは、ビット20=1で任意のデータ値(レジスタ/イミーディエイト)を書込むことにより達成される。
【0049】
要求された32または64ビットセマフォレジスタの内容をゼロにする。
【0050】
書込パケットからの32または64ビットデータと、要求されたセマフォレジスタとの論理積。
【0051】
書込パケットからの32または64ビットデータと、要求されたセマフォレジスタとの論理和。
【0052】
表2は、インテルアーキテクチャ32(IA32)命令セットを用いるメモリ参照および対応するセマフォ動作の例を説明する。図2では、「%edi」は4KBセマフォ領域である、現在の指定されたクラスタのベースを指す。
【0053】
【表2】
【0054】
アトミック動作は、バスロックを全く確立することなく1つのメモリ参照で完了され得る。したがって、この発明に従ったハードウェアセマフォの具体化例は、従来のアンキャッシュアトミック動作のほぼ半分のメモリトラヒックを有し、またキャッシュセマフォのためのメモリ/コヒーレンシトラヒックがさらに減少する可能性を有する。いずれのセマフォ参照もメモリバスロックを全く確立することなく完了するので、他のバスエージェントがメモリリソースにアクセスすることを可能にする。この具体化により、第3のネットワークの必要性が軽減される。さらにこの発明は、既存のメモリ管理能力を用いて、複数のプロセッサを1つのメモリ空間(共通のクラスタにアクセスする複数の物理的なプロセッサ)にマッピングする。同時に参照する1つ以上のプロセッサからの、ある特定のセマフォレジスタへのいずれのアトミック動作も、1つのメモリ参照で完了する。ハードウェアデッドロック条件はおそらくなく、2つ以上のプロセッサ間のデッドロック状態を検出するための、高価で複雑なロジックの必要性をなくす。
【0055】
この発明はある程度詳細に説明および例示されてきたが、本開示は例によってのみなされ、また前掲の請求項で示されるように、この発明の精神および範囲から逸脱することなしに、当業者は部分的な組合せおよび配置における多くの変更に頼ることができることが理解される。
【図面の簡単な説明】
【図1】この発明が具体化されるマルチプロセッサコンピュータ環境を示す図である。
【図2】この発明に従った例示的なマルチプロセッサの部分を示す図である。
【図3】この発明に従ったメモリバンクに関連するキャッシュコヒーレンシメカニズムを示す図である。
【図4】この発明に従ったセマフォメカニズムの動作を例示するメモリマッピングの図である。
【図5】セマフォ303の内容を読出しおよび書込むために用いられる、例示的なアドレス指定のフォーマットを示す図である。
【図6】セマフォ303の内容を読出しおよび書込むために用いられる、例示的なアドレス指定のフォーマットを示す図である。
【発明の分野】
この発明は、一般にマイクロプロセッサシステムに関し、特に、マルチプロセッサコンピュータシステム内でアトミック動作を実行するためのソフトウェア、システムおよび方法に関する。
【0002】
【関連の背景】
マイクロプロセッサは、コンピュータプログラムにより特定された命令に従ってデータを操作する。従来のシステムにおける命令およびデータは、メモリバスによってプロセッサに結合されるメモリ内に記憶される。コンピュータプログラムは、並列処理を活かすためにますますコンパイルされる。並列処理により、同時に実行される類似のまたはばらばらの複数のタスクとして、複雑なプログラムの実行が可能となり、性能が向上する。
【0003】
伝統的にマイクロプロセッサは、マイクロプロセッサがメモリアドレス空間を完全に制御する環境において、単一の命令ストリームを処理するよう設計された。マルチプロセッサコンピュータシステムは、並列に動作する複数のデータプロセッサを設けることにより、プログラム実行が向上するよう開発された。初期のマルチプロセッサシステムは、複数のプロセッサのアクティビティを調整するよう特別に設計された特徴を含む、専用のプロセッサを用いた。さらにソフトウェアは、しばしばある特定のマルチプロセッサプラットフォームに特別にコンパイルされた。これらの要因により、マルチプロセッシングの入手および維持が高価なものとなった。
【0004】
低コストで高性能のマイクロプロセッサがますます利用可能になったことにより、汎用のマルチプロセッシングコンピュータが実行可能となる。ここで用いられるように、「マイクロプロセッサ」および「プロセッサ」という用語は、複雑命令セットコンピュータ(CISC)、縮小命令セットコンピュータ(RISC)およびハイブリッドコンピュータを含む。しかしながら、汎用のマイクロプロセッサは典型的には、大規模なマルチプロセッシングのために特別に設計されているわけではない。いくつかのマイクロプロセッサは、共有バス上のシステム内で最高4つまでのプロセッサの構成をサポートする。これらの限界を超えるために、専用のハードウェア、ファームウェアおよびソフトウェアが、システム内のさまざまなマイクロプロセッサのアクティビティを調整するよう利用される必要がある。
【0005】
プロセス間通信および同期は、マルチプロセッサシステムの設計者が直面する、より難しい調整問題のうちの2つである。本質的に、それらの問題は、異なった、そしてしばしば自律したプロセッサ上で実行される関連したプロセス間の状態情報の交換によって、各々のプロセッサのアクティビティを調整することを含む。プロセッサアクティビティを調整できないことは、マルチプロセッサ設計の拡張性においては主たる制限である。プロセッサ数の増加に伴い、この問題を解決することはかなり複雑となっている。
【0006】
状態情報は、「セマフォ」と称されるデータ構造にしばしば実施され、共有メモリリソースまたはセマフォレジスタに記憶され得る。セマフォは本質的に、共通の(すなわち、共有)リソースの状態を示す値を含む、1つのフラグまたはフラグの組である。たとえば、1組のセマフォは、ある特定の共有リソースにロックを確立するために用いられ得る。マルチプロセッサシステム内のすべてのプロセッサにとって、セマフォが利用可能となることが望ましい。
【0007】
セマフォは、継続的にさまざまなプロセスによってアクセスされ、変更され、そしてさまざまなプロセスと通信される。セマフォ操作は典型的には、テスト、セット、テストおよびセット、書込、クリアならびにフェッチ等の、比較的単純な動作の、1つの小さな組を含む。これらの動作は時折、いくつかの基本的な数学または論理演算(たとえば、インクリメント、デクリメント、AND、OR)との組合せで行なわれる。セマフォがメモリ常駐であるとき、セマフォへのアクセスは、セマフォデータが読出され、更新され、セマフォレジスタ構造にライトバックされるという点において、メモリ動作(たとえば、読出/書込またはロード/記憶動作)に類似した態様で達成される。このプロセスはしばしば、「読出−変更−書込」サイクルと称される。
【0008】
これらのセマフォ管理動作は、典型的には、プロセッサのキャッシュ/内部レジスタへのセマフォの転送と、セマフォ値の更新と、更新されたセマフォのセマフォレジスタ構造への返送とを含む。セマフォ管理動作がペンディング状態であるか、またはフライト中である間(たとえば、セマフォが別のプロセッサにより操作されているとき)、プロセッサがセマフォ値を操作(すなわち、変更)できないという理由から、セマフォ操作はアトミック動作でなければならない。したがってメモリマップドセマフォ操作は、典型的な読出−変更−書込サイクルの間バスロックまたは他のロックメカニズムを包含し、最小単位を保証する。しかしながらバスロックは、すべてのプロセッサが共通のバスを共有しない限り実行不可能なことがあり、マルチプロセッサ設計の性能および拡張性に強い影響を与える。さらに、アトミック動作を確実にするためのいくつかのメカニズムは、マイクロプロセッサ命令セットアーキテクチャ(ISA)の特別の命令に依存する。このような必要性により、プロセッサ選択において柔軟性が大いに制限される。従来のアトミックメモリ動作に伴うロックペナルティを被らない、メモリマップドセマフォレジスタを操作するための方法およびシステムが必要である。
【0009】
最小単位は、セマフォをキャッシュ可能にし、キャッシュコヒーレンシメカニズム、例えばMESIプロトコル等を用いることにより、最小単位を強要することで保証される。または、セマフォはキャッシュ不可能とされ得るので、それは共有メモリ空間内のみに存在し、使用されるプロセッサバスロックメカニズムは、セマフォ管理動作が完了するまですべてのプロセッサ通信を妨げる。いずれの場合においても、セマフォが多くのプロセッサ数によって同時に共有されているとき、性能および具体化に関する問題が生じる。
【0010】
キャッシュセマフォの使用には、1つのプロセッサがセマフォを変更し、次いでその変更を、そのセマフォのコピーを有する他のすべてのキャッシュに伝達することが必要とされる。書込アクセスでキャッシュラインを1つのプロセッサから別のプロセッサに移行することには、1つ以上のキャッシュコヒーレンシ動作およびそれらに伴う応答に加えて、複数のメモリ読出トランザクションが頻繁に伴う。キャッシュラインへの排他的なアクセスを獲得するための待ち時間は、ラインへのアクセスを同時に共有するプロセッサの数の関数である。このため、MESIプロトコル等のキャッシュコヒーレンシメカニズムを用いると、十分に基準化しない。(特に、書込割当キャッシュポリシーを用いて)メモリをキャッシュ可能に構成することが望ましい場合、およびキャッシュコヒーレンシプロトコルが40個以上のプロセッサをサポートするよう設計されることが望ましい場合、多くのプロセッサ数がプログラムフローを同期化するために、共有メモリロケーションを用いる並列アプリケーションが存在することは避けられないであろう。
【0011】
ホストバスロックは、非常に強制的な態様で最小単位を保証する。アンキャッシュメモリを伴うIA32命令セットでのアトミック動作サポートは、2つのバス動作、すなわち読出と、それに続く書込とを必要とする。これらの動作が行なわれる間バスロックが確立され、これにより、使用されていないバスバンド幅に他のプロセッサがアクセスし、これを利用することを防ぐ。このことは、複数のプロセッサおよび他のコンポーネントがホストバスを共有するコンピュータシステムでは、システムデッドロックのための条件を作り出す可能性があり、特に不利益である。ホストバスを用いるいずれかのエージェントによってバスロックを確立することにより、他のプロセッサがメモリをターゲットとするいずれのバストランザクションをも、開始または完了させ得ることを妨ぐ。
【0012】
類似の問題がいずれのアトミックメモリ動作についても存在する。アトミックメモリ動作は、読出または書込動作が共有メモリロケーションに合わせて行われる動作である。共有メモリロケーションがアンキャッシュである時でさえ、共有メモリロケーションにアクセスしているいずれのプロセッサも、アトミック動作が完了するまでロケーションの読出を確実に防げられるような態様で、アトミックメモリ動作を完了する必要がある。
【0013】
より複雑なマルチプロセッサアーキテクチャは、各々のプロセッサボードが共有フロントサイドバスとともに結合される複数のプロセッサを含む、複数のプロセッサボードを組合せる。このようなシステムでは、複数のボードは互いに相互接続され、かつフロントサイドバスから独立した相互接続ネットワークを用いるメモリと相互接続される。本質的にマルチプロセッシングボードの各々は、独立したフロントサイドバスを有する。フロントサイドバスはすべてのシステムプロセッサにより共有されているわけではないので、フロントサイドバスでのみ動作するバスロックおよびバススヌープ等のコヒーレンシメカニズムの実現は、不可能ではないが困難である。
【0014】
このためセマフォ管理動作は、単にオーバーヘッドであるバスバンド幅を消費する。したがって、オーバーヘッドを最小限にするよう効率的に動作する、セマフォ管理メカニズムおよび方法を提供することが望ましい。より具体的には、キャッシュコヒーレンシメカニズムまたはバスロックメカニズムのいずれにも依存することのない、セマフォ管理を提供するための手段が必要とされている。
【0015】
【発明の概要】
簡潔に述べると、この発明は、複数のデータ処理ユニットを含むマルチプロセッサ内でセマフォを具体化するための方法および装置を含む。共有アドレス空間を有する複数のメモリバンクが、プロセッサに結合され、プロセッサとメモリバンクとの間のデータの読出および書込を可能にする。複数のセマフォレジスタがメモリバンクの共有アドレス空間内で具体化され、セマフォレジスタは、セマフォレジスタに割当てられた共有アドレス空間の部分に向けられたメモリ動作を用いるプロセッサによって、アクセス可能である。
【0016】
別の局面では、この発明は、複数のプロセッサがメモリ要求を生成する、マルチプロセッサコンピューティングシステムを動作する方法を含む。複数のメモリバンクが共有アドレス空間を有するよう設けられ、データを読出しおよび書込むメモリ要求に応答する。クロスバネットワークは複数のプロセッサを複数のメモリバンクに結合する。各々のメモリバンク内の共有アドレス空間のある部分は、セマフォレジスタの専用とされる。メモリの専用部分は、キャッシュ不可能として指定される。複数のプロセスが、複数のプロセッサのうちの1つ以上のプロセッサ上で実行される。実行時には、共有アドレス空間のある部分は複数のプロセスに割当てられる。好ましくは、ある特定のメモリバンク内の少なくとも1つの物理的なセマフォレジスタは、その特定のメモリバンク内の複数のプロセスに割当てられる共通のアドレス空間にマッピングされる。
【0017】
【好ましい実施例の詳細な説明】
一般的には、この発明は「セマフォレジスタ」として、小さく、固定された範囲の共有メモリの割当を含む。セマフォレジスタは、フラグ、カウンタなど等の状態情報を保持するデータ構造である。セマフォ操作は典型的には、非常に「簡単な」動作を含み、それはいくつかの基本的な動作(すなわち、インクリメント、デクリメント、AND、OR、など)を備えた、テスト、書込、セット、クリア、テストおよびセット、ならびにフェッチを含む。セマフォはしばしば、複数のソフトウェアプロセスの中で情報および/またはリソースを共有するために用いられる。セマフォレジスタは一種のアンキャッシュメモリ構造を表わす。
【0018】
この発明の重要な特徴は、事実上すべてのマイクロプロセッサによりサポートされる従来の「読出」および「書込」メモリ参照を用いる、メモリマップドレジスタ上でアトミック動作がそれによって実行され得る機構を提供することである。しかしながら、この発明はセマフォを操作することにおける、読出/変更/書込サイクルの必要性を軽減する。
【0019】
この発明に従って、セマフォレジスタはメモリバンク上に常駐し、共有アドレス空間のある部分を割当てられているので、マルチプロセッサシステム内のすべてのプロセッサが実質的に均一な待ち時間でそれらにアクセスする。また、共有メモリが用いられているので、セマフォトラヒックを専用に管理するための専用のネットワークを必要とすることなく、既存のプロセッサ・メモリ間の通信ネットワークを使用することができる。さらにセマフォ操作は、読出および書込動作等の基本的なメモリ動作によって達成されるので、事実上、いずれのマイクロプロセッサおよび命令セットアーキテクチャも用いることができる。
【0020】
この発明は、一体化されたキャッシュメモリを有するいくつかの実質的に同一のマイクロプロセッサを含む、汎用のマルチプロセッシングコンピューティングシステムに関して例示および説明される。この種類のコンピューティングシステムは、この発明の特徴および原理を例示するのに優れたツールであるが、異なる種類のプロセッサのセットも用いることができることが理解されるべきである。いくつかのプロセッサは一体化されたキャッシュを含んでいてもよく、いくつかのプロセッサは外部キャッシュを含んでいてもよく、さらに他のプロセッサはキャッシュを全く有していなくてもよい。この発明は共有メモリシステムに関して例示されるが、ある局面では区分されたメモリシステムでの適用も有する。したがって、ここに与えられる特定の例は、例示および理解のために提供されており、特に説明されない限りこの発明の限定として見なされるべきではない。さらに、この発明の重要な特徴は、それが容易に上向きおよび下向きに調整されて、ある特定の適用例の必要に応じることである。したがって反対に特定されない限り、この発明は、極めて大きくより複雑なネットワーク環境、および従来のローカルエリアネットワーク(LAN)システム等の小さなネットワーク環境に適用できる。
【0021】
図1は、この発明が実現されるマルチプロセッサコンピュータ環境を示す。マルチプロセッサコンピュータシステム100は、N個のプロセッサボード101を組込む。各々のプロセッサボード101は、論理的にプロセッサノード101と称される。各々のプロセッサボード101は、特定の例では、一体化されたキャッシュメモリを有する、プロセッサP1およびP2等の1つ以上のマイクロプロセッサを含む。プロセッサボード101は、共通のフロントサイドバス(FSB)104を共有し、さらにブリッジ107を通じてホストバスネットワーク102に達する共通のゲートウェイを共有するグループで構成され得る。ある例示的なプロセッサは、単一のプロセッサおよび最高で4つまでのプロセッサの対称型マルチプロセッサ(SMP)として構成され得る、インテル社(Intel Corporation)によって製造されるペンティアム(R)IIIジーオン(XEON)(商標)プロセッサである。複数のSMPシステムのクラスタ設計も利用可能である。
【0022】
プロセッサ101は、相互接続ネットワーク102を介して共有メモリ103に双方向に結合される。相互接続ネットワーク102は好ましくは、フルクロスバ接続を具体化し、いずれのプロセッサボード101も、いずれのメモリバンク105内で具体化されるいずれのメモリロケーションにもアクセスすることが可能となる。共有メモリ103は、複数のM個のメモリバンク105として構成される。各々のメモリバンク105はそれ自体が、メモリコンポーネントの群を含み得る。好ましくは、共有メモリ103は複数の「ライン」として編成され、各々のラインは、プロセッサ101内における、アーキテクチャにより規定されたキャッシュのラインサイズに基づいた大きさにされる。メモリまたはキャッシュ内のラインは、最小のアクセス可能なデータの単位であるが、この発明は、ライン内でのアドレス指定を可能にするメモリアーキテクチャをサポートする。
【0023】
各々のプロセッサボード101は、フロントサイドバス(FSB)ゲートウェイインターフェイス106を含むことができ、これによりローカルメモリ108および周辺コンポーネント相互接続(PCI)ブリッジ110へのアクセスを可能にする。特定の例では、ローカルメモリ108は共有メモリ103のアドレス空間に含まれず、FSBクロスバ106と同じフロントサイドバス104に結合されるプロセッサP1およびP2の中でのみ共有される。PCIブリッジ110は、従来のPCIデバイスが、たとえば外部ネットワーク111および/または記憶装置112にアクセスすること、およびそれらへの接続を管理することをサポートする。いくつかのプロセッサボード101は、PCIデバイスが他のボード101を介して利用可能な場合、PCIブリッジ機能をなくし得ることが企図される。
【0024】
注目すべきは、各々のプロセッサボード101のフロントサイドバス104が、他のすべてのプロセッサボード101のフロントサイドバス104から独立していることである。したがって、アトミック動作を実行するために、たとえばIA32命令セットによって提供されるいずれのメカニズムも、異なったボード101上に位置するプロセッサ間にあるようには動作しない。
【0025】
プロセッサP1またはP2が、メモリ103内でターゲットロケーションからのロードまたはターゲットロケーションへの記憶を必要とする命令を実行すると、メモリ動作が行なわれる。メモリ動作を実行する際、プロセッサは第1に、ターゲットメモリロケーションがキャッシュ内で表わされ、有効で、かつアクセス可能であるかどうかを判断する。キャッシュは、メモリ動作を実行するプロセッサのボード上にあってもよいし、または外部キャッシュメモリ内にあってもよい。キャッシュミスの場合、メモリ動作はブリッジ107によって処理される。ブリッジ107は、アクセス要求をホストバスネットワーク102に対して生成し、ターゲットロケーションアドレスと、動作の種類(たとえば、読出/書込)と、ある特定の実現例で必要とされ得る他の制御情報とを特定する。共有メモリ103は要求を受取り、特定されたメモリロケーションにアクセスする。読出動作の場合、要求されたデータは、ホストバスネットワーク102を通り、そしてアクセス要求を生成したブリッジ107に宛てられた応答によって戻される。書込トランザクションは、書込が行なわれたという肯定応答を返すことができる。共有メモリ103内でエラーが生じた場合、ブリッジ107への応答は、エラーについての情報を示す状態コードを含み得る。
【0026】
図2は、ある特定の実現例およびこの発明の実現例をサポートする相互接続ストラテジを例示する。図2の実現例では、SEGMENT_0からSEGMENT_15と示された16のセグメントがある。各々のセグメントはプロセッサグループ201を含む。ある特定の例でのプロセッサグループ201は、32個のプロセッサを含み、各々は、双方向データおよびコマンドインターフェイスを介してプロセッサスイッチ202に結合される。プロセッサスイッチ202は、各々のメモリバンクグループ205のための中継線214への出力を含む。同様に各々のメモリスイッチ203は、各々のプロセッサグループ201のための中継線214への出力を含む。この態様では、いずれのプロセッサグループも、プロセッサスイッチ202およびメモリスイッチ203の適切な構成により、いずれのメモリバンクグループへも選択的に結合され得る。
【0027】
図3は、この発明に従ったメモリバンク205に関連した重要なセマフォ管理メカニズムを示す。メモリスイッチ203は(図2に図示される)中継線214と通信し、メモリ制御装置301へのメモリアクセス要求を送信および受信する。メモリアクセス要求を受信すると、メモリスイッチ203はターゲットメモリアドレスおよびプロセッサノード識別を含む情報、ならびに制御およびモード情報をメモリ制御装置301に渡す。ターゲットメモリアドレスは、メモリバンクデータ部分302内のロケーション、またはセマフォ制御装置302に割当てられたメモリアドレス空間のある部分を指す。
【0028】
プロセッサIDは、メモリ動作を行なっているマルチプロセッサシステム内の独自のプロセッサノード101を示す値である。ある特定の実施例では、この情報は、さまざまな種類の情報のために規定されたフィールドを有するデータパケットとして、スイッチ203とメモリバンク301内のメモリ制御装置301との間で渡される。このデータパケットの特定のレイアウトは、ある特定の実現例の必要に応じて選択される。
【0029】
共有アドレス空間の大部分は、メモリ302内のデータおよび命令のために割当てられる。メモリ302は複数のメモリライン312として編成され、キャッシュラインとも呼ばれる。ある特定の例では、各々のメモリライン312は256ビット幅であり、メモリ302は、具体化される物理的なメモリの量による可変数のラインを含む。メモリ302は、実質的に従来の態様で、利用可能なメモリ管理および割当メカニズムを用いる実行プロセスに割当てられる。典型的には実行プロセスの群は、実行時にそれらのプロセスに割当てられる共通のアドレス空間を共有する。典型的にはすべてまたは大部分の従来のメモリ領域302は、キャッシュ可能なメモリとして指定される。
【0030】
キャッシュコヒーレンシユニット305は、キャッシュディレクトリ304に関連して動作し、キャッシュ可能なメモリロケーションのコピーをキャッシュした可能性のある複数のプロセッサ全体にわたって、キャッシュコヒーレンシを管理する。各々のエントリ314はメモリ302内のメモリラインに対応する。キャッシュコヒーレンシチップ301は、ASIC等のカスタム集積回路として、プログラム可能なゲートアレイ等の1回限りの、もしくは再プログラム可能な論理装置として、または従来の回路ボードもしくはマルチチップモジュール内で結合される個別のコンポーネントとして、具体化され得る。キャッシュコヒーレンシチップ301は、メモリアドレスを用いてキャッシュコヒーレンシディレクトリ304にアクセスする。キャッシュコヒーレンシディレクトリ304は、特定のメモリバンクデータ部分320の共有メモリアドレス空間内の、各メモリラインのためのマルチビットエントリ314を含む。キャッシュディレクトリ314は複数のエントリ314を含み、各々はある特定の例では36ビット幅である。各々のエントリ314は、対応するメモリラインの現在の状態を示す値を含む。
【0031】
この発明に従って、各々のメモリバンクの共有アドレス空間のある部分がハードウェアセマフォに割当てられ、以下「ハードウェアセマフォ部分」と称される。ハードウェアセマフォ部分への参照は、従来のメモリ部分302よりもむしろ、セマフォ制御装置302に送信される。アドレス空間のハードウェアセマフォ部分は、キャッシュ不可能として指定される。ある特定の例では、ハードウェアセマフォ部分の大きさは、約4Kバイトの固定されたアドレス空間をシステム内の各々の物理的なプロセッサに割当てるよう選択される。このため321個のプロセッサを備えたシステムは、合計1.25MBをメモリバンク205の中に広げて、ハードウェアセマフォ制御装置303に割当てる。例示的なシステムでは、利用可能な全体のアドレス空間は64GBのオーダか、またはそれ以上である。このため、ハードウェアセマフォに割当てられた部分は比較的小さい。
【0032】
実行プロセスには、仮想記憶管理システムによってハードウェアセマフォ部分内においてアドレス空間を指定できないので、通常のメモリ読出/書込動作は、従来のメモリ部分302内にロケーションをアドレス指定する。この発明は新しいシステムコールを動作システムコードに導入し、セマフォ制御装置302内の1つ以上の物理的なセマフォレジスタをプロセスの共通のアドレス空間にマッピングするものである。これにより、従来のメモリ動作によってハードウェアセマフォレジスタでデータを、プロセスが読出しおよび書込むことが可能となる。
【0033】
ある「n」個の物理的なプロセッサを有する任意のマルチプロセッサシステムのために、任意の所与のときに実行されるOSプロセスに加えて、実行される「n」個のプロセスがあってもよい。各々のプロセスはそれ自身のセマフォレジスタを有するべきであり、このためシステムは、n+1個のセマフォレジスタをサポートすべきである。
【0034】
セマフォ動作の最小単位は、セマフォを読出すかまたは操作する別の動作が行われ得る前に、セマフォ値を操作するいかなる動作も完了させることを確実とするために重要である。好ましい実現例においては、メモリ動作の逐次化は、図1に示されるブリッジ制御装置107の制御下にある。ブリッジ制御装置107は、アンキャッシュアドレス空間に影響を与えるメモリ動作に順序を課す、「フェンス動作」と称されるメカニズムを含む。プログラマーは、フェンス動作を用いて正確さを確実なものにする。これらのメカニズムは、いかなるキャッシュ読出/書込またはアンキャッシュ読出動作も行われることが可能となる前に、アンキャッシュメモリ参照が完了することを確実にする。アンキャッシュメモリ参照は、アドレス空間のハードウェアセマフォ部分を含む、アドレス空間のアンキャッシュ領域を特定するメモリ動作である。これらのメカニズムは、この発明に関連して類似の態様で動作し、ブリッジ制御装置107にとってアンキャッシュメモリ動作として現われるセマフォ操作を確実に逐次化する。これは、アンキャッシュハードウェアセマフォ領域303へのすべての参照が逐次化されることを暗に保証している。この機能は、セマフォ書込動作の間メモリバスをストールする先行技術の方法に類似している。しかしながら、ここに説明されている方法でこれらのメモリトランザクションをストールすることにより、不利な影響が大いに削減される。セマフォ変更動作は、先のバスストール技術がもたらす数百以上ものクロックサイクルに比べて、完了するのにわずか6クロックサイクルしか費やさないことが企図される。
【0035】
図4は、全メモリアドレス空間のコンテキスト内の、セマフォレジスタの例示的なレイアウトを図示する概念図を示す。リニアアドレス空間401は、独立した、または共通の実行プロセスの所与の組に指定されたアドレス空間の共通のブロックを表わす。物理的なアドレス空間402は、利用可能な物理的なメモリを表わし、(図3に示される)メモリ部分302および303はそこで物理的に具体化される。図4に示されるように、いくつかの物理的なメモリラインが、ハードウェアセマフォレジスタ303に割当てられる。特定の例では、各々のメモリラインは64ビット幅であるので、通常の動作においてメモリ読出および書込は、8バイト幅のデータの群で実行される。
【0036】
ハードウェアセマフォメモリ領域303は、ハードウェアセマフォレジスタのクラスタを保持する。レジスタのクラスタは好ましくは、複数のプロセスにより共有される共通のリニアアドレス空間にマッピングされる。注目すべきは、メモリ管理システムおよび/またはマイクロプロセッサアーキテクチャが、いくらかの実質的な制限をセマフォレジスタの大きさおよび編成に課すという点である。特定の例では、セマフォ「クラスタ」は4KBの境界で割当てられるが、これはプロセッサの仮想メモリ(VM)管理が、そういう単位にまで、マルチプロセッシング保護メカニズムに対し備えているからである。セマフォレジスタ割当の管理は、制御装置304内のある特定のハードウェアセマフォレジスタを、VMシステムによってある特定のプロセスに割当てるかまたは指定することを含むので、単一のレジスタが無関係のプロセスに指定されることを防ぐことができる。クラスタレベルでの管理により、たとえば、レジスタごとに個々のまたは小さなグループのハードウェアセマフォレジスタを効率的に割当てることができる。
【0037】
図4の分解部分に例示されるように、各々のメモリラインは、1つ(1)の64ビットまたは2つ(2)の32ビットのセマフォレジスタ、2つのセマフォレジスタ403のどちらかを保持する。特定の例では、例示的な具体化例における各々のセマフォレジスタ403は32ビット幅である。セマフォ内の各々のビットの意味および使用は、アプリケーション自身に任される。
【0038】
図5および図6は、セマフォ303の内容を読出および書込むために用いられる、例示的なアドレス指定のフォーマットを図示する。これらの例は、(図5に示される)32ビット仮想アドレス、および(図6に示される)36ビット物理的アドレスとされる。両方の場合とも、ビット[0:2]は、メモリが64または32ビット動作として参照されるかどうかを判断するために提供されるバイトオフセットビットであり、ビット[3:4]はレジスタのための動作コード指示子であり、ビット[5:11]はクラスタ内のある特定のセマフォを示す。仮想アドレスの残りのビット[12:31]は、当該のセマフォクラスタの仮想ベースを示す。図6に示される物理的なアドレスフォーマットでは、ビット[12:19]は、図4に示される複数のクラスタ内の、ある特定のクラスタを識別するためのクラスタ番号を示す。セマフォの物理的なベースは、図6に示されるようにビット[20:35]により示される。
【0039】
クラスタ内のいずれかの特定の32ビットハードウェアセマフォにアクセスするために、アドレスが、仮想クラスタのベースアドレスをセマフォ番号および読出/書込動作コードと組合せることにより算出される。動作コードは、表1に示されるようにワードセレクト(WS)ビットに符号化される。
【0040】
【表1】
【0041】
以下は、表1で説明された読出動作を簡潔に要約したものである。
Test/ShrRead(WS=00b)
要求されたセマフォレジスタの内容を読出し、および戻す。
【0042】
要求されたセマフォレジスタのビット(20)を読出し、および戻す。
【0043】
セマフォレジスタビット20を非ゼロ値(すなわち、=1)にセット。
要求されたセマフォレジスタの内容を読出し、および戻す。
【0044】
読出の後、要求されたセマフォレジスタの32または64ビット符号付きインクリメント。
【0045】
要求されたセマフォレジスタの内容を読出し、および戻す。
【0046】
読出の後、要求されたセマフォレジスタの32または64ビット符号付きデクリメント。
【0047】
以下は、表1に示された書込動作を簡潔に説明する。
書込パケットからの32または64ビットデータを、要求されたセマフォレジスタに記憶。
【0048】
注:セマフォレジスタのセットは、ビット20=1で任意のデータ値(レジスタ/イミーディエイト)を書込むことにより達成される。
【0049】
要求された32または64ビットセマフォレジスタの内容をゼロにする。
【0050】
書込パケットからの32または64ビットデータと、要求されたセマフォレジスタとの論理積。
【0051】
書込パケットからの32または64ビットデータと、要求されたセマフォレジスタとの論理和。
【0052】
表2は、インテルアーキテクチャ32(IA32)命令セットを用いるメモリ参照および対応するセマフォ動作の例を説明する。図2では、「%edi」は4KBセマフォ領域である、現在の指定されたクラスタのベースを指す。
【0053】
【表2】
【0054】
アトミック動作は、バスロックを全く確立することなく1つのメモリ参照で完了され得る。したがって、この発明に従ったハードウェアセマフォの具体化例は、従来のアンキャッシュアトミック動作のほぼ半分のメモリトラヒックを有し、またキャッシュセマフォのためのメモリ/コヒーレンシトラヒックがさらに減少する可能性を有する。いずれのセマフォ参照もメモリバスロックを全く確立することなく完了するので、他のバスエージェントがメモリリソースにアクセスすることを可能にする。この具体化により、第3のネットワークの必要性が軽減される。さらにこの発明は、既存のメモリ管理能力を用いて、複数のプロセッサを1つのメモリ空間(共通のクラスタにアクセスする複数の物理的なプロセッサ)にマッピングする。同時に参照する1つ以上のプロセッサからの、ある特定のセマフォレジスタへのいずれのアトミック動作も、1つのメモリ参照で完了する。ハードウェアデッドロック条件はおそらくなく、2つ以上のプロセッサ間のデッドロック状態を検出するための、高価で複雑なロジックの必要性をなくす。
【0055】
この発明はある程度詳細に説明および例示されてきたが、本開示は例によってのみなされ、また前掲の請求項で示されるように、この発明の精神および範囲から逸脱することなしに、当業者は部分的な組合せおよび配置における多くの変更に頼ることができることが理解される。
【図面の簡単な説明】
【図1】この発明が具体化されるマルチプロセッサコンピュータ環境を示す図である。
【図2】この発明に従った例示的なマルチプロセッサの部分を示す図である。
【図3】この発明に従ったメモリバンクに関連するキャッシュコヒーレンシメカニズムを示す図である。
【図4】この発明に従ったセマフォメカニズムの動作を例示するメモリマッピングの図である。
【図5】セマフォ303の内容を読出しおよび書込むために用いられる、例示的なアドレス指定のフォーマットを示す図である。
【図6】セマフォ303の内容を読出しおよび書込むために用いられる、例示的なアドレス指定のフォーマットを示す図である。
Claims (19)
- マルチプロセッサデータ処理システムであって、
複数のデータ処理ユニットと、
共有アドレス空間を有する複数のメモリバンクと、
メモリバンクとプロセッサとを結合し、メモリ動作メッセージがメモリからプロセッサまでの間の通信であることを可能にするネットワークと、
従来のメモリ動作に割当てられた共有アドレス空間の第一の部分と、
メモリバンクの共有アドレス空間の第2の部分内で具体化される複数のセマフォレジスタとを含み、セマフォレジスタは、プロセッサによってネットワークを介してアクセス可能である、マルチプロセッサデータ処理システム。 - セマフォレジスタは、メモリバンクの各々に割当てられた、固定された範囲のメモリアドレス空間の中で具体化される、請求項1に記載のシステム。
- セマフォレジスタは、実行時に特定のソフトウェアプロセスに指定される、請求項1に記載のシステム。
- セマフォレジスタが具体化される共有アドレス空間の部分はキャッシュ不可能である、請求項1に記載のシステム。
- セマフォレジスタは、テスト、セット、テスト&セット、クリア、符号付きインクリメント、符号付きデクリメント、および共有読出/書込を含むアトミック動作をサポートする、請求項1に記載のシステム。
- アトミック動作は、本来データ処理ユニットによりサポートされた読出または書込メモリ動作を用いて、セマフォを特定するアドレスに符号化される、請求項5に記載のシステム。
- メモリバンクに結合され、すべてのセマフォ書込動作が完了するまで、いかなるキャッシュ読出/書込またはアンキャッシュ読出動作も行われることを防ぐよう動作する、ブリッジ制御装置をさらに含む、請求項1に記載のシステム。
- マルチプロセッサコンピューティングシステムにおいて状態情報を通信する方法であって、
メモリ要求を生成する複数のプロセッサを提供するステップを含み、各々のメモリ要求は共有アドレス空間内でアドレスを特定し、
各々のメモリバンク内の共有アドレス空間のうちある部分をセマフォレジスタに割当てるステップと、
セマフォレジスタに割当てられた共有アドレス空間の部分内で、ターゲットアドレスを特定するメモリ動作を用いて、複数のプロセッサのうちの任意のプロセッサによって状態情報にアクセスするステップとを含む、方法。 - セマフォレジスタに割当てられた共有アドレス空間の部分をキャッシュ不可能として指定するステップをさらに含む、請求項8に記載の方法。
- 複数のプロセッサのうちの1つ以上のプロセッサ上で複数のソフトウェアプロセスを実行するステップと、
実行時に、共有アドレス空間のうちある部分を複数のプロセスに割当てるステップと、
少なくとも1つの物理的なセマフォレジスタセットを、複数のプロセスに割当てられた共通のアドレス空間にマッピングするステップとをさらに含む、請求項8に記載の方法。 - メモリ要求を生成するステップは、
セマフォレジスタのクラスタが常駐するベースアドレスを示す値を含むメモリ要求において、仮想ベース部分を特定するステップと、
セマフォレジスタのクラスタ内で、ある特定のセマフォレジスタを示す値を含むメモリ要求において、セマフォ識別部分を特定するステップと、
仮想ベース部分とセマフォ識別部分とによって特定されたセマフォで実行されるべきある特定の動作を示す値を特定するステップとをさらに含む、請求項8に記載の方法。 - 状態情報にアクセスするステップは、特定されたセマフォレジスタの内容を読出しおよび戻すステップを含む、請求項8に記載の方法。
- 状態情報にアクセスするステップは、特定されたセマフォレジスタ内のある特定されたビットを読出しおよび戻すステップと、それに続いて、その特定されたビットを非ゼロ値にセットするステップとを含む、請求項8に記載の方法。
- 状態情報にアクセスするステップは、要求されたセマフォレジスタの内容を読出しおよび戻すステップと、それに続いて、その要求されたセマフォレジスタをインクリメントするステップとを含む、請求項8に記載の方法。
- 状態情報にアクセスするステップは、要求されたセマフォレジスタの内容を読出しおよび戻すステップと、それに続いて、特定されたセマフォレジスタの値をデクリメントするステップとを含む、請求項8に記載の方法。
- 状態情報にアクセスするステップは、メモリ要求において特定されたデータを、要求されたセマフォレジスタに記憶するステップを含む、請求項8に記載の方法。
- 状態情報にアクセスするステップは、セマフォレジスタの内容をゼロにセットするステップを含む、請求項8に記載の方法。
- 状態情報にアクセスするステップは、要求において特定されたデータと、特定されたセマフォレジスタにおいて記憶された値との間で、論理AND演算を実行するステップを含む、請求項8に記載の方法。
- 状態情報にアクセスするステップは、要求において特定されたデータと、特定されたセマフォレジスタにおいて記憶された値との間で、論理OR演算を実行するステップを含む、請求項8に記載の方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/638,365 US6594736B1 (en) | 2000-08-15 | 2000-08-15 | System and method for semaphore and atomic operation management in a multiprocessor |
PCT/US2001/008597 WO2002015021A1 (en) | 2000-08-15 | 2001-03-16 | System and method for semaphore and atomic operation management in a multiprocessor |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004506981A true JP2004506981A (ja) | 2004-03-04 |
Family
ID=24559741
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002520083A Withdrawn JP2004506981A (ja) | 2000-08-15 | 2001-03-16 | マルチプロセッサにおけるセマフォおよびアトミック動作の管理のためのシステムおよび方法 |
Country Status (6)
Country | Link |
---|---|
US (1) | US6594736B1 (ja) |
EP (1) | EP1309918A4 (ja) |
JP (1) | JP2004506981A (ja) |
AU (1) | AU2001247527A1 (ja) |
CA (1) | CA2414438C (ja) |
WO (1) | WO2002015021A1 (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007141155A (ja) * | 2005-11-22 | 2007-06-07 | Hitachi Kokusai Electric Inc | マルチコアプロセッサにおけるマルチコア制御方法 |
JP2007529833A (ja) * | 2004-07-15 | 2007-10-25 | 株式会社ソニー・コンピュータエンタテインメント | アウト・オブ・オーダーのdmaコマンドキューにおけるコマンド順序の設定に関する技術 |
Families Citing this family (33)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6925634B2 (en) * | 2001-01-24 | 2005-08-02 | Texas Instruments Incorporated | Method for maintaining cache coherency in software in a shared memory system |
US7089555B2 (en) * | 2001-06-27 | 2006-08-08 | International Business Machines Corporation | Ordered semaphore management subsystem |
US6892258B1 (en) * | 2001-10-26 | 2005-05-10 | Lsi Logic Corporation | Hardware semaphores for a multi-processor system within a shared memory architecture |
US7047365B2 (en) * | 2002-01-22 | 2006-05-16 | International Business Machines Corporation | Cache line purge and update instruction |
US7631196B2 (en) * | 2002-02-25 | 2009-12-08 | Intel Corporation | Method and apparatus for loading a trustable operating system |
US20030172238A1 (en) * | 2002-03-11 | 2003-09-11 | Alexander Tessarolo | Atomically testing and setting or clearing one or more bits stored in a memory location |
JP3798726B2 (ja) * | 2002-04-26 | 2006-07-19 | インターナショナル・ビジネス・マシーンズ・コーポレーション | メモリ・アクセス順序付け及びロック管理の方法、装置、プログラム及び記録媒体 |
AU2003250575A1 (en) * | 2002-08-07 | 2004-02-25 | Mmagix Technology Limited | Apparatus, method and system for a synchronicity independent, resource delegating, power and instruction optimizing processor |
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 |
US7149867B2 (en) * | 2003-06-18 | 2006-12-12 | Src Computers, Inc. | System and method of enhancing efficiency and utilization of memory bandwidth in reconfigurable hardware |
US6954821B2 (en) | 2003-07-31 | 2005-10-11 | Freescale Semiconductor, Inc. | Crossbar switch that supports a multi-port slave device and method of operation |
US7299339B2 (en) | 2004-08-30 | 2007-11-20 | The Boeing Company | Super-reconfigurable fabric architecture (SURFA): a multi-FPGA parallel processing architecture for COTS hybrid computing framework |
US8209492B2 (en) | 2005-06-14 | 2012-06-26 | Hewlett-Packard Development Company, L.P. | Systems and methods of accessing common registers in a multi-core processor |
US7716100B2 (en) * | 2005-12-02 | 2010-05-11 | Kuberre Systems, Inc. | Methods and systems for computing platform |
US9274859B2 (en) * | 2006-05-25 | 2016-03-01 | Nvidia Corporation | Multi processor and multi thread safe message queue with hardware assistance |
US8068114B2 (en) * | 2007-04-30 | 2011-11-29 | Advanced Micro Devices, Inc. | Mechanism for granting controlled access to a shared resource |
US8275947B2 (en) * | 2008-02-01 | 2012-09-25 | International Business Machines Corporation | Mechanism to prevent illegal access to task address space by unauthorized tasks |
US8484307B2 (en) * | 2008-02-01 | 2013-07-09 | International Business Machines Corporation | Host fabric interface (HFI) to perform global shared memory (GSM) operations |
US8214604B2 (en) * | 2008-02-01 | 2012-07-03 | International Business Machines Corporation | Mechanisms to order global shared memory operations |
US8239879B2 (en) * | 2008-02-01 | 2012-08-07 | International Business Machines Corporation | Notification by task of completion of GSM operations at target node |
US8146094B2 (en) * | 2008-02-01 | 2012-03-27 | International Business Machines Corporation | Guaranteeing delivery of multi-packet GSM messages |
US8255913B2 (en) * | 2008-02-01 | 2012-08-28 | International Business Machines Corporation | Notification to task of completion of GSM operations by initiator node |
US8200910B2 (en) * | 2008-02-01 | 2012-06-12 | International Business Machines Corporation | Generating and issuing global shared memory operations via a send FIFO |
US20130157639A1 (en) | 2011-12-16 | 2013-06-20 | SRC Computers, LLC | Mobile electronic devices utilizing reconfigurable processing techniques to enable higher speed applications with lowered power consumption |
US9292442B2 (en) * | 2013-04-11 | 2016-03-22 | Qualcomm Incorporated | Methods and apparatus for improving performance of semaphore management sequences across a coherent bus |
US9153311B1 (en) | 2014-05-27 | 2015-10-06 | SRC Computers, LLC | System and method for retaining DRAM data when reprogramming reconfigurable devices with DRAM memory controllers |
US9530483B2 (en) | 2014-05-27 | 2016-12-27 | Src Labs, Llc | System and method for retaining dram data when reprogramming reconfigurable devices with DRAM memory controllers incorporating a data maintenance block colocated with a memory module or subsystem |
US9563494B2 (en) | 2015-03-30 | 2017-02-07 | Nxp Usa, Inc. | Systems and methods for managing task watchdog status register entries |
US20170078367A1 (en) * | 2015-09-10 | 2017-03-16 | Lightfleet Corporation | Packet-flow message-distribution system |
US11228458B2 (en) * | 2015-09-10 | 2022-01-18 | Lightfleet Corporation | Group-coherent memory |
US10496524B2 (en) * | 2015-12-31 | 2019-12-03 | Synopsys, Inc. | Separating test coverage in software processes using shared memory |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5276847A (en) * | 1990-02-14 | 1994-01-04 | Intel Corporation | Method for locking and unlocking a computer address |
US5428783A (en) * | 1990-11-28 | 1995-06-27 | Motorola, Inc. | Lan based loosely coupled large grain parallel processing method |
US5440752A (en) | 1991-07-08 | 1995-08-08 | Seiko Epson Corporation | Microprocessor architecture with a switch network for data transfer between cache, memory port, and IOU |
US5522029A (en) * | 1993-04-23 | 1996-05-28 | International Business Machines Corporation | Fault tolerant rendezvous and semaphore for multiple parallel processors |
CA2146170C (en) | 1995-04-03 | 2001-04-03 | Matthew A. Huras | Server detection of client process termination |
US5799195A (en) * | 1995-07-24 | 1998-08-25 | Dell Usa, L.P. | Structure and method for detecting occurrence of external events using semaphores |
US5860126A (en) | 1996-12-17 | 1999-01-12 | Intel Corporation | Controlling shared memory access ordering in a multi-processing system using an acquire/release consistency model |
US5922057A (en) | 1997-01-10 | 1999-07-13 | Lsi Logic Corporation | Method for multiprocessor system of controlling a dynamically expandable shared queue in which ownership of a queue entry by a processor is indicated by a semaphore |
US6108756A (en) | 1997-01-17 | 2000-08-22 | Integrated Device Technology, Inc. | Semaphore enhancement to allow bank selection of a shared resource memory device |
US6263425B1 (en) * | 1997-07-08 | 2001-07-17 | National Semiconductor Corporation | Circuit that implements semaphores in a multiprocessor environment without reliance on atomic test and set operations of the processor cores |
US6161169A (en) | 1997-08-22 | 2000-12-12 | Ncr Corporation | Method and apparatus for asynchronously reading and writing data streams into a storage device using shared memory buffers and semaphores to synchronize interprocess communications |
US6430657B1 (en) * | 1998-10-12 | 2002-08-06 | Institute For The Development Of Emerging Architecture L.L.C. | Computer system that provides atomicity by using a tlb to indicate whether an exportable instruction should be executed using cache coherency or by exporting the exportable instruction, and emulates instructions specifying a bus lock |
-
2000
- 2000-08-15 US US09/638,365 patent/US6594736B1/en not_active Expired - Lifetime
-
2001
- 2001-03-16 JP JP2002520083A patent/JP2004506981A/ja not_active Withdrawn
- 2001-03-16 WO PCT/US2001/008597 patent/WO2002015021A1/en active Application Filing
- 2001-03-16 EP EP01920480A patent/EP1309918A4/en not_active Withdrawn
- 2001-03-16 AU AU2001247527A patent/AU2001247527A1/en not_active Abandoned
- 2001-03-16 CA CA002414438A patent/CA2414438C/en not_active Expired - Fee Related
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007529833A (ja) * | 2004-07-15 | 2007-10-25 | 株式会社ソニー・コンピュータエンタテインメント | アウト・オブ・オーダーのdmaコマンドキューにおけるコマンド順序の設定に関する技術 |
JP2007141155A (ja) * | 2005-11-22 | 2007-06-07 | Hitachi Kokusai Electric Inc | マルチコアプロセッサにおけるマルチコア制御方法 |
JP4559958B2 (ja) * | 2005-11-22 | 2010-10-13 | 株式会社日立国際電気 | マルチコアプロセッサにおけるマルチコア制御方法 |
Also Published As
Publication number | Publication date |
---|---|
WO2002015021A1 (en) | 2002-02-21 |
EP1309918A4 (en) | 2008-12-03 |
AU2001247527A1 (en) | 2002-02-25 |
US6594736B1 (en) | 2003-07-15 |
EP1309918A1 (en) | 2003-05-14 |
CA2414438C (en) | 2005-06-07 |
CA2414438A1 (en) | 2002-02-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6594736B1 (en) | System and method for semaphore and atomic operation management in a multiprocessor | |
US11269774B2 (en) | Delayed snoop for improved multi-process false sharing parallel thread performance | |
US10437739B2 (en) | Low-latency accelerator | |
JP5911985B2 (ja) | ローカル物理メモリとリモート物理メモリとの間で共有されるバーチャルメモリのためのハードウェアサポートの提供 | |
JP3849951B2 (ja) | 主記憶共有型マルチプロセッサ | |
US6633967B1 (en) | Coherent translation look-aside buffer | |
US7523260B2 (en) | Propagating data using mirrored lock caches | |
US6920521B2 (en) | Method and system of managing virtualized physical memory in a data processing system | |
Woodacre et al. | The SGI® AltixTM 3000 global shared-memory architecture | |
US20040268044A1 (en) | Multiprocessor system with dynamic cache coherency regions | |
JPH10187645A (ja) | プロセス・ノードの多数のサブノード内にコヒーレンス状態で格納するように構成されたマルチプロセス・システム | |
JP2000250883A (ja) | 不均等メモリ・アクセス・システムにおいてトランザクションのキャンセルによるデータ損失を避けるための方法およびシステム | |
US5765195A (en) | Method for distributing interprocessor interrupt requests via cache memory coherency mechanisms | |
US7003628B1 (en) | Buffered transfer of data blocks between memory and processors independent of the order of allocation of locations in the buffer | |
JPH071489B2 (ja) | コンピュータ装置およびコンピュータ装置においてキャッシュデータアレイ内のデータの不一致を検出して修正する方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A300 | Application deemed to be withdrawn because no request for examination was validly filed |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20080603 |