(57)【要約】  弱く順序づけされた処理システムは、強く順序づけされたデータ転送バストランザクションを強行するために、実行同期バストランザクションまたは「メモリバリア」バストランザクションを実行する。広域的可観測性を保証するスレーブデバイスは、メモリバリア・プロトコルから「オプトアウト」することができる。様々な実施形態において、前記オプトアウトの決定は、信号をアサートする各スレーブデバイスによって動的になされてもよく、スレーブデバイスに対するポーリングおよび広域的可観測性レジスタ中の対応ビットの設定によってPOST(Power-On Self Test)の間にシステムワイドに設定されてもよく、またはシステム設計者によってハードウェアに組み込まれてもよく、いずれにせよ、そのようにすることによって、アウト・オブ・オーダーのデータ転送操作を実行することができるスレーブデバイスのみがメモリバリア・プロトコルに参加する。【選択図】図１
2010501962.tif 000002
【特許請求の範囲】
【請求項１】
弱く順序づけされた処理システムであって、
複数のスレーブデバイスと
１つまたは複数のスレーブデバイスにデータ転送バストランザクションを向けるように構成された少なくとも1つのマスターデバイスと、
マスターデバイスとスレーブデバイスの間のデータ転送バストランザクションを実行するように構成されたバス相互接続であって、マスターデバイスからの実行同期バストランザクション要求に応答して、広域的に可観測でない１つまたは複数のスレーブデバイスに実行同期バストランザクションを向けるようにさらに構成されたバス相互接続と
を具備するシステム。
【請求項２】
前記バス相互接続は、複数のビットを具備する論理的な広域的可観測性レジスタを含み、その各ビットは、１つのスレーブデバイスに対応しおよび前記スレーブデバイスが広域的可観測性を維持しているかどうかを示す、請求項1に記載のシステム。
【請求項３】
前記広域的可観測性レジスタは、システムの初期化の際にシステムソフトウェアによって設定さる1つまたは複数の物理レジスタを具備する、請求項2に記載のシステム。
【請求項４】
前記システムソフトウェアは、スレーブデバイスの広域的可観測性を確認するためにスレーブデバイスの構成レジスタに対してポーリングを行う、請求項3に記載のシステム。
【請求項５】
前記論理的な広域的可観測性レジスタの１つまたは複数のビットは、ハードウェアに組み込まれている、請求項2に記載のシステム。
【請求項６】
前記論理的な広域的可観測性レジスタの１つまたは複数のビットは、スレーブデバイスからの動的バイナリ信号を具備する、請求項2に記載のシステム。
【請求項７】
データ転送操作を実行する前に前記データ転送操作をスレーブデバイスがバッファし、および前記スレーブデバイスは、そのバッファが空であるとき、前記論理的な広域的可観測性レジスタへの動的バイナリ信号によって前記スレーブデバイスが広域的に可観測であることを示す、請求項6に記載のシステム。
【請求項８】
前記マスターデバイスからのデータ転送バストランザクションは、前記データ転送バストランザクションが強く順序づけされているかどうかを示す属性を含む、請求項1に記載のシステム。
【請求項９】
前記実行同期バストランザクションを受信するスレーブデバイスの各々は、少なくとも、前記強く順序づけされたデータ転送バストランザクションを発する前記マスターデバイスからの、以前に受信されたデータ転送操作をすべて実行する、請求項1に記載のシステム。
【請求項１０】
前記強く順序づけされたデータ転送バストランザクションが向けられる前記スレーブデバイスは、前記強く順序づけされたデータ転送バストランザクションを実行する前に、少なくとも、前記強く順序づけされたデータ転送バストランザクションを発する前記マスターデバイスからの、以前に受信されたデータ転送操作をすべて実行したかのようにマスターデバイスに見える、請求項1に記載のシステム。
【請求項１１】
前記バス相互接続は、前記強く順序づけされたデータ転送バストランザクション要求を発する前記マスターデバイスがデータ転送バストランザクションを向ける可能性のある非広域的可観測のスレーブデバイスにのみ前記実行同期バストランザクションを向ける、請求項１に記載のシステム。
【請求項１２】
前記バス相互接続は、強く順序づけされたデータ転送バストランザクション要求に応答して、広域的に可観測でない１つまたは複数のスレーブデバイスに実行同期バストランザクションを向けるようにさらに構成されている、請求項１に記載のシステム。
【請求項１３】
弱く順序づけされた処理システムにおいて１つまたは複数のマスターデバイスから２つ以上のスレーブデバイスにデータ転送バストランザクションを向けるように動作するバス相互接続であって、
データ転送バストランザクション要求の待ち行列を作るように動作するバスレジスタと、
前記バスレジスタからのデータ転送バストランザクションの前記発令を制御するように動作するコントローラであって、マスターデバイスからの実行同期バストランザクション要求に応答して、広域的に可観測でない１つまたは複数のスレーブデバイスに実行同期バストランザクションを発するようにさらに動作するコントローラと
を具備するバス相互接続。
【請求項１４】
前記コントローラは、どのスレーブデバイスが広域的に可観測であるかを示す論理的な広域的可観測性レジスタを含む、請求項13に記載のバス相互接続。
【請求項１５】
前記論理的な広域的可観測性レジスタは、システムソフトウェアによって設定される物理レジスタを具備する、請求項14に記載のバス相互接続。
【請求項１６】
前記システムソフトウェアは、前記広域的可観測性レジスタを設定する前に、スレーブデバイスの広域的可観測性を確認するためにスレーブデバイス中の状態レジスタに対してポーリングを行う、請求項15に記載のバス相互接続。
【請求項１７】
前記論理的な広域的可観測性レジスタの1つまたは複数のビットは、システム設計者によってハードウェアに組み込まれている、請求項14に記載のバス相互接続。
【請求項１８】
前記論理的な広域的可観測性レジスタの1つまたは複数のビットは、スレーブデバイスからの動的バイナリ信号を具備する、請求項14に記載のバス相互接続。
【請求項１９】
スレーブデバイスは、データ転送操作を実行する前に前記データ転送操作をバッファするように動作し、前記スレーブデバイスは、前記バッファが空であるとき動的バイナリ信号によって広域的可観測性を示す、請求項18に記載のバス相互接続。
【請求項２０】
前記コントローラに論理的に接続される復号器であって、どのスレーブデバイスに実行待ちのデー手転送バストランザクションが向けられるかを確認するよう動作し、強く順序づけされたデータ転送バストランザクションを検出するようにさらに動作する復号器をさらに具備する、請求項12に記載の相互接続。
【請求項２１】
前記バスレジスタからのデータ転送バストランザクションを受信するバススイッチであって、前記復号器の前記制御のもとでスレーブデバイスに前記データ転送バストランザクションを向けるように動作するバススイッチをさらに具備する、請求項14に記載のバス相互接続。
【請求項２２】
前記コントローラは、強く順序づけされたデータ転送バストランザクション要求に応答して、広域的に可観測でない１つまたは複数のスレーブデバイスに実行同期バストランザクションを発するようにさらに動作する、請求項13に記載のバス相互接続。
【請求項２３】
1つまたは複数のマスターデバイスおよび2つ以上のスレーブデバイスを含む弱く順序づけされた処理システムにおいて強く順序づけされたデータ転送バストランザクションを実行する方法であって、
前記スレーブデバイスのうちのどれが広域的に可観測であるかの表示を維持することと、
マスターデバイスからの実行同期バストランザクション要求に応答して、広域的に可観測でない１つまたは複数のスレーブデバイスに実行同期バストランザクションを発することと
を具備する方法。
【請求項２４】
マスターデバイスから受信された各データ転送バストランザクション要求の属性を復号することによって、強く順序づけされたデータ転送バストランザクションを検出することをさらに具備する、請求項2に記載3の方法。
【請求項２５】
前記実行同期バストランザクションは、強く順序づけされたデータ転送バストランザクション要求を発する前記マスターデバイスがデータ転送バストランザクションを向けるル可能性がある非広域的可観測のスレーブデバイスにのみ発される、請求項23に記載の方法。
【請求項２６】
前記スレーブデバイスのうちのどれが広域的に可観測であるかの表示を維持することは、論理的な広域的可観測性状態レジスタであって、それの1ビットが各スレーブデバイスに対応する状態レジスタを維持することを具備する、請求項23に記載の方法。
【請求項２７】
各スレーブデバイスの広域的可観測性を確認するために初期化の間にスレーブデバイスの状態レジスタに対するポーリングを行うことと、
物理的な広域的可観測性状態レジスタを設定することと
をさらに具備する、請求項26に記載の方法。
【請求項２８】
前記スレーブデバイスのうちのどれが広域的に可観測であるかの表示を維持することは、前記スレーブデバイスの広域的可観測性を示す１つまたは複数のスレーブデバイスからの動的バイナリ信号を受信することを具備する、請求項26に記載の方法。
【請求項２９】
実行同期バストランザクションを受信するスレーブデバイスの各々について、少なくとも、前記強く順序づけされたデータ転送バストランザクション要求を発する前記マスターデバイスからの、実行待ちのデータ転送操作をすべて実行することをさらに具備する、請求項23に記載の方法。
【請求項３０】
前記強く順序づけされたデータ転送バストランザクションを受信する前記スレーブデバイスについて、前記強く順序づけされたデータ転送バストランザクションを実行する前に、少なくとも、前記強く順序づけされたデータ転送バストランザクション要求を発する前記マスターデバイスからの、実行待ちのデータ転送操作をすべて実行することをさらに具備する、請求項23に記載の方法
【請求項３１】
強く順序づけされたデータ転送バストランザクション要求を受信すること
をさらに具備する、請求項23に記載の方法。
【発明の詳細な説明】
【背景技術】
【０００１】
本発明は、一般にコンピュータ分野に関係し、特にメモリバリアバス操作を条件付きで伝搬するための方法および装置に関係する。
【０００２】
コンピュータおよびその他の電子システムおよびデバイスは、様々なアプリケーションにおいて計算タスクを実行する。これらのシステムおよびデバイスは、プロセッサ、数学的コプロセッサ、ビデオおよびグラフィックエンジン、DMAコントローラ、GPS受信機、圧縮または暗号化専用回路等のような様々な独立した機能固有型の回路またはモジュールをしばしば一体化することによって単なる計算の域を超えた機能性をますます統合しているところである。そのようなデバイスとメモリの間およびデバイス相互の間の高帯域データ転送は、所望のレベルのパフォーマンスを達成する上で決定的に重要である。データ通信バスは、処理システムにおけるデバイスまたはモジュール間の共有通信リンクを提供する周知の構造である。
【０００３】
共有バスについての一般的な論理的二分法は、「マスター」および「スレーブ」デバイスを含んでいる。マスターデバイスは、バストランザクションを開始し、バスへのアクセスのために、およびあるシステムにおいてはバス帯域幅の共有のために、マスターデバイス相互の間の仲裁を一般に行う。スレーブデバイスは、書き込みバストランザクションに応答してマスターデバイスからデータを受信し、読み出しバストランザクションに応答してマスターデバイスにデータを供給することにより、マスターデバイスによって開始されるデータ転送バストランザクションに応答する。ほとんどのスレーブデバイスは、共有バス上で対応するバストランザクションが生起する順にデータ転送操作を実行する。
【０００４】
多くの場合、例えばメモリアクセスのようなデータ転送操作がアウト・オブ・オーダーで実行されること（順序無視の実行）を可能にすることによって、システムのパフォーマンスを最適化することができる。例えば、新しいページが開かれる前にメモリ内の同じページに対するすべての操作が実行されることを可能にするようにメモリ操作のシーケンスの順序を並び替えることができる。メモリ操作の並び替えが許される処理システムを、一般に「弱く順序づけされた」処理システムという。
【０００５】
反対に、メモリ操作が対応するバストランザクションと同じ順に実行されるように見えることを要求する処理システムを「強く順序づけされた」処理システムという。あたかもメモリ操作が順序正しく実行されたかのようにメモリ状態がいつでもプロセッサに見えるかぎり、スレーブデバイスは、強く順序づけされたシステムにおいても、実際にはバストランザクションの順序を無視してメモリ操作を実行してもよいことに注意せよ。この特徴は、「広域的可観測性」（global observability）として知られている。つねに受け取った順序にデータ転送操作を実行する単純なスレーブデバイスは、本質的に広域的に可観測である。データ転送操作をアウト・オブ・オーダーで実行できる他のスレーブデバイスは、データ転送操作のアドレスを「スヌープ」し、バストランザクションの順序で同じアドレスに対してデータ転送操作を実行する。このタイプのスレーブデバイスも、広域的に可観測である。バストランザクションの順序を無視してデータ転送操作を実行するスレーブデバイスは、広域的に可観測であるとはいえない。
【０００６】
たとえ弱く順序づけされた処理システムにおいてであっても、確実に正しい操作を行うようにデータ転送操作が強行されなくてはならない場合もある。例えば、あるアプリケーションは、メモリからデータを読み出す前にそのメモリ位置にデータを書き込むことをプロセッサに要求するかもしれない。この操作を並び替えたのでは、読み出し操作において正しくない結果が返される事態に帰着するだろう。
【０００７】
弱く順序づけされた処理システムにおいてデータ転送操作を順序正しく実行するために、様々な従来技術が用いられてきた。1つの技術は、特定のデータ転送バストランザクションをその前のデータ転送操作がすべて実行されるまで単純に遅らせることである。上記の例では、プロセッサは、書き込み操作データがメモリ位置に書き込まれたことを確認する表示をプロセッサが受信するまで、読み出し要求の発令を遅らせることができる。しかし、データ転送操作順序を強行するためにプログラム実行を止めることは、明らかにパフォーマンスに負の影響をもたらすことになる。
【０００８】
弱く順序づけされた処理システムにおいてデータ転送操作を順序正しく実行するための他の技術は、バスプロトコルの一部として、実行同期バストランザクションを定義することである。これは「メモリバリア」としても知られている。メモリバリアは、当該メモリバリアを発する前にマスターデバイスによって発されたすべてのデータ転送バストランザクションが、当該メモリバリアを発した後にマスターデバイスによって発されたどのデータ転送バストランザクションより前に実行される、または実行されたかのように見えることを保証するバストランザクションである。メモリバリアはすべて、マスターデバイスとスレーブデバイスの間のデータ転送をなんら必要としないバストランザクションである。メモリバリア操作は、マスターデバイスによって明示的に開始されることができる。代替的または追加的に、メモリバリア操作は、マスターデバイスによって開始された強く順序づけされたデータ転送操作に応答してバスコントローラによって生成されてもよい。上記の例において、読み出しバストランザクションを発する前に、プロセッサがメモリバリアトランザクションを発することがある。この場合、メモリバリアは、読み出し操作が実行される前に、書き込み操作(メモリバリア以前に発されたその他のあらゆるデータ転送操作はもちろんのこと)が実行されることを保証するだろう。メモリバリアは、本件出願の譲受人に譲渡され、参照によって全体として本件明細書に取り込まれている2005年10月19日づけの「弱く順序づけされた処理システムにおける強く順序づけされた要求の実行」というタイトルの同時係属中の米国特許出願11/253,307号において説明されている。 
メモリバリアは、複数のスレーブデバイスを備えた処理システムにおいては非能率的であるかもしれない。そのようなシステムでは、順序制約を強行するために、強く順序づけされたデータ転送バストランザクション、またはメモリバリア操作を発するマスターデバイスによってアクセスされる可能性のあるすべてのスレーブデバイスにメモリバリアトランザクションが伝搬されなければならない。強く順序づけされたデータ転送バストランザクション、またはメモリバリア操作後のバストランザクションが発される前に、各々のスレーブデバイスからメモリバリア肯定応答（acknowledgment）が受信されなければならない。したがって、メモリバリアによって生じる遅延は、最も回答の遅いスレーブデバイスによって決まる。これは、パフォーマンスに悪い影響を及ぼす可能性がある。特に、比較的遅いスレーブデバイスがメモリバリアに関係なくバストランザクションの順にデータ転送操作を実行する場合、そうである。
【０００９】
本願の譲渡人に譲渡され、参照によって全体として本件明細書に取り込まれている、2005年10月20日づけの「弱く順序づけされた処理システムにおいて強く順序づけされた要求を実行するときのメモリバリアの最小化」というタイトルの同時係属中の米国特許出願11/254,939号は、メモリバリアを動的に最小化するシステムおよび方法を開示している。各スレーブデバイスに関連づけられる状態レジスタは、そのスレーブデバイスがデータ転送バストランザクションを受信する各マスターデバイスからの実行待ち（未実行）のデータ転送操作を現在持っているかどうかをマスターデバイスごとに示す。もし特定のスレーブデバイスが特定のマスターデバイスからのデータ転送操作であって実行待ちのものを持っていないことを示すのであれば、当該スレーブデバイスに当該マスターデバイスからメモリバリアを伝搬する必要はない。このようにして、メモリバリアは、バストランザクション順序を強行する必要があるところにのみ伝搬されることになる。すなわち、メモリバリアは、強く順序づけされたデータ転送バストランザクション、またはメモリバリア操作を要求するマスターデバイスからの実行待ちの(メモリバリア以前に発された)データ転送操作を持っているスレーブデバイスのみに向けられる。
【００１０】
ほとんどの従来型システムは、広域的可観測性を本質的に提供するスレーブデバイスを少なくともいくつか含んでいる。そのようなスレーブデバイスについては、スレーブデバイスにメモリバリアトランザクションを向けるべきかどうかを決定するために、スレーブデバイスが特定のマスターデバイスからの実行待ちのデータ転送操作を持っているかどうかを動的に監視する必要はない。
【発明の概要】
【００１１】
本件明細書において開示される１つまたは複数の実施形態にしたがって、広域的可観測性を保証するスレーブデバイスは、メモリバリア・プロトコルからオプトアウトすることができる。様々な実施形態において、オプトアウト決定は、信号をアサートする各スレーブデバイスによって動的になされてもよく、スレーブデバイスの広域的可観測性を確認するためにスレーブデバイス中の状態レジスタをポーリングすることによってPOST（Power-On Self Test)中にシステムワイドに設定されてもよく、ソフトウェアによって設定されてもよく、またはシステム設計者によってハードウェアに組み込まれてもよく、いずれにせよ、その結果、アウト・オブ・オーダーのデータ転送操作を実行するスレーブデバイスのみがメモリバリア・プロトコルに参加することになる。このオプトアウト決定は、メモリバリア操作を必要とするスレーブデバイスのみにメモリバリア操作を伝搬することによってシステムのパフォーマンスを改善し、電力消費を低減し、もって広域的可観測なスレーブデバイスからのメモリバリア肯定応答に関連する遅延を取り除くことができる。
【００１２】
1つの実施形態は、弱く順序づけされた処理システムに関係する。本システムは、複数のスレーブデバイスおよび2つ以上のマスターデバイスを含み、各々は、１つまたは複数のスレーブデバイスにデータ転送バストランザクションを向けるように構成されている。本システムは、さらにバス相互接続（bus interconnect）を含んでおり、このバス相互接続は、マスターデバイスとスレーブデバイスの間のデータ転送バストランザクションを実行するように構成され、さらにバス相互接続は、マスターデバイスからの強く順序づけされたデータ転送バストランザクション要求に応答して、１つまたは複数の広域的可観測なスレーブデバイスに実行同期バストランザクションを向けるように構成されている。
【００１３】
他の実施形態は、弱く順序づけされた処理システムにおいて、データ転送バストランザクションを１つまたは複数のマスターデバイスから２つ以上のスレーブデバイスに向けるように動作するバス相互接続に関係する。このバス相互接続は、データ転送バストランザクション要求の待ち行列を作るように動作するバスレジスタと、バスレジスタからのデータ転送バストランザクションの発令を制御するように動作し、かつマスターデバイスからの強く順序づけされたデータ転送バストランザクション要求に応答して、広域的に可観測でない１つまたは複数のスレーブデバイスに実行同期バストランザクションを発するようにさらに動作するコントローラとを含んでいる。
【００１４】
さらに他の実施形態は、1つまたは複数のマスターデバイスおよび2つ以上のスレーブデバイスを含む弱く順序づけされた処理システムにおいて、強く順序づけされたデータ転送バストランザクションを実行する方法に関係する。どのスレーブデバイスが広域的に可観測であるかを示す表示（indication）が維持される。マスターデバイスからの強く順序づけされたデータ転送バストランザクション要求に応答して、広域的に可観測でない１つまたは複数のスレーブデバイスに対し実行同期バストランザクションが発される。
【図面の簡単な説明】
【００１５】
【図１】図1は、弱く順序づけされた処理システムの機能ブロック図である。
【図２】図2は、弱く順序づけされた処理システムにおけるバス相互接続の機能ブロック図である。
【図３】図3は、弱く順序づけされた処理システムのためのバス相互接続におけるコントローラの1つの実施形態の機能ブロック図である。
【図４】図4は、弱く順序づけされた処理システムのためのバス相互接続におけるコントローラの他の実施形態の機能ブロック図である。
【発明の詳細な説明】
【００１６】
添付されている図面とともに以下に記される発明の詳細な説明は、本発明の様々な実施形態の説明として意図されたものであって、発明が実行されうるただ１つの実施形態を表わすことを意図したものではない。特に説明の目的上、２つ以上のメモリコントローラに対してメモリアクセス要求を発する1つまたは複数のプロセッサと、１つのバス相互接続とを具備する処理システムについて、実施形態が説明される。しかしながら、本発明は、共有バスシステムにおけるスレーブデバイスにデータ転送バストランザクションを発する任意のマスターデバイスに適用可能であって、プロセッサおよびメモリコントローラに制限されるものではない。
【００１７】
図1は、弱く順序づけされた処理システムの機能ブロック図である。処理システム100は、携帯用電子デバイス、ソフトウェア組み込みシステム、分散システム等を含むコンピュータまたは他の計算システムの中に配置されてもよい。処理システム100は、集積回路、ディスクリート素子またはそれらの任意の組み合わせとして実装されてもよい。処理システム100のうち本件開示の実施形態の説明に必要な部分のみが図1に描かれている。当業者は、各々の特定のアプリケーションのために本処理システム100をどう実装するのがベストであるかよくわかるであろう。
【００１８】
図１に描かれているような処理システム100は、共有バス106上のメモリデバイス104a-104cと通信するプロセッサ102a-102cを含んでいる。任意の特定のアプリケーションに必要なプロセッサおよびメモリデバイスの実際の数は、必要とされる計算電力および全体的設計制約に依存して変化してもかまわない。ポイント・ツー・ポイントの交換接続を使用するプロセッサ102a-102cとメモリデバイス104a-104cの間のバストランザクションを管理するためにバス相互接続108が使用されてもよい。バス相互接続108の少なくとも1つの実施形態において、2つ以上のバストランザクションが同時に生起することを可能にするために、複数の直接リンクが提供されてもよい。
【００１９】
１つまたは複数のプロセッサ102a-102cは、オペレーティングシステムまたは他のソフトウェアの管理の下で命令を実行するように構成されてもよい。その命令は、メモリデバイス104a-104cの1つまたは複数の中に存在してもよい。メモリデバイス104a-104cの中には、データも記憶されてもよく、ある命令を実行するためにそのデータがプロセッサ102a-102cによって検索されてもよい。これらの命令の実行によって生じる新しいデータは、メモリデバイス104a-104cに書き戻されることができる。メモリデバイス104a-104cの各々は、本件技術分野において知られているように、メモリコントローラ(図示されていない)および記憶媒体(図示されていない)を含んでもよい。
【００２０】
プロセッサ102a-102cの各々は、バス相互接続108との通信のためにバス106上に専用チャンネル106a-106cを備えてもよい。同様に、バス相互接続108は、メモリデバイス104a-104cの各々との通信のためにバス上の専用チャンネル106d-106fを使用してもよい。一例として、第1のプロセッサ102aは、バス106上のその専用チャンネル106a上でデータ転送バストランザクション要求を送信することによって、ターゲットメモリデバイス104bにアクセスすることができる。バス相互接続108は、データ転送バストランザクション要求のアドレスからターゲットメモリデバイス104bを決定し、およびバス106上の適切なチャネル106e上でターゲットメモリデバイス104bにデータ転送バストランザクションを発する。データ転送バストランザクションは、書き込みトランザクション、読み出しトランザクションまたはデータ転送と関係する他の任意のバストランザクションであってもよい。開始プロセッサ102a-102cは、ペイロードを備えた適切なアドレスをバス106の上に置き、書き込みイネーブル信号をアサートすることによって、ターゲットメモリデバイス104a-104cに書き込みトランザクションを発することができる。開始プロセッサ102a-102cは、適切なアドレスをバス106の上に置き、読み出しイネーブル信号をアサートすることによって、ターゲットメモリデバイス104a-104cに読み出しトランザクションを発することができる。読み出し要求に応答して、ターゲットメモリデバイス104a-104cは、開始プロセッサ102a-102cにペイロードを送り戻すであろう。開始プロセッサ102a-102cはまた、メモリバリアトランザクションのような、データ転送バストランザクションでないバストランザクションを発することもできる。
【００２１】
処理システム100の少なくとも1つの実施形態において、プロセッサ102a-102cは、各メモリアクセス要求とともに属性を送信することができる。属性は、データ転送バストランザクションの性質を説明する任意のパラメータであってもよい。属性は、アドレスチャネル上でアドレスとともに送信されてもよい。代替的に、属性は、側波帯シグナリングまたは他のなんらかの方法を使用して送信されてもよい。
【００２２】
属性は、データ転送バストランザクション要求が強く順序づけされているか否かを示すために使用されてもよい。「強く順序づけされた」要求とは、アウト・オブ・オーダーで実行することができないデータ転送バストランザクション要求をいう。
【００２３】
バス相互接続108は、プロセッサ102a-102cからの各データ転送バストランザクション要求の属性を監視することができる。属性が強く順序づけされたデータ転送バストランザクションの要求を示す場合、バス相互接続108は、当該強く順序づけされたデータ転送バストランザクションが向けられるスレーブデバイスを除き、マスターデバイスからのバストランザクションを受信しかつデータ転送バストランザクションのアウト・オブ・オーダー実行が可能なあらゆるスレーブデバイスへの当該トランザクションに順序制約を守らせることができる。一例として、第1のプロセッサ102aからターゲットメモリデバイス104aへのデータ転送バストランザクション要求が属性を含むとする。バス相互接続108は、トランザクションが強く順序づけされているかを属性から決定することができる。バス相互接続108は、トランザクションが強く順序づけされていると決定した場合、第1のプロセッサ102aがアクセス可能でかつアウト・オブ・オーダーでデータ転送バストランザクションが実行可能なあらゆるメモリデバイス104bおよび104c（ただし、ターゲットメモリデバイス104aを除く）にメモリバリアを送信する。バス相互接続108は、当該強く順序づけされたデータ転送バストランザクションをメモリバリアのないターゲットメモリデバイス104aにも送信する。なぜなら、ターゲットメモリデバイス104aは、データ転送バストランザクションに関連する属性のために、当該トランザクションを強く順序づけされた要求として黙示的に取り扱うからである。代替的に、プロセッサ102aは、強く順序づけされたデータ転送バストランザクションを発する前に、メモリバリアバストランザクションを発してもよい。
【００２４】
図2は、弱く順序づけされた処理システムにおけるバス相互接続108の一例を示す機能ブロック図である。バス相互接続が実際に実装される方法は、設計上の考慮に依存する。当業者は、様々な設計の交換可能性、および各特定のアプリケーションのために本件明細書において説明される機能性を実装する最良の方法を認識するであろう。
【００２５】
図2を参照し、バスレジスタ202は、バス106からの情報の受信および記憶のために使用されてもよい。バスレジスタ202は、FIFO(First-In-First-Out)メモリのような任意のタイプの記憶デバイス、または他の適切な記憶デバイスであってもよい。バスレジスタ202によって受信および記憶される情報は、任意のバス関連情報であってもよいが、より詳細には、当該情報は、各データ転送バストランザクション要求についてのアドレスおよび属性、ならびに書き込み操作の場合ペイロードを含んでもよい。バスレジスタ202はまた、マスターデバイスによって発されるメモリバリア操作のような非データ転送バストランザクションの場合、属性を記憶することができる。各データ転送バストランザクション要求についてのアドレスは、復号器204にも提供される。復号器204は、バスレジスタ202中の各データ転送バストランザクション要求についてターゲットメモリデバイスを決定するために使用されることができる。この決定は、バススイッチ206を制御するために使用される。バススイッチ206は、バスレジスタ202からターゲットメモリデバイスのためのバス106の適切なチャネルへの各データ転送バストランザクションを多重化解除するために使用される。コントローラ208は、バスレジスタ202からリリースされるデータ転送バストランザクションのタイミングを制御するために使用されることができる。
【００２６】
図3は、弱く順序づけされた処理システムのためのバス相互接続108におけるコントローラ208の1つの実施形態の機能ブロック図である。コントローラ208は、復号器204から受信する情報に基づいて、メモリ操作に順序制約を守らせる。前記情報は、各バストランザクションについての属性を含んでもよい。それは、第1の入力レジスタ302に記憶されてもよい。前記情報はまた、開始プロセッサがアクセスすることができる、ターゲットメモリデバイス以外の、各メモリデバイスを識別するデータを含んでもよい。各プロセッサによってアクセス可能な特定のメモリデバイスは、設計段階において事前に構成され、したがって、復号器204にプログラムされるかまたはハードウェア的に組み込まれることができる。いずれの場合であれ、この情報を記憶するために、第2の入力レジスタ304を使用することができる。第1および第2の入力レジスタ302、304は、図3に示されるような別々のレジスタでもよく、または代替的に単一のレジスタであってもよい。コントローラ208のいくつかの実施形態において、復号器204からの情報は、他のバス相互接続機能と共有されるレジスタに記憶されることができる。各レジスタは、FIFOまたは他の適切な記憶媒体であってもよい。
【００２７】
コントローラ208は、バスレジスタ202からリリースされたデータ転送バストランザクションのタイミングを制御することによって、データ転送操作に順序制約を守らせる。本プロセスは、強く順序づけされたメモリデータ転送バストランザクションがバスレジスタ202からリリースされる準備ができていることを示す属性に関連してまず説明される。この場合、その属性は、第1の入力レジスタ302からメモリバリア生成器306にイネーブル信号として提供される。同時に、第2の入力レジスタ304に記憶されているデータがメモリバリア生成器306の入力に提供される。上に示されたように、第2の入力レジスタ304に記憶されているデータは、開始プロセッサがアクセスすることができる、ターゲットメモリデバイス以外の、各メモリデバイスを識別するデータを含んでいる。メモリバリア生成器306が属性によってイネーブルにされるとき、この情報は前記データによって識別される各メモリデバイスのメモリバリアを生成するために使用される。各メモリバリアは、強く順序づけされた要求を開始した開始プロセッサを識別する属性を備えた、識別されたメモリデバイスに向けられるメモリバリアトランザクションを発することによって、適切なメモリデバイスに提供されてもよい。代替的に、メモリバリアは、側波帯シグナリングまたは他の適切な手段を使用して適切なメモリデバイスに提供されてもよい。メモリバリア生成器306はまた、上記の方法と類似の方法で、バスレジスタ202にも記憶されている、マスターデバイスからのメモリバリアバストランザクション要求に応答して、メモリバリアバストランザクションを生成することができる。
【００２８】
１つまたは複数の実施形態にしたがって、メモリバリア生成器306は、不必要なメモリバリアを抑えるために使用されることができる。例えば、もしメモリデバイスが本質的に広域的に可観測であれば、開始プロセッサによってアクセス可能なメモリデバイスのためのメモリバリアは、余分なものであって、抑えられてもよい。広域的に可観測なスレーブデバイスは、多くの方法で識別されることができる。
【００２９】
コントローラ208の1つの実施形態においては、論理的な広域的可観測性レジスタ307は、システム内のすべてのスレーブデバイスについての１ビットを含んでいる。広域的可観測性レジスタビットの状態は、関連するスレーブデバイスが広域的に可観測であるか、したがってメモリバリアトランザクションから免除されてもよいかを示す。広域的可観測性レジスタ307は、メモリバリア生成器306への入力である。広域的可観測性レジスタ307は、それぞれのスレーブデバイス内の配位状態レジスタ(CSR)を読むことによってバストランザクションの広域的可観測性に関する動作および能力を確認するための、スレーブデバイスに対するポーリングに続くPOSTの間にシステムソフトウェアによって設定される物理レジスタを備えてもよい。
【００３０】
ASICまたはSOC(System On Chip)環境上特に有利なものである可能性のある1つの実施形態において、論理的な広域的可観測性レジスタ307の１つまたは複数のビットは、対応するスレーブデバイスの既知の広域的可観測性を示す所定の状態に設計者によってハードウェア的に設定されてもよい。このことは、POSTソフトウェアの複雑性および実行時間を低減する可能性がある。
【００３１】
他の実施形態では、論理的な広域的可観測性レジスタ307の１つまたは複数のビットは、スレーブデバイスからの動的バイナリ信号を含んでもよい。これは、スレーブデバイスが広域的可観測性の期間を示すことを可能にする。例えば、スレーブデバイスは、データ転送操作をバッファにおいて待ち行列化し、バストランザクションの順序を無視して操作を実行することができる。実行待ちのデータ転送操作がバッファ内にあるとき、もしあるプロセッサが強く順序づけされたデータ転送バストランザクション、またはメモリバリア操作を発すれば、スレーブデバイスは、広域的可観測性の欠如を示し、それゆえメモリバリアバストランザクションがスレーブデバイスに向けられることを要求するであろう。しかしながら、もしバッファが空であれば、スレーブデバイスは、少なくとも次に生じるデータ転送バストランザクションについては広域的可観測性を保証することができる(すなわち、スレーブデバイスは、そのスレーブデバイスに対して以前に発されたすべてのデータ転送操作が実行されたことを保証する)。この場合、スレーブデバイスは、メモリバリアトランザクションを受信する必要がないことを二値信号によって示してよく、またバッファが空である間のみこの表示を維持してもよい。
【００３２】
任意の与えられた実装において、論理的な広域的可観測性レジスタ307は、特定のアプリケーションによって必要とされるまたは望まれるところにしたがって、システムソフトウェア、ハードウェア組み込みビット、またはスレーブデバイスからの動的信号によって設定される１つまたは複数の物理レジスタの任意のミックスを含んでもよい。
【００３３】
図1ないし3を参照し、メモリバリアを抑えるために広域的可観測性レジスタビットが使用されることができる方法を示すための一例が次に提供される。この例において、処理システムは、第1のプロセッサ102aが第1、第2、第3のメモリデバイス104a、104b、104cにアクセスすることができるように構成されることができる。強く順序づけされたデータ転送バストランザクションが第1のプロセッサ102aによって第1のメモリデバイス104aに対して発されるとき（または代替的に第1のプロセッサ102aによって発されたメモリバリア操作がバスレジスタ202の出力にあるとき）、第1の入力レジスタ302からの対応する属性は、メモリバリア生成器306をイネーブルにする。第2の入力レジスタ304からメモリバリア生成器306に提供されるデータは、第1のプロセッサ104aがアクセスすることができる、ターゲットメモリデバイス以外の、メモリデバイスを識別する。この場合、データは、第2および第3のメモリデバイス104b、104cを識別する。メモリバリア生成器306は、第2および第3のメモリデバイス104b、104cのうちのいずれかが広域的に可観測であるかを決定するために、メモリデバイス104b、104cに対応する論理的な広域的可観測性レジスタ中のビット307b、307cをチェックする。この例において、ビット307bは、広域的可観測性を示し、ビット307cは示さない。したがって、メモリバリアバストランザクションは、第3のメモリデバイス104cに対して出され、第2のメモリデバイス104bに対するメモリバリアは抑制される。
【００３４】
図3に戻り、コントローラ208のロジック308は、メモリバリア肯定応答を求めてメモリデバイスからのフィードバックを監視するために使用されることができる。「メモリバリア肯定応答」は、強く順序づけされたデータ転送バストランザクションを必要とするまたはメモリバリア操作を発するプロセッサからのあらゆるデータ転送操作(メモリバリアに先行したもの)が実行されたことを示すメモリデバイスからの信号である。第2の入力レジスタ304からのデータおよび論理的な広域的可観測性レジスタ307のビットは、どのメモリデバイスがメモリバリア肯定応答のために監視されなくてはならないかを決定するためにロジック308によって使用される。すべての必要なメモリバリア肯定応答が受信されたとロジック308が決定すると、ロジック308は、バスレジスタ202からの対応するデータ転送バストランザクション（またはメモリバリア操作がマスターデバイスによって直接発された場合は次の実行待ちのデータ転送バストランザクション）をリリースするために使用されるトリガを生成する。より詳細には、第1の入力レジスタ302からの属性は、マルチプレクサ310のセレクト入力に提供される。マルチプレクサ310は、データ転送バストランザクションが強く順序づけされていることを属性が示すとき、ロジック308によって生成されたトリガをバスレジスタ202に連結するために使用される。バススイッチ206のタイミングを同期化するために、マルチプレクサ310からのリリース信号アウトプットは、復号器にも連結される(図2を参照)。
【００３５】
データ転送バストランザクションがバスレジスタからいったんリリースされると、それはバススイッチ206を通ってターゲットメモリデバイスに中継される(図2を参照)。コントローラ208内の第2のマルチプレクサ312は、強く順序づけされたデータ転送バストランザクションまたはマスターデバイス発のメモリバリア操作がそのセレクト入力に適用されることを属性が示しているとき、ターゲットメモリデバイスからのデータ転送肯定応答が受け取られるまで、第1および第2のレジスタ302、304からのデータのリリースを遅延させるために使用されることができる。上で論じられたように、バストランザクションに含まれる属性は、ターゲットメモリデバイスに順序制約を守らせる。すなわち、ターゲットメモリデバイスは、強く順序づけされたデータ転送操作を実行する前に、開始プロセッサによって発された未決のデータ転送操作をすべて実行する。データ転送肯定応答は、強く順序づけされたデータ転送操作の実行に続いてターゲットメモリデバイスによって生成される。データ転送肯定応答は、コントローラ208のマルチプレクサ312にフィードバックされる。ここで、それは、バスレジスタ202の中の次のデータ転送バストランザクションに対応する第1および第2のレジスタ302、304から新しいデータをリリースするトリガを生成するのに用いられる。前記新しいデータが、バスレジスタ202中の対応するデータ転送バストランザクションが強く順序づけされていることを示す属性を含んでいる、またはマスターデバイス発のメモリバリア操作を備えている場合、同じプロセスが繰り返される。そうでなければ、データ転送バストランザクションは、バスレジスタ202から直ちにリリースされることができる。
【００３６】
要求が強く順序づけされたものではなく、またマスターデバイス発のメモリバリア操作でもないことを第1の入力レジスタ302の中の対応する属性が示すとき、バスレジスタ202から直ちにデータ転送バストランザクションをリリースするように、コントローラ208は構成される。その場合、属性は、メモリバリア生成器306を不能にする。さらに、属性は、データ転送バストランザクションをリリースするために内部生成トリガをバスレジスタ202に連結する状態にマルチプレクサ310を強制する。データ転送バストランザクションは、バスレジスタ202からリリースされ、バススイッチ206を通ってターゲットメモリデバイスに連結される(図2を参照)。その後、次のデータ転送バストランザクションに対応するデータがコントローラ208の中の第2のマルチプレクサ312からの内部生成トリガ出力によって第1および第2のレジスタ302、304からリリースされる。
【００３７】
図4は、弱く順序づけされた処理システムのためのバス相互接続のコントローラの他の実施形態を示す機能ブロック図である。この実施形態において、強く順序づけされたデータ転送バストランザクションは、メモリバリアが適切なメモリデバイスに提供されるのと同時にコントローラ208によってバスレジスタ202からリリースされる。より詳細には、第1の入力レジスタ302は、メモリバリア生成器306へのデータ転送バストランザクションのための属性を提供するために使用される。もし対応するデータ転送バストランザクションが強く順序づけされていることを属性が示せば、メモリバリア生成器306はイネーブルにされる。メモリバリア生成器306がイネーブルにされると、第2の入力レジスタ304からのデータは、ターゲットメモリデバイス以外の、開始プロセッサによってアクセス可能な各メモリデバイスを識別するために使用される。識別された各メモリデバイスについて、メモリバリア生成器306は、論理的な広域的可観測性レジスタ307の対応するビットをチェックする。その後、自分が広域的に可観測であることを（その時に）示さない、ターゲットメモリデバイス以外の、メモリデバイスの各々のために、メモリバリアが生成される。
【００３８】
メモリバリア生成器306がイネーブルにされると、コントローラ208中のロジック314は、強く順序づけされたデータ転送バストランザクションがターゲットメモリデバイスによって実行されるまで、後続のデータ転送バストランザクションがバスレジスタ202からリリースされるのを阻止するために使用されることができる。遅延316は、内部生成トリガが、属性によってゲートオフされる前に、強く順序づけされたデータ転送バストランザクションをバスレジスタ202からリリースすることを可能にするために使用されることができる。このようにして、データ転送バストランザクションは、開始プロセッサによってアクセス可能な残りの非広域的可観測メモリデバイスのためのメモリバリアと同時に、ターゲットメモリデバイスに提供されることができる。
【００３９】
ロジック318は、ターゲットメモリデバイスからのデータ転送肯定応答およびメモリバリア肯定応答のためにメモリデバイスからのフィードバックを監視するために使用されることができる。第2の入力レジスタ304からのデータおよび論理的な広域的可観測性レジスタ307のビットは、どのメモリデバイスがメモリバリア肯定応答のために監視される必要があるかを決定するためにロジック318によって使用される。様々なデータ転送および/またはメモリバリア肯定応答が受け取られたことをロジック318が決定すると、それは、バスレジスタ202における次のデータ転送バストランザクションに対応する第1および第2の入力レジスタ302、304から新しいデータをリリースするためにトリガを生成する。トリガは、第1の入力レジスタ302からの属性によって適切な状態に強制されるマルチプレクサ320を通って連結される。もし新しいデータがバスレジスタ202中の対応するデータ転送バストランザクションが強く順序づけされていることを示す属性を含んでいたら、同じプロセスが繰り返される。そうでなければ、データ転送バストランザクションは、ロジック314を介して内部生成トリガでバスレジスタ202から直ちにリリースされることができる。内部生成トリガはまた、バスレジスタ202中の次のデータ転送バストランザクションのために第1および第2の入力レジスタ302、304からデータをリリースするために、マルチプレクサ320を通って連結されることもできる。
【００４０】
本発明は本件明細書においては共有バスシステムのバス相互接続108内のコントローラ208に関して説明されてきたけれど、当業者は、本件発明はそのような実装に限られるものではないということを容易に認識するだろう。特に、各スレーブデバイスのための広域的可観測性インジケータは、各マスターデバイスによって伝搬されてもよく、またはアクセス可能であってもよい。各マスターデバイスは、メモリバリアバストランザクションが必要かどうか、もし必要であれば、どのスレーブデバイスに向けられるべきであるかを決定することができる。 [0044] 本発明は本件明細書においては特定の特徴、態様およびそれらの実施形態に関して説明されてきたけれど、多数の変形、修正および他の実施形態が本発明の広い範囲の中で可能であることは明白であろう。また、したがって、すべての変形、修正および実施形態は、本発明の範囲の中にあるものとしてみなされるべきである。本件実施形態は、したがって、すべての態様において例示的なものであって制限的なものではないものとして解釈されるべきであって、添付されている請求項の意味および均等の範囲に入るすべての変形は、そこに包含されることを意図するものである。
【図１】
2010501962.tif 000003
【図２】
2010501962.tif 000004
【図３】
2010501962.tif 000005
【図４】
2010501962.tif 000006
【国際調査報告】
2010501962.tif 000007
2010501962.tif 000008