(57)【要約】【解決手段】メモリアクセスを制御するための方法、装置、および、コンピュータプログラムに関する。ＤＭＡユニットは、多くのバスアーキテクチャにおいて一般化している。しかし、複数のＤＭＡユニットについて限られたシステムリソースを管理するのは難しい。生成された複数のコマンドを管理したり、それらの依存性を維持するために、コマンドへのフラグの埋め込みやバリアコマンドを利用する。こういった操作により、依存性を維持するようにコマンドの実行順序を制御できる。【選択図】図１
2007529833.tif 000002
【特許請求の範囲】
【請求項１】
コマンドを発行する機能と
割り当てタグ番号に関連するコマンドにフラグを埋め込む機能と、を備える少なくとも１のプロセッサと、
複数の通信チャネルのうちの少なくとも第１の通信チャネルを介して、前記１のプロセッサにより複数のコマンドを入力される複数の通信ポートと、
前記複数のコマンドのそれぞれに対してタグ番号を割り当て、複数のタグ付きコマンドを生成するタグキューと、
前記複数のタグ付きのコマンドを格納し、それらのコマンドをソート可能なコマンドキューと、
を含むことを特徴とするメモリアクセス制御装置。
【請求項２】
前記コマンドキューから少なくとも１のタグ付きコマンドを、少なくとも第２の通信チャネルに転送する中間論理回路、を更に備えることを特徴とする請求項１に記載のメモリアクセス制御装置。
【請求項３】
少なくとも、メモリと接続されるように形成された複数のデータバッファ、を更に備えることを特徴とする請求項２に記載のメモリアクセス制御装置。
【請求項４】
前記複数のデータバッファは前記第２の通信チャネルに接続されるように形成されたことを特徴とする請求項３に記載のメモリアクセス制御装置。
【請求項５】
前記タグ番号は、タググループとしてタグ番号の集合を形成可能であることを特徴とする請求項１に記載のメモリアクセス制御装置。
【請求項６】
少なくとも１のフラグは、第１のフラグと第２のフラグを含むことを特徴とする請求項５に記載のメモリアクセス制御装置。
【請求項７】
前記第１のフラグは、フェンスフラグを含み、
第１のタググループにおいて、少なくともフェンスフラグ付きの１のコマンドは、少なくとも前記フェンスフラグ付きの１のコマンドよりも前に発行された全てのコマンドが実行されるまで、実行を抑止されることを特徴とする請求項６に記載のメモリアクセス制御装置。
【請求項８】
前記第２のフラグは、バリアフラグを含み、
第１のタググループにおいて、バリアフラグ付きの１のコマンドの後に発行された後続コマンドの実行を抑止することを特徴とする請求項６に記載のメモリアクセス制御装置。
【請求項９】
前記プロセッサは、バリアコマンドを発行する機能を更に備え、
バリアコマンドは、タググループに関わらず、バリアコマンドの後に発行された後続コマンドの実行を抑止することを特徴とする請求項１に記載のメモリアクセス制御装置。
【請求項１０】
プロセッサから、メモリ操作を実行する制御モジュールに対して送出された第１のコマンドを受信するステップと、
埋め込みフラグを生成するために、前記第１のコマンドにフラグを埋め込むステップと、
前記第１のコマンドにタグ番号を付与するステップと、
前記第１のコマンドをコマンドリストの待ち行列に投入するステップと、
少なくとも前記制御モジュールに対するエントリー順と、少なくとも埋め込まれたフラグに基づいて、前記コマンドリストにおけるコマンドの順序を設定するステップと、
前記設定された順序にしたがって、前記コマンドリストにおけるコマンドを実行するステップと、
を備えることを特徴とするメモリアクセス制御方法。
【請求項１１】
同じタグ番号のコマンドをタググループとして関連づけるステップ、を更に含むことを特徴とする請求項１０に記載のメモリアクセス制御方法。
【請求項１２】
前記フラグは、フェンスフラグを含み、
第１のタググループにおいて、少なくともフェンスフラグ付きの１のコマンドは、少なくとも前記フェンスフラグ付きの１のコマンドよりも前に発行された全てのコマンドが実行されるまで、実行を抑止されることを特徴とする請求項１１に記載のメモリアクセス制御方法。
【請求項１３】
前記フラグは、バリアフラグを含み、
第１のタググループにおいて、バリアフラグ付きの１のコマンドの後に発行された後続コマンドの実行を抑止することを特徴とする請求項１０に記載のメモリアクセス制御方法。
【請求項１４】
プロセッサから、メモリ操作を実行する制御モジュールに対して送出された第１のコマンドを受信するステップと、
前記第１のコマンドにタグ番号を付与するステップと、
前記第１のコマンドをコマンドリストの待ち行列に投入するステップと、
タググループに関わりなく、バリアコマンドの後に発行された後続コマンドの実行を抑止するために、バリアコマンドを発行するステップと、
前記コマンドリストにおけるコマンドの順序を設定するステップと、
前記設定された順序にしたがって、前記コマンドリストにおけるコマンドを実行するステップと、
を備えることを特徴とするメモリアクセス制御方法。
【請求項１５】
コンピュータプログラム自体が格納される媒体をもつコンピュータプログラム製品であって、
プロセッサから、メモリ操作を実行する制御モジュールに対して送出された第１のコマンドを受信するコンピュータプログラムコードと、
埋め込みフラグを生成するために、前記第１のコマンドにフラグを埋め込むコンピュータプログラムコードと、
前記第１のコマンドにタグ番号を付与するコンピュータプログラムコードと、
前記第１のコマンドをコマンドリストの待ち行列に投入するコンピュータプログラムコードと、
前記制御モジュールに対するエントリー順と、埋め込まれたフラグに基づいて、前記コマンドリストにおけるコマンドの順序を設定するコンピュータプログラムコードと、
前記設定された順序にしたがって、前記コマンドリストにおけるコマンドを実行するコンピュータプログラムコードと、
を備えるメモリアクセス制御プログラム。
【請求項１６】
同じタグ番号のコマンドをタググループとして関連づけるコンピュータプログラムコード、を更に含むことを特徴とする請求項１５に記載のメモリアクセス制御プログラム。
【請求項１７】
前記フラグは、フェンスフラグを含み、
第１のタググループにおいて、少なくともフェンスフラグ付きの１のコマンドは、少なくとも前記フェンスフラグ付きの１のコマンドよりも前に発行された全てのコマンドが実行されるまで、実行を抑止されることを特徴とする請求項１６に記載のメモリアクセス制御プログラム。
【請求項１８】
前記フラグは、バリアフラグを含み、
第１のタググループにおいて、少なくとも１のバリアフラグ付きコマンドの後に発行された後続のコマンドの実行を抑止することを特徴とする請求項１５に記載のメモリアクセス制御プログラム。
【請求項１９】
コンピュータプログラム自体が格納される媒体をもつコンピュータプログラム製品であって、
プロセッサから、メモリ操作を実行する制御モジュールに対して送出された第１のコマンドを受信するコンピュータプログラムコードと、
前記第１のコマンドにタグ番号を付与するコンピュータプログラムコードと、
前記第１のコマンドをコマンドリストの待ち行列に投入するコンピュータプログラムコードと、
タググループに関わりなく、バリアコマンドの後に発行された後続のコマンドの実行を抑止するために、バリアコマンドを発行するコンピュータプログラムコードと、
前記コマンドリストにおけるコマンドの順序を設定するコンピュータプログラムコードと、
前記設定された順序にしたがって、前記コマンドリストにおけるコマンドを実行するコンピュータプログラムコードと、
を備えることを特徴とするメモリアクセス制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、概しては、ＤＭＡ（Direct Memory Access）制御に関し、より詳細には、ＤＭＡコントロールユニットにおいてコマンドの順序を維持するメカニズムを提供する技術、に関する。
【背景技術】
【０００２】
従来システムにおけるＤＭＡユニットは、メモリに直接的にアクセス可能なデバイスであり、メインプロセッサはバイパスされる。このようなタイプのシステムは、いくつかのバス・アーキテクチャ（bus architecture）に見受けられる。しかし、システム内のＤＭＡユニットを効率的かつ秩序だって利用するためには、ＤＭＡのメモリ使用方法について制御や制約が必須となる。
【０００３】
ＤＭＡユニットはＤＭＡ転送の実行制御を行う。通常、メモリを使用するためのリクエストやコマンドが、ＤＭＡユニットに対して出力される。ＤＭＡユニットは仮想的なゲートキーバー（gatekeeper）として機能し、こういったリクエストやコマンドが秩序だって実行されるように制御する。しかし、リクエストやコマンドを発行するＤＭＡユニットの数や、１つのＤＭＡユニットから発行されるコマンドの数などはとても大きな数になり得る。多数のリクエストがシステム動作を鈍くするという問題を軽減するために、ＤＭＡユニットは、一連のリクエストやコマンドを保持するためのキューを備える。
【０００４】
通常、ＤＭＡユニットのリクエストやコマンドは、ＤＭＡユニットへの到着順に、すなわち、ストリクト・オーダー（strict order）にて実行される。しかし、ストリクトオーダーはとてもコストが高くつく可能性があり、その結果として、さまざまな問題が生起し得る。たとえば、高優先度のＤＭＡコマンドが、低優先度のＤＭＡコマンドのせいで遅延してしまう可能性がある。
【０００５】
ストリクト・オーダー方式がコスト高となる別の理由は、ＤＭＡのために仮想記憶システムを使うときにある。仮想アドレスから実アドレスへの変換ができなければ、ＤＭＡユニットは、変換ミスが解決されるまで待たなければならない。変換ミスはハードウェアによって解決できるときもあれば、ソフトウェアによって解決されなければならないときもある。いずれにしても、変換の失敗から回復するのに要する遅延時間は非常に長い。低速デバイスを対象としたＤＭＡ転送の場合には、キューの奥に存在するＤＭＡコマンドは、現ＤＭＡコマンドとは関係がなくても実行をさまたげられることがある。
【０００６】
ロードやストアのために、ＰｏｗｅｒＰＣ（登録商標）のような従来システムの中には、ウィークリー・オーダー（weakly order）や、ウィークリー・コンシステント・メモリモデル（weakly consistent memory model）を採用することでパフォーマンスを改善できるものもある。ウィークリー・オーダーのメモリモデルの概念は、ＤＭＡコマンドの実行にまで拡張可能である。ＤＭＡユニットに関するウィークリー・オーダー・モデルにおいては、各コマンドにはタグ（tag）が関連付けられる。コマンドは任意の順序にて実行完了することになるが、制御ソフトはその実行順序、関連グループ、あるいは、コマンドの依存関係をタグによって監視できる。
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかし、任意の順序でコマンドを実行すると、多くの問題が生じる。たとえば、あるコマンドが、後続コマンドが実行される前に完了しておかなければならない場合である。従来のＤＭＡコマンド実行方法や実行装置に関連する問題の少なくともいくつかに対処するためのＤＭＡコマンド順序設定方法や装置が必要とされている。
【課題を解決するための手段】
【０００８】
本発明は、メモリアクセス制御装置を提供する。この装置は、少なくとも、１つのプロセッサを備える。プロセッサは、少なくとも、コマンドを発行し、少なくとも、割り当てタグ番号と関連するコマンドに対し、少なくともフラグを付与することができる。この装置は、また、複数の通信ポートを備える。複数のコマンドは、複数の通信チャネルのうちの少なくとも第１の通信チャネルを介して、少なくとも１つのプロセッサにより入力される。この装置は、また、タグキューを備える。タグキューは、複数のタグ付きコマンドを生成するために、複数のコマンドのそれぞれにタグ番号を設定する。この装置は、また、複数のタグ付きコマンドを格納するコマンドキューを備える。コマンドキューは、コマンドをソート（sort）する機能を備える。
【発明を実施するための最良の形態】
【０００９】
本発明とその優位性についてのより完全に理解するために、添付の図面とあわせて以下の記述を参照されたい。
以下の記述における多数の特定的に詳細な記述は、本発明の充分な理解を可能とするためのものである。しかし、当業者であれば、そのような特定的に詳細な記述がなくとも本発明を実現できるであろう。別の例においては、既知の要素についても模式図やブロック図のかたちで、不必要なほど詳細な部分についても本発明を隠すことなく示す。加えて、ほとんどの部分について、ネットワーク通信、電磁的信号技術などに関する詳細は、そのような詳細が本発明の完全な理解のためには不要であり、関連技術について通常のスキルを持つ人物の理解力の範囲内にあると考えられる限りは省略している。
【００１０】
さらに付け加えるならば、特に断らない限りは、以下に述べられるすべての機能は、ハードウェアやソフトウェア、あるいはそれらの組み合わせによって実現される。しかし、特に断らない限りは、好ましくは、これらの機能は、コンピュータのプロセッサ、すなわち、コンピュータプログラムコードとしてのコードにしたがって電子データを処理するプロセッサ、ソフトウェア、および／あるいは、このような機能を実現するように設計された集積回路によって実行されるとする。
【００１１】
図１の参照符号の「１００」は、改良型ＤＭＡコントローラを備えるシステムを示す。システム１００は、改良型ＤＭＡコントローラ１１０、ＰＵ１３０、メモリユニット１３２、メモリ１２０およびＭＰ（Multiprocessor）干渉バス１９０を含む。改良型ＤＭＡコントローラ１１０は、更に、ＤＭＡコマンドキュー１４０、タグキュー１５０、展開／変換論理回路１６０、出力データバッファ１７０および入力データバッファ１８０を備える。
【００１２】
改良型ＤＭＡコントローラ１１０を備えるシステム１００においては、コマンドが発行され、実行される。メモリユニット１３２を備えるＰＵ１３０は、コマンドをＤＭＡコマンドキュー１４０に発行する。ＰＵ１３０は、任意のタイプのプロセッサであればよく、メインＰＵ（Main PU:MPU）やＳＰＵ（Synergistic PU）であってもよい。メモリユニット１３２はさまざまなタイプのメモリであってもよく、これに限る意図ではないが、キャッシュであってもよい。ＤＭＡコマンドキュー１４０に送られたコマンドはタグ付けされ、各コマンドのタグはタグキュー１５０において追跡される。タグはコマンドごとに割り当てられてもよいし、コマンドの種類を特定するものであってもよい。この場合には、タグに応じたグループが形成される。ＤＭＡコマンドキュー１４０からは、読み出し／書き込みコマンドが図示しないシステムメモリなどの各種コンポーネントに発行される。データの転送は、出力データバッファ１７０や入力データバッファ１８０を介して実行される。コマンドの実行に際しては、たとえば、デコード処理のようにこのほかにも多くの処理が含まれ得る。
【００１３】
ただし、ＤＭＡコマンドキュー１４０のコマンドは、単にランダムに実行されるのではない。従来システムでは、ＤＭＡコマンドキュー１４０のようなＤＭＡコマンドキューのコマンドは、ストリクト・オーダーの枠組みにおいては到着順に実行されている。しかし、改良型ＤＭＡコントローラ１１０は、ウィークリー・オーダーの枠組みを採用しており、さまざまな順序での実行を可能としている。更に、改良型ＤＭＡコントローラ１１０は、一連の埋め込みフラグを利用する。ＰＵ１３０は、発行されたコマンドにフラグを埋め込む。ＤＭＡコマンドキュー１４０がフェンス（fence）フラグやバリア（barrier）フラグを埋め込むこともできるが、このようなやり方はより複雑となる。埋め込まれたフラグは各コマンドの依存性を示し、コマンドの順次実行のために役に立つ。埋め込みフラグを使う理由は他にもさまざまである。たとえば、高優先度のコマンドを低優先度のコマンドよりも先に実行する場合である。
【００１４】
より詳細には、コマンドには２つのフラグが埋め込まれる。バリアとフェンスである。どちらも同一タグのグループに属するコマンドだけに影響する。通常、埋め込まれたフェンスフラグは、そのフェンスフラグ付きのコマンドよりも前に発行されたコマンドのうち、同じタググループ内の全てのコマンドが完了するまで、そのコマンドの実行を抑止する。つまり、フェンスフラグは、フェンスフラグ付きのコマンドの実行の前に、フェンスフラグ付きのコマンドの前に発行された同じタググループに属する全てのコマンドが完了することを要求する。フェンスフラグは、キューにある後続のコマンドには影響しない。たとえば、フェンスフラグ付きコマンドの後に発行されたコマンドは、フェンスフラグ付きのコマンドよりも前に実行可能である。
【００１５】
一方、バリアフラグは、同じタググループであれば、先のコマンドにも後のコマンドにも影響する。通常、バリアフラグは、そのバリアフラグ付きコマンドよりも前に発行されたコマンドが実行される前に、同じタググループの後続コマンド（バリアフラグ付きコマンド自体も含む）が実行されるのを禁止する。たとえば、同じタググループに属し、バリアフラグ付きコマンドの後に発行されたコマンドは、バリアフラグ付きコマンドより前に実行できない。通常、バリアフラグ付きコマンドの前に発行されたコマンドのうち、同じタググループに属するコマンドの全てが完了したとき、バリアフラグ付きコマンドと、その同じタググループに属する後続のコマンドが実行可能となる。したがって、いったん、バリアがクリアされると、通常のアウト・オブ・オーダー処理が継続可能となる。
【００１６】
ＰＵ１３０は、また、フェンスフラグやバリアフラグを埋め込む代わりに、バリアコマンドを発行することもできる。バリアコマンドは、キューにある全てのコマンドを操作する。タグに関わらず、全ての後続コマンドは、バリアコマンド以前に発行されたコマンド全てが完了するまで実行不可となる。いったんバリアがクリアされると、通常のアウト・オブ・オーダー処理が継続可能となる。
【００１７】
バリアコマンドとフラグを比較すると、微妙だが意味深い違いがある。タグに対して特定的であって、コマンドの一部として埋め込まれるフラグは、文字通り同じタググループに属するコマンドにだけ作用するが、バリアコマンドは全てのタググループに作用する。けれども、バリアフラグとバリアコマンドは、先後に発行されたコマンドの両方に影響するという点で類似する特徴を持っている。ただし、２つのコマンドの影響範囲は異なる。
【００１８】
改良型ＤＭＡコントローラ１１０を持つシステム１００を動作させるために、一連の必要な接続がなされる。ＰＵ１３０は、図示しない第１通信チャネルを介してメモリユニット１３２に接続される。また、ＰＵ１３０は、第２通信チャネル１０１を介して、ＤＭＡコマンドキュー１４０と接続される。メモリユニット１３２は、第３通信チャネル１１２を介してメモリと接続される。メモリ１２０は、第４通信チャネル１０２を介して出力データバッファ１７０と接続される。メモリ１２０は、また、第５通信チャネル１０３を介して入力データバッファ１８０と接続される。ＤＭＡコマンドキュー１４０は、第６通信チャネル１０４と第７通信チャネル１０５を介して展開／変換論理回路１６０と接続される。第６通信チャネル１０４は、コマンドを転送し、第７通信チャネル１０５は埋め込みフラグを転送する。タグキュー１５０は、第８通信チャネル１０６を介して展開／変換論理回路１６０と接続される。出力データバッファ１７０は、第９通信チャネル１０７を介してＭＰ干渉バス１９０と接続される。入力データバッファ１８０は、第１０通信チャネル１０８を介してＭＰ干渉バス１９０と接続される。展開／変換論理回路１６０は、第１１通信チャネル１０９を介してＭＰ干渉バス１９０と接続される。
【００１９】
図２における参照符号「２００」は、ＭＰシステムを示す。ＭＰシステムは、共有メモリ２１０、ローカルメモリ２１２、第１ＰＵ２２０、第１レベル２（Ｌ２）キャッシュ２２２、第１ＤＭＡコントローラ２２４、第２ＤＭＡコントローラ２２６、第２ＰＵ２２８、第２Ｌ２キャッシュ２３０を含む。第１Ｌ２キャッシュ２２２と第２Ｌ２キャッシュ２３０は既知のキャッシュであり、それぞれのプロセッサのための外部メモリインタフェースとして機能する。
【００２０】
ＭＰシステム２００においては、複数のプロセッサが独立に、あるいは、協働して、さまざまなメモリデバイスを対象としてデータの読み書きを実行できる。第１ＰＵ２２０は、さまざまなタイプのコマンド、たとえば、読み出しコマンドや書き込みコマンドなどを第１ＤＭＡコントローラ２２４に対して発行する。第２ＰＵ２２８も、読み出しコマンドや書き込みコマンドなどのさまざまなタイプのコマンドを第２ＤＭＡコントローラ２２６に発行可能である。第１ＤＭＡコントローラ２２４や第２ＤＭＡコントローラ２２６は、ローカルメモリ２１２と共有メモリ２１０のどちらに対してもデータの読み書きが可能である。図２に示すように、ＤＭＡコントローラごとに、複数のＰＵあるいは単一のＰＵが設置されてもよい。逆に、図２に示すように、複数のＤＭＡコントローラ、あるいは、単一のＤＭＡコントローラが設置されてもよい。また、図２に示すように、単一または複数のＰＵが設置されてもよい。
【００２１】
ＭＰシステム２００を動作させるために、一連の必要な接続がなされる。第１ＰＵ２２０は、図示しない第１２通信チャネルを介して第１Ｌ２キャッシュ２２２と双方向接続される。第１ＰＵ２２０は、第１３通信チャネル２４２を介して第１ＤＭＡコントローラ２２４と接続される。第１Ｌ２キャッシュ２２２は、第１４通信チャネル２４０を介して共有メモリ２１０と接続される。第１ＤＭＡコントローラ２２４は、第１５通信チャネル２４４を介して共有メモリ２１０と接続される。第１ＤＭＡコントローラ２２４は、また、第１６通信チャネル２４８を介してローカルメモリ２１２と接続される。第２ＰＵ２２８は、図示しない第１７通信チャネルを介して第２Ｌ２キャッシュ２３０と双方向接続される。第２Ｌ２キャッシュ２３０は、第１８通信チャネル２５４を介してローカルメモリ２１２と接続される。第２ＰＵ２２８は、また、第１９通信チャネル２５２を介して第２ＤＭＡコントローラ２２６と接続される。第２ＤＭＡコントローラ２２６は、第２０通信チャネル２５０を介してローカルメモリ２１２と接続される。第２ＤＭＡコントローラ２２６は、また、第２１通信チャネル２４６を介して共有メモリ２１０と接続される。
【００２２】
図３、４、５は、埋め込みフェンス、埋め込みバリアおよびバリアコマンドの動作をそれぞれ示すフローチャートである。これらのフローチャートは、単一の埋め込みフラグや単一のバリアコマンドだけが存在するとして単純化されているが、複数のフラグおよび／あるいは複数のコマンドは組み合わせ可能である。
【００２３】
図３の参照符号「３００」は、通常、改良型ＤＭＡコントローラとフェンスフラグの動作のフローチャートを示す。なお、図３は、他の種類のフラグを利用しない場合を示す。
【００２４】
ステップ３０２と３０４においては、コマンドが発行され、フェンスフラグが埋め込まれる。図１のＰＵ１３０は、ステップ３０２においてコマンドを発行する。コマンドは、読み出しコマンドや書き込みコマンドのようにさまざまなタイプのコマンドであってもよい。コマンドには、ステップ３０４においてフェンスフラグが埋め込まれる。フェンスフラグのコマンドへの埋め込みは、図１のＰＵ１３０により、アプリケーションおよび／またはコンパイラを利用して実行される。フェンスフラグを埋め込む理由は、さまざまである。たとえば、フェンスフラグは、同じタグが付与されたコマンドのうち、以前に発行されたコマンドの全ての後に、そのコマンドを実行するために埋め込まれる。このフェンスフラグは、読み出しコマンドのように、さまざまなコマンドに埋め込み可能である。なお、フェンスフラグは、同じタググループに属するコマンドにのみ影響する。加えて、図１のＰＵ１３０は、ステップ３０２における発行時に、コマンドにタグを割り当てる。
【００２５】
ステップ３０６と３０８においては、コマンドは転送され、タググループと関連付けられる。ステップ３０６において、図１のＰＵ１３０は、一時的な保持のために、発行され、埋め込みがなされたコマンドをＤＭＡコマンドキュー１４０に転送する。受信されると、ステップ３０８において、コマンドは、割り当てられたタグに基づいて特定のタググループと関連付けられる。
【００２６】
ステップ３１０、３１１および３１４においては、ＤＭＡコマンドキュー１４０から次の実行予定コマンドが検索される。ステップ３１０において、ＤＭＡコマンドキュー１４０から有効な次コマンドが探される。通常、コマンドは、コマンドキューにおける他のコマンドと比べた古さに応じて選択される。たとえば、コマンドキューの中で最も古いコマンドが選択される。次のコマンドが選択されると、ステップ３１１においてそのコマンドにフェンスフラグが埋め込まれているか判定される。もし、コマンドがフェンスフラグを埋め込まれていなければ、ステップ３１４においてコマンドが実行可能となる。しかし、もし、フェンスフラグが埋め込まれていれば、別処理に移行する。
【００２７】
ステップ３１１において、コマンドにフェンスフラグが埋め込まれていると判定されると、ステップ３１２において、そのコマンドの実行に必要な条件が検査される。フェンスフラグは、フェンスフラグ付きコマンドの前に発行されたコマンドのうち、同じタググループに属するコマンドの全てが、フェンスフラグ付きコマンドが実行される前に完了していることを実行条件とする。もしも実行条件が満たされていなければ、そのコマンドはＤＭＡコマンドキューにとどまり、ステップ３１０とステップ３１１は、実行可能なコマンドを見つけるためにくり返される。コマンド実行条件を満たされるまで、そのコマンドはＤＭＡコマンドキュー１４０に残る。したがって、ステップ３１０において、次に実行されるべきコマンドは、フェンスフラグ付きコマンドの発行の前に発行されたコマンドのうち、同じタグを持つコマンドとなる。次に予定されるコマンドが、フェンスフラグ付きコマンドの発行後に発行されたコマンドであるならば、図１のＤＭＡコントローラ１１０は、タグにかかわらずその後続のコマンドを実行できる。しかし、図１のＤＭＡコントローラ１１０は、事前発行されたコマンドをコマンドキューから探し続ける必要がある。もし、同じタググループに関して、事前に発行されたコマンドが存在しなければ、埋め込みフェンスについての実行条件は満たされ、フェンスフラグ付きコマンドは実行可能となる。ただし、フェンスフラグ付きコマンドは、それよりも前に発行され、未完了のコマンドが無くなるまで実行できない。
【００２８】
ステップ３１０からステップ３１４までの処理は、ステップ３０２からステップ３０８までの処理と並行して実行される。図１のＰＵ１３０がコマンドを発行するときにも、ステップ３０２からステップ３１４の処理は繰り返される。ステップ３１０からステップ３１４までの処理は、ＤＭＡコマンドキュー１４０にコマンドが無くなるまで継続して実行される。
【００２９】
図４の参照符号「４００」は、改良型ＤＭＡコントローラとバリアフラグの動作のフローチャートを示す。なお、図４は、他の種類のフラグを利用しない場合を示す。
【００３０】
ステップ４０２と４０４において、コマンドが発行され、バリアフラグが埋め込まれる。図１のＰＵ１３０は、ステップ４０２においてコマンドを発行する。コマンドは、読み出しコマンドや書き込みコマンドのように、さまざまなタイプのコマンドであってよい。ステップ４０４において、コマンドにはバリアフラグが埋め込まれる。コマンドへのバリアフラグの埋め込みは、アプリケーションおよび／またはコンパイラを使って、図１のＰＵ１３０により実行される。バリアフラグを埋め込む理由はさまざまである。たとえば、バリアフラグは、タグが同じで、かつ、以前に発行された全てのコマンドの後に、同じタググループに属する全ての後続コマンドと当該コマンドを実行するために埋め込まれる。バリアフラグは、読み出しコマンドのように、さまざまなコマンドに埋め込まれ得る。また、バリアフラグは、同じタググループに属するコマンドにしか影響しない。加えて、図１のＰＵ１３０は、ステップ４０２における発行時に、コマンドにタグを割り当てる。
【００３１】
ステップ４０６と４０８において、コマンドは転送され、タググループと関連づけられる。ステップ４０６において、一時的に保持のために、図１のＰＵ１３０は、発行され、埋め込まれたコマンドをＤＭＡコマンドキュー１４０に転送する。受信されると、コマンドは、ステップ４０８において割り当てられたタグに基づいて、特定のタググループと関連づけられる。
【００３２】
ステップ４１０、４１１および４１４において、ＤＭＡコマンドキュー１４０から次に実行予定のコマンドが検索される。ステップ４１０において、ＤＭＡコマンドキュー１４０から、有効な次コマンドが探される。通常、コマンドは、コマンドキューにおける他のコマンドと比べた古さに応じて選択される。たとえば、コマンドキューの中で最も古いコマンドが選択される。次コマンドが選択されると、ステップ４１１においてそのコマンドにバリアフラグが埋め込まれているか判定される。もし、コマンドにバリアフラグが埋め込まれていなければ、コマンドは実行可能となる。しかし、もし、バリアフラグが埋め込まれていれば、別処理に移行する。
【００３３】
ステップ４１１において、コマンドにバリアフラグが埋め込まれていると判定されると、ステップ４１２において、コマンドの実行条件が検査される。バリアフラグは、バリアフラグ付きコマンドの前に発行されたコマンドのうち、同じタググループに属するコマンドの全てが、バリアフラグ付きコマンドの後に発行されたコマンドの実行前に完了することを要請する。もし、コマンドの実行条件が満たされなければ、コマンドはＤＭＡコマンドキュー１４０に残り、ステップ４１０とステップ４１１は、実行可能なコマンドを探すために繰り返される。コマンドの実行条件がみたされるまで、コマンドはＤＭＡコマンドキュー１４０に留まる。したがって、ステップ４１０において、次に実行すべきコマンドは、バリアフラグ付きコマンドの発行前に発行されたコマンドのうち、同じタグを持つコマンドであるべきである。もし、次に予定されるコマンドが同じタググループに属し、バリアフラグ付きコマンドの発行後に発行され、バリアフラグの要件が満たされていないときには、ステップ４１２のチェックはフェイルし、図１のＤＭＡコントローラ１１０は、後続のコマンドを実行できない。図１のＤＭＡコントローラ１１０は、以前に発行されたコマンドをコマンドキューから探し続ける。同じタググループについて、事前発行のコマンドが存在しなければ、埋め込みバリアフラグについての条件が成立し、バリアフラグ付きコマンド、および、同じタググループに属し、事後発行された全てのコマンドが実行可能となる。同じタググループ内に次の実行予定コマンドが存在しなければ、図１のＤＭＡコントローラ１１０は、コマンドを実行できる。
【００３４】
ステップ４１０からステップ４１４の処理は、ステップ４０２からステップ４０８の処理と並行して実行される。ステップ４０２からステップ４０８の処理は、図１のＰＵ１３０によるコマンド発行時に繰り返される。ステップ４１０からステップ４１４の処理は、ＤＭＡコマンドキュー１４０にコマンドが無くなるまで継続実行される。
【００３５】
図５の参照符号「５００」は、改良型ＤＭＡコントローラ１１０とバリアコマンドの動作を示すフローチャートである。なお、図５は、他の種類のフラグを利用しない場合を示す。
【００３６】
ステップ５０２とステップ５０４においては、バリアコマンドが発行され、図１のＤＭＡコマンドキュー１４０に転送される。図１のＰＵ１３０は、ステップ５０２においてバリアコマンドを発行する。バリアは、以後に発行される全てのコマンドに対して依存性を設定する。この依存性により、バリアコマンドの前に発行されたすべてのコマンドが完了する必要が生じる。本質的には、バリアコマンドは、タググループに関わりなく、事前発行された全てのコマンドの実行が完了するまで、事後発行されたコマンドの実行を抑止する。バリアコマンドを利用する理由はさまざまである。たとえば、バリアコマンドは、事前発行された全てのコマンドの後に、当該コマンドとその全ての後続コマンドを実行するために利用される。ステップ５０４においては、図１のＰＵ１３０は、発行されたバリアコマンドを一時保持のためにＤＭＡコマンドキュー１４０に転送する。
【００３７】
ステップ５０６、５０８および５１０においては、ＤＭＡコマンドキュー１４０から次の実行予定コマンドが検索される。ステップ５１０においては、ＤＭＡコマンドキュー１４０からは次に有効なコマンドが検出される。通常、コマンドは、コマンドキューにおける他のコマンドと比べた古さに基づいて選択される。たとえば、コマンドキューの中で最も古いコマンドが選択される。ステップ５０８においては、コマンドの実行条件が検査される。バリアコマンドは、タググループに関わりなく、バリアコマンド以後に発行されたコマンドを実行する前には、バリアコマンド以前に発行された全てのコマンドが完了することを要求する。コマンドの実行条件が満たされていないならば、コマンドはＤＭＡコマンドキュー１４０に留まり、ステップ５０６とステップ５０８は、実行可能なコマンドを探すために繰り返される。コマンドは、コマンド実行条件が満たされるまでＤＭＡコマンドキュー１４０に留まる。したがって、ステップ５０６において、次に実行されるべきコマンドは、バリアコマンドの発行前に発行されたコマンドである。もし、つぎに実行予定のコマンドが、バリアコマンドの発行後に発行され、バリアコマンドについての条件が満たされないならば、ステップ５０８のチェックは失敗し、図１のＤＭＡコントローラ１１０は、バリアコマンドを実行完了させたり、後続コマンドを実行させることはできない。図１のＤＭＡコントローラ１１０は、以前に発行されたコマンドをコマンドキューから探し続ける。以前のコマンドがなければ、バリアコマンドとそれに続いて発行された全てのコマンドについての依存性に関する要件が満たされる。バリアコマンドによって生成された依存関係が解決されると、バリアコマンドの発行後に発行されたすべてのコマンドを実行可能となる。
【００３８】
ステップ５０６と５１０は、ステップ５０２と５０４と並行して実行される。ステップ５０２と５０４は、図１のＰＵ１３０がバリアコマンドを発行するときに、繰り返される。ステップ５０６からステップ５１０は、ＤＭＡコマンドキュー１４０にコマンドが無くなるまで継続的に実行される。
【００３９】
さまざまな変形や変更が、上記した本発明の実施例においても本発明の思想範囲から逸脱しない程度に可能であることは明らかなところである。それゆえ、これらの記述は、発明の例証を目的としたものであり、限定的な意味に解釈してはならない。本発明の範囲は、あくまでも、請求項の文言によってのみ解釈されるべきである。
【図面の簡単な説明】
【００４０】
【図１】改良型ＤＭＡコントローラをもつシステムの機能ブロック図である。
【図２】マルチプロセッサ（ＭＰ）システムの機能ブロック図である。
【図３】改良型ＤＭＡコントローラシステムにおいてフェンスフラグの動作を示すフローチャートである。
【図４】改良型ＤＭＡコントローラシステムにおいてバリアフラグの動作を示すフローチャートである。
【図５】改良型ＤＭＡコントローラシステムにおいてバリアコマンドの動作を示すフローチャートである。
【図１】
2007529833.tif 000003
【図２】
2007529833.tif 000004
【図３】
2007529833.tif 000005
【図４】
2007529833.tif 000006
【図５】
2007529833.tif 000007
【国際調査報告】
2007529833.tif 000008
2007529833.tif 000009