(57)【要約】本開示は、弱く順序付けられた処理システム及び弱く順序付けられた処理システムにおいてメモリバリアを実行する方法を示す。処理システムは、メモリと、メモリバリアを含むメモリアクセス要求をメモリへ発行するように構成されたマスタデバイスとを含む。処理システムはまた、マスタデバイスにメモリへのアクセスを提供するように構成されたスレーブデバイスを含み、スレーブデバイスは、マスタデバイスによって発行されたメモリバリアによって課された順序制約が実施されることを示す信号を生成するように更に構成される。信号は、マスタデバイスによってメモリバリアより前にメモリへ発行された全てのメモリアクセス要求の実行より前に生成される。
2009529748.tif 000002
【特許請求の範囲】
【請求項１】
弱く順序付けられた処理システムであって、
メモリと、
メモリバリアを含むメモリアクセス要求を前記メモリへ発行するように構成されたマスタデバイスと、
前記マスタデバイスに前記メモリへのアクセスを提供するように構成されたスレーブデバイスとを備え、
前記スレーブデバイスは、前記マスタデバイスによって発行されたメモリバリアによって課された順序制約が実施されることを示す信号を生成するように更に構成され、前記信号は、前記マスタデバイスによって前記メモリバリアより前に前記メモリへ発行された全てのメモリアクセス要求の実行より前に生成されるシステム。
【請求項２】
前記スレーブデバイスは更に、前記メモリバリアより前に前記メモリへ発行された全てのメモリアクセス要求の実行より前に、前記信号を前記マスタデバイスへ提供するように構成された請求項１に記載の弱く順序付けられた処理システム。
【請求項３】
前記マスタデバイスによって発行されたメモリアクセス要求は読取要求を含み、前記弱く順序付けられた処理システムは更に、前記マスタデバイスを前記スレーブデバイスへ接続し受け取りチャネルを有する１つ又は複数のバスを備え、前記スレーブデバイスは更に、前記読取要求と前記信号とに応答するペイロードの両方を、前記受け取りチャネルを介して前記マスタデバイスへ提供するように構成された請求項２に記載の弱く順序付けられた処理システム。
【請求項４】
前記読取要求の各々は順不同読取属性を含み、前記メモリバリアは順不同可能属性を含み、前記スレーブデバイスは更に、前記順不同可能属性がデアサートされた場合、前記メモリバリアより前に発行されデアサートされた順不同読取属性を有する前記読取要求の各々に関する前記ペイロードの後に、前記信号を前記マスタデバイスへ提供するように構成された請求項３に記載の弱く順序付けられた処理システム。
【請求項５】
１つ又は複数のバスを更に備え、前記マスタデバイスと前記スレーブデバイスとが同じバス上にある請求項１に記載の弱く順序付けられた処理システム。
【請求項６】
１つ又は複数のバスを更に備え、前記マスタデバイスと前記スレーブデバイスとが異なるバス上にある請求項１に記載の弱く順序付けられた処理システム。
【請求項７】
前記スレーブデバイスは、前記メモリのためのメモリコントローラを備える請求項１に記載の弱く順序付けられた処理システム。
【請求項８】
前記スレーブデバイスは、ブリッジを備える請求項１に記載の弱く順序付けられた処理システム。
【請求項９】
弱く順序付けられた処理システムであって、
メモリと、
メモリバリアを含むメモリアクセス要求を前記メモリへ発行するように構成されたマスタデバイスと、
前記マスタデバイスに前記メモリへのアクセスを提供するように構成されたスレーブデバイスとを備え、
前記スレーブデバイスは更に、前記マスタデバイスによって発行されたメモリバリアをアクノレッジするように構成され、前記メモリバリアは、前記マスタデバイスによって前記メモリバリアより前に前記メモリへ発行された全てのメモリアクセス要求の実行より前にアクノレッジされるシステム。
【請求項１０】
前記スレーブデバイスは更に、前記メモリバリアより前に前記メモリへ発行された全てのメモリアクセス要求の実行より前に、前記メモリバリアのアクノレッジメントを前記マスタデバイスへ提供するように構成された請求項９に記載の弱く順序付けられた処理システム。
【請求項１１】
前記マスタデバイスによって発行されたメモリアクセス要求は読取要求を含み、前記弱く順序付けられた処理システムは更に、前記マスタデバイスを前記スレーブデバイスへ接続し受け取りチャネルを有する１つ又は複数のバスを備え、前記スレーブデバイスは更に、前記読取要求と前記メモリバリアのアクノレッジメントとに応答するペイロードの両方を、前記受け取りチャネルを介して前記マスタデバイスへ提供するように構成された請求項１０に記載の弱く順序付けられた処理システム。
【請求項１２】
前記読取要求の各々は順不同読取属性を含み、前記メモリバリアは順不同可能属性を含み、前記スレーブデバイスは更に、前記順不同可能属性がデアサートされた場合、前記メモリバリアより前に発行されデアサートされた順不同読取属性を有する前記読取要求の各々に関する前記ペイロードの後に、前記メモリバリアのアクノレッジメントを前記マスタデバイスへ提供するように構成された請求項１１に記載の弱く順序付けられた処理システム。
【請求項１３】
前記マスタデバイス又はその他の場所から受け取られた前記メモリに対する全てのメモリアクセス要求が、前記スレーブデバイスへ提供されるように、前記スレーブデバイスと前記メモリとが接続されている請求項９に記載の弱く順序付けられた処理システム。
【請求項１４】
１つ又は複数のバスを更に備え、前記マスタデバイスと前記スレーブデバイスとが同じバス上にある請求項９に記載の弱く順序付けられた処理システム。
【請求項１５】
１つ又は複数のバスを更に備え、前記マスタデバイスと前記スレーブデバイスとが異なるバス上にある請求項９に記載の弱く順序付けられた処理システム。
【請求項１６】
前記スレーブデバイスは、前記メモリのためのメモリコントローラを備える請求項９に記載の弱く順序付けられた処理システム。
【請求項１７】
前記スレーブデバイスは、ブリッジを備える請求項９に記載の弱く順序付けられた処理システム。
【請求項１８】
マスタデバイスと、スレーブデバイスと、メモリとを有する弱く順序付けられた処理システムにおいて、メモリバリアを実行する方法であって、
メモリバリアを、前記マスタデバイスから前記メモリへ発行することと、
前記メモリバリアによって課された順序制約が実施されることを示す信号を、前記マスタデバイスによって前記メモリバリアより前に発行された前記メモリに対する全てのメモリアクセス要求の実行より前に、前記スレーブデバイスにおいて生成することと
を備える方法。
【請求項１９】
前記メモリバリアより前に前記メモリへ発行された全てのメモリアクセス要求の実行より前に、前記信号を前記マスタデバイスへ提供することを更に備える請求項１８に記載の方法。
【請求項２０】
前記弱く順序付けられた処理システムは更に、前記マスタデバイスを前記スレーブデバイスへ接続し受け取りチャネルを有する１つ又は複数のバスを備え、前記マスタデバイスによって前記メモリバリアより前に発行された前記メモリアクセス要求は読取要求を含み、前記スレーブデバイスは前記読取要求と前記信号とに応答するペイロードの両方を、前記受け取りチャネルによって前記マスタデバイスへ提供する請求項１９に記載の方法。
【請求項２１】
前記マスタデバイスによって前記メモリバリアの前に発行された読取要求のうちの１つ又は複数に関して順不同読取属性をデアサートすることと、前記メモリバリアに関して順不同可能属性をデアサートすることと、前記デアサートされた順不同可能属性に応答して前記マスタデバイスへ前記信号を提供する前に、前記１つ又は複数の読取要求に関するペイロードを前記マスタデバイスへ提供することとを更に備える請求項２０に記載の方法。
【請求項２２】
前記弱く順序付けられた処理システムは更に、１つ又は複数のバスを備え、前記マスタデバイスは、前記１つ又は複数のバスのうちの１つを介して前記スレーブデバイスへ前記メモリバリアを発行する請求項１８に記載の方法。
【請求項２３】
前記弱く順序付けられた処理システムは更に、１つ又は複数のバスを備え、前記マスタデバイスは、前記バスのうちの第１のバスを介して、前記バスのうちの第２のバス上の前記スレーブデバイスへ前記メモリバリアを発行する請求項１８に記載の方法。
【請求項２４】
前記スレーブデバイスは、前記メモリのためのメモリコントローラを備える請求項１８に記載の方法。
【請求項２５】
前記スレーブデバイスは、ブリッジを備える請求項１８に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、一般に処理システムに関し、特に、処理システムにおいてメモリ・バリア・バス・コマンドを効率的に操作する技術に関する。
【背景技術】
【０００２】
コンピュータ及びその他最近の処理システムは、キーパッドを数回叩くだけで高度なタスクを実行することを可能とすることで、エレクトロニクス業界に革命をもたらした。これら高度なタスクはしばしば、バスを用いる高速で効率的な方式によって互いに通信する複数のデバイスを必要とする。バスは、処理システムにおいてデバイス間に共有の通信リンクを提供する。
【０００３】
処理システムにおいてバスと接続されるデバイスのタイプは、特定のアプリケーションに依存して変わる。一般にバスは、複数のプロセッサ、メモリデバイス、及び周辺機器をサポートするように構成される。これらのシステムにおいて、プロセッサはしばしば、メモリ動作を順不同に実行することを可能とすることによって性能利得を達成する。例えば処理システムは、新たなページが開かれる前に、メモリ内の同じページに対する全ての動作が実行されることを可能とするために、メモリ動作のシーケンスを並べ替えることによって性能利得を達成することができる。メモリ動作を並べ替えることが可能とされる処理システムは、一般に「弱く順序付けられた」（"weakly-ordered"）処理システムと称される。
【０００４】
ある例において、メモリ動作の順番を並べ替えることは、プログラム挙動に、予期しない影響を与えることがある。例えばアプリケーションは、プロセッサがメモリからデータを読み取る前に、プロセッサがデータをメモリへ書き込むことを必要としうる。弱く順序付けられた処理システムにおいて、これが起こるという保証はない。これは受け入れられない。
【０００５】
様々な技術が、弱く順序付けられた処理システムにおいて順序付けられたメモリ動作を実行するために用いられてきた。１つの技術は、ある一定のメモリ動作より前の全てのメモリ動作が実行されるまで、単にその一定のメモリ動作を延期する。以前の例では、データがメモリへ書き込まれたことを保証するインディケーションをプロセッサが受け取るまで、プロセッサは読取要求の発行を延期することがある。
【０００６】
最近のプロセッサ技術において一般的な技術は、順序付けられたメモリ動作が必要とされる時、「メモリバリア」として知られているバスコマンドを用いることである。「メモリバリア」は、プロセッサによってメモリバリアより前に発行された全てのメモリアクセス要求が、プロセッサによってメモリバリアより後に発行された全てのメモリアクセス要求より先に実行されることを保証するために用いられることができる。以前の例において、メモリバリアは、プロセッサが読取要求を発行する前にプロセッサによってメモリに送られることができる。これは、プロセッサが、メモリから読み取る前にメモリへ書き込むことを保証するであろう。
【０００７】
メモリバリアは、弱く順序付けられた処理システムにおいて、メモリ動作に順序制約を課すために効率的な方法であるが、システム性能の観点からは非効率的である。メモリバリアは、複数のメモリデバイスを備える処理システムにおいて、特に非効率的となりうる。これらの処理システムにおいて、メモリバリアは、メモリ動作において順序制約を実施するためにアクセスすることができる全てのメモリデバイスへ、プロセッサによって発行される必要があるだろう。結果として、プロセッサによってアクセス可能であるメモリデバイスの各々が、全ての未解決のメモリ動作を完了するまで、メモリバリアに後続する次のメモリ動作は延期される。従って、弱く順序付けられた処理システムにおいてメモリバリア動作を実行するより効率的な方法へのニーズが引き続き存在する。
【発明の開示】
【０００８】
本特許出願は、本願の譲受人に譲渡され、参照することによって本願に明確に組み込まれた、２００６年３月１０日出願の“Efficient Execution of Memory Barrier Bus Commands”と題された米国特許仮出願６０／７８１，０９１号に対する優先権を主張する。
【発明の概要】
【０００９】
弱く順序付けられた処理システムの１つの局面が開示される。処理システムは、メモリと、メモリバリアを含むメモリアクセス要求をメモリへ発行するように構成されたマスタデバイスとを含む。処理システムはまた、マスタデバイスにメモリへのアクセスを提供するように構成されたスレーブデバイスも含み、スレーブデバイスは、マスタデバイスによって発行されたメモリバリアによって課された順序制約が実施されることを示す信号を生成するように更に構成される。この信号は、マスタデバイスによってメモリバリアより前にメモリへ発行された全てのメモリアクセス要求の実行前に生成される。
【００１０】
弱く順序付けられた処理システムの別の局面が開示される。処理システムは、メモリと、メモリバリアを含むメモリアクセス要求をメモリへ発行するように構成されたマスタデバイスとを含む。処理システムはまた、マスタデバイスにメモリへのアクセスを提供するように構成されたスレーブデバイスも含み、スレーブデバイスは、マスタデバイスによって発行されたメモリバリアをアクノレッジするように更に構成される。メモリバリアは、マスタデバイスによってメモリバリアより前にメモリへ発行された全てのメモリアクセス要求の実行前にアクノレッジされる。
【００１１】
弱く順序付けられた処理システムにおいてメモリバリアを実行する方法が開示される。処理システムは、マスタデバイス、スレーブデバイス、及びメモリを含む。この方法は、マスタデバイスからメモリへメモリバリアを発行すること、及び、メモリバリアによって課された順序制約が実施されることを示す信号を、マスタデバイスによってメモリバリアより前にメモリへ発行された全てのメモリアクセス要求の実行前に、スレーブデバイスで生成することを含む。
【００１２】
例示的方法によって本開示の様々な実施形態のみが示され説明される以下の詳細な説明から、当業者には、本開示の他の実施形態が容易に明らかになるであろうことが理解される。理解されるように、本開示の主旨及び範囲から逸脱することなく、本開示は他の実施形態及び異なる実施形態を可能とし、本開示のいくつかの詳細は他の様々な関連における変形例を可能とする。従って、図面及び詳細な説明は、本質として例示的であり、限定的ではないと見なされる。
【詳細な説明】
【００１３】
本開示の様々な局面が、添付図面において限定的ではなく例示的に図示される。
【００１４】
添付の図面と関連する以下の詳細な説明は、本開示の様々な実施形態の説明として意図されており、本開示が実現されうる実施形態のみを表すようには意図されていない。詳細な説明は、本開示の全体的な理解を提供する目的のために特定の詳細を含む。しかし、これら特定の詳細なしに本開示が実現されうることが、当業者には明確であるだろう。いくつかの例において、周知の構成及び構成要素が、本開示の概念を不明瞭にすることを避けるためにブロック図の形式によって示される。
【００１５】
図１は、弱く順序付けられた処理システムの例を示す概念ブロック図である。処理システム１００はコンピュータであるか、コンピュータ内に常駐しているか、又は情報を処理し、取り出し、及び格納できるその他任意のシステムであることができる。処理システム１００は独立型システムであることができ、あるいは、例えば無線電話又は有線電話、携帯情報端末（ＰＤＡ）、デスクトップコンピュータ、ラップトップコンピュータ、ゲーム機、ページャ、モデム、カメラ、自動車機器、工業機器、ビデオ機器、オーディオ機器、又は処理能力を必要とするその他任意の適切なデバイスのようなデバイス内に組み込まれることができる。処理システム１００は、集積回路として、集積回路の一部として、又は複数の集積回路に分離されて実現されることができる。あるいは処理システム１００は、ディスクリート部品又はディスクリート回路と集積回路との任意の組み合わせを用いて実現されうる。当業者は、各特定のアプリケーションに対する処理システム１００の最良の実現方法を理解するであろう。
【００１６】
処理システム１００が、複数のマスタデバイスを複数のスレーブデバイスへ接続するバスアーキテクチャを用いて示される。「マスタデバイス」は、バス要求を発行することのできる任意のデバイスであり、「スレーブデバイス」は、バス要求に応答する任意のデバイスである。図１に示される処理システム１００において、マスタデバイスは、２つのプロセッサ１０２ａ、１０２ｂを備える。プロセッサ１０２ａ、１０２ｂの各々は、一例としてマイクロプロセッサ、デジタル信号プロセッサ（ＤＳＰ）、特定用途向け集積回路（ＡＳＩＣ）、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）、又はその他のプログラマブルロジック、ディスクリートゲート又はトランジスタロジック、又はディスクリートハードウェア部品を含む任意のタイプの処理エンティティであることができる。
【００１７】
プロセッサ１０２ａ、１０２ｂは、一般にシステムバス１０４と称される高速バスによって、複数のスレーブデバイスと接続されている。スレーブデバイスは、各々が独立メモリ１０８ａ、１０８ｂへのアクセスをそれぞれ提供する２つのメモリコントローラ１０６ａ、１０６ｂを含む。この処理システムの実施形態において、メモリ１０８ａ、１０８ｂの各々は、プロセッサ１０２ａ、１０２ｂによってしばしば要求されるアプリケーション及びデータを格納するために用いられる、小型で、高速な、揮発性のメモリであることができる。メモリ１０８ａ、１０８ｂは一般に、ＲＡＭ、ＤＲＡＭ、又はＳＤＲＡＭによって実現されるが、実際には任意の適切な記憶媒体によって実現されることができる。メモリ１０８ａ、１０８ｂは一般に、集合的にシステムメモリと称される。
【００１８】
システムバス１０４と接続される別のスレーブデバイスはブリッジ１１０である。ブリッジ１１０は、高速システムバス１０４を、より低速な低レベルバス１１２と接続するために用いられる。低レベルバス１１２は、周辺機器（図示せず）及び追加のメモリ１０８ｃ、１０８ｄにアクセスするために、プロセッサ１０２ａ、１０２ｂによって用いられうる。これらのメモリ１０８ｃ、１０８ｄは、プロセッサ１０２ａ、１０２ｂによってより低頻度に要求されるアプリケーション及びデータを格納するために用いられうる、例えばハードドライブ、フラッシュメモリ、リムーバブルディスク等のような、大型で低価格の記憶媒体であることができる。いくつかのアーキテクチャにおいて、一方又は両方のメモリは、例えばＲＯＭ、ＰＲＯＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭメモリ、ＣＤ−ＲＯＭ、又はその他任意の適切なパーマネント記憶媒体のような不揮発性メモリでありうる。
【００１９】
システムバス１０４においてスレーブデバイスであるブリッジ１１０は、低レベルバス１１２において多くのスレーブデバイスに対するマスタデバイスである。低レベルバス１１２におけるスレーブデバイスは、メモリ１０８ｃのためのメモリコントローラ１０６ｃ及び第２のブリッジ１１４を含む。第２のブリッジ１１４は、低レベルバス１１２を、メモリコントローラ１０６ｄを介してメモリ１０８ｄへのアクセスを提供する第２の低レベルバス１１６と接続するために用いられる。第２の低レベルバス１１６において、第２のブリッジ１１４はマスタデバイスであり、メモリコントローラ１０６ｄはスレーブデバイスである。
【００２０】
図１の処理システム１００において、プロセッサ１０２ａ、１０２ｂは、オペレーティブシステム及び／又はその他のソフトウェアの制御下で命令を実行するように構成されることができる。命令は、様々なメモリ１０８ａ乃至１０８ｄ内に存在しうる。データもまた、これらのメモリデバイス１０８ａ乃至１０８ｄ内に格納されることができ、ある命令を実行するために、プロセッサ１０２ａ、１０２ｂによって取り出されうる。これらの命令の実行の結果生じる新たなデータは、メモリ１０８ａ乃至１０８ｄへ書き戻されることができる。
【００２１】
図示される処理システム１００の実施形態において、プロセッサ１０２ａ、１０２ｂの何れもが第１のメモリ１０８ａにアクセスできるが、第２のプロセッサ１０２ｂのみが第２のメモリ１０８ｂにアクセスすることができる。加えて、各プロセッサ１０２ａ、１０２ｂは、低レベルバス１１２、１１６においてメモリ１０８ｃ、１０８ｄにアクセスすることができる。プロセッサは、「メモリアクセス要求」を発行することによってメモリにアクセスすることができる。「メモリアクセス要求」は、書込み要求、読取要求、又はその他任意のバス関連要求でありうる。プロセッサは、適切なアドレス、制御情報、及びペイロードをシステムバス１０４の送りチャネル上に位置づけることによって、書込み要求をターゲットメモリへ発行することができる。読取要求の場合は、プロセッサは、アドレス及び制御情報を送りチャネル上に位置づけることができる。読取要求に応答して、ターゲットメモリは、ペイロードをシステムバス１０４の受け取りチャネル上でプロセッサへ送り戻すであろう。
【００２２】
プロセッサによって発行された書込み要求は、システムバス相互接続１１８によって受け取られるであろう。システムバス相互接続１１８は、ペイロード及び制御情報をどこにルートするかを決定するために、アドレスを復号する。メモリ１０８ａ又は１０８ｂ（すなわちシステムメモリ）への書込み要求の場合は、ペイロードは制御情報を伴って、ターゲットメモリのためのメモリコントローラ内のバッファ（図示せず）内へロードされる。図１の弱く順序付けられた処理システム１００において、もし性能利得が達成されることができれば、メモリコントローラは、自身のバッファのコンテンツを順不同にターゲットメモリへ書き込むことができる。一例において、メモリコントローラは、新たなページを開く前にメモリ内の同じページに対する全ての要求を実行するために、ターゲットメモリ内のメモリアクセス要求のシーケンスを並べ替えることができる。
【００２３】
低レベルバス１１２、１１６上のメモリ１０８ｃ、１０８ｄへの書込み要求は、ルーティングが異なる以外は同様の形式で実行される。これらのメモリ１０８ｃ、１０８ｄへの書込み要求に応答して、システムバス相互接続１１８は、制御情報とともにペイロードをブリッジ１１０へルートする。ブリッジ１１０は、ペイロード及び制御情報を、低レベルバス相互接続１２０へ届けるために低レベルバス１１２へ送る。低レベルバス相互接続１２０は、プロセッサ１０２ａ、１０２ｂと処理システム１００内の他のバスマスタリングデバイス（図示せず）との間のメモリ１０８ｃ、１０８ｄへのアクセスを管理する。ペイロード及び制御情報は、低レベルバス相互接続１２０によって、メモリコントローラ１０６ｃと１０６ｄとのうちの１つへ最終的に届けられる。メモリコントローラ１０６ｃ及び１０６ｄの各々は、性能利得が達成されることができる場合、書込み動作が順不同で実行されることを可能とするためのバッファ（図示せず）を含みうる。
【００２４】
前述したように、プロセッサは、アドレス及び制御情報をシステムバス１０４の送りチャネル上に位置づけることによって、読取要求を発行することができる。システムバス相互接続１１８は、制御情報をどこにルートするかを決定するためにアドレスを用いる。メモリ１０８ａ又は１０８ｂ（すなわちシステムメモリ）の何れかへの読取要求は、システムバス相互接続１１８に、制御情報を、制御情報がバッファ（図示せず）へロードされる対応するメモリコントローラへ届けさせる。その他のメモリ１０８ｃ、１０８ｄへの読取要求は、システムバス相互接続１１８に、制御情報を、制御情報が低レベルバス１１２へ送られるブリッジ１１０へ届けさせる。ここから、低レベルバス相互接続１２０は、制御情報を、メモリコントローラ１０６ｃ又は１０６ｄのどちらかのバッファ（図示せず）へ届ける。制御情報は、読取要求を発行するプロセッサへペイロードを送り戻すために、ターゲットメモリのメモリコントローラによって用いられることができる。性能利得が達成される程度まで、ターゲットメモリのメモリコントローラは、自身のバッファ内のメモリアクセス要求を、シーケンス外で実行することができる。
【００２５】
処理システムのいくつかの実施形態において、１つ又は複数のプロセッサは、読取要求に関するペイロードが、それらの発行された順番で受け取られることを必要としうる。これは例えば、処理システムの性能要求が、複雑さを低減するために緩和される場合である。あるいは、プロセッサは、ペイロードがあるアプリケーションに関して発行された順番で受け取られることを要求するモードへの入出を動的に切り替えられることができる。このような柔軟性を維持するために、プロトコルは、各読取要求とともにプロセッサによって送られる制御情報として「順不同読取属性」を含むことができる。順不同読取属性は、対応する読取要求がどのような順番でも実行可能であることを示すようにアサートされうる。逆に、順不同読取属性は、他の未決の読取要求の前か後か、又はそれらとインタリーブされるかの何れかで順序正しく実行されなければならない読取要求のシリーズの各々に関してデアサートされうる。デアサートされた順不同読取属性を備える読取要求は、本明細書において「順序正しく要求された」（“in-order required”）読取要求と称される。
【００２６】
読取要求及び書込み要求に加えて、プロセッサは、メモリバリアを発行することができる。メモリバリアは、システムバス相互接続１１８によって受け取られ、メモリバリアを発行するプロセッサによって接続可能である処理システム１００内の各メモリへ、送りチャネル又は側波帯シグナリングの何れかによってルートされる。例えば、第１のプロセッサ１０２ａによって発行されたメモリバリアは、低レベルバス１１２、１１６上のメモリ１０８ｃ、１０８ｄの両方と同じように、システムバス相互接続１１８によってシステムメモリ内の第１のメモリ１０８ａへルートされるであろう。一方、第２のプロセッサ１０２ｂによって発行されたメモリバリアは、システムバス相互接続１１８によって、図１の処理システム内に示されるメモリ１０８ａ乃至１０８ｄの全てへルートされるであろう。プロセッサは一度メモリバリアを発行すると、別のメモリアクセス要求を発行する前に「メモリバリアアクノレッジメント」を受け取るまで待機するであろう。「メモリバリアアクノレッジメント」はスレーブデバイスからの信号であり、メモリバリアによって課された順序要求を実施することができるということを示す。説明された実施形態において、メモリバリアアクノレッジメントは、スレーブデバイスから受け取りチャネルを介して発行プロセッサへ送られる。しかし、当業者は、メモリバリアアクノレッジメントが側波帯シグナリングを用いて送られることもできることを容易に理解するであろう。
【００２７】
図２は、システムバス相互接続１１８の例を示す機能ブロック図である。システムバス相互接続１１８が実際に実現される様式は、特定のアプリケーション及び処理システム全体に課された設計制約に依存するであろう。当業者は、様々な設計の相互置換性と、本明細書で説明される機能を実現するための各特定のアプリケーションに対する最良の方法を理解するであろう。
【００２８】
システムバス相互接続１１８は、プロセッサからメモリアクセス要求を受け取るために用いられることができる。前述したように、読取動作又は書込み動作のためのメモリアクセス要求は、ターゲットメモリに関するアドレスを含む。アドレス、制御情報、及び書込み要求の場合にはペイロードを含むメモリアクセス要求は、バスレジスタ２０２内へロードされる。アドレス及び制御情報はまた、復号器２０４へ提供される。復号器２０４は、バスレジスタ２０２内で、各読取要求及び書込み要求に関するターゲットメモリを決定するために用いられる。復号器２０４出力は、送りバススイッチ２０６を制御するために用いられる。送りバススイッチ２０６は、バスレジスタ２０２内の各メモリアクセス要求を、ターゲットスレーブデバイスへ導くために用いられる。受け取りバススイッチ２０８は、ペイロードを、様々なメモリから、読取要求を発行するプロセッサへ導くために用いられる。
【００２９】
制御情報は、復号器２０４によって検出可能である順不同読取属性を含むことができる。もし順不同読取属性がデアサートされる場合、復号器２０４はコントローラ２１０に警告する。コントローラ２１０は、未決のメモリへの順序正しい読取要求が、以前同じプロセッサによって発行されたターゲットメモリの他にあるかを判定する。もしあるとすれば、コントローラ２１０は、そのような未決の読取要求からのペイロードがシステムバス相互接続１１８によって受け取られるまで、バスレジスタ２０２からの読取要求の解放を延期する。もしコントローラ２１０が、同じプロセッサによって以前に発行された未決の順序正しい読取要求がないと判定すれば、又は、同じプロセッサによって以前に発行された未決の順序正しい全ての読み取り要求が、ターゲットメモリに送られるべきであると判定すれば、読取要求はバスレジスタ２０２によって直ちに解放され、バススイッチ２０６を介してターゲットメモリへ導かれることができる。後者の場合、ターゲットメモリに対するメモリコントローラは、全ての未決の順序正しい読取要求が適切な順序で実行されることを保証することができる。代替実施形態において、コントローラ２１０は、全ての順序正しい必要な読取要求をバスレジスタ２０２から直ちに解放することができ、複数のメモリから受け取られたペイロードがプロセッサへ届けられる順番を制御することができる。
【００３０】
上述したように、メモリアクセス要求は、例えばメモリバリアのようなバスコマンドであることもできる。メモリバリアは、バスレジスタ２０２内へロードされ、復号器２０４へ提供される。復号器２０４は、コントローラ２１０に、バスレジスタ２０２内のメモリバリアを、バススイッチ２０６を用いて、発行プロセッサによってアクセス可能な各メモリへ送るように促す。各プロセッサによってアクセス可能なメモリは、コントローラ２１０内に予め供給されることができる。
【００３１】
図１に戻ると、メモリに対する全てのメモリアクセス要求のシーケンスを制御するスレーブデバイスは、メモリバリアを発行するプロセッサへメモリバリアアクノレッジメントを送ることができる。一例において、メモリコントローラ１０６ａ、１０６ｂは、それぞれのメモリ１０８ａ、１０８ｂに対する全てのメモリアクセス要求のシーケンスを制御する。メモリバリアの後に受け取られた任意のメモリアクセス要求を実行する前にメモリバリアが受け取られる場合、これらメモリコントローラ１０６ａ、１０６ｂの各々は、自身のバッファ内の全てのメモリアクセス要求を実行することによって、メモリバリアに応答するように構成されることができる。もしメモリコントローラ１０６ａ、１０６ｂがこの形式で構成されれば、各々は、自身のバッファ内にある全ての未決のメモリアクセス要求の実行を待つ必要が無く、システムバス相互接続１１８へアクノレッジメントを送り戻すことができる。
【００３２】
メモリバリアアクノレッジメントをプロセッサへ送るために受け取りチャネルが用いられる処理システムのいくつかの実施形態において、プロトコルは、１つ又は複数のプロセッサが、全ての未決の順序正しい読取要求に関するペイロードを受け取るより前に、アクノレッジメントを処理できないかもしれない可能性に対処する必要がある。１つの可能な解決策は、メモリバリアとともに「順不同可能」属性を送信することである。メモリバリアアクノレッジメントが受け取られる順番によって制約されていないプロセッサは、メモリバリアとともに送信される順不同可能属性をアサートすることができる。もし順不同可能属性がアサートされれば、メモリバリアを受け取るメモリコントローラ１０６ａ、１０６ｂの各々は、メモリバリアを受信するとすぐに、発行プロセッサへアクノレッジメントを送り戻すことができる。一方、順序正しく要求された全ての読取要求に関するペイロードを受け取る前にメモリバリアアクノレッジメントを処理できないプロセッサは、メモリバリアとともに送信される順不同可能属性をデアサートすることができる。デアサートされた順不同可能属性は、メモリバリアを受け取るメモリコントローラ１０６ａ、１０６ｂの各々が、発行プロセッサへアクノレッジメントを送り戻す前に、メモリバリアより前に発行された全ての順序正しい読取要求に関するペイロードを送ることを必要とする。どちらにしても、プロセッサは、先行する全てのメモリアクセス要求の実行を待つ必要なく、後続するメモリアクセス要求を発行することができるであろう。結果として、システムバス１０４を利用する可能性が低減され、性能を向上させる。
【００３３】
メモリコントローラ１０６ａ、１０６ｂとは対照的に、システムバス１０４と低レベルバス１１２との間のブリッジ１１０は、メモリバリアによって課される順序制約を保証できないために、プロセッサによって発行されるメモリバリアへアクノレッジメントを提供することができない。詳しく言うと、ブリッジ１１０は、処理システム１００内の別のバスマスタリングデバイス（図示せず）からのメモリバリアより前に発行され低レベルバス相互接続１２０によって受け取られた全てのメモリアクセス要求が、プロセッサがメモリバリアを発行した後にプロセッサによって発行されたメモリアクセス要求より前に実行されるであろうということを保証できない。従って、メモリ１０８ｃ、１０８ｄの一方又は両方に行先を定められたメモリバリアは、ブリッジ１１０によってアクノレッジされることができない。
【００３４】
低レベルバス１１２上のメモリコントローラ１０６は、プロセッサによって発行されたメモリバリアをアクノレッジすることができる。システムメモリ内のメモリコントローラ１０６ａ、１０６ｂと同様に、メモリコントローラ１０６ｃは、メモリ１０８への全てのメモリアクセス要求のシーケンスを制御する責任を負う。このように、メモリコントローラ１０６ｃは、メモリバリアの後に受信された任意のメモリアクセス要求を実行する前にメモリバリアが受け取られる場合、自身のバッファ内の全てのメモリアクセス要求を実行することによってメモリバリアに応答するように構成されることができる。もしメモリコントローラ１０６ｃがこの形式で構成されれば、メモリコントローラ１０６ｃは、発行プロセッサへ早急にアクノレッジメントを送り戻すこともできる。アクノレッジメントの正確なタイミングは、順不同可能属性の状態に依存するであろう。
【００３５】
第２の低レベルバス１１６上のブリッジ１１４もまた、プロセッサによって発行されたメモリバリアをアクノレッジするように構成されうる。システムバス１０４を低レベルバス１１２へ接続するブリッジ１１０とは異なり、２つの低レベルバス１１２と１１６との間のブリッジ１１４は、メモリバリアによって課された順序制約を保証するように構成されることができる。従って、アクノレッジメントは、ブリッジ１１４によって発行プロセッサへ早急に送り戻されることができる。これもまた、アクノレッジメントのタイミングは、順不同可能属性の状態に依存するであろう。
【００３６】
図３は、全ての未決のメモリアクセス要求が実行される前に、メモリバリアをアクノレッジすることのできるスレーブデバイスの動作の例を示すフローチャートである。この例において、スレーブデバイスはメモリバリアをアクノレッジするために受け取りチャネルを用い、１つ又は複数のプロセッサが順序正しく要求された読取要求を発行することを可能とするプロトコルをサポートするように構成される。スレーブデバイスは、自身のバッファ内の全ての未決のメモリアクセス要求をメモリバリアの前に実行するが、図３内により詳しく示されるように、メモリバリアをより早くアクノレッジすることができる。
【００３７】
ステップ３０２において、スレーブデバイスはメモリバリアを受け取る。ステップ３０４において、スレーブデバイスは、順不同可能属性がアサートされたかデアサートされたかを判定する。もし順不同可能属性がアサートされていれば、スレーブデバイスは、ステップ３１０の次のバストランザクションにおいて、受け取りチャネルを介してメモリバリアアクノレッジメントを送ることができる。一方、もし順不同可能属性がデアサートされていれば、スレーブデバイスはステップ３０６において、順序正しく要求された任意の読取要求が、バッファ内で未決であるかを判定する。もし未決の順序正しく要求された読取要求がなければ、スレーブデバイスはステップ３１０の次のバストランザクションにおいて、受け取りチャネルを介してメモリバリアアクノレッジメントを送ることができる。さもなくば、スレーブデバイスは、ステップ３１０でメモリバリアをアクノレッジする前に、まずステップ３０８で順序正しい読取要求に関するペイロードを発行プロセッサへ送らなければならない。
【００３８】
当業者に、本明細書に開示された様々な実施形態を実施することを可能とさせるために上記の説明が提供される。これらの実施形態への様々な変形例もまた、当業者に対しては明らかであって、本明細書で定義された一般原理は、他の実施形態にも適用されうる。従って、特許請求の範囲は、本明細書に開示された実施形態に限定することは意図されておらず、特許請求の範囲の文言と整合が取れた全ての範囲と一致するように意図されている。単一の要素への言及は、特に明文化されない限りは「１つ又はただ１つ」を意味するようには意図されておらず、「１つ又は複数」を意味するように意図されている。当業者によって知られている、又は後に知られることとなる、本開示を通して説明された様々な実施形態の要素と構成的及び機能的に等しいものは、参照によって本明細書に明確に組み込まれ、特許請求の範囲によって包含されるように意図されている。更に、そのような開示が特許請求の範囲において明確に述べられているかに関わらず、本明細書に開示されたものは公衆に放棄されるようには意図されていない。請求項の要素が、「〜する手段」という語句を用いて、又は方法請求項の場合には「〜するステップ」という語句を用いて明確に記載されない限り、いかなる要素も米国特許法１１２条６段落の規定の下で解釈されない。
【図面の簡単な説明】
【００３９】
【図１】図１は、弱く順序付けられた処理システムの例を示す概念ブロック図である。
【図２】図２は、弱く順序付けられた処理システムにおけるシステムバス相互接続の例を示す機能ブロック図である。
【図３】図３は、メモリバリアを早急にアクノレッジすることのできるスレーブデバイスの動作の例を示すフローチャートである。
【図１】
2009529748.tif 000003
【図２】
2009529748.tif 000004
【図３】
2009529748.tif 000005
【国際調査報告】
2009529748.tif 000006
2009529748.tif 000007