JP2011530744A - 停止可能および再始動可能dmaエンジン - Google Patents

停止可能および再始動可能dmaエンジン Download PDF

Info

Publication number
JP2011530744A
JP2011530744A JP2011522204A JP2011522204A JP2011530744A JP 2011530744 A JP2011530744 A JP 2011530744A JP 2011522204 A JP2011522204 A JP 2011522204A JP 2011522204 A JP2011522204 A JP 2011522204A JP 2011530744 A JP2011530744 A JP 2011530744A
Authority
JP
Japan
Prior art keywords
memory location
bytes
copy
information
read address
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.)
Pending
Application number
JP2011522204A
Other languages
English (en)
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 JP2011530744A publication Critical patent/JP2011530744A/ja
Pending legal-status Critical Current

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

Abstract

DMAエンジンの動作のための方法について記述する。第1のコピー元メモリ位置から第1のコピー先メモリ位置への第1のバイト数の転送のために、コピーが開始される。その後、第1のバイト数がコピーされる前に停止命令が発行される。コピーが中止された後、コピーされることになる残りのバイト数を含む第2のバイト数が確立される。転送が停止された後、第2のバイト数の量が識別される。その後、量情報が発生されて記憶される。どこに第2のバイト数が記憶されるかを示すために第2のコピー元メモリ位置が識別される。その後、第2のコピー元メモリ位置情報が発生されて記憶される。その後、どこに第2のバイト数が転送されることになるかを示すために第2のコピー先メモリ位置が識別される。その後、第2のコピー先メモリ位置情報が発生されて記憶される。

Description

