JP4887313B2 - 複雑な非線形データの転送制御システム - Google Patents

複雑な非線形データの転送制御システム Download PDF

Info

Publication number
JP4887313B2
JP4887313B2 JP2008034289A JP2008034289A JP4887313B2 JP 4887313 B2 JP4887313 B2 JP 4887313B2 JP 2008034289 A JP2008034289 A JP 2008034289A JP 2008034289 A JP2008034289 A JP 2008034289A JP 4887313 B2 JP4887313 B2 JP 4887313B2
Authority
JP
Japan
Prior art keywords
data
memory access
control data
control
direct memory
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
JP2008034289A
Other languages
English (en)
Other versions
JP2008204456A (ja
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 JP2008204456A publication Critical patent/JP2008204456A/ja
Application granted granted Critical
Publication of JP4887313B2 publication Critical patent/JP4887313B2/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
    • 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/38Information transfer, e.g. on bus
    • G06F13/382Information transfer, e.g. on bus using universal interface adapter
    • G06F13/385Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Bus Control (AREA)
  • Multi Processors (AREA)

Description

本発明の分野は、データ処理に関するものであって、更に詳細には、ダイレクト・メモリ・アクセス・コントローラを使用したデータ転送の制御に関する。
メモリと周辺機器間のように異なる機能ユニット間で、プロセッサを使用する必要なく、従ってそれをインタラプトすることなしにデータ・アクセスを制御するために、ダイレクト・メモリ・アクセス・コントローラ、すなわちDMACを備えることが知られている。
DMAコントローラは、複数の周辺機器とメモリ間でデータ転送を制御する。特別なデータ転送を制御するために、ダイレクト・メモリ・アクセス・コントローラは、データの初期の発信元アドレス、宛先アドレス、例えば1ワードすなわち32ビットなど転送幅および例えば3072バイトなど転送サイズを必要とする。これらは、DMAコントローラ自身に記憶させることができる。しかし、DMAコントローラが非常に多数の周辺機器のメモリ・アクセスを制御する場合、この情報をそれら周辺機器又はチャネルの各々に記憶させる必要がある。このことは、大量の記憶を必要とし、DMAコントローラのゲート・カウントを増やすことになる。この問題に対処する1つの既存の方法は、各チャネルに関する制御情報をメモリに記憶させて、DMAコントローラには、それへのポインタだけを記憶させるものである。これは、各チャネルについて1つのポインタであるか、あるいは、ベース・アドレスへのポインタでよく、各種のチャネルに関する制御情報は、このアドレスから既知のオフセットだけ離れた場所に記憶されることになる。これは、データ転送が各チャネルについて連続的な線形転送の場合はよいが、しかし、これがスキャッタ(scatter)/ギャザ(gather)転送のように、データがいくつかの宛先に送られたり、いくつかの発信元から取り出されたりする場合のようにバラバラなケースでは、転送と転送の間に制御データを更新する必要が生まれ、これをプロセッサが行わなければならない。
この問題に対処する1つに既存の方法は、リンク・リスト(linked list)を使用するものである(例えば、ARMによって製造され、http://www.arm.com/pdfs/DDI0196G_dmac_pl080_r1p3_trm.pdfに見出される出版物に詳細があるPL08x型DMACを参照)。このような構成では、DMAC内に各チャネルに関するレジスタがあって、それがこのチャネルに対するリンク・リストを指している。各リンク・リストは、データの1ブロックの転送を制御し、次にオプションとして、DAMオペレーションを継続するために別のリンク・リストをロードするか、あるいは、DMAストリームを停止させる。このように、第1のリンク・リストのアドレスは、転送すべきデータの第1のブロック、転送すべき次のブロックを定義する次のリンク・リストを記憶するこのデータ・ブロックの最後のアドレス等々を定義し、最後には、次のリンク・リスト・アドレスがデータ転送の停止を意味する00を記憶するアドレスを記憶する。これは、バラバラなデータ転送を実行する効率的なやり方であるが、リンク・リスト・ポインタを記憶するために、DMAコントローラ内に各チャネルについて1つのレジスタを必要とする。
プロセッサをインタラプトする必要なく、またDMAコントローラに関するゲート・カウントを小さく保ったままでバラバラなデータ転送を実行する柔軟性を有することが望ましい。
本発明の第1の態様は、複数のデータ発信元と複数のデータ宛先との間でデータ転送を制御するダイレクト・メモリ・アクセス・コントローラを提供し、前記複数のデータ発信元およびデータ宛先は、複数のチャネルを介して前記ダイレクト・メモリ・アクセス・コントローラと交信し、前記ダイレクト・メモリ・アクセス・コントローラは、更にメモリおよびプロセッサと交信しており、前記メモリは、前記複数のチャネルの各々および前記プロセッサに対して2組の制御データを記憶するように適応している。前記ダイレクト・メモリ・アクセス・コントローラは、前記複数のチャネルの1つ又は前記プロセッサから受信するデータ転送要求に応答して、前記メモリに記憶された前記対応する制御データの1組にアクセスし、前記ダイレクト・メモリ・アクセスは、前記アクセスされた制御データに依存して、要求される前記データ転送の少なくとも一部を実行する。
DMAコントローラによって実行されるメモリ・アクセスを制御する制御データをDMAコントローラに付随するメモリ内に記憶された形で提供することは、DMAコントローラ内に記憶すべきデータ量を減らし、従ってそれのゲート・カウントも減らす。DMAコントローラがオンであるがまだアクティブでない場合が多いことから、このことは、有利であり、また少数のゲート・カウントを有することは、電力消費も改善する。このように、データ転送要求が受信されると対応する制御データへのアクセスが必要となり、このことによってこのデータがDMAコントローラ自身に記憶される場合よりも大きい電力が消費されるものの、このようなことがそれほど頻繁に発生するわけではないことから、小型のDMAコントローラによって節電する場合と比べて、その支払うべきコストは、一般に小さい。更に、各チャネルおよびプロセッサに対して2組の制御データを備えることは、各々のデータ転送要求に対して実質的に実施できる可能なデータ転送が2つ存在することを意味する。これは、プロセッサ介入の必要なしに複雑な非線形のデータ転送シーケンスを実行することを可能にする。
いくつかの実施の形態で、前記ダイレクト・メモリ・アクセス・コントローラは、前記1組の制御データによって制御される前記データ転送の一部の完了に続いて、前記2組の制御データの他方にアクセスして前記データ転送の別の一部の転送を制御するように適応している。
この2組の制御データは、単一のデータ転送要求の間に使用することができ、メモリ・アクセス・コントローラは、これらの制御データの1組によって制御される部分の完了に続いて、これらの間の切り替えを自動的に実行する。
他の実施の形態で、前記ダイレクト・メモリ・アクセス・コントローラは、前記1組の制御データに依存して前記データ転送のすべてを実行し、また同じチャネル又はプロセッサからの後続のデータ転送要求に応答して前記2組の制御データの他方にアクセスするように適応する。
1組の制御データの制御下でデータ転送全体が実行されることもある。また、別のデータ転送要求が受信されると、他方の制御データ組が使用される。これに関して注意すべきことは、1つのデータ転送は、1つのデータ転送要求に応答して転送されるデータを含むと考えられることである。すなわち、先の実施の形態で、1つのデータ転送は、いくつかの部分に分けて実行され、その各々が異なる制御データによって制御されていたが、この実施の形態では、これが1組の制御データによってデータ転送される。両方のケースで、これは、1つの特別な要求に応答してデータ転送される。
いくつかの実施の形態で、前記ダイレクト・メモリ・アクセス・コントローラは、1つのレジスタを含み、前記レジスタは、前記制御データの記憶に関するベース・アドレスを記憶するように適応して、制御データの各組は、前記ベース・アドレスに依存してアドレス指定できる。
制御データをメモリに記憶させることによって、ダイレクト・メモリ・アクセス・コントローラが必要とするデータ量が減る。特に、制御データのベース・アドレスが1つのレジスタに記憶させれば、制御データの異なる組の各々を記憶させる場所を計算するためにDMAコントローラが必要とするものは、もしそれらが既知の配置で記憶されることになっていれば、これだけでよい。
いくつかの実施の形態で、前記ダイレクト・メモリ・アクセス・コントローラは、前記複数のチャネルの各々およびプロセッサについて1つのインジケータ記憶(indicator store)を含み、前記インジケータ記憶は、前記2組の制御データのどちらにアクセスすべきかを指すインジケータ・ビットを含み、前記ダイレクト・メモリ・アクセス・コントローラは、前記1組の制御データによって制御される前記データ転送の少なくとも一部の完了に続いて、前記インジケータ・ビットをトグルさせるように適応している。
どの制御データを使用するかをDMAコントローラが知る便利な方法は、1ビットを記憶するインジケータ記憶を利用するものである。これは、制御データの1組によって制御されるデータ転送の完了に続いてトグルされ、それによって次のデータ・アクセスでは、制御データの他方が自動的に使用される。次のデータ・アクセスは、データ転送の一部であるか、あるいは、それは、新しいデータ転送である。
いくつかの実施の形態で、前記制御データは、前記データの発信元を指す発信元ポインタ、前記データの宛先を指す宛先ポインタおよび前記データ転送のタイプを示すタイプ・データ(type data)を含む。
制御データには、複数のものが含まれ、いくつかの実施の形態では、データ転送のタイプを示す情報が含まれる。これは、データ転送要求にコントローラがどのように反応するか、また特別な場合であろうとなかろうと、それが2組の制御データをどのように使用するかを決定する情報である。
いくつかの実施の形態で、前記ダイレクト・メモリ・アクセス・コントローラは、制御データの前記1組によって制御されるデータ転送の完了に応答して、制御データの前記1組を更新するように要求するインタラプトを前記プロセッサに対して発行し、また前記後続のデータ転送要求に応答して、制御データの前記他方の組にアクセスし、また制御データの前記他の組によって制御される別のデータ転送を実行し、また前記別のデータ転送の完了に続いて、制御データの前記他の組を更新するように要求するインタラプトを前記プロセッサに対して発行し、また同じチャネル又はプロセッサからの別のデータ転送要求に応答して、制御データの前記1組に、もしそれが更新されていればアクセスして、制御データの前記1組の制御下で前記別のデータ転送を開始し、またもし制御データの前記1組が更新されていないことが検出されれば、前記別のデータ転送を保留させる。
本発明の実施の形態が取り扱うバラバラなデータ転送の1つの特別なタイプは、ピンポン(ping pong)データ転送である。このケースで、制御データの1組によって制御されるデータ転送に続いて、DMAコントローラは、この制御データを更新するように要求するインタラプトをプロセッサに対して発行する。これは、次に、このチャネルを使用して、制御データの他方の組を用いて別のデータ転送要求を実行できる。もしこの転送の間に、プロセッサが制御データの第1の組を更新することができれば、別の転送要求に続いて、新しい更新された制御データを使用できる。このようにして、DMAコントローラは、多くの異なるデータ転送を連続して制御できる。
いくつかの実施の形態で、前記ダイレクト・メモリ・アクセス・コントローラは、制御データの前記1組によって制御されるデータ転送の完了に応答して、制御データの前記1組を無効であるとマークし、更に無効とマークされた制御データの前記1組を更新し次に有効としてマークするように要求するインタラプトを前記プロセッサに対して発行し、また前記別のデータ転送の完了に続いて、制御データの前記他方の組を無効としてマークし、制御データの前記他方の組を更新して有効としてマークするように要求するインタラプトを前記プロセッサに対して発行し、それが有効又は無効のいずれにマークされるかに依存して、制御データの前記1組が更新されたかどうかを検出する。
制御データを再び使用する前に、それが更新されたかどうかを決定する方法は、多く存在するが、1つの簡単で効率的な方法は、使用後にその制御データを無効としてマークし、一旦それが更新されれば有効としてマークするものである。これは、従って制御データが準備できているかどうかをDMAコントローラが知る直接的な方法である。もし準備ができていなければ、それは、そのデータ転送を保留させる。
いくつかの実施の形態で、制御データの前記1組によって制御される前記データ転送の前記部分には、制御データの前記他方の組の上書きが含まれ、前記データ転送の前記別の部分は、制御データの前記更新された他方の組によって制御され、それによって、前記ダイレクト・メモリ・アクセス・コントローラは、プロセッサ介入を要求することなく、更新された制御データを使用してデータ転送シーケンスを実行するように適応する。
本発明の実施の形態は、またメモリ・スキャッタ・ギャザ(memory scatter gather)データ転送に特に適している。これには、制御データの他方の組を更新するために、制御データの1組を使用するメモリ・アクセス・コントローラが関与する。このように、プロセッサ介入の必要なしに、複数の異なるアドレスに対して複数のデータ転送を行うことができる。すなわち、プロセッサをインタラプトする必要なしに、バラバラなデータ転送が行われる。
いくつかの実施の形態で、制御データの前記更新された他方の組によって制御される前記データ転送の前記別の部分の1つは、前記1組の制御データの上書きを含み、それによって、前記ダイレクト・メモリ・アクセス・コントローラは、プロセッサ介入なしに、上限のない複数のデータ転送を実行するように適応する。
制御データの組の1つが他方の組を更新すると、その発生回数は、第1のデータ転送のデータ転送サイズによって限定される。しかし、もし制御データの他方の組が、一定数のデータ転送に続いて、制御データの前記1組を上書きすることができれば、これは、チャネル制御データを記憶するために割り当てられたメモリのサイズによってのみ限定される。
いくつかの実施の形態で、前記ダイレクト・メモリ・アクセス・コントローラは、前記プロセッサが前記チャネルをディセーブルするか、前記データ転送が完了するまで、制御データの前記1組および制御データの前記他方の組によって制御される後続のデータ転送を連続して実行するように適応する。
このデータ転送は、それが完了するか、あるいは、プロセッサがチャネルをディセーブルするかのいずれかによって停止される。
いくつかの実施の形態で、前記ダイレクト・メモリ・アクセス・コントローラは、別のデータ要求に応答して、制御データの前記1組にアクセスし、制御データの前記1組の制御下で別のデータ転送の一部を実行し、前記別のデータ転送の前記部分は、制御データの前記他方の組の上書きを含み、前記ダイレクト・メモリ・アクセス・コントローラは、制御データの前記1組によって制御される前記別のデータ転送の前記部分の完了に応答して、制御データの前記更新された他方の組にアクセスし、また前記更新された制御データの制御下で、前記別のデータ転送の別の部分を実行する。
メモリ又は実質的にプロセッサからのソフトウエア・インタラプトによって発行されるデータ要求からのスキャッタ・ギャザ・データ転送のケースでは、データ転送要求は、別の要求が受信されなくても自動的に継続される。しかし、もしこのメモリ・スキャッタ・ギャザを要求したのが周辺機器であれば、データの第2の組が使用されるたびに、DMAコントローラは、先に進む前に新しいデータ転送要求を待つ。
本発明の別の態様は、複数のデータ発信元/宛先、メモリ、プロセッサおよび発明の第1の態様に従い前記データ発信元/宛先と前記メモリとの間でデータ転送を制御するダイレクト・メモリ・アクセス・コントローラを含むデータ処理装置を提供し、前記データ発信元/宛先は、前記複数のチャネルを介して前記ダイレクト・メモリ・アクセス・コントローラと交信し、前記メモリは、前記複数のチャネルの各々およびプロセッサに対応する制御データの前記2つの組を記憶するように適応する。
前記複数のデータ発信元/宛先は、複数のものでよいが、いくつかの実施の形態では、これらは、周辺機器を含む。ダイレクト・メモリ・アクセス・コントローラは、周辺機器とメモリとの間でデータ転送を制御するのに特に有用である。
発明の更に別の態様は、複数のデータ発信元と複数のデータ宛先との間でデータ転送を制御するダイレクト・メモリ・アクセス制御方法を提供し、前記複数のデータ発信元および複数のデータ宛先は、複数のチャネルを介して前記ダイレクト・メモリ・アクセス・コントローラと交信し、前記ダイレクト・メモリ・アクセス・コントローラは、更にメモリおよびプロセッサと交信しており、前記メモリは、前記複数のチャネルの各々および前記プロセッサに対して2組の制御データを記憶するように適応する。前記ダイレクト・メモリ・アクセス制御方法は、前記複数のチャネルの1つ又は前記プロセッサからデータ転送要求を受信する工程、前記データ転送要求に応答して前記対応するチャネル又はプロセッサに関する前記メモリに記憶された前記制御データの1組にアクセスする工程および前記アクセスされた制御データの制御下で前記データ転送の少なくとも一部を実行する工程を含む。
本発明の上記およびその他の目的、特徴および利点は、例示的実施の形態についての以下の詳細な説明を添付図面と関連付けながら参照することによって明らかとなろう。
図1aは、本発明の1つの実施の形態に従うダイレクト・メモリ・アクセス・コントローラを含むデータ処理装置5を示す。ダイレクト・メモリ・アクセス(DMA)コントローラ10は、複数の周辺機器20、メモリ30およびプロセッサ40に接続される。
メモリ30は、DMA10の制御下で転送すべきデータをDMAコントローラ10を制御する制御データと一緒に記憶する。DMAコントローラ10の内部には、レジスタ12があって、これは、DMAコントローラ10の第1のチャネルについての制御情報を保持するメモリ30内の1つの場所31のベース・アドレスを保有する。DMAコントローラ10は、周辺機器20をDMAコントローラ10に接続する複数のチャネル14を有する。これらのチャネルは、周辺機器からDMAコントローラ10にデータ・アクセス要求を伝達する。これは、またチャネル16を有し、それは、プロセッサ40からのチャネルであって、メモリからDMAコントローラ10へのデータ転送に関するデータ・アクセス要求を伝達する。これらは、一般的にソフトウエアが発生する要求である。これらのチャネル14、16は、すべてデータ・アクセス要求を受信し、これらのデータ・アクセス要求は、メモリ30に記憶された制御データによって制御される。レジスタ12は、このデータの記憶場所のベース・アドレス31を示し、DMAコントローラ10は、それに従ってこのベース・アドレスの同定とデータ・アクセス要求に対応するチャネルの知識とによって適切な制御データの組にアクセスできる。
各チャネルに対して2組の制御データ32があって、これらは、メモリ30に記憶され、これらの1つは、一次(primary)制御データであり、もう1つは、代替(alternate)制御データである。この実施の形態で、これらは、各々4つのメモリ場所に記憶される。メモリ場所の1つは、未使用であり、別の1つは、データの発信元アドレスを示す発信元ポインタを記憶し、別の1つは、宛先ポインタであってデータの行き先を示し、別の1つは、制御情報を記憶する。この制御情報は、データ転送サイズとデータ転送が使用するアドレス増分を示す。これは、またデータ転送タイプを示し、データ転送タイプは、一次および代替制御データがどのように使用されるかを決定する。このデータの記憶は、図1bに更に詳細に示されている。
DMAコントローラ10は、また各チャネルについてトグル・ビット13を含む。このトグル・ビットは、その要求についての特定の1つのチャネルに対して、一次又は代替制御データのいずれにアクセスすべきかを決定する。
上述のように、制御データは、実行すべきデータ転送のタイプを指示できる。注意すべきことは、すべてのデータ転送タイプについて、コントローラは、2個のDMA転送に続いて、アービトレート(arbitrate)することである。これは、優先度の低いDMA転送が長時間にわたってDMAをブロックすることを防止する。Rの値は、性能要求に従って選ぶことができる。制御データの一部の値については、図1bの32に示されている。
図1bは、メモリ30中の代替および一次制御データの記憶をより詳細に示している。この実施の形態で、一次制御データおよび代替制御データは、互いの間にオフセットを持たせて一緒に記憶され、それによってこれらの場所を、DMAコントローラがベース・アドレスから知ることができるようになっている。1つのチャネルに関する1組の制御データは、32に示されており、4つのメモリ場所が示されているが、1つが未使用で、1つが制御データを含み、1つが宛先エンド・ポインタ(end pointer)で、1つが発信元エンド・ポインタである。
図2は、データ転送の1つのタイプである、「ピンポン」モードを示す。このモードで、コントローラは、データ転送要求50に応答して、制御データ構造の1つを用いてDMAサイクルを実行する。このデータ転送の終わりに、どの制御データを使用するかを指示するビットがトグルされる。すなわち、別のデータ転送要求50に応答して、このチャネルに関する他方の制御データを用いたDMAサイクルが実行される。コントローラが無効な制御データ構造を読むまで、あるいは、ホスト・プロセッサがチャネルをディセーブルするまで、コントローラがこれらの制御データ構造間を切り替えるごとに、すなわち、一次から代替へ、そして一次へと切り替えるたびに、制御データ・ビットがトグルされる。
データ要求50に応答して、一次制御データの制御下で、N個のデータ・ビットのデータ転送が開始される。この転送の終わりに、どの制御データを使用すべきかを指示するこのチャネルに関するトグル・ビット(図1の13)がトグルされる。後続の要求に続いて、代替制御データ構造を用いてデータが転送され、これが完了すると、チャネルに関するトグル・ビット13が再びトグルされ、以下同様の操作が続けられる。このように、各々の新しいデータ転送要求に対して、制御データが、一次と代替との間をトグルする。
図3は、「メモリ・スキャッタ・ギャザ」と呼ばれる別のタイプのデータ転送を示す。メモリ・スキャッタ・ギャザ・モードでは、データが複数の異なる場所に転送される。このことは、制御データの1つを使用して、他方の制御データの更新を制御することによって実現される。この更新された制御データを使用して、データ転送が制御され、そうすることで、複数の異なる場所へのデータ転送を実行できる。
本発明の1つの実施の形態に従うメモリ・スキャッタ・ギャザにおいて、コントローラは、イニシャル要求を受信し、これに応答してこのチャネルに関する一次制御データ構造を用いたDMA転送を実行する。一次制御データは、代替制御データ記憶場所へのデータの転送を制御する。すなわち、これは、代替制御データを更新する。これが完了すると、すなわち、4個の転送に続いて、トグル・ビットがトグルされ、DMAコントローラは、次に代替制御データ構造の使用へ自動的に切り替わり、そこにおいて、N個のデータ・アイテムのデータ転送が実行される。注意すべきことは、この実施の形態で、制御データを記憶するために3つの場所が必要であるところ、4つのメモリ場所が使用されることであって、それは、データ転送が2のべき乗でのみ実行できるためであり、そのために4つの場所が使用されていることである。これに続いて、このチャネルに関するトグル・ビットは、もう一度トグルされて、一次制御データの制御下で再びデータ転送が開始され、それによって代替制御データがもう一度更新される。代替制御データ構造を更新するために、DMAコントローラが一次制御データを使用するので、単一のデータ転送要求に応答して、プロセッサ介入なしで複数のデータ転送を実行できる。単一の要求の制御下でデータ・アイテムを転送できる先の異なる場所の数に対する唯一の上限は、代替データ転送を更新するために実行できる一次データ転送の数である。これは、一次データ転送の全長によって支配される。しかし、この制限は、代替データ構造によって制御された最後のデータ転送を使用して一次制御データを更新すれば克服できる。これは、全く新しいデータ転送の組みを開始することを許容する。このように、実質的に上限のない数のデータ転送を実行できる。
図3は、上述のプロセスを示す。最初に、メモリ・スキャッタ・ギャザをスタートすべきことを示すソフトウエア要求60がプロセッサ60からDMAコントローラに受信される。次に一次制御データの制御下で2個のデータ転送が実行され、次に制御データを示すトグル・ビットがトグルされる。次に、代替制御データが次のN個のデータ転送のために用いられ、そこでトグル・ビットが再びトグルされる。この実施の形態で、一次データ転送が代替制御データを含むメモリ内の4つのメモリ場所の上書きを含むため、2は、4である。Nが16にセットされ、従って、一次制御データの制御下で実行できる4個の転送のタスクは、4つあり、このことは、この制御データの制御下で代替データを4回更新できることを意味する。もし一次制御データの更新を代替制御データが制御するのであれば、新しい一次制御データで4個の転送を超えてこれを続けることができることは、明らかである。
図4は、代替的実施の形態を示し、そこには、周辺機器スキャッタ・ギャザ(peripheral scatter gather)が示されている。これは、メモリ・スキャッタ・ギャザに似ているが、転送が一次の制御下で実行され、次に自動的に代替制御データの制御下で実行されるが、自動的に切り替わって再び一次制御データの制御下で別のデータを転送することはなく、むしろ別のデータ転送要求70が受信されるまで別のデータ転送はない。この時点で、データは、一次制御データの制御下で、次に代替制御データの制御下で転送される。言い換えれば、メモリ・スキャッタ・ギャザの場合のように、一次から代替へ、そして代替から一次へと自動的に切り替わって転送が続くことがない。
すなわち、周辺機器からのデータ転送要求70がDMAコントローラに受信される。この要求に応答して一次制御データの制御下でデータ転送が実行される。これは、代替制御データの更新を制御する。これが完了すると、トグル・ビットがトグルされて、データ転送の制御は、代替制御データに切り替わる。次にこの更新された代替制御データの制御下でデータ転送が実行される。次にデータ転送が完了する。同じ周辺機器からの、すなわち同じチャネル上の別のデータ転送要求に応答して、一次制御データを再び使用して代替制御データが更新される。
本発明の更に別の実施の形態は、以下のページに、より詳細に提示される。
異なるタイプのデータ転送は、cycl_ctrlビットによって決まる。ここに述べた実施の形態で、次の表は、異なる可能なcycl_ctrlビットを示す。
Figure 0004887313
すべてのタイプのサイクルに対して、コントローラは、2個のDMA転送に続いてアービトレートする。もし優先度の低いチャネルに大きい2の値をセットすれば、優先度の低いDMA転送が完了するまで、これは、すべての他のチャネルがDMA転送を実行することを阻止する。従って、Rのべき乗を設定する場合、優先度の高いチャネルの待ち時間を大幅に増やすことのないように気を配る必要がある。
次のセクションでは、サイクル・タイプについて説明する。
・無効
・ベーシック
・自動要求 段落0054、0055
・ピンポン 段落0056
・メモリ・スキャッタ−ギャザ 段落0073
・周辺機器スキャッタ−ギャザ 段落0086
無効
コントローラがDMAサイクルを完了したあと、それは、このサイクル・タイプを無効にセットする。これは、コントローラがDMAサイクルを繰り返すことを防止するためである。
ベーシック
このモードで、コントローラは、一次又は代替のいずれかのデータ構造を使用するように構成される。このチャネルがイネーブルされたあと、コントローラが要求を受信し、そのあとの、このDMAサイクルに対するフローは、次のようになる。
1.コントローラは、2個の転送を実行する。もし残りの転送数がゼロであれば、フローは、工程3に続く。
2.コントローラがアービトレートする。
・もし優先度の高いチャネルがサービス要求すれば、コントローラは、そのチャネルにサービス提供する。
・もし周辺機器又はソフトウエアがコントローラに要求を発行すれば、これは、工程1に続く。
3.コントローラは、1つのhclkサイクルに対してdma_done[C]をHIGHにセットする。これは、このDMAサイクルが完了したことをホスト・プロセッサに示す。
自動要求
コントローラがこのモードで動作するとき、これに要求されることは、単一の要求を受信して、このDMAサイクル全体を完了させることである。
コントローラは、一次又は代替のいずれかのデータ構造を使用するように構成できる。チャネルがイネーブルされたあと、そしてこのチャネルに対する要求をコントローラが受信したあとの、このDMAサイクルに関するフローは、次のようになる。
1.コントローラは、チャネルC<x>に関する2個の転送を実行する。もし残りの転送数がゼロであれば、フローは、工程3に続く。
2.コントローラは、アービトレートする。チャネルC<x>が最も高い優先度を有する場合、DMAサイクルは、工程1に続く。
3.コントローラは、1つのhclkサイクルに対してdma_done[C]をHIGHにセットする。これは、このDMAサイクルが完了したことをホスト・プロセッサに示す。
ピンポン
ピンポン・モードで、コントローラは、チャネル・データ構造の1つを使用してDMAサイクルを実行し、次に他方のチャネル・データ構造を使用してDAMサイクルを実行する。コントローラは、それが無効なチャネル制御データ構造を読むまで、あるいは、ホスト・プロセッサがこのチャネルをディセーブルするまで、一次から代替へ、更に一次へと切り替えを続ける。
図5は、ピンポンDMAトランザクションの一例を示す。
図5で
タスクA
1.ホスト・プロセッサは、一次チャネル・データ構造をタスクA用に構成する。
2.ホスト・プロセッサは、代替チャネル・データ構造をタスクB用に構成する。これは、より高い優先度のチャネルがサービス要求しないかぎり、タスクAが完了したあとコントローラがタスクBに直ちに切り替えることをイネーブルする。
3.コントローラは、要求を受信して、4個のDMA転送を実行する。
4.コントローラは、アービトレートする。コントローラがこのチャネルに対する要求を受信したあと、もしチャネルが最も高い優先度を有していれば、フローが続く。
5.コントローラは、残る2個のDMA転送を実行する。
6.コントローラは、1つのhclkサイクルに対してdma_done[C]をHIGHにセットし、アービトレート・プロセスに入る。
タスクAが完了したあと、ホスト・プロセッサは、一次チャネル・データ構造をタスクC用に構成できる。これは、より高い優先度のチャネルがサービス要求しないかぎり、タスクBが完了したあとコントローラがタスクCに直ちに切り替えることをイネーブルする。
コントローラがこのチャネルに対する新しい要求を受信したあと、これが最も高い優先度を有していれば、タスクBが開始される。
タスクB
7.コントローラは、4個のDMA転送を実行する。
8.コントローラは、アービトレートする。コントローラがこのチャネルに対する要求を受信したあと、もしチャネルが最も高い優先度を有していれば、フローが続く。
9.コントローラは、4個のDMA転送を実行する。
10.コントローラは、アービトレートする。コントローラがこのチャネルに対する要求を受信したあと、もしチャネルが最も高い優先度を有していれば、フローが続く。
11.コントローラは、残る4個のDMA転送を実行する。
12.コントローラは、1つのhclkサイクルに対してdma_done[C]をHIGHにセットし、アービトレート・プロセスに入る。
タスクBが完了したあと、ホスト・プロセッサは、代替チャネル・データ構造をタスクD用に構成できる。
コントローラがこのチャネルに対する新しい要求を受信したあと、これが最も高い優先度を有していれば、タスクCが開始される。
タスクC
13.コントローラは、2個のDMA転送を実行する。
14.コントローラは、1つのhclkサイクルに対してdma_done[C]をHIGHにセットし、アービトレート・プロセスに入る。
タスクCが完了したあと、ホスト・プロセッサは、一次チャネル・データ構造をタスクE用に構成できる。
コントローラがこのチャネルに対する新しい要求を受信したあと、これが最も高い優先度を有していれば、タスクDが開始される。
タスクD
15.コントローラは、4個のDMA転送を実行する。
16.コントローラは、アービトレートする。コントローラがこのチャネルに対する要求を受信したあと、もしチャネルが最も高い優先度を有していれば、フローが続く。
17.コントローラは、残るDMA転送を実行する。
18.コントローラは、1つのhclkサイクルに対してdma_done[C]をHIGHにセットし、アービトレート・プロセスに入る。
コントローラがこのチャネルに対する新しい要求を受信したあと、これが最も高い優先度を有していれば、タスクEが開始される。
タスクE
19.コントローラは、4個のDMA転送を実行する。
20.コントローラは、アービトレートする。コントローラがこのチャネルに対する要求を受信したあと、もしチャネルが最も高い優先度を有していれば、フローが続く。
21.コントローラは、残る3個のDMA転送を実行する。
22.コントローラは、1つのhclkサイクルに対してdma_done[C]をHIGHにセットし、アービトレート・プロセスに入る。
コントローラがこのチャネルに対する新しい要求を受信して、これが最も高い優先度を有していれば、次のタスクを開始しようとする。しかし、ホスト・プロセッサが代替チャネル・データ構造を構成していないため、タスクDの完了とともに、コントローラは、cycle_ctrlビットをb000にセットし、ピンポンDMAトランザクションが完了する。
メモリ・スキャッタ−ギャザ
メモリ・スキャッタ−ギャザ・モードで、コントローラは、イニシャル要求を受信し、そのあと一次チャネル・データ構造を使用して4個のDMA転送を実行する。この転送が完了したあと、それは、代替チャネル制御データ構造を使用してDMAサイクルをスタートさせる。このサイクルが完了したあと、コントローラは、一次データ構造を使用して別の4個のDMA転送を実行する。コントローラは、次のいずれかが成立するまで一次から代替へ、更に一次へと切り替えを続ける。
・それが無効なチャネル制御データ構造を読む。
・ホスト・プロセッサが代替データ構造をベーシック・サイクル用に構成する。
ベーシック・サイクルを使用したスキャッタ−ギャザ・トランザクションが完了すると、コントローラは、dma_doneをアサートする。
スキャッタ−ギャザ・モードで、コントローラは、一次チャネル・データ構造を使用して代替チャネル制御データ構造をプログラムする。従って、常に表2にリスト・アップされた値で一次チャネル・データ構造のフィールドをプログラムする必要がある。
Figure 0004887313
図6は、メモリ・スキャッタ−ギャザの一例を示す
図6で
初期化
1.ホスト・プロセッサは、cycle_ctrlをb100にセットすることによって、一次チャネル・データ構造をメモリ・スキャッタ−ギャザ・モードで動作するように構成する。チャネル・データ構造が4ワードを含むので、2は、常に4にセットされる。この例で、4つのタスクがあり、従ってNは、16にセットされる。
2.ホスト・プロセッサは、タスクA、B、CおよびDに関するチャネル・データ構造を保持するメモリ場所に情報を書き込む。
3.ホスト・プロセッサは、このチャネルをイネーブルする。
コントローラがdma_req[]に対する要求を受信するか、あるいは、ホスト・プロセッサから手動要求を受信すると、メモリ・スキャッタ−ギャザ・トランザクションが開始される。トランザクションは、次のように続く。
一次、コピーA
1.要求を受信したあと、コントローラは、4個のDMA転送を実行する。これらの転送は、タスクA用の代替チャネル・データ構造を書き込む。
2.コントローラは、このチャネルに対する自動要求を生成し、次にアービトレートする。
タスクA
3.コントローラは、タスクAを実行する。このタスクを完了したあと、それは、このチャネル用の自動要求を生成し、次にアービトレートする。
一次、コピーB
4.コントローラは、4個のDMA転送を実行する。これらの転送は、タスクB用の代替チャネル・データ構造を書き込む。
5.コントローラは、このチャネルに対する自動要求を生成し、次にアービトレートする。
タスクB
6.コントローラは、タスクBを実行する。このタスクを完了したあと、それは、このチャネル用の自動要求を生成し、次にアービトレートする。
一次、コピーC
7.コントローラは、4個のDMA転送を実行する。これらの転送は、タスクC用の代替チャネル・データ構造を書き込む。
8.コントローラは、このチャネルに対する自動要求を生成し、次にアービトレートする。
タスクC
9.コントローラは、タスクCを実行する。このタスクを完了したあと、それは、このチャネル用の自動要求を生成し、次にアービトレートする。
一次、コピーD
10.コントローラは、4個のDMA転送を実行する。これらの転送は、タスクD用の代替チャネル・データ構造を書き込む。
11.コントローラは、一次チャネル制御データ構造のcycle_ctrlビットをb000にセットして、このデータ構造が今や無効であることを示す。
12.コントローラは、このチャネルに対する自動要求を生成し、次にアービトレートする。
タスクD
13.コントローラは、ベーシック・サイクルを使用してタスクDを実行する。
14.コントローラは、1つのhclkサイクルに対してdma_done[C]をHIGHにセットして、アービトレート・プロセスに入る。
周辺機器スキャッタ−ギャザ
周辺機器スキャッタ−ギャザ・モードで、コントローラは、イニシャル要求を受信し、次に一次チャネル・データ構造を使用して4個のDMA転送を実行する。このサイクルが完了して、別の要求が受信されると、それは、代替チャネル制御データ構造を使用してDMAサイクルをスタートさせる。このサイクルが完了したあと、コントローラは、一次データ構造を使用して別の4個のDMA転送を実行する。コントローラは、次のいずれかが成立するまで一次から代替へ、更に一次へと切り替えを続ける。
・それが無効なチャネル制御データ構造を読む。
・ホスト・プロセッサが代替データ構造をベーシック・サイクル用に構成する。
ベーシック・サイクルを使用したスキャッタ−ギャザ・トランザクションが完了すると、コントローラは、dma_doneをアサートする。
スキャッタ−ギャザ・モードで、コントローラは、一次チャネル・データ構造を使用して代替チャネル制御データ構造をプログラムする。従って、常に表2−10にリスト・アップされた値で一次チャネル・データ構造のフィールドをプログラムする必要がある。
より詳しくは、段落0127の制御データ構成を参照
図7は、周辺機器スキャッタ−ギャザの一例を示す。
図7で
初期化
1.ホスト・プロセッサは、cycle_ctrlをb110にセットすることによって、一次チャネル・データ構造を周辺機器スキャッタ−ギャザ・モードで動作するように構成する。1つのチャネル・データ構造が4ワードを含むので、2は、常に4にセットされる。この例で、4つのタスクがあり、従ってNは、16にセットされる。
2.ホスト・プロセッサは、タスクA、B、CおよびDに関するチャネル・データ構造を保持するメモリ場所に情報を書き込む。
3.ホスト・プロセッサは、チャネルをイネーブルする。
コントローラがdma_req[]に対する要求を受信するか、あるいは、ホスト・プロセッサから手動要求を受信すると、周辺機器スキャッタ−ギャザ・トランザクションが開始される。トランザクションは、次のように続く。
一次、コピーA
1.要求を受信したあと、コントローラは、4個のDMA転送を実行する。これらの転送は、タスクA用の代替チャネル・データ構造を書き込む。
2.コントローラは、アービトレート・プロセスに入る。
周辺機器が新しい要求を発行したあと、それが最も高い優先度を有していれば、プロセスは、次のように続く。
タスクA
3.コントローラは、タスクAを実行する。このタスクを完了したあと、それは、このチャネル用の自動要求を生成し、次にアービトレートする。
一次、コピーB
4.コントローラは、4個のDMA転送を実行する。これらの転送は、タスクB用の代替チャネル・データ構造を書き込む。
5.コントローラは、アービトレート・プロセスに入る。
周辺機器が新しい要求を発行したあと、それが最も高い優先度を有していれば、プロセスは、次のように続く。
タスクB
6.コントローラは、タスクBを実行する。タスクを完了させるために、周辺機器は、別の3つの要求を発行しなければならない。このタスクが完了したあと、それは、このチャネル用の自動要求を生成し、次にアービトレートする。
一次、コピーC
7.コントローラは、4個のDMA転送を実行する。これらの転送は、タスクC用の代替チャネル・データ構造を書き込む。
8.コントローラは、アービトレート・プロセスに入る。
周辺機器が新しい要求を発行したあと、それが最も高い優先度を有していれば、プロセスは、次のように続く。
タスクC
9.コントローラは、タスクCを実行する。このタスクが完了したあと、それは、このチャネル用の自動要求を生成し、次にアービトレートする。
一次、コピーD
10.コントローラは、4個のDMA転送を実行する。これらの転送は、タスクD用の代替チャネル・データ構造を書き込む。
11.コントローラは、一次チャネル制御データ構造のcycle_ctrlビットをb000にセットして、このデータ構造が今や無効であることを示す。
12.コントローラは、アービトレート・プロセスに入る。
周辺機器が新しい要求を発行したあと、それが最も高い優先度を有していれば、プロセスは、次のように続く。
タスクD
13.コントローラは、ベーシック・サイクルを使用してタスクDを実行する。
14.コントローラは、1つのhclkサイクルに対してdma_done[C]をHIGHにセットして、アービトレート・プロセスに入る。
エラー通知
もしコントローラがAHB−Liteマスタ・インタフェース上でERROR応答を検出すると、それは、
・ERRORに対応するチャネルをディセーブルする
・dma_errをHIGHにセットする
dma_errがHIGHであることをホスト・プロセッサが検出したあと、それは、ERRORが発生したときにどのチャネルがアクティブであったかをチェックしなければならない。それは、次によってこのことを行うことができる。
1.chnl_enable_setレジスタを読んで、ディセーブルされたチャネルのリストを生成する。
チャネルがdma_done[]をアサートすると、コントローラは、そのチャネルをディセーブルする。ホスト・プロセッサ上で走っているプログラムは、最新のdma_done[]出力をアサートしたチャネルがどれであるかを常に記録に残しておかなければならない。
2.これは、工程1でディセーブルされたチャネルのリストを、最近dma_done出力をセットしたチャネルの記録と比較しなければならない。dma_doneがセットされた記録を持たないチャネルは、ERRORが発生したチャネルである。
必要とされるシステム・メモリの量は、次に依存する。
・コントローラが使用するように構成されるDMAチャネルの数
・1つのDMAチャネルが代替チャネル制御データを使用するように構成されたかどうか
表3は、コントローラがチャネル制御データ構造の要素にアクセスするときにそれが使用するアドレス・ビットを、コントローラが含むチャネル数に依存して、リスト・アップする。
Figure 0004887313
Figure 0004887313
2.2.4 チャネル制御データ構造
チャネル制御データ構造を含めるためのシステム・メモリの領域を設けなければならない。このシステム・メモリは、次のようになっていなければならない。
・コントローラおよびホスト・プロセッサがアクセスできるように、システム・メモリの連続した領域を設けなければならない。
・チャネル制御データ構造の合計サイズの倍数となる整数値を取るベース・アドレスを有する。
図8は、コントローラが32個のチャネルすべてとオプションの代替チャネルを使用するとき、それがチャネル制御データ構造用に必要とするメモリを示す。
図8の構造例は、1KBのシステム・メモリを使用する。この例で、コントローラは、それが構造中の要素すべてにアクセスすることをイネーブルするために下位の10個のアドレス・ビットを使用するため、ベース・アドレスは、0x×××××000、0x×××××400、0x×××××800又は0x×××××C00でなければならない。
チャネル制御データ構造用のベース・アドレスは、ctrl base_ptrレジスタに適当な値を書き込むことで構成できる。
注記
alt_ctrl_base_ptrレジスタが代替チャネル制御データのベース・アドレスを提供するので、これを計算する必要はない。
図9は、コントローラが3個のDMAチャネルと代替チャネル制御データ構造とを使用する実施例を示す。
図9の構造例は、128バイトのシステム・メモリを使用する。この例で、コントローラは、それが構造中の要素すべてにアクセスするのをイネーブルするために下位6個のアドレス・ビットを使用しており、従ってベース・アドレスは、0x××××××00又0x××××××80でなければならない。
表4は、チャネル制御データ構造にアサイン(assign)できる許可されたベース・アドレス値を、コントローラが含むチャネル数に依存して示す。
Figure 0004887313
コントローラは、システム・メモリを使用して、それが2つのポインタと、それが各チャネルについて必要とする制御情報とにアクセスすることをイネーブルする。次のサブセクションで、これらの32ビットのメモリ場所と、コントローラがDMA転送アドレスをどのように計算するかについて説明する。
・発信元データ・エンド・ポインタ
・宛先データ・エンド・ポインタ 段落0124
・制御データ構成 段落0127
・アドレス計算 段落0141
発信元データ・エンド・ポインタ
src_data_end_ptrメモリ場所は、発信元データのエンド・アドレスへのポインタを含む。表5は、このメモリ場所に対するビット・アサインメントをリスト・アップする。
Figure 0004887313
コントローラがDMA転送を実行できる前に、このメモリ場所を発信元データのエンド・アドレスでプログラムしなければならない。コントローラは、それが2個のDMA転送をスタートさせるときに、このメモリ場所を読み出す。
注記
コントローラは、このメモリ場所に書込みしない。
宛先データ・エンド・ポインタ
dst_data_end_ptrメモリ場所は、宛先データのエンド・アドレスへのポインタを含む。表6は、このメモリ場所に対するビット・アサインメントをリスト・アップする。
Figure 0004887313
コントローラがDMA転送を実行できる前に、このメモリ場所を宛先データのエンド・アドレスでプログラムしなければならない。コントローラは、それが2個のDMA転送をスタートさせるときに、このメモリ場所を読み出す。
注記
コントローラは、このメモリ場所に書込みしない。
制御データ構成
各DMA転送に対して、channel_cfgメモリ場所は、コントローラのための制御情報を提供する。図10は、このメモリ場所に対するビット・アサインメントを示す。
表7は、このメモリ場所に対するビット・アサインメントをリスト・アップする。
Figure 0004887313
Figure 0004887313
Figure 0004887313
Figure 0004887313
Figure 0004887313
Figure 0004887313
Figure 0004887313
Figure 0004887313
Figure 0004887313
1個のDMAサイクル又は2個のDMA転送の開始時点で、コントローラは、システム・メモリからchannel_cfgをフェッチする。それが2個又はN個の転送を実行したあと、それは、更新されたchannel_cfgをシステム・メモリに記憶させる。
コントローラは、src_size値と異なるdst_size値をサポートしない。もしこれらの値の間に不一致が検出されると、それは、src_size値を発信元および宛先のために使用し、それが次にn_minus_1フィールドを更新するときに、それは、dst_sizeフィールドをsrc_sizeフィールドと同じ値にセットする。
コントローラがN個の転送を完了したあと、それは、cycle_ctrlフィールドをゼロにセットし、channel_cfgデータが無効であることを示す。これは、同じDMA転送をコントローラが繰り返すことを防止する。
アドレス計算
DMA転送の発信元アドレスを計算するために、コントローラは、src_incが指定するシフト量だけの左シフトをn_minus_1値に対して実行し、次に結果の値を発信元エンド・ポインタから差し引く。同様に、DMA転送の宛先アドレスを計算するために、それは、dst_incが指定するシフト量だけの左シフトをn_minus_1値に対して実行し、次に結果の値を宛先エンド・ポインタから差し引く。
src_incおよびdst_incの値に依存して、発信元アドレスおよび宛先アドレスは、次式を用いて計算できる。
src_inc=b00およびdst_inc=b00
* 発信元アドレス=src_data_end_ptr−n_minus_1
* 宛先アドレス=dst_data_end_ptr−n_minus_1
src_inc=b01およびdst_inc=b01
* 発信元アドレス=src_data_end_ptr−(n_minus_1<<1)
* 宛先アドレス=dst_data_end_ptr−(n_minus_1<<1)
src_inc=b10およびdst_inc=b10
* 発信元アドレス=src_data_end_ptr−(n_minus_1<<2)
* 宛先アドレス=dst_data_end_ptr−(n_minus_1<<2)
src_inc=b11およびdst_inc=b11
* 発信元アドレス=src_data_end_ptr
* 宛先アドレス=dst_data_end_ptr
表9は、6ワードのDMAサイクルに関する宛先アドレスをリスト・アップする。
Figure 0004887313
Figure 0004887313
表10は、ハーフ・ワード増分を用いた12バイトのDMA転送に関する宛先アドレスをリスト・アップする。
Figure 0004887313
Figure 0004887313
Figure 0004887313
本発明の例示的実施の形態について添付図面を参照しながらここに詳細に説明してきたが、本発明がこれらの実施の形態に正確には限定されないこと、また添付された請求の範囲に定義された発明の範囲および精神から外れることなしに、各種の変更および修正を当業者が実施できることを理解されるべきである。
本発明の1つの実施の形態に従うデータ処理装置を示すブロック図。 図1aのメモリに記憶された制御データを示す模式図。 本発明の1つの実施の形態に従うダイレクト・メモリ・アクセス・コントローラによって制御されるデータ転送のピンポン・モードを示す模式図。 本発明の1つの実施の形態に従うダイレクト・メモリ・アクセス・コントローラによって制御されるデータ転送のメモリ・スキャッタ・ギャザ・モードを示す模式図。 本発明の1つの実施の形態に従うダイレクト・メモリ・アクセス・コントローラによって制御されるデータ転送の周辺機器スキャッタ・ギャザ・モードを示す模式図。 別のピンポン・モードの実施の形態を示す模式図。 メモリ・スキャッタ・ギャザの実施の形態を示す模式図。 周辺機器スキャッタ・ギャザの実施の形態を示す模式図。 32チャネルに関するメモリ・マップを示す模式図。 3個のDMAチャネルに関するメモリ・マップを示す模式図。 チャネル構成ビット・アサインメントを示す模式図。
符号の説明
5 データ処理装置
10 ダイレクト・メモリ・アクセス・コントローラ(DMAコントローラ)
12 レジスタ
13 トグル・ビット
14,16 チャネル
20 周辺機器
30 メモリ
31 記憶場所
32 制御データ
40 プロセッサ
50 データ転送要求
60 ソフトウエア要求
70 データ転送要求

Claims (21)

  1. 複数のデータ発信元と複数のデータ宛先との間でデータ転送を制御するダイレクト・メモリ・アクセス・コントローラであって、前記複数のデータ発信元およびデータ宛先は、複数のチャネルを介して前記ダイレクト・メモリ・アクセス・コントローラと交信しており、前記ダイレクト・メモリ・アクセス・コントローラは、更にメモリおよびプロセッサと交信し、前記メモリは、前記複数のチャネルの各々および前記プロセッサに対して2組の制御データを記憶するように適応しており、
    前記ダイレクト・メモリ・アクセス・コントローラは、前記複数のチャネルの1つ又は前記プロセッサから受信するデータ転送要求に応答して、前記メモリに記憶された前記対応する制御データの1組にアクセスし、前記ダイレクト・メモリ・アクセスは、前記アクセスされた制御データに依存して、要求される前記データ転送の少なくとも一部を実行し、
    前記ダイレクト・メモリ・アクセス・コントローラは、前記複数のチャネルの各々およびプロセッサについて1つのインジケータ記憶を含み、前記インジケータ記憶は、前記2組の制御データのどちらにアクセスすべきかを指すインジケータ・ビットを含み、前記ダイレクト・メモリ・アクセス・コントローラは、前記1組の制御データによって制御される前記データ転送の少なくとも一部の完了に続いて、前記インジケータ・ビットをトグルさせるように適応した、ダイレクト・メモリ・アクセス・コントローラ。
  2. 請求項1記載のダイレクト・メモリ・アクセス・コントローラであって、前記ダイレクト・メモリ・アクセス・コントローラは、前記1組の制御データによって制御される前記データ転送の一部の完了に続いて、前記2組の制御データの他方にアクセスして前記データ転送の別の一部の転送を制御するように適応した前記ダイレクト・メモリ・アクセス・コントローラ。
  3. 請求項1記載のダイレクト・メモリ・アクセス・コントローラであって、前記ダイレクト・メモリ・アクセス・コントローラは、前記1組の制御データに依存して前記データ転送のすべてを実行し、また同じチャネル又はプロセッサからの後続のデータ転送要求に応答して前記2組の制御データの他方にアクセスするように適応した前記ダイレクト・メモリ・アクセス・コントローラ。
  4. 請求項1記載のダイレクト・メモリ・アクセス・コントローラであって、前記ダイレクト・メモリ・アクセス・コントローラは、1つのレジスタを含み、前記レジスタは、前記制御データの記憶場所に関するベース・アドレスを記憶するように適応しており、それによって前記ベース・アドレスに依存して制御データの各組にアクセスできる前記ダイレクト・メモリ・アクセス・コントローラ。
  5. 請求項1記載のダイレクト・メモリ・アクセス・コントローラであって、前記制御データは、前記データの発信元を指す発信元ポインタ、前記データの宛先を指す宛先ポインタおよび前記データ転送のタイプを示すタイプ・データを含む前記ダイレクト・メモリ・アクセス・コントローラ。
  6. 請求項3記載のダイレクト・メモリ・アクセス・コントローラであって、前記ダイレクト・メモリ・アクセス・コントローラは、制御データの前記1組によって制御されるデータ転送の完了に応答して、制御データの前記1組を更新するように要求するインタラプトを前記プロセッサに対して発行し、また前記後続のデータ転送要求に応答して、制御データの前記他方の組にアクセスし、また制御データの前記他の組によって制御される別のデータ転送を実行し、また前記別のデータ転送の完了に続いて、制御データの前記他の組を更新するように要求するインタラプトを前記プロセッサに対して発行し、また同じチャネル又はプロセッサからの別のデータ転送要求に応答して、制御データの前記1組に、もしそれが更新されていればアクセスし、制御データの前記1組の制御下で前記別のデータ転送を開始し、またもし制御データの前記1組が更新されていないことが検出されれば、前記別のデータ転送を保留させる前記ダイレクト・メモリ・アクセス・コントローラ。
  7. 請求項記載のダイレクト・メモリ・アクセス・コントローラであって、前記ダイレクト・メモリ・アクセス・コントローラは、制御データの前記1組によって制御されるデータ転送の完了に応答して、制御データの前記1組を無効としてマークし、更に無効とマークされた制御データの前記1組を更新し、次に有効とマークするように要求するインタラプトを前記プロセッサに対して発行し、また前記別のデータ転送の完了に続いて、制御データの前記他方の組を無効としてマークし、制御データの前記他方の組を更新して有効とマークするように要求するインタラプトを前記プロセッサに対して発行し、それが有効又は無効のいずれにマークされるかに依存して、制御データの前記1組が更新されたかどうかを検出する前記ダイレクト・メモリ・アクセス・コントローラ。
  8. 請求項2記載のダイレクト・メモリ・アクセス・コントローラであって、制御データの前記1組によって制御される前記データ転送の前記部分には、制御データの前記他方の組の上書きが含まれ、前記データ転送の前記別の部分は、制御データの前記更新された他方の組によって制御され、それによって、前記ダイレクト・メモリ・アクセス・コントローラは、プロセッサ介入を要求することなく、更新された制御データを使用してデータ転送シーケンスを実行するように適応した前記ダイレクト・メモリ・アクセス・コントローラ。
  9. 請求項記載のダイレクト・メモリ・アクセス・コントローラであって、制御データの前記更新された他方の組によって制御される前記データ転送の前記別の部分の1つは、前記1組の制御データの上書きを含み、それによって、前記ダイレクト・メモリ・アクセス・コントローラは、プロセッサ介入なしに、上限のない複数のデータ転送を実行するように適応した前記ダイレクト・メモリ・アクセス・コントローラ。
  10. 請求項記載のダイレクト・メモリ・アクセス・コントローラであって、前記ダイレクト・メモリ・アクセス・コントローラは、前記プロセッサが前記チャネルをディセーブルするか、前記データ転送が完了するまで、制御データの前記1組および制御データの前記他方の組によって制御される後続のデータ転送を連続して実行するように適応した前記ダイレクト・メモリ・アクセス・コントローラ。
  11. 請求項記載のダイレクト・メモリ・アクセス・コントローラであって、前記ダイレクト・メモリ・アクセス・コントローラは、別のデータ要求に応答して、制御データの前記1組にアクセスし、制御データの前記1組の制御下で別のデータ転送の一部を実行し、前記別のデータ転送の前記部分は、制御データの前記他方の組の上書きを含み、前記ダイレクト・メモリ・アクセス・コントローラは、制御データの前記1組によって制御される前記別のデータ転送の前記部分の完了に応答して、制御データの前記更新された他方の組にアクセスし、また前記更新された制御データの制御下で、前記別のデータ転送の別の一部を実行する前記ダイレクト・メモリ・アクセス・コントローラ。
  12. 複数のデータ発信元/宛先、メモリ、プロセッサおよび前記データ発信元/宛先と前記メモリとの間でデータ転送を制御する請求項1に記載のダイレクト・メモリ・アクセス・コントローラを含むデータ処理装置であって、前記データ発信元/宛先は、前記複数のチャネルを介して前記ダイレクト・メモリ・アクセス・コントローラと交信し、前記メモリは、前記複数のチャネルの各々およびプロセッサに対応して制御データの前記2つの組を記憶するように適応したデータ処理装置。
  13. 請求項12記載のデータ処理装置であって、前記複数のデータ発信元/宛先が周辺機器を含む前記データ処理装置。
  14. 複数のデータ発信元と複数のデータ宛先との間でデータ転送を制御するダイレクト・メモリ・アクセス制御方法であって、前記複数のデータ発信元および複数のデータ宛先は、複数のチャネルを介して前記ダイレクト・メモリ・アクセス・コントローラと交信しており、前記ダイレクト・メモリ・アクセス・コントローラは、更にメモリおよびプロセッサと交信し、前記メモリは、前記複数のチャネルの各々および前記プロセッサに対して2組の制御データを記憶するように適応しており、
    前記ダイレクト・メモリ・アクセス制御方法は、
    前記複数のチャネルの1つ又は前記プロセッサからデータ転送要求を受信する工程と、
    前記データ転送要求に応答して、前記対応するチャネル又はプロセッサに関する前記メモリに記憶された前記制御データの1つの組にアクセスする工程と、
    前記アクセスされた制御データの制御下で、前記データ転送の少なくとも一部を実行する工程と、
    を含み、
    前記ダイレクト・メモリ・アクセス・コントローラは、前記複数のチャネルの各々およびプロセッサについて1つのインジケータ記憶を含み、前記インジケータ記憶は、前記複数のチャネルの各々およびプロセッサに対して前記2組の制御データのどちらにアクセスすべきかを指示するインジケータ・ビットを含み、前記アクセス工程においてアクセスされる制御データの前記1組は、前記インジケータ・ビットの値に依存した、ダイレクト・メモリ・アクセス制御方法。
  15. 請求項14記載のダイレクト・メモリ・アクセス制御方法であって、更に、
    制御データの前記1組によって制御される前記データ転送の前記部分の完了に続いて、前記2組の前記制御データの他方にアクセスして、前記データ転送の別の部分を制御する工程と、
    前記別の部分のデータ転送を実行する工程と、
    を含む前記ダイレクト・メモリ・アクセス制御方法。
  16. 請求項14記載のダイレクト・メモリ・アクセス制御方法であって、更に、
    前記複数のチャネルの前記1つ又はプロセッサからの後続のデータ転送要求に応答して、前記2組の制御データの前記他方にアクセスする工程と、
    前記他方の制御データの制御下で、前記後続のデータ転送を実行する工程と、
    を含む前記ダイレクト・メモリ・アクセス制御方法。
  17. 請求項14記載のダイレクト・メモリ・アクセス制御方法であって、制御データの前記1組によって制御されるデータ転送の完了に続いて、
    前記1組の制御データを無効としてマークする工程と、
    前記プロセッサに対して、制御データの前記1組を更新して有効としてマークするように要求するインタラプトを発行する工程と、
    更に別のデータ転送を実行するようにとの要求の受信に応答して、
    制御データの前記他方の組にアクセスする工程と、
    制御データの前記他方の組によって制御される前記別のデータ転送を実行する工程と、
    前記別のデータ転送の完了に続いて、前記他方の制御データを無効としてマークする工程と、
    前記プロセッサに対して、制御データの前記他方の組を更新して有効としてマークするように要求するインタラプトを発行する工程と、
    更に別のデータ転送を実行するようにとの要求の受信に応答して、
    制御データの前記1組にアクセスして、制御データの前記1組が有効としてマークされていることを検出すると、それに応答して、
    制御データの前記1組によって制御される前記更に別のデータ転送を実行する工程、
    の前記更なる工程を含む前記ダイレクト・メモリ・アクセス制御方法。
  18. 請求項15記載のダイレクト・メモリ・アクセス制御方法であって、制御データの前記1組によって制御される前記データ転送の前記部分は、制御データの前記他方の組を上書きする工程を含み、前記方法は、制御データの前記1組によって制御される前記データ転送の完了に続いて、
    制御データの前記他方の組にアクセスして、前記データ転送の別の部分を制御する工程と、
    制御データの前記上書きされた他方の組の制御下で、前記データ転送の前記別の部分を実行する工程、
    の前記更なる工程を含む前記ダイレクト・メモリ・アクセス制御方法。
  19. 請求項18記載のダイレクト・メモリ・アクセス制御方法であって、プロセッサからチャネル・ディセーブル信号を受信するか、あるいは、前記データ転送が完了するまで、前記方法の前記工程の実行を繰り返し含む前記ダイレクト・メモリ・アクセス制御方法。
  20. 請求項19記載のダイレクト・メモリ・アクセス制御方法であって、制御データの前記更新された他方の組の制御下で前記データ転送の前記更なる部分を実行する前記工程の反復されるシーケンスにおける前記工程の1つは、制御データの前記1組を上書きする工程を含む前記ダイレクト・メモリ・アクセス制御方法。
  21. 請求項18記載のダイレクト・メモリ・アクセス制御方法であって、前記方法は、
    別のデータ要求に応答して、
    制御データの前記1組にアクセスする工程と、
    制御データの前記1組の制御下で別のデータ転送の一部を実行する工程であって、前記更なるデータ転送の前記部分が制御データの前記他方の組を上書きする工程を含む前記工程と、
    制御データの前記更新された他方の組にアクセスする工程と、
    前記更新された制御データの制御下で前記別のデータ転送の別の部分を実行する工程、
    の更なる工程を含む前記ダイレクト・メモリ・アクセス制御方法。
JP2008034289A 2007-02-16 2008-02-15 複雑な非線形データの転送制御システム Active JP4887313B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/707,275 US7873757B2 (en) 2007-02-16 2007-02-16 Controlling complex non-linear data transfers
US11/707,275 2007-02-16

Publications (2)

Publication Number Publication Date
JP2008204456A JP2008204456A (ja) 2008-09-04
JP4887313B2 true JP4887313B2 (ja) 2012-02-29

Family

ID=39204452

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008034289A Active JP4887313B2 (ja) 2007-02-16 2008-02-15 複雑な非線形データの転送制御システム

Country Status (4)

Country Link
US (2) US7873757B2 (ja)
JP (1) JP4887313B2 (ja)
CN (1) CN101271437B (ja)
GB (1) GB2446701B (ja)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009151487A (ja) * 2007-12-19 2009-07-09 Panasonic Corp Dma転送制御装置及びデータ転送装置
US9063561B2 (en) * 2009-05-06 2015-06-23 Avago Technologies General Ip (Singapore) Pte. Ltd. Direct memory access for loopback transfers in a media controller architecture
US8516264B2 (en) * 2009-10-09 2013-08-20 Lsi Corporation Interlocking plain text passwords to data encryption keys
US8555141B2 (en) * 2009-06-04 2013-10-08 Lsi Corporation Flash memory organization
US8245112B2 (en) 2009-06-04 2012-08-14 Lsi Corporation Flash memory organization
US8321639B2 (en) * 2009-12-30 2012-11-27 Lsi Corporation Command tracking for direct access block storage devices
US8219776B2 (en) * 2009-09-23 2012-07-10 Lsi Corporation Logical-to-physical address translation for solid state disks
US20100306451A1 (en) * 2009-06-01 2010-12-02 Joshua Johnson Architecture for nand flash constraint enforcement
US8166258B2 (en) * 2009-07-24 2012-04-24 Lsi Corporation Skip operations for solid state disks
GB2495959A (en) 2011-10-26 2013-05-01 Imagination Tech Ltd Multi-threaded memory access processor
CN104123252A (zh) * 2013-04-26 2014-10-29 韩国科亚电子股份有限公司 多通道直接存储器存取控制器及其控制方法
US9558528B2 (en) * 2015-03-25 2017-01-31 Xilinx, Inc. Adaptive video direct memory access module
US10346419B1 (en) * 2015-08-11 2019-07-09 Workday, Inc. On-the-fly structure change data conversion
US10503566B2 (en) * 2018-04-16 2019-12-10 Chicago Mercantile Exchange Inc. Conservation of electronic communications resources and computing resources via selective processing of substantially continuously updated data
CN108454258B (zh) * 2018-05-09 2023-06-30 北京印刷学院 一种配页检测方法
FR3094507A1 (fr) * 2019-03-29 2020-10-02 Stmicroelectronics (Grenoble 2) Sas Accès direct en mémoire
CN110096461A (zh) * 2019-04-16 2019-08-06 中国科学院国家空间科学中心 一种基于usb3.0辅助协议的实时高速数据传输方法及系统

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6450154A (en) * 1987-08-20 1989-02-27 Fujitsu Ltd Dma control system
JPH01302457A (ja) 1988-05-30 1989-12-06 Nec Corp データ転送方式
US5121390A (en) * 1990-03-15 1992-06-09 International Business Machines Corporation Integrated data link controller with synchronous link interface and asynchronous host processor interface
US5390299A (en) * 1991-12-27 1995-02-14 Digital Equipment Corporation System for using three different methods to report buffer memory occupancy information regarding fullness-related and/or packet discard-related information
JPH05189357A (ja) * 1992-01-17 1993-07-30 Hitachi Ltd デ−タチェイニング制御方法および装置
US5613162A (en) * 1995-01-04 1997-03-18 Ast Research, Inc. Method and apparatus for performing efficient direct memory access data transfers
JPH08202648A (ja) 1995-01-24 1996-08-09 Casio Comput Co Ltd ダイレクトメモリアクセス転送方式及び方法
US6128728A (en) * 1997-08-01 2000-10-03 Micron Technology, Inc. Virtual shadow registers and virtual register windows
US6898646B1 (en) 2000-05-03 2005-05-24 Hewlett-Packard Development Company, L.P. Highly concurrent DMA controller with programmable DMA channels
US20020144027A1 (en) * 2001-03-27 2002-10-03 Schmisseur Mark A. Multi-use data access descriptor
JP2004118300A (ja) * 2002-09-24 2004-04-15 Rohm Co Ltd Dmaコントローラ
JP4220845B2 (ja) 2003-07-01 2009-02-04 三菱重工業株式会社 原子炉の炉内構造
JP2005157717A (ja) * 2003-11-26 2005-06-16 Nec Micro Systems Ltd データ転送方法及びその装置
JP2006268753A (ja) 2005-03-25 2006-10-05 Fujitsu Ltd Dma回路及びコンピュータシステム
US7660916B2 (en) * 2005-06-16 2010-02-09 Agere Systems Inc. Emulation of independent active DMA channels with a single DMA capable bus master hardware and firmware
DE602005015632D1 (de) * 2005-06-30 2009-09-03 Freescale Semiconductor Inc Einrichtung und verfahren zur steuerung mehrerer dma-tasks
GB2433611A (en) 2005-12-21 2007-06-27 Advanced Risc Mach Ltd DMA controller with virtual channels
EP1801700B1 (en) * 2005-12-23 2013-06-26 Texas Instruments Inc. Method and systems to restrict usage of a DMA channel

Also Published As

Publication number Publication date
US8112560B2 (en) 2012-02-07
CN101271437A (zh) 2008-09-24
US7873757B2 (en) 2011-01-18
GB0802329D0 (en) 2008-03-12
GB2446701B (en) 2011-04-27
GB2446701A (en) 2008-08-20
CN101271437B (zh) 2016-01-13
JP2008204456A (ja) 2008-09-04
US20080201494A1 (en) 2008-08-21
US20100325317A1 (en) 2010-12-23

Similar Documents

Publication Publication Date Title
JP4887313B2 (ja) 複雑な非線形データの転送制御システム
US5644784A (en) Linear list based DMA control structure
JP3433386B2 (ja) 入出力記憶装置への直接メモリアクセスを行う装置及び方法
JP5185289B2 (ja) 内容終了型dma
US9442873B2 (en) Direct memory access controller
US10540096B2 (en) Method and design for dynamic management of descriptors for SGL operation
US10108565B2 (en) Method for on-demand fetching of SGL pointers based buffer, traffic and command requirements
EP1103889B1 (en) Flexible general-purpose input/output system
WO2006012196A2 (en) An apparatus and method for high performance volatile disk drive memory access using an integrated dma engine
US8190794B2 (en) Control function for memory based buffers
JP4219106B2 (ja) 動的優先順位外部トランザクション・システム
US6728797B2 (en) DMA controller
US20080126600A1 (en) Direct memory access device and methods
JPS6375955A (ja) プログラムモ−ド・アクセス制御方式
US20060149940A1 (en) Implementation to save and restore processor registers on a context switch
US6230215B1 (en) On-demand transfer engine
US7096307B2 (en) Shared write buffer in a peripheral interface and method of operating
US10789001B1 (en) Posted operation data control
JPH11232213A (ja) 入出力装置におけるデータ転送方式
JP4363431B2 (ja) データ転送方式
JP2001056793A (ja) 情報処理装置
JPH02173846A (ja) 循環バツフア制御装置及び制御方法
GB2624385A (en) Apparatus comprising interrupt tracking circuitry
JPH04195563A (ja) メモリシステムの制御装置
KR19980016507A (ko) 입출력프로세서의 고성능 디엠에이(dma) 구동 방법

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100331

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110729

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110802

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111102

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

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

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

Free format text: PAYMENT UNTIL: 20141216

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4887313

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

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