(58)【調査した分野】(Int.Cl.,DB名)
メモリ要求の前記ストリームが、前記2つ以上のメモリ要求のストリームの各メモリ要求のストリームにデータを転送する利用可能性にしたがって分割される、請求項1に記載の方法。
順序付けされたメモリアクセスを必要とする前記メモリ要求が、アトミックメモリアクセスを提供するメモリアクセス排他命令のシーケンスである、請求項1に記載の方法。
前記ストールされたメモリ要求が、前記保留中の先行するメモリ要求が所定の順序で完了することが保証されるという表示を受け取った後で処理される、請求項1に記載の方法。
【背景技術】
【0002】
携帯電話、ラップトップコンピュータ、タブレットパーソナルコンピュータ(PC)、携帯情報端末(PDA)などの多くの携帯型製品は、通信およびマルチメディア用途をサポートするプログラムを実行する1つまたは複数のプロセッサを有するプロセッシングシステムを組み込む。そのような製品のためのプロセッシングシステムは、命令およびデータを記憶するための複雑なメモリシステム、コントローラ、および1つまたは複数のバスによってプロセッサおよびメモリとインターフェースするように構成された周辺デバイスも含む可能性がある。
【0003】
そのようなプロセッシングシステムでは、プロセッサは、しばしばメモリオペレーションが、順序から外れて行われることを可能にすることによって性能利益を実現する。たとえば、メモリオペレーションのシーケンスは、再順序付けされて、新しいページが開く前にそれらのオペレーションがメモリ内の同じページへ実行され得る。メモリオペレーションを再順序付けすることが可能なプロセッシングシステムは、一般に「弱順序付けされた」プロセッシングシステムと呼ばれている。
【0004】
場合によっては、メモリオペレーションを再順序付けすることはプログラムの挙動に予測不可能に悪影響を与える可能性がある。たとえば、バスマスタはイーサネット(登録商標)コントローラなどの周辺デバイスの先入れ先出し(FIFO)にデータを書き込み、1つ前のデータ書き込みに続いてデータが送信され得ることを示す同じ周辺デバイスの制御レジスタへ書き込む。制御レジスタへの書き込みおよびデータレジスタへの書き込みが再順序付けされると、不完全なパケットが送信される。
【0005】
別の例では、アプリケーションは第1のプロセッサが第1のメモリアドレスで始まるデータのブロックを書き込み、データのブロックが記憶されたことを示す第2のメモリアドレスにデータレディフラグ(data ready flag)を書き込むことを必要とし得る。第2のプロセッサは、データレディフラグをモニタし、データが記憶されたことをフラグが示すとデータのブロックを読み出す。弱順序付けされたプロセッシングシステムでは、このオペレーションの順序が行われる保証はなく、それは容認できないことであり得る。また、弱順序付けされたプロセッシングシステムでは、プロセッサに加えて周辺デバイスが、メモリにデータを送り、メモリからデータを受け取るためにバスマスタとして動作する可能性があり、それにより、さらにプログラムを記憶するオペレーションの順序を維持することが困難になる。
【0006】
様々な技法が、弱順序付けされたプロセッシングシステムの順序付けされたメモリオペレーションを実行するために用いられてきた。1つの技法として、順序付けされたメモリオペレーションが必要とされる場合に発行されるバリアコマンドと呼ばれるバスコマンドの使用がある。バリアコマンドは、バリアコマンドの後でプロセッサによって発行された任意のメモリアクセス要求が実行される前に、バリアコマンドの前にプロセッサによって発行されたすべてのメモリアクセス要求が完了することを確実にするために使用され得る。前述の例では、やはりバリアコマンドがデータレディフラグを書き込む前に第1のプロセッサによって発行され得る。このバリアコマンドは、データレディフラグが書き込まれる前に、データのブロックがメモリに書き込まれることを確実にし、それによって第2のプロセッサが新たに記憶されたデータを読み出すことが確実になる。
【0007】
いくつかのプロセッサ、周辺デバイス、およびバス実装は、バリアコマンドを認識し得ない可能性がある。バリアコマンドを利用する弱順序付けされたプロセッシングシステムは、そのようなプロセッサ、周辺デバイス、およびバスの使用が制限される。その結果、弱順序付けされたプロセッシングシステムは効率的に機能しない可能性がある。さらに、バリアをサポートしないシステムでのバリアコマンドの実行は、一般に不効率であり、過剰に時間を浪費する。上記の例では、データおよびフラグへの書き込みだけが順序付けされることが必要とされるが、バリアコマンドはデータおよびフラグに加えてすべてのメモリオペレーションを順序付けする。
【発明を実施するための形態】
【0017】
添付の図面に関連して以下に記載された詳細な説明は、本発明の様々な例としての実施形態の説明として意図するものであり、本発明が実践され得る実施形態のみを表すことを意図するものではない。詳細な説明は、本発明の完全な理解を提供する目的で具体的な詳細を含む。しかし、本発明はこれらの特定の詳細なしに実践され得ることが当業者には明らかになるであろう。場合によっては、本発明の概念を不明瞭にすることを避けるために、よく知られた構造および構成要素がブロック図の形態で示される。
【0018】
図1は、本発明の実施形態が有利に使用され得る例としてのワイヤレス通信システム100を示す。例示の目的で、
図1は、3つの遠隔ユニット120、130、および150および2つのベースステーション140を示す。一般のワイヤレス通信システムがより多くの遠隔ユニットおよびベースステーションを有することができることが認識されよう。遠隔ユニット120、130、150、およびハードウェア構成要素、ソフトウェア構成要素、または両方を含むそれぞれ構成要素125A、125C、125B、および125Dで表されるようなベースステーション140が、下記にさらに論じられるように本発明を具体化するようになされている。
図1は、ベースステーション140から遠隔ユニット120、130、および150へのフォワードリンク信号180、および遠隔ユニット120、130、および150からベースステーション140へのリバースリンク信号190を示す。
【0019】
図1では、遠隔ユニット120はモバイル電話として、遠隔ユニット130はポータブルコンピュータとして、遠隔ユニット150はワイヤレスローカルループシステム内の固定位置の遠隔ユニットとして示される。例として、遠隔ユニットは、あるいは携帯電話、ポケットベル、携帯用無線電話機、ハンドヘルドパーソナル通信システム(PCS)ユニット、携帯情報端末などのポータブルデータユニット、またはメータ読み出し装置などの固定位置のデータユニットであってもよい。
図1は、本開示の教示による遠隔ユニットを示すが、本開示はこれらの例として示されたユニットに限定されない。本発明の実施形態は、弱順序付けされた記憶サブシステムとともに動作する任意のプロセッシングシステムで適切に使用され得る。
【0020】
メモリオペレーションがプログラムの順序で実行されることを確実にするための技法の1つとして、プレバリア(pre-barrier)命令から生じるすべてのメモリアクセスが、それらのエージェントがポストバリア(post-barrier)命令から生じるメモリアクセスを認識する前に所定の順序で完了するように通知されることを確実にするメモリバリア命令を使用することがある。たとえば、特定のメモリ領域またはメモリブロックサイズ内にアドレスがある要求のための弱順序付けされたメモリシステムにおいて強順序付けされた(SO)とデバイス(DV)メモリオペレーションのプログラムの厳密な順序付けを保証するバスアーキテクチャが利用され得る。強順序付けされた(SO)要求およびデバイス(DV)メモリ要求は、下記により詳細に説明されるのと同様な様式で処理され、SO/DVメモリ要求と呼ばれる。しかし、そのようなシステムでは、異なるメモリ領域へのSO/DVメモリ要求は互いに対して順序付けされることが保証されない。その結果、正確な動作を保証するためにプログラムの厳密な順序付けを必要とする異なるメモリ領域へのSO/DV要求の間にバリア命令を挿入することによってSO/DV要求の順序付けの制約を強制するためのソフトウェアが必要とされる。しかし、バリア命令をどこに置くかを判定することは容易ではなく、必要な場所にバリア命令がなく、正確な動作を保証することが必要でない可能性がある場所にバリア命令があるように展開されるコードが生じることになる。
【0021】
プロセッサは、改善された性能を実現し、
図2Aに関して下記に説明するような技法を使用してSO/DVメモリ要求の正確な動作を保証し得る。
図2Aは、
図1の構成要素125A、125C、125B、および125Dに適切に使用され得る弱順序付けされた記憶システムで動作するように構成された例としてのプロセッシングシステム200を示す。プロセッシングシステム200は、メインメモリ202と、バスブリッジ204を介してメインメモリ202ならびに外部デバイス242および244とに連結されたシステムコア203とを含む。システムコア203は、プロセッサ206、レベル1命令キャッシュ(L1 I-cache)208、レベル1データキャッシュ(L1 D-cache)210、ならびにバスおよびメモリ管理ユニット(BMMU)212を備える。BMMU212は、マスタポート0(MP0)216、マスタポート1(MP1)217、レベル2ユニファイドキャッシュ(L2キャッシュ)220、およびパスアンドカウント回路222を含む。パスアンドカウント回路222は、弱順序付けされた記憶システム内の順序付けされたアクセスを制御するための構成可能な要素として、スイッチ224、プロセッサ要求用カウンタ回路(countP)226、制御回路228、バッファ(bfr)230、および外部デバイス要求用のカウンタ回路(countE)232を含む。メインメモリ202は、ダブルデータレート0(DDR0)メモリデバイス234、およびDDR1メモリデバイス236から成る。外部デバイスは、DDRxメモリなどの外部デバイスX242、およびバスマスタとして機能し内部プロセッサおよびローカルメモリを有する外部デバイスY244を含む。バスブリッジ204は、経路250を介してMP0216からDDR0メモリデバイス234への直接的な経路を提供し、経路252を介してMPI217からDDR1メモリデバイス236への直接的な経路を提供する。バスブリッジ204は、下記により詳細に説明されるように例としての経路257〜259も提供する。
【0022】
プロセッサ206および外部デバイスY244は、それぞれ汎用のプロセッサまたはマルチプロセッサ、デジタルシグナルプロセッサ(DSP)、特定用途向けプロセッサ(ASP)などのバスマスタデバイスとして実装されてもよい。外部デバイスY244などの外部周辺デバイスは、メモリデバイス、メモリコントローラ、別のバス相互接続デバイスに相互接続するためのブリッジデバイス、ハードディスクコントローラなどの周辺デバイス、ユニバーサルシリアルバス(USB)コントローラ、対話型ディスプレイデバイス、コントローラを送信機および受信機に結合する無線デバイスであり得る。外部デバイスY244は、データをメインメモリ202に読み出し、または書き込むダイレクトメモリアクセス(DMA)技法を利用することもできる。
【0023】
たとえばプロセッサ206および外部デバイスY244は、非一時的コンピュータ読み出し可能記憶媒体に記憶されるプログラムの制御の下で命令を実行するように構成され得る。たとえば、コンピュータ読み出し可能記憶媒体は、命令キャッシュ208および220、外部デバイスY244と関連付けられたローカルメモリのうちの1つを介して利用可能であり得るような、プロセッサ206または外部デバイスY244とローカルで直接的に関連付けられ、またはバスブリッジ204を介して外部デバイスY244にとってアクセス可能である。プロセッサ206は、プログラムの実行の際にメインメモリ202からのデータにアクセスすることができる。外部デバイスY244は、各外部デバイスとローカルで直接的に関連付けられた、またはたとえばDDR0メモリデバイス234などの別のプロセッサメモリデバイスからバスブリッジ204を介してアクセス可能なメモリデバイスに常駐するデータにアクセスすることもできる。
【0024】
バスブリッジ204は、バストラフィックを管理し、システムコア203、外部デバイスY244、メインメモリ202、および外部デバイスX242などのその他の周辺デバイスの間の接続経路を提供する。バスブリッジ204は、たとえばそれぞれMP0 216およびMP1 217、DDR0メモリデバイス234、DDR1メモリデバイス236の間の専用チャネルと共に構成され得る。2つのメモリデバイスDDR0 234およびDDR1 236が
図2Aに示されるが、単一のメモリデバイスが2つのマスタポートMP0 216およびMP1 217と共に使用されて2つのマスタポートの間でインターリーブアクセスの利点を生かすことができる。インターリーブアクセスが使用されなくても、1つまたは複数のマスタポート(MP)が用いられ得ることも留意されたい。たとえば、メインメモリ202が単一ポートのメモリデバイスとして実装された場合でも、要求が依然としてMP0 216およびMP1 217から単一ポートのメモリデバイスに発行され得る。外部デバイスX242にアクセスする場合および単一ポートのメインメモリデバイスにアクセスする場合にはMP0 216およびMP1 217からのメモリアクセス要求が再収束するので、メモリ要求が本発明の技法を使用せずにプログラム順序から外れ得る。
【0025】
ブリッジ204がメモリ要求を通知する場合、対象とする外部デバイスへの要求が必要とされた順序で完了することが通知により要求デバイスに保証される。したがって、SO/DVメモリ要求がMP0 216を介して送達される場合、MP0への要求がそのような通知を受け取るまでMP1への任意の新しいSO/DV要求がストールされる。読み出し要求および書き込み要求への通知は異なるが、システムは適切な応答を待つことに留意されたい。ブリッジ204からの通知は、プロセッサ206に要求が完了したことを示さない可能性があるが、外部のスレーブデバイスがたとえばMP1からのメモリアクセスを認識する前にMP0からのメモリアクセスを認識することを示せば十分である。いくつかのシステムでは、通知は実際には完了表示であり得る。本実装では、通知は、プログラム順序付けが保証されるシステムの点にメモリ要求が到達したことの保証を表す。たとえば、BMMU212はメモリ要求のストリームを分割し、次いで要求ストリーム、経路257および258は、外部デバイスX242内のDDR-Xメモリ、またはたとえば単一ポートのメインメモリデバイスなどの外部デバイスに再収束される。要求が経路257および258のうちの1つに提示されると、経路257および258のうちのもう一方への要求をストールすることによって、スイッチ224に入ったSO/DVメモリ要求の順序は、外部デバイスX242のDDR-Xメモリに到達する順序と同じになり、例としての単一ポートのメモリデバイスに到達する順序とも同じになる。要求がBMMU212を出た後でも、対象とするメモリで要求が実際に受け取られる前にある程度の時間が経過し得るが、BMMU212は順序を維持する役割を果たしている。
【0026】
プロセッシングシステム200では、バスおよびメモリ管理ユニット(BMMU)212はSO/DVメモリアクセスオペレーションの正確な順序付けを確実にする。特に、例としてのデバイスは、書き込みデータバス、アドレスバス、および読み出しデータバス、および関連付けられた制御信号を利用することができる。多くのシステムでは、組み合わされた書き込みおよび読み出しバスが使用され得る。一般に、個々のアドレス、読み出しデータ、および書き込みのデータバスは、特定のシステムの要件に応じて、特定のバスアーキテクチャ、または基準に適合する。メモリアクセス要求は、記憶命令の実行に応答して生成される書き込み要求または記憶要求、ロード命令の実行に応答して生成される読み出し要求またはロード要求、あるいはメモリバリアコマンドを含み得るバス関連要求を含むことができる。また、定義によって、SO/DV要求はキャッシュ不可能である。メモリバリアコマンドが外部マスタによって発行された場合でも、外部マスタによって使用されるバスインターフェースの必ずしもすべてがメモリバリアコマンドをサポートまたは認識しない。また、デバイスの必ずしもすべてがメモリバリアコマンドをサポートしない。
【0027】
第1の例では、プロセッサ206はメインメモリ202へのメモリ要求のストリームを生成し、メモリ要求はbfr230でバッファされ、スイッチ224によってMP0 216またはMP1 217へ分割される。たとえば特定のメモリ領域内の場所へのメモリ要求に基づいて、メモリ要求のストリームを複数のストリームに分割することによって、ストリームの間のメモリ要求が、プロセッサによって実行されたコードにメモリバリアコマンドを挿入するなどのソフトウェア技法を使用することなく自動的に順序付けされ得る。たとえば、メモリ要求のストリームは、容量、ならびに奇数のメモリ領域および偶数のメモリ領域のアドレスに基づいて分割されてもよく、奇数のメモリ領域と偶数のメモリ領域の間のメモリ要求は、自動的に順序付けされてもよい。システムの定義により、DDR0メモリデバイス234は、偶数のメモリ領域のデータを記憶し、そこでは1つのメモリ領域のデータは1KBの容量であり、ビット10のメモリ要求アドレスが利用されて、メモリ要求が偶数のメモリ領域にあるデータに対するものか奇数のメモリ領域にあるデータ対するものかを判定する。DDR1メモリデバイス236は、奇数のアドレスのメモリ領域のデータを記憶し、それぞれがやはりIKB容量のものである。制御回路228は、メモリ要求のストリームをモニタし、この例としてのシナリオではIKBメモリ領域に対する、ビット10のメモリ要求アドレスがスイッチ224を制御する。第1の状態でのビット10のメモリ要求アドレスでは、偶数のメモリ領域へのメモリ要求がMP0 216に渡される。第2の状態でのビット10のメモリ要求アドレスでは、奇数のメモリ領域へのメモリ要求がMP1 217に渡される。
【0028】
別の実施形態では、DDR0メモリデバイス234は、偶数のメモリ領域のデータを記憶し、そこでは1つのメモリ領域のデータは要求のアドレスをハッシュすることによって定められ、ハッシュの結果は、メモリ要求が偶数のメモリ領域にあるデータに対するものか奇数のメモリ領域にあるデータ対するものかを判定するために利用され得る。DDR1メモリデバイス236は、奇数のハッシュされたメモリ領域を記憶する。制御回路228は、メモリ要求のストリームをモニタし、メモリ要求アドレスのハッシュを計算してスイッチ224を制御する。第1の状態でのメモリ要求アドレスのハッシュの結果によって、偶数のメモリ領域へのメモリ要求がMP0 216に渡される。第2の状態でのメモリ要求アドレスのハッシュの結果によって、奇数のメモリ領域へのメモリ要求がMP1 217に渡される。
【0029】
メモリ要求のストリームをモニタすることによって、奇数と偶数のメモリ領域の間で変わる要求が識別され、保留中の要求が所定の順序で完了することが保証されるという表示が受け取られるまでストールされ得る。トラッキング手法が、カウンタcountP 226などのカウンタを使用し、countP 226は各メモリ要求を受け取ると増加し、要求が所定の順序で完了することを示す、要求に対する応答が受け取られた場合に減少する。先行するメモリデバイスに関して保留中のメモリ要求がある場合にDDR0メモリデバイス234とDDR1メモリデバイス236の間で変わる新しいSO/DVメモリ要求が、保留中のメモリ要求が完了することが保証されるまでストールされる。ストールされたメモリ要求は、処理が有効にされるまで保留のままになる。奇数と偶数のメモリ領域の間で変わり、ストールされるSO/DVメモリ要求は、カウンタを増加させない。保留中の要求が完了し、カウンタが0などのほぼ最初のカウント値に減少された後で、ストールされた要求が処理され、次いでカウンタは処理されているストールされた要求に関して増加される。メモリ要求の奇数のアドレスのストリーム内の要求、またはメモリ要求の偶数のアドレスのストリーム内の要求は、上記に説明した通知によって、所定の順序で完了することが保証されるので、ストリームの間で変わる要求のみが、反対のストリームへの要求をストールする目的でモニタされる。要求がストリームの間の変更を表すことを判定することは、先行する要求または要求のシーケンスのメモリ要求アドレス境界が、現在のメモリ要求アドレス境界と異なることを示す状態を保存することによって遂行される。たとえば、奇数のアドレスのIKメモリ領域への1つまたは複数の要求のストリームは、単一のアサートされた保留中のストリームビットによって表されてもよく、それは現在の要求のビット10での0値と比較された場合に、カウンタに保留中のカウントがある場合に、現在の要求がストールされる必要があり得ることを示す。保留中の要求が通知され、カウンタがその最初の状態に戻ると、ストールされた要求が処理され、保留中のストリームビットがディアサートされ、偶数のアドレスのIKメモリ領域への要求が処理中または保留中であることを示す。SO/DV要求は、カウンタcountP 226などのカウン
タを増加させるために、SO/DV要求が要求の同じストリーム内にある場合でもモニタされる。
【0030】
外部デバイスY244などの外部マスタデバイスが、SO/DV要求を制御し、DDR0メモリデバイス234への偶数のアドレスの要求と、DDR1メモリデバイス236への奇数のアドレスの要求との間で変わる要求をモニタするために同様な様式で動作するように構成される。外部デバイスY244によって発行されたメモリ要求のストリームがモニタされ、スイッチ224が、偶数のアドレスの要求をDDR0メモリデバイス234に渡し、偶数のアドレスの要求が保留中であることを示すために状態を保存し、カウンタcountE 232を増加させる制御回路228によって制御される。先行してアクセスされたメモリ(たとえば、DDR0メモリデバイス234)から異なるメモリ(たとえば、DDR1メモリデバイス236)の間で変わる外部デバイスY244からの要求は、countE値が0などの最初の値に減少されることによって示されるように、先行するメモリへの保留中の要求が完了することが保証されるまでストールされる。保存された状態は、次いでアサートされてDDR1メモリデバイス236へのストールされた要求が処理されていることを示す。例としての経路259は、L2キャッシュ220でキャッシュされた、または外部デバイスもしくはメインメモリ202を対象とするBMMU212を介して送られる要求に関する。
【0031】
図2Bは、本発明の実施形態が有利に使用され得る、弱順序付けされた記憶システムでの強順序付けされたおよびロード/記憶の排他的オペレーションを調整するように構成された例としての第2のプロセッシングシステム260を示す。第2のプロセッシングシステム260は、countP 226などのプロセッサの要求に関するカウンタ回路が1つのカウンタから2つのカウンタへ増設されたことを除いて、
図2Aのプロセッシングシステム200と同様である。順序付けされたメモリアクセスを必要とするメモリ要求のタイプの1つとして、アトミックメモリアクセスを提供するメモリアクセス排他的命令のシーケンスがある。順序付けされたメモリアクセスを必要とするメモリ要求の第2のタイプとして、上記に説明した強順序付けされたまたはデバイス(SO/DV)要求がある。ロード排他的命令または記憶排他的命令カウンタ(countPx)262およびSO/DVカウンタ(countPs)264が利用されて、要求ストリームが対象のデバイスで収束する複数の経路に分割された場合でも、対象のデバイスに対する要求ストリームでのメモリ要求の元の順序を維持する。countPx 262およびcountPs 264カウンタは、下記により詳細に説明されるように制御回路266によって制御される。以下のTable 1(表1)は、本発明の様々な実施形態を示すために第2のプロセッシングシステム260に適用される強順序付けされたまたはロード/記憶の排他的属性を有するメモリ要求のストリームを示す。
【0033】
メモリ要求は、ロード排他的(LDREX)命令、記憶排他的(STREX)命令、および強順序付けされたまたはデバイス(SO/DV)メモリ要求を含む。LDREXおよびSTREX命令は、ロックされた、またはロック解除されたなどのメモリ値またはメモリ領域の状態を表すフラグまたは変数のアトミックアクセスを保証する機構を提供することによってセマフォを実装するために適切に使用され得る。表1の4つのメモリ要求が手短に説明され、次いで第2のプロセッシングシステム260の動作がこのメモリ要求ストリームによって説明される。
【0034】
第1のLDREX命令が、バスマスタポートMP0を介して送られ、メモリアドレス「A」からの値を読み出し、それを指定されたレジスタにロードし、排他的モニタでメモリアドレス「A」をタグ付けする。第2のLDREX命令が、MP1を介して送られ、メモリアドレス「B」からの第2の値を読み出し、それを指定されたレジスタにロードし、別の排他的モニタでメモリアドレス「B」をタグ付けする。SO/DV要求がメモリアドレス「C」でのデータにアクセスするためのMP1を介して送られ、第1および第2のLDREX命令とは別に動作する。STREX命令がMP1を介して送られ、メモリアドレス「B」でタグ付けされた排他的モニタがなお排他的な状態にある場合のみ、メモリアドレス「B」に対するデータ値を記憶し、記憶動作が成功した場合に表示を戻す。
【0035】
カウンタcountPx 262およびcountPs 264が、最初のカウント値に初期化される。第1のLDREX命令がバスマスタポートMP0を介して送られる場合、カウンタcountPx 262が増分され、ポートがMP0として選択されたことを示すビットでタグ付けされる。第2のLDREX命令がバッファ230から受け取られる場合、第1のLDREX命令がまだcountPx 262に関して最初のカウント値でないところで保留中であるので、バスマスタポートMP1を介して送られる代わりにストールされる。制御回路266はバッファ230内で予測し、SO/DV要求を識別し、countPs 264がその最初の値にあることも確認する。SO/DV要求は、ロードおよび記憶の排他的命令とは別個に動作することができるので、制御回路266はSO/DV要求がバスマスタポートMP1を介して送られ、カウンタcountPs 264を増分させ、ポートがMP1として選択されたことを示すビットでタグ付けされる。第1のLDREX命令がまだ保留中であるので、第4の要求であるSTREX命令がストールされる。第1のLDREX命令が完了することが保証されるという通知が受け取られると、カウンタcountPx 262がその最初の値に減分される。第2のLDREX命令がリリースされ、バスマスタポートMP1を介して送られ、countPx 262を増分させ、選択されたポートがMP1であることを示すためにタグ付けされる。同じポートを通るすべての要求が発行された順序で完了されることが保証されるので、STREX命令もリリースされ、バスマスタポートMP1を介して送られる。
【0036】
図1に列挙されたメモリ要求の同じストリームは、
図2Aのプロセッシングシステム200に受け取られ得ることに留意されたい。単一のカウンタcountP 226では、SO/DV要求が第1のLDREX命令に対する通知を受け取ることを保留にしてストールされる。別の実施形態では、プロセッシングシステム200に示されるような複数のバスマスタポートへのアクセスを有するプロセッサが、転送のために複数のバスポートの利用可能性に基づいてメモリ要求ストリームを分割することができることにも留意されたい。たとえば
図2Aでは、プロセッサ206が2つのバスポート216および217のうちの1つが転送されるべき保留中の要求によってバックアップされることを決定すると、プロセッサ206は、もう一方のバスポートがこれらの転送のために利用可能であることを前提として、バックアップされた転送のためのもう一方のバスポートを使用することを選択的に開始することができる。
【0037】
図3は、本発明の実施形態が有利に使用され得る弱順序付けされた記憶システムで動作させるように構成された例示の拡張されたプロセッシングシステム300を示す。拡張されたプロセッシングシステム300は、
図2Aに示されたプロセッシングシステム200を発展させたものである。拡張されたプロセッシングシステム300のメインメモリ302は、
図2Aのプロセッシングシステム200のメインメモリ202と比べてメモリデバイスDDR0 334
0、DDR1 334
1、…DDRN 334
NのN個のメモリ要素に増設される。第2のプロセッサ(プロセッサ2 306
2)が、その関連付けられたL1 1キャッシュ308
2およびL1 Dキャッシュ310
2を含んで、システムコア303に加えられる。バッファ(bfr)330
2および第2のカウンタcountP2 326
2が第2のプロセッサと関連付けられている。
【0038】
メインメモリ302への1つまたは複数のメモリ要素の追加により、ブリッジ304が、経路350
0、350
1、…、350
Nによって示された追加のメモリチャネルで増設される。システムコア303もN個のマスタポートMP0 316
0、MP1 316
1、…、MPN 316
Nに増設される。ここではスイッチ324は、N個のマスタポート316
0〜316
Nをサポートする。これらの追加によって、奇数/偶数のメモリ領域のアドレス方式が、メモリ範囲に基づいた技法に変更される。たとえば、ここでは1KBメモリ領域で、アドレスビット11および10のメモリ要求アドレスフィールドを使用して、メモリ要求を適切なメモリ要素に送る。Nが4に等しい1つの実施形態では、「00」に等しいアドレスビット11および10を有するメモリ要求が、スイッチ324を介してDDR0 334
0に送られる。「01」に等しいアドレスビット11および10を有するメモリ要求が、スイッチ324を介してDDR0 334
1に送られる。「10」に等しいアドレスビット11および10を有するメモリ要求が、スイッチ324を介してDDR0 334
2に送られる。「11」に等しいアドレスビット11および10を有するメモリ要求が、スイッチ324を介してDDR0 334
3に送られる。
図2Aのメインメモリ202は、3つのメモリデバイスDDR
0、DDR
1、およびDDR
2を有するシステムのような、奇数の追加のメモリデバイスによって増設され得ることに留意されたい。本発明の技術は、適切なアドレスマッピング手法を利用したシステムに適用可能である。
【0039】
拡張されたプロセッシングシステム300に関するトラッキング手法は、プロセッシングシステム200に関するトラッキング手法と同様である。countP 326
1と同様なカウンタであるcountP2 326
2が使用される。カウンタcountP2 326
2は、プロセッサ2 306
2から各メモリ要求を受け取ると増分し、要求が所定の順序で完了することを示す、要求に対する応答が受け取られた場合に減分する。各追加のプロセッサもカウンタcountP2 326
2およびバッファ(bfr)330
2と同様のカウンタおよびバッファを追加する。DDR0メモリデバイス334
0などの第1のDDRメモリデバイスと、先行するメモリデバイスと関連付けられた保留中のメモリ要求を有する、DDR1メモリデバイス334
1、DDR2メモリ334
2、…、またはDDRNメモリ334
Nの残りのメモリデバイスのうちの1つなどの異なるデバイスとの間で変わる新しいメモリ要求が、保留中のメモリ要求が完了することが保証されるまでストールされる。ストールされたメモリ要求は、処理が有効にされるまで保留のままになる。アクセスされている現在のメモリ領域とは異なるメモリ領域を対象とするメモリ要求がストールされ、カウンタを増分させない。保留中の要求が完了し、カウンタが0などの最初のカウント値に適切に減分された後で、ストールされた要求が処理するめに有効にされ、次いでカウンタはその時点で処理されている先行してストールされた要求に関して増分される。各メモリ領域内のメモリ要求が所定の順序で完了することが保証されているので、異なるメモリ領域の間で変わるメモリ要求のみが異なるストリームへの要求をストールする目的でモニタされる。SO/DV要求は、カウンタcountP1 326
1などのカウンタを増分させるために、SO/DV要求が要求の同じストリーム内にある場合でもモニタされる。
【0040】
BMMU312はメモリ要求のストリームを分割し、次いで経路357
0、357
1、…、357
Nから選択された要求ストリームは、外部デバイスX342内のDDR-Xメモリなどの外部スレーブデバイスに再収束される。要求が経路357
0、357
1、…、357
Nのうちの1つに提示されると、経路357
0、357
1、…、357
Nのうちのもう一方への要求をストールすることによって、スイッチ324に入ったSO/DVメモリ要求の順序は、外部デバイスX342のDDR-Xメモリに到達する順序と同じになる。プロセッサ306
1からの要求ストリームは、プロセッサ306
2からの要求ストリームとは別個にモニタされ、その逆のことも当てはまることに留意されたい。
【0041】
いくつかの実装形態では、
図2Aの制御ブロック228などの制御ブロックが
図3の拡張されたプロセッシングシステム300で2つの制御ブロックとして複製され、各複製された制御ブロックが2つのプロセッサ306
1および306
2のうちの1つと関連付けられている。
図2Bの第2のプロセッシングシステム260に基づいた代替の実施形態では、countP1 326
1がcountPx1に拡張され、countPs1およびcountP2 326
2が、countPx2およびcountPs2に拡張される。制御回路328は、
図2Bに関して上記に説明したように、LDREXおよびSTREXの命令ならびにSO/DV要求の順序付け制御をサポートするように適切に増設される。各プロセッサの要求は、
図2Bに対して上記に説明したように制御される。これらの手法では、N個のCPUに対して、上記に説明したような技法を実装するために必要なハードウェアのN個の複製がある。
【0042】
図4は、本発明の実施形態が有利に使用され得る、弱順序付けされた記憶システムでの順序付けされたアクセスを制御するための例示のプロセス400を示す。ブロック404では、順序付けされたアクセスが必要であることを示す属性がアサートされた
図2Aまたは2Bのプロセッサ206または
図3のプロセッサ306
1からのメモリアクセス要求が、それぞれBMMU212またはBMMU312などのバスおよびメモリ管理ユニット(BMMU)で受け取られる。判定ブロック406では、制御回路228、266、または328において、受け取られた順序付けされたメモリアクセス要求とは異なるメモリ要素および関連付けられたマスタポートへの1つまたは複数の保留中の要求があるかどうか判定が行われる。異なるメモリ要素への保留中の順序付けされたメモリアクセス要求がある場合、プロセス400がブロック408に進む。ブロック408では、新しいアクセスの順序付けされたメモリアクセス要求は、保留中の順序付けされた1つまたは複数のメモリアクセス要求が完了することが保証されるまでストールされる。次いで、プロセス400がブロック406に戻る。異なるメモリ要素および関連付けられたマスタポートへの保留中の要求がない場合、プロセス400がブロック410に進む。ブロック410では、新しい順序付けされたメモリアクセス要求が処理され、アクセスカウンタが増分される。ブロック412では、対応する応答が新しい順序付けされたメモリアクセスに関して受け取られたかどうかの判定が行われる。その時点で保留中の新しい順序付けされたメモリアクセス要求に関して応答が受け取られなかった場合、プロセスが保留中の順序付けされたメモリアクセス要求の解決を待ってブロック412のままになる。保留中の順序付けされたメモリアクセス要求に対する応答が受け取られると、プロセス400がブロック414に進む。ブロック414では、プロセス400がアクセスカウンタを減分する。ブロック416では、プロセス400がその順序付けされたメモリアクセス要求に関して終了する。
【0043】
本発明に開示された実施形態に関連して説明された様々な例示の論理ブロック、モジュール、回路、要素、または構成要素が、特定用途集積回路(ASIC)、フィールドプログラマブルゲート配列(FPGA)、またはその他のプログラム可能な論理構成要素、ディスクリートゲートもしくはトランジスタ論理、ディスクリートハードウェア構成要素、または本明細書に記載された機能を行うように設計された任意のそれらの組み合わせを使用して実装され得る。汎用プロセッサは、マイクロプロセッサであってもよいが、代替としてプロセッサは、任意の従来のプロセッサ、特殊用途コントローラ、またはマイクロコードコントローラであることができる。システムコアは、たとえばDSPとマイクロプロセッサの組み合わせ、複数のマイクロプロセッサ、DSPコアと結合した1つまたは複数のマイクロプロセッサ、あるいは所望の用途に適用可能な任意のその他の構成などのコンピューティング構成要素の組み合わせとして実装され得る。
【0044】
本明細書に開示された実施形態に関連して説明される方法は、プロセッサによって実行されるハードウェアおよびソフトウェアで具現化され得る。プロセッサ206は、たとえばプログラムの実行の際にメインメモリ202からの命令およびデータにアクセスすることができる。1つまたは複数のプログラムを含むソフトウェアが、コンピュータ読み出し可能記憶媒体に非一時的信号として記憶される。コンピュータ読み出し可能記憶媒体は、プロセッサ206、プロセッサ306
1、プロセッサ306
2などのプロセッサ、または外部デバイスY244などの周辺デバイスのうちの1つのプロセッサと直接的に関連付けられ、あるいは、たとえばバスおよびメモリ管理ユニット(BMMU)212またはその他のインターフェース手段などを介してアクセス可能であり得る。記憶媒体は、プロセッサと結合可能であり、それによってプロセッサが記憶媒体から情報を読み出し、または場合によっては記憶媒体に情報を書き込むことができる。プロセッサに結合する記憶媒体は、回路実装と一体の直接接続式であることができ、またはダウンロード技法を使用する直接的アクセスまたはデータストリーミングをサポートする1つまたは複数のインターフェースを利用することができる。コンピュータ読み出し可能記憶媒体は、ランダムアクセスメモリ(RAM)、ダイナミックランダムアクセスメモリ(DRAM)、同期ダイナミックランダムアクセスメモリ(SDRAM)、フラッシュメモリ、読み出し専用メモリ(ROM)、プログラマブル読み出し専用メモリ(PROM)、消去可能なプログラマブル読み出し専用メモリ(EPROM)、電気的に消去可能なプログラマブル読み出し専用メモリ(EEPROM)、コンパクトディスク(CD)、デジタルビデオディスク(DVD)、その他のタイプのリムーバブルディスク、または任意のその他の適切な記憶媒体を含むことができる。
【0045】
本発明は、プロセッサシステムに使用するための例示の実施形態の文脈で開示されたが、広範囲の実装形態が上記の考察および下記の特許請求の範囲と整合して、当業者によって使用され得ることが認識されよう。たとえば、固定された機能の実装は、本発明の様々な実施形態も利用することができる。