関連出願の相互参照
このPCT特許出願は、2008年8月6日に出願された米国仮特許出願シリアル番号61/086,631号に対する優先権に依存する。この内容は、ここで参照により組み込まれている。
発明の分野
本発明は、ダイレクトメモリアクセス(「DMA」)エンジンに関する。さらに詳細には、本発明は、プロセッサのプロセス状態の一部であるアーキテクトされたDMAに関する。
関連技術の説明
従来、DMAは、周辺デバイスとして扱われてきた。周辺デバイスであるので、DMAは、例えば、パーソナルコンピュータ、パーソナルデータアシスタント(PDA)や、セル電話機や、プロセッサベースであって、一般的に1つ以上のDMAを備えているであろう他のデバイスのような、プロセッサのアーキテクトされた状態の一部として考えられてきてもいなければ、扱われてきてもいない。
従来、DMAは、プロセッサのアーキテクトされた状態から除外されてきたので、マルチプログラム化された環境において、DMAエンジンは、プロセス状態の一部と考えられない。したがって、DMAは、モニタを通して、場合によってはオペレーティングシステム内でアクセスされなければならない。
アーキテクトされた状態に含まれている他のコンポーネントから独立的にDMAにアクセスすることは、DMAにアクセスする待ち時間を増加させる。当業者により正しく認識されるように、DMAのようなデバイスに対する待ち時間の増加は、プロセスにおける使用に対して、特に、プロセスが小さい移動または動作を取り入れるときに、DMAを非実用的なものにする。簡単に言うと、小さい動作に対して、従来のDMAアーキテチャに関係する待ち時間が、動作に対する全体的な処理時間を非常に増加させることがあるので、DMAへの依存は非実用的である。
当業者によって正しく認識されるように、処理効率を高めるためのコンピュータ処理技術が常に必要である。
本発明は、処理効率を高めるための、少なくとも1つのアプローチを提供している。
特に、本発明は、プロセス状態の一部であるアーキテクトされたDMAを提供している。DMAを、中止させて再始動させてもよく、これにより、DMAへの重大な好ましくない処理の影響なく、コピー動作を停止して再開することが可能になる。
本発明は、ダイレクトメモリアクセスエンジンを動作させる方法を提供している。方法では、第1のバイト数に対して、コピーが開始される。第1のバイト数は、第1のコピー元メモリ位置から第1のコピー先メモリ位置にコピーされることになるものである。コピーを開始した後、第1のバイト数がコピーされる前に停止命令が発行される。停止命令に応答して、コピーが中止される。結果として、第2のバイト数が確立される。第2のバイト数は、第1のバイト数からコピーされることになる残りのバイト数を含む。転送が停止された後、第2のバイト数の量が識別される。その後、第2のバイト数の量を提供する量情報が、発生されて記憶される。第2のコピー元メモリ位置も識別される。第2のコピー元メモリ位置は、どこに第2のバイト数が記憶されるかを識別する。その後、第2のコピー元メモリ位置情報が発生されて記憶される。その後、第2のコピー先メモリ位置が識別される。第2のコピー先メモリ位置は、どこに第2のバイト数が転送されることになるかを識別する。その後、第2のコピー先メモリ位置情報が発生されて記憶される。
この方法の1つの企図されているバリエーションでは、量情報と、第2のコピー元メモリ位置情報と、第2のコピー先メモリ位置情報とが、ダイレクトメモリアクセスエンジン中の少なくとも1つのレジスタから取り出される。1つのレジスタまたはいくつかのレジスタを使用してもよい。いくつかのレジスタが存在する場合、1つは、コピー元レジスタであってもよく、別のものは、コピー先レジスタであってもよい。第3のレジスタは、量レジスタであってもよい。
方法はまた、量情報と、第2のコピー元メモリ位置情報と、第2のコピー先メモリ位置情報とを使用して、第2のコピー元メモリ位置から第2のコピー先メモリ位置への第2のバイト数のコピーを開始することによって、停止された転送を再開することを含んでいてもよい。
この方法に関して、停止命令の発行の後にコピー動作を再開始するための、企図されている多数のバリエーションが存在する。
1つの企図されている実施形態では、第2のコピー元メモリ位置情報から次の読み取りアドレスを決定し、第2のコピー先メモリ位置情報から次の書き込みアドレスを決定するための方法が提供されている。その後、方法は、保留中のすべての読み取りおよび書き込みをフラッシュする。方法は、次の読み取りアドレスと次の書き込みアドレスとからデクリメント値を決定することによって進む。デクリメント値は、次の読み取りアドレスが次の書き込みアドレスに先行するバイト数を識別する。その後、方法は、デクリメント値分だけ次の読み取りアドレスをデクリメントして、デクリメントされた読み取りアドレスを発生させる。第2のメモリ位置から第2のメモリコピー先への第2のバイト数のコピーは、デクリメントされた読み取りアドレスと、次の書き込みアドレスと、量情報とに少なくとも基づいて進む。
第2の企図されているバリエーションでは、方法は、第2のコピー元メモリ位置情報から次の読み取りアドレスを決定することと、第2のコピー先メモリ位置情報から次の書き込みアドレスを決定することとを含む。方法は、次の読み取りアドレスが次の書き込みアドレスに先行するバイト数を追跡し、先行値を確立する。先行値は記憶され、これにより、次の読み取りアドレスが先行値によって調整されてもよい。これは、調整された次の読み取りアドレスの発生を可能にする。その後、コピーは、調整された次の読み取りアドレスと、次の書き込みアドレスと、量情報とに少なくとも基づいて進む。
第3の企図されているバリエーションでは、方法は、第2のコピー元メモリ位置情報から次の読み取りアドレスを決定することと、第2のコピー先メモリ位置情報から次の書き込みアドレスを決定することとを企図している。第2のメモリ位置から第2のメモリコピー先への第2のバイト数のコピーは、次の読み取りアドレスと、次の書き込みアドレスと、量情報とを使用して進む。
方法の第4の企図されているバリエーションでは、第1のコピー元メモリ位置の識別と、第1のコピー先メモリ位置の識別と、第1のバイト数のカウントとが保持される。量情報を取り出した後、第1のコピー元メモリ位置の識別と、第1のバイト数のカウントと、量情報とに少なくとも基づいて、次の読み取りアドレスが確立される。その後、第1のコピー先メモリ位置の識別と、第1のバイト数のカウントと、量情報とに少なくとも基づいて、次の書き込みアドレスが確立される。第2のメモリ位置から第2のメモリコピー先への第2のバイト数のコピーは、次の読み取りアドレスと、次の書き込みアドレスと、第1のバイト数のカウントと、量情報とに少なくとも依存する。
第5の企図されているバリエーションでは、次の書き込みアドレスの表示が保持される。停止命令の発行後に、第1のコピー元メモリ位置からの第1のバイト数の読み取りが中止される。さらに、読み取りを中止する前に読み取ったバイトから残ったバイトのうちの任意のものに対して書き込みが続く。その後、第2のコピー元メモリ位置情報から次の読み取りアドレスが決定され、第2のコピー先メモリ位置情報から次の書き込みアドレスが決定される。第2のメモリ位置から第2のメモリコピー先への第2のバイト数のコピーは、次の読み取りアドレスと、次の書き込みアドレスと、量情報とに少なくとも依存する。
本発明の他の態様は、後続する説明から、そして、ここに添付した図面から明らかになるだろう。
1つ以上の態様を図示している図面に関連して、本発明を記述する。
図1は、本発明によって企図されている方法の1つの実施形態を図示しているフロー図の第1の部分である。 図2は、図1で開始された方法を図示しているフロー図の第2の部分であり、この図は、図1に図示した方法の一部の続きである。 図3は、図1で開始された方法を図示しているフロー図の第3の部分のフローであり、この図は、図2に図示した方法の一部の続きである。 図4は、図1〜図3に図示した方法に含まれていてもよい、付加的な動作を図示しているフロー図である。 図5は、図1〜図3に図示した方法の、第1の企図されているバリエーションを図示しているフロー図である。 図6は、図1〜図3に図示した方法の、第2の企図されているバリエーションを図示しているフロー図である。 図7は、図1〜図3に図示した方法の、第3の企図されているバリエーションを図示しているフロー図である。 図8は、図1〜図3に図示した方法の、第4の企図されているバリエーションを図示しているフロー図である。 図9は、図1〜図3に図示した方法の、第5の企図されているバリエーションを図示しているフロー図である。
発明の実施形態の説明
以下で詳細に説明する特定の実施形態および例示に関連して、本発明について記述する。しかしながら、説明する実施形態および例示に単に限定されるように本発明は意図されていない。これとは反対に、本発明の広い範囲を規定するように実施形態および例示は意図されている。当業者によって正しく認識されるように、実施形態および例示の多数の均等物およびバリエーションが存在し、これらは本発明の範囲から逸脱することなく用いられるかもしれない。これらの実施形態およびバリエーションは、本発明によって含まれるべきであることが意図されている。
前置き事項として、当業者によって正しく認識されるように、メモリ中の、1つの位置から別の位置に値をコピーするために、DMAを使用する。最もシンプルに、DMAエンジンは、メモリの何らかの連続的ブロックから他の何らかのブロックに値をコピーする。DMAエンジンの、この基本的なコピー機能の1つの例は、以下のコードセグメント#1、
コードセグメント#1
(i=O;i<CNT;i++)に対して{DST[i]=SRC[i];}
によって提供される。
プロセッサからシンプルなDMAを使用するために、一般的に、プロセッサは、コピー元アドレスと、コピー先アドレスと、転送サイズとを選択されたレジスタに書き込む。その後、プロセッサは、制御レジスタに書き込むことによって、転送を開始する。すべての値がコピーされたとき、DMAは、制御および/またはステータスレジスタに書き込むこと、ならびに/あるいは、プロセッサにおける割り込みをトリガすることによって、転送の完了をシグナリングする。
さらに高性能のDMAは、「スキャッタ」動作のような動作の能力がある。「スキャッタ」は、単一のプロシージャコールが複数のバッファへの単一データストリームからのデータをシーケンシャルに読み取ることによる動作に関連する。スキャッタ動作は、以下のコードセグメント#2、
コードセグメント#2
(i=O;i<CNT;i++)に対して{DST[OFF[i]]=SRC[i];}
で記述したコードで書かれてもよい。「SRC」は、コピー元のアドレスを意味する。「DST」は、コピー先のアドレスを意味する。「OFF」は、オフセットアレイのアドレスを意味する。
1つの企図されている実施形態では、スキャッタ動作は、複数のコピー元メモリ位置からデータを取り出し、多数のコピー先メモリ位置に対してデータを「スキャッタ」する。先に示したように、スキャッタ動作はまた、単一のデータストリームから動作してもよく、複数のコピー元メモリ位置からのデータをストリーム化する。その場合、スキャッタ動作は、多数のデータ操作を含んでいてもよい。特に、このようなスキャッタ動作は、(1)コピーされることになるデータのシーケンシャルデータストリームを読み取ってもよく、(2)シーケンシャルアドレスストリームまたはインデックスストリームを読み取ってもよく、および(3)インデックスストリームを使用する場合、それぞれのインデックスを単一のベースアドレスに加えることによってアドレスストリームを生成させてもよい。その後、データにおけるそれぞれのエレメントを、ストリームにおける対応するアドレスにコピーしてもよい。これらの動作は、スキャッタ動作すべてに必要ないが、単なるガイダンスとして当業者に提供するものであり、本発明の1つの態様の理解を支援するものであることに留意すべきである。
より高性能なDMAは、「ギャザー」動作と呼ばれる、特有の動作の能力もある。「ギャザー」動作は、単一のプロシージャコールが複数のバッファからのデータを単一のデータストリームにシーケンシャルに書き込む、DMAの動作である。ギャザー動作は、以下のコードセグメント#3、
コードセグメント#3
(i=0;i<CNT;i++)に対して{DST[i]=SRC[0FF[i]];}
で記述したようなコードで書かれてもよい。コードセグメント#2と同様に、「SRC」は、コピー元のアドレスを意味する。同様に、「DST」は、コピー先のアドレスを意味する。さらに、「OFF」は、オフセットアレイのアドレスを意味する。
「ギャザー」動作に関して、情報は、複数のコピー元メモリ位置から収集されてもよい。その後、データは、場合によってはスキャッタアルゴリズムによって、複数のコピー先メモリ位置に提供されてもよい。代替的に、データは、さらなる処理のために、収集されて単一のデータストリームに集められてもよい。当業者によって正しく認識されるように、ギャザー動作は、少なくともいくつかの方法で、スキャッタ動作の反対を実行する。例えば、ギャザー動作は、(1)アドレスストリームまたはインデックスストリームのいずれかを読み取り、それをベースに加えることによってアドレスストリームを発生させてもよく、または(2)アドレスストリームにおける位置からデータを読み取り、シーケンシャルデータストリームを生成させてもよい。その後、シーケンシャルデータストリームは、シーケンシャルにコピー先にコピーされてもよい。本発明の少なくともこの1つの態様を明らかにするために、この説明を提供する。本発明を限定することを意図しているのではない。
さらに、より高性能のDMAは、「マルチレベル」動作の能力がある。マルチレベル動作は、複数のコピー元からのデータを、複数のコピー先から読み取る、および/または、複数のコピー先に書き込む動作である。マルチレベル動作は、以下のコードセグメント#4、
コードセグメント#4
(i=0;i<CNTO;i++)に対して、{(j=0;j<CNTl;j++)に対して DST[i][j]=SRC[I][j]}}
で記述したコードで書かれてもよい。コードセグメント#2および#3と同様に、「SRC」は、コピー元のアドレスを意味する。「DST」は、コピー先のアドレスを意味する。「OFF」はオフセットアレイのアドレスを意味する。
当業者によって正しく認識されるように、スキャッタ動作、ギャザー動作、およびマルチレベル動作を組み合わせて、さらなる機能を発生させてもよい。したがって、ここでは、これらの機能に関するさらなる詳細な説明は、行わない。
コンテキストスイッチ
一般的なDMAエンジンを参照してもう一度説明すると、エンジンが転送を開始した後、エンジンは完了に向けて実行する。その後、DMAエンジンは、転送が完了していることをプロセッサにシグナリングする。これに続いて、DMAエンジンは、第2の転送を実行する。プロセスは、必要に応じて反復される。当業者によって正しく認識されるように、これは、DMAエンジンの動作を記述するための1つの方法に過ぎない。
DMAおよび一連のDMAをセットアップするための他の方法が存在する。例えば、いくつかのDMAは、「シャドウレジスタ」の使用をサポートする。現在のDMA転送が、「インフライト」または処理中である間に、シャドウレジスタは、次の転送によりDMAをプログラム化することを可能にする。したがって、シャドウレジスタが次の転送を促進させるので、DMAは、現在の転送が完了するとすぐに、次の転送を開始するかもしれない。他のDMAは「チェーニング」をサポートする。このアプローチは、シャドウレジスタアプローチとは異なる。DMAを直接的にプログラミングする代わりに、転送の詳細が制御ブロックに書き込まれる。次の転送は、制御ブロックに書き込まれ、この転送をポイント指定するように第1の制御ブロックにおける位置が設定される。この態様では、転送のチェーンが確立されるかもしれない。制御ブロックによって決定された転送をDMAが完了するとすぐに、DMAは、チェーンにおける次のブロックによって決定された転送を実行するように進む。
当業者に明らかであるように、一般的に、これらの代替セットアップも、DMAに関して述べた同じ問題がある。特に、DMAは、前述の待ち時間問題を含むいくつかの欠点のために、すべてのタイプの動作を実行するのに適していない。例えば、DMA向けの既存のアーキテクチャは、現行の転送を一時停止し、新しい転送をプログラム化および実行して、一時停止した転送を再開するためのメカニズムを提供しない。さらに、DMAエンジンをプログラム化しようと複数のコピー元が試みた場合、これらのコピー元は、同時アクセスしないように、または、複数の命令が互いに上書きされないように、DMAエンジンに対する活動を調整しなければならない。
DMAに関する先行技術における欠点の理解を促進するために、以下の例を提供する。特に、例は、汎用プロセッサ上でデータ転送を実行するためにDMAが使用されることになるインスタンスを含む。例を簡略化するために、すべてのメモリアクセスは、リアルモードであると仮定する。当業者によって理解されるように、仮想メモリに対するプログラミングのときに生じる厄介な問題を防ぐために、リアルモード動作を仮定する。特に、この例では仮想メモリを無視することによって、仮想メモリ変換によって生じる厄介な問題もなくなる。以下で詳細に説明するように、この例に対して、いくつかの問題が生じる。
割り込まれる転送プロセスのコンテキストや、別の転送動作にスイッチされるコンテキストでは、第1の問題が生じることがある。特に、DMAがプログラム化されているが、DMAが制御レジスタに書き込む前の合間に転送プロセスが割り込まれる場合に、プロセス状態の一部として、DMAレジスタを保存しなければならない。結果として、転送動作が再開される前に、DMAレジスタを再現させなければ(すなわち、適切なアドレスに「書き戻さ」なければ)ならない。
生じることがある第2の問題は、長期間続いているDMAをプログラム化するプロセスに関係する。すぐに明らかになるように、長期間続いているDMAをプロセスがプログラム化し、プロセスがコンテキストスイッチされるとき、新しいプロセスは、実行される前に第1の転送プロセスの完了を待たなければならない。結果として、第1の転送動作の実行は、第2の転送動作の実行を機能停止させる。
DMA処理に関して生じることがある第3の問題は、マルチスレッドまたはマルチプロセッサ環境のコンテキストにおいて生じる。特に、マルチスレッドまたはマルチプロセッサ機械において、複数のプロセスが、同時に、DMAを再プログラム化しようと試みるかもしれない。プロセスは、所定の任意のときに1つだけ処理されるので、複数のプロセスには、相互除外アルゴリズムの実行が必要である。当業者によって正しく認識されるように、相互除外アルゴリズムは、DMAをプログラミングすることに関係する待ち時間の期間を増加させる。
生じることがある第4の問題は、転送動作の終わりに送出されることがある、DMAによる割り込み信号の発生に関係する。特に、DMAが、割り込みによって転送動作の完了についてシグナリングしたとき、DMAをプログラム化したプロセスが、現在実行しているプロセスである保証はない。結果的に、送出されたとき、完了の割り込みは、共有割り込みハンドラによって捕捉されなければならず、共有割り込みハンドラは、現在実行しているプロセスが、割り込みを送り届けなければならないプロセスであるか否かを決定する。
プロセッサが仮想メモリを使用している場合、DMAエンジンは、仮想アドレスと実アドレスとの間で変換しなければならないのでさらなる問題が生じる。所望の転送を実アドレスに変換して、コピー元ページおよびコピー先ページを調べるために、オペレーティングシステムを用いることが企図されている。しかしながら、この変換に対するオペレーティングシステムへの依存が、DMAを開始する待ち時間を劇的に増加させる。一般的に、DMAでは、より簡単な重み付けスキーム(すなわち、待ち時間による負担が少ないスキーム)は、仮想アドレスに依存する。これらのスキームは、動作のために、プロセッサの変換メカニズムによってDMA転送アドレスを実行する。このアプローチによる問題は、コンテキストスイッチの後、プロセッサ変換メカニズムが、先のプロセスに対して有効でないかもしれない点である。結果として、処理の際に衝突が起こらないようにDMAを中止させる方法が必要である。
これらの問題のそれぞれは、DMAによる転送動作の実行の際の課題を示している。本発明が、これらの問題に対する解決策を提供する。
再始動可能な中止
本発明は、ブロック転送DMAの再始動可能な中止を提供する。ブロック転送DMAの再始動可能な中止は、転送の中間においてDMAを中止させることが可能であるものである。いったん、転送が中止されると、(1)転送されるバイトが何バイト残されているかと、(2)読み取られることになる、次のバイトのアドレスと、(3)書き込まれることになる、次のバイトのアドレスとを決定することが可能である。このアプローチは、簡単に、DMAの制御レジスタを読み取ることによって実現してもよい。他の可能性あるインプリメンテーションも企図されている。
シンプル
本発明によって示される第1のバリエーションを、「シンプル」インプリメンテーションと呼ぶ。シンプルインプリメンテーションでは、コピー元や、コピー先や、バイトカウントの初期値のコピーを、書き込まれたバイト数のカウントともに保持する。この情報が保持されていることから、転送されたバイトカウントに初期値を加えること、および/または、転送されたバイトカウントから初期値を引くことによって、DMA転送動作の再始動状態を決定することができる。当業者によって正しく認識されるように、このシンプルなアプローチは、非効率的である。この非効率性の1つの理由は、DMAのこのインプリメンテーションには、次の読み取りバイトおよび/または次の書き込みバイトを追跡するためのシステムが必要であることである。
ドレイン
本発明によって示される第2のバリエーションを、「ドレイン」インプリメンテーションと呼ぶ。このインプリメンテーションでは、DMAが、次の読み取りアドレスおよび/または次の書き込みアドレスの実行カウントを維持する。DMAはまた、読み取られることになる残りのバイト数を追跡する。転送の中間で中止されたとき、DMAは、読み取りを中止し、メモリに書き込まれるように既に読み取られているバイトを待つ。いったん、バイトがメモリに書き込まれると、DMAは再始動可能状態に置かれ、この状態から、DMAは転送動作を完了させるかもしれない。明らかであるように、このインプリメンテーションには、少なくとも1つの短所がある。特に、保留中のすべての読み取りを、DMAが再始動可能状態になる前に書き込まれなければならない。この構成は、結果的に、転送動作の実行の間に待ち時間となる可能性がある。
早期中止
本発明によって示される第3のバリエーションを、「早期中止」インプリメンテーションと呼ぶ。このインプリメンテーションでは、DMAは、次の読み取りアドレスおよび/または次の書き込みアドレスの実行カウントを維持する。DMAは、書き込むために残されたバイト数も保持する。DMAが転送の中間で中止したとき、DMAは、書き込みを中止し、すべての保留中の読み取りおよび/または書き込みをフラッシュする。一般的に、この実施形態では、読み取りアドレスは、書き込みアドレスに先行する(すなわち、書き込まれるよりも、より多くのバイトが読み込まれている)。結果的に、読み取りアドレスが書き込みアドレスに先行するバイトの量分だけ、読み取りアドレスはデクリメントされなければならない。このアプローチには、最初の2つのアプローチに関連して説明した種類の短所がないので、本発明のインプリメンテーション向けの1つの魅力的なアプローチとして提供する。
先行
第4のバリエーションを、「先行」インプリメンテーションと呼ぶ。どのくらい読み取りアドレスが書き込みアドレスに先行しているか(すなわち、読み取られたバイト数と、書き込まれたバイト数との差)を追跡するために、別個のレジスタ(すなわち、追加のレジスタ)を使用することを除いて、このインプリメンテーションは、早期中止インプリメンテーションに類似している。この値を「先行」値と呼ぶ。一般的に、先行値は小さいので、追加のレジスタは、実に容易にかつ安価に実現することができる。言い換えると、先行アプローチには、追加のレジスタが必要であるが、付加的なレジスタは、DMAの動作に関係する全体的な「コスト」を大きく増加させない。このインプリメンテーションでは、再始動状態を回復させるために、プロセッサは、先行値を読み取りアドレスから引いて、正確な再始動読み取りアドレスを得る。
オフセット状態
先に説明したように、DMAは、スキャッタ動作およびギャザー動作の両方を実現するかもしれない。DMAがスキャッタおよび/またはギャザーに携わるとき、オフセットの読み取りは、データの読み取りおよび/または書き込みに先行する傾向がある。オフセットの再始動状態を回復させるために、前述の早期中止の技術または先行の技術の何らかのバリエーションを使用する必要がある。
アーキテクトされたレジスタ
従来、DMAは、周辺装置として扱われてきた。そして、その結果、DMAレジスタは、動作をロードおよび/または記憶することによって、あるいは、特別な入力および/または出力命令によって、のいずれかでアクセスされている。
本発明の1つの目的は、DMAを、プロセッサコンテキストの一部とすることであるので、DMAレジスタ部分を、プロセッサのアーキテクトされたレジスタ状態の一部とする。本発明では、DMAレジスタは、他の特別目的レジスタと同じ命令によってアクセス可能な特別目的のレジスタである。
先に説明した本発明のさまざまな実施形態に関して、これから、ここに添付した図面を参照する。図面に関して、識別された動作のうちのいずれも、1つ以上のステップを含む可能性がある。さらに、いくつかのインスタンスにおいて、異なる動作を組み合わせて単一のステップにしてもよい。これらの可能性は、本発明によって含まれることが意図されている。
図1は、本発明の基本的な方法を概説しているフロー図である。参照のために、方法10には、参照識別子が与えられている。方法10は、DMAエンジンのようなプロセッサ上で実行されることが企図されている。方法は、12において開始する。開始12の後、方法10は、14に進み、14において第1のコピー元メモリ位置から第1のコピー先メモリ位置へのコピーが、第1のバイト数に対して開始される。14においてコピーが開始された後、第1のバイト数が第1のコピー元メモリ位置から第1のコピー先メモリ位置にコピーされる前に、16において、停止命令が発行される。18では、16における停止命令の発行に応答してコピーが停止され、これにより、第2のバイト数が確立される。第2のバイト数は、第1のバイト数からコピーされることになる残りのバイトを含む。その後、20において、第2のバイト数の量が識別される。図1は、移行ブロック22を含み、移行ブロック22は、方法が図2に続くことを示している。
図2は、図1に図示した方法の続きを提供している。特に、いったん、量が識別されると、24において、第2のバイト数の量に関する量情報が発生される。その後、26において、この量情報が記憶される。方法は、26から28に進み、28において、第2のコピー元メモリ位置が識別される。第2のコピー元メモリ位置は、第2のバイト数が記憶されている位置を含む。方法10は、28から30に進み、30において、第2のコピー元メモリ位置情報が発生される。明らかであるように、第2のコピー元メモリ位置情報は、第2のバイト数が記憶されている第2のコピー元メモリ位置を含む。その後、32において、第2のメモリコピー元位置情報が記憶される。図2は、移行ブロック34を含んでおり、移行ブロック34は、方法10が、図3に続くことを示している。
図3は、方法10の残りを図示している。図3では、方法10は、32から続き、36において、第2のコピー先メモリ位置が識別される。第2のコピー先メモリ位置は、第2のバイト数が転送されることになるコピー先を含む。方法10は、36から38に続く。38では、第2のコピー先メモリ位置情報が発生される。第2のコピー先メモリ位置情報は、第2のバイト数が記憶されることになる第2のコピー先メモリ位置を含む。その後、方法10は、40に進み、40では、第2のコピー先メモリ位置情報が記憶される。方法10は、42において終了する。
図1〜図3から正しく認識されるように、方法10は、DMAエンジンの基本的な停止動作を形成する動作を含む。コピー元位置からコピー先位置へのバイトの転送を再開させるために、さらなる処理が必要である。図4〜図9では、動作を再開することに向けられている本発明の異なる実施形態および態様を詳細に示している。
前置き事項として、再始動動作のさまざまな実施形態は、停止されたコピープロセスの続きを含む。この点に関して、コピープロセスは、既に述べたように続く。再開されたコピー動作では、第2のバイトが、コピー元位置からコピー先位置にコピーされる。コピーがどのように再開されるかが、図4〜図9に関連して記述する実施形態の態様の基礎となる。
図4は、DMAエンジンが、16において停止命令を発行した後にコピー動作を再開したときの、DMAエンジンの動作に対する特有の情報の取り出しを提供する。特に、図4は、46で開始する方法44に対するフローチャートを図示している。当業者に明らかであるように、方法44は、方法10の続きであることが企図されている。方法44では、48において、量情報が取り出される。その後に、50において、第2のコピー元メモリ位置情報が取り出される。これに続いて、52において、第2のコピー先メモリ位置情報が取り出される。当業者によって正しく認識されるように、いったん、DMAエンジンが、これらの3つからなる情報を取り出すと、DMAエンジンは、図1〜図3において詳細に示した、中止されたコピー動作を開始することに進んでもよい。
方法44について、量情報と、第2のコピー元メモリ位置情報と、第2のコピー先メモリ位置情報は、ダイレクトメモリアクセスエンジン中の少なくとも1つのレジスタから読み取られることが企図されている。3つのタイプの情報はレジスタから取り出されているので、メモリ位置にアクセスすることは、DMAエンジンには必要とされない。結果として、DMAエンジンは、メモリ位置にアクセスする場合よりも、中止されたコピー動作をより迅速に再開するように進むかもしれない。当業者に明らかであるように、効率的なプロセッサは、メモリアクセスを防ぐように設計されており、これは賢明である。メモリへのアクセスは、一般的に、命令を実行するときに最長の遅延の原因となる。
先に述べたように、量情報と、第2のコピー元メモリ位置情報と、第2のコピー先メモリ位置情報は、少なくとも1つのレジスタから読み取られる。1つの企図されている実施形態では、3つのタイプの情報は、単一のレジスタから読み取られる。しかしながら、他のバリエーションも企図されている。例えば、いくつかのレジスタを用いてもよい。これは、2つ以上のレジスタを含む。2つ以上のレジスタは、第1のコピー元メモリ位置が保持される少なくとも1つのコピー元レジスタと、第1のコピー先メモリ位置が保持される少なくとも1つのコピー先レジスタとを含んでいてもよい。さらに、2つ以上のレジスタは、量情報が保持される量レジスタを含んでいてもよい。
図4に戻ると、いったん、量情報と、第2のコピー元メモリ位置情報と、第2のコピー先メモリ位置情報が、1つ以上のレジスタから取り出されると、方法は54に進み、54において、量情報と、第2のコピー元メモリ位置情報と、第2のコピー先メモリ位置情報とを使用して、第2のコピー元メモリ位置から第2のコピー先メモリ位置への第2のバイト数のコピーを開始することによって、中止された転送が再開される。その後、方法44は、56において終了する。
先の説明で述べたように、いったんコピー動作が再開されると、コピー元位置からコピー先位置へのバイトのコピーが実行されてもよい、いくつかの異なる実施形態が存在する。第1の実施形態を、「早期中止」方法58と呼ぶ。図5では、早期中止方法58のためのフローチャートが提供されている。「早期中止方法」という名前は、本発明の範囲内に含まれていると企図されている他の実施形態と、第1の実施形態とを単に区別するために提供されているに過ぎないことに留意すべきである。名前は、方法58の限定であるとことを意図していない。さらに、他の実施形態に対しても、特定の名前によって参照するが、名前は、本発明の限定であることを意図していない。名前は、単に、本発明の理解を促進するために使用されている。
図5を参照すると、早期中止方法58は、量情報と、第2のコピー元メモリ位置情報と、第2のコピー先メモリ位置情報との取り出しの後に続くことを意図している。図4の説明に関連して、48、50、および52において、これらの3つの動作について説明する。
方法58は、60において開始する。方法58は、60から62に進み、62において、第2のコピー元メモリ位置情報から次の読み取りアドレスが決定される。方法58は、その後、64に進み、64において、第2のコピー先メモリ位置情報から次の書き込みアドレスが決定される。その後、66において、保留中のすべての読み取りおよび書き込みがフラッシュされる。これは、保留中の読み取りおよび書き込みのすべてが削除されることを意味する。方法58は、66から68に進み、68において、次の読み取りアドレスと次の書き込みアドレスとからデクリメント値が決定される。デクリメント値は、次の読み取りアドレスが次の書き込みアドレスに先行するバイト数を識別する。70では、次の読み取りアドレスが、デクリメント値分だけデクリメントされ、これにより、デクリメントされた読み取りアドレスを発生させる。いったん、このデクリメント読み取りアドレスが決定されると、コピー動作を再開させてもよい。特に、デクリメントされた読み取りアドレスと、次の書き込みアドレスと、量情報とに少なくとも基づいて、第2のバイト数が、第2のメモリ位置から第2のメモリコピー先にコピーされてもよい。方法58は、72において終了する。
図6は、方法74を図示しており、方法74を「先行方法」と呼ぶ。また、先行方法74は、図4において詳細に示した動作52の後に開始することを意図している。先行方法74は、76において開始する。その後、方法74は、78に進み、78において、第2のコピー元メモリ位置情報から次の読み取りアドレスが決定される。その後、80において、第2のコピー先メモリ位置情報から次の書き込みアドレスが決定される。
方法74では、先行値に対して追跡が行われる。先行値は、次の読み取りアドレスが次の書き込みアドレスに先行するバイト数である。この情報を追跡することによって、82において、先行値が確立される。84において、先行値が記憶される。DMAエンジンがコピー動作を再開できるように、86において、先行値が取り出される。明らかに、この動作は、後続の時間に、コピー動作を再開するのに適しているときに、生じる。最後に、88において、次の読み取りアドレスが先行値によって調整され、これにより、調整された次の読み取りアドレスを発生させる。いったん、次の読み取りアドレスが決定されると、方法74は、中止されたコピー動作を再開することに進んでもよい。その後、第2のメモリ位置から第2のメモリコピー先への第2のバイト数のコピーは、調整された次の読み取りアドレスと、次の書き込みアドレスと、量情報とに少なくとも基づいて進む。方法74は、90において終了する。
図7は、本発明の方法の第3の実施形態に対するフロー図を提供する。この方法を、「再始動可能中止」方法92と呼ぶ。図7に示したように、方法92は、94において開始する。その後、方法92は96に進み、96において、第2のコピー元メモリ位置情報から次の読み取りアドレスが決定される。その後、98において、第2のコピー先メモリ位置情報から次の書き込みアドレスが決定される。これらの2つのビットの情報により、第2のメモリ位置から第2のメモリコピー先への第2のバイト数のコピーは、次の読み取りアドレスと、次の書き込みアドレスと、量情報とを使用して再開される。方法92は、100において終了する。
図8は、ここでは「シンプル」方法と呼ばれる方法102に対するフロー図を提供する。シンプル方法102は、中止されたコピー命令を再開するための方法の第4の実施形態である。方法102は、図3で示した動作40の後に開始することも意図している。
図8を参照すると、シンプルな方法102が、104において開始する。方法102は、104から106に進み、106において、第1のコピー元メモリ位置の識別が保持される。その後、108において、第1のコピー先メモリ位置の識別が保持される。これに続いて、110において、第1のバイト数のカウントが保持される。それに続く瞬間、停止されたコピー動作を再開させる前に、方法102は、112において、量情報を取り出す。114において、方法102は、第1のコピー元メモリ位置の識別と、第1のバイト数のカウントと、量情報とに少なくとも基づいて、次の読み取りアドレスを確立する。116において、方法102は、第1のコピー先メモリ位置の識別と、第1のバイト数のカウントと、量情報とに少なくとも基づいて、次の書き込みアドレスを確立する。ここから、方法102は、停止されたコピーを再開する。この方法で再開されたコピーは、次の読み取りアドレスと、次の書き込みアドレスと、第1のバイト数のカウントと、量情報とに少なくとも依存する。方法102は、118において終了する。
図9は、方法120を図示しており、方法120を、ここでは「ドレイン」方法と呼ぶ。これは、本発明の範囲内に含まれると企図されている第5の実施形態である。方法102と同様に、ドレイン方法120は、図1〜図3に図示した方法10に続くことを意図している。
図9に図示したように、ドレイン方法120は、122において開始する。124において、方法120は、次の読み取りアドレスの表示を保持する。126において、方法120は、次の書き込みアドレスの表示を保持する。128において、停止命令の後、方法120は、第1のコピー元メモリ位置からの第1のバイト数の読み取りを中止する。130において、方法120は、読み取りを中止する前に読み取ったバイトから残った任意のバイトの第1のコピー先メモリ位置への書き込みを中止する。その後、132において、方法120は、第2のコピー元メモリ位置情報から次の読み取りアドレスを決定する。134において、第2のコピー先メモリ位置情報から次の書き込みアドレスを決定する。結果的に、第2のメモリ位置から第2のメモリコピー先への第2のバイト数のコピーは、次の読み取りアドレスと、次の書き込みアドレスと、量情報とに少なくとも基づいて進んでもよい。方法120は、136において終了する。
先に述べたように、スキャッタおよび/またはギャザー動作のコンテキストにおいて、本発明の方法を適用してもよい。ギャザーコンテキストでは、方法は、第1のバイト数が第1のコピー元メモリ位置から取り出される動作を含んでいてもよく、第1のバイト数は複数のバッファに分散されている。その後、第1のバイト数は、単一のデータストリームにバッファリングされてもよい。スキャッタ動作を、この後に使用してもよい。その場合、方法は、単一のデータストリームからの第1のバイト数を第1のコピー先メモリ位置に提供する付加的な動作を含んでいてもよい。このコンテキストでは、第1のコピー先メモリ位置は、複数のバッファに分散されていてもよい。代替的に、ギャザー動作は、複数の第1のコピー先メモリ位置から直接的に情報を引き出してもよい。そして、分散は、複数のバッファに向けられていてもよい。
先に述べたように、いくつかの特定の実施形態に関連して本発明について記述した。記述した実施形態のみに本発明を限定することを意図していない。これとは反対に、当業者に明らかであるように、あらゆる均等物およびバリエーションを含むように本発明は意図されている。
先に述べたように、いくつかの特定の実施形態に関連して本発明について記述した。記述した実施形態のみに本発明を限定することを意図していない。これとは反対に、当業者に明らかであるように、あらゆる均等物およびバリエーションを含むように本発明は意図されている。
以下に、本願出願の当初の特許請求の範囲に記載された発明を付記する。
〔1〕ダイレクトメモリアクセスエンジンを動作させる方法において、
第1のコピー元メモリ位置から第1のコピー先メモリ位置への第1のバイト数のコピーを開始することと、
前記コピーを開始した後、前記第1のバイト数が前記第1のコピー元メモリ位置から前記第1のコピー先メモリ位置にコピーされる前に停止命令を発行することと、
前記停止命令の発行に応答して前記コピーを停止し、これによリ、前記第1のバイト数からコピーされることになる残りのバイト数を含む、第2のバイト数を確立することと、
前記第2のバイト数の量を識別することと、
前記第2のバイト数の量に関する量情報を発生させることと、
前記量情報を記憶することと、
前記第2のバイト数が記憶されている第2のコピー元メモリ位置を識別することと、
前記第2のバイト数が記憶されている前記第2のコピー元メモリ位置を含む第2のコピー元メモリ位置情報を発生させることと、
前記第2のメモリコピー元位置情報を記憶することと、
前記第2のバイト数が転送されることになる第2のコピー先メモリ位置を識別することと、
前記第2のバイト数が記憶されることになる前記第2のコピー先メモリ位置を含む第2のコピー先メモリ位置情報を発生させることと、
前記第2のコピー先メモリ位置情報を記憶することとを含む方法。
〔2〕前記量情報を取り出すことと、
前記第2のコピー元メモリ位置情報を取り出すことと、
前記第2のコピー先メモリ位置情報を取り出すこととをさらに含み、
前記量情報と、前記第2のコピー元メモリ位置情報と、前記第2のコピー先メモリ位置情報は、前記ダイレクトメモリアクセスエンジン中の少なくとも1つのレジスタから読み取られる〔1〕記載の方法。
〔3〕前記少なくとも1つのレジスタは、複数のレジスタを含む〔2〕記載の方法。
〔4〕前記複数のレジスタは、前記第1のコピー元メモリ位置が保持される少なくとも1つのコピー元レジスタと、前記第1のコピー先メモリ位置が保持される少なくとも1つのコピー先レジスタとを含む〔3〕記載の方法。
〔5〕前記複数のレジスタは、前記量情報が保持される量レジスタをさらに含む〔4〕記載の方法。
〔6〕前記量情報と、前記第2のコピー元メモリ位置情報と、前記第2のコピー先メモリ位置情報とを使用して、前記第2のコピー元メモリ位置から第2のコピー先メモリ位置への前記第2のバイト数のコピーを開始することによって、前記停止された転送を再開することをさらに含む〔2〕記載の方法。
〔7〕前記第2のコピー元メモリ位置情報から次の読み取りアドレスを決定することと、
前記第2のコピー先メモリ位置情報から次の書き込みアドレスを決定することと、
保留中のすべての読み取りおよび書き込みをフラッシュすることと、
前記次の読み取りアドレスと前記次の書き込みアドレスとから、デクリメント値を決定することと、
前記デクリメント値分だけ前記次の読み取りアドレスをデクリメントし、これにより、デクリメントされた読み取りアドレスを発生させることとをさらに含み、
前記デクリメント値は、前記次の読み取りアドレスが次の書き込みアドレスに先行するバイト数を識別し、
前記第2のメモリ位置から前記第2のメモリコピー先への前記第2のバイト数のコピーは、前記デクリメントされた読み取りアドレスと、前記次の書き込みアドレスと、前記量情報とに少なくとも基づいて進む〔6〕記載の方法。
〔8〕前記第2のコピー元メモリ位置情報から次の読み取りアドレスを決定することと、
前記第2のコピー先メモリ位置情報から次の書き込みアドレスを決定することと、
前記次の読み取りアドレスが前記次の書き込みアドレスに先行するバイト数を追跡し、これにより、先行値を確立することと、
前記先行値を記憶することと、
前記先行値を取り出すことと、
前記先行値分だけ前記次の読み取りアドレスを調整し、これにより、調整された次の読み取りアドレスを発生させることとをさらに含み、
前記第2のメモリ位置から前記第2のメモリコピー先への前記第2のバイト数のコピーは、前記調整された次の読み取りアドレスと、前記次の書き込みアドレスと、前記量情報とに少なくとも基づいて進む〔6〕記載の方法。
〔9〕前記第2のコピー元メモリ位置情報から次の読み取りアドレスを決定することと、
前記第2のコピー先メモリ位置情報から次の書き込みアドレスを決定することとをさらに含み、
前記第2のメモリ位置から前記第2のメモリコピー先への前記第2のバイト数のコピーは、前記次の読み取りアドレスと、前記次の書き込みアドレスと、前記量情報とを使用して進む〔6〕記載の方法。
〔10〕前記第1のコピー元メモリ位置の識別を保持することと、
前記第1のコピー先メモリ位置の識別を保持することと、
前記第1のバイト数のカウントを保持することと、
前記量情報を取り出すことと、
前記第1のコピー元メモリ位置の識別と、前記第1のバイト数のカウントと、前記量情報とに少なくとも基づいて、次の読み取りアドレスを確立することと、
前記第1のコピー先メモリ位置の識別と、前記第1のバイト数のカウントと、前記量情報とに少なくとも基づいて、次の書き込みアドレスを確立することとをさらに含み、
前記第2のメモリ位置から前記第2のメモリコピー先への前記第2のバイト数のコピーは、前記次の読み取りアドレスと、前記次の書き込みアドレスと、前記第1のバイト数のカウントと、前記量情報とに少なくとも依存する〔1〕記載の方法。
〔11〕前記次の読み取りアドレスの表示を保持することと、
前記次の書き込みアドレスの表示を保持することと、
前記停止命令の発行後に、
前記第1のコピー元メモリ位置からの前記第1のバイト数の読み取りを中止することと、
前記読み取りを中止する前に読み取ったバイトから残った任意のバイトを前記第1のコピー先メモリ位置に書き込むことと、
前記第2のコピー元メモリ位置情報から次の読み取りアドレスを決定することと、
前記第2のコピー先メモリ位置情報から次の書き込みアドレスを決定することとをさらに含み、
前記第2のメモリ位置から前記第2のメモリコピー先への前記第2のバイト数のコピーは、前記次の読み取りアドレスと、前記次の書き込みアドレスと、前記量情報とに少なくとも依存する〔1〕記載の方法。
〔12〕複数のバッファに分散されている前記第1のコピー元メモリ位置から、前記第1のバイト数を取り出すことと、
前記第1のバイト数を単一のデータストリームに集めることをさらに含む〔1〕記載の方法。
〔13〕前記単一のデータストリームからの前記第1のバイト数を前記第1のコピー先メモリ位置に提供することをさらに含み、
前記第1のコピー先メモリ位置は、複数のバッファに分散される〔12〕記載の方法。
〔14〕前記第1のコピー先メモリ位置は、複数のバッファに分散される〔1〕記載の方法。

