[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

JP6408514B2 - 複数のメモリ領域にわたる強順序付けされたデバイス、および排他的トランザクションの自動順序付け - Google Patents

複数のメモリ領域にわたる強順序付けされたデバイス、および排他的トランザクションの自動順序付け Download PDF

Info

Publication number
JP6408514B2
JP6408514B2 JP2016114191A JP2016114191A JP6408514B2 JP 6408514 B2 JP6408514 B2 JP 6408514B2 JP 2016114191 A JP2016114191 A JP 2016114191A JP 2016114191 A JP2016114191 A JP 2016114191A JP 6408514 B2 JP6408514 B2 JP 6408514B2
Authority
JP
Japan
Prior art keywords
memory
requests
stream
request
memory requests
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2016114191A
Other languages
English (en)
Other versions
JP2016157490A (ja
Inventor
ジェイソン・ローレンス・パナヴィッチ
ジェームズ・ノリス・ディーフェンダルファー
トーマス・アンドリュー・ザルトリウス
トーマス・フィリップ・スパイアー
Original Assignee
クアルコム,インコーポレイテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by クアルコム,インコーポレイテッド filed Critical クアルコム,インコーポレイテッド
Publication of JP2016157490A publication Critical patent/JP2016157490A/ja
Application granted granted Critical
Publication of JP6408514B2 publication Critical patent/JP6408514B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/161Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
    • G06F13/1621Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement by maintaining request order

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System (AREA)
  • Multi Processors (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Storage Device Security (AREA)

Description

本発明は、一般に、プロセッシングシステムに関し、より詳細には強順序付けされた(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に適用される強順序付けされたまたはロード/記憶の排他的属性を有するメモリ要求のストリームを示す。
Figure 0006408514
メモリ要求は、ロード排他的(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 外部デバイス

Claims (32)

  1. 順序付けされたメモリアクセスを必要とするメモリ要求を順序付けする方法であって、前記メモリ要求は複数のタイプを含み、前記方法は、
    ストリーム分割回路によって、強順序付けされたメモリ要求のストリームを2つ以上のメモリ要求のストリームに分割するステップと、
    トラッキング回路によって、前記強順序付けされたメモリ要求を、前記2つ以上のメモリ要求のストリームのうちの1つにおいて識別するステップと、
    ストール回路によって、メモリ要求の異なるストリームからの先行するメモリ要求が保留中であると判定されると、前記強順序付けされたメモリ要求をストールするステップと
    前記強順序付けされたメモリ要求がストールしている間に、前記異なるストリームと同一のポートを使用する、他のタイプのメモリ要求を処理するステップと
    を含む、方法。
  2. メモリ要求の前記ストリームがアドレス境界値にしたがって分割される、請求項1に記載の方法。
  3. 前記アドレス境界値が、メモリ領域が奇数のアドレスのメモリ領域であるか、偶数のアドレスのメモリ領域であるかを判定するアドレスビットから判定される、請求項2に記載の方法。
  4. 前記アドレス境界値が、N個のメモリ領域のうちの1つを識別するメモリ要求アドレスにおける複数のビットから判定される、請求項2に記載の方法。
  5. メモリ要求の前記ストリームが、前記2つ以上のメモリ要求のストリームの各メモリ要求のストリームにデータを転送することができるかどうかに基づいて分割される、請求項1に記載の方法。
  6. メモリ要求の前記ストリームにおけるメモリ要求が、アドレス境界値にしたがってN個のメモリ領域のうちの1つに送られる、請求項1に記載の方法。
  7. 前記強順序付けされたメモリ要求が、アトミックメモリアクセスを提供するメモリアクセス排他命令のシーケンスである、請求項1に記載の方法。
  8. 前記ストールされたメモリ要求が、前記保留中の先行するメモリ要求が所定の順序で完了することが保証されるという表示を受け取った後で処理される、請求項1に記載の方法。
  9. メモリ要求ごとにメモリアクセスカウンタを増分させるステップと、
    所望の順序で完了することが保証されることを表示されたメモリ要求ごとに前記メモリアクセスカウンタを減分させるステップと
    をさらに含み、前記メモリアクセスカウンタの初期化された状態とは異なる前記メモリアクセスカウンタのカウント値が、1つまたは複数の保留中の要求が所望の順序で完了することが保証されていないことを示す、請求項1に記載の方法。
  10. 順序付けされたメモリアクセスを必要とするメモリ要求を順序付けする装置であって、前記メモリ要求は複数のタイプを含み、前記装置は、
    メモリ要求の第1のストリームをモニタするように構成され、メモリ要求の前記第1のストリームを、メモリ要求の第2のストリームおよびメモリ要求の第3のストリームに分割するように構成されたストリーム分割回路と、
    保留中のメモリ要求を有するメモリ要求の前記第3のストリームとは異なるメモリ要求のストリームである、メモリ要求の前記第2のストリームからの強順序付けされたメモリ要求を検出するように構成されたトラッキング回路と、
    前記保留中のメモリ要求が所定の順序で完了することが保証されるまで、前記保留中のメモリ要求に応答して前記強順序付けされたメモリ要求の前記第2のストリームをストールするように構成されたストール回路と
    を含み、
    メモリ要求の前記第2のストリームがストールしている間に、メモリ要求の前記第2のストリームと同一のポートを使用する、他のタイプのメモリ要求が処理される、装置。
  11. 前記分割が、メモリ領域の数およびメモリ領域のサイズに基づいてアドレス属性にしたがって判定される、請求項10に記載の装置。
  12. 前記分割が、前記2つ以上のメモリ要求のストリームの各メモリ要求のストリームにデータを転送することができるかどうかに基づいて判定される、請求項10に記載の装置。
  13. 前記トラッキング回路が、
    先行するメモリ要求と同じメモリ要求のストリームであるメモリ要求の前記第2のストリームまたはメモリ要求の前記第3のストリームからメモリ要求を受け取ると増分し、前記受け取られたメモリ要求が保留中であることを示すように構成されたカウンタであって、前記保留中のメモリ要求が所定の順序で完了することが保証されるという通知を受けると減分するように構成されたカウンタを備える、請求項10に記載の装置。
  14. 第1のメモリ領域および第2のメモリ領域であって、メモリ要求の前記第2のストリームが前記第1のメモリ領域に関連付けられ、メモリ要求の前記第3のストリームが前記第2のメモリ領域に関連付けられている、第1のメモリ領域および第2のメモリ領域と、
    メモリ要求の前記第1のストリームを生成するように構成されたプロセッサであって、各メモリ要求が、前記第1のメモリ領域を奇数のアドレスのメモリ領域として、前記第2のメモリ領域を偶数のアドレスのメモリ領域として識別する関連付けられたアドレス属性を含むプロセッサと
    をさらに備える、請求項10に記載の装置。
  15. アドレス属性が、メモリ要求の前記2つ以上のストリームを識別する1つまたは複数のアドレスビットから判定される、請求項10に記載の装置。
  16. メモリ要求の前記第1のストリームがモニタされ、メモリ要求のN個のストリームに分割されるN個のメモリ領域であって、各メモリ要求のストリームが前記N個のメモリ領域の異なるメモリ領域と関連付けられているN個のメモリ領域と、
    メモリ要求の前記第1のストリームを生成するように構成されたプロセッサであって、各メモリ要求が、前記N個のメモリ領域のうちの1つを識別する、関連付けられたアドレス属性を含むプロセッサと
    をさらに備える、請求項10に記載の装置。
  17. 前記強順序付けされたメモリ要求が、アトミックメモリアクセスを提供するメモリアクセス排他命令である、請求項10に記載の装置。
  18. 前記保留中のメモリ要求がメモリアクセス排他命令に応答したものであり、前記ストールされたメモリ要求の第2のストリームの処理が、前記保留中のメモリ要求が所定の順序で完了することが保証されるという表示を受け取った後で有効にされる、請求項10に記載の装置。
  19. メモリアクセスを順序付けする装置であって、
    対応するバスポートと関連付けられた属性にしたがってメモリ要求のストリームを2つ以上の対応するバスポートに送られるメモリ要求の2つ以上のストリームに分割するように構成され、前記メモリ要求は複数のタイプを備える、スイッチおよび制御回路と、
    強順序付けされたメモリ要求をメモリ要求の第1のストリームにおいて検出し、1つまたは複数の保留中のメモリ要求をメモリ要求の第2のストリームにおいて検出するように構成されたトラッキング回路と、
    前記トラッキング回路がこれ以上保留中のメモリ要求がないことを示すまで、前記強順序付けされたメモリ要求をストールするように構成されたストール回路と
    を含み、
    前記強順序付けされたメモリ要求がストールしている間に、メモリ要求の前記第1のストリームと同一のバスポートを使用する、他のタイプのメモリ要求が処理される、装置。
  20. 前記属性が、メモリ領域の数およびメモリ領域のサイズに基づいている、請求項19に記載の装置。
  21. 前記属性が、前記2つ以上のメモリ要求のストリームの各メモリ要求のストリームにデータを転送することができるかどうかに基づく、請求項19に記載の装置。
  22. 前記属性がメモリインターリーブアドレスに基づいている、請求項19に記載の装置。
  23. 前記属性がメモリ要求の宛先アドレスのハッシュに基づいている、請求項19に記載の装置。
  24. 前記スイッチおよび制御回路が、前記メモリ要求の宛先アドレスフィールド内のビットフィールドをモニタし、前記属性を判定する、請求項19に記載の装置。
  25. 前記順序付けされたメモリアクセス要求が、アサートされた強順序付けされた属性を有する、請求項19に記載の装置。
  26. 前記トラッキング回路が、
    受け取られたメモリ要求ごとに増分し、完了することが保証された、受け取られたメモリ要求ごとに減分するように構成されたメモリアクセスカウンタであって、前記メモリアクセスカウンタの初期化された状態とは異なる前記メモリアクセスカウンタのカウント値が、完了することが保証されていない1つまたは複数の保留中のメモリ要求があることを示すメモリアクセスカウンタを備える、請求項19に記載の装置。
  27. アサートされたデバイス属性を有するメモリ要求をメモリ要求の第1のストリームにおいて検出し、1つまたは複数の保留中のメモリ要求をメモリ要求の第2のストリームにおいて検出するように構成されたトラッキング回路と、
    前記トラッキング回路がこれ以上保留中のメモリ要求がないことを示すまで、デバイスメモリ要求をストールするように構成されたストール回路と
    をさらに備える、請求項19に記載の装置。
  28. 前記属性が、メモリ領域が奇数のアドレスのメモリ領域か、偶数のアドレスのメモリ領域かを判定するアドレスビットから判定される、請求項19に記載の装置。
  29. 前記ストールされた順序付けされたメモリアクセス要求が、前記保留中のメモリ要求が所定の順序で完了することが保証されるという通知を受け取った後で処理される、請求項19に記載の装置。
  30. コンピュータ可読プログラムデータおよびコードによって符号化された非一時的コンピュータ可読記憶媒体であって、前記プログラムデータおよびコードは、
    メモリ要求のストリームをメモリ要求の2つ以上のストリームに分割するステップであって、前記メモリ要求は複数のタイプを含む、ステップと、
    強順序付けされたメモリ要求をメモリ要求の前記2つ以上のストリームのうちの1つにおいて識別するステップと、
    メモリ要求の異なるストリームからの先行するメモリ要求が保留中であると判定されると、前記強順序付けされたメモリ要求をストールするステップと
    前記強順序付けされたメモリ要求がストールしている間に、前記異なるストリームと同一のポートを使用する、他のタイプのメモリ要求を処理するステップと
    を含むステップをコンピュータに実行させる、非一時的コンピュータ可読記憶媒体。
  31. 順序付けされたメモリアクセスを必要とするメモリ要求を順序付けする装置であって、前記メモリ要求は複数のタイプを備え、前記装置は、
    メモリ要求の第1のストリームをモニタし、メモリ要求の前記第1のストリームをメモリ要求の第2のストリームおよびメモリ要求の第3のストリームに分割する手段と、
    保留中のメモリ要求を有するメモリ要求の前記第3のストリームとは異なるメモリ要求のストリームである、メモリ要求の前記第2のストリームからの強順序付けされたメモリ要求を検出する手段と、
    前記保留中のメモリ要求が所定の順序で完了することが保証されるまで、前記保留中のメモリ要求に応答して前記強順序付けされたメモリ要求の前記第2のストリームをストールするための手段と
    メモリ要求の前記第2のストリームがストールしている間に、メモリ要求の前記第2のストリームと同一のポートを使用する、他のタイプのメモリ要求を処理するための手段と
    を含む、装置。
  32. メモリアクセスを順序付けする装置であって、
    対応するバスポートと関連付けられた属性にしたがってメモリ要求のストリームを2つ以上の対応するバスポートに送られるメモリ要求の2つ以上のストリームに分割する手段であって、前記メモリ要求は複数のタイプを備える、手段と、
    強順序付けされたメモリ要求をメモリ要求の第1のストリームにおいて検出し、1つまたは複数の保留中のメモリ要求をメモリ要求の第2のストリームにおいて検出する手段と、
    これ以上保留中のメモリ要求がないという表示があるまで、前記強順序付けされたメモリ要求をストールする手段と
    前記強順序付けされたメモリ要求がストールしている間に、メモリ要求の前記第1のストリームと同一のバスポートを使用する、他のタイプのメモリ要求を処理するための手段と
    を含む、装置。
JP2016114191A 2011-12-09 2016-06-08 複数のメモリ領域にわたる強順序付けされたデバイス、および排他的トランザクションの自動順序付け Expired - Fee Related JP6408514B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/315,370 2011-12-09
US13/315,370 US8782356B2 (en) 2011-12-09 2011-12-09 Auto-ordering of strongly ordered, device, and exclusive transactions across multiple memory regions

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2015092810A Division JP5951844B2 (ja) 2011-12-09 2015-04-30 複数のメモリ領域にわたる強順序付けされたデバイス、および排他的トランザクションの自動順序付け

Publications (2)

Publication Number Publication Date
JP2016157490A JP2016157490A (ja) 2016-09-01
JP6408514B2 true JP6408514B2 (ja) 2018-10-17

Family

ID=47472053

Family Applications (3)

Application Number Title Priority Date Filing Date
JP2014546181A Expired - Fee Related JP5745191B2 (ja) 2011-12-09 2012-12-10 複数のメモリ領域にわたる強順序付けされたデバイス、および排他的トランザクションの自動順序付け
JP2015092810A Expired - Fee Related JP5951844B2 (ja) 2011-12-09 2015-04-30 複数のメモリ領域にわたる強順序付けされたデバイス、および排他的トランザクションの自動順序付け
JP2016114191A Expired - Fee Related JP6408514B2 (ja) 2011-12-09 2016-06-08 複数のメモリ領域にわたる強順序付けされたデバイス、および排他的トランザクションの自動順序付け

Family Applications Before (2)

Application Number Title Priority Date Filing Date
JP2014546181A Expired - Fee Related JP5745191B2 (ja) 2011-12-09 2012-12-10 複数のメモリ領域にわたる強順序付けされたデバイス、および排他的トランザクションの自動順序付け
JP2015092810A Expired - Fee Related JP5951844B2 (ja) 2011-12-09 2015-04-30 複数のメモリ領域にわたる強順序付けされたデバイス、および排他的トランザクションの自動順序付け

Country Status (7)

Country Link
US (1) US8782356B2 (ja)
EP (1) EP2788882B1 (ja)
JP (3) JP5745191B2 (ja)
KR (1) KR101445826B1 (ja)
CN (1) CN103975314B (ja)
IN (1) IN2014CN04025A (ja)
WO (1) WO2013086529A1 (ja)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014018912A1 (en) 2012-07-27 2014-01-30 Huawei Technologies Co., Ltd. The handling of barrier commands for computing systems
US9411542B2 (en) * 2014-02-21 2016-08-09 Analog Devices Global Interruptible store exclusive
US9594713B2 (en) 2014-09-12 2017-03-14 Qualcomm Incorporated Bridging strongly ordered write transactions to devices in weakly ordered domains, and related apparatuses, methods, and computer-readable media
CN106886504B (zh) * 2017-04-05 2020-12-04 上海弘矽半导体有限公司 基于ahb总线的多核soc中实现原子操作系统及方法
WO2020068948A1 (en) * 2018-09-28 2020-04-02 Intel Corporation Beam failure recovery and radio link failure association in fifth generation (5g)-new radio (nr)
US11252108B2 (en) 2019-06-19 2022-02-15 Nxp Usa, Inc. Controller for ordering out-of-order transactions in SoC
KR20220036950A (ko) * 2019-07-03 2022-03-23 후아시아 제너럴 프로세서 테크놀러지스 인크. 순수 함수 신경망 가속기 시스템 및 아키텍처
KR102300798B1 (ko) 2019-07-31 2021-09-13 주식회사 태성이엔지 젓갈용 해산물 선별장치
US10860333B1 (en) * 2019-10-14 2020-12-08 Western Digital Technologies, Inc. Interleaved host reset and next re-initialization operations
US11775467B2 (en) 2021-01-14 2023-10-03 Nxp Usa, Inc. System and method for ordering transactions in system-on-chips
KR20240103434A (ko) 2022-12-27 2024-07-04 주식회사 포엠 양식 패류 분리 및 선별장치

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5832304A (en) 1995-03-15 1998-11-03 Unisys Corporation Memory queue with adjustable priority and conflict detection
US6038646A (en) 1998-01-23 2000-03-14 Sun Microsystems, Inc. Method and apparatus for enforcing ordered execution of reads and writes across a memory interface
US6275913B1 (en) 1999-10-15 2001-08-14 Micron Technology, Inc. Method for preserving memory request ordering across multiple memory controllers
US6275914B1 (en) 1999-10-15 2001-08-14 Micron Technology, Inc Apparatus for preserving memory request ordering across multiple memory controllers
US6549985B1 (en) 2000-03-30 2003-04-15 I P - First, Llc Method and apparatus for resolving additional load misses and page table walks under orthogonal stalls in a single pipeline processor
US6754751B1 (en) 2001-03-30 2004-06-22 Intel Corporation Method and apparatus for handling ordered transactions
US6801976B2 (en) * 2001-08-27 2004-10-05 Intel Corporation Mechanism for preserving producer-consumer ordering across an unordered interface
AU2003900733A0 (en) * 2003-02-19 2003-03-06 Canon Kabushiki Kaisha Dynamic Reordering of Memory Requests
US20050289306A1 (en) 2004-06-28 2005-12-29 Sridhar Muthrasanallur Memory read requests passing memory writes
US9026744B2 (en) * 2005-03-23 2015-05-05 Qualcomm Incorporated Enforcing strongly-ordered requests in a weakly-ordered processing
US7500045B2 (en) 2005-03-23 2009-03-03 Qualcomm Incorporated Minimizing memory barriers when enforcing strongly-ordered requests in a weakly-ordered processing system
US9292436B2 (en) * 2007-06-25 2016-03-22 Sonics, Inc. Various methods and apparatus to support transactions whose data address sequence within that transaction crosses an interleaved channel address boundary
JP2010170609A (ja) * 2009-01-22 2010-08-05 Toshiba Corp 不揮発性半導体記憶装置
US8352682B2 (en) * 2009-05-26 2013-01-08 Qualcomm Incorporated Methods and apparatus for issuing memory barrier commands in a weakly ordered storage system
JP2010287058A (ja) * 2009-06-11 2010-12-24 Canon Inc メモリシステム

Also Published As

Publication number Publication date
JP5951844B2 (ja) 2016-07-13
EP2788882A1 (en) 2014-10-15
CN103975314A (zh) 2014-08-06
CN103975314B (zh) 2015-09-16
IN2014CN04025A (ja) 2015-07-10
JP2016157490A (ja) 2016-09-01
US8782356B2 (en) 2014-07-15
JP2015500536A (ja) 2015-01-05
WO2013086529A1 (en) 2013-06-13
US20130151799A1 (en) 2013-06-13
KR20140102732A (ko) 2014-08-22
EP2788882B1 (en) 2016-04-13
JP5745191B2 (ja) 2015-07-08
KR101445826B1 (ko) 2014-09-29
JP2015158943A (ja) 2015-09-03

Similar Documents

Publication Publication Date Title
JP6408514B2 (ja) 複数のメモリ領域にわたる強順序付けされたデバイス、および排他的トランザクションの自動順序付け
US9021228B2 (en) Managing out-of-order memory command execution from multiple queues while maintaining data coherency
US10282132B2 (en) Methods and systems for processing PRP/SGL entries
US7917676B2 (en) Efficient execution of memory barrier bus commands with order constrained memory accesses
KR101744126B1 (ko) 비대칭적 프로세서 코어 간의 협력적 실행을 위한 기법
US10078470B2 (en) Signal transfer device that maintains order of a read request and write request in posted write memory access
EP2435919B1 (en) Methods and apparatus for issuing memory barrier commands in a weakly ordered storage system
US8645618B2 (en) Flexible flash commands
US20180059987A1 (en) Method for reducing read buffer size requirements in nvme based solid state drives
US10268416B2 (en) Method and systems of controlling memory-to-memory copy operations
US20140281147A1 (en) Memory system
US10346328B2 (en) Method and apparatus for indicating interrupts
US20150212759A1 (en) Storage device with multiple processing units and data processing method
US7240144B2 (en) Arbitration of data transfer requests
US10185684B2 (en) System interconnect and operating method of system interconnect
US20140136796A1 (en) Arithmetic processing device and method for controlling the same

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160608

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170224

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170327

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170626

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20171204

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180302

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20180827

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180920

R150 Certificate of patent or registration of utility model

Ref document number: 6408514

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees