(57)【要約】複数のデータ処理ユニットを含む方法および装置である。共有アドレス空間を有する複数のメモリバンクは、クロスバ結合によりプロセッサに結合され、プロセッサ間のデータの読出および書込を可能にし、キャッシュコヒーレンシメッセージがメモリからプロセッサに伝送されることを可能にする。複数のセマフォレジスタは、メモリバンクの共有アドレス空間で具体化され、セマフォレジスタは、プロセッサによってクロスバ結合を介してアクセス可能である。【特許請求の範囲】
【請求項１】
マルチプロセッサデータ処理システムであって、
複数のデータ処理ユニットと、
共有アドレス空間を有する複数のメモリバンクと、
メモリバンクとプロセッサとを結合し、メモリ動作メッセージがメモリからプロセッサまでの間の通信であることを可能にするネットワークと、
従来のメモリ動作に割当てられた共有アドレス空間の第一の部分と、
メモリバンクの共有アドレス空間の第２の部分内で具体化される複数のセマフォレジスタとを含み、セマフォレジスタは、プロセッサによってネットワークを介してアクセス可能である、マルチプロセッサデータ処理システム。
【請求項２】
セマフォレジスタは、メモリバンクの各々に割当てられた、固定された範囲のメモリアドレス空間の中で具体化される、請求項１に記載のシステム。
【請求項３】
セマフォレジスタは、実行時に特定のソフトウェアプロセスに指定される、請求項１に記載のシステム。
【請求項４】
セマフォレジスタが具体化される共有アドレス空間の部分はキャッシュ不可能である、請求項１に記載のシステム。
【請求項５】
セマフォレジスタは、テスト、セット、テスト＆セット、クリア、符号付きインクリメント、符号付きデクリメント、および共有読出／書込を含むアトミック動作をサポートする、請求項１に記載のシステム。
【請求項６】
アトミック動作は、本来データ処理ユニットによりサポートされた読出または書込メモリ動作を用いて、セマフォを特定するアドレスに符号化される、請求項５に記載のシステム。
【請求項７】
メモリバンクに結合され、すべてのセマフォ書込動作が完了するまで、いかなるキャッシュ読出／書込またはアンキャッシュ読出動作も行われることを防ぐよう動作する、ブリッジ制御装置をさらに含む、請求項１に記載のシステム。
【請求項８】
マルチプロセッサコンピューティングシステムにおいて状態情報を通信する方法であって、
メモリ要求を生成する複数のプロセッサを提供するステップを含み、各々のメモリ要求は共有アドレス空間内でアドレスを特定し、
各々のメモリバンク内の共有アドレス空間のうちある部分をセマフォレジスタに割当てるステップと、
セマフォレジスタに割当てられた共有アドレス空間の部分内で、ターゲットアドレスを特定するメモリ動作を用いて、複数のプロセッサのうちの任意のプロセッサによって状態情報にアクセスするステップとを含む、方法。
【請求項９】
セマフォレジスタに割当てられた共有アドレス空間の部分をキャッシュ不可能として指定するステップをさらに含む、請求項８に記載の方法。
【請求項１０】
複数のプロセッサのうちの１つ以上のプロセッサ上で複数のソフトウェアプロセスを実行するステップと、
実行時に、共有アドレス空間のうちある部分を複数のプロセスに割当てるステップと、
少なくとも１つの物理的なセマフォレジスタセットを、複数のプロセスに割当てられた共通のアドレス空間にマッピングするステップとをさらに含む、請求項８に記載の方法。
【請求項１１】
メモリ要求を生成するステップは、
セマフォレジスタのクラスタが常駐するベースアドレスを示す値を含むメモリ要求において、仮想ベース部分を特定するステップと、
セマフォレジスタのクラスタ内で、ある特定のセマフォレジスタを示す値を含むメモリ要求において、セマフォ識別部分を特定するステップと、
仮想ベース部分とセマフォ識別部分とによって特定されたセマフォで実行されるべきある特定の動作を示す値を特定するステップとをさらに含む、請求項８に記載の方法。
【請求項１２】
状態情報にアクセスするステップは、特定されたセマフォレジスタの内容を読出しおよび戻すステップを含む、請求項８に記載の方法。
【請求項１３】
状態情報にアクセスするステップは、特定されたセマフォレジスタ内のある特定されたビットを読出しおよび戻すステップと、それに続いて、その特定されたビットを非ゼロ値にセットするステップとを含む、請求項８に記載の方法。
【請求項１４】
状態情報にアクセスするステップは、要求されたセマフォレジスタの内容を読出しおよび戻すステップと、それに続いて、その要求されたセマフォレジスタをインクリメントするステップとを含む、請求項８に記載の方法。
【請求項１５】
状態情報にアクセスするステップは、要求されたセマフォレジスタの内容を読出しおよび戻すステップと、それに続いて、特定されたセマフォレジスタの値をデクリメントするステップとを含む、請求項８に記載の方法。
【請求項１６】
状態情報にアクセスするステップは、メモリ要求において特定されたデータを、要求されたセマフォレジスタに記憶するステップを含む、請求項８に記載の方法。
【請求項１７】
状態情報にアクセスするステップは、セマフォレジスタの内容をゼロにセットするステップを含む、請求項８に記載の方法。
【請求項１８】
状態情報にアクセスするステップは、要求において特定されたデータと、特定されたセマフォレジスタにおいて記憶された値との間で、論理ＡＮＤ演算を実行するステップを含む、請求項８に記載の方法。
【請求項１９】
状態情報にアクセスするステップは、要求において特定されたデータと、特定されたセマフォレジスタにおいて記憶された値との間で、論理ＯＲ演算を実行するステップを含む、請求項８に記載の方法。
【発明の詳細な説明】
【０００１】
【発明の分野】
この発明は、一般にマイクロプロセッサシステムに関し、特に、マルチプロセッサコンピュータシステム内でアトミック動作を実行するためのソフトウェア、システムおよび方法に関する。
【０００２】
【関連の背景】
マイクロプロセッサは、コンピュータプログラムにより特定された命令に従ってデータを操作する。従来のシステムにおける命令およびデータは、メモリバスによってプロセッサに結合されるメモリ内に記憶される。コンピュータプログラムは、並列処理を活かすためにますますコンパイルされる。並列処理により、同時に実行される類似のまたはばらばらの複数のタスクとして、複雑なプログラムの実行が可能となり、性能が向上する。
【０００３】
伝統的にマイクロプロセッサは、マイクロプロセッサがメモリアドレス空間を完全に制御する環境において、単一の命令ストリームを処理するよう設計された。マルチプロセッサコンピュータシステムは、並列に動作する複数のデータプロセッサを設けることにより、プログラム実行が向上するよう開発された。初期のマルチプロセッサシステムは、複数のプロセッサのアクティビティを調整するよう特別に設計された特徴を含む、専用のプロセッサを用いた。さらにソフトウェアは、しばしばある特定のマルチプロセッサプラットフォームに特別にコンパイルされた。これらの要因により、マルチプロセッシングの入手および維持が高価なものとなった。
【０００４】
低コストで高性能のマイクロプロセッサがますます利用可能になったことにより、汎用のマルチプロセッシングコンピュータが実行可能となる。ここで用いられるように、「マイクロプロセッサ」および「プロセッサ」という用語は、複雑命令セットコンピュータ（ＣＩＳＣ）、縮小命令セットコンピュータ（ＲＩＳＣ）およびハイブリッドコンピュータを含む。しかしながら、汎用のマイクロプロセッサは典型的には、大規模なマルチプロセッシングのために特別に設計されているわけではない。いくつかのマイクロプロセッサは、共有バス上のシステム内で最高４つまでのプロセッサの構成をサポートする。これらの限界を超えるために、専用のハードウェア、ファームウェアおよびソフトウェアが、システム内のさまざまなマイクロプロセッサのアクティビティを調整するよう利用される必要がある。
【０００５】
プロセス間通信および同期は、マルチプロセッサシステムの設計者が直面する、より難しい調整問題のうちの２つである。本質的に、それらの問題は、異なった、そしてしばしば自律したプロセッサ上で実行される関連したプロセス間の状態情報の交換によって、各々のプロセッサのアクティビティを調整することを含む。プロセッサアクティビティを調整できないことは、マルチプロセッサ設計の拡張性においては主たる制限である。プロセッサ数の増加に伴い、この問題を解決することはかなり複雑となっている。
【０００６】
状態情報は、「セマフォ」と称されるデータ構造にしばしば実施され、共有メモリリソースまたはセマフォレジスタに記憶され得る。セマフォは本質的に、共通の（すなわち、共有）リソースの状態を示す値を含む、１つのフラグまたはフラグの組である。たとえば、１組のセマフォは、ある特定の共有リソースにロックを確立するために用いられ得る。マルチプロセッサシステム内のすべてのプロセッサにとって、セマフォが利用可能となることが望ましい。
【０００７】
セマフォは、継続的にさまざまなプロセスによってアクセスされ、変更され、そしてさまざまなプロセスと通信される。セマフォ操作は典型的には、テスト、セット、テストおよびセット、書込、クリアならびにフェッチ等の、比較的単純な動作の、１つの小さな組を含む。これらの動作は時折、いくつかの基本的な数学または論理演算（たとえば、インクリメント、デクリメント、ＡＮＤ、ＯＲ）との組合せで行なわれる。セマフォがメモリ常駐であるとき、セマフォへのアクセスは、セマフォデータが読出され、更新され、セマフォレジスタ構造にライトバックされるという点において、メモリ動作（たとえば、読出／書込またはロード／記憶動作）に類似した態様で達成される。このプロセスはしばしば、「読出−変更−書込」サイクルと称される。
【０００８】
これらのセマフォ管理動作は、典型的には、プロセッサのキャッシュ／内部レジスタへのセマフォの転送と、セマフォ値の更新と、更新されたセマフォのセマフォレジスタ構造への返送とを含む。セマフォ管理動作がペンディング状態であるか、またはフライト中である間（たとえば、セマフォが別のプロセッサにより操作されているとき）、プロセッサがセマフォ値を操作（すなわち、変更）できないという理由から、セマフォ操作はアトミック動作でなければならない。したがってメモリマップドセマフォ操作は、典型的な読出−変更−書込サイクルの間バスロックまたは他のロックメカニズムを包含し、最小単位を保証する。しかしながらバスロックは、すべてのプロセッサが共通のバスを共有しない限り実行不可能なことがあり、マルチプロセッサ設計の性能および拡張性に強い影響を与える。さらに、アトミック動作を確実にするためのいくつかのメカニズムは、マイクロプロセッサ命令セットアーキテクチャ（ＩＳＡ）の特別の命令に依存する。このような必要性により、プロセッサ選択において柔軟性が大いに制限される。従来のアトミックメモリ動作に伴うロックペナルティを被らない、メモリマップドセマフォレジスタを操作するための方法およびシステムが必要である。
【０００９】
最小単位は、セマフォをキャッシュ可能にし、キャッシュコヒーレンシメカニズム、例えばＭＥＳＩプロトコル等を用いることにより、最小単位を強要することで保証される。または、セマフォはキャッシュ不可能とされ得るので、それは共有メモリ空間内のみに存在し、使用されるプロセッサバスロックメカニズムは、セマフォ管理動作が完了するまですべてのプロセッサ通信を妨げる。いずれの場合においても、セマフォが多くのプロセッサ数によって同時に共有されているとき、性能および具体化に関する問題が生じる。
【００１０】
キャッシュセマフォの使用には、１つのプロセッサがセマフォを変更し、次いでその変更を、そのセマフォのコピーを有する他のすべてのキャッシュに伝達することが必要とされる。書込アクセスでキャッシュラインを１つのプロセッサから別のプロセッサに移行することには、１つ以上のキャッシュコヒーレンシ動作およびそれらに伴う応答に加えて、複数のメモリ読出トランザクションが頻繁に伴う。キャッシュラインへの排他的なアクセスを獲得するための待ち時間は、ラインへのアクセスを同時に共有するプロセッサの数の関数である。このため、ＭＥＳＩプロトコル等のキャッシュコヒーレンシメカニズムを用いると、十分に基準化しない。（特に、書込割当キャッシュポリシーを用いて）メモリをキャッシュ可能に構成することが望ましい場合、およびキャッシュコヒーレンシプロトコルが４０個以上のプロセッサをサポートするよう設計されることが望ましい場合、多くのプロセッサ数がプログラムフローを同期化するために、共有メモリロケーションを用いる並列アプリケーションが存在することは避けられないであろう。
【００１１】
ホストバスロックは、非常に強制的な態様で最小単位を保証する。アンキャッシュメモリを伴うＩＡ３２命令セットでのアトミック動作サポートは、２つのバス動作、すなわち読出と、それに続く書込とを必要とする。これらの動作が行なわれる間バスロックが確立され、これにより、使用されていないバスバンド幅に他のプロセッサがアクセスし、これを利用することを防ぐ。このことは、複数のプロセッサおよび他のコンポーネントがホストバスを共有するコンピュータシステムでは、システムデッドロックのための条件を作り出す可能性があり、特に不利益である。ホストバスを用いるいずれかのエージェントによってバスロックを確立することにより、他のプロセッサがメモリをターゲットとするいずれのバストランザクションをも、開始または完了させ得ることを妨ぐ。
【００１２】
類似の問題がいずれのアトミックメモリ動作についても存在する。アトミックメモリ動作は、読出または書込動作が共有メモリロケーションに合わせて行われる動作である。共有メモリロケーションがアンキャッシュである時でさえ、共有メモリロケーションにアクセスしているいずれのプロセッサも、アトミック動作が完了するまでロケーションの読出を確実に防げられるような態様で、アトミックメモリ動作を完了する必要がある。
【００１３】
より複雑なマルチプロセッサアーキテクチャは、各々のプロセッサボードが共有フロントサイドバスとともに結合される複数のプロセッサを含む、複数のプロセッサボードを組合せる。このようなシステムでは、複数のボードは互いに相互接続され、かつフロントサイドバスから独立した相互接続ネットワークを用いるメモリと相互接続される。本質的にマルチプロセッシングボードの各々は、独立したフロントサイドバスを有する。フロントサイドバスはすべてのシステムプロセッサにより共有されているわけではないので、フロントサイドバスでのみ動作するバスロックおよびバススヌープ等のコヒーレンシメカニズムの実現は、不可能ではないが困難である。
【００１４】
このためセマフォ管理動作は、単にオーバーヘッドであるバスバンド幅を消費する。したがって、オーバーヘッドを最小限にするよう効率的に動作する、セマフォ管理メカニズムおよび方法を提供することが望ましい。より具体的には、キャッシュコヒーレンシメカニズムまたはバスロックメカニズムのいずれにも依存することのない、セマフォ管理を提供するための手段が必要とされている。
【００１５】
【発明の概要】
簡潔に述べると、この発明は、複数のデータ処理ユニットを含むマルチプロセッサ内でセマフォを具体化するための方法および装置を含む。共有アドレス空間を有する複数のメモリバンクが、プロセッサに結合され、プロセッサとメモリバンクとの間のデータの読出および書込を可能にする。複数のセマフォレジスタがメモリバンクの共有アドレス空間内で具体化され、セマフォレジスタは、セマフォレジスタに割当てられた共有アドレス空間の部分に向けられたメモリ動作を用いるプロセッサによって、アクセス可能である。
【００１６】
別の局面では、この発明は、複数のプロセッサがメモリ要求を生成する、マルチプロセッサコンピューティングシステムを動作する方法を含む。複数のメモリバンクが共有アドレス空間を有するよう設けられ、データを読出しおよび書込むメモリ要求に応答する。クロスバネットワークは複数のプロセッサを複数のメモリバンクに結合する。各々のメモリバンク内の共有アドレス空間のある部分は、セマフォレジスタの専用とされる。メモリの専用部分は、キャッシュ不可能として指定される。複数のプロセスが、複数のプロセッサのうちの１つ以上のプロセッサ上で実行される。実行時には、共有アドレス空間のある部分は複数のプロセスに割当てられる。好ましくは、ある特定のメモリバンク内の少なくとも１つの物理的なセマフォレジスタは、その特定のメモリバンク内の複数のプロセスに割当てられる共通のアドレス空間にマッピングされる。
【００１７】
【好ましい実施例の詳細な説明】
一般的には、この発明は「セマフォレジスタ」として、小さく、固定された範囲の共有メモリの割当を含む。セマフォレジスタは、フラグ、カウンタなど等の状態情報を保持するデータ構造である。セマフォ操作は典型的には、非常に「簡単な」動作を含み、それはいくつかの基本的な動作（すなわち、インクリメント、デクリメント、ＡＮＤ、ＯＲ、など）を備えた、テスト、書込、セット、クリア、テストおよびセット、ならびにフェッチを含む。セマフォはしばしば、複数のソフトウェアプロセスの中で情報および／またはリソースを共有するために用いられる。セマフォレジスタは一種のアンキャッシュメモリ構造を表わす。
【００１８】
この発明の重要な特徴は、事実上すべてのマイクロプロセッサによりサポートされる従来の「読出」および「書込」メモリ参照を用いる、メモリマップドレジスタ上でアトミック動作がそれによって実行され得る機構を提供することである。しかしながら、この発明はセマフォを操作することにおける、読出／変更／書込サイクルの必要性を軽減する。
【００１９】
この発明に従って、セマフォレジスタはメモリバンク上に常駐し、共有アドレス空間のある部分を割当てられているので、マルチプロセッサシステム内のすべてのプロセッサが実質的に均一な待ち時間でそれらにアクセスする。また、共有メモリが用いられているので、セマフォトラヒックを専用に管理するための専用のネットワークを必要とすることなく、既存のプロセッサ・メモリ間の通信ネットワークを使用することができる。さらにセマフォ操作は、読出および書込動作等の基本的なメモリ動作によって達成されるので、事実上、いずれのマイクロプロセッサおよび命令セットアーキテクチャも用いることができる。
【００２０】
この発明は、一体化されたキャッシュメモリを有するいくつかの実質的に同一のマイクロプロセッサを含む、汎用のマルチプロセッシングコンピューティングシステムに関して例示および説明される。この種類のコンピューティングシステムは、この発明の特徴および原理を例示するのに優れたツールであるが、異なる種類のプロセッサのセットも用いることができることが理解されるべきである。いくつかのプロセッサは一体化されたキャッシュを含んでいてもよく、いくつかのプロセッサは外部キャッシュを含んでいてもよく、さらに他のプロセッサはキャッシュを全く有していなくてもよい。この発明は共有メモリシステムに関して例示されるが、ある局面では区分されたメモリシステムでの適用も有する。したがって、ここに与えられる特定の例は、例示および理解のために提供されており、特に説明されない限りこの発明の限定として見なされるべきではない。さらに、この発明の重要な特徴は、それが容易に上向きおよび下向きに調整されて、ある特定の適用例の必要に応じることである。したがって反対に特定されない限り、この発明は、極めて大きくより複雑なネットワーク環境、および従来のローカルエリアネットワーク（ＬＡＮ）システム等の小さなネットワーク環境に適用できる。
【００２１】
図１は、この発明が実現されるマルチプロセッサコンピュータ環境を示す。マルチプロセッサコンピュータシステム１００は、Ｎ個のプロセッサボード１０１を組込む。各々のプロセッサボード１０１は、論理的にプロセッサノード１０１と称される。各々のプロセッサボード１０１は、特定の例では、一体化されたキャッシュメモリを有する、プロセッサＰ１およびＰ２等の１つ以上のマイクロプロセッサを含む。プロセッサボード１０１は、共通のフロントサイドバス（ＦＳＢ）１０４を共有し、さらにブリッジ１０７を通じてホストバスネットワーク１０２に達する共通のゲートウェイを共有するグループで構成され得る。ある例示的なプロセッサは、単一のプロセッサおよび最高で４つまでのプロセッサの対称型マルチプロセッサ（ＳＭＰ）として構成され得る、インテル社（Ｉｎｔｅｌ Ｃｏｒｐｏｒａｔｉｏｎ）によって製造されるペンティアム（Ｒ）ＩＩＩジーオン（ＸＥＯＮ）（商標）プロセッサである。複数のＳＭＰシステムのクラスタ設計も利用可能である。
【００２２】
プロセッサ１０１は、相互接続ネットワーク１０２を介して共有メモリ１０３に双方向に結合される。相互接続ネットワーク１０２は好ましくは、フルクロスバ接続を具体化し、いずれのプロセッサボード１０１も、いずれのメモリバンク１０５内で具体化されるいずれのメモリロケーションにもアクセスすることが可能となる。共有メモリ１０３は、複数のＭ個のメモリバンク１０５として構成される。各々のメモリバンク１０５はそれ自体が、メモリコンポーネントの群を含み得る。好ましくは、共有メモリ１０３は複数の「ライン」として編成され、各々のラインは、プロセッサ１０１内における、アーキテクチャにより規定されたキャッシュのラインサイズに基づいた大きさにされる。メモリまたはキャッシュ内のラインは、最小のアクセス可能なデータの単位であるが、この発明は、ライン内でのアドレス指定を可能にするメモリアーキテクチャをサポートする。
【００２３】
各々のプロセッサボード１０１は、フロントサイドバス（ＦＳＢ）ゲートウェイインターフェイス１０６を含むことができ、これによりローカルメモリ１０８および周辺コンポーネント相互接続（ＰＣＩ）ブリッジ１１０へのアクセスを可能にする。特定の例では、ローカルメモリ１０８は共有メモリ１０３のアドレス空間に含まれず、ＦＳＢクロスバ１０６と同じフロントサイドバス１０４に結合されるプロセッサＰ１およびＰ２の中でのみ共有される。ＰＣＩブリッジ１１０は、従来のＰＣＩデバイスが、たとえば外部ネットワーク１１１および／または記憶装置１１２にアクセスすること、およびそれらへの接続を管理することをサポートする。いくつかのプロセッサボード１０１は、ＰＣＩデバイスが他のボード１０１を介して利用可能な場合、ＰＣＩブリッジ機能をなくし得ることが企図される。
【００２４】
注目すべきは、各々のプロセッサボード１０１のフロントサイドバス１０４が、他のすべてのプロセッサボード１０１のフロントサイドバス１０４から独立していることである。したがって、アトミック動作を実行するために、たとえばＩＡ３２命令セットによって提供されるいずれのメカニズムも、異なったボード１０１上に位置するプロセッサ間にあるようには動作しない。
【００２５】
プロセッサＰ１またはＰ２が、メモリ１０３内でターゲットロケーションからのロードまたはターゲットロケーションへの記憶を必要とする命令を実行すると、メモリ動作が行なわれる。メモリ動作を実行する際、プロセッサは第１に、ターゲットメモリロケーションがキャッシュ内で表わされ、有効で、かつアクセス可能であるかどうかを判断する。キャッシュは、メモリ動作を実行するプロセッサのボード上にあってもよいし、または外部キャッシュメモリ内にあってもよい。キャッシュミスの場合、メモリ動作はブリッジ１０７によって処理される。ブリッジ１０７は、アクセス要求をホストバスネットワーク１０２に対して生成し、ターゲットロケーションアドレスと、動作の種類（たとえば、読出／書込）と、ある特定の実現例で必要とされ得る他の制御情報とを特定する。共有メモリ１０３は要求を受取り、特定されたメモリロケーションにアクセスする。読出動作の場合、要求されたデータは、ホストバスネットワーク１０２を通り、そしてアクセス要求を生成したブリッジ１０７に宛てられた応答によって戻される。書込トランザクションは、書込が行なわれたという肯定応答を返すことができる。共有メモリ１０３内でエラーが生じた場合、ブリッジ１０７への応答は、エラーについての情報を示す状態コードを含み得る。
【００２６】
図２は、ある特定の実現例およびこの発明の実現例をサポートする相互接続ストラテジを例示する。図２の実現例では、ＳＥＧＭＥＮＴ＿０からＳＥＧＭＥＮＴ＿１５と示された１６のセグメントがある。各々のセグメントはプロセッサグループ２０１を含む。ある特定の例でのプロセッサグループ２０１は、３２個のプロセッサを含み、各々は、双方向データおよびコマンドインターフェイスを介してプロセッサスイッチ２０２に結合される。プロセッサスイッチ２０２は、各々のメモリバンクグループ２０５のための中継線２１４への出力を含む。同様に各々のメモリスイッチ２０３は、各々のプロセッサグループ２０１のための中継線２１４への出力を含む。この態様では、いずれのプロセッサグループも、プロセッサスイッチ２０２およびメモリスイッチ２０３の適切な構成により、いずれのメモリバンクグループへも選択的に結合され得る。
【００２７】
図３は、この発明に従ったメモリバンク２０５に関連した重要なセマフォ管理メカニズムを示す。メモリスイッチ２０３は（図２に図示される）中継線２１４と通信し、メモリ制御装置３０１へのメモリアクセス要求を送信および受信する。メモリアクセス要求を受信すると、メモリスイッチ２０３はターゲットメモリアドレスおよびプロセッサノード識別を含む情報、ならびに制御およびモード情報をメモリ制御装置３０１に渡す。ターゲットメモリアドレスは、メモリバンクデータ部分３０２内のロケーション、またはセマフォ制御装置３０２に割当てられたメモリアドレス空間のある部分を指す。
【００２８】
プロセッサＩＤは、メモリ動作を行なっているマルチプロセッサシステム内の独自のプロセッサノード１０１を示す値である。ある特定の実施例では、この情報は、さまざまな種類の情報のために規定されたフィールドを有するデータパケットとして、スイッチ２０３とメモリバンク３０１内のメモリ制御装置３０１との間で渡される。このデータパケットの特定のレイアウトは、ある特定の実現例の必要に応じて選択される。
【００２９】
共有アドレス空間の大部分は、メモリ３０２内のデータおよび命令のために割当てられる。メモリ３０２は複数のメモリライン３１２として編成され、キャッシュラインとも呼ばれる。ある特定の例では、各々のメモリライン３１２は２５６ビット幅であり、メモリ３０２は、具体化される物理的なメモリの量による可変数のラインを含む。メモリ３０２は、実質的に従来の態様で、利用可能なメモリ管理および割当メカニズムを用いる実行プロセスに割当てられる。典型的には実行プロセスの群は、実行時にそれらのプロセスに割当てられる共通のアドレス空間を共有する。典型的にはすべてまたは大部分の従来のメモリ領域３０２は、キャッシュ可能なメモリとして指定される。
【００３０】
キャッシュコヒーレンシユニット３０５は、キャッシュディレクトリ３０４に関連して動作し、キャッシュ可能なメモリロケーションのコピーをキャッシュした可能性のある複数のプロセッサ全体にわたって、キャッシュコヒーレンシを管理する。各々のエントリ３１４はメモリ３０２内のメモリラインに対応する。キャッシュコヒーレンシチップ３０１は、ＡＳＩＣ等のカスタム集積回路として、プログラム可能なゲートアレイ等の１回限りの、もしくは再プログラム可能な論理装置として、または従来の回路ボードもしくはマルチチップモジュール内で結合される個別のコンポーネントとして、具体化され得る。キャッシュコヒーレンシチップ３０１は、メモリアドレスを用いてキャッシュコヒーレンシディレクトリ３０４にアクセスする。キャッシュコヒーレンシディレクトリ３０４は、特定のメモリバンクデータ部分３２０の共有メモリアドレス空間内の、各メモリラインのためのマルチビットエントリ３１４を含む。キャッシュディレクトリ３１４は複数のエントリ３１４を含み、各々はある特定の例では３６ビット幅である。各々のエントリ３１４は、対応するメモリラインの現在の状態を示す値を含む。
【００３１】
この発明に従って、各々のメモリバンクの共有アドレス空間のある部分がハードウェアセマフォに割当てられ、以下「ハードウェアセマフォ部分」と称される。ハードウェアセマフォ部分への参照は、従来のメモリ部分３０２よりもむしろ、セマフォ制御装置３０２に送信される。アドレス空間のハードウェアセマフォ部分は、キャッシュ不可能として指定される。ある特定の例では、ハードウェアセマフォ部分の大きさは、約４Ｋバイトの固定されたアドレス空間をシステム内の各々の物理的なプロセッサに割当てるよう選択される。このため３２１個のプロセッサを備えたシステムは、合計１．２５ＭＢをメモリバンク２０５の中に広げて、ハードウェアセマフォ制御装置３０３に割当てる。例示的なシステムでは、利用可能な全体のアドレス空間は６４ＧＢのオーダか、またはそれ以上である。このため、ハードウェアセマフォに割当てられた部分は比較的小さい。
【００３２】
実行プロセスには、仮想記憶管理システムによってハードウェアセマフォ部分内においてアドレス空間を指定できないので、通常のメモリ読出／書込動作は、従来のメモリ部分３０２内にロケーションをアドレス指定する。この発明は新しいシステムコールを動作システムコードに導入し、セマフォ制御装置３０２内の１つ以上の物理的なセマフォレジスタをプロセスの共通のアドレス空間にマッピングするものである。これにより、従来のメモリ動作によってハードウェアセマフォレジスタでデータを、プロセスが読出しおよび書込むことが可能となる。
【００３３】
ある「ｎ」個の物理的なプロセッサを有する任意のマルチプロセッサシステムのために、任意の所与のときに実行されるＯＳプロセスに加えて、実行される「ｎ」個のプロセスがあってもよい。各々のプロセスはそれ自身のセマフォレジスタを有するべきであり、このためシステムは、ｎ＋１個のセマフォレジスタをサポートすべきである。
【００３４】
セマフォ動作の最小単位は、セマフォを読出すかまたは操作する別の動作が行われ得る前に、セマフォ値を操作するいかなる動作も完了させることを確実とするために重要である。好ましい実現例においては、メモリ動作の逐次化は、図１に示されるブリッジ制御装置１０７の制御下にある。ブリッジ制御装置１０７は、アンキャッシュアドレス空間に影響を与えるメモリ動作に順序を課す、「フェンス動作」と称されるメカニズムを含む。プログラマーは、フェンス動作を用いて正確さを確実なものにする。これらのメカニズムは、いかなるキャッシュ読出／書込またはアンキャッシュ読出動作も行われることが可能となる前に、アンキャッシュメモリ参照が完了することを確実にする。アンキャッシュメモリ参照は、アドレス空間のハードウェアセマフォ部分を含む、アドレス空間のアンキャッシュ領域を特定するメモリ動作である。これらのメカニズムは、この発明に関連して類似の態様で動作し、ブリッジ制御装置１０７にとってアンキャッシュメモリ動作として現われるセマフォ操作を確実に逐次化する。これは、アンキャッシュハードウェアセマフォ領域３０３へのすべての参照が逐次化されることを暗に保証している。この機能は、セマフォ書込動作の間メモリバスをストールする先行技術の方法に類似している。しかしながら、ここに説明されている方法でこれらのメモリトランザクションをストールすることにより、不利な影響が大いに削減される。セマフォ変更動作は、先のバスストール技術がもたらす数百以上ものクロックサイクルに比べて、完了するのにわずか６クロックサイクルしか費やさないことが企図される。
【００３５】
図４は、全メモリアドレス空間のコンテキスト内の、セマフォレジスタの例示的なレイアウトを図示する概念図を示す。リニアアドレス空間４０１は、独立した、または共通の実行プロセスの所与の組に指定されたアドレス空間の共通のブロックを表わす。物理的なアドレス空間４０２は、利用可能な物理的なメモリを表わし、（図３に示される）メモリ部分３０２および３０３はそこで物理的に具体化される。図４に示されるように、いくつかの物理的なメモリラインが、ハードウェアセマフォレジスタ３０３に割当てられる。特定の例では、各々のメモリラインは６４ビット幅であるので、通常の動作においてメモリ読出および書込は、８バイト幅のデータの群で実行される。
【００３６】
ハードウェアセマフォメモリ領域３０３は、ハードウェアセマフォレジスタのクラスタを保持する。レジスタのクラスタは好ましくは、複数のプロセスにより共有される共通のリニアアドレス空間にマッピングされる。注目すべきは、メモリ管理システムおよび／またはマイクロプロセッサアーキテクチャが、いくらかの実質的な制限をセマフォレジスタの大きさおよび編成に課すという点である。特定の例では、セマフォ「クラスタ」は４ＫＢの境界で割当てられるが、これはプロセッサの仮想メモリ（ＶＭ）管理が、そういう単位にまで、マルチプロセッシング保護メカニズムに対し備えているからである。セマフォレジスタ割当の管理は、制御装置３０４内のある特定のハードウェアセマフォレジスタを、ＶＭシステムによってある特定のプロセスに割当てるかまたは指定することを含むので、単一のレジスタが無関係のプロセスに指定されることを防ぐことができる。クラスタレベルでの管理により、たとえば、レジスタごとに個々のまたは小さなグループのハードウェアセマフォレジスタを効率的に割当てることができる。
【００３７】
図４の分解部分に例示されるように、各々のメモリラインは、１つ（１）の６４ビットまたは２つ（２）の３２ビットのセマフォレジスタ、２つのセマフォレジスタ４０３のどちらかを保持する。特定の例では、例示的な具体化例における各々のセマフォレジスタ４０３は３２ビット幅である。セマフォ内の各々のビットの意味および使用は、アプリケーション自身に任される。
【００３８】
図５および図６は、セマフォ３０３の内容を読出および書込むために用いられる、例示的なアドレス指定のフォーマットを図示する。これらの例は、（図５に示される）３２ビット仮想アドレス、および（図６に示される）３６ビット物理的アドレスとされる。両方の場合とも、ビット［０：２］は、メモリが６４または３２ビット動作として参照されるかどうかを判断するために提供されるバイトオフセットビットであり、ビット［３：４］はレジスタのための動作コード指示子であり、ビット［５：１１］はクラスタ内のある特定のセマフォを示す。仮想アドレスの残りのビット［１２：３１］は、当該のセマフォクラスタの仮想ベースを示す。図６に示される物理的なアドレスフォーマットでは、ビット［１２：１９］は、図４に示される複数のクラスタ内の、ある特定のクラスタを識別するためのクラスタ番号を示す。セマフォの物理的なベースは、図６に示されるようにビット［２０：３５］により示される。
【００３９】
クラスタ内のいずれかの特定の３２ビットハードウェアセマフォにアクセスするために、アドレスが、仮想クラスタのベースアドレスをセマフォ番号および読出／書込動作コードと組合せることにより算出される。動作コードは、表１に示されるようにワードセレクト（ＷＳ）ビットに符号化される。
【００４０】
【表１】
2004506981.tif 000002
【００４１】
以下は、表１で説明された読出動作を簡潔に要約したものである。
Ｔｅｓｔ／ＳｈｒＲｅａｄ（ＷＳ＝００ｂ）
要求されたセマフォレジスタの内容を読出し、および戻す。
【００４２】
2004506981.tif 000003
要求されたセマフォレジスタのビット（２０）を読出し、および戻す。
【００４３】
セマフォレジスタビット２０を非ゼロ値（すなわち、＝１）にセット。
2004506981.tif 000004
要求されたセマフォレジスタの内容を読出し、および戻す。
【００４４】
2004506981.tif 000005
読出の後、要求されたセマフォレジスタの３２または６４ビット符号付きインクリメント。
【００４５】
2004506981.tif 000006
要求されたセマフォレジスタの内容を読出し、および戻す。
【００４６】
2004506981.tif 000007
読出の後、要求されたセマフォレジスタの３２または６４ビット符号付きデクリメント。
【００４７】
以下は、表１に示された書込動作を簡潔に説明する。
2004506981.tif 000008
書込パケットからの３２または６４ビットデータを、要求されたセマフォレジスタに記憶。
【００４８】
2004506981.tif 000009
注：セマフォレジスタのセットは、ビット２０＝１で任意のデータ値（レジスタ／イミーディエイト）を書込むことにより達成される。
【００４９】
2004506981.tif 000010
要求された３２または６４ビットセマフォレジスタの内容をゼロにする。
【００５０】
2004506981.tif 000011
書込パケットからの３２または６４ビットデータと、要求されたセマフォレジスタとの論理積。
【００５１】
2004506981.tif 000012
書込パケットからの３２または６４ビットデータと、要求されたセマフォレジスタとの論理和。
【００５２】
2004506981.tif 000013
表２は、インテルアーキテクチャ３２（ＩＡ３２）命令セットを用いるメモリ参照および対応するセマフォ動作の例を説明する。図２では、「％ｅｄｉ」は４ＫＢセマフォ領域である、現在の指定されたクラスタのベースを指す。
【００５３】
【表２】
2004506981.tif 000014
【００５４】
アトミック動作は、バスロックを全く確立することなく１つのメモリ参照で完了され得る。したがって、この発明に従ったハードウェアセマフォの具体化例は、従来のアンキャッシュアトミック動作のほぼ半分のメモリトラヒックを有し、またキャッシュセマフォのためのメモリ／コヒーレンシトラヒックがさらに減少する可能性を有する。いずれのセマフォ参照もメモリバスロックを全く確立することなく完了するので、他のバスエージェントがメモリリソースにアクセスすることを可能にする。この具体化により、第３のネットワークの必要性が軽減される。さらにこの発明は、既存のメモリ管理能力を用いて、複数のプロセッサを１つのメモリ空間（共通のクラスタにアクセスする複数の物理的なプロセッサ）にマッピングする。同時に参照する１つ以上のプロセッサからの、ある特定のセマフォレジスタへのいずれのアトミック動作も、１つのメモリ参照で完了する。ハードウェアデッドロック条件はおそらくなく、２つ以上のプロセッサ間のデッドロック状態を検出するための、高価で複雑なロジックの必要性をなくす。
【００５５】
この発明はある程度詳細に説明および例示されてきたが、本開示は例によってのみなされ、また前掲の請求項で示されるように、この発明の精神および範囲から逸脱することなしに、当業者は部分的な組合せおよび配置における多くの変更に頼ることができることが理解される。
【図面の簡単な説明】
【図１】この発明が具体化されるマルチプロセッサコンピュータ環境を示す図である。
【図２】この発明に従った例示的なマルチプロセッサの部分を示す図である。
【図３】この発明に従ったメモリバンクに関連するキャッシュコヒーレンシメカニズムを示す図である。
【図４】この発明に従ったセマフォメカニズムの動作を例示するメモリマッピングの図である。
【図５】セマフォ３０３の内容を読出しおよび書込むために用いられる、例示的なアドレス指定のフォーマットを示す図である。
【図６】セマフォ３０３の内容を読出しおよび書込むために用いられる、例示的なアドレス指定のフォーマットを示す図である。
【図１】
2004506981.tif 000015
【図２】
2004506981.tif 000016
【図３】
2004506981.tif 000017
【図５】
2004506981.tif 000018
【図６】
2004506981.tif 000019
【国際公開パンフレット】
2004506981.tif 000020
2004506981.tif 000021
2004506981.tif 000022
2004506981.tif 000023
2004506981.tif 000024
2004506981.tif 000025
2004506981.tif 000026
2004506981.tif 000027
2004506981.tif 000028
2004506981.tif 000029
2004506981.tif 000030
2004506981.tif 000031
2004506981.tif 000032
2004506981.tif 000033
2004506981.tif 000034
2004506981.tif 000035
2004506981.tif 000036
2004506981.tif 000037
2004506981.tif 000038
2004506981.tif 000039
2004506981.tif 000040
2004506981.tif 000041
2004506981.tif 000042
2004506981.tif 000043
2004506981.tif 000044
2004506981.tif 000045
【国際調査報告】
2004506981.tif 000046