Claims (14)

  1. ダイレクトメモリアクセスエンジンを動作させる方法において、
    第1のコピー元メモリ位置から第1のコピー先メモリ位置への第1のバイト数のコピーを開始することと、
    前記コピーを開始した後、前記第1のバイト数が前記第1のコピー元メモリ位置から前記第1のコピー先メモリ位置にコピーされる前に停止命令を発行することと、
    前記停止命令の発行に応答して前記コピーを停止し、これによリ、前記第1のバイト数からコピーされることになる残りのバイト数を含む、第2のバイト数を確立することと、
    前記第2のバイト数の量を識別することと、
    前記第2のバイト数の量に関する量情報を発生させることと、
    前記量情報を記憶することと、
    前記第2のバイト数が記憶されている第2のコピー元メモリ位置を識別することと、
    前記第2のバイト数が記憶される前記第2のコピー元メモリ位置を含む第2のコピー元メモリ位置情報を発生させることと、
    前記第2のメモリコピー元位置情報を記憶することと、
    前記第2のバイト数が転送されることになる第2のコピー先メモリ位置を識別することと、
    前記第2のバイト数が記憶されることになる前記第2のコピー先メモリ位置を含む第2のコピー先メモリ位置情報を発生させることと、
    前記第2のコピー先メモリ位置情報を記憶することとを含む方法。
  2. 前記量情報を取り出すことと、
    前記第2のコピー元メモリ位置情報を取り出すことと、
    前記第2のコピー先メモリ位置情報を取り出すこととをさらに含み、
    前記量情報と、前記第2のコピー元メモリ位置情報と、前記第2のコピー先メモリ位置情報は、前記ダイレクトメモリアクセスエンジン中の少なくとも1つのレジスタから読み取られる請求項1記載の方法。
  3. 前記少なくとも1つのレジスタは、複数のレジスタを含む請求項2記載の方法。
  4. 前記複数のレジスタは、前記第1のコピー元メモリ位置が保持される少なくとも1つのコピー元レジスタと、前記第1のコピー先メモリ位置が保持される少なくとも1つのコピー先レジスタとを含む請求項3記載の方法。
  5. 前記複数のレジスタは、前記量情報が保持される量レジスタをさらに含む請求項4記載の方法。
  6. 前記量情報と、前記第2のコピー元メモリ位置情報と、前記第2のコピー先メモリ位置情報とを使用して、前記第2のコピー元メモリ位置から第2のコピー先メモリ位置への前記第2のバイト数のコピーを開始することによって、前記停止された転送を再開することをさらに含む請求項2記載の方法。
  7. 前記第2のコピー元メモリ位置情報から次の読み取りアドレスを決定することと、
    前記第2のコピー先メモリ位置情報から次の書き込みアドレスを決定することと、
    保留中のすべての読み取りおよび書き込みをフラッシュすることと、
    前記次の読み取りアドレスと前記次の書き込みアドレスとから、デクリメント値を決定することと、
    前記デクリメント値分だけ前記次の読み取りアドレスをデクリメントし、これにより、デクリメントされた読み取りアドレスを発生させることとをさらに含み、
    前記デクリメント値は、前記次の読み取りアドレスが次の書き込みアドレスに先行するバイト数を識別し、
    前記第2のメモリ位置から前記第2のメモリコピー先への前記第2のバイト数のコピーは、前記デクリメントされた読み取りアドレスと、前記次の書き込みアドレスと、前記量情報とに少なくとも基づいて進む請求項6記載の方法。
  8. 前記第2のコピー元メモリ位置情報から次の読み取りアドレスを決定することと、
    前記第2のコピー先メモリ位置情報から次の書き込みアドレスを決定することと、
    前記次の読み取りアドレスが前記次の書き込みアドレスに先行するバイト数を追跡し、これにより、先行値を確立することと、
    前記先行値を記憶することと、
    前記先行値を取り出すことと、
    前記先行値分だけ前記次の読み取りアドレスを調整し、これにより、調整された次の読み取りアドレスを発生させることとをさらに含み、
    前記第2のメモリ位置から前記第2のメモリコピー先への前記第2のバイト数のコピーは、前記調整された次の読み取りアドレスと、前記次の書き込みアドレスと、前記量情報とに少なくとも基づいて進む請求項6記載の方法。
  9. 前記第2のコピー元メモリ位置情報から次の読み取りアドレスを決定することと、
    前記第2のコピー先メモリ位置情報から次の書き込みアドレスを決定することとをさらに含み、
    前記第2のメモリ位置から前記第2のメモリコピー先への前記第2のバイト数のコピーは、前記次の読み取りアドレスと、前記次の書き込みアドレスと、前記量情報とを使用して進む請求項6記載の方法。
  10. 前記第1のコピー元メモリ位置の識別を保持することと、
    前記第1のコピー先メモリ位置の識別を保持することと、
    前記第1のバイト数のカウントを保持することと、
    前記量情報を取り出すことと、
    前記第1のコピー元メモリ位置の識別と、前記第1のバイト数のカウントと、前記量情報とに少なくとも基づいて、次の読み取りアドレスを確立することと、
    前記第1のコピー先メモリ位置の識別と、前記第1のバイト数のカウントと、前記量情報とに少なくとも基づいて、次の書き込みアドレスを確立することとをさらに含み、
    前記第2のメモリ位置から前記第2のメモリコピー先への前記第2のバイト数のコピーは、前記次の読み取りアドレスと、前記次の書き込みアドレスと、前記第1のバイト数のカウントと、前記量情報とに少なくとも依存する請求項1記載の方法。
  11. 前記次の読み取りアドレスの表示を保持することと、
    前記次の書き込みアドレスの表示を保持することと、
    前記停止命令の発行後に、
    前記第1のコピー元メモリ位置からの前記第1のバイト数の読み取りを中止することと、
    前記読み取りを中止する前に読み取ったバイトから残った任意のバイトを前記第1のコピー先メモリ位置に書き込むことと、
    前記第2のコピー元メモリ位置情報から次の読み取りアドレスを決定することと、
    前記第2のコピー先メモリ位置情報から次の書き込みアドレスを決定することとをさらに含み、
    前記第2のメモリ位置から前記第2のメモリコピー先への前記第2のバイト数のコピーは、前記次の読み取りアドレスと、前記次の書き込みアドレスと、前記量情報とに少なくとも依存する請求項1記載の方法。
  12. 複数のバッファに分散されている前記第1のコピー元メモリ位置から、前記第1のバイト数を取り出すことと、
    前記第1のバイト数を単一のデータストリームに集めることをさらに含む請求項1記載の方法。
  13. 前記単一のデータストリームからの前記第1のバイト数を前記第1のコピー先メモリ位置に提供することをさらに含み、
    前記第1のコピー先メモリ位置は、複数のバッファに分散される請求項12記載の方法。
  14. 前記第1のコピー先メモリ位置は、複数のバッファに分散される請求項1記載の方法。
