JP5058116B2 - ストリーミングidメソッドによるdmac発行メカニズム - Google Patents

ストリーミングidメソッドによるdmac発行メカニズム Download PDF

Info

Publication number
JP5058116B2
JP5058116B2 JP2008260019A JP2008260019A JP5058116B2 JP 5058116 B2 JP5058116 B2 JP 5058116B2 JP 2008260019 A JP2008260019 A JP 2008260019A JP 2008260019 A JP2008260019 A JP 2008260019A JP 5058116 B2 JP5058116 B2 JP 5058116B2
Authority
JP
Japan
Prior art keywords
group
slot
command
valid
processor
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.)
Active
Application number
JP2008260019A
Other languages
English (en)
Other versions
JP2009037639A (ja
Inventor
エドワード キング マシュー
ピーター リュウ ペイチュン
ムイ ディビッド
剛 山崎
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sony Interactive Entertainment Inc
Original Assignee
Sony Interactive Entertainment Inc
Sony Computer Entertainment Inc
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 Sony Interactive Entertainment Inc, Sony Computer Entertainment Inc filed Critical Sony Interactive Entertainment Inc
Publication of JP2009037639A publication Critical patent/JP2009037639A/ja
Application granted granted Critical
Publication of JP5058116B2 publication Critical patent/JP5058116B2/ja
Active 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/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • 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/36Handling requests for interconnection or transfer for access to common bus or bus system
    • G06F13/362Handling requests for interconnection or transfer for access to common bus or bus system with centralised access control
    • G06F13/3625Handling requests for interconnection or transfer for access to common bus or bus system with centralised access control using a time dependent access

Description

本発明は、概して、ダイレクトメモリアクセス(Direct Memory Access:DMA)リクエストコマンドの発行に関し、より詳細には、コマンドキューの操作に関する。
過去数年間にわたって、DMAはコンピュータアーキテクチャの重要な一端を担うようになっている。DMAに加えて、更に処理能力を高速化するためにDMAを用いたマルチプロセッサシステムが開発されている。特にDMAに関しては、プロセッサからDMAコントローラ(DMAC)に対して発行可能でDMACでの実行を要求するリクエストあるいはコマンドとして、通常、二つのタイプ、即ち、読み出しと書き込みが存在する。しかし、システムに応じて、個々のプロセッサは、入出力(I/O)デバイス、他のプロセッサのローカルメモリ、メモリデバイス、及びその他に関して読み出し及び書き込みを行うこともできる。
しかしながら、最近では、マルチプロセッサ及びDMACが単一チップに組み込まれる。単一チップの小型化によって、高速化だけでなく、サイズの小型化も可能となっている。DMAC、プロセッサ、バスインターフェースユニット(Bus Interface Unit:BIU)、及びバスをすべて一つのチップに組み込むことができる。このようなシステムのデータフローは、DMAコマンドのディスパッチを行うプロセッサコアを起点とし、コマンドがDMAコマンドキューに格納される。各DMAコマンドは、BIUへの、より小さなバスリクエストに展開又はまたは分割することができる。その結果得られる展開されたリクエストは、BIUの保留中のバスリクエストキューに格納される。BIUは、その後、このリクエストをバスコントローラに送る。一般に、リクエストは、DMAから受信された順番で、BIUから送信される。バスリクエストが完了した後、BIUのバスリクエストキューエントリは、新たなDMAリクエストを受信可能な状態となる。
一方、ソースデバイス、即ち要求元デバイスにおけるBIUの保留中のバスリクエストキューと相手側デバイスにおけるスヌープキューの物理的サイズがボトルネックとなる場合もある。このボトルネックは、通常、実行コマンドのキューオーダー及び/又はディレイの関数となっている。他のプロセッサのローカルメモリから読み出しを行う第2コマンドを例にとると、ダイナミックランダムアクセスメモリ(Dynamic Randam Access Memory:DRAM)に格納される第1コマンドを待ち受けすることで、ディレイが発生する場合もある。従って、その結果生じるボトルネックにより、動作速度に劇的な遅れが生じるおそれもある。
DMAコマンドの実行順がボトルネックの原因となることもある。これは、ある種のコマンドは、他のコマンドよりも高速に実行されることによる。例えば、同一チップ内のプロセッサ間でデータの移動を行うDMAコマンド実行は、通常長時間を要する他の外部メモリあるいはI/OデバイスへのDMAコマンド実行よりも高速に完了させることができる。その結果、メモリあるいはI/Oデバイスに対するデータ移動のためのDMAコマンドは、BIU保留中のリクエストキューに、より長時間留まることになる。更に、BIU保留中のリクエストキューは、より遅いバスリクエストにより完全に占拠されて、DMAからの更なるバスリクエストに対して全く、あるいは殆ど実行の余地がなくなってしまうおそれがある。これにより、BIUの保留中のバスリクエストキューに空きがでるまで、プロセッサを停止状態にしなければならないことから、プロセッサのパフォーマンスが悪化してしまう。
ボトルネックの他の要因としてはリトライが挙げられる。複数の要求元デバイスが同じ相手側デバイスへのデータ移動、あるいは相手側デバイスからのデータ移動を行う場合、相手側のデバイスは、スヌープキューがフル状態の場合にはバスリクエストを拒否しなくてはならない。これにより、要求元デバイスは、同じバスリクエストのリトライを後に行うことになってしまう。
ボトルネックのさらに他の要因としては、同一の相手側デバイスにおけるコマンド実行順が挙げられる。従来のDRAMアクセスにおいて、DRAMデバイスは、連続するメモリバンクに対してパラレルに動作が可能である。更に、双方向バスは、通常、DRAMデバイスとのインタフェースに用いられている。データの移動方向が頻繁に変更される場合、バスの方向変更すなわちターンアラウンドに要するバスサイクルが更に必要になることから、バスバンド幅が減少する。また、より大きなパラレルDRAMアクセスを得るためには、同じメモリページに対して連続した読み出しあるいは書き込みを行うことが好ましい。
従って、上述の課題を解決するための、DMA発行メカニズムを効率化するための方法及び/又は装置が必要とされている。
本発明によれば、DMAC内のコマンドを実行するための方法及びコンピュータプログラムが提供される。最初にスロットが選択される。スロットが選択されると、選択されたスロットにおけるどのグループが有効であるかが判定される。有効なグループがない場合、他のスロットが選択される。しかし、有効なグループが少なくとも一つある場合、グループを選択するためにラウンドロビン調停スキームが用いられる。選択されたグループ内で、ペンディング状態にある、保留中のコマンドのうち最も古いものが選択され、展開される。展開されたバスリクエストは、その後、BIUへとディスパッチされる。展開後、DMAコマンドパラメータが更新され、DMAコマンドキューへと書き戻される。
また、本発明の一形態によれば、プロセッシングエレメントからのストリーミングIDを用いたダイレクトメモリアクセス(DMA)リクエストコマンドの発行システムであって、バス手段を有し、発行ロジック手段を備えたDMAコントローラ(DMAC)手段を有し、キュー保留手段を備えたバスインターフェースユニット(BIU)を有し、前記BIU手段は、前記バスと前記DMAC手段との間に接続されており、前記バス手段に接続され、外部メモリ、入出力(IO)手段、及びオンチップメモリを備えたバスターゲット手段を有し、前記バス手段は、前記BIUと前記バスターゲット手段との間に接続されたものであり、前記発行ロジック手段は、いずれのコマンドをコマンドバスリクエストとして展開するか否かを決定し、この決定は、スロット変更、ストリーミングID、前記コマンドの新旧の少なくともいずれか一つを要素とする発行ポリシーの関数としてなされ、前記キュー保留手段は、前記各バスリクエストを、前記バスに対して発行する前に保留状態とする、システムも提供される。
ラウンドロビンストリーミングIDグループでは、例えば、ストリーミングIDグループの選択は、ラウンドロビン式で行われる。
上述した発行ポリシーでは、コマンドの新旧に代えて、コマンドのDMACへの入力順を要素として用いることもできる。
また、DMAC内のコマンドの発行を行う方法であって、複数のスロットのうちから選択スロットを選出し、前記選択スロットのグループ有効性を判定し、有効なグループが存在しない場合には、前記複数のスロットのうちから他のスロットを選出し、少なくとも一つのスロットが有効である場合には、最も古い有効コマンドを選出し、前記最も古い有効コマンドが含まれるグループに対してグループ特性の更新を行う方法も提供される。
この方法において、前記キュー特性を更新するステップでは、最も古い有効コマンドが含まれていたグループに対するポインタを次のペンディング状態のバスリクエストへと移動させることもできる。例えば、グループを選択するためにラウンドロビン調停スキームを用い、このラウンドロビン調停において、最も古い有効コマンドが含まれていたグループに対するポインタを次のペンディング状態のバスリクエストへと移動すること、つまり、最も古い有効コマンドが含まれていたグループから次のペンディング状態のバスリクエストへと処理を進めることも可能である。
なお、オンチップメモリとしては、キャッシュメモリ、ローカルストア、メモリーマップドI/O(MMIO)が挙げられる。
以下、本発明を説明すると、それぞれ属性の異なるメモリアクセスを生成する複数のDMAコマンドがDMACのキューに存在するとき(例えば、読出しDMAコマンドと書込みDMAコマンド)、読出しと書込みとを交互に行った方が、読出しないしは書込みを連続して行う場合よりもメモリアクセスが向上する場合が存在する。通常、単独のDMAコマンドは複数のメモリアクセスに分解されて実行されるので、一度に一つずつのDMAコマンドを実行すると、読出しメモリアクセス、あるいは書込みメモリアクセスが連続して発行され、メモリシステムの効率を低下させる場合がある。
これを回避するため、本発明では、メモリアクセス発行タイミングを、「スロット」という概念でコントロールしている。例えば、連続した一定タイミングTごとにメモリアクセスが可能になる場合、時間2Tを読出しメモリアクセススロット、時間2T+1を書込みメモリアクセススロットとして規定し、読出しと書込みとを交互に発行するよう制御することが可能である。
たとえば、システムによっては、プロセッサからメモリへのアクセスは読出しアクセスと書込みアクセスのどちらかが連続しても効率は低下しないが、プロセッサからプロセッサ、プロセッサからI/Oへのアクセスでは、読出しあるいは書込みが連続すると、効率が低下する場合もある。
従って、メモリアクセス発行タイミングをスロット単位でコントロールすることにより、効率を損うことを防ぐことができる。
一方、ストリーミングIDを用いてメモリアクセス速度を高速に維持することもできる。ストリーミングIDは、属性の異なるアクセス対象、例えばメモリとI/Oへのアクセスを、メモリアクセス実行形において区別したいときに利用できる。例えば、メモリへのアクセスよりもI/Oへのアクセスが非常に長い処理時間を要する場合、メモリへのアクセスとI/Oへのアクセスを同一の比率でバスインターフェースユニットのキューに投入すると、I/Oへのアクセスと同程度の、本来よりも遅い速度でしかメモリアクセスを実施できなくなってしまうおそれがある。これを防ぐため、例えば、メモリアクセスとI/Oへのアクセスに別々のクォータを与えることができる。この場合、I/Oへのアクセスが自分のクォータを使い切ってI/Oへのアクセスが停止しても、メモリへのアクセスは別のクォータを用いて処理を継続できるため、性能の低下を回避することができる。
以上のように、スロットを用いたコントロールと、ストリーミングIDとは、別個に動作するものであり、後述の実施形態では、スロットを用いたコントロールとストリーミングIDとを組合わせた例を示すが、これらをそれぞれ別個に実施することも勿論可能である。
本発明及びその利点は、以下の図面を参照することでより一層理解されるであろう。
以下の説明において、本発明の理解を深めるために、種々の詳細が示されている。しかしながら、当業者であれば、本発明は、このような特定の詳細に束縛されることなく実施できることが理解されよう。他の例において、周知のエレメントが図示されているが、これらは本発明を不明瞭にしないよう、必須ではない細部まで示したものである。加えて、多くの場合、ネットワーク通信、電磁信号技術等は当業者にとって周知な範疇のものであり、本発明を完全に理解するに必須でない限りは省略するものとした。
更に、特に断りのない限り、ここに記述する全ての機能はハードウェア、ソフトウェア、及びこれらの組み合わせのいずれの形態において実現してもよいものである。しかしながら、好適実施形態において、特に断りのない限り、これらの機能は、このような機能を実現するようにコードされたコンピュータプログラムコード、ソフトウェア、及び/又は集積回路電子データプロセッサあるいはコンピュータのようなコードにより実行される。
図1において、参照符号100は、DMACを用いたマルチプロセッサコンピュータシステムを示す。このシステム100は、第1プロセッサ101、第2プロセッサ103、第3プロセッサ105、バス130、メモリコントローラ122、メモリデバイス124、I/Oコントローラ126、及びI/Oデバイス128を有する。加えて、システム100で使用可能な種々のタイプの記録デバイスあるいはメモリデバイスが含まれる。また、図1に示されるようにマルチプロセッサとしても、あるいは単一プロセッサとしてもよい。
各プロセッサ101、103、及び105は、データ通信形態が共通するように構成されている。各第1プロセッサ101、第2プロセッサ103、及び第3プロセッサ105は、第1プロセッサコア104、第2プロセッサコア106、第3プロセッサコア108をそれぞれ有する。第1プロセッサコア104は、第1読み出し通信チャンネル152及び第1書き込み通信チャンネル150を通じて第1DMAC110に結合されている。第2プロセッサコア106は、第2読み出し通信チャンネル156及び第2書き込み通信チャンネル154を通じて第2DMAC112に結合されている。第3プロセッサコア108は、第2読み出し通信チャンネル160及び第2書き込み通信チャンネル158を通じて第2DMAC112に結合されている。第1DMAC110は、第4書き込み通信チャンネル162及び第4読み出し通信チャンネル164を通じて第1BIU116に結合されている。第2DMAC112は、第5書き込み通信チャンネル166及び第5読み出し通信チャンネル168を通じて第2BIU118に結合されている。第3DMAC114は、第6書き込み通信チャンネル170及び第6読み出し通信チャンネル172を通じて第3BIU120に結合されている。
各プロセッサのそれぞれは、同様に動作する。コマンドは、読み出しあるいは書き込みにかかわらず、プロセッサコア内にある。与えられたプロセッサから発行され得るコマンドには様々なものがある。しかし、説明の都合上、これらは、それぞれ別個の3種のコマンドタイプに絞られる。つまり、プロセッサからプロセッサ、プロセッサからメモリデバイス、プロセッサからI/Oデバイス、の3種類である。これらのコマンドがプロセッサコアにより発行されると、コマンドはDMACに送られる。DMACは、その後、コマンドを展開してBIUへと送り、BIUでは、保留中のリクエストキューが、この展開されたバスリクエストを格納する。その後、バスリクエストはバスへと送られる。バスコントローラがリクエストを出すと、要求元デバイスと相手側デバイスとでデータ転送を行ってバスリクエストを完了させる。
DMACを用いたマルチプロセッサコンピュータシステム100は、データやバスリクエストの通信を種々のコンポーネント間で行うためにバス130を使用して動作する。第1プロセッサ101は、第7書き込み通信チャンネル174及び第7読み出し通信チャンネル176を通じてバス130に結合される。第2プロセッサ103は、第8書き込み通信チャンネル178及び第8読み出し通信チャンネル180を通じてバス130に結合される。第3プロセッサ105は、第9書き込み通信チャンネル182及び第9読み出し通信チャンネル184を通じてバス130に結合されている。
メモリコントローラ122は、双方向メモリバスを実装することで、メモリデバイス124と通信を行う。従って、メモリコントローラ122は、双方向メモリバスを実装し、第10書き込み通信チャンネル186及び第10読み出し通信チャンネル188を通じてバス130に結合されている。また、I/Oコントローラ126は、第11書き込み通信チャンネル190及び第11読み出し通信チャンネル192を通じてバス130に結合されている。
バスへの接続に加えて、他の種々のコンポーネント間においても接続が行われ得る。より詳細には、メモリコントローラ122やI/Oコントローラ126のようなコントローラにおいては、他のデバイスそれぞれへの接続が必要となる。メモリコントローラ122は、第1帯域幅制御通信チャンネル194を通じてメモリデバイス124に結合されている。I/Oコントローラ126は、第2帯域幅制御通信チャンネル196及び第3帯域幅制御通信チャンネル198を通じてI/Oデバイス128に対して結合されている。
図2A、図2Bに示されるように、参照符号200、250は、それぞれ、コマンドキュー及びDMACの制御レジスタを示す。DMAコマンドキュー200は、固定数のエントリを有し、各エントリは、3つのフィールド、即ちスロットフィールド210、ストリーミングIDフィールド220、コマンドフィールド230に分割されている。DMA制御レジスタ250は、スロットイネーブルレジスタ252及び割り当てレジスタ即ちクォータレジスタ(quota register)266を有する。
DMAC内、例えば図1のDMAC110内では、物理キュー内にコマンドキューを行うためのキューエントリ数は制限されている。入力されるDMAコマンドは、使用可能なコマンドキューエントリのどれに入れてもよい。各DMAコマンドに対するスロット指定は、スロットフィールド210に入力される。DMAコマンドは、コマンドオプコードや、例えばストリーミングIDのようなオペランドより構成されることから、ストリーミングIDは、ストリーミングIDフィールド220に配され、コマンドオペコード及びその他のオペランドは、コマンドフィールド230に配される。各ストリーミングIDは、シングルビットスロットイネーブルレジスタ252内のスロット機能をイネーブル又はディスエーブルとするよう構成されており、グループ0用のスロット254、グループ1用のスロット256、グループ2用のスロット258のそれぞれが、イネーブルとされた状態で示されている。更に、図中にグループ0用のクォータ260、グループ1用のクォータ262、グループ2用のクォータ264として示されるように、特定の割当て即ちクォータが存在する。これらクォータの合計は、BIUの保留中のバスリクエストキューのサイズによって制限される。
スロットのイネーブル又はディスエーブルは、バス帯域幅特性のマッチング(即ち、メモリバスのようにバスが双方向であればスロット機能がディスエーブルされる)に用いられる。ストリーミングIDグループに対してスロット機能がイネーブルにされていれば、読み出しコマンドに対しては、スロットフィールド210において、値「0」が割り当てられ、書き込みコマンドに対しては、スロットフィールド210において値「1」が割り当てられる。スロット機能がディスエーブルの場合、読み出しコマンド及び書き込みコマンドの双方に対して、スロットフィールド210で値「0」が割り当てられる。
しかしながら、通常は、3つのバスリクエスト動作が発生し得る。即ち、プロセッサからプロセッサ、プロセッサから外部又はシステムメモリ、及びプロセッサからI/Oデバイスである。3つの動作のそれぞれは、ストリーミングIDグループに割り当てることができる。
概して、プロセッサからプロセッサへのコマンドに対しては、ストリーミングIDグループ0が割り当てられ、プロセッサからメモリへのコマンドへはストリーミングID1が割り当てられ、プロセッサからIOへのコマンドにはストリーミングIDグループ2が割り当てられる。この場合、DMAコマンドに関するバス帯域幅特性をマッチングさせるために、スロット機能は、ストリーミングIDグループ0及び2に対してはイネーブルとされ、グループ1に対してはディスエーブルとされる。
DMAコマンドは、通常、BIUへの1つ以上のバスリクエストに展開される。このバスリクエストは、そのサイズが制限されている、BIUの保留中のDMAバスリクエストキューに入れられる。各ストリーミングIDグループにクォータを構成することで、このキューは、3つの仮想キューに分割される。ソフトウェアアプリケーションに応じて、3つの仮想キューのサイズは、ストリーミングIDクォータを通じてダイナミックに構成される。
図3に示されるように、参照符号300は、修正されたDMAC発行メカニズムからのコマンド発行フローチャートを表す。
図3のフローチャートにおいて300で示されるように、DMAコマンドがコマンドキューに入れられると、DMACは、プロセス300のような、コマンド発行プロセスを与えなければならない。ステップ302において、スロット0とスロット1との間でスロット変更を行う。DMACは、一方向バスタイプに対して使用可能な帯域幅の使用効率を向上させるように、スロットの変更を行う。
スロット0が次に実行されるよう選択された場合、DMACは、コマンドキューを発行するかの判定のために一連のチェックを行う。ステップ304において、DMACは、いずれのグループが、有効でペンディング状態にあるDMAコマンドを有するかを判定する。各グループには、最大発行カウントあるいはクォータが関連付けられている。クォータは、システムオーバーフローを起こすことなく発行可能となるようバスリクエスト数を制限する。システムの動作を適切に維持するために、DMACは、ステップ306において、スロット内の各グループがそれぞれのクォータを既に超過しているか否かを判定する。
有効性及びクォータの判定がなされた後に、DMACは、次のコマンドを選択する。ステップ308において、DMACは、コマンドグループに対してラウンドロビン選択システムを用いる。選択時には、ステップ310において、ペンディング状態のコマンドに関してそれぞれのクォータ制限を超えていない有効なグループがあるか否かの判定が行われる。ペンディング状態のコマンドに関してそれぞれのクォータ制限を超過していない有効なグループがない場合、他方のスロット、スロット1に変更される。しかし、ペンディング状態のコマンドに関してそれぞれのクォータ制限に達していない有効なグループが存在する場合、ステップ312において、選択されたグループから最も古いコマンドが展開される。その後、ステップ314においてラウンドロビンにおけるポインタは次のストリーミングIDコマンドグループに調整されるとともにキューのサイズが小さくされ、ステップ302においてスロットが変更される。
スロット1が次に実行されるよう選択されると、DMACは、コマンドキューを発行するかの判定のための一連のチェックを行う。ステップ316において、DMACは、どのグループが有効なペンディング状態にあるDMAコマンドを有するかを判定する。各グループには、最大発行カウントあるいはクォータが関連付けられている。クォータは、システムオーバーフローを起こすことなく発行可能となるようバスリクエスト数を制限する。システムの動作を適切に維持するために、DMACは、スロット内の各グループがそれぞれのクォータを既に超過しているか否かを判定する。
有効性及びクォータの判定がなされた後に、DMACは、次のコマンドを選択する。ステップ320において、DMACは、コマンドグループに対してラウンドロビン選択システムを用いる。選択時には、ステップ322において、ペンディング状態のコマンドに関してそれぞれのクォータ制限を超えていない有効なグループがあるか否かの判定が行われる。ペンディング状態のコマンドに関してそれぞれのクォータ制限を超過していない有効なグループがない場合、他方のスロット、スロット0に変更される。しかし、ペンディング状態のコマンドに関してそれぞれのクォータ制限に達していない有効なグループが存在する場合、ステップ324において、選択されたグループから最も古いコマンドが展開される。その後、ステップ326においてラウンドロビンにおけるポインタは次のストリーミングIDコマンドグループに調整されるとともにキューのサイズが小さくされ、ステップ302においてスロットが変更される。
なお、読み出しコマンドあるいは書き込みコマンドのいずれであるかにかかわらず、プロセッサからメモリへのすべてのコマンドは、スロット0を通じて展開される。このような多数のコマンドの発行は、効率向上のために行われる。双方向バスにおける通信方向の変更には、時間がかかる。更に、外部メモリに関しては、個々にプロセスリクエストを行い得る複数のバンクが存在し、従って、外部メモリは、複数のコマンドを受信可能となっている。また、リクエストを処理するためには非常に長時間を要する。従って、双方向バスにおける通信方向の変更を最小限にしてパラレル読み込みあるいはパラレル書き込みを最大限にするためには、外部メモリへのバースト読み出しあるいはバースト書き込みによって処理するリクエスト数をできる限り多数とすることが望ましい。
更に、以上の説明から、本発明の好適実施形態に対して、その真の趣旨を逸脱することなく、種々の修正及び変更が可能であることが理解されよう。この説明は、例示のみを目的とするものであり、本願の限定するものとして解釈すべものではない。本発明の範囲は、添付したクレームによってのみ限定されるものである。
以上、本発明を好適実施形態を参照して説明したが、ここに記載した実施形態は、例示的なものであり、本質的な限定となるものではない。従って、上述の例に関しては、広汎な変形、修正、変更、及び置き換えが可能であり、幾つかの例においては、本発明の幾つかのフィーチャーを、他の対応するフィーチャを使用することなく用いることが可能である。上述の説明及び実施形態を査読することによって、当業者であれば、これらの変形及び修正が望ましい場合もあることが理解されよう。従って、添付したクレームは、本発明の範囲に一致する範囲で広汎に解釈されるべきものである。
DMACを用いたマルチプロセッサコンピュータシステムの説明図。 改良されたDMACコマンドキューの説明図。 改良されたDMACコマンドキューの説明図。 DMAC発行メカニズムを通じたコマンド発行を示すフローチャート。
符号の説明
100 システム
101、103 プロセッサ
105 プロセッサ
104、106、108 プロセッサコア
122 メモリコントローラ
124 メモリデバイス
126 コントローラ
128 I/Oデバイス
130 バス
194、196、198 帯域幅制御通信チャンネル
200 コマンドキュー
210 スロットフィールド
230 コマンドフィールド
250 制御レジスタ
252 スロットイネーブルレジスタ
254、256、258 スロット
260、262、264 クォータ

Claims (10)

  1. DMACが、コマンドの発行を、コマンド発行タイミングを複数のスロットに時分割して制御する方法であって、
    前記コマンドは、当該コマンドに割り当てられたストリーミングIDによって複数のグループにグループ化されており、
    前記DMACは、前記複数のグループに対して、それぞれストリーミングIDにより機能がイネーブル又はディスエーブルとされるようにスロットの制御を行い、
    前記スロットの制御では、
    前記複数のスロットのうちから選択スロットを選出し、
    前記選択スロット内に含まれるグループに対して、グループ内のコマンドが発行可能である場合に、当該グループが有効であると判定することで、グループの有効性を判定し、
    前記選択スロットに有効なグループが存在しない場合には、前記複数のスロットのうちから他のスロットを選出し、
    更に、前記DMACは、
    少なくとも一つのスロットに有効なグループが存在する場合には、当該有効なグループ内のコマンドのうち最も古いコマンドを選出してコマンドを発行し、
    前記最も古いコマンドが含まれるグループに対してグループ特性の更新を行う、方法。
  2. 前記スロットを選出するステップでは、読み出しスロット又は書き込みスロットが選出される、請求項1記載の方法。
  3. 前記グループ有効性を判定するステップでは、
    各グループが予めプログラムされたクォータに達しているか否かを判定する、請求項1記載の方法。
  4. 前記グループ特性を更新するステップでは、最も古い有効コマンドが含まれていたグループに対するポインタを次のグループへと移動させる、請求項1記載の方法。
  5. DMAC内のコマンドの発行を、コマンド発行タイミングを複数のスロットに時分割して制御するするためのコンピュータプログラムであって、
    前記コマンドは、当該コマンドに割り当てられたストリーミングIDによって複数のグループにグループ化されており、
    前記複数のグループに対して、それぞれストリーミングIDにより機能がイネーブル又はディスエーブルとされるようにスロットの制御を行う処理と、
    前記複数のスロットから選択スロットを選出する処理と、
    前記選択スロット内に含まれるグループに対して、グループ内のコマンドが発行可能である場合に、当該グループが有効であると判定することで、グループの有効性を判定する処理と、
    前記選択スロットに有効なグループが存在しない場合に、前記複数のスロットから他のスロットを選出する処理と、
    少なくとも一つのスロットに有効なグループが存在する場合には、当該有効なグループ内のコマンドのうち最も古いコマンドを選出してコマンドを発行する処理と、
    前記最も古い有効コマンドが存在するグループのグループ特性を更新する処理と、を前記DMACに実行させるための、コンピュータプログラム。
  6. 前記スロットを選出する処理は、読み出しスロット又は書き込みスロットを選択するための処理を含む、請求項5記載のコンピュータプログラム。
  7. 前記グループ有効性を判定する処理は、
    各グループが予めプログラムされたクォータに達しているか否かを判定する処理を含む、請求項6記載のコンピュータプログラム。
  8. DMAC内のコマンドを発行するためのプロセッサであって、前記プロセッサは、コマンド発行タイミングを複数のスロットに時分割して制御するとともに、前記コマンドは、当該コマンドに割り当てられたストリーミングIDによって複数のグループにグループ化されており、
    前記複数のグループに対して、それぞれストリーミングIDにより機能がイネーブル又はディスエーブルとされるようにスロットの制御を行う処理と、
    前記複数のスロットから選択スロットを選出する処理と、
    前記選択スロット内に含まれるグループに対して、グループ内のコマンドが発行可能である場合に、当該グループが有効であると判定することで、グループの有効性を判定する処理と、
    前記選択スロットに有効なグループが存在しない場合に、前記複数のスロットから他のスロットを選出する処理と、
    少なくとも一つのスロットに有効なグループが存在する場合には、当該有効なグループ内のコマンドのうち最も古いコマンドを選出する処理と、
    前記最も古い有効コマンドが存在するグループのグループ特性を更新するための処理と、を実行するプロセッサ。
  9. 前記スロットを選出する処理には、更に、読み出しスロット又は書き込みスロットを選出する処理が含まれる、請求項記載のプロセッサ。
  10. 前記グループ有効性を判定する処理は、更に、
    各グループが予めプログラムされたクォータに達しているか否かを判定する処理が含まれる、請求項記載のプロセッサ。
JP2008260019A 2004-07-29 2008-10-06 ストリーミングidメソッドによるdmac発行メカニズム Active JP5058116B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/902,473 2004-07-29
US10/902,473 US20060026308A1 (en) 2004-07-29 2004-07-29 DMAC issue mechanism via streaming ID method

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2005220770A Division JP4440181B2 (ja) 2004-07-29 2005-07-29 ストリーミングidメソッドによるdmac発行メカニズム

Publications (2)

Publication Number Publication Date
JP2009037639A JP2009037639A (ja) 2009-02-19
JP5058116B2 true JP5058116B2 (ja) 2012-10-24

Family

ID=35717681

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2005220770A Active JP4440181B2 (ja) 2004-07-29 2005-07-29 ストリーミングidメソッドによるdmac発行メカニズム
JP2008260019A Active JP5058116B2 (ja) 2004-07-29 2008-10-06 ストリーミングidメソッドによるdmac発行メカニズム

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2005220770A Active JP4440181B2 (ja) 2004-07-29 2005-07-29 ストリーミングidメソッドによるdmac発行メカニズム

Country Status (7)

Country Link
US (1) US20060026308A1 (ja)
EP (1) EP1704487B1 (ja)
JP (2) JP4440181B2 (ja)
CN (1) CN100573489C (ja)
AT (1) ATE373845T1 (ja)
DE (1) DE602005002533T2 (ja)
WO (1) WO2006011063A2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100677511B1 (ko) * 2005-08-12 2007-02-02 엘지전자 주식회사 Bcast서비스 시스템 및 이를 이용한 콘텐츠 전송방법
US20080220047A1 (en) * 2007-03-05 2008-09-11 Sawhney Amarpreet S Low-swelling biocompatible hydrogels
CN103533090A (zh) * 2013-10-23 2014-01-22 中国科学院声学研究所 单个物理网口模拟为多个逻辑网口的映射方法与装置

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2628079B2 (ja) * 1988-11-25 1997-07-09 三菱電機株式会社 マルチプロセサシステムにおけるダイレクト・メモリ・アクセス制御装置
CA2069711C (en) * 1991-09-18 1999-11-30 Donald Edward Carmon Multi-media signal processor computer system
US5475850A (en) * 1993-06-21 1995-12-12 Intel Corporation Multistate microprocessor bus arbitration signals
US5619728A (en) * 1994-10-20 1997-04-08 Dell Usa, L.P. Decoupled DMA transfer list storage technique for a peripheral resource controller
US5826106A (en) * 1995-05-26 1998-10-20 National Semiconductor Corporation High performance multifunction direct memory access (DMA) controller
EP0804033A3 (en) * 1996-04-26 2003-12-10 Texas Instruments Incorporated Improvements in or relating to electronic devices
JPH1040211A (ja) * 1996-04-30 1998-02-13 Texas Instr Inc <Ti> パケット化されたデータ通信インタフェース機器内での直接メモリアクセス優先順位を割り当てるための方法ならびにdmaチャンネル回路
US6112265A (en) * 1997-04-07 2000-08-29 Intel Corportion System for issuing a command to a memory having a reorder module for priority commands and an arbiter tracking address of recently issued command
JP3602293B2 (ja) * 1997-04-22 2004-12-15 株式会社ソニー・コンピュータエンタテインメント データ転送方法及び装置
US7133940B2 (en) * 1997-10-14 2006-11-07 Alacritech, Inc. Network interface device employing a DMA command queue
US6347344B1 (en) * 1998-10-14 2002-02-12 Hitachi, Ltd. Integrated multimedia system with local processor, data transfer switch, processing modules, fixed functional unit, data streamer, interface unit and multiplexer, all integrated on multimedia processor
KR100708096B1 (ko) * 2000-07-21 2007-04-16 삼성전자주식회사 버스 시스템 및 그 실행 순서 조정방법
US6738836B1 (en) * 2000-08-31 2004-05-18 Hewlett-Packard Development Company, L.P. Scalable efficient I/O port protocol
US6874039B2 (en) * 2000-09-08 2005-03-29 Intel Corporation Method and apparatus for distributed direct memory access for systems on chip
JP2002163239A (ja) * 2000-11-22 2002-06-07 Toshiba Corp マルチプロセッサシステムおよびその制御方法
US7110431B2 (en) * 2001-03-14 2006-09-19 Mercury Computer Systems, Inc. Hardware and software for performing computations in a short-code spread-spectrum communications system
US6981073B2 (en) * 2001-07-31 2005-12-27 Wis Technologies, Inc. Multiple channel data bus control for video processing
US20040073721A1 (en) * 2002-10-10 2004-04-15 Koninklijke Philips Electronics N.V. DMA Controller for USB and like applications

Also Published As

Publication number Publication date
CN100573489C (zh) 2009-12-23
EP1704487A2 (en) 2006-09-27
WO2006011063A2 (en) 2006-02-02
JP4440181B2 (ja) 2010-03-24
US20060026308A1 (en) 2006-02-02
DE602005002533D1 (de) 2007-10-31
EP1704487B1 (en) 2007-09-19
DE602005002533T2 (de) 2008-06-26
JP2006048691A (ja) 2006-02-16
CN1910562A (zh) 2007-02-07
ATE373845T1 (de) 2007-10-15
JP2009037639A (ja) 2009-02-19
WO2006011063A3 (en) 2006-06-15

Similar Documents

Publication Publication Date Title
EP3729281B1 (en) Scheduling memory requests with non-uniform latencies
US9141568B2 (en) Proportional memory operation throttling
JP5583180B2 (ja) 仮想gpu
JP5787629B2 (ja) マシンビジョン用マルチプロセッサシステムオンチップ
KR100420706B1 (ko) 가변폭버스의동시적인액세스를이용하는다중프로세서시스템에서i/o제어를위한방법및시스템
US6081851A (en) Method and apparatus for programming a remote DMA engine residing on a first bus from a destination residing on a second bus
US6775727B2 (en) System and method for controlling bus arbitration during cache memory burst cycles
US20190196996A1 (en) Dynamically determining memory access burst length
US10846253B2 (en) Dynamic page state aware scheduling of read/write burst transactions
US20120137090A1 (en) Programmable Interleave Select in Memory Controller
KR100296718B1 (ko) 다중프로세서 시스템에서 가변폭 버스를 동시에 액세스하기 위한 방법 및 시스템
US20200133905A1 (en) Memory request management system
KR19990029294A (ko) 가변폭 버스의 동시적인 액세스를 이용하는 다중프로세서시스템에서 버스중재를 위한 방법 및 시스템
JP2012038293A5 (ja)
WO2014133705A1 (en) A method, apparatus, system for representing, specifying and using deadlines
KR20050051672A (ko) 스케일러블 멀티채널 메모리 액세스를 위한 방법 및 메모리제어기
EP3732578B1 (en) Supporting responses for memory types with non-uniform latencies on same channel
US8458406B2 (en) Multiple critical word bypassing in a memory controller
JP5058116B2 (ja) ストリーミングidメソッドによるdmac発行メカニズム
US6738837B1 (en) Digital system with split transaction memory access
JP2006268753A (ja) Dma回路及びコンピュータシステム
JP2008544348A (ja) メモリーコントローラ及びネットワークとメモリーの結合方法
US8856459B1 (en) Matrix for numerical comparison
JP2008509470A (ja) プロセッサと外部周辺装置との間の通信を制御するコントローラおよび方法
KR20070020391A (ko) 스트리밍 id 방법에 의한 dmac 발행 메커니즘

Legal Events

Date Code Title Description
RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20100714

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20100818

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20101125

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20110111

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110531

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110801

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20120327

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120626

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20120703

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: 20120731

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120731

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150810

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 5058116

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250