(57)【特許請求の範囲】
【請求項１】
メモリアクセスの順序を強制するための方法であって、
バスインタフェースを介して、前記バスインタフェースと１つまたは複数のレベル1キャッシュとメインメモリとに接続されたレベル2キャッシュコヒーレンシ制御回路において、外部マスタデバイスからのメモリアクセス要求を受信するステップと、
サロゲートバリアコマンドを条件付きで生成するステップであって、
前記外部マスタデバイスがメモリバリアコマンドを生成するように構成されていないか、または、前記バスインタフェースがメモリバリアコマンドをブロードキャストするように構成されていないか、または、その両方である場合には、
前記レベル2 キャッシュコヒーレンシ制御回路に関連付けられたサロゲートバリア回路によって、前記メモリアクセス要求に少なくとも部分的に基づいて、サロゲートバリアコマンドを生成するステップと、
前記外部マスタデバイスがメモリバリアコマンドを生成するように構成されており、かつ、前記バスインタフェースがメモリバリアコマンドをブロードキャストするように構成されている場合には、
前記メモリアクセス要求に対応するサロゲートバリアコマンドを生成しないステップと、
を含むステップと、
前記サロゲートバリアコマンドを、レベル2アレイに関連付けられたスヌープ待ち行列に格納するステップと、
前記レベル2アレイに対するアクセス順序を、前記スヌープ待ち行列に格納された前記サロゲートバリアコマンドに少なくとも部分的に基づいて強制するステップと、
を備える方法。
【請求項２】
前記メモリアクセス要求が読取り要求である場合には、前記サロゲートバリアコマンドを生成するステップは、前記読取り要求と同じアドレスに対する1つまたは複数の先行する書込み要求に基づいて条件付きでサロゲートバリアを生成するステップを含む、請求項1に記載の方法。
【請求項３】
前記メモリアクセス要求が書込み要求である場合には、前記サロゲートバリアコマンドを生成するステップは、前記書込み要求が処理される前に前記サロゲートバリアコマンドを生成するステップを含む、請求項1に記載の方法。
【請求項４】
前記レベル1キャッシュに関連付けられたプロセッサスヌープ待ち行列へ前記サロゲートバリアコマンドをブロードキャストするステップ
をさらに備える請求項1に記載の方法。
【請求項５】
メモリアクセスの順序を強制するための装置であって、
外部マスタデバイスからのメモリアクセス要求を受信するバスインタフェース回路と、
前記バスインタフェース回路とレベル2キャッシュアレイに関連付けられたバンクスヌープ待ち行列とに接続されたサロゲートバリアジェネレータ回路であって、
メモリバリアコマンドを生成するように構成されていない外部マスタデバイスからの前記メモリアクセス要求に応答してサロゲートバリアコマンドを生成し、
メモリバリアコマンドをブロードキャストするように構成されていない前記バスインタフェース回路に応答して前記サロゲートバリアコマンドを生成し、
前記メモリアクセス要求が、メモリバリアコマンドを生成するように構成された外部マスタデバイスからのものであり、かつ、前記バスインタフェース回路がメモリバリアコマンドをブロードキャストするように構成されている場合には、前記サロゲートバリアコマンドを生成しない、
ように構成されたサロゲートバリアジェネレータ回路と、
レベル2キャッシュアレイに接続され、かつ、生成された前記サロゲートバリアコマンドを受信し、前記レベル2キャッシュアレイに対するメモリアクセスの順序を前記サロゲートバリアコマンドに少なくとも部分的に基づいて強制するように構成された、バンクスヌープ待ち行列と、
を備える装置。
【請求項６】
前記サロゲートバリアジェネレータ回路は、前記メモリアクセス要求が読取り要求である場合に、前記読取り要求と同じアドレスに対する1つまたは複数の先行する書込み要求に基づいて条件付きで前記サロゲートバリアコマンドが生成されるように構成される、請求項5に記載の装置。
【請求項７】
前記サロゲートバリアジェネレータ回路は、前記メモリアクセス要求が書込み要求である場合に、前記書込み要求が処理される前にサロゲートバリアが生成されるように構成される、請求項5に記載の装置。
【請求項８】
複数のプロセッサのそれぞれに関連するスヌープ待ち行列を有し、前記スヌープ待ち行列は、前記サロゲートバリアコマンドに従って前記プロセッサによりメモリアクセス要求を順序付けるように構成された、プロセッサスヌープ待ち行列回路
をさらに備える請求項5に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、一般に処理システムに関し、より詳細には、弱く順序付けられたストレージシステム(weakly ordered storage system)においてメモリバリアコマンド(memory barrier commands)を発行することによってプログラムストレージオペレーションの順序を維持するための技法に関する。
【背景技術】
【０００２】
セル電話、ラップトップコンピュータ、個人用携帯情報端末(PDA)など、多数のポータブル製品は、通信プログラムやマルチメディアプログラムなどのプログラムを実行する処理システムを利用する。そのような製品用の処理システムは、1つまたは複数のプロセッサと、命令およびデータを記憶するための複雑なメモリシステムと、コントローラと、1つまたは複数のバス上でプロセッサおよびメモリとインターフェースするように構成された周辺デバイスとを含むことが可能である。同時に、ポータブル製品は、しばしば処理システムからの高性能オペレーションをサポートすることが要求されるバッテリの形態で限られたエネルギー源を有する。バッテリ寿命を増大させるためには、できる限り効率的にこれらのオペレーションを実行することが望ましい。多数のパーソナルコンピュータはまた、低いエネルギー消費で動作するように効率的な設計を用いて開発されている。
【０００３】
そのような処理システムにおいて、プロセッサは、しばしばメモリオペレーションを順不同で実行させることにより、性能の利点を獲得する。例えば、一連のメモリオペレーションを、メモリ内の同じページに対するオペレーションが、新しいページが開かれる前に実行されることを可能にするように再順序付けすることができる。メモリオペレーションを再順序付けすることが許される処理システムは、一般に、「弱く順序付けられた(weakly ordered)」処理システムと称される。
【０００４】
場合によっては、メモリオペレーションの再順序付けは、プログラムの動作に予測できない影響を及ぼす可能性がある。例えば、アプリケーションは、第1のプロセッサに、第1のメモリアドレスで開始されるデータのブロックを書き込み、データのそのブロックが記憶されていることを示す第2のメモリアドレスにデータレディフラグ(data ready flag)を書き込むことを要求する可能性がある。第2のプロセッサは、データレディフラグを監視し、データが記憶されていることをフラグが示すときデータのブロックを読み取ることになる。弱く順序付けられた処理システムにおいては、オペレーションがこの順序になることは保証されず、これは許容できない可能性がある。また、弱く順序付けられた処理システムにおいては、プロセッサに加えて周辺デバイスが、データを送信し、メモリからデータを受信するためのバスマスタとして動作する可能性があり、これは、プログラムストレージオペレーションの順序を維持することをさらに複雑にする可能性がある。
【０００５】
様々な技法が、弱く順序付けられた処理システムにおいて、順序付けられたメモリオペレーションを実行するために使用されている。1つの技法は、その前のすべてのメモリオペレーションが実行されるまで、ある種のメモリオペレーションを単に遅延させることである。上記の例においては、プロセッサは、メモリロケーションに書き込んでしまうまで読取り要求(read request)を発行することを遅延させることができる。別の技法は、順序付けられたメモリオペレーションが必要とされるときに発行されるバリアコマンド(barrier command)と称されるバスコマンド(bus command)を使用することである。バリアコマンドは、バリアコマンドの前にプロセッサによって発行されるすべてのメモリアクセス要求が、バリアコマンドが実行された後にプロセッサによって発行されるメモリアクセス要求の前に完了されることを保証するために使用することができる。この場合にも、上記の例においては、バリアコマンドは、データレディフラグを書き込む前に第1のプロセッサによって発行されることが可能である。このバリアコマンドは、データレディフラグが書き込まれる前に、データのブロックがメモリに書き込まれることを保証することになり、第2のプロセッサが新しく記憶されたデータを読み取ることを保証する。
【０００６】
いくつかのプロセッサ、周辺デバイス、およびバスインプリメンテーション(bus implementations)は、バリアコマンドを認識しない可能性がある。バリアコマンドを利用する弱く順序付けられた処理システムは、そのようなプロセッサ、周辺デバイス、およびバスを使用することが制限されるであろう。結果として、弱く順序付けられた処理システムは、効率的に機能することができない。
【発明の概要】
【課題を解決するための手段】
【０００７】
そのいくつかの態様のうちで、本開示は、弱く順序付けられたストレージシステムにおいてメモリバリアコマンドを発行するためにより効率の高い方法および装置を提供することにより、処理システムにおいて性能が改善され、電力要件が削減され得ると認識している。そのような目的を達成するために、本発明の一実施形態は、メモリアクセスの順序を強制する(enforcing order of memory accesses)ための方法に対処するものである。メモリアクセス要求は、メモリバリアコマンドを生成するように構成されていないデバイスから受信される。サロゲートバリア(surrogate barrier)は、メモリアクセス要求に応じて生成される。
【０００８】
別の実施形態は、メモリアクセスの順序を強制するための装置に対処するものである。バスインターフェース回路は、デバイスからのメモリアクセス要求を受信し、そのメモリアクセス要求をメモリ階層へと伝える。サロゲートバリアジェネレータ回路は、メモリアクセス要求に応じてサロゲートバリアを生成する。
【０００９】
別の実施形態は、システムにおけるコヒーレンシの強制(coherency enforcement)のための方法に対処するものである。メモリアクセス要求は、メモリバリアコマンドを認識しないバスインターフェースを通してデバイスから受信される。サロゲートバリアは、メモリアクセス要求に応じて生成され、あたかもメモリバリアコマンドがデバイスから受信されたかのようにコヒーレンシがシステム内で強制される。
【００１０】
別の実施形態は、メモリアクセスの順序を強制するための方法に対処するものである。メモリ読取り要求は、メモリバリアコマンドを生成するように構成されていないデバイスから受信される。メモリアクセスの順序は、以前のメモリアクセスオペレーションが完了することが保証されるまでメモリ要求に関連する読取りデータを保留することにより、メモリ読取り要求に応じて強制される。
【００１１】
本発明の他の実施形態は、本発明の様々な実施形態が例示として示され説明される以下の詳細な説明から当業者には容易に明らかになることを理解されたい。本発明は、他の実施形態および異なる実施形態が可能であり、そのいくつかの詳細は、すべて本発明の精神および範囲を逸脱することなく、様々な他の観点において修正が可能であることが実現されるであろう。したがって、図面および詳細な説明は、本来、例示と見なされるべきであり、限定と見なされるべきではない。
【００１２】
本発明の様々な態様は、添付の図面においては、例として示され、限定としては示されていない。
【図面の簡単な説明】
【００１３】
【図１】ワイヤレス通信システムを示す図である。
【図２】弱く順序付けられたストレージシステムにおけるバリアのない例示の処理システムをサポートするデバイスを示す図である。
【図３】図2のL2システムコヒーレンシユニット(L2SCU)のさらなる詳細を示す例示のメモリアクセス順序制御システムを示す図である。
【図４】弱く順序付けられたストレージシステムにおけるバリアのないデバイスのためにサロゲート読取りバリアを生成するための例示のプロセスを示す図である。
【発明を実施するための形態】
【００１４】
添付図面に関連して以下で述べられる詳細な説明は、本発明の様々な例示の実施形態の説明として意図され、本発明が実行され得る実施形態のみを表すことは意図されていない。詳細な説明は、本発明の完全な理解を提供する目的のための特定の詳細を含んでいる。しかしながら、本発明が、これらの特定の詳細なしに実行され得ることは、当業者にとって明らかであろう。いくつかの例においては、よく知られている構造およびコンポーネントは、本発明の概念をあいまいにすることを回避するためにブロック図形式で示されている。
【００１５】
図1は、本発明の一実施形態が、有利に使用され得る例示のワイヤレス通信システム100を示している。例示の目的のために、図1は、3つのリモートユニット120、130、および150と、2つの基地局140とを示している。共通のワイヤレス通信システムは、より多くのリモートユニットと基地局とを有することができることが理解されるであろう。ハードウェアコンポーネント、ソフトウェアコンポーネント、またはそれぞれコンポーネント125A、125C、125B、および125Dによって表されるような両者を含むリモートユニット120、130、150と基地局140とは、以下でさらに論じられるように、本発明を実施するように適合されている。図1は、基地局140からリモートユニット120、130、および150への順方向リンク信号180と、リモートユニット120、130、および150から基地局140への逆方向リンク信号190とを示している。
【００１６】
図1において、リモートユニット120は、モバイル電話として示され、リモートユニット130は、ポータブルコンピュータとして示され、リモートユニット150は、ワイヤレスローカルループシステム内の固定ロケーションリモートユニットとして示される。例として、リモートユニットは、代わりに、セル電話、ページャ、ウォーキートーキー、ハンドヘルドパーソナル通信システム(PCS)ユニット、個人用携帯情報端末などのポータブルデータユニット、またはメーター読取り装置などの固定ロケーションデータユニットであってもよい。図1は、本開示の教示によるリモートユニットを示しているが、本開示は、これらの例示の例示ユニットだけには限定されない。本発明の実施形態は、弱く順序付けられたストレージサブシステムと共に動作する任意の処理システム内で適切に使用することができる。
【００１７】
図2は、図1のコンポーネント125A、125C、125B、および125D内で適切に使用され得る弱く順序付けられたストレージシステムにおいてバリアのないデバイスをサポートする例示の処理システム200を示している。処理システム200は、システムコア202と外部コア203とを含んでいる。システムコア202は、プロセッサ2041、2042、...、204N、一括して204と、レベル1命令キャッシュ(L1 Iキャッシュ)2061、2062、...、206N、一括して206と、レベル1データキャッシュ(L1 Dキャッシュ)2071、2072、...、207N、一括して207と、レベル2システムコヒーレンシユニット(L2 SCU)212と、メインメモリ214とを備える。外部コア203は、外部マスタ(external masters)(EMs)2081、2082、...、208K、一括して208と、共用バス相互接続210とを含んでいる。システムコア202は、L1 Iキャッシュ206と、L1 Dキャッシュ207と、L2キャッシュ217を有するL2 SCU 212と、メインメモリ214とを有するメモリ階層216を含んでいる。プロセッサ204およびキャッシュ206、207の実際の数Nと、特定のアプリケーションに必要とされるEM 208の数Kとは、処理要件と設計制約とに応じて変わる可能性がある。プロセッサ204のそれぞれと、EM 208のそれぞれとは、汎用プロセッサ、デジタル信号プロセッサ(DSP)、特定用途向けプロセッサ(ASP)などのバスマスタデバイス(bus mastering device)として実装されることが可能である。処理システム200の様々なコンポーネントは、特定用途向け集積回路(ASIC)技術、フィールドプログラマブルゲートアレイ(FPGA)技術、あるいは他のプログラマブル論理、ディスクリートゲートもしくはトランジスタ論理、または意図されたアプリケーションに適した他の使用可能な任意の技術を使用して実装されることが可能である。
【００１８】
例えば、1つまたは複数のプロセッサ204と、1つまたは複数のEM 208とは、コンピュータ読取り可能ストレージ媒体上に記憶されるプログラムの制御の下で命令を実行するように構成されていることが可能である。例えば、コンピュータ読取り可能ストレージ媒体は、命令キャッシュ206、各EMに関連するローカルメモリのうちの1つを通して使用可能とすることができるなど、プロセッサ204またはEM 208にローカルに直接に関連しているか、あるいは共用バス相互接続210を通してEM 208にアクセス可能とすることができる。プロセッサ204は、プログラムの実行においてメモリ階層216からデータにアクセスすることができる。EM 208は、各EMにローカルに直接に関連するか、あるいは別のプロセッサメモリデバイス、例えば、L2 SCU 212から共用バス相互接続210を通してアクセス可能なメモリデバイス内に存在するデータにアクセスすることもできる。コンピュータ読取り可能ストレージ媒体は、ランダムアクセスメモリ(RAM)、ダイナミックランダムアクセスメモリ(DRAM)、シンクロナスダイナミックランダムアクセスメモリ(SDRAM)、フラッシュメモリ、リードオンリーメモリ(ROM)、プログラマブルリードオンリーメモリ(PROM)、消去可能プログラマブルリードオンリーメモリ(EPROM)、電気的消去可能プログラマブルリードオンリーメモリ(EEPROM)、コンパクトディスク(CD)、デジタルビデオディスク(DVD)、他のタイプの着脱可能ディスク、または他の適切な任意のストレージ媒体を含むことができる。
【００１９】
処理システム200において、L1 Dキャッシュ207は、例えばライトスルーキャッシング(write through caching)を使用することができる。L2システムコヒーレンシユニット(L2 SCU)212は、バリアコマンドを送信することができないバスマスタデバイスを有するシステム200においてメモリアクセスオペレーションの適切な順序付けを有利に確保する。メインメモリ214は、レベル3キャッシュ、バルクメモリなどのメモリデバイスの階層から成ることができる。ライトスルーデータキャッシュに対する書込みオペレーションは、データが次のレベルのメモリにも書き込まれるようにする。
【００２０】
外部マスタ(EM)は、メモリコントローラ、別のバス相互接続デバイスに相互接続するためのブリッジデバイス、ハードディスクコントローラなどの周辺デバイス、ユニバーサルシリアルバス(USB)コントローラ、対話式ディスプレイデバイス、コントローラを送信機および受信機に結合する無線デバイスなどとすることができる。外部マスタ(EM)208は、共用バス220上でメモリ階層216にメモリアクセス要求を伝える双方向インターフェース2181、2182、...、218Kによって、共用バス相互接続210に結合される。EM 208は、メインメモリ214からデータを読み取り、またはメインメモリ214にデータを書き込むためのダイレクトメモリアクセス(DMA)技法を利用したバスマスタとすることもできる。共用バス相互接続210は、バストラフィックを管理し、共用バス220を通してEM 208のそれぞれと、メモリとの間の接続経路を提供する。共用バス220は、例えば、各EMに関連する専用チャネルを用いて構成されることが可能である。
【００２１】
特に、双方向インターフェース2181、2182、...、218Kのそれぞれは、書込みデータバス、アドレスバス、および読取りデータバスと、関連する制御信号とを含むことができる。多数のシステムにおいては、組み合わされた書込みおよび読取りのデータバスを使用することができる。一般に、別々のアドレスバス、読取りデータバス、および書込みデータバスは、特定のシステムの要件に応じて、特定のバスアーキテクチャまたは規格に準拠する。EM 208のそれぞれは、例えば、メモリアクセス要求を使用してそれらの対応する双方向インターフェース218上で通信する。メモリアクセス要求は、書込み要求またはストア要求、読取り要求またはロード要求、あるいはバスに関連した要求を含むことができ、このバスに関連した要求は、メモリバリアコマンドを含むことができる。双方向インターフェース2181、2182、...、218Kなど、外部マスタによって使用される必ずしもすべてのバスインターフェースは、たとえEMがメモリバリアコマンドを発行したとしても、メモリバリアコマンドをサポートし、またはそれを認識するとは限らない。また、必ずしもすべてのEMが、メモリバリアコマンドをサポートするとは限らない。例えば、インプリメンテーションによって、またはプログラミング手段によって、メモリバリアコマンドを生成するようにEMが構成されなくてもよい。これらの場合のうちのいずれにおいても、外部マスタからのメモリバリアコマンドのサポートなしには、プロセッサ204は、メモリアクセスオペレーションに関する外部マスタの意図について知らないことになる。
【００２２】
問題のシナリオは、最初に、マルチプロセッサシステム内でメモリアクセスの正しい順序を維持することに伴う問題のうちの1つを強調する目的のために本明細書内で説明される新規特徴の使用なしに説明される。特に、外部マスタをメモリ階層に結合するバスを通してバリアコマンドのブロードキャストをサポートしない、処理システム200などのマルチプロセッサシステムが、使用される。図2の処理システム200に関して、問題のシナリオの一例は、プロセッサ2041、プロセッサ2042、およびEM 2082上で起こるメモリアクセスオペレーションに基づいている。メモリアクセスオペレーションは、一連のオペレーションイベントによって順序付けられるTable 1(表1)内に示される。
【００２３】
【表１】
0005563071.tif 000002
【００２４】
この例においては、L2キャッシュアレイ217内のロケーションXおよびYは、最初にゼロである。第1のイベントにおいて、プロセッサ2041は、ストアレジスタ(STR)命令を実行してロケーションXに5の値を書き込む。第2のイベントにおいて、EM 2082は、ロードレジスタ(LDR)命令を発行してアドレスXから値を読み取る。読み取られる値は、第1のイベント中にSTR X命令によってロケーションXに既に記憶されている値5である。STR X命令に関連するスヌープ無効化コマンド(snoop invalidate commands)は、第2のイベントによって、プロセッサ2042を含めて他のプロセッサ204に到達していないことに留意されたい。スヌープ監視は、メモリシステムへの書込みについてバストラフィックを監視するプロセスである。このプロセスにおいて、プロセッサは、有効期限が切れた共用されたデータが、そのローカルキャッシュ内にあるかどうかを決定する。スヌープ無効化コマンドは、そのプロセッサが、書込みコマンドによってターゲットとされる共用されたデータの有効期限が切れたコピーを有し得る場合に、プロセッサに対して発行される。共用されたデータが、ローカルキャッシュ内で見出される場合、スヌープ無効化コマンドは、そのデータが、検出された書込みオペレーションに起因して有効期限が切れていることになるので、共用されたデータのコピーを無効化する。
【００２５】
第3のイベントにおいて、EM 2082は、データメモリバリア(DMB)コマンドを発行する。EM 2082は、DMBの結果として、完了応答を受信しているそれ自体の先行するすべての書込み、および関連するデータを受信している任意の先行する読取りを待つ。しかしながら、DMBコマンドは、共用バス220を通してブロードキャストされることはない。システムコア202は、EM 2082がDMBコマンドを発行したことを知らないので、順序付けの制約は、システムコア202内部で強制されていない。同様に、DMBなどのメモリバリアコマンドをサポートしていない外部マスタを有するこれらのシステムにおいて、順序付けの制約は、システムコア202内で強制されないことになる。したがって、任意のEM 2082の先行する書込みは、完了応答を受信することになり、第2のイベントのLDR X命令に応じて起こるなど、先行する読取りは、5の読み取られるデータ値を受信することになる。
【００２６】
第4のイベントは、EM 2082のLDR X命令に応じて読み取られるデータ値を受信した後に、データメモリバリアの完了の後に起こる。第4のイベントにおいて、EM 2082は、ストアレジスタ(STR)命令を発行してロケーションYに1の値を書き込む。第5のイベントにおいて、プロセッサ2042は、LDR Y命令を実行してEM 2082のSTR Y命令によってそこに記憶される値1を読み取る。この時点で、第3のイベントからのDMBコマンドは、プロセッサ2042にプロセッサ2041のSTR X命令の結果から5の値を観察することを要求していることになる。しかしながら、共用バス220が、DMBコマンドをブロードキャストしなかったので、順序付けの制約は課されてはいない。例えば、プロセッサ2041のSTR X命令に関連するスヌープ無効化コマンドは、第5のイベントの時までにプロセッサ2042に到達していない可能性があり、これは、例えば、スヌープ無効化コマンドがL2 SCU 212内のスヌープ待ち行列論理内で留め置かれた場合に起こり得る。それ故に、第6のイベントにおいて、プロセッサ2042のLDR Xは、それ自体のL1 Dキャッシュ2072に記憶される古い値を読み取ることができる。したがって、EM 2082によって発行されたDMBコマンドによって意味される順序付けの制約は、破られている。
【００２７】
弱く順序付けられたストレージシステムを有し、バリアのないデバイスおよびバスインプリメンテーションをサポートする処理システム内で、メモリオペレーションが、正しい順序で起こることを保証するために、処理システムは、読取り要求がバリアコマンドをサポートしていないそのインターフェースを通してデバイスから受信されるときに、サロゲートメモリバリアが処理システムによって生成されると認識する。例えば、サロゲートメモリバリアは、外部マスタ208とのインターフェース点であるL2 SCU 212内で生成される。
【００２８】
図3は、図2のL2システムコヒーレンシユニット(L2 SCU)212の拡大された詳細を示す例示のメモリアクセス順序制御システム300を示している。L2 SCU 212は、先入れ先出し(FIFO)バッファ304と、バスコマンドデコーダ306と、サロゲートバリアジェネレータ回路308と、バンクスヌープ待ち行列310と、レベル2(L2)アレイ312と、プロセッサスヌープ待ち行列回路314と、メインメモリインターフェース回路318とを備える。共用バス220は、一般的に、例えば、FIFOバッファ304を用いてバッファされて、複数のデバイスの間のバストラフィックにおけるフロー制御と変動をサポートする。単一のFIFOバッファが、図3に示されているが、マルチチャネル共用バス設計において見出され得るものなど、複数のFIFOバッファを共用バス220の構成に応じて使用することができることを理解されたい。バスコマンドデコーダ306は、書込み要求またはストア要求、読取り要求またはロード要求、他のバスに関連した任意のコマンドなどのバス要求を復号する。
【００２９】
処理システム200において、1つまたは複数のEM 208と共用バス220とは、メモリバリアコマンドをサポートしない。Table 1(表1)に示され、上述のシナリオなどのメモリ順序違反を解決するために、サロゲートバリアジェネレータ回路308は、読取り要求を受信すると直ちに、サロゲート読取りバリアなどのサロゲートメモリバリアコマンドを生成する。例えば、サロゲート読取りバリアは、EM 2082によって発行されるLDR Xロード命令によって引き起こされる読取り要求が、L2 SCU 212において受信され、認識されたとき、生成される。読取りバリアが、サロゲートバリアに続くメモリアクセス要求がサロゲートバリアが完全に肯定応答されるまで未処理状態で(pending)保持されるように、進行中であることを示すインジケータ320が、設定される。L2アレイ312に関連するバンクスヌープ待ち行列310は、EMが読取り要求を行うことを識別するようにタグ付けされたサロゲート読取りバリアを記憶する。バンクスヌープ待ち行列310は、スヌープ待ち行列プロセス内の第1ステージと考えられる。L2アレイ312は、バス要求によってターゲットとされ得るメモリのバンクを含む。プロセッサスヌープ待ち行列回路314は、図2のプロセッサ204のそれぞれに関連する個々のプロセッサスヌープ待ち行列3161、3162、...、316N、一括して316を備えており、スヌープ待ち行列プロセス内の第2ステージを形成する。
【００３０】
一例として、サロゲート読取りバリアは、L2アレイ312に関連するバンクスヌープ待ち行列310内へと配置され、順序付けの制約を強制するようにプロセッサスヌープ待ち行列316などのコヒーレンシ参加部(coherency participants)に伝えられる。順序付けの制約は、サロゲートメモリバリアの前に発行されたメモリアクセスを実行した結果が、サロゲートメモリバリアの後に発行される任意のメモリアクセスが実行を許可される前に、プロセッサ204など、処理システム内のプロセッサによって観察可能であることを保証する。サロゲートメモリバリアは、適切なサロゲートメモリバリアに肯定応答を関連づけるために、読取り要求を行うデバイスの識別情報証明書(identification reference)(ID)でタグ付けされる。
【００３１】
より詳細には、サロゲート読取りバリアが、生成され、タグ付けされ、バンクスヌープ待ち行列310内へと配置されるときに、サロゲート読取りバリアはまた、個々のプロセッサスヌープ待ち行列3161、3162、...、316Nへと伝えられる。プロセッサスヌープ待ち行列316内のサロゲート読取りバリアは、スヌープ無効化コマンドが、それらの対応するL1 Dキャッシュ207上で実行される点まで、先行するスヌープ無効化コマンドをプロセッサスヌープ待ち行列316を通して、それらの関連するプロセッサへと強制する。それ故に、読取りバリアに先行しており、これらのスヌープ無効化コマンドに関連する書込みオペレーションは、プロセッサ204に対して見えるようにされる。例えば、先行するスヌープ無効化コマンドは、LDR X命令を発行したEM 2082など、読取りバリアが生成されるように促した1つまたは複数の外部マスタによって観察されているストアオペレーションに関連づけられることが可能である。読取りバリアは、先行する任意のスヌープ無効化コマンドが、新しい任意のオペレーションがL1 Dキャッシュにアクセスする前に、L1 Dキャッシュ上で実行されることを保証することに留意されたい。
【００３２】
LDR X命令読取りオペレーションは、ターゲットにされたL2アレイ312を通して進むことができ、サロゲート読取りバリアの進行を待たずに外部マスタへと読取りデータを戻すことができる。システムコア202が、EM 208のうちの1つから書込み要求を受信し、L2アレイ312のスヌープ待ち行列のうちのどれかで未処理状態のそのEMに関連するサロゲート読取りバリアが依然として存在する場合には、その書込み要求は、未処理状態のサロゲート読取りバリアに起因してターゲットにされたL2バンクにアクセスすることに先立ってL2 SCU 212内で実行されないまま保持される。このようにして、プロセッサ204のうちのどれも、サロゲート読取りバリアが完了されるまで、ポストバリア書込み要求とすることが可能なEMの書込み要求を観察することはできない。したがって、プロセッサ204は、書込み要求を送信することに先立ってEMに観察されている可能性があるどのような書込みについても、スヌープ無効化コマンドを実行し終わっていることが保証されることになる。さらに、EMからの後続の書込みは、EMが観察している可能性がある書込みについてのすべての先行したスヌープ無効化コマンドが完了されることが知られるまで、留め置かれることになる。
【００３３】
また、任意の外部マスタの書込み要求は、スヌープ無効化コマンドが、生成されるように、またL2アレイ312内のターゲットとされるバンクのバンクスヌープ待ち行列310内に配置されるようにさせる。上記に説明されるのと同様にして、スヌープ無効化コマンドは、プロセッサスヌープ待ち行列316へと、次いでそれらの関連するプロセッサ204へと流れる。書込み要求の完了に関するEMに対する応答は、関連するスヌープ無効化コマンドが、プロセッサスヌープ待ち行列316のすべてを通して移動し、関連するプロセッサ204に到達するまでEMへと送信されることはない。
【００３４】
一実施形態において、上述のサロゲート読取りバリアおよびスヌープ無効化コマンドについての要件は、一般に、キャッシュ可能と共用可能として提示される、外部マスタからのこれらのアクセスに関連している。キャッシュ可能と共用可能とは、要求によってターゲットとされるメモリを説明するために使用される2つの属性である。メモリが、キャッシュ可能でない場合には、キャッシュ207は、ターゲットメモリロケーションをキャッシュしている可能性がなく、したがって、スヌープ無効化コマンドは、そのメモリには必要とされない。同様に、共用可能とマークされていないメモリは、システムが、任意の2つのエージェントを通してコヒーレンシを強制するように義務づけられないことを意味し、したがって、スヌープ無効化コマンドは、共用されないメモリには必要とされない。
【００３５】
外部マスタを制御するための一代替実施形態は、読取りバリアが完了するまで、Table 1(表1)のイベント2など、LDR X読取りデータを外部マスタに送信されないようにシステムコア202に留め置かせることによるものである。EMは、Table 1(表1)のイベント2など、すべての先行するストレージオペレーションが完了するまで、Table 1(表1)のイベント3など、バリアを完了しないことになる。LDR X読取りデータが、外部マスタへと送信されないように留め置くことにより、システムコア202は、Table 1(表1)のイベント1に関連するスヌープ無効化が、プロセッサスヌープ待ち行列316のすべてを通して移動し、関連するプロセッサ204へと到達していることを保証する。これは、Table 1(表1)内のイベント4など、STR Yの結果が、STR Xに関連するすべてのスヌープ無効化が完了するまで見えないことになることを保証する。読取りデータを留め置く代わりに、サロゲートバリアポスト読取りを生成する利点は、EMが、読取りデータをより早く処理することを開始することができることであり、これは、システムの効率を改善する。
【００３６】
上述のように、サロゲート読取りバリアは、外部マスタからの読取り要求に応じて生成される。別の実施形態においては、サロゲート読取りバリアは、書込み要求について動作する前の、外部マスタからの書込み要求に応じて生成されることが可能である。読取りオペレーションに続くバリアを先制して生成する代わりに、L2 SCU 212は、それが書込み要求を受信するまで待ち、その後に書込みが実行される前にバリアを生成する。バリア事前書込みを生成することに比べて、バリアポスト読取りを生成することの利点は、バリアが、EMからの後続の任意の書込みがオペレーションの効率を改善する212によって受信される前に完了している可能性があることである。バリア事前書込みを生成することは、代替アプローチと考えられてもよい。
【００３７】
別の実施形態においては、サロゲート読取りバリアは、選択的に生成されることが可能である。例えば、サロゲートバリアの生成は、外部マスタから受信される読取り要求と同じアドレスに対する1つまたは複数の先行する書込み要求に応じて条件付きとすることができる。Table 1(表1)に示される例においては、読取りバリアは、イベント2のLDR Xが、イベント1のSTR Xと同じメモリロケーションをターゲットとしているので必要であるだけである。バリアが、STR Xに関連するスヌープ無効化が完了していることを保証するために必要であることは、LDR Xが、STR Xデータを観察したという理由だけである。EMからの読取り要求の間のアドレス比較と、未処理状態のスヌープ無効化とに基づいて読取りバリアを選択的に生成することは、それが、生成される読取りバリアの数を減少させるので、システム効率を増大させる。
【００３８】
別の実施形態においては、サロゲートバリアの生成は、バリア生成能力を有していないこれらの外部マスタに対して選択的であり得る。バリア生成能力を有する外部マスタは、サロゲートバリアジェネレーション回路308をバイパスすることになり、バリアをバンクスヌープ待ち行列310へと、またプロセッサスヌープ待ち行列回路314へと送信する。外部マスタが、バリアを生成する能力がある場合には、EMは、あらゆる読取りオペレーションの後にバリアを生成するサロゲートバリアジェネレーション回路308とは対照的に、必要に応じてバリアを生成することになる。EMからの読取りオペレーションの数は、一般的にEMから生成される実際のバリアの数よりもずっと大きいので、バリアを生成することができないEMについてだけサロゲート読取りバリアを選択的に生成することは、それが、生成される読取りバリアの数を減少させるので、システム効率を増大させる。
【００３９】
さらなる実施形態においては、サロゲート読取りバリアは、共用バス相互接続210などのバス相互接続ユニット内で生成されることが可能である。共用バス相互接続210は、サロゲート読取りバリアが完了しているという読取りバリア肯定応答表示が受信されるまで、読取り要求を行うEMを識別するためにサロゲート読取りバリアにタグ付けを行い、メモリアクセス要求に続く任意のものを未処理状態で保持することになる。
【００４０】
図4は、弱く順序付けられたストレージシステムにおいてバリアのないデバイスについてのサロゲート読取りバリアを生成するための例示のプロセス400を示している。ブロック404において、メモリアクセス要求は、外部マスタ208のうちの1つからL2 SCU 212において受信される。決定ブロック406において、メモリアクセス要求が、読取り要求であるかどうかという決定は、例えば、図3のバスコマンドデコーダ306内で行われる。メモリアクセス要求が、読取り要求でない場合、それは、書込み要求であり、プロセス400は、決定ブロック408へと進む。決定ブロック408において、サロゲート読取りバリアが、例えば、図3のインジケータ320などの進行インジケータ内のメモリバリアをチェックすることにより、既に進行中であるかどうかというさらなる決定が、行われる。サロゲート読取りバリアが、既に進行中である場合、プロセス400は、サロゲート読取りバリアが完了するまで待ち、次いでブロック410へと進む。ブロック410において、書込み要求が処理される。
【００４１】
決定ブロック406に戻って、メモリアクセス要求が、読取り要求である場合、プロセス400は、ブロック412へと進む。ブロック412において、サロゲート読取りバリアは、読取り要求を受信することに応じてサロゲートバリアジェネレータ回路308内で生成される。ブロック414において、インジケータ320などのインジケータは、読取りバリアが、進行中であることを示すように設定される。ブロック416において、サロゲート読取りバリアは、読取り要求を行うEMを識別するためにタグ付けされ、バンクスヌープ待ち行列310などの待ち行列に記憶される。ブロック418において、サロゲート読取りバリアは、プロセッサスヌープ待ち行列316などの待ち行列を経由してプロセッサ204に伝えられる。決定ブロック420において、サロゲート読取りバリアに先行するオペレーションについてのスヌープ無効化コマンドが完了されているかどうかという決定が、例えば、プロセッサスヌープ待ち行列回路314内で行われる。任意のスヌープ無効化コマンドが、未処理状態である場合、プロセス400は、それらが完了するまで待つ。スヌープ無効化コマンドが完了しているとき、プロセス400は、ブロック422へと進む。ブロック422において、サロゲート読取りバリアは、肯定応答される。ブロック424において、ブロック414において以前に設定されたインジケータは、クリアされ、メモリアクセスオペレーションは、処理されることが許可される。
【００４２】
本明細書内において開示される実施形態に関連して説明される様々な例示の論理ブロック、モジュール、回路、要素、またはコンポーネントは、本明細書内で説明される機能を実行するように設計された汎用プロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)または他のプログラマブル論理コンポーネント、ディスクリートゲートまたはトランジスタ論理、ディスクリートハードウェアコンポーネント、あるいはそれらの任意の組合せを用いて実装され、または実行されることが可能である。汎用プロセッサは、マイクロプロセッサとすることができるが、代替案においては、プロセッサは、任意の従来のプロセッサ、専用コントローラ、またはマイクロコード化されたコントローラとすることもできる。プロセッサは、コンピューティングコンポーネントの組合せとして、例えば、DSPとマイクロプロセッサとの組合せ、複数のマイクロプロセッサ、DSPコアと組み合わされた1つまたは複数のマイクロプロセッサ、あるいは望ましいアプリケーションのために適した他のそのような任意の構成として実装されることも可能である。
【００４３】
本明細書内で開示される実施形態に関連して説明される方法は、ハードウェアの形で直接に、プロセッサによって実行されるソフトウェアモジュールの形で、あるいはそれら2つの組合せの形で、実施されることが可能である。ソフトウェアモジュールは、RAMメモリ、フラッシュメモリ、ROMメモリ、EPROMメモリ、EEPROMメモリ、レジスタ、ハードディスク、着脱可能ディスク、CD-ROM、または当技術分野において知られている他の任意の形態のストレージ媒体内に存在することができる。ストレージ媒体は、プロセッサが、そのストレージ媒体から情報を読み取り、ストレージ媒体に情報を書き込むことができるように、プロセッサに結合されることが可能である。代替案においては、ストレージ媒体は、プロセッサと一体になっていてもよい。
【００４４】
本発明は、プロセッサシステム内で使用するための例示の実施形態との関連で開示されているが、多種多様な実装は、上記の考察と添付の特許請求の範囲と整合するように当業者によって使用され得ることが理解されるであろう。例えば、固定機能の実装は、本発明の様々な実施形態を利用することもできる。
【符号の説明】
【００４５】
100  ワイヤレス通信システム
120  リモートユニット
125A  コンポーネント
125B  コンポーネント
125C  コンポーネント
125D  コンポーネント
130  リモートユニット
140  基地局
150  リモートユニット
180  順方向リンク信号
190  逆方向リンク信号
200  処理システム
202  システムコア
203  外部コア
204  プロセッサ
2041  プロセッサ
2042  プロセッサ
204N  プロセッサ
206  レベル1命令キャッシュ(L1 Iキャッシュ)
2061  レベル1命令キャッシュ(L1 Iキャッシュ)
2062  レベル1命令キャッシュ(L1 Iキャッシュ)
206N  レベル1命令キャッシュ(L1 Iキャッシュ)
207  レベル1データキャッシュ(L1 Dキャッシュ)
2071  レベル1データキャッシュ(L1 Dキャッシュ)
2072  レベル1データキャッシュ(L1 Dキャッシュ)
207N  レベル1データキャッシュ(L1 Dキャッシュ)
208  外部マスタ(EM)
2081  外部マスタ(EM)
2082  外部マスタ(EM)
208K  外部マスタ(EM)
210  共用バス相互接続、共用バス、バス
212  レベル2システムコヒーレンシユニット(L2 SCU)
214  メインメモリ
216  メモリ階層
217 L2キャッシュアレイ、L2キャッシュ
2181  双方向インターフェース
2182  双方向インターフェース
218K  双方向インターフェース
220  共用バス
300  メモリアクセス順序制御システム
304  先入れ先出し(FIFO)バッファ
306  バスコマンドデコーダ
308  サロゲートバリアジェネレータ回路
310  バンクスヌープ待ち行列
312  レベル2(L2)アレイ
314  プロセッサスヌープ待ち行列回路
316  プロセッサスヌープ待ち行列
3161  プロセッサスヌープ待ち行列
3162  プロセッサスヌープ待ち行列
316N  プロセッサスヌープ待ち行列
318  メインメモリインターフェース回路
320  インジケータ
400  プロセス
404、410、412、414、416、418、422、424  ブロック
406、408、420  決定ブロック
【図１】
0005563071.tif 000003
【図２】
0005563071.tif 000004
【図３】
0005563071.tif 000005
【図４】
0005563071.tif 000006