JP2011522204A 2008-08-06 2009-08-05 停止可能および再始動可能dmaエンジン Pending JP2011530744A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US8663108P 2008-08-06 2008-08-06
US61/086,631 2008-08-06
PCT/US2009/052794 WO2010017263A1 (en) 2008-08-06 2009-08-05 Haltable and restartable dma engine

Publications (1)

Publication Number Publication Date
JP2011530744A true JP2011530744A (ja) 2011-12-22

Family

ID=41663965

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011522204A Pending JP2011530744A (ja) 2008-08-06 2009-08-05 停止可能および再始動可能dmaエンジン

Country Status (6)

Country Link
US (1) US8732382B2 (ja)
EP (1) EP2324430A4 (ja)
JP (1) JP2011530744A (ja)
KR (1) KR20110050665A (ja)
CN (1) CN102112971A (ja)
WO (1) WO2010017263A1 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101861744B1 (ko) * 2013-02-28 2018-05-29 삼성전자주식회사 데이터 블록 오프셋에 기초하여 버퍼 디스크립터의 타겟 엔트리 어드레스를 계산할 수 있는 집적 회로와 상기 집적 회로를 포함하는 시스템
CN105988955B (zh) * 2015-02-06 2019-11-01 澜起科技股份有限公司 Sdio设备及其应用的电子装置和数据传输方法
KR20170083868A (ko) * 2016-01-11 2017-07-19 삼성전자주식회사 데이터 이동 장치 및 데이터 이동 방법
US10459849B1 (en) * 2018-08-31 2019-10-29 Sas Institute Inc. Scheduling operations in an access-controlled region of memory

Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04306754A (ja) * 1991-04-03 1992-10-29 Nec Home Electron Ltd Dmaコントローラ
JPH0520263A (ja) * 1991-07-15 1993-01-29 Nec Corp データ転送制御装置
JPH06131294A (ja) * 1992-10-19 1994-05-13 Sony Corp データ転送装置
JPH09293044A (ja) * 1996-04-26 1997-11-11 Nec Corp データ転送方式
JPH09293045A (ja) * 1996-04-24 1997-11-11 Sony Corp データ転送処理装置
JPH1185671A (ja) * 1997-09-02 1999-03-30 Mitsubishi Electric Corp ダイレクト・メモリ・アクセスコントローラ
JPH11110338A (ja) * 1997-10-08 1999-04-23 Matsushita Electric Ind Co Ltd Dma制御システム
JP2000227897A (ja) * 1998-11-30 2000-08-15 Matsushita Electric Ind Co Ltd Dma転送装置及びdma転送システム
JP2000353146A (ja) * 1999-06-11 2000-12-19 Nec Corp 入出力制御装置及びそのデータの先取り方法
JP2002251368A (ja) * 2001-02-23 2002-09-06 Ricoh Co Ltd データ転送制御装置
JP2006186480A (ja) * 2004-12-27 2006-07-13 Kyocera Mita Corp データ圧縮装置及びデータ圧縮プログラム
JP2008097084A (ja) * 2006-10-06 2008-04-24 Hitachi Ltd プロセッサ及びデータ転送ユニット

