(57)【要約】【課題】  ＤＭＡ転送との共有メモリを有する、非対称型単一チップ異種マルチプロセッサ・コンピュータ・システムに、アトミック更新のプリミティブを提供すること。【解決手段】  予約付きゲット・ロック・ライン・コマンド、条件付きプット・ロック・ライン・コマンド、および無条件プット・ロック・ライン・コマンドを有するセットから、少なくとも１つのロック・ライン・コマンドが生成される。【選択図】  図１  
2004348734.tif 000002
【特許請求の範囲】
【請求項１】
ＤＭＡとの共有メモリを有する非対称型単一チップの異種マルチプロセッサ・コンピュータ・システムで使用するために、アトミック更新プリミティブを提供する方法であって、
１つの予約付きゲット・ロック・ライン・コマンドと、１つの条件付きプット・ロック・ライン・コマンドと、１つの無条件プット・ロック・ライン・コマンドとを有するセットから選択された少なくとも１つのロック・ライン・コマンドを前記システムで生成するステップ、
を有する方法。
【請求項２】
非対称型単一チップの異種マルチプロセッサ・コンピュータ・システムであって、
１つの予約付きゲット・ロック・ライン・コマンドと、１つの条件付きプット・ロック・ライン・コマンドと、１つの無条件プット・ロック・ライン・コマンドとのうちの１つを生成するように構成された、接続プロセッサ・ユニット（ＡＰＵ）と、
前記ＡＰＵに結合された直接メモリ・アクセス（ＤＭＡ）・エンジンであって、１つの予約付きゲット・ロック・ライン・コマンドと、１つの条件付きプット・ロック・ライン・コマンドと、１つの無条件プット・ロック・ライン・コマンドとのうちの１つを受け取るように使用可能であるＤＭＡエンジンと、
を有するシステム。
【請求項３】
前記ＡＰＵに結合されたローカル・ストアをさらに有する、請求項２に記載のシステム。
【請求項４】
前記予約付きゲット・ロック・ライン・コマンドによって使用可能な予約テーブルをさらに有する、請求項２に記載のシステム。
【請求項５】
前記ＤＭＡエンジンに結合されたキャッシュ・スヌープ・バスをさらに有する、請求項３に記載のシステム。
【請求項６】
前記ＡＰＵに結合されたＤＭＡ待ち行列をさらに有する、請求項２に記載のシステム。
【請求項７】
前記ＡＰＵと前記ＤＭＡ待ち行列との間に結合されたチャネルをさらに有する、請求項６に記載のシステム。
【請求項８】
前記ＤＭＡエンジンに結合された予約ステーションをさらに有する、請求項２に記載のシステム。
【請求項９】
前記予約ステーションに結合されたアトミック・キャッシュをさらに有する、請求項８に記載のシステム。
【請求項１０】
非同期処理環境での同期化のための方法であって、
１つの予約付きゲット・ロック・ライン・コマンドを生成するステップと、
前記コマンドをＤＭＡエンジンに搬送するステップと、
前記ＤＭＡエンジンによって命じられた場合に、予約ステーションによって予約を生成するステップと、
を有する方法。
【請求項１１】
１つの条件付きプット・ロック・ライン・コマンドを生成するステップをさらに有する、請求項１０に記載の方法。
【請求項１２】
１つの無条件プット・ロック・ライン・コマンドを生成するステップをさらに有する、請求項１０に記載の方法。
【請求項１３】
前記条件付きプット・ロック・ライン・コマンドが、データをアトミック・キャッシュに書き込むものである、請求項１１に記載の方法。
【請求項１４】
前記無条件プット・ロック・ライン・コマンドが、ソフトウェア・ロックを解除するステップをさらに使用するものである、請求項１３に記載の方法。
【請求項１５】
ＤＭＡ待ち行列を、前記条件付きプット・ロック・ライン・コマンドからの情報を用いて更新するステップをさらに有する、請求項１０に記載の方法。
【請求項１６】
キャッシュ・スヌープを実行するステップをさらに有する、請求項１４に記載の方法。
【請求項１７】
前記ＤＭＡエンジンによって、前記予約の機能として情報を共有メモリからローカル・ストアへ搬送するステップをさらに有する、請求項１１に記載の方法。
【請求項１８】
予約喪失信号を検出するステップをさらに有する、請求項１０に記載の方法。
【請求項１９】
予約ステータスの検出をさらに有する方法であって、前記予約ステータスが「喪失」である、請求項１０に記載の方法。
【請求項２０】
予約ステータスの検出をさらに有する方法であって、前記予約ステータスが「インタクト」である、請求項１０に記載の方法。
【請求項２１】
前記予約ステータスを解除するステップをさらに有する、請求項１０に記載の方法。
【請求項２２】
接続プロセッサ・ユニットからのコマンドをチャネル上のＤＭＡ待ち行列に伝送するための方法であって、
予約付きゲット・ロック・ライン、条件付きプット・ロック・ライン、および無条件プット・ロック・ラインからなるグループから、１つのコマンドを選択するステップと、
前記コマンドをＤＭＡ待ち行列に書き込むステップと、
を有する方法。
【請求項２３】
前記無条件プット・ロック・ライン・コマンドを用いてアトミック・キャッシュにデータを書き込むステップをさらに有する、請求項２２に記載の方法。
【請求項２４】
前記予約付きゲット・ロック・ライン・コマンドをＤＭＡ待ち行列に配置するステップをさらに有する、請求項２２に記載の方法。
【請求項２５】
非同期処理環境での同期化のためのコンピュータ・プログラムの記録媒体であって、前記コンピュータ・プログラムが、
予約付きゲット・ロック・ライン・コマンドを生成するためのコンピュータ・コードと、
前記コマンドを前記ＤＭＡエンジンに搬送するためのコンピュータ・コードと、
前記ＤＭＡエンジンによって命じられた場合に予約ステーションによって予約を生成するためのコンピュータ・コードと、
を有するコンピュータ・プログラム記録媒体。
【請求項２６】
非同期処理環境での同期化のためのプロセッサであって、
予約付きゲット・ロック・ライン・コマンドを生成するためのコンピュータ・コードと、
前記コマンドを前記ＤＭＡエンジンに搬送するためのコンピュータ・コードと、
前記ＤＭＡエンジンによって命じられた場合に予約ステーションによって予約を生成するためのコンピュータ・コードと、
を有するコンピュータ・プログラム、を含むプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般にメモリのアトミック更新に関し、より具体的には、付属のプロセッサ・ユニットでの直接メモリ・アクセス・コマンドを使用したアトミック更新の使用に関する。
【背景技術】
【０００２】
従来の対称型マルチプロセッサ・システム、すなわち、複数の主プロセッサ・ユニット（ＭＰＵ）を備えたマルチプロセッサでは、ＭＰＵは、ロード／ストア命令を使用して共通の共有メモリに直接アクセスすることができる。これらのロード／ストア命令に加えて、複数のＭＰＵ上で実行中のプログラムによって共有されるメモリの同期化およびこのメモリへのアクセスを制御するために、「アトミック（一微小単位での）」読取り／修正／書込み機能が提供されていることが多い。「アトミック」コマンドは、一般に、そのデータ領域に潜在的にアクセスしている他のユニットに対して、シーケンスが単一のオペレーションであるかのようにメモリ内のデータの読取り、修正、および書込みを可能にするコマンドとして定義することができる。これは従来、シーケンス全体の実行が終了するまで他のユニットがメモリ領域にアクセスするのをロックアウト（閉鎖）するか、または、予約および条件付きストア技法によるよりプリミティブなロードを使用する、ハードウェア・シーケンスによって実行されるものである。これは一般に、メモリにアクセスすることのできる他のＭＰＵまたはＩ／Ｏユニットによって読み取られるかまたは書き込まれる前に、メモリの領域が完全に更新され整合性を持つこと、すなわち、そのメモリ領域によってアトミック・コマンドまたは更新シーケンスが「完了する」ことを、保証するために実行されるものである。
【０００３】
アトミック・コマンドは、「比較及びスワップ（Compare and Swap）」、「テスト及び設定（Test and Set）」「フェッチ及びノー・オペレーション（Fetch and No Operation）」、「フェッチ及びストア（Fetch and Store）」などの、特殊な命令形式を取ることが多い。これに代わる技法は、ソフトウェア内でアトミック・オペレーション・シーケンスを実施するための機能を提供するものである、ＭＰＵにおけるより基本的な「ロード及び予約（Load and Reserve)」および「条件付きストア（Store Conditional）」の命令ペアを提供することである。これらの技法は、同種のＭＰＵからなる対称型マルチプロセッサ・システムで、適切な働きをすることができる。
【０００４】
非対称型異種マルチプロセッサ・システムでは、ＭＰＵは従来の共有メモリ・スタイルで配置される。専用プロセッサであるＡＰＵは、ＤＭＡエンジンによって命令されるブロック移動を介して共有メモリに間接的にアクセスすることの可能な、それら独自の専用の命令およびデータ・メモリを有する。共有メモリにアクセスするＤＭＡエンジンを用いた複数のＭＰＵおよびＡＰＵをピア（対等要素）として使用する場合、アトミック更新メカニズムをＤＭＡエンジンまで拡張する必要がある。これは一般に、共有メモリ内のデータへのアクセスを調整する機構を提供するために実行される。こうしたメカニズムを備えていない複数のＡＰＵが存在する環境では、ＤＭＡエンジンへのコマンドを介して各ＡＰＵに対して一度に１つずつ作業を分割する方式である、ＭＰＵのマスタ／スレーブ方式を使用すると、結果として、ＡＰＵのアイドル時間および個々のＡＰＵに作業を割り当てるために使用されるＭＰＵ時間のために、システムの使用率および効率が悪くなる。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
したがって、共有メモリのアトミック更新において、他のＭＰＵおよびＡＰＵのＤＭＡエンジンにピアとして関与しながら、ＡＰＵのローカル・ストレージと共有システム・メモリとの間でデータをコピーするためにＡＰＵが用いることが可能なＤＭＡエンジンが求められている。
【課題を解決するための手段】
【０００６】
本発明は、ＤＭＡとの共有メモリを有する非対称型単一チップの異種マルチプロセッサ・コンピュータ・システムに、アトミック更新プリミティブを提供するものである。予約付きゲット・ロック・ライン（Get Lock Line）コマンド、条件付きプット・ロック・ライン（Put Lock Line Conditional）コマンド、および無条件プット・ロック・ライン（Put Lock Line Unconditional）コマンドを含むセットから、少なくとも１つのロック・ライン・コマンドが生成される。
【０００７】
次に、本発明およびその利点をより完全に理解するために、以下の発明を実施するための最良の形態について、添付の図面に関連して説明する。
【発明を実施するための最良の形態】
【０００８】
以下の考察では、本発明を完全に理解するために、多数の特定の細部について述べる。ただし、当業者であれば、本発明がこうした特定の細部なしで実施可能であることを理解されよう。その他にも、本発明の細部を不必要に不明瞭にしないために、よく知られた要素について概略図またはブロック図の形で示されている。さらに、ネットワーク接続、電磁信号方式などに関する細部が、本発明を完全に理解するために必要であるとみなされない限り、および、関連分野の通常の技術者が理解できる範囲内であるとみなされる限り、ほとんどの部分について、こうした細部は省略されている。
【０００９】
以下の記述では、処理ユニット（ＰＵ）がデバイス内の唯一の計算プロセッサである場合がある。こうした状況では、ＰＵは典型的にはＭＰＵ（主処理ユニット）と呼ばれる。処理ユニットは、所与の計算デバイス用に開発された何らかの方法またはアルゴリズムに従って計算負荷を共有する、多くの処理ユニットのうちの１つである場合がある。以下の記述では、ＭＰＵがデバイス内で唯一の計算要素であるか、あるいはＭＰＵが他のＭＰＵと計算要素を共有しているかに関わらず、プロセッサに関するすべての参照でＭＰＵという用語を使用するものとする。
【００１０】
さらに、特に指示がない限り、本明細書に記載されたすべての機能は、ハードウェアまたはソフトウェア、あるいはそれらのいくつかの組合せのうちのいずれかで実行可能であることにも留意されたい。しかし、好ましい実施形態では、当該機能は、特に指示がない限り、コンピュータ・プログラム・コードなどのコード、ソフトウェア、および／または、こうした機能を実行するようにコード化された集積回路、に従ってコンピュータまたは電子データ・プロセッサなどのプロセッサによって実行される。
【００１１】
次に図１を参照すると、マルチプロセッサ環境でＡＰＵ１１０がピアとしてより自律的に関与できるようにするシステム１００が開示されている。これは、ＤＭＡエンジン１１５のブロック・モード使用を介してシステム・メモリ１７０に間接的にアクセスできるＡＰＵ１１０を使用することによって実行される。一般にシステム１００では、ＡＰＵ１１０は「ロード及び予約」（getllar）のロック・ライン・コマンドおよび「条件付きストア」（putllc）または「無条件ストア」（putllu）のロック・ライン・コマンドを使用して、共有メモリ１７０にアクセスすることおよびその予約グラニュール（一微細単位）をロックすることによって、アトミック読取り／修正／書込みシーケンスを採用する。
【００１２】
システム１００は、バス・インターフェース・コントローラ（ＢＩＣ）１５０に結合された１つまたは複数のＭＰＵ複合体１９３、ならびにＢＩＣ１５０に結合された１つまたは複数のＡＰＵ複合体１９２を備える。ＢＩＣ１５０はメモリ・コントローラ１６０に結合され、次にこれがシステム／共有メモリ１７０に結合される。１つまたは複数のＭＰＵ１８０を有する、少なくとも１つのＡＰＵ／ＤＭＡ複合体１９２および少なくとも１つのＭＰＵユニット複合体１９３は、システムの計算機能を備える。
【００１３】
ＡＰＵ複合体１９２はローカル・ストア１０５に結合されたＡＰＵ１１０を備える。ＡＰＵ１１０は制御バスを介してＤＭＡ待ち行列１２０に結合される。ＤＭＡ待ち行列１２０はＤＭＡエンジンに結合される。ＤＭＡエンジン１１５はアトミック機構１３０に結合される。
【００１４】
アトミック機構１３０は予約ステーション（ＲＳ）１３５およびアトミック・キャッシュ１３７を備える。アトミック・キャッシュ１３７はレベル２（Ｌ２）キャッシュであってよい。アトミック機構１３０は制御バスおよびスヌープ・バスを介してＢＩＣ１５０に結合される。
【００１５】
ＭＰＵ複合体１９３は、ＢＩＣ１５０に結合されたＬ２キャッシュ１８７に結合された１つまたは複数のＭＰＵ１８０を備える。ＢＩＣ１５０はメモリ・コントローラ１６０に結合され、次にこれがシステム／共有メモリ１７０に結合される。他の実施形態では、システム１００においてＤＭＡコマンドを介してＡＰＵ１１０間でのアトミック更新シーケンスをサポートするために、ＭＰＵ複合体１９３は使用せずに、複数のＡＰＵ複合体１９２が使用される。あるいは、本発明の範囲内には、ＤＭＡコマンドを介してアトミック更新シーケンスをサポートする他のユニットがある。
【００１６】
一般に、ＡＰＵ１１０は、同期化などの理由で、ｇｅｔｌｌａｒ、ｐｕｔｌｌｃ、およびｐｕｔｌｌｕのロック・ラインＤＭＡコマンドの使用を通じて、アトミック・オペレーションを採用する。ＤＭＡコマンドは、ＤＭＡ待ち行列１２０によって適切にソートされた後に、ＡＰＵ１１０の要求時にＤＭＡエンジン１１５によって発行される。通常、ロックの取得およびロックの解除が、典型的にはＡＰＵ１１０内で実行中のプログラムに関して同期的であるため、ロック・ラインＤＭＡコマンドは、即時に実行するためにＤＭＡ待ち行列１２０の前部に転送される。
【００１７】
典型的には、ＤＭＡコマンドｇｅｔｌｌａｒの発行によってＲＳ１３５が設定される。ＤＭＡエンジン１１５のコマンドで、システム・メモリ１７０内の選択されたメモリ・アドレスのデータが処理のためにローカル・ストア１０５に搬送される。通常、このデータ転送は、１キャッシュ・ライン分１２８バイトとすることができる。このデータは、時にはアトミック・キャッシュ１３７で見つけることができる（以前に発行されたｇｅｔｌｌａｒがこのデータへのアクセスに使用された場合）。しかし、アトミック・キャッシュ１３７で見つからない場合、そのデータに関する要求がＢＩＣ１５０に出され、システム・メモリ１７０から、または他の付属ユニット（それぞれ、ＭＰＵまたはＡＰＵ）に関連付けられたキャッシュから検索されたデータが、ローカル・ストア１０５にコピーされ、さらにアトミック・キャッシュ１３７にもコピーされる。
【００１８】
さらに、ｇｅｔｌｌａｒコマンドの際中に、ＲＳ１３５内の予約グラニュールについての「予約」が行われる。予約グラニュールのサイズは実施に応じて異なるが、予約グラニュールがキャッシュ・ライン・サイズと一致する方が実施しやすい。ＡＰＵ１１０プログラムは、制御バス１０３を介してＤＭＡ待ち行列１２０からコマンド完了ステータスを読み取ることによって、ｇｅｔｌｌａｒコマンドが完了するのを待つ。制御バス１０３は、一般に複数のチャネルを備え、各チャネルは事前に定義された情報を搬送する。ｇｅｔｌｌａｒコマンドは、ＲＳ１３５で予約が設定され、データがローカル・ストア１０５にコピーされると「完了」として報告される。ＡＰＵ１１０プログラムは、通常、ローカル・ストア・バス１０７を介したローカル・ストア１０５内のデータを、期待される結果、たとえばロックが行われたかを、またはロックが解放されたかを示す値、と比較をし、当該値が（ロックが行われたことを指定する値などの）期待された結果ではなかった場合、制御バス１０３を介してＤＭＡ待ち行列１２０にｇｅｔｌｌａｒコマンドをいずれにせよ再発行する。他の実施形態では、値が期待された結果（ロック解放など）である場合、ＡＰＵ１１０プログラムは、ローカル・ストア・バス１０７を介して（ロックが行われたことを指定するために）ローカル・ストア内のデータを修正し、アトミック・キャッシュ１３７内のデータを「アトミックに」更新すること、あるいは、ローカル・ストア１０５内に有するデータがシステム・メモリ１７０またはシステム・メモリの他のユニットのキャッシュからの最新のコピーであるように保証することを試みるために、制御バス１０３を介してＤＭＡ待ち行列１２０にｐｕｔｌｌｃコマンドを発行する。
【００１９】
予約ステーション１３５に格納された予約グラニュール・アドレス、にあてはまるアドレスについてのアトミック・キャッシュ１３７の「キル（Kill）」タイプのスヌープが、「ｐｕｔｌｌｃ」コマンドを実行する前にアトミック機構１３０によってＢＩＣ１５０から受け取られた場合、ｇｅｔｌｌａｒコマンドの実行によって以前に設定された予約は、予約ステーション１３５でリセットされる。典型的には、ＢＩＣ１５０に接続された他のユニットがアトミック・キャッシュ１３７に格納可能なデータの修正（書込み）を試みると、キル・タイプのスヌープ・コマンドが受け取られる。
【００２０】
ＤＭＡエンジン１１５がｐｕｔｌｌｃの結果としてローカル・ストア１０５からのデータをアトミック・キャッシュ１３７またはシステム・メモリ１７０のいずれかへコピーする機会がある前に、予約が無効化されると、ＤＭＡエンジン１１５は、ＤＭＡ待ち行列１２０内でｐｕｔｌｌｃコマンドに「予約喪失（Reservation Lost）」ステータスのマークを付け、ローカル・ストア１０５からアトミック・キャッシュ１３７またはシステム・メモリ１７０へデータをコピーすることはない。ｐｕｔｌｌｃコマンドによってアドレス指定された予約グラニュールについての予約が予約ステーション１３５内に依然として存在する場合、アトミック機構１３０は、キル・タイプのスヌープ・コマンドをＢＩＣ１５０を介して他のユニットに送り、同じ予約グラニュールについて他のユニット（ＡＰＵまたはＭＰＵ）がそれらのアトミック機構内で実行したかもしれないどのような予約をもリセットする。これは、ＢＩＣ１５０に接続された他のプロセッサ（ＭＰＵ、ＡＰＵ）がそれらの処理を完了する前にアトミック機構１３０がデータのこの更新処理を完了したため、また、この更新されたデータがさらに他のプロセッサによって使用されるはずのデータとなるためである。
【００２１】
次に、ＤＭＡエンジン１１５は、ローカル・ストア１０５からアトミック・キャッシュ１３７へデータをコピーし、予約ステーション１３５内の予約がリセットされる。その後ＤＭＡエンジン１１５は、ＤＭＡ待ち行列１２０内のｐｕｔｌｌｃコマンドについて「成功（Succeeded）」ステータスを設定する。ＡＰＵ１１０プログラムは、ステータスが「成功」であるか「予約喪失」であるかを判別するために、制御バス１０３を使用してＤＭＡ待ち行列１２０からのｐｕｔｌｌｃコマンドの完了ステータスを待機して読み取る。「成功」の場合アトミック・オペレーションは完了し、「予約喪失」の場合、ｇｅｔｌｌａｒコマンドの発行で始まるシーケンス全体がＡＰＵ１１０プログラムによって再試行されなければならない。
【００２２】
次に、ｐｕｔｌｌｃコマンドが首尾よく完了し、その後のオペレーションが「ロック」を保持しながら実行された後、ＡＰＵ１１０はｐｕｔｔｌｕコマンドを発行して「ロック」を解除する。ｐｕｔｔｌｕコマンドは、一般に、データをＡＰＵ１１０ローカル・ストアからアトミック・キャッシュ１３７に無条件に転送するために使用される。キャッシュ・ラインが存在しアトミック・キャッシュ１３７内で排他的であるとしてマーク付けされた場合、ＤＭＡエンジン１１５はＡＰＵ１１０ローカル・ストアからアトミック・キャッシュ１３７にデータを転送する。
【００２３】
キャッシュ・ラインが存在するが排他的でないとしてマーク付けされた場合、アトミック機構は、このデータのコピーを有する他のユニットのキャッシュ内のキャッシュ・ラインを無効にする、「請求解除（Declaim）」スヌープ・コマンドを発行する。このラインにはキャッシュ１３７で「排他的（Exclusive）」とマーク付けされ、ＤＭＡエンジン１１５はデータをＡＰＵ１１０ローカル・ストアからアトミック・キャッシュ１３７に転送する。最終的に、キャッシュ・ラインがアトミック・キャッシュ１３７に存在しない場合、アトミック機構１３０は、ＢＩＣ１５０を介してスヌープ要求を発行することによって、何らかの他のユニットのキャッシュにラインが存在するかどうかを判別する。他のユニットのキャッシュに存在する場合、他のユニットのキャッシュからシステム１００に関連付けられたアトミック・キャッシュにデータが転送され、データを格納しているキャッシュ・ラインは、データの転送元となったキャッシュ内では無効となる。他のユニットのキャッシュにデータが存在しない場合、メモリ・コントローラ１６０が共有メモリ１７０からデータを供給することになる。どちらの場合も、データを格納しているアトミック・キャッシュ内のキャッシュ・ラインは、「排他的」として描写される。その後、ＤＭＡエンジン１１５はローカル・ストア１０５からアトミック・キャッシュ１３７へデータを転送する。
【００２４】
言い換えれば、「比較及びスワップ」アトミック更新では、比較の対象と一致するもの、即ちロック解放を示す値となり得るものをＡＰＵ１１０が取得するまで、ＡＰＵ１１０はｇｅｔｌｌａｒコマンドを繰り返し発行することになる。値が首尾よく比較されると、「スワップ」が試行される。すなわち、値は、場合によっては「ロック実行」を示す値に変更される。次に、「値をアトミックにスワップするため」にｐｕｔｔｌｌｃが発行され、場合によっては、古い値であるロック解放が新しい値であるロック実行にスワップされる。これが成功すると、ＡＰＵ１１０はリソースを「所有」し、言い換えれば、読取り、または読取り／書込み、の特権を有し、「ロック済み」オブジェクト上で他のオペレーションを実行する。次に、ＡＰＵ１１０が完了すると、「ロックを解除」するか、または言い換えると、値を「ロック実行」から「ロック解放」の値に変更する。これはｐｕｔｔｌｕコマンドを使用して実行される。
【００２５】
アトミック・キャッシュ１３７の存在は、アトミック更新の実行の観点から、ある役割を果たすものである。必然的に、同じデータのアトミック更新が、ＢＩＣ１５０に接続された複数のＡＰＵ複合体（ＡＰＵ／ＤＭＡユニット）１９２、ＭＰＵ複合体１９３によって頻繁かつ同時に試行される可能性がある。アトミック・キャッシュ１３７はロック・ラインに関連付けられた最新のデータを有することができるため、他のキャッシュが更新されると、必ずしもシステム・メモリ１７０からではなく、他のアトミック・キャッシュ１３７からの情報に更新することができる。この実施形態では、複数のユニット間でのキャッシュからキャッシュへの転送が同じ集積回路チップ上で発生することが可能であり、通常は、２つの異なる集積回路チップ間で発生するシステム・メモリからキャッシュへの転送よりもかなり高速である。
【００２６】
一般に、システム１００は、同期化の本質ではないメモリ転送などのような、システム・メモリ１７０から転送されたすべてのデータをキャッシュするのではなく、アトミック・キャッシュ１３７で同期化に使用されたデータのＤＭＡ転送の結果をキャッシュすることによって、時間を節約する。これにより、システム・メモリとローカル・ストアとの間でのすべてのデータのＤＭＡ転送をキャッシュするのに使用されるキャッシュよりも、アトミック・キャッシュ１３７が小さくて良いという点で、かなりのチップの表面積が節約される。さらに、検索グラニュールを、キャッシュ・ラインのサイズおよび配列に合わせて事前に規定することができるため、特定のデータをアトミック・キャッシュ１３７から検索するのに必要な時間が削減される。非ロック・ラインＤＭＡコマンドは、異なる転送サイズおよび配列を有することができる。
【００２７】
たとえば、一実施形態では、アトミック・キャッシュ１３７でロック・ライン・コマンドを使用してアクセスされるデータ用に、４つのキャッシュ・ライン（１２８バイト×４）が予約され、これが、キャッシュからキャッシュ、キャッシュからローカル・ストア、システム・メモリからキャッシュなどの、メモリ転送の基本単位である。しかし、当業者であれば、他の予約グラニュール・サイズも使用可能であることを理解されよう。さらに、ＡＰＵそれ自体が、必要な同期化および相互排除を、「ロック・ライン」コマンドを使用することによって直接提供することができる。
【００２８】
次に、図２を見ると、システム１００でＤＭＡアトミック転送を使用するための方法２００が示されている。方法２００は、特定のコマンドおよびパラメータを使用して、どのアトミック・コマンドが発行されたか、および、エラー状態によって不適切な呼出しまたはコマンドの実行が生じたかどうかを判別することができる。
【００２９】
ステップ２０５では、ＡＰＵ１１０によってｇｅｔｌｌａｒコマンドが発行される。ステップ２０５では、ＡＰＵ１１０は、それに結合された制御バス上にアトミックＤＭＡコマンド「ｇｅｔｌｌａｒ」を発行し、ＤＭＡ待ち行列１２０に搬送されるようにする。この実施形態では、ｇｅｔｌｌａｒコマンドは３つのパラメータを含む。第１のパラメータは、検索されたデータをローカル・ストア１０５内で最終的に送信させる、ローカル・ストア・アドレス（ＬＳＡ）である。第２のパラメータは、システム・メモリ内でデータのコピー元となる高位アドレスである、有効高位アドレス（ＥＡＨ）である。第３のパラメータは、システム・メモリ内でデータのコピー元となる低位アドレスである、有効低位アドレス（ＥＡＬ）である。ＥＡＨおよびＥＡＬパラメータは、アトミック更新シーケンスに関連する共有メモリ内の位置を定義する。
【００３０】
ステップ２０５では、ｇｅｔｌｌａｒコマンドは待ち行列の前部に配置される。このコマンドはＤＭＡ待ち行列１２０上に配置される。このコマンドおよび関連付けられたパラメータは、一連の「チャネルへの書込み（Write to Channel）」コマンドを介して書き込まれる。
【００３１】
ステップ２１０では、ＤＭＡエンジンが、システム・メモリ１７０かあるいはＬ２キャッシュ１８７またはアトミック・キャッシュ１３７かのいずれかからローカル・ストア１０５へのデータの転送を命じる。ステップ２１５では、アトミック・キャッシュ１３７内でデータが見つからなかった場合、ＢＩＣ１５０がこのデータの要求を実施する。ＢＩＣ１５０は、第１に、スヌープ要求を介して、ＭＰＵ複合体１９３のＬ２キャッシュ１８７、および／または、ＡＰＵ複合体１９２のアトミック・キャッシュ１３７、のうちのいずれかに、選択されたデータを要求する。要求されたデータがいずれのキャッシュにも見つからない場合、ＢＩＣ１５０はシステム・メモリ１７０にデータを要求する。ステップ２２０では、Ｌ２キャッシュ１８７またはシステム・メモリ１７０のいずれかからデータが適宜転送されると、転送されたデータのコピーがアトミック・キャッシュ１３７に格納され、ＤＭＡエンジンはアトミック・キャッシュ１３７からローカル・ストア１０５にデータを転送する。
【００３２】
ステップ２２５では、ＤＭＡエンジン１１５によって、ｇｅｔｌｌａｒコマンドに関連する予約グラニュール位置を指定するアドレスと共に、ＲＳ１３５に予約が設定される。ステップ２２７では、ＡＰＵ１１０が、ｇｅｔｌｌａｒコマンドが完了した旨の完了通知を待つ。ステップ２３０では、ＡＰＵ１１０が、そのローカル・ストア１０５に配置されたデータを処理する。ステップ２３５では、ＡＰＵ１１０が、ローカル・ストア内のロック・ライン・データの処理および修正後、ｐｕｔｌｌｃコマンドを発行する。
【００３３】
ステップ２４０では、ｇｅｔｌｌａｒコマンドによって以前に設定されたロック・ライン予約グラニュールについての予約を予約ステーション１３０が依然として有しているかどうかを、アトミック機構１３０が判別する。予約がない場合、ステップ２４２で、ｐｕｔｌｌｕｃコマンド・ステータスが「失敗（Failed）」に設定され、ステップ２９０に進む。
【００３４】
しかし、予約が依然として存在する場合、ステップ２６５で、ＤＭＡエンジン１１５がローカル・ストア１０５からアトミック・キャッシュ１３７へデータを転送する。ステップ２７０では、予約ステーション１３５内でこのキャッシュ・ラインに関する予約ステーションがリセットされる。ステップ２８０では、ｐｕｔｌｌｃコマンドのステータスが「成功」としてＤＭＡ待ち行列１２０に格納される。ステップ２９０では、ＡＰＵプログラムがｐｕｔｌｌｃコマンドの完了または非完了に関するロック・ライン・ステータスを読み取る。ステップ２９５では、ｐｕｔｌｌｃコマンドが失敗の場合、シーケンス全体がステップ２０５から再度実行され、他のｇｅｔｌｌａｒコマンドが発行される。しかし、ｐｕｔｔｌｃコマンドが成功の場合、図２のアトミック更新シーケンスはステップ２９７で終了する。
【００３５】
次に図３を見ると、ｐｕｔｌｌｕコマンドを発行するための方法３００が示されている。一般に、ｐｕｔｌｌｕコマンドは、図２のアトミック更新シーケンスによって以前に獲得されたソフトウェア・ロックを解除するために使用される。
【００３６】
ステップ３０５では、ＡＰＵ１１０がＤＭＡ待ち行列にｐｕｔｔｌｕコマンドを発行する。ステップ３１０では、ＤＭＡエンジン１１５がｐｕｔｌｌｕコマンドを処理し、アトミック・キャッシュ１３７への１２８バイトの書込みを要求する。ステップ３１５では、アトミック・キャッシュ１３７がそのディレクトリを読み取って、ラインがアトミック・キャッシュ１３７に存在するかどうか、および排他的状態であるかどうかを判別する。ステップ３２０では、キャッシュ・ラインが関連するアトミック・キャッシュ１３７に存在するかどうか、およびそれが排他的状態であるかどうかを、アトミック・キャッシュ１３７が判別する。
【００３７】
関連するアトミック・キャッシュ１３７にキャッシュ・ラインが存在するが、排他的状態でない場合、ステップ３３０で、アトミック・キャッシュ１３７はＢＩＣ１５０に対して排他的アクセスでデータを取得するように要求する。「修正済み、排他的、共有、および無効」（ＭＥＳＩ：Modified-Exclusive-Shared-Invalid）キャッシュ制御プロトコルを使用することが可能であるが、他の形式のキャッシュ制御プロトコルも本発明の範囲内である。
【００３８】
関連するアトミック・キャッシュ１３７にキャッシュ・ラインが存在し、かつ排他的である場合、ステップ３３８で、アトミック機構１３０はＤＭＡエンジン１１５に対してローカル・ストア１０５からアトミック・キャッシュ１３７へのデータの転送を開始するように命じる。一般に、アトミック・キャッシュ１３７内でアトミック・データ転送を行うと、データ・バスを介したアトミック・キャッシュ１３７からローカル・ストア１０５への転送の方が、それ以外の、ローカル・ストア１０５からシステム／共有メモリ１７０への転送において示されるであろうよりも、かなり高速の処理が可能になる。
【００３９】
本発明は、多くの形式および実施形態が可能であることを理解されよう。したがって、前述の内容で、本発明の趣旨または範囲を逸脱することなく、いくつかの変形形態が実行可能である。本明細書で概説した機能は、様々なプログラミング・モデルを可能にする。本開示は、いかなる特定のプログラミング・モデルをも優先するものであると解釈すべきではなく、代わりに、これらのプログラミング・モデルを構築することのできる基礎となるメカニズムを対象とするものである。
【００４０】
以上、本発明について、その好ましい実施形態のいくつかを参照しながら述べてきたが、開示された実施形態は、本質的には限定的なものではなく、例示的なものであること、ならびに、前述の開示では、広範囲にわたる変形、修正、変更、および置換えが企図され、場合によっては、本発明のいくつかの特徴は、他の特徴をこれに対応して使用することなく、採用することができるということに留意されたい。こうした変形および修正の多くは、前述の好ましい実施形態に関する記述の再検討に基づいて、当業者にとって明らかなものであり、また望まれるものであるとみなすことができる。したがって、特許請求の範囲は、広範囲に、そして本発明の範囲に適合した形で解釈されることが妥当である。
【図面の簡単な説明】
【００４１】
【図１】システム・メモリ、ＤＭＡエンジン、アトミック機構、およびローカル・ストアに結合された、複数のバスのシステム・マップを示す概略図である。
【図２】ＤＭＡが予約と共にロック・ラインを取得したり、ロック・ラインを条件付きでキャッシュおよびローカル・ストアに出し入れしたりするのを用いた方法を示す図である。
【図３】ＤＭＡがロック・ラインを無条件で出し入れするのを用いた方法を示す図である。
【符号の説明】
【００４２】
１００    システム
１０３    制御バス
１０５    ローカル・ストア
１１０    ＡＰＵ
１１５    ＤＭＡエンジン
１２０    ＤＭＡ待ち行列
１３０    アトミック機構
１３５    予約ステーション
１３７    アトミック・キャッシュ
１５０    バス・インターフェース・コントローラ
１６０    メモリ・コントローラ
１７０    システム／共有メモリ
１８０    ＭＰＵ
１８７    Ｌ２キャッシュ
１９２    ＡＰＵ複合体
１９３    ＭＰＵ複合体
【図１】
2004348734.tif 000003
【図２】
2004348734.tif 000004
【図３】
2004348734.tif 000005