(57)【要約】  共用リソースへの複数のマスタデバイス間のアクセスを制御する方法が開示される。本方法は、第１のマスタデバイスから共用リソースにアクセスしたいという要求を受信することと、共用リソースの利用可能性を判断することとを含む。共用リソースが利用可能である場合、第１のマスタデバイスによる共用リソースへのアクセスを確立するために、成功応答が第１のマスタデバイスに返される。共用リソースが利用不可能である場合、失敗応答が第１のマスタデバイスに返される。リソースが利用不可能である間、共用リソースが利用可能になるときが自動的に監視される。利用可能になると、第１のマスタデバイスに自動的に通知される。
2015530679.tif 000002
【特許請求の範囲】
【請求項１】
共用リソースへの複数のマスタデバイス間のアクセスを制御する方法であって、前記方法は、
第１のマスタデバイスから前記共用リソースにアクセスしたいという要求を受信することと、
前記共用リソースの利用可能性を判断することと、
前記共用リソースが利用可能である場合、前記第１のマスタデバイスによる前記共用リソースへのアクセスを確立するために、前記第１のマスタデバイスに成功応答を返すことと、
前記共用リソースが利用不可能である場合、
前記第１のマスタデバイスに失敗応答を返すことと、
前記共用リソースが利用可能になるときを自動的に監視することと、
前記共用リソースが利用可能になったとき、前記第１のマスタデバイスに自動的に通知することと
を備える、方法。
【請求項２】
利用可能性を判断することは、
前記共用リソースがアクセスのために利用可能であるかどうかを表す値を有する変数を識別することと、
前記変数の現在値を検出することと
を備える、請求項１に記載の方法。
【請求項３】
自動的に監視することは、
前記変数値が所定のしきい値に達するときを検出すること
を備える、請求項２に記載の方法。
【請求項４】
前記変数がセマフォ変数を備える、請求項２に記載の方法。
【請求項５】
複数のマスタデバイスの各々から前記共用リソースへのアクセスの要求を受信することと、
前記要求をキューイングすることと
をさらに備える、請求項１に記載の方法。
【請求項６】
自動的に通知することが、前記要求の前記キューイングの順序付けに基づく、請求項５に記載の方法。
【請求項７】
演算を行うための共用リソースへの排他的アクセスを要求するコマンドを生成するための要求論理と、前記共用リソースが複数のデバイスによって共用される、
前記共用リソースからのフェール応答信号に応答して、
前記演算に関して待機モードに入ることと、
前記共用リソースからの起動応答の受信まで前記待機モードを維持することと
を行うための待機論理と
を備える、デバイス。
【請求項８】
集積回路プロセッサとして実施される、請求項６に記載のデバイス。
【請求項９】
シグナリングバスに結合するためのインターフェースをさらに備え、前記シグナリングバスが前記複数のデバイスおよび前記共用リソースにも結合される、請求項７に記載のデバイス。
【請求項１０】
前記待機論理が、前記共用リソースへの排他的アクセスを再要求することによって前記起動応答の受信に応答する、請求項７に記載のデバイス。
【請求項１１】
共用リソースとマスタデバイスとの間のトランザクションを調停するためのインターフェースと、
前記マスタデバイスから前記共用リソースへのアクセスの着信要求を受信するためのモニタと、
前記共用リソースの利用可能性を判断するための調停論理と、
前記共用リソースへのアクセスを獲得するための所与のマスタデバイスの成功または失敗を示す信号を生成するための応答論理と
を備え、
ここにおいて、前記インターフェースが、前記複数のマスタデバイスからの第２のマスタデバイスのための起動信号を自動的に生成し、前記第２のマスタデバイスが、前記共用リソースの前記判断された利用可能性に基づいて前記要求キュー中で識別される、
デバイス。
【請求項１２】
前記モニタが、複数のマスタデバイスから前記共用リソースへのアクセスの着信要求を受信する、請求項１１に記載のデバイス。
【請求項１３】
前記モニタが要求キューを備える、請求項１２に記載のデバイス。
【請求項１４】
前記要求キュー中で前記着信要求を順序付けるための論理をさらに備える、請求項１３に記載のデバイス。
【請求項１５】
メモリシステムとして実施される、請求項１１に記載のデバイス。
【請求項１６】
前記共用リソースがメモリを含む、請求項１１に記載のデバイス。
【請求項１７】
前記調停論理は、前記共用リソースがアクセスのために利用可能であるかどうかを示す値を生成するカウンタ回路を備える、請求項１１に記載のデバイス。
【請求項１８】
複数のマスタデバイスと、
前記複数のマスタデバイスに結合されたバスと、
前記バスに結合され、前記複数のマスタデバイスによって共用されるリソースを含む、スレーブデバイスと、前記スレーブデバイスが、
前記共用リソースと前記複数のマスタデバイスからの第１のマスタデバイスとの間の排他的トランザクションを調停するためのインターフェースと、
前記複数のマスタデバイスの少なくとも一部分からの前記共用リソースへのアクセスの着信要求を監視するための要求キューと、
前記共用リソースの利用可能性を判断するための調停論理と、
前記共用リソースへのアクセスを獲得するための前記複数のマスタデバイスからの所与のマスタデバイスの成功または失敗を示す信号を生成するための応答論理と、ここにおいて、前記所与のマスタデバイスが、前記共用リソースにアクセスにしたいという要求を前記スレーブデバイスに送る、
を含み、
ここにおいて、前記インターフェースが、前記共用リソースの前記判断された利用可能性に基づいて前記要求キュー中で識別された第２のマスタデバイスのための起動信号を自動的に生成する、
を備える、システム。
【請求項１９】
前記複数のマスタデバイスが複数のプロセッサを備える、請求項１８に記載のシステム。
【請求項２０】
前記スレーブデバイスがメモリシステムを備える、請求項１８に記載のシステム。
【請求項２１】
前記共有リソースがメモリを備える、請求項１８に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
[0001]本実施形態は、一般にデータ通信に関し、より詳細には、データをバッファするためのフロー制御を行う方法および装置に関する。
【背景技術】
【０００２】
[0002]アトミック演算（Atomic operation）はマルチコアプロセッサアーキテクチャにおいてしばしば採用される。概して、アトミック演算は、システムの残りにとって成功または失敗というただ２つの可能な結果をもつ単一の演算のように見えるように結合される演算のセットである。
【０００３】
[0003]アトミック演算を採用する２つの従来の方法は、それぞれの「ロック（lock）」方式と「排他的（exclusive）」方式とを含む。ロック演算は、概して、一度にただ１つのマスタがバスにアクセスすることを可能にする。共有変数を採用するマルチコアアプリケーションの場合、アクティブマスタがバスの使用を終えるまで他のマスタが待つ必要があるので、ロック方式は非効率的であり得る。
【０００４】
[0004]排他的方式は、複数のマスタが演算中にバスを共用することを可能にする。このことは、複数の処理スレッドによって共用され得るセマフォ変数（semaphore variable）のために特に有用である。従来、排他的演算は、第１のマスタがメモリへの読取りアクセスを実行することに関与する。次いで、同じマスタによって同じロケーションへの書込みアクセスが行われ得る。読取りアクセス以来、ロケーションアドレスが変わらなかった場合、書込みアクセスは成功する。第２のマスタは、第１のマスタの読取りサイクルと書込みサイクルとの間の間隔中に読取りを開始し得る。失敗が生じた場合、第２のマスタは、リソースが利用可能になるまで要求を送ることによって共用リソースをポーリングする。利用可能になると、リソースへの排他的アクセスの要求が繰り返される。
【０００５】
[0005]排他的方式は、それの意図された用途のためにうまく動作するが、リソース利用可能性を判断するための反復ポーリングはバストラフィックおよびコンテキスト切替えを増加させ、相応して、バスに沿った利用可能なシグナリング帯域幅を低減させ、システムレイテンシを増加させる。
【発明の概要】
【０００６】
[0006]共用リソースへの複数のマスタデバイス間のアクセスを制御する方法が開示される。本方法は、第１のマスタデバイスから共用リソースにアクセスしたいという要求を受信することと、共用リソースの利用可能性を判断することとを含む。共用リソースが利用可能である場合、第１のマスタデバイスによる共用リソースへのアクセスを確立するために、成功応答が第１のマスタデバイスに返される。共用リソースが利用不可能である場合、失敗応答が第１のマスタデバイスに返される。リソースが利用不可能である間、共用リソースは、共用リソースが利用可能になるときが自動的に監視される。共用リソースが利用可能になると、第１のマスタデバイスに自動的に通知される。
【図面の簡単な説明】
【０００７】
[0007]本実施形態は、例として示されており、添付の図面の図によって限定されるものではない。
【図１】[0008]マルチプロセッサシステムの一実施形態を示す図。
【図２】[0009]図１のシステムを使用したアトミック演算を実装する高レベルコマンドおよび演算フローを示す図。
【図３】[0010]マスタデバイスの観点からの図２のコマンドおよび演算フローの一実施形態に対応する詳細なステップを含むフローチャートを示す図。
【図４Ａ】[0011]スレーブデバイスの観点からの図２のコマンドおよび演算フローに対応する方法の一実施形態に対応する詳細なステップを含むフローチャートの一部分を示す図。
【図４Ｂ】[0012]図４Ａと同様のフローチャートの一部分を示す図。
【発明を実施するための形態】
【０００８】
[0013]本実施形態によれば、共用リソースへの複数のマスタデバイス間のアクセスを制御する方法が開示される。本方法は、第１のマスタデバイスから共用リソースにアクセスしたいという要求を受信することと、共用リソースの利用可能性を判断することとを含む。共用リソースが利用可能である場合、第１のマスタデバイスによる共用リソースへの排他的アクセスを確立するために、成功応答が第１のマスタデバイスに返される。共用リソースが利用不可能である場合、失敗応答が第１のマスタデバイスに返される。リソースが不可能である間、共用リソースは、共用リソースが利用可能であるときを自動的に監視される。利用可能になると、第１のマスタデバイスに自動的に通知される。自動監視と通知とを行うことによって、マスタデバイスからのポーリングと、関係するコンテキスト切替えとが著しく低減され、システム性能が改善され得る。
【０００９】
[0014]以下の説明では、本開示の完全な理解を与えるために、特定の構成要素、回路、およびプロセスの例など、多数の具体的な詳細を記載する。また、以下の説明では、説明のために、本実施形態の完全な理解を与えるために具体的な名称を記載する。ただし、これらの具体的な詳細は、本実施形態を実行するために必要でないことがあることが当業者には明らかであろう。他の事例では、本開示を不明瞭にしないように、よく知られている回路およびデバイスをブロック図の形式で示す。本明細書で使用する「結合された」という用語は、直接接続されていること、または１つまたは複数の介在する構成要素もしくは回路を介して接続されていることを意味する。本明細書で説明する様々なバスを介して与えられる信号のいずれも、他の信号で時間マルチプレクスされ、１つまたは複数の共通バスを介して与えられ得る。さらに、回路要素またはソフトウェアブロック間の相互接続は、バスまたは単一の信号線として示され得る。バスの各々は代替的に単一の信号線であり得、単一の信号線の各々は代替的にバスであり得、単一の線またはバスは、構成要素間の通信のための無数の物理機構または論理機構のうちの任意の１つまたは複数を表し得る。本実施形態は、本明細書で説明する具体的な例に限定されるものと解釈されるべきではなく、むしろ添付の特許請求の範囲によって規定されたすべての実施形態をそれらの範囲内に含む。
【００１０】
[0015]より詳細には、図１を全体的に参照すると、マルチマスタシグナリングシステム１００は、共用バス１０６を介してスレーブデバイス１０４を相互接続する複数のマスタデバイス１０２Ａ〜１０２Ｎを採用する。一実施形態では、マスタデバイス１０２Ａ〜１０２Ｎは、１つまたは複数の集積回路チップ上に配設され得る集積回路プロセッサとして実施される。スレーブデバイス１０４は、一実施形態では、１つまたは複数のメモリデバイス１１０へのアクセスを調停するためにメモリコントローラ１０８を採用するメモリシステムとして実施される。高い利用率および効率を維持しながらメモリへの共用アクセスを可能にするために、以下でより十分に説明する、セマフォタイプおよび非セマフォタイプのアトミック演算のための新しい方式がサポートされる。
【００１１】
[0016]図１をさらに参照すると、デバイス１０２Ａなど、各マスタデバイスは、要求／応答論理１１４と待機キュー１１６とを採用するスケジューラ１１２を含む。要求／応答論理１１４は、演算を行うための排他的アクセスを調整するためにマスタデバイス１０２Ａとスレーブバイス１０４との間でディスパッチされるコマンドまたは要求／応答の形式のメッセージを生成し、受信する。マスタデバイス１０２Ａ中のコア回路１１８は、排他的アクセスの結果としてスレーブデバイス１０４に書き込まれるかまたはそれから取り出されるデータを生成およびまたは処理するための計算リソースを与える。待機キュー１１６は、マスタとスレーブとの間の排他的アクセスがセキュアにされ得るまで、所与のアトミックトランザクションのためのコマンドおよびデータを一時的に記憶する。
【００１２】
[0017]引き続き図１を参照すると、スレーブデバイス１０４は、変動する時間において排他的トランザクションを調整するために複数のマスタデバイス１０２Ａ〜１０２Ｎと通信するスケジューリングインターフェース１２０を含む。スケジューリングインターフェース１２０は、先入れ先出しベースなどで様々なマスタデバイスからの要求を受信および記憶するためのバッファなどの要求キュー１２２を含む。応答論理１２４は、排他的アクセスのためのスレーブデバイス１０４の利用可能性を検出するために要求キュー１２２に結合する。一実施形態では、応答論理１２４は、メモリがアクセスのために利用可能であるとき、（１などの）第１の値を示し、メモリシステム１０４がマスタデバイスのうちの１つとの演算にロックされているとき、（０などの）第２の減分された値を示すカウンタを含む。コントローラ１０８はまた、以下でより十分に説明するように、メッセージを生成し、様々なマスタデバイスに送るための応答生成器１２６を含む。
【００１３】
[0018]図１をさらに参照すると、スケジューリングインターフェース１２０は、処理中および／またはコントローラ１０８によって処理するためにキューイングされた様々な演算を追跡し、扱うための処理リソースを与えるコア論理１２８に結合する。上述したように、一実施形態では、マスタデバイスの各々によって交互に排他的にアクセスされる共用リソースは、メモリである。したがって、コントローラ１０８と１つまたは複数のメモリデバイス１１０との間のアクセスを行うためにメモリインターフェース１３０が与えられる。いくつかの実施形態では、コントローラ１０８およびメモリデバイス１１０は別個の集積回路デバイスとして実施される。他の実施形態では、コントローラ機能は、分散され、マスタデバイス１０２Ａ〜１０２Ｎの各々中に回路として含まれ得る。
【００１４】
[0019]図２に、複数のマスタデバイスと共用スレーブデバイスとの間の演算のシーケンスを示すフローチャートを示す。共用リソースへの排他的アクセスは、単一のトランザクションを行うためのコマンドのシーケンスに関与するセマフォタイプアトミック演算を使用することによって調停される。アトミック演算は、共用リソースへの排他的アクセスを有しないマスタデバイスからのポーリングを低減する。その結果、低減されたポーリングおよび関連するコンテキスト切替えは、相互接続のシグナリング帯域幅を改善し、それによってシステム性能を改善する。
【００１５】
[0020]図２をさらに参照し、一例としてメモリシステムコンテキストを使用すると、（メモリなどの）共用スレーブデバイスへの排他的アクセスを望んでいる（プロセッサなどの）第１のマスタデバイスは、２０２において、スレーブデバイスに第１の要求「アクセス獲得（ACQUIRE ACCESS）」を発行する。２０４において、スレーブデバイスが別のマスタデバイスとの排他的演算のために利用可能である場合、２０６において、「成功」信号がスレーブデバイスから第１のマスタデバイスに発行される。これにより、第１のマスタデバイスとスレーブデバイスとの間の一連のデータ読取りおよび／または書込みトランザクションを行うための２つのデバイス間のロック状態が確立される。
【００１６】
[0021]引き続き図２を参照すると、２０８において、第２のマスタデバイスがスレーブデバイスに排他的アクセス要求を発行した場合、２１０において、第１のマスタが排他的アクセスを有する間、第１のマスタデバイスとのロック状態により、スレーブは、「失敗（FAIL）」応答を用いて第２のマスタデバイスに応答する。第２のマスタデバイスは、次いで、メモリが利用可能になるまで、演算を実行するための待機動作モードに入る。２１２において、第１のマスタデバイスが「解放（RELEASE）」コマンドを発行すると、利用可能性が生じる。解放コマンドに応答して、スレーブデバイスは、２１４において、第１のマスタデバイスから解放され、２１６において、（前の失敗要求がスレーブデバイスキュー中の最高優先度演算であると仮定して）、自動的に「起動（WAKE）」コマンドを生成し、第２のマスタデバイスに発行する。第２のマスタが起動コマンドを受信すると、２１８において、スレーブデバイスとのロック状態を確立するために、新しい獲得要求が発行され、２２０において、排他性を確認するために、対応する成功コマンドがスレーブによって発行される。この時点で、２２２において、スレーブデバイスを第２のマスタデバイスにロックする。
【００１７】
[0022]図３に、セマフォタイプアトミック演算に関係する図２において上記で説明した方法に対応する、マスタデバイスの観点からの方法ステップの一実施形態をさらに詳細に示す。マスタデバイスが、スレーブデバイスによって制御されるメモリからデータを読み取り（またはそれにデータを書込む）必要があるとき、マスタデバイスは、３０２において、要求／応答論理１１４にアクセス「獲得」コマンドを生成させるための命令を実行し、３０４において、要求をスレーブデバイスに送信する。要求送信は、図４Ａに移動するバブル「Ａ」によって表される。コマンドが、３０６において判断されたセマフォタイプ演算である場合、３０８において、マスタデバイスは、スレーブとともにさらなるアクションをとる前に応答を待つ。コマンドが非セマフォタイプのコマンドである場合、すべての他の演算およびオペランドがコマンドとともにパケット化され、３１０において、コマンドがスレーブにディスパッチされる。
【００１８】
[0023]次に図４Ａを参照すると、スレーブデバイススケジューリングインターフェース１２０は、（バブルＡを介した）ステップ４０２において、第１のマスタＩＣから「獲得」コマンドを受信する。次いで、４０４において、要求がセマフォタイプ演算に関与するかどうかの判断が行われる。そうでない場合、スレーブは、４０６において、排他的コマンドを要求キュー１２２にキューイングし、４０８において、排他的コマンドを順次アトミックに実行する。演算がセマフォタイプ演算である場合、４１０において、メモリの利用可能性を示す変数値にアクセスし、４１２において、変数の現在値を検出する。
【００１９】
[0024]図４Ｂを参照すると、変数の検出された値は、４１４において、（図４Ａと図４Ｂとを接合するバブル「Ｂ」を介して）応答論理１２４によって評価される。一実施形態では、「０」よりも大きい値はリソースの利用可能性を示し、これにより、４１６において、前の値から減分された新しい変数値を書き込むことが生じる。次いで、４１８において、バブル「Ｃ」を介して第１のマスタＩＣに成功応答を返す。
【００２０】
[0025]変数値がしきい値を上回らず、したがってリソースが利用不可能であることを示す場合、失敗応答が応答生成器１２６によって生成され、４２０において、バブル「Ｄ」を介して要求元マスタに返される。４２２において、応答論理１２４がリソースを自動的に監視し、４２４において、変数値がしきい値を上回ったとき、バブル「Ｅ」を介して要求元マスタに自動通知（応答）を送る。
【００２１】
[0026]非セマフォタイプアトミック演算は、演算情報のすべてを１つのアクセスにパケット化することに関与する。自動検出または通知機構は適用されない。
【００２２】
[0027]再び図３を参照すると、セマフォタイプ演算の場合、マスタデバイスは待機動作モードで待機し、マスタデバイスは、３２２において、受信されたメッセージを評価し、バブルＣ、Ｄ、またはＥを介して「失敗」応答が受信されたかどうかを判断する。待機モードは待機キュー１１６（図１）によってアクティブにされ、待機キューは、マスタがスレーブへのアクセスを獲得することができるまで、元のアクセス要求をバッファに一時的に記憶する。非失敗（non-FAIL）応答が返され（成功または起動のいずれか）、要求／応答論理１１４（図１）によって受信されたとき、３２４において、受信されたメッセージが成功であるかどうかのさらなる判断が行われる。成功である場合、マスタデバイスとスレーブデバイスとの間のリンクはロックされ、３２６において、アトミックトランザクションを行うために一連の読取りおよび／または書込み動作が生じる。成功応答が受信されなかった場合、「起動」応答が仮定され、マスタデバイスは、上記で説明したステップを介した後続の「成功」応答の受信を通して確認されるロック状態を開始するために、３０２において、スレーブデバイスへのディスパッチのために後続の「獲得」コマンドを生成する。
【００２３】
[0028]提案した方式は、したがって、アクセスの数を最小限に抑え、利用可能性を判断するために演算をポーリングすることを低減する、アトミック演算を提供する。これは、対応して、バスにアクセスすることと、関連するコンテキスト切替えアクティビティとに関与するオーバーヘッドを減少させる。
【００２４】
[0029]上記の明細書では、本実施形態について、それの特定の例示的な実施形態を参照しながら説明した。しかしながら、添付の特許請求の範囲に記載された本開示のより広い趣旨および範囲から逸脱することなく、様々な改変および変更がそれに行われ得ることは明らかであろう。したがって、本明細書および図面は、限定的な意味ではなく例示的な意味で考慮されるべきである。
【図１】
2015530679.tif 000003
【図２】
2015530679.tif 000004
【図３】
2015530679.tif 000005
【図４Ａ】
2015530679.tif 000006
【図４Ｂ】
2015530679.tif 000007
【国際調査報告】
2015530679.tif 000008
2015530679.tif 000009