Family Cites Families (49)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE69127851T2 (de) 1990-05-22 1998-04-30 Nec Corp Direktspeicherzugriffübertragungssystem und Benutzung
JPH05173938A (ja) * 1991-10-08 1993-07-13 Fujitsu Ltd 間欠dma制御方式
JPH05108548A (ja) * 1991-10-15 1993-04-30 Nec Ic Microcomput Syst Ltd Dmaコントローラ
US5251312A (en) 1991-12-30 1993-10-05 Sun Microsystems, Inc. Method and apparatus for the prevention of race conditions during dynamic chaining operations
WO1993023810A1 (en) * 1992-05-12 1993-11-25 Seiko Epson Corporation Scalable coprocessor
US5420984A (en) 1992-06-30 1995-05-30 Genroco, Inc. Apparatus and method for rapid switching between control of first and second DMA circuitry to effect rapid switching beween DMA communications
US5822553A (en) * 1996-03-13 1998-10-13 Diamond Multimedia Systems, Inc. Multiple parallel digital data stream channel controller architecture
US5778002A (en) * 1996-08-13 1998-07-07 The United States Of America As Represented By The Secretary Of The Navy Multiplexing/demultiplexing system for asynchronous high and low-speed data
US6065071A (en) * 1998-03-26 2000-05-16 Nvidia Corporation Method and apparatus for trapping unimplemented operations in input/output devices
US6473780B1 (en) 1998-04-01 2002-10-29 Intel Corporation Scheduling of direct memory access
US6330631B1 (en) * 1999-02-03 2001-12-11 Sun Microsystems, Inc. Data alignment between buses
US6859862B1 (en) * 2000-04-07 2005-02-22 Nintendo Co., Ltd. Method and apparatus for software management of on-chip cache
US6629213B1 (en) * 2000-05-01 2003-09-30 Hewlett-Packard Development Company, L.P. Apparatus and method using sub-cacheline transactions to improve system performance
US6785284B1 (en) * 2000-08-10 2004-08-31 Infineon Technologies North America Corp. Interleavement for transport of frames and cells
US20020176430A1 (en) * 2001-01-25 2002-11-28 Sangha Onkar S. Buffer management for communication systems
US6889278B1 (en) * 2001-04-04 2005-05-03 Cisco Technology, Inc. Method and apparatus for fast acknowledgement and efficient servicing of interrupt sources coupled to high latency paths
US6968445B2 (en) 2001-12-20 2005-11-22 Sandbridge Technologies, Inc. Multithreaded processor with efficient processing for convergence device applications
US6912623B2 (en) 2002-06-04 2005-06-28 Sandbridge Technologies, Inc. Method and apparatus for multithreaded cache with simplified implementation of cache replacement policy
US6990557B2 (en) 2002-06-04 2006-01-24 Sandbridge Technologies, Inc. Method and apparatus for multithreaded cache with cache eviction based on thread identifier
US6904511B2 (en) 2002-10-11 2005-06-07 Sandbridge Technologies, Inc. Method and apparatus for register file port reduction in a multithreaded processor
US6842848B2 (en) 2002-10-11 2005-01-11 Sandbridge Technologies, Inc. Method and apparatus for token triggered multithreading
US6925643B2 (en) 2002-10-11 2005-08-02 Sandbridge Technologies, Inc. Method and apparatus for thread-based memory access in a multithreaded processor
US6971103B2 (en) 2002-10-15 2005-11-29 Sandbridge Technologies, Inc. Inter-thread communications using shared interrupt register
US7380114B2 (en) 2002-11-15 2008-05-27 Broadcom Corporation Integrated circuit with DMA module for loading portions of code to a code memory for execution by a host processor that controls a video decoder
KR101005718B1 (ko) 2003-05-09 2011-01-10 샌드브리지 테크놀로지스, 인코포레이티드 포화와 함께 또는 포화 없이 다중 오퍼랜드들의 누산을 위한 프로세서 감소 유닛
US7327700B2 (en) * 2003-05-30 2008-02-05 Redpine Signals, Inc. Flexible multi-channel multi-thread media access controller and physical layer interface for wireless networks
US7058735B2 (en) 2003-06-02 2006-06-06 Emulex Design & Manufacturing Corporation Method and apparatus for local and distributed data memory access (“DMA”) control
US7428567B2 (en) 2003-07-23 2008-09-23 Sandbridge Technologies, Inc. Arithmetic unit for addition or subtraction with preliminary saturation detection
US7251737B2 (en) 2003-10-31 2007-07-31 Sandbridge Technologies, Inc. Convergence device with dynamic program throttling that replaces noncritical programs with alternate capacity programs based on power indicator
US7797363B2 (en) 2004-04-07 2010-09-14 Sandbridge Technologies, Inc. Processor having parallel vector multiply and reduce operations with sequential semantics
US7475222B2 (en) 2004-04-07 2009-01-06 Sandbridge Technologies, Inc. Multi-threaded processor having compound instruction and operation formats
US8074051B2 (en) 2004-04-07 2011-12-06 Aspen Acquisition Corporation Multithreaded processor with multiple concurrent pipelines per thread
TW200625097A (en) 2004-11-17 2006-07-16 Sandbridge Technologies Inc Data file storing multiple date types with controlled data access
EP1899828B1 (en) * 2005-06-30 2009-11-25 Freescale Semiconductor, Inc. Device and method for arbitrating between direct memory access task requests
WO2007003986A1 (en) * 2005-06-30 2007-01-11 Freescale Semiconductor, Inc. Device and method for controlling an execution of a dma task
US20070040788A1 (en) * 2005-08-17 2007-02-22 Texas Instruments, Inc. Modular Graphics Stack With Video Support
WO2007049150A2 (en) 2005-09-28 2007-05-03 Arc International (Uk) Limited Architecture for microprocessor-based systems including simd processing unit and associated systems and methods
KR20090078790A (ko) 2006-09-26 2009-07-20 샌드브리지 테크놀로지스, 인코포레이티드 무선 통신 시스템에서 매트릭스 변환 소프트웨어 구현을 위한 장치 및 방법
US9110726B2 (en) 2006-11-10 2015-08-18 Qualcomm Incorporated Method and system for parallelization of pipelined computations
WO2009029289A1 (en) 2007-08-31 2009-03-05 Sandbridge Technologies, Inc. Method, apparatus, and architecture for automated interaction between subscribers and entities
EP2602710A1 (en) 2007-11-05 2013-06-12 Aspen Acquisition Corporation Method of encoding register instruction fields
EP2250539A1 (en) 2008-01-30 2010-11-17 Sandbridge Technologies, Inc. Method for enabling multi-processor synchronization
US20100031007A1 (en) 2008-02-18 2010-02-04 Sandbridge Technologies, Inc. Method to accelerate null-terminated string operations
CN102027456A (zh) 2008-03-13 2011-04-20 阿斯奔收购公司 用于通过停用有效阵列实现功率节省的方法
WO2010025074A1 (en) 2008-08-28 2010-03-04 Sandbridge Technologies, Inc. Latch-based implementation of a register file for a multi-threaded processor
US20100138575A1 (en) * 2008-12-01 2010-06-03 Micron Technology, Inc. Devices, systems, and methods to synchronize simultaneous dma parallel processing of a single data stream by multiple devices
US8140769B2 (en) * 2009-04-20 2012-03-20 Oracle America, Inc. Data prefetcher
US8749568B2 (en) * 2010-01-11 2014-06-10 Apple Inc. Parameter FIFO
US8458377B2 (en) * 2010-03-05 2013-06-04 Lsi Corporation DMA engine capable of concurrent data manipulation

