(57)【特許請求の範囲】
【請求項１】
コンピュータ・システムにおいて複数の装置によって共用されるリソースのデータ完全性を維持するための、前記共用リソースに対応する複数のセマフォーを含むセマフォー・メモリに結合されたスピン・バッファであって、
前記セマフォー・メモリ中に記憶された複数のセマフォーの少なくとも一つのアドレス・フィールドを有するメモリ領域と、
前記複数の装置が前記複数のセマフォーに対してアクセスすることを許可するアクセス許可手段とを含み、
前記アクセス許可手段は、前記メモリ領域のロック・フィールドおよび前記装置の識別フィールドにより、前記共用リソースが前記複数の装置の一つによって所有されているかどうかを、前記ロック・フィールドを使用して識別し、前記複数の装置のいずれが前記ロック・フィールドにより識別された共用リソースを所有しているかを前記装置の識別フィールドを使用して識別し、
所有権を有していない他の前記複数の装置に対し、前記アドレス・フィールドにより指定される前記複数のセマフォーへのアクセスを封じると共に、ロックされていない前記複数のセマフォーへの並列アクセスを許すことを特徴とするスピン・バッファ。
【請求項２】
前記ロック・フィールドおよび識別フィールドが複数のフィールドを含み、前記複数のフィールドのそれぞれにおける情報が、前記複数の装置のいずれかが、前記ロック・フィールドおよび識別フィールドにより識別されるセマフォーに対応する共用リソースの所有権を有しているかどうかを示す請求項１記載のスピン・バッファ。
【請求項３】
コンピュータ・システムにおいて複数の装置によって共用されるリソースのデータ完全性を維持するための、前記共用リソースの一つにそれぞれが対応する複数のセマフォーを含むセマフォー・メモリへのアクセスを制御するスピン・バッファであって、
前記セマフォー・メモリ中に記憶された前記複数のセマフォーの少なくとも一つのアドレス・データを格納するための、前記複数のセマフォーの一つにそれぞれが対応する複数の記憶場所を含み、
前記記憶場所のそれぞれが、
前記記憶場所が前記複数のセマフォーのアドレスを識別するためのアドレス・フィールドと、
前記記憶場所に対応する前記セマフォーに対応する共用リソースが前記複数の装置の一つによって所有されているかどうかを識別するためのロックおよび識別フィールドとを含み、
前記スピン・バッファは、
前記アドレス・フィールドに含まれる情報にしたがって、前記セマフォーに対応する共用リソースを所有しない装置によるスピン・バッファ内の前記アドレスにより指定されるセマフォーへのアクセスをロックアウトするための手段と、
前記複数の記憶場所の前記ロックおよび識別フィールドに含まれる情報を参照し、ロックされていない他のアドレスにより参照されるセマフォーに対するアクセスを並列的に許すための手段と、
を含むことを特徴とするスピン・バッファ。
【請求項４】
コンピュータ・システムにおいて複数の装置によって共用リソースのデータ完全性を維持する方法であって、
アドレスによりそれぞれ指定される複数のセマフォーを含むセマフォー・メモリを設けるステップと、
前記複数のセマフォーの一つにそれぞれが対応し、ロック・データおよび識別データとアドレス・フィールドとをそれぞれ含む複数の記憶場所を有するスピン・バッファを設けるステップと、
前記ロック・データおよび識別データが、前記装置がセマフォーの一つに対応する前記アドレス・フィールドにより識別される前記共用リソースを所有していないことを示す場合には、前記複数の装置のいずれかに対して前記記憶場所の一つに対応する前記アドレス・フィールドの一つに対応する前記セマフォーに対するアクセスを許可し、
前記ロック・データおよび識別データが、前記装置のうちの一つの装置がセマフォーの一つに対応する前記アドレス・フィールドにより識別される前記共用リソースを所有することを示す場合には、前記一つの装置による前記記憶場所の一つに対応する前記アドレス・フィールドの一つに対応する前記セマフォーに対するアクセスを許すステップと、
前記ロック・データおよび識別データが、要求側の装置が前記共用リソースを所有せず、前記複数の装置の別の一つが前記共用リソースを所有することを示すならば、前記要求側の装置による前記一つの記憶場所に対応する前記アドレス・フィールドに格納されたアドレスにより参照される前記セマフォーに対するアクセスを封じるステップと、
を含むことを特徴とする方法。
【請求項５】
前記複数の装置の一つによって必要とされる共用リソースを識別するステップと、
前記複数のセマフォーのうち、前記共用リソースに対応する選択された一つを識別するステップと、
前記スピン・バッファ内の前記記憶場所のいずれかが前記選択されたセマフォーに対応するかどうかを判断するステップと、
前記スピン・バッファ内の前記記憶場所の一つが、前記選択されたセマフォーに対応するならば、前記装置のいずれかが、前記ロック・データおよび識別データに基づいて前記共用リソースを所有しているかどうかを判断するステップと、
前記スピン・バッファ内の前記記憶場所のいずれも前記選択されたセマフォーに対応しないならば、前記セマフォーのアドレスを、割り当てられた記憶場所中のアドレス・フィールドに書き込み、前記ロック・データおよび識別データを、前記割り当てられた記憶場所中の対応するロック・フィールドおよび識別フィールドに書き込むことにより、前記記憶場所の一つを、前記選択されたセマフォーに対応する前記セマフォーに割り当てるステップと、
をさらに含む請求項４記載の方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は一般にデータ処理システムに関し、より具体的には、スピン・バッファおよびスピン・バッファを使用してコンピュータ・システム中でセマフォーに対するアクセスを制御して、システム性能を高めながらも共用リソースのデータ完全性を保証する方法に関する。
【０００２】
【従来の技術】
１９４８年のＥＤＶＡＣコンピュータ・システムの開発がコンピュータ時代の幕開けと称されることが多い。そのとき以来、コンピュータ・システムは極めて精巧な装置へと進化してきた。しかし、今日のもっとも進んだコンピュータ・システムでさえ、当初のコンピュータ・システムのいくつかに見られた基本要素の多くを含み続けている。例えば、最新のコンピュータ・システムは、プロセッサ、メモリおよび１個以上の周辺装置を含む。近年、多数のプロセッサが導入されて、コンピュータ・システムの計算速度が高められてきた。多数のプロセッサを有するコンピュータ・システムは通常、プロセッサごとに別個のメモリおよび周辺装置を有するのではなく、プロセッサの間でメモリおよび周辺装置を共用している。コンピュータ・システム内でデータの完全性を維持するためには、一つのプロセッサによって必要とされるデータが別のプロセッサによって破壊されないよう保証するための機構を設けなければならない。
【０００３】
共用リソースを有するコンピュータ・システム中でデータ完全性を保証する一つの方法は、セマフォーとして知られる特殊な信号要素を使用する方法である。コンピュータ・システム中のセマフォーは、通常、共用リソースの状態に関する情報を含む記憶場所である。もっとも一般的な場合、別個のセマフォーが共用リソースごとに割り当てられている。装置（例えばプロセッサまたは周辺装置）が共用リソースに対してアクセスを必要とするとき、その装置はまず、その共用リソースに対応するセマフォーにアクセスして、共用リソースが利用できるかどうかを見いだす。セマフォーが、共用リソースが利用できることを示すならば、要求側の装置はそのセマフォーを変更して、共用リソースが現在使用中であることを示し、それからその共用リソースにアクセスする。この一連の手続きは一般にアトミック読み出し変更書き込みサイクルとして知られている。装置が共用リソースとのその対話を完了すると、装置はデータをそのセマフォーに書き込んで、共用リソースが現在他の装置にとって利用できることを示す。装置がまずセマフォーにアクセスして対応する共用リソースが利用できるかどうかを判断するとき、セマフォーがそのリソースが使用中である（すなわち利用できない）ことを示すならば、要求側の装置は後でセマフォーを読み出して、共用リソースがなおも使用中であるかどうかを判断しなければならない。セマフォーを再読み出しするこのプロセスは「スピニング」として知られ、通常、共用リソースに対するアクセスが達成されるまで繰り返される。上記に概説したステップは、セマフォーを使用してコンピュータ・システム中のリソースを共用する理論を説明する。
【０００４】
上述したようなセマフォーを使用する理論は比較的簡単かつ率直であるが、その具現化の詳細は重大な問題を提示する。例えば、第一の装置がセマフォーから読み出しを行い、共用リソースが利用できると判断するが、その第一の装置がデータをそのセマフォーに書き込んで共用リソースがもやは利用できないことを示す前に、第二の装置が、共用リソースがまだ利用できることを示すそのセマフォーを読み出してしまうことがありうる。そして、第一の装置がセマフォーに対して書き込みを実行して共用リソースが利用できないようにし、続いて第二の装置が同様な書き込みを行うことになる。その結果、第一および第二の装置のいずれも自らが共用リソースに対して独占的アクセスを有すると思い込み、それが共用リソース中のデータの完全性を損ない、セマフォーを提供する他ならぬ目的を頓挫させる。したがって、セマフォーに対してある装置によってアトミック読み出し変更書き込みサイクルが実行されているとき、そのセマフォーに対する別の装置によるアクセスをロックアウトする方法が求められる。
【０００５】
この問題を解消する一つの公知の方法は、アトミック読み出し変更書き込みサイクルが完了するまですべてのセマフォーに対するすべてのアクセスを封じることである。このアプローチは上記に述べた問題を解決するが、その同じセマフォーに対するアクセスのみを禁じるのではなく、要求側の装置がアトミック読み出し変更書き込みサイクルを完了するまですべてのセマフォー・アクセスを禁止する犠牲を払ってしかそうすることができない。簡単な回路設計のため、アトミック読み出し変更書き込みサイクルの間すべてのセマフォー・アクセスをロックアウトするというこの強引なアプローチは、一般的で受け入れられるようになった。しかし、このアプローチは、以下に記すように、アトミック読み出し変更書き込みサイクルの間に異なるセマフォーに対するアクセスを禁止することにより、システムの処理能力を下げてしまう。
【０００６】
図１を参照すると、従来技術の方法１００は、多数の装置が共通のリソースを共用するとき、セマフォーを使用してデータ完全性を保証する。装置が共用リソースを必要とするとき（ステップ１０２）、その装置は他の装置によるすべてのセマフォー・アクセスをロックアウトする（ステップ１０４）。そして、装置はセマフォーを読み出して（ステップ１０６）、その共用リソースが利用できるかどうか、すなわち、共用リソースが別のマスタによって所有されているかどうかを判断する（ステップ１０８）。セマフォーが、共用リソースが別のマスタによって所有されていることを示すならば、装置は「スピン」しなければならない。つまり、装置は後で再び共用リソースのアクセスの取得を試みなければならない。他の装置にセマフォー操作を実行させる（また、そのときに所望の共用リソースを所有する装置がセマフォーに対して書き込みをすることによって所有権を放棄することを許す）ためには、セマフォーへのアクセスのロックを解除しなければならない（ステップ１１０）ことに注意する必要がある。
【０００７】
セマフォーが、共用リソースが別のマスタによって所有されていないことを示すならば、装置はセマフォーに対して書き込みをして（ステップ１１２）、他の装置に対し、その装置が共用リソースを所有していることを示す。ひとたび装置がセマフォーに対して書き込みをしたならば（ステップ１１２）、その装置はその共用リソースの所有権を取得したことになる（ステップ１１４）。装置はその後、セマフォー・アクセスのロックを解除して（ステップ１１６）、他の装置がセマフォー・アクセスを実行することを許す。
【０００８】
セマフォーによって共用リソースの所有権を制御する従来技術の方法１００は、二つの装置が並行にリソースの制御を取得する問題を回避するが、リソースの所有権を所得したのち（ステップ１１４）セマフォー・アクセスのロックが解除されるまで（ステップ１１６）すべてのセマフォー・アクセスをロックアウト（ステップ１０４）しなければならない。
【０００９】
【発明が解決しようとする課題】
したがって、そのとき一つのバス・マスタによってアクセスされているセマフォーに対するアクセスを選択的に不能にしながらも他のすべてのセマフォーに対するアクセスを許す必要性が存在する。このリソース割り当て方法は、異なるマスタが異なるセマフォーに並行にアクセスすることを許すことにより、処理能力を高める。
【００１０】
【課題を解決するための手段】
本発明によると、あるセマフォーに対するアクセスを他のセマフォーに対するアクセスから独立させてロックアウトすることに備えるスピン・バッファが得られる。このスピン・バッファは、要求される共用リソースが別の装置によって所有されているかどうかを示す記憶場所を含む。例えば、スピン・バッファ内の記憶場所は、対応するセマフォーのアドレスを含み、そのセマフォーに対応する共用リソースの所有権に関する情報を含むことができる。このように、スピン・バッファは、共用リソースの所有状態に関するセマフォー内の情報のキャッシュ化を提供する。一つの装置が、共用リソースが利用できるかどうかをチェックする間、他の装置は、セマフォーに直接アクセスすることなく、スピン・バッファ中のデータにアクセスして、他の共用リソースが利用できるかどうかを調べることができる。スピン・バッファおよび関連の方法は、完全に連携したメモリ構造を使用して、セマフォーに対する独占的アクセスを保証する。
【００１１】
本発明の前記およびその他の目的、特徴ならびに利点は、添付の図面と伴に本発明の好ましい実施態様の詳細な説明によって明白に理解されよう。
【００１２】
【発明の実施の形態】
図２を参照すると、共用リソースのデータ完全性を保証する方法２００は、一つの装置（バス・マスタ）がセマフォーにアクセスしているとき、すべてのセマフォー・アクセスをロックアウトするのではなく、異なるセマフォーに対する異なる装置による並行アクセスを許す。ある装置が共用リソースを必要とするとき（ステップ２０２）、そのバス・マスタはそのリソースの所有権を確立するため読み出しを開始する。（ステップ２０２）。所有権に関して読み出ししている間（ステップ２０２）、装置（バス・マスタ）は、他の装置（バス・マスタ）によるその同じセマフォーに対するアクセスだけをロックアウトさせる（ステップ２０４）。これは、要求側の装置（バス・マスタ）に要求される共用リソースの所有権を取得させつつ、他の装置（バス・マスタ）が他のセマフォーにアクセスする（それにより、他の共用リソースの所有権を取得する）ことを可能とさせる。そして、要求側の装置（バス・マスタ）は、それが要求している共用リソースが別の装置（バス・マスタ）によってすでに所有されているかどうかをチェックする（ステップ２０６）。共用リソースが別の装置（バス・マスタ）によって所有されているならば、装置（バス・マスタ）はスピンし、後で再度その共用リソースの所有権の取得を試みなければならない。装置（バス・マスタ）がスピンしなければならないならば、装置（バス・マスタ）は、他の装置（バス・マスタ）がセマフォーにアクセスすることができるよう、スピン・バッファの該当するセマフォーへのアクセスのロックを解除させる（ステップ２０８）。
【００１３】
要求された共用リソースが別のマスタによって所有されていないならば、要求側の装置は、要求側の装置がその共用リソースを所有していることを他の装置に対して示すロック・ビットをセットする（ステップ２１０）ことによって所有権を取得する。そして、装置はセマフォーからデータを読み出し（ステップ２１２）、それで共用リソースの所有権を取得するプロセス（ステップ２１４）が完了する。
【００１４】
ひとたび装置が共用リソースの所有権を取得したならば（例えば、図２の方法によって）、その装置は、セマフォーを更新して状態の変化を反映させる必要があるかもしれない。例えば、装置は、共用リソースの所有権を放棄するためにセマフォーを更新しなければならない。図３を参照すると、セマフォーを更新する方法３００は、まず、セマフォーの更新が必要である時期を判断する（ステップ３０２）。セマフォー更新が始まると（ステップ３０４）、新たなデータをセマフォーに書き込むことによって（ステップ３０６）セマフォーが更新される。この時点で、共用リソースがなおも必要とされているならば（ステップ３０８）、装置は、セマフォーを更新する際に行わなければならないすべてを完了したことになる。しかし、共用リソースがもはや必要とされないならば、装置はロック・ビットをクリアし（ステップ３１０）、共用リソースの所有権が放棄される（ステップ３１２）。装置が、共用リソースがもはや必要とされないと判断したならば、セマフォーに書き込まれたデータ（ステップ３０６）が、共用リソースが所有されてはいないことを示すが、さらに最終段階として、スピン・バッファ中のロック・ビットがクリアされて（ステップ３１０）共用リソースの所有権の放棄が完了することに注意する必要がある。
【００１５】
図４を参照すると、本発明の回路４００が、異なるセマフォーに対する異なる装置による並行アクセスを許すものであり、バス制御装置４０２と、１個以上のバス４０４と、各バス４０４上の１個以上のバス・マスタ４０６と、１個以上の共用リソース４０８とを含む。バス制御装置は４０２は、バス・マスタ４０６による共用リソース４０８に対するアクセスを制御して、いかなるときにも一つのバス・マスタ４０６だけにしか所与の共用リソース４０８の制御または所有権を持たせない。バス・マスタ４０６は、１個以上の共用リソース４０８に対するアクセスを必要とし、１個以上の共用リソース４０８の独占所有権を取得することができる適当な装置である。共用リソース４０８は、バス・マスタ４０６の間で共用される、ランダム・アクセス・メモリ（ＲＡＭ）のようなリソースである。バス制御装置４０２は、適当なスキーマを使用して、バス・マスタ４０６による共用リソース４０８に対するアクセスを制御することができる。例えば、バス制御装置４０２は、共用リソース４０８に対するアクセスをいつバス・マスタ４０６に与えるかを判定するアービトレーション論理を含むことができる。このように、バス制御装置４０２は、共用リソース４０８を求める要求に対して許可を与える順序を決定する優先順位をバス・マスタ４０６に対して割り当てることができる。バス・マスタ４０６が共用リソース４０８に対するアクセスを要求するのでもよいし、あるいはまた、バス・マスタをバス制御装置４０２によってポーリングして、共用リソース４０８に対するアクセスが必要とされるかどうかを決定するのでもよい。インプリメントされるプロトコルが何であれ、バス制御装置４０２は、共用リソース４０８中のデータ完全性を保証し、異なるセマフォーに対する異なるバス・マスタ４０６による並行アクセスに備える。
【００１６】
図５を参照すると、本発明の回路による一つの具体的な実施態様は、４個のバス・マスタ４０６Ａ〜４０６Ｄと、スピン・バッファ５０２と、セマフォー・メモリ５０４と、アービタ５０６とを含む。アドレス・バス５１０、データ・バス５１２および制御バス５１４が、バス・マスタ４０６Ａ〜４０６Ｄのそれぞれと、セマフォー・メモリ５０４と、スピン・バッファ５０２と、アービタ５０６とを相互接続している。加えて、制御ライン（すなわち、ＲＤ ＳＴＲＯＢＥ、ＷＲ ＳＴＲＯＢＥおよびＲＤＹ＃）がセマフォー・メモリ５０４とスピン・バッファ５０２とを相互接続している。
【００１７】
スピン・バッファ５０２は、レジスタのような複数の記憶場所５２０Ａ〜５２０Ｚを含み、それぞれの記憶場所５２０Ａ〜５２０Ｚが、セマフォー・メモリ５０４中に記憶されたセマフォーの一つに関連するデータを保持するようになっている。記憶場所５２０Ａ〜５２０Ｚの中のデータは、セマフォーのアドレス、セマフォーに対応する共用リソースがロックされているかどうか（すなわち、共用リソースが別のバス・マスタによって所有されているかどうか）、そして現在そのリソースを所有するバス・マスタ４０６Ａ〜４０６Ｄの識別（ＩＤ）を含むことができる。
【００１８】
図８〜１０にさらに詳細に示すように、種々の方法を用いて記憶場所５２０Ａ〜５２０Ｚの中のＩＤおよびロック情報をコード化することができる。図８を参照すると、ロックおよびＩＤ情報をコード化する第一の方法は、一つのロック・ビットと、共用リソースにアクセスする必要がある各装置を固有のＩＤによって２進化するのに十分な数Ｍのビットとを使用する。例えば、システム中に８個の装置があるならば、ＩＤフィールド中に３ビットが必要になり、８個の２進組み合わせそれぞれが装置の１個に対応する。このタイプのスキーマを用いると、スピン・バッファ場所に対応する共用リソースが別の装置によって所有されているならばＬＯＣＫビットがセットされ、ＩＤフィールド中の２進コードが、どの装置が共用リソースを所有するかを示す。
【００１９】
図９を参照すると、代替えスキーマは「ワン・ホット」コード化として知られている。このスキーマでは、異なる装置ごとに別個のロック・ビットが提供され、対応する装置が共用リソースを所有するならば、ロック・ビットの一つがセットされる。図１０を参照すると、さらに別のスキーマは、一つのロック・ビットを有し、別個のＩＤビットが、共用リソースを共用しなければならない各装置に対応している。図８〜１０に示す、図５のロックおよびＩＤ情報をコード化する方法は、ロックおよびＩＤ情報を表すための多くの他のスキーマを本発明の範囲内で具現化しうることを認識したうえで、適当なスキーマの例として示される。
【００２０】
再び図２および５を参照すると、装置、例えばバス・マスタ４０６Ａが共用リソースにアクセスしなければならないとき（ステップ２０２）、その装置は、所有権に関して読み出しを開始する（ステップ２０２）。スピン・バッファ５０２が所有権に関しての読み出しを検出すると、スピン・バッファ５０２は、共用リソースのセマフォーに対応する情報がすでにスピン・バッファ５０２中にあるかどうかを調べる。スピン・バッファ５０２がそのデータを含むかどうかを判断する一つの方法は、記憶場所５２０のアドレス・フィールドを見る方法である。セマフォーのアドレスがスピン・バッファ５０２中に見いだされ、別の装置が対応する共用リソースを所有していないならば、スピン・バッファ５０２は、そのセマフォーに対応するアドレスを参照する他の装置によるセマフォーへのすべてのアクセスをロックアウトし（ステップ２０４）、記憶場所５２０のロック・ビット／ＩＤフィールドに書き込みを行って（ステップ２１０）、要求側の装置が現在そのアドレスのセマフォーに対応するリソースを所有していることを示す。セマフォーのアドレスがスピン・バッファ５０２中に見いだされるが、別の装置によって所有されているならば、要求側の装置はスピンし、後で再び共用リソースのアクセスの取得を試みなければならない。
【００２１】
図５の実施態様は、一つのバス接続またはポート５３０を介してスピン・バッファ５０２にアクセスする多数のバス・マスタ４０６Ａ〜Ｄを示すが、図６の実施態様は、複式ポート構成を示す。この第二の実施態様によると、バス・マスタ４０６Ａ〜Ｄが一つのポート５３０を介してスピン・バッファ５０２にアクセスする一方、ＰＣＩ装置４０６Ｅおよび４０６ＦがＰＣＩバス５５０を介して第二のポート５４０からスピン・バッファ５０２にアクセスする。スピン・バッファ５０２は、前記と同じ基本的機能を実行するが、それに加えて、２個のポート５３０および５４０のそれぞれにおけるアクセスどうしを判別しなければならない。スピン・バッファ５２０は、個々のバス・マスタ（例えば４０６Ａ〜４０６Ｄ）どうしを区別する融通性を有するか、あるいはまた、単に、装置が接続されているポートに基づいて判別を行うものでもよいことに注意する必要がある。例えば図６の回路では、スピン・バッファ５０２は、ポート５３０上の装置４０６Ａ〜４０６Ｄごとに別個のＩＤを有するが、ポート５４０については一つのＩＤしか有していない。したがって、装置４０６Ｅまたは４０６Ｆのいずれかが共有リソースの所有権を有するならば、ＩＤフィールドに反映されるＩＤは、ポート５４０に結合された異なる装置どうしを区別することなく、ポート５４０上の一つの装置が所有権を有するということだけを反映する。このように、バス・マスタ４０６Ａ〜４０６Ｄが専用のＩＤを有する一方、バス・マスタ４０６Ｅと４０６Ｆとは一つのＩＤを共用している。図６に示す実施態様は、スピン・バッファ５０２が個々の装置もしくはポートまたは二つの組み合わせの間で判別を行うことができることを示す。
【００２２】
図６に示す構成は、図７に示すような現代のパーソナル・コンピュータ構成に特に応用できる。本発明のコンピュータ・システムでは、１個以上のマイクロプロセッサ４０６がローカル・バス７０４に結合され、このローカル・バスは、アドレス、データおよび制御の各ライン（例えば図６のバス５１０、５１２および５１４）を含むものである。第二レベル（Ｌ２）キャッシュ７０２がローカル・バス７０４に結合され、このローカル・バスが逆に多重ポート・バス制御装置７１０に結合されている。スピン・バッファ５０２が多重ポート・バス制御装置７１０中に含まれ、この多重ポート・バス制御装置７１０上のポート５３０および５４０がスピン・バッファ５０２上のポート５３０および５４０に対応する。図５および６のセマフォー・メモリ５０４は、多重ポート・バス制御装置７１０中の別個のメモリ（図示せず）であってもよいし、システム・メモリ７０６の一部であってもよい。拡張バス周辺装置７０８が図６のＰＣＩ装置４０６Ｅおよび４０６Ｆに相当し、ポート５４０に結合された拡張バス７１２（例えばＰＣＩバス５５０）を介して多重ポート・バス制御装置７１０に結合されている。図７に示す具体的な実施態様では、多重ポートバス制御装置７１０中のスピン・バッファ５０２が、ローカル・バス７０４に結合された個々のマイクロプロセッサ４０６の間で、また、拡張バス７１２を介してポート５４０に結合された拡張バス周辺装置７０８の間で判別を行う。このように、図７のスピン・バッファ５０２は、異なるセマフォーに対する並行アクセスを許しながらも、共用リソース（例えばシステム・メモリ７０６）のデータ完全性を達成し、それにより、システム性能を高める。
【００２３】
図面に示し、本明細書に記載するスピン・バッファ５０２は、少なくとも二つの重要な方法でシステム性能を高める。まず、装置があるセマフォーにアクセスしているとき、スピン・バッファ５０２は、上述したように、他のセマフォーに対する並行アクセスを許す。スピン・バッファ５０２の第二の重要な利点は、セマフォー・ロック情報の効果的なキャッシュ化である。図２に示すように、セマフォー・データをセマフォー・メモリから読み出す（ステップ２１２）前にロック・ビットがセットされる（ステップ２１０）。その後の、セマフォーに対する異なる装置によるアクセスは、スピン・バッファ５０２中でセマフォーのアドレスを見いだし、ロックおよびＩＤフィールドから、共用リソースが別の装置によって所有されているかどうかを判断する。共用リソースがそのとき別の装置によって所有されているならば、要求側の装置は、セマフォー・メモリ５０４からセマフォーを実際に読み出すことなく、スピン・バッファ中に記憶されたデータに基づいて、スピンしなければならないことを知る。スピン・バッファ５０２を使用することにより、これらの利点がいずれもシステム性能の向上に貢献する。
【００２４】
本発明の好ましい実施態様を参照しながら本発明を具体的に示し、説明したが、当業者であれば、本発明の真髄および範囲を逸することなく、その形態および詳細に種々の変更を加えうることを理解するであろう。さらに、各種の導体もしくは接続は単線として図示しているが、限定的な意味においてそのように示されているのではなく、当該技術に周知であるように、複数の導体もしくは接続を含むものでもよいことが理解されよう。
【００２５】
まとめとして、本発明の構成に関して以下の事項を開示する。
（１）コンピュータ・システムにおいて複数の装置によって共用されるリソースのデータ完全性を維持するための、前記共用リソースに対応する複数のセマフォーを含むセマフォー・メモリに結合されたスピン・バッファであって、
前記セマフォー・メモリ中に記憶された複数のセマフォーの少なくとも一つからのデータを表すためのメモリと、
前記複数のセマフォーの選択された一つに対するアクセスの間に他のセマフォーに対するアクセスを選択的に許すための手段と、
を含むことを特徴とするスピン・バッファ。
（２）アクセスを選択的に許すための前記手段がロックおよび識別手段を含み、前記ロックおよび識別手段が、対応する共用リソースが前記複数の装置の一つによって所有されているかどうかを示す上記（１）記載のスピン・バッファ。
（３）前記ロックおよび識別手段が複数のフィールドを含み、前記複数のフィールドのそれぞれにおける情報が、前記複数の装置のいずれかが、前記ロックおよび識別手段に対応するセマフォーに対応する共用リソースの所有権を有しているかどうかを示す上記（２）記載のスピン・バッファ。
（４）前記ロックおよび識別手段を前記複数のセマフォーの対応する一つに関連づけるためのアドレス・フィールドをさらに含む上記（２）記載のスピン・バッファ。
（５）他のセマフォーに対するアクセスを選択的に許すための前記手段が、前記一つのセマフォーに対応する共用リソースが前記複数の装置の第二のものによって所有されているとき、前記複数の装置の第一のものによる前記複数のセマフォーの前記一つに対するアクセスを封じるための手段を含む上記（１）記載のスピン・バッファ。
（６）コンピュータ・システムにおいて複数の装置によって共用されるリソースのデータ完全性を維持するための、前記共用リソースの一つにそれぞれが対応する複数のセマフォーを含むセマフォー・メモリに結合されたスピン・バッファであって、
前記セマフォー・メモリ中に記憶された前記複数のセマフォーの少なくとも一つからのデータを表すための、前記複数のセマフォーの一つにそれぞれが対応する複数の記憶場所を含み、
前記記憶場所のそれぞれが、
前記記憶場所が前記複数のセマフォーのどれに対応するのかを識別するためのアドレス・フィールドと、
前記記憶場所に対応する前記セマフォーに対応する共用リソースが前記複数の装置の一つによって所有されているかどうかを識別するためのロックおよび識別フィールドと、
前記ロックおよび識別フィールドに含まれる情報にしたがって、前記記憶場所に対応する前記セマフォーに対する、対応する共用リソースを所有しない装置によるアクセスをロックアウトするための手段と、
前記複数の記憶場所の前記ロックおよび識別フィールドに含まれる情報にしたがって、ロックされていないセマフォーに対するアクセスを選択的に許すための手段と、
を含むことを特徴とするスピン・バッファ。
（７）コンピュータ・システムにおいて複数の装置によって共用されるリソースのデータ完全性を維持する方法であって、
複数のセマフォーを含むセマフォー・メモリを設けるステップと、
前記複数のセマフォーの一つにそれぞれが対応し、ロックおよび識別データをそれぞれが含む複数の記憶場所を有するスピン・バッファを設けるステップと、
前記ロックおよび識別データが、前記装置の一つが前記セマフォーに対応する共用リソースの所有権を有することを示すならば、前記一つの装置による前記記憶場所の一つに対応する前記セマフォーに対するアクセスを許すステップと、
前記ロックおよび識別データが、要求側の装置が前記共用リソースを所有せず、前記複数の装置の別のものが前記共用リソースを所有することを示すならば、前記要求側の装置による前記一つの記憶場所に対応する前記セマフォーに対するアクセスを封じるステップと、
を含むことを特徴とする方法。
（８）前記複数の装置の一つによって必要とされる共用リソースを識別するステップと、
前記複数のセマフォーのうち、前記共用リソースに対応する選択された一つを識別するステップと、
前記スピン・バッファ内の前記記憶場所のいずれかが前記選択されたセマフォーに対応するかどうかを判断するステップと、
前記スピン・バッファ内の前記記憶場所の一つが前記選択されたセマフォーに対応するならば、前記ロックおよび識別データに基づいて、前記装置のどれが前記共用リソースを所有するのかを判断するステップと、
前記スピン・バッファ内の前記記憶場所のいずれも前記選択されたセマフォーに対応しないならば、前記セマフォーのアドレスを、割り当てられた記憶場所中のアドレス・フィールドに書き込み、前記ロックおよび識別データを、前記割り当てられた記憶場所中の対応するロックおよび識別フィールドに書き込むことにより、前記記憶場所の一つを、前記選択されたセマフォーに対応する前記セマフォーに割り当てるステップと、
をさらに含む上記（７）記載の方法。
【図面の簡単な説明】
【図１】セマフォーを使用して共用リソースのデータ完全性を保証する従来技術の方法を示す流れ図である。
【図２】本発明にしたがってセマフォーの所有権を取得する方法を示す流れ図である。
【図３】本発明にしたがってセマフォーを更新する方法を示す流れ図である。
【図４】本発明による例示的なシステムのブロック図である。
【図５】図４のシステムの第一の実施態様のブロック図である。
【図６】図４のシステムの第二の実施態様のブロック図である。
【図７】図４のシステムの第三の実施態様のブロック図である。
【図８】本発明のスピン・バッファ中の所有権情報をコード化する第一の方法を示す略図である。
【図９】本発明のスピン・バッファ中の所有権情報をコード化する第二の方法を示す略図である。
【図１０】本発明のスピン・バッファ中の所有権情報をコード化する第三の方法を示す略図である。
【符号の説明】
４００  回路
４０２  バス制御装置
４０４  バス
４０６  バス・マスタ
４０８  共用リソース
５０２    スピン・バッファ
５０４    セマフォー・メモリ
５０６    アービタ
【図１】
0003634932.tif 000002
【図２】
0003634932.tif 000003
【図３】
0003634932.tif 000004
【図４】
0003634932.tif 000005
【図５】
0003634932.tif 000006
【図６】
0003634932.tif 000007
【図７】
0003634932.tif 000008
【図８】
0003634932.tif 000009
【図９】
0003634932.tif 000010
【図１０】
0003634932.tif 000011