(57)【特許請求の範囲】
【請求項１】
ＤＭＡＣが、コマンドの発行を、コマンド発行タイミングを複数のスロットに時分割して制御する方法であって、
前記コマンドは、当該コマンドに割り当てられたストリーミングＩＤによって複数のグループにグループ化されており、
前記ＤＭＡＣは、前記複数のグループに対して、それぞれストリーミングＩＤにより機能がイネーブル又はディスエーブルとされるようにスロットの制御を行い、
前記スロットの制御では、
前記複数のスロットのうちから選択スロットを選出し、
前記選択スロット内に含まれるグループに対して、グループ内のコマンドが発行可能である場合に、当該グループが有効であると判定することで、グループの有効性を判定し、
前記選択スロットに有効なグループが存在しない場合には、前記複数のスロットのうちから他のスロットを選出し、
更に、前記ＤＭＡＣは、
少なくとも一つのスロットに有効なグループが存在する場合には、当該有効なグループ内のコマンドのうち最も古いコマンドを選出してコマンドを発行し、
前記最も古いコマンドが含まれるグループに対してグループ特性の更新を行う、方法。
【請求項２】
前記スロットを選出するステップでは、読み出しスロット又は書き込みスロットが選出される、請求項１記載の方法。
【請求項３】
前記グループ有効性を判定するステップでは、
各グループが予めプログラムされたクォータに達しているか否かを判定する、請求項１記載の方法。
【請求項４】
前記グループ特性を更新するステップでは、最も古い有効コマンドが含まれていたグループに対するポインタを次のグループへと移動させる、請求項１記載の方法。
【請求項５】
ＤＭＡＣ内のコマンドの発行を、コマンド発行タイミングを複数のスロットに時分割して制御するするためのコンピュータプログラムであって、
前記コマンドは、当該コマンドに割り当てられたストリーミングＩＤによって複数のグループにグループ化されており、
前記複数のグループに対して、それぞれストリーミングＩＤにより機能がイネーブル又はディスエーブルとされるようにスロットの制御を行う処理と、
前記複数のスロットから選択スロットを選出する処理と、
前記選択スロット内に含まれるグループに対して、グループ内のコマンドが発行可能である場合に、当該グループが有効であると判定することで、グループの有効性を判定する処理と、
前記選択スロットに有効なグループが存在しない場合に、前記複数のスロットから他のスロットを選出する処理と、
少なくとも一つのスロットに有効なグループが存在する場合には、当該有効なグループ内のコマンドのうち最も古いコマンドを選出してコマンドを発行する処理と、
前記最も古い有効コマンドが存在するグループのグループ特性を更新する処理と、を前記ＤＭＡＣに実行させるための、コンピュータプログラム。
【請求項６】
前記スロットを選出する処理は、読み出しスロット又は書き込みスロットを選択するための処理を含む、請求項５記載のコンピュータプログラム。
【請求項７】
前記グループ有効性を判定する処理は、
各グループが予めプログラムされたクォータに達しているか否かを判定する処理を含む、請求項６記載のコンピュータプログラム。
【請求項８】
ＤＭＡＣ内のコマンドを発行するためのプロセッサであって、前記プロセッサは、コマンド発行タイミングを複数のスロットに時分割して制御するとともに、前記コマンドは、当該コマンドに割り当てられたストリーミングＩＤによって複数のグループにグループ化されており、
前記複数のグループに対して、それぞれストリーミングＩＤにより機能がイネーブル又はディスエーブルとされるようにスロットの制御を行う処理と、
前記複数のスロットから選択スロットを選出する処理と、
前記選択スロット内に含まれるグループに対して、グループ内のコマンドが発行可能である場合に、当該グループが有効であると判定することで、グループの有効性を判定する処理と、
前記選択スロットに有効なグループが存在しない場合に、前記複数のスロットから他のスロットを選出する処理と、
少なくとも一つのスロットに有効なグループが存在する場合には、当該有効なグループ内のコマンドのうち最も古いコマンドを選出する処理と、
前記最も古い有効コマンドが存在するグループのグループ特性を更新するための処理と、を実行するプロセッサ。
【請求項９】
前記スロットを選出する処理には、更に、読み出しスロット又は書き込みスロットを選出する処理が含まれる、請求項８記載のプロセッサ。
【請求項１０】
前記グループ有効性を判定する処理は、更に、
各グループが予めプログラムされたクォータに達しているか否かを判定する処理が含まれる、請求項８記載のプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、概して、ダイレクトメモリアクセス（Direct Memory Access:ＤＭＡ）リクエストコマンドの発行に関し、より詳細には、コマンドキューの操作に関する。
【背景技術】
【０００２】
過去数年間にわたって、ＤＭＡはコンピュータアーキテクチャの重要な一端を担うようになっている。ＤＭＡに加えて、更に処理能力を高速化するためにＤＭＡを用いたマルチプロセッサシステムが開発されている。特にＤＭＡに関しては、プロセッサからＤＭＡコントローラ（ＤＭＡＣ）に対して発行可能でＤＭＡＣでの実行を要求するリクエストあるいはコマンドとして、通常、二つのタイプ、即ち、読み出しと書き込みが存在する。しかし、システムに応じて、個々のプロセッサは、入出力（Ｉ／Ｏ）デバイス、他のプロセッサのローカルメモリ、メモリデバイス、及びその他に関して読み出し及び書き込みを行うこともできる。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかしながら、最近では、マルチプロセッサ及びＤＭＡＣが単一チップに組み込まれる。単一チップの小型化によって、高速化だけでなく、サイズの小型化も可能となっている。ＤＭＡＣ、プロセッサ、バスインターフェースユニット（Bus Interface Unit:ＢＩＵ）、及びバスをすべて一つのチップに組み込むことができる。このようなシステムのデータフローは、ＤＭＡコマンドのディスパッチを行うプロセッサコアを起点とし、コマンドがＤＭＡコマンドキューに格納される。各ＤＭＡコマンドは、ＢＩＵへの、より小さなバスリクエストに展開又はまたは分割することができる。その結果得られる展開されたリクエストは、ＢＩＵの保留中のバスリクエストキューに格納される。ＢＩＵは、その後、このリクエストをバスコントローラに送る。一般に、リクエストは、ＤＭＡから受信された順番で、ＢＩＵから送信される。バスリクエストが完了した後、ＢＩＵのバスリクエストキューエントリは、新たなＤＭＡリクエストを受信可能な状態となる。
【０００４】
一方、ソースデバイス、即ち要求元デバイスにおけるＢＩＵの保留中のバスリクエストキューと相手側デバイスにおけるスヌープキューの物理的サイズがボトルネックとなる場合もある。このボトルネックは、通常、実行コマンドのキューオーダー及び／又はディレイの関数となっている。他のプロセッサのローカルメモリから読み出しを行う第２コマンドを例にとると、ダイナミックランダムアクセスメモリ（Dynamic Randam Access Memory:ＤＲＡＭ）に格納される第１コマンドを待ち受けすることで、ディレイが発生する場合もある。従って、その結果生じるボトルネックにより、動作速度に劇的な遅れが生じるおそれもある。
【０００５】
ＤＭＡコマンドの実行順がボトルネックの原因となることもある。これは、ある種のコマンドは、他のコマンドよりも高速に実行されることによる。例えば、同一チップ内のプロセッサ間でデータの移動を行うＤＭＡコマンド実行は、通常長時間を要する他の外部メモリあるいはＩ／ＯデバイスへのＤＭＡコマンド実行よりも高速に完了させることができる。その結果、メモリあるいはＩ／Ｏデバイスに対するデータ移動のためのＤＭＡコマンドは、ＢＩＵ保留中のリクエストキューに、より長時間留まることになる。更に、ＢＩＵ保留中のリクエストキューは、より遅いバスリクエストにより完全に占拠されて、ＤＭＡからの更なるバスリクエストに対して全く、あるいは殆ど実行の余地がなくなってしまうおそれがある。これにより、ＢＩＵの保留中のバスリクエストキューに空きがでるまで、プロセッサを停止状態にしなければならないことから、プロセッサのパフォーマンスが悪化してしまう。
【０００６】
ボトルネックの他の要因としてはリトライが挙げられる。複数の要求元デバイスが同じ相手側デバイスへのデータ移動、あるいは相手側デバイスからのデータ移動を行う場合、相手側のデバイスは、スヌープキューがフル状態の場合にはバスリクエストを拒否しなくてはならない。これにより、要求元デバイスは、同じバスリクエストのリトライを後に行うことになってしまう。
【０００７】
ボトルネックのさらに他の要因としては、同一の相手側デバイスにおけるコマンド実行順が挙げられる。従来のＤＲＡＭアクセスにおいて、ＤＲＡＭデバイスは、連続するメモリバンクに対してパラレルに動作が可能である。更に、双方向バスは、通常、ＤＲＡＭデバイスとのインタフェースに用いられている。データの移動方向が頻繁に変更される場合、バスの方向変更すなわちターンアラウンドに要するバスサイクルが更に必要になることから、バスバンド幅が減少する。また、より大きなパラレルＤＲＡＭアクセスを得るためには、同じメモリページに対して連続した読み出しあるいは書き込みを行うことが好ましい。
【０００８】
従って、上述の課題を解決するための、ＤＭＡ発行メカニズムを効率化するための方法及び／又は装置が必要とされている。
【課題を解決するための手段】
【０００９】
本発明によれば、ＤＭＡＣ内のコマンドを実行するための方法及びコンピュータプログラムが提供される。最初にスロットが選択される。スロットが選択されると、選択されたスロットにおけるどのグループが有効であるかが判定される。有効なグループがない場合、他のスロットが選択される。しかし、有効なグループが少なくとも一つある場合、グループを選択するためにラウンドロビン調停スキームが用いられる。選択されたグループ内で、ペンディング状態にある、保留中のコマンドのうち最も古いものが選択され、展開される。展開されたバスリクエストは、その後、ＢＩＵへとディスパッチされる。展開後、ＤＭＡコマンドパラメータが更新され、ＤＭＡコマンドキューへと書き戻される。
【００１０】
また、本発明の一形態によれば、プロセッシングエレメントからのストリーミングＩＤを用いたダイレクトメモリアクセス（ＤＭＡ）リクエストコマンドの発行システムであって、バス手段を有し、発行ロジック手段を備えたＤＭＡコントローラ（ＤＭＡＣ）手段を有し、キュー保留手段を備えたバスインターフェースユニット（ＢＩＵ）を有し、前記ＢＩＵ手段は、前記バスと前記ＤＭＡＣ手段との間に接続されており、前記バス手段に接続され、外部メモリ、入出力（ＩＯ）手段、及びオンチップメモリを備えたバスターゲット手段を有し、前記バス手段は、前記ＢＩＵと前記バスターゲット手段との間に接続されたものであり、前記発行ロジック手段は、いずれのコマンドをコマンドバスリクエストとして展開するか否かを決定し、この決定は、スロット変更、ストリーミングＩＤ、前記コマンドの新旧の少なくともいずれか一つを要素とする発行ポリシーの関数としてなされ、前記キュー保留手段は、前記各バスリクエストを、前記バスに対して発行する前に保留状態とする、システムも提供される。
ラウンドロビンストリーミングＩＤグループでは、例えば、ストリーミングＩＤグループの選択は、ラウンドロビン式で行われる。
上述した発行ポリシーでは、コマンドの新旧に代えて、コマンドのＤＭＡＣへの入力順を要素として用いることもできる。
【００１１】
また、ＤＭＡＣ内のコマンドの発行を行う方法であって、複数のスロットのうちから選択スロットを選出し、前記選択スロットのグループ有効性を判定し、有効なグループが存在しない場合には、前記複数のスロットのうちから他のスロットを選出し、少なくとも一つのスロットが有効である場合には、最も古い有効コマンドを選出し、前記最も古い有効コマンドが含まれるグループに対してグループ特性の更新を行う方法も提供される。
この方法において、前記キュー特性を更新するステップでは、最も古い有効コマンドが含まれていたグループに対するポインタを次のペンディング状態のバスリクエストへと移動させることもできる。例えば、グループを選択するためにラウンドロビン調停スキームを用い、このラウンドロビン調停において、最も古い有効コマンドが含まれていたグループに対するポインタを次のペンディング状態のバスリクエストへと移動すること、つまり、最も古い有効コマンドが含まれていたグループから次のペンディング状態のバスリクエストへと処理を進めることも可能である。
なお、オンチップメモリとしては、キャッシュメモリ、ローカルストア、メモリーマップドＩ／Ｏ（ＭＭＩＯ）が挙げられる。
【００１２】
以下、本発明を説明すると、それぞれ属性の異なるメモリアクセスを生成する複数のＤＭＡコマンドがＤＭＡＣのキューに存在するとき（例えば、読出しＤＭＡコマンドと書込みＤＭＡコマンド）、読出しと書込みとを交互に行った方が、読出しないしは書込みを連続して行う場合よりもメモリアクセスが向上する場合が存在する。通常、単独のＤＭＡコマンドは複数のメモリアクセスに分解されて実行されるので、一度に一つずつのＤＭＡコマンドを実行すると、読出しメモリアクセス、あるいは書込みメモリアクセスが連続して発行され、メモリシステムの効率を低下させる場合がある。
【００１３】
これを回避するため、本発明では、メモリアクセス発行タイミングを、「スロット」という概念でコントロールしている。例えば、連続した一定タイミングＴごとにメモリアクセスが可能になる場合、時間２Ｔを読出しメモリアクセススロット、時間２Ｔ＋１を書込みメモリアクセススロットとして規定し、読出しと書込みとを交互に発行するよう制御することが可能である。
【００１４】
たとえば、システムによっては、プロセッサからメモリへのアクセスは読出しアクセスと書込みアクセスのどちらかが連続しても効率は低下しないが、プロセッサからプロセッサ、プロセッサからＩ／Ｏへのアクセスでは、読出しあるいは書込みが連続すると、効率が低下する場合もある。
従って、メモリアクセス発行タイミングをスロット単位でコントロールすることにより、効率を損うことを防ぐことができる。
【００１５】
一方、ストリーミングＩＤを用いてメモリアクセス速度を高速に維持することもできる。ストリーミングＩＤは、属性の異なるアクセス対象、例えばメモリとＩ／Ｏへのアクセスを、メモリアクセス実行形において区別したいときに利用できる。例えば、メモリへのアクセスよりもＩ／Ｏへのアクセスが非常に長い処理時間を要する場合、メモリへのアクセスとＩ／Ｏへのアクセスを同一の比率でバスインターフェースユニットのキューに投入すると、Ｉ／Ｏへのアクセスと同程度の、本来よりも遅い速度でしかメモリアクセスを実施できなくなってしまうおそれがある。これを防ぐため、例えば、メモリアクセスとＩ／Ｏへのアクセスに別々のクォータを与えることができる。この場合、Ｉ／Ｏへのアクセスが自分のクォータを使い切ってＩ／Ｏへのアクセスが停止しても、メモリへのアクセスは別のクォータを用いて処理を継続できるため、性能の低下を回避することができる。
【００１６】
以上のように、スロットを用いたコントロールと、ストリーミングＩＤとは、別個に動作するものであり、後述の実施形態では、スロットを用いたコントロールとストリーミングＩＤとを組合わせた例を示すが、これらをそれぞれ別個に実施することも勿論可能である。
【発明を実施するための最良の形態】
【００１７】
本発明及びその利点は、以下の図面を参照することでより一層理解されるであろう。
以下の説明において、本発明の理解を深めるために、種々の詳細が示されている。しかしながら、当業者であれば、本発明は、このような特定の詳細に束縛されることなく実施できることが理解されよう。他の例において、周知のエレメントが図示されているが、これらは本発明を不明瞭にしないよう、必須ではない細部まで示したものである。加えて、多くの場合、ネットワーク通信、電磁信号技術等は当業者にとって周知な範疇のものであり、本発明を完全に理解するに必須でない限りは省略するものとした。
【００１８】
更に、特に断りのない限り、ここに記述する全ての機能はハードウェア、ソフトウェア、及びこれらの組み合わせのいずれの形態において実現してもよいものである。しかしながら、好適実施形態において、特に断りのない限り、これらの機能は、このような機能を実現するようにコードされたコンピュータプログラムコード、ソフトウェア、及び／又は集積回路電子データプロセッサあるいはコンピュータのようなコードにより実行される。
【００１９】
図１において、参照符号１００は、ＤＭＡＣを用いたマルチプロセッサコンピュータシステムを示す。このシステム１００は、第１プロセッサ１０１、第２プロセッサ１０３、第３プロセッサ１０５、バス１３０、メモリコントローラ１２２、メモリデバイス１２４、Ｉ／Ｏコントローラ１２６、及びＩ／Ｏデバイス１２８を有する。加えて、システム１００で使用可能な種々のタイプの記録デバイスあるいはメモリデバイスが含まれる。また、図１に示されるようにマルチプロセッサとしても、あるいは単一プロセッサとしてもよい。
【００２０】
各プロセッサ１０１、１０３、及び１０５は、データ通信形態が共通するように構成されている。各第１プロセッサ１０１、第２プロセッサ１０３、及び第３プロセッサ１０５は、第１プロセッサコア１０４、第２プロセッサコア１０６、第３プロセッサコア１０８をそれぞれ有する。第１プロセッサコア１０４は、第１読み出し通信チャンネル１５２及び第１書き込み通信チャンネル１５０を通じて第１ＤＭＡＣ１１０に結合されている。第２プロセッサコア１０６は、第２読み出し通信チャンネル１５６及び第２書き込み通信チャンネル１５４を通じて第２ＤＭＡＣ１１２に結合されている。第３プロセッサコア１０８は、第２読み出し通信チャンネル１６０及び第２書き込み通信チャンネル１５８を通じて第２ＤＭＡＣ１１２に結合されている。第１ＤＭＡＣ１１０は、第４書き込み通信チャンネル１６２及び第４読み出し通信チャンネル１６４を通じて第１ＢＩＵ１１６に結合されている。第２ＤＭＡＣ１１２は、第５書き込み通信チャンネル１６６及び第５読み出し通信チャンネル１６８を通じて第２ＢＩＵ１１８に結合されている。第３ＤＭＡＣ１１４は、第６書き込み通信チャンネル１７０及び第６読み出し通信チャンネル１７２を通じて第３ＢＩＵ１２０に結合されている。
【００２１】
各プロセッサのそれぞれは、同様に動作する。コマンドは、読み出しあるいは書き込みにかかわらず、プロセッサコア内にある。与えられたプロセッサから発行され得るコマンドには様々なものがある。しかし、説明の都合上、これらは、それぞれ別個の３種のコマンドタイプに絞られる。つまり、プロセッサからプロセッサ、プロセッサからメモリデバイス、プロセッサからＩ／Ｏデバイス、の３種類である。これらのコマンドがプロセッサコアにより発行されると、コマンドはＤＭＡＣに送られる。ＤＭＡＣは、その後、コマンドを展開してＢＩＵへと送り、ＢＩＵでは、保留中のリクエストキューが、この展開されたバスリクエストを格納する。その後、バスリクエストはバスへと送られる。バスコントローラがリクエストを出すと、要求元デバイスと相手側デバイスとでデータ転送を行ってバスリクエストを完了させる。
【００２２】
ＤＭＡＣを用いたマルチプロセッサコンピュータシステム１００は、データやバスリクエストの通信を種々のコンポーネント間で行うためにバス１３０を使用して動作する。第１プロセッサ１０１は、第７書き込み通信チャンネル１７４及び第７読み出し通信チャンネル１７６を通じてバス１３０に結合される。第２プロセッサ１０３は、第８書き込み通信チャンネル１７８及び第８読み出し通信チャンネル１８０を通じてバス１３０に結合される。第３プロセッサ１０５は、第９書き込み通信チャンネル１８２及び第９読み出し通信チャンネル１８４を通じてバス１３０に結合されている。
メモリコントローラ１２２は、双方向メモリバスを実装することで、メモリデバイス１２４と通信を行う。従って、メモリコントローラ１２２は、双方向メモリバスを実装し、第１０書き込み通信チャンネル１８６及び第１０読み出し通信チャンネル１８８を通じてバス１３０に結合されている。また、Ｉ／Ｏコントローラ１２６は、第１１書き込み通信チャンネル１９０及び第１１読み出し通信チャンネル１９２を通じてバス１３０に結合されている。
バスへの接続に加えて、他の種々のコンポーネント間においても接続が行われ得る。より詳細には、メモリコントローラ１２２やＩ／Ｏコントローラ１２６のようなコントローラにおいては、他のデバイスそれぞれへの接続が必要となる。メモリコントローラ１２２は、第１帯域幅制御通信チャンネル１９４を通じてメモリデバイス１２４に結合されている。Ｉ／Ｏコントローラ１２６は、第２帯域幅制御通信チャンネル１９６及び第３帯域幅制御通信チャンネル１９８を通じてＩ／Ｏデバイス１２８に対して結合されている。
【００２３】
図２Ａ、図２Ｂに示されるように、参照符号２００、２５０は、それぞれ、コマンドキュー及びＤＭＡＣの制御レジスタを示す。ＤＭＡコマンドキュー２００は、固定数のエントリを有し、各エントリは、３つのフィールド、即ちスロットフィールド２１０、ストリーミングＩＤフィールド２２０、コマンドフィールド２３０に分割されている。ＤＭＡ制御レジスタ２５０は、スロットイネーブルレジスタ２５２及び割り当てレジスタ即ちクォータレジスタ（quota register）２６６を有する。
【００２４】
ＤＭＡＣ内、例えば図１のＤＭＡＣ１１０内では、物理キュー内にコマンドキューを行うためのキューエントリ数は制限されている。入力されるＤＭＡコマンドは、使用可能なコマンドキューエントリのどれに入れてもよい。各ＤＭＡコマンドに対するスロット指定は、スロットフィールド２１０に入力される。ＤＭＡコマンドは、コマンドオプコードや、例えばストリーミングＩＤのようなオペランドより構成されることから、ストリーミングＩＤは、ストリーミングＩＤフィールド２２０に配され、コマンドオペコード及びその他のオペランドは、コマンドフィールド２３０に配される。各ストリーミングＩＤは、シングルビットスロットイネーブルレジスタ２５２内のスロット機能をイネーブル又はディスエーブルとするよう構成されており、グループ０用のスロット２５４、グループ１用のスロット２５６、グループ２用のスロット２５８のそれぞれが、イネーブルとされた状態で示されている。更に、図中にグループ０用のクォータ２６０、グループ１用のクォータ２６２、グループ２用のクォータ２６４として示されるように、特定の割当て即ちクォータが存在する。これらクォータの合計は、ＢＩＵの保留中のバスリクエストキューのサイズによって制限される。
【００２５】
スロットのイネーブル又はディスエーブルは、バス帯域幅特性のマッチング（即ち、メモリバスのようにバスが双方向であればスロット機能がディスエーブルされる）に用いられる。ストリーミングＩＤグループに対してスロット機能がイネーブルにされていれば、読み出しコマンドに対しては、スロットフィールド２１０において、値「０」が割り当てられ、書き込みコマンドに対しては、スロットフィールド２１０において値「１」が割り当てられる。スロット機能がディスエーブルの場合、読み出しコマンド及び書き込みコマンドの双方に対して、スロットフィールド２１０で値「０」が割り当てられる。
【００２６】
しかしながら、通常は、３つのバスリクエスト動作が発生し得る。即ち、プロセッサからプロセッサ、プロセッサから外部又はシステムメモリ、及びプロセッサからＩ／Ｏデバイスである。３つの動作のそれぞれは、ストリーミングＩＤグループに割り当てることができる。
【００２７】
概して、プロセッサからプロセッサへのコマンドに対しては、ストリーミングＩＤグループ０が割り当てられ、プロセッサからメモリへのコマンドへはストリーミングＩＤ１が割り当てられ、プロセッサからＩＯへのコマンドにはストリーミングＩＤグループ２が割り当てられる。この場合、ＤＭＡコマンドに関するバス帯域幅特性をマッチングさせるために、スロット機能は、ストリーミングＩＤグループ０及び２に対してはイネーブルとされ、グループ１に対してはディスエーブルとされる。
【００２８】
ＤＭＡコマンドは、通常、ＢＩＵへの１つ以上のバスリクエストに展開される。このバスリクエストは、そのサイズが制限されている、ＢＩＵの保留中のＤＭＡバスリクエストキューに入れられる。各ストリーミングＩＤグループにクォータを構成することで、このキューは、３つの仮想キューに分割される。ソフトウェアアプリケーションに応じて、３つの仮想キューのサイズは、ストリーミングＩＤクォータを通じてダイナミックに構成される。
【００２９】
図３に示されるように、参照符号３００は、修正されたＤＭＡＣ発行メカニズムからのコマンド発行フローチャートを表す。
【００３０】
図３のフローチャートにおいて３００で示されるように、ＤＭＡコマンドがコマンドキューに入れられると、ＤＭＡＣは、プロセス３００のような、コマンド発行プロセスを与えなければならない。ステップ３０２において、スロット０とスロット１との間でスロット変更を行う。ＤＭＡＣは、一方向バスタイプに対して使用可能な帯域幅の使用効率を向上させるように、スロットの変更を行う。
【００３１】
スロット０が次に実行されるよう選択された場合、ＤＭＡＣは、コマンドキューを発行するかの判定のために一連のチェックを行う。ステップ３０４において、ＤＭＡＣは、いずれのグループが、有効でペンディング状態にあるＤＭＡコマンドを有するかを判定する。各グループには、最大発行カウントあるいはクォータが関連付けられている。クォータは、システムオーバーフローを起こすことなく発行可能となるようバスリクエスト数を制限する。システムの動作を適切に維持するために、ＤＭＡＣは、ステップ３０６において、スロット内の各グループがそれぞれのクォータを既に超過しているか否かを判定する。
【００３２】
有効性及びクォータの判定がなされた後に、ＤＭＡＣは、次のコマンドを選択する。ステップ３０８において、ＤＭＡＣは、コマンドグループに対してラウンドロビン選択システムを用いる。選択時には、ステップ３１０において、ペンディング状態のコマンドに関してそれぞれのクォータ制限を超えていない有効なグループがあるか否かの判定が行われる。ペンディング状態のコマンドに関してそれぞれのクォータ制限を超過していない有効なグループがない場合、他方のスロット、スロット１に変更される。しかし、ペンディング状態のコマンドに関してそれぞれのクォータ制限に達していない有効なグループが存在する場合、ステップ３１２において、選択されたグループから最も古いコマンドが展開される。その後、ステップ３１４においてラウンドロビンにおけるポインタは次のストリーミングＩＤコマンドグループに調整されるとともにキューのサイズが小さくされ、ステップ３０２においてスロットが変更される。
【００３３】
スロット１が次に実行されるよう選択されると、ＤＭＡＣは、コマンドキューを発行するかの判定のための一連のチェックを行う。ステップ３１６において、ＤＭＡＣは、どのグループが有効なペンディング状態にあるＤＭＡコマンドを有するかを判定する。各グループには、最大発行カウントあるいはクォータが関連付けられている。クォータは、システムオーバーフローを起こすことなく発行可能となるようバスリクエスト数を制限する。システムの動作を適切に維持するために、ＤＭＡＣは、スロット内の各グループがそれぞれのクォータを既に超過しているか否かを判定する。
【００３４】
有効性及びクォータの判定がなされた後に、ＤＭＡＣは、次のコマンドを選択する。ステップ３２０において、ＤＭＡＣは、コマンドグループに対してラウンドロビン選択システムを用いる。選択時には、ステップ３２２において、ペンディング状態のコマンドに関してそれぞれのクォータ制限を超えていない有効なグループがあるか否かの判定が行われる。ペンディング状態のコマンドに関してそれぞれのクォータ制限を超過していない有効なグループがない場合、他方のスロット、スロット０に変更される。しかし、ペンディング状態のコマンドに関してそれぞれのクォータ制限に達していない有効なグループが存在する場合、ステップ３２４において、選択されたグループから最も古いコマンドが展開される。その後、ステップ３２６においてラウンドロビンにおけるポインタは次のストリーミングＩＤコマンドグループに調整されるとともにキューのサイズが小さくされ、ステップ３０２においてスロットが変更される。
【００３５】
なお、読み出しコマンドあるいは書き込みコマンドのいずれであるかにかかわらず、プロセッサからメモリへのすべてのコマンドは、スロット０を通じて展開される。このような多数のコマンドの発行は、効率向上のために行われる。双方向バスにおける通信方向の変更には、時間がかかる。更に、外部メモリに関しては、個々にプロセスリクエストを行い得る複数のバンクが存在し、従って、外部メモリは、複数のコマンドを受信可能となっている。また、リクエストを処理するためには非常に長時間を要する。従って、双方向バスにおける通信方向の変更を最小限にしてパラレル読み込みあるいはパラレル書き込みを最大限にするためには、外部メモリへのバースト読み出しあるいはバースト書き込みによって処理するリクエスト数をできる限り多数とすることが望ましい。
【００３６】
更に、以上の説明から、本発明の好適実施形態に対して、その真の趣旨を逸脱することなく、種々の修正及び変更が可能であることが理解されよう。この説明は、例示のみを目的とするものであり、本願の限定するものとして解釈すべものではない。本発明の範囲は、添付したクレームによってのみ限定されるものである。
【００３７】
以上、本発明を好適実施形態を参照して説明したが、ここに記載した実施形態は、例示的なものであり、本質的な限定となるものではない。従って、上述の例に関しては、広汎な変形、修正、変更、及び置き換えが可能であり、幾つかの例においては、本発明の幾つかのフィーチャーを、他の対応するフィーチャを使用することなく用いることが可能である。上述の説明及び実施形態を査読することによって、当業者であれば、これらの変形及び修正が望ましい場合もあることが理解されよう。従って、添付したクレームは、本発明の範囲に一致する範囲で広汎に解釈されるべきものである。
【図面の簡単な説明】
【００３８】
【図１】ＤＭＡＣを用いたマルチプロセッサコンピュータシステムの説明図。
【図２Ａ】改良されたＤＭＡＣコマンドキューの説明図。
【図２Ｂ】改良されたＤＭＡＣコマンドキューの説明図。
【図３】ＤＭＡＣ発行メカニズムを通じたコマンド発行を示すフローチャート。
【符号の説明】
【００３９】
１００                    システム
１０１、１０３            プロセッサ
１０５                    プロセッサ
１０４、１０６、１０８    プロセッサコア
１２２                    メモリコントローラ
１２４                    メモリデバイス
１２６                    コントローラ
１２８                    Ｉ／Ｏデバイス
１３０                    バス
１９４、１９６、１９８    帯域幅制御通信チャンネル
２００                    コマンドキュー
２１０                    スロットフィールド
２３０                    コマンドフィールド
２５０                    制御レジスタ
２５２                    スロットイネーブルレジスタ
２５４、２５６、２５８    スロット
２６０、２６２、２６４    クォータ
【図１】
0005058116.tif 000002
【図２Ａ】
0005058116.tif 000003
【図２Ｂ】
0005058116.tif 000004
【図３】
0005058116.tif 000005