Patent Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04306754A (ja) * 1991-04-03 1992-10-29 Nec Home Electron Ltd Dmaコントローラ
JPH0520263A (ja) * 1991-07-15 1993-01-29 Nec Corp データ転送制御装置
JPH06131294A (ja) * 1992-10-19 1994-05-13 Sony Corp データ転送装置
JPH09293045A (ja) * 1996-04-24 1997-11-11 Sony Corp データ転送処理装置
JPH09293044A (ja) * 1996-04-26 1997-11-11 Nec Corp データ転送方式
JPH1185671A (ja) * 1997-09-02 1999-03-30 Mitsubishi Electric Corp ダイレクト・メモリ・アクセスコントローラ
JPH11110338A (ja) * 1997-10-08 1999-04-23 Matsushita Electric Ind Co Ltd Dma制御システム
JP2000227897A (ja) * 1998-11-30 2000-08-15 Matsushita Electric Ind Co Ltd Dma転送装置及びdma転送システム
JP2000353146A (ja) * 1999-06-11 2000-12-19 Nec Corp 入出力制御装置及びそのデータの先取り方法
JP2002251368A (ja) * 2001-02-23 2002-09-06 Ricoh Co Ltd データ転送制御装置
JP2006186480A (ja) * 2004-12-27 2006-07-13 Kyocera Mita Corp データ圧縮装置及びデータ圧縮プログラム
JP2008097084A (ja) * 2006-10-06 2008-04-24 Hitachi Ltd プロセッサ及びデータ転送ユニット

