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