Also Published As

Publication number Publication date
EP2324430A1 (en) 2011-05-25
US20110252211A1 (en) 2011-10-13
KR20110050665A (ko) 2011-05-16
WO2010017263A1 (en) 2010-02-11
EP2324430A4 (en) 2012-07-25
US8732382B2 (en) 2014-05-20
CN102112971A (zh) 2011-06-29

Similar Documents

Publication Publication Date Title
US8639886B2 (en) Store-to-load forwarding mechanism for processor runahead mode operation
US6199121B1 (en) High speed dynamic chaining of DMA operations without suspending a DMA controller or incurring race conditions
KR100577827B1 (ko) 제한적 메모리 모델을 갖고 있는 시스템내의 다중 저장버퍼 포워딩을 위한 시스템 및 방법
EP0241946A2 (en) Information processing system
US20050149693A1 (en) Methods and apparatus for dual-use coprocessing/debug interface
US6978360B2 (en) Scalable processor
KR20100003309A (ko) 파이프라인 프로세서에서 조건 명령 실행을 촉진시키기 위해 로컬 조건 코드 레지스터를 이용하기 위한 방법 및 장치
TWI236591B (en) Method and apparatus for determining a dynamic random access memory page management implementation
US11693661B2 (en) Mechanism for interrupting and resuming execution on an unprotected pipeline processor
JP5287301B2 (ja) ディスクリプタ転送装置、i/oコントローラ、及びディスクリプタ転送方法
US6658537B2 (en) DMA driven processor cache
JP2011530744A (ja) 停止可能および再始動可能dmaエンジン
WO2021091649A1 (en) Super-thread processor
JP2007501473A (ja) メインメモリとストレージ装置との間のデータ転送を行うための方法及び装置
JPH01120660A (ja) マイクロコンピュータ装置
JP2008537208A (ja) 条件付命令を実行しない時のソース・オペランドの停止待機
US5724533A (en) High performance instruction data path
KR20140111416A (ko) 정적 스케쥴 프로세서의 논블로킹 실행 장치 및 방법
US20220229662A1 (en) Super-thread processor
JP6691239B2 (ja) 演算ユニットを駆動する方法
JPH03256127A (ja) マイクロプロセッサシステム
JP2806690B2 (ja) マイクロプロセッサ
JP4062481B2 (ja) メモリ間データコピー方法
JPH02259945A (ja) ストア処理方式
JPS5887613A (ja) 入出力制御方式

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120925

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120926

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20121023

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20121023

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20130305