JP4908017B2 - Dmaデータ転送装置及びdmaデータ転送方法 - Google Patents

Dmaデータ転送装置及びdmaデータ転送方法 Download PDF

Info

Publication number
JP4908017B2
JP4908017B2 JP2006051872A JP2006051872A JP4908017B2 JP 4908017 B2 JP4908017 B2 JP 4908017B2 JP 2006051872 A JP2006051872 A JP 2006051872A JP 2006051872 A JP2006051872 A JP 2006051872A JP 4908017 B2 JP4908017 B2 JP 4908017B2
Authority
JP
Japan
Prior art keywords
data
transfer
dma
data transfer
transferred
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.)
Expired - Fee Related
Application number
JP2006051872A
Other languages
English (en)
Other versions
JP2007233522A (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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2006051872A priority Critical patent/JP4908017B2/ja
Priority to KR1020060042303A priority patent/KR100775406B1/ko
Priority to US11/441,118 priority patent/US7752349B2/en
Priority to CN200610091806A priority patent/CN100592273C/zh
Priority to EP06114790A priority patent/EP1826677A1/en
Publication of JP2007233522A publication Critical patent/JP2007233522A/ja
Application granted granted Critical
Publication of JP4908017B2 publication Critical patent/JP4908017B2/ja
Expired - Fee Related 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

Landscapes

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

Description

本発明は、DMAデータ転送装置及びDMAデータ転送方法に関し、特に、多重にDMAデータ転送を行う場合においてDMAデータ転送の終了判定を転送先デバイスで行うDMAデータ転送装置及びDMAデータ転送方法に関する。
DMA(ダイレクトメモリアクセス)によれば、CPUの介在なしにデータ転送を行うことができる。このため、メモリとデバイスとの間においてデータ転送中であっても、CPUが他の処理を並行して行うことができ、システムとして処理能力が増大する。近年、メモリの帯域幅(メモリのデータ転送能力)が増大し、また、データ通信の分野においても10Gbitイーサネット(登録商標)などのようにデバイスの帯域幅が増大しているため、DMAについても高性能化が要望されている。
例えば、複数のメモリの間でのDMAデータ転送を転送回数パラメータによって連続で実行することにより、高速で複数のメモリの間でのデータ転送を行うことが知られている(下記特許文献1参照)。
また、例えば、アドレスを保持する一群のレジスタを削減することにより、DMAコントローラの消費電力を低減させることが知られている(下記特許文献2参照)。
特開平4−236649号公報 特開2003−316722号公報
DMAにおいて、サイズの大きなデータの転送を行う場合がある。この場合、CPUが、当該データをDMAコントローラが転送可能なサイズのブロックデータに分割し、DMAコントローラに対してデータ転送命令を連続して発行する必要がある。この時、転送データの転送元が仮想アドレスでマッピングされている場合、1個のブロックデータが仮想アドレスのページの境界に跨がらないように、分割しなければならない。
また、CPU自身も、マルチスレッドを用いた処理において、複数のDMA命令発行処理を時分割で実行している。この結果、CPUが、DMAコントローラに対して、転送データが異なる複数の(多重の)DMA要求を発行することになる。
以上のように、DMAコントローラは、DMAエンジンの数を増やし、並行して行うデータ転送の数(データ転送の多重度)を増やし、これらを誤りなく管理しなければ、その高性能化を図ることができない。そこで、本発明者は、図8〜図11に示すDMAデータ転送装置200について検討した。このDMAデータ転送装置200におけるDMAデータ転送について、簡単に説明する。
図8は本発明の背景となったDMAデータ転送装置200の構成図である。図9は図8のDMAデータ転送装置におけるDMAデータ転送の動作シーケンスである。
以下においては、1つの転送データAに着目して説明する。複数の転送データが存在する場合、以下に説明するDMAデータ転送が複数の転送データについて並行に行われる。以下の説明において、DMAエンジン221によって転送される分割されたデータを、ブロックデータと呼ぶ。A1、A2、... 、Am(1〜mは正の整数、以下において同じ)は、各々、ブロックデータであり、数字が小さいものほど転送データの先頭に近いブロックデータであることを示す。図9において、メモリコントローラ230から各々のDMAエンジン221へのデータ読み出しは省略されている。
CPU210は、まだデータ転送が割り当てられていないDMAエンジン221にブロックデータA1の転送命令(DMAデータ転送要求)を出す(ステップS100)。A1の転送命令を受けたDMAエンジン221は、転送先デバイス240にA1のデータ転送を行う(ステップS101)。この後、CPU210は、ステップS100と同様にして、A2の転送命令を出し(ステップS102)、この転送命令を受けたDMAエンジン221は、ステップS101と同様にして、A2のデータ転送を行う(ステップS103)。そして、ブロックデータA1又はA2のデータ転送が終了したDMAエンジン221は、各々、送信チェック処理部222に対して、転送終了通知を出す(ステップS104、ステップS105)。
以上のようにしてブロックデータの転送処理が進行する。そして、CPU210は、ステップS100と同様にして、最終ブロックデータAmの1個前のブロックデータAm−1の転送命令を出し(ステップS106)、Am−1のデータ転送が行われる(ステップS107)。更に、CPU210は、ステップS100と同様にして、最終ブロックデータAmの転送命令を出し(ステップS108)、Amのデータ転送が行われる(ステップS109)。この時、ステップS108において、CPU210は、Amのデータ転送を行うDMAエンジン221に対して、Amが最終ブロックデータである旨を通知する。
例えば、最終ブロックデータAmのデータサイズが1つ前のブロックデータAm−1より小さいため、図9に示すように、Am−1より先にAmのデータ転送が終了する場合がある。このため、Am−1のデータ転送が終了するより先に、Amのデータ転送を行うDMAエンジン221が、Amのデータ転送を終了して、送信チェック処理部222に対して最終ブロックデータ転送終了通知を出す(ステップS110)。この後、Am−1のデータ転送を行うDMAエンジン221が、Am−1のデータ転送を終了して、送信チェック処理部222に対してAm−1の転送終了通知を出す(ステップS111)。
送信チェック処理部222は、Amを転送したDMAエンジン221から最終ブロックデータ転送終了通知を受信し、更に、Am−1の転送終了通知の受信により全てのブロックデータの転送が終了したことを確認し、この後、転送先デバイス240に対して、転送データAの全データ転送終了通知を出す(ステップS112)。転送先デバイス240は、データバッファ241を備え、これに受信したブロックデータA1〜Amを格納する。転送先デバイス240は、送信チェック処理部222から全データ転送終了通知を受けた場合、転送データAのデータ転送が終了したものと判定し、他の処理を行う。
以上のようなDMAデータ転送を行うために、送信チェック処理部222は、図10に示すように、DMA転送制御部223と共に、DMA転送管理テーブル224を備える必要がある。DMA転送管理テーブル224は、図11に示すように、転送データ数×DMAエンジン数のマトリクス状の管理領域を持ち、また、転送データ毎に最終ブロックデータ転送フラグを持つ。管理領域のマトリクスの各々において、“未割り当て”又は“転送中”の状態が記録される。最終ブロックデータ転送フラグは、DMA転送制御部223が最終ブロックデータの転送を処理したDMAエンジン221から最終ブロックデータ転送終了通知を受けた場合にセットされる。
送信チェック処理部222では、DMA転送制御部223がDMA転送管理テーブル224の更新処理を行う。即ち、CPU210からのデータ転送指示によって、転送に携わるDMAエンジン221の割り当てが行われた場合、DMA転送管理テーブル224の該当するマトリクスの部分の状態が、“未割り当て”から“転送中”に変更される。ブロックデータの転送が終了したDMAエンジン221の解放が行われた場合、DMA転送管理テーブル224の該当するマトリクスの部分の状態が、“転送中”から“未割り当て”に変更される。最終ブロックデータを転送したDMAエンジン221から最終ブロックデータ転送終了通知を受信した場合、DMA転送管理テーブル224の該当する転送データの最終ブロックデータ転送フラグが“1”に変更される。
DMA転送制御部223は、DMA転送管理テーブル224の各々の転送データの最終ブロックデータ転送フラグが“1”であるかをチェックする。DMA転送制御部223は、最終ブロックデータ転送フラグが“1”である転送データについて、その状態が“転送中”であるDMAエンジン221が存在しなければ、該当転送データの全データ転送終了通知を転送先デバイス240に出す。
本発明者が、図8〜図11に示すDMAデータ転送装置について更に検討したところ、DMAコントローラ220の性能を上げようとすると、送信チェック処理部222において、次のような問題が生じることが判った。
転送に携わっている全てのDMAエンジン221について、転送先デバイス240へのブロックデータの転送が終了したかをチェックする必要がある。このため、DMAエンジン221の多重度を上げる(数を増やす)と、DMA転送管理テーブル224においてDMAエンジン数のエントリ、即ち、その列が増加する。
また、同時により多くの転送データを処理しようとすると、DMA転送管理テーブル224において転送データ数のエントリ、即ち、その行が増加する。これは、転送データの数が多くそれらの転送データを動的に管理している場合、転送データの管理エントリを全て使用している状態では、たとえDMAエンジン221に空きがであっても、すぐにデータ転送処理を行うことはできないからである。
また、DMAエンジン数や同時に処理することができる転送データの数を増加させると、これに付随する処理も増加してしまう。即ち、既に転送の終了しているDMAエンジン221を次の転送に割り当てるための資源の獲得/解放処理等が、DMAエンジン数×転送データ数に比例して増加する。このため、回路が複雑になってしまう。
更に、DMAの性能向上のためには、DMAエンジン数と転送データ数とのバランスが取れた増加が必要になる。しかし、DMAエンジン数と転送データ数の増加によってDMAデータ転送の性能向上を図ると、前述のように、DMAデータ転送回路の規模が増大し、複雑になってしまう。
本発明は、ハードウェアの規模をあまり増大させずに、DMAエンジン数や転送データ数を増加することが可能なDMAデータ転送装置を提供することを目的とする。
また、本発明は、ハードウェアの規模をあまり増大させずに、DMAエンジン数や転送データ数を増加することが可能なDMAデータ転送方法を提供することを目的とする。
本発明のDMAデータ転送装置は、転送すべきデータの転送元であるメモリと、前記転送すべきデータの転送先である転送先デバイスと、各々が前記メモリから前記転送先デバイスへのDMAによるデータ転送を行う複数のDMAエンジンを備えるDMAコントローラと、前記DMAコントローラの前記複数のDMAエンジンに対して、DMAによるデータ転送を指示するDMA制御部とを備える。前記DMA制御部が、前記転送すべきデータについて、そのデータ転送の終了を判断するための判断情報を前記転送先デバイスに送る。前記複数のDMAエンジンの各々が、前記転送すべきデータを分割したブロックデータを前記転送先デバイスにデータ転送すると共に、前記ブロックデータのデータ転送が終了すると、転送終了通知を前記転送先デバイスに送る。前記転送先デバイスが、前記DMA制御部から送られた前記判断情報と、前記複数のDMAエンジンの各々から送られた前記転送終了通知とに基づいて、前記転送すべきデータについて、そのデータ転送の終了判定を行う。
また、好ましくは、本発明のDMAデータ転送装置において、前記DMA制御部が、前記転送すべきデータを転送するために必要な転送回数である全データ転送回数が確定した後に、当該確定の結果に基づいて生成した前記判断情報を前記転送先デバイスに送る。
また、好ましくは、本発明のDMAデータ転送装置において、前記判断情報が、前記転送すべきデータを転送するために必要な転送回数である全データ転送回数からなり、前記転送先デバイスが、前記転送終了通知の数をカウントすることにより、前記転送すべきデータについて終了した前記ブロックデータのデータ転送の回数をカウントするデータ転送回数カウンタと、前記全データ転送回数を保持する全データ転送回数保持部とを備え、前記データ転送回数カウンタの値が前記全データ転送回数に達した場合、前記転送すべきデータのデータ転送が終了したものと判断する。
また、好ましくは、本発明のDMAデータ転送装置において、前記転送先デバイスが、前記転送終了通知の数をカウントすることにより、前記転送すべきデータについて終了した前記ブロックデータのデータ転送の回数をカウントするデータ転送回数カウンタを備え、前記判断情報が、前記データ転送回数カウンタがカウント可能な最大値であるカウンタMAX値から、前記転送すべきデータを転送するために必要な転送回数である全データ転送回数を引いた値であるデータ転送回数不足値からなり、前記転送先デバイスが、前記データ転送回数不足値を前記データ転送回数カウンタの値に加算し、前記データ転送回数カウンタの値が前記カウンタMAX値に達した場合、前記転送すべきデータのデータ転送が終了したものと判断する。
また、好ましくは、本発明のDMAデータ転送装置において、前記メモリが、ユーザにより作成されたデータが記憶された第1のメモリと、予めその内容が定められたデータが記憶された第2のメモリとを含み、前記第2のメモリが、前記第1のメモリよりも前記DMA制御部に近い位置に設けられる。
本発明のDMAデータ転送方法は、各々がメモリから転送先デバイスへのデータ転送を行う複数のDMAエンジンを備えるDMAコントローラと、前記DMAコントローラの前記複数のDMAエンジンに対してDMAによるデータ転送を指示するDMA制御部とを備えるDMAデータ転送装置におけるDMA転送方法である。このDMA転送方法は、前記DMA制御部が、前記複数のDMAエンジンが転送可能なサイズになるように転送すべきデータの分割サイズを決定し、前記DMAコントローラの前記複数のDMAエンジンに対してDMAによるデータ転送を指示し、前記DMAコントローラの前記複数のDMAエンジンの各々が、前記DMA制御部の指示に従って、前記転送すべきデータを分割したブロックデータを前記転送デバイスにデータ転送すると共に前記ブロックデータのデータ転送が終了すると、転送終了通知を前記転送先デバイスに送り、前記DMA制御部が、前記転送すべきデータについて、そのデータ転送の終了を判断するための判断情報を、前記転送先デバイスに送り、前記転送先デバイスが、前記DMA制御部から送られた前記判断情報と、前記複数のDMAエンジンの各々から送られた前記転送終了通知とに基づいて、前記転送すべきデータについて、そのデータ転送の終了判定を行う。
本発明のDMAデータ転送装置及びDMAデータ転送方法によれば、転送先デバイスがDMA制御部から送られた判断情報と複数のDMAエンジンの各々から送られた転送終了通知とに基づいてデータ転送の終了判定を行う。即ち、本発明においては、転送先デバイスがデータ転送の終了を判定する機能を備える。これにより、DMAコントローラがデータ転送の終了を判定するための回路(例えば、図8及び図10に示す送信チェック処理部222)を不要とすることができる。従って、DMAコントローラにおいてDMAデータ転送の性能を向上させるためにDMAエンジンの多重度を上げる場合、DMAエンジンを増設するだけでよく、これ以外のハードウェアの増加は発生しない。更に、転送データ数が増えても、転送先デバイスにおいてデータ転送の終了を判定する機能を増設するだけでよく、これ以外のハードウェアの増加は発生しない。従って、例えばDMAエンジン数×転送データ数のDMA転送管理テーブルを用意する必要はなく、回路の規模を極めて小さくすることができる。
また、本発明のDMAデータ転送装置の一実施態様によれば、DMA制御部が全データ転送回数に基づいて生成した判断情報を転送先デバイスに送る。これにより、転送先デバイスは、データ転送の終了前に判断情報を受け取り、データ転送の終了を正確に判断することができる。
また、本発明のDMAデータ転送装置の一実施態様によれば、判断情報が全データ転送回数からなるので、データ転送の回数をカウントするのみでデータ転送が終了したことを判断することができる。これにより、転送先デバイスは、特に複雑な回路や処理を必要とすることなく、容易にデータ転送の終了を判断することができる。
また、本発明のDMAデータ転送装置の一実施態様によれば、判断情報がデータ転送回数不足値からなるので、データ転送回数カウンタの値がカウンタMAX値に達した場合、データ転送が終了したものと判断することができる。これにより、全データ転送回数を保持する必要がないため、転送先デバイスにおける回路をより一層簡単な構成とすることができる。
また、本発明のDMAデータ転送装置の一実施態様によれば、第2のメモリが第1のメモリよりもDMA制御部に近い位置に設けられる。これにより、ヘッダ情報などの予めその内容が定められたデータの転送時間を削減することができる。
図1及び図2は、本発明の一実施形態によるDMAデータ転送装置の構成図であり、併せて本発明の一実施形態によるDMAデータ転送装置の構成を示す。特に、図1は本発明に従う情報処理装置の構成例を示し、図2は本発明に従う通信制御カードの構成例を示す図である。
図1において、情報処理装置1は、例えばそれ自体で独立して動作するコンピュータであり、CPU(中央演算処理装置)20、メモリ30、第1ホストコントローラ40、拡張スロット50を備える。拡張スロット50は、少なくとも1個設けられ、図示しないが、複数備えることができる。CPU20は、情報処理装置1の全体の制御/演算を行う。メモリ(第1のメモリ)30は、例えば外部記憶装置からなり、例えばユーザにより作成された種々のデータ(又は大容量のデータ)を記憶する。メモリ30はDMAによるデータ転送の転送元となる。第1ホストコントローラ40は、CPU20、メモリ30、拡張スロット50(従って、通信制御カード10)に接続され、これらの間での通信を行う。拡張スロット50は、情報処理装置1に種々の機能を付加するために、当該機能を実現するデバイスを接続するためのスロットであり、種々の拡張カード(又は、拡張ボード)を搭載する。
この例において、拡張カードの例として、DMAデータ転送機能をもつ通信制御カード10が搭載される。通信制御カード10は、接続配線や光ファイバーなどの通信媒体4を介して、例えば情報処理装置1の外部の通信スイッチ2に接続される。情報処理装置1は、通信スイッチ2を介して、他の情報処理装置3と接続される。又は、通信制御カード10が、図1に点線で示すように、直接、他の情報処理装置3に接続されるようにしても良い。これにより、情報処理装置1は、通信制御カード(拡張カード)10を介して、通信スイッチ2又は他の情報処理装置3と接続され、これらとの間で通信を行う。
図2において、通信制御カード10は、DMA制御部11、DMAコントローラ12、内蔵メモリ13、メモリコントローラ14、通信コントローラ15及び第2ホストコントローラ16を備える。DMAコントローラ12は複数のDMAエンジン120を備える。通信コントローラ15はパケット生成回路150及び転送終了判定部151を備える。
DMA制御部11は、通信制御カード10に搭載されたCPUからなり、通信制御カード10の全体を制御する。情報処理装置1のCPU20からデータ転送指示を受けると、DMA制御部11は、DMAエンジン120が転送可能なサイズになるように、メモリ30又は内蔵メモリ13からの転送すべきデータ(以下、転送データ)の分割サイズを決定し、DMAコントローラ12(の複数のDMAエンジン120)にDMAによるデータ転送の指示を出す。DMAエンジン120が転送可能なサイズ(データの最大長)は、予め定められ、各々のDMAエンジン120において等しい。
DMA制御部11は、転送データについて、そのデータ転送の終了を判断するための判断情報を通信コントローラ15に送る。具体的には、DMA制御部11は、転送データ毎のデータ転送の回数(全データ転送回数m)が確定すると、転送終了判定部151に転送データ毎の判断情報を通知する。即ち、複数の転送データの各々について、判断情報が通知される。
DMAコントローラ12は、実際にDMAによるデータ転送を行う。このために、DMAコントローラ12は、複数のDMAエンジン120を備える。複数のDMAエンジン120は、各々、DMA制御部11からの指示に従って、情報処理装置1のメモリ30又は内蔵メモリ13からの転送データを分割し、分割された転送データのブロックデータを通信コントローラ15に転送する。以下の説明において、各々のDMAエンジン120によって転送される分割された転送データの部分の各々を、ブロックデータと呼ぶ。
内蔵メモリ(第2のメモリ)13は、パケットのヘッダ情報のように、予めその内容が定められたデータを記憶する。内蔵メモリ13はDMAデータ転送におけるデータの転送元となる。内蔵メモリ13は、メモリ30と比較すると、DMA制御部11であるCPU(及びDMAコントローラ12)に対して物理的に近い位置にあるので、キャッシュメモリであると考えて良い。メモリコントローラ14は、内蔵メモリ13とDMAコントローラ12との間のデータ転送を制御する。
通信コントローラ15は、転送先デバイスであり、DMAによるデータ転送におけるデータの転送先となる。通信コントローラ15において、パケット生成回路150は、転送されたブロックデータが全て揃うと、これに基づいてパケットを生成し、生成されたパケットを外部に送信する。これにより、通信コントローラ15は、通信スイッチ2又は他の情報処理装置3との間でパケット通信を行う。転送終了判定部151は、DMA制御部11から送られた判断情報に基づいて、転送データについて、そのデータ転送の終了判定を行う。具体的には、転送終了判定部151は、DMA制御部11から受けた転送データ毎の判断情報に基づいて、データ転送の終了判定を行う。即ち、複数の転送データの各々について、そのデータ転送の終了判定を行う。転送終了判定部151は、データ転送が終了したと判定した場合、その旨をパケット生成回路150に通知する。これに応じて、例えばパケット生成回路150はパケットを送出する。
第2ホストコントローラ16は、情報処理装置1の第1ホストコントローラ40との通信を行う。情報処理装置1のCPU20からのデータ転送指示は、第1ホストコントローラ40、第2ホストコントローラ16を介して、DMA制御部11に送られる。また、情報処理装置1のメモリ30から転送されるデータは、第1ホストコントローラ40、第2ホストコントローラ16を介して、DMAコントローラ12に送られる。
第2ホストコントローラ16は、情報処理装置1の第1ホストコントローラ40と拡張スロット50を介して接続される。第2ホストコントローラ16は、DMA制御部11、DMAコントローラ12と内部バスで接続される。DMAコントローラ12は、メモリコントローラ14と内部バスで接続される。通信コントローラ15は、DMA制御部11、DMAコントローラ12と内部バスで接続される。
図3は、本発明の一実施形態によるDMAデータ転送機能を備える通信制御カード10の具体的な構成の一例を説明する図である。
この例は、判断情報が転送データを転送するために必要な転送回数である全データ転送回数mからなる例である。これに伴って、この例の転送終了判定部151は、データ転送回数カウンタ152と全データ転送回数保持部153とを備える。データ転送回数カウンタ152及び全データ転送回数保持部153は、データバッファ154毎(即ち、転送データ毎)に設けらる。
DMA制御部11は、情報処理装置1からの通信コマンドを解釈し、各々のDMAエンジン120が転送可能なサイズになるように、転送データの分割サイズを決定し、DMAコントローラ12にDMAによるデータ転送の指示を出す。また、DMA制御部11は、全データ転送回数mが確定した場合、これを通信コントローラ15に通知する。全データ転送回数mは、転送データの全体を転送するために必要な転送回数である。
転送先デバイスである通信コントローラ15は、転送データ毎に、転送されたブロックデータを格納するデータバッファ154を備える。データバッファ154は、転送データ毎にDMAコントローラ12(のDMAエンジン120)がアクセスすることができるメモリ領域である。通信コントローラ15は、転送終了判定部151として、データ転送回数カウンタ152及び全データ転送回数保持部153を備える。データ転送回数カウンタ152は、転送データ毎に、当該転送データについて終了したデータ転送の回数をカウントする。全データ転送回数保持部153は、DMA制御部11から送られた全データ転送回数mを保持する。
データ転送回数カウンタ152は、転送データ毎に、DMAコントローラ12からのデータ転送の回数(即ち、DMAエンジン120からの転送終了通知の数)をカウントする。通信コントローラ15(又は、データ転送回数カウンタ152)は、データ転送回数カウンタ152の値と保持された全データ転送回数mとを比較し、両者が一致した場合(即ち、データ転送回数カウンタの値が全データ転送回数に達した場合)、データ転送の終了と判断し、パケット生成回路150にデータ転送終了通知を送る。従って、転送終了判定部151が判定の対象とする「データ転送の終了」は、各々のDMAエンジン120におけるデータ転送の終了ではなく、1個の転送データの全体(全ブロックデータ)のデータ転送の終了である。
次に、図3の構成に従って、本発明の一実施形態によるDMAデータ転送について説明する。なお、以下では、1つの転送データAに着目して説明する。複数の転送データA及びBが存在する場合、以下に説明するDMAデータ転送が複数の転送データA及びBについて並行に行われる。この場合、転送データB用のデータバッファ154が設けられ、これに応じてデータ転送回数カウンタ152及び全データ転送回数保持部153が設けられる。
情報処理装置1のCPU20は、パケット送信命令を出す。このパケット送信命令は、情報処理装置1の第1ホストコントローラ40経由で、通信制御カード10の第2ホストコントローラ16に伝達される。DMA制御部11は、第2ホストコントローラ16からパケット送信命令を受け、情報処理装置1のメモリ30にある通信コマンドを、第2ホストコントローラ16及び第1ホストコントローラ40経由で読み出す。そして、DMA制御部11は、読み出した通信コマンドを解釈し、DMAエンジン120が転送可能なサイズになるように転送データの分割サイズを決定し、DMAコントローラ12にデータ転送指示を出す。
DMAコントローラ12内のDMAエンジン120は、各々、DMA制御部11からの指示に基づいて、例えばメモリコントローラ14経由で内蔵メモリ13からブロックデータを読み出し、通信コントローラ15に転送する。例えば、図4に示すように、内蔵メモリ13からブロックデータA1を読み出す。これにより、パケット生成回路150は、パケット160のヘッダ(制御データ)を内蔵メモリ13からデータ転送されたデータにより構成する。
また、DMAエンジン120は、各々、DMA制御部11からの指示に基づいて、例えば第2ホストコントローラ16経由で情報処理装置1のメモリ30からブロックデータを読み出し、通信コントローラ15に転送する。例えば、図4に示すように、メモリ30からブロックデータA2〜Amを読み出す。これにより、パケット生成回路150は、パケット160のボディ(実際のデータ)をメモリ30からデータ転送されたデータにより構成する。これにより、パケット160が生成される。
複数のDMAエンジン120の各々は並行して動作し、一方、図4に示すように、複数のDMAエンジン120の各々が転送するブロックデータのデータ長は異なる。このため、図5に示すAm−1とAmのように、DMA制御部11からのデータ転送の指示の順番と、データ転送が終了する順番は一致しない場合がある。これは、例えば、図4に示すように、Am−1はブロックデータの最大長のサイズであるのに対し、Amは残りの小さいサイズのブロックデータからなるためである。
なお、図4において、ブロックデータA2、A4、A5及びAm−1は、ブロックデータの最大長のサイズを有する。一方、ブロックデータA1、A3及びAmは、各々の理由から、前記最大長のサイズよりも小さいサイズを有する。
DMA制御部11は、通常、データ転送指示を出す際に、DMAエンジン120が転送可能な最大サイズになるように転送データの分割サイズを決定する。しかし、図4に示すように、転送データがメモリ30上でページの境界(点線で示す)を跨いで存在している場合、ブロックデータA3は、当該ページの境界を跨がないように、DMAエンジン120が転送可能な最大サイズより小さなサイズに分割される。そのため、全データ転送回数mの確定する時期は、転送データによって異なり、不定である。多くの場合、全データ転送回数mは、転送データの最終尾の近くまでデータ転送が行われた時点で確定する。
従って、本発明において、DMA制御部11は、複数のDMAエンジンが転送可能なサイズになるように転送データの分割サイズを決定し、この決定の結果に基づいて全データ転送回数mを確定し、この確定の結果に基づいて判断情報を生成する。図3の例では、DMA制御部11は、全データ転送回数mが確定した時点で(又は、確定した後に)、判断情報として、通信コントローラ15に対して全データ転送回数mを通知する。
通信コントローラ15(又はデータ転送回数カウンタ152)は、DMAコントローラ12からのデータ転送の回数が全データ転送回数mに達した場合、即ち、データ転送回数カウンタ152の値が全データ転送回数mに達した場合、その転送データについてのデータ転送を終了したと判断し、パケット160を送出する。
図5は、図3の例における本発明によるDMAデータ転送の動作シーケンスである。図5の動作シーケンスは、転送データAについてのDMAデータ転送の例である。
以下の説明において、A1、A2、... 、Amはそれぞれブロックデータであり、数字が若いものほど転送データの先頭に近いブロックデータであることを示す。図5において、CPU20からDMA制御部11へのパケット送信命令や、メモリ30又は内蔵メモリ13からDMAエンジン120へのデータ読み出しは省略されている。図5は1つの転送データAのDMAデータ転送について示すが、実際には、複数の転送データA、B、・・・のDMAによるデータ転送が並行して行われる。
DMA制御部11は、DMAエンジン120が転送可能なサイズになるように転送データAの分割サイズを決定し、DMAコントローラ12に対して、転送データAを指定サイズに分割して転送する旨のデータ転送指示(DMAデータ転送要求)を出す。即ち、DMA制御部11は、DMAコントローラ12にA1の転送命令を出す(ステップS10)。この命令において、データ転送元の内蔵メモリ13又はメモリ30及びデータ転送先である転送先デバイス例えば通信コントローラ15も指示される。
DMAコントローラ12において、DMAエンジン120は、各々、DMA制御部11の指示に従って、DMAによるデータ転送を行う。例えば、A1の転送命令を受けたDMAコントローラ12は、まだデータ転送が割り当てられていないDMAエンジン120を用いて、通信コントローラ15へのA1のデータ転送を行う(ステップS11)。具体的には、DMAエンジン120は、メモリコントローラ14に対してリード要求を出すことによりA1を読み出し、これを通信コントローラ15に転送する。DMAエンジン120にデータ転送が割り当てられているか否かは、例えばDMAエンジン120毎に、割当中であるか否かを示すフラグを設けるようにすれば良い。
この後、DMA制御部11は、ステップS10と同様にして、A2の転送命令を出し(ステップS12)、A2の転送命令を受けたDMAコントローラ12は、ステップS11と同様にして、A2のデータ転送を行う(ステップS13)。そして、ブロックデータA1又はA2のデータ転送が終了したDMAエンジン120は、各々、通信コントローラ15に対して転送終了通知を出す(ステップS14、ステップS15)。これに応じて、データ転送回数カウンタ152は、データ転送回数をカウントする。
DMA制御部11は、全データ転送回数mが確定した時点で、通信コントローラ15に対して全データ転送回数mを通知する(ステップS16)。これに応じて、全データ転送回数保持部153は、DMA制御部11から送られた全データ転送回数mを保持する。この後、通信コントローラ15において、データ転送回数カウンタ152の値と、全データ転送回数mとが比較される。両者が一致した場合、データ転送が終了したと判断される。
以上のようにしてブロックデータの転送処理が進行する。そして、DMA制御部11は、ステップS10と同様にして、Am−1の転送命令を出し(ステップS17)、Am−1の転送命令を受けたDMAコントローラ12は、ステップS11と同様にして、Am−1のデータ転送を行う(ステップS18)。この後、DMA制御部11は、ステップS10と同様にして、Amの転送命令を出し(ステップS19)、Amの転送命令を受けたDMAコントローラ12は、ステップS11と同様にして、Amのデータ転送を行う(ステップS20)。
Amのデータ転送が終了すると、DMAコントローラ12は、通信コントローラ15に対して転送終了通知を出す(ステップS21)。ここでは、最終ブロックデータAmのデータサイズが1つ前のブロックデータAm−1より小さいため、Am−1より先にAmのデータ転送が終了する。このため、この時点でのデータ転送回数カウンタ152の値はm−1であり、まだ全データ転送回数mには満たない。
Am−1のデータ転送が終了すると、DMAコントローラ12は、通信コントローラ15に対して転送終了通知を出す(ステップS22)。この時点で、データ転送回数カウンタ152の値がmとなり、全データ転送回数mと一致する。そこで、転送終了判定部151(データ転送回数カウンタ152)は、転送データAのデータ転送が終了したと判断する。
図6は、本発明の一実施形態によるDMAデータ転送機能を備える通信制御カード10の具体的な構成の他の一例を説明する図である。図6は、図3に対応する図であり、従って、図3と同一の部分についての説明は省略する。
この例は、判断情報がカウンタMAX値から全データ転送回数mを引いた値であるデータ転送回数不足値からなる例である。カウンタMAX値は、データ転送回数カウンタ152がカウント可能な最大値である。カウンタMAX値は、DMAによるデータ転送において、実行が許容されるデータ転送の回数の最大値に等しい。これに伴って、この例の転送終了判定部151は、転送終了判定部151としてデータ転送回数カウンタ152のみを備える。データ転送回数カウンタ152は、データバッファ154(即ち、転送データ)毎に設けられる。
DMA制御部11は、全データ転送回数mが確定した場合、カウンタMAX値から全データ転送回数mを引いた値(以下、データ転送回数不足値という)を通信コントローラ15に通知する。通信コントローラ15(データ転送回数カウンタ152)は、通知されたデータ転送回数不足値をその時点でのデータ転送回数カウンタ152の値に加算し、その値がカウンタMAX値に達した場合、転送データのデータ転送が終了したものと判断する。その後、データ転送回数カウンタ152は、データ転送回数をカウントし続け、そのカウント値がカウンタMAX値に達した場合、データ転送が終了したと判断して、パケット生成回路150にデータ転送終了通知を送る。
例えば、カウンタMAX値が16であり、転送データAの全データ転送回数mが10である場合について考える。データ転送回数カウンタ152は、ブロックデータA1、A2、・・・の転送終了毎にデータ転送回数を1、2、・・・とカウントする。DMA制御部11で全データ転送回数mが確定すると、カウンタMAX値から全データ転送回数mが引かれた値即ち16−10=6がデータ転送回数不足値として通信コントローラ15に送られる。ここで、データ転送回数カウンタ152の値が6の時点で、データ転送回数不足値が送られたとする。この場合、データ転送回数カウンタ152の値にデータ転送回数不足値が加算され、データ転送回数カウンタ152の値が6+6=12とされる。その後、データ転送回数カウンタ152は、ブロックデータの転送終了毎に13、14、・・・とカウントし続け、データ転送回数カウンタ152値がカウンタMAX値即ち16に達した場合、データ転送の終了と判断する。
次に、図6の構成に従って、本発明の一実施形態によるDMAデータ転送について説明する。即ち、図3の例と同様にして、情報処理装置1のCPU20からのパケット送信命令に従って、DMA制御部11は、DMAコントローラ12にデータ転送指示を出す。DMAコントローラ12のDMAエンジン120は、各々、DMA制御部11からの指示に基づいて、内蔵メモリ13又はメモリ30からブロックデータを読み出し、通信コントローラ15に転送する。データ転送回数カウンタ152は、DMAコントローラ12からのデータ転送の回数をカウントする。
DMA制御部11は、全データ転送回数mが確定した時点で、カウンタMAX値から全データ転送回数mを引いた値即ちデータ転送回数不足値を、通信コントローラ15に対して通知する。通信コントローラ15は、DMA制御部11から受けたデータ転送回数不足値をデータ転送回数カウンタ152に加算する。その後も、データ転送回数カウンタ152は、DMAコントローラ12からのデータ転送の回数をカウントし続け、そのカウント値がカウンタMAX値に達すると、その転送データについてのデータ転送が終了したと判断して、パケット160を送出する。
図7は、図6の例における本発明によるDMAデータ転送の動作シーケンスの他の一例である。図7は図5に対応し、従って、図5と同一の部分についての説明は省略する。
DMA制御部11は、ステップS10と同様にして、DMAコントローラ12に対してA1の転送命令を出し(ステップS30)、A1の転送命令を受けたDMAコントローラ12は、ステップS11と同様にして、A1のデータ転送を行う(ステップS31)。これに続けて、DMA制御部11は、ステップS12と同様にして、A2の転送命令を出し(ステップS32)、A2の転送命令を受けたDMAコントローラ12は、ステップS13と同様にして、A2のデータ転送を行う(ステップS33)。そして、ブロックデータA1又はA2のデータ転送が終了したDMAコントローラ12は、各々、通信コントローラ15に対して転送終了通知を出す(ステップS34、ステップS35)。これに応じて、データ転送回数カウンタ152は、データ転送の回数をカウントする。
DMA制御部11は、全データ転送回数mが確定した時点で、通信コントローラ15に対してデータ転送回数不足値(Nmax−m)を通知する(ステップS36)。これに応じて、データ転送回数カウンタ152の値kにデータ転送回数不足値(Nmax−m)が加算される。これにより、データ転送回数カウンタ152の値はNmax−m+kとなる。この後、データ転送回数カウンタ152は、DMAコントローラ12からの転送終了通知を受信する都度に、これをカウントし続ける。
以上のようにして、ブロックデータの転送処理が進行する。そして、DMA制御部11は、ステップS17と同様にして、Am−1の転送命令を出し(ステップS37)、Am−1の転送命令を受けたDMAコントローラ12は、ステップS18と同様にして、Am−1のデータ転送を行う(ステップS38)。この後、DMA制御部11は、ステップS19と同様にして、Amの転送命令を出し(ステップS39)、Amの転送命令を受けたDMAコントローラ12は、ステップS20と同様にして、Amのデータ転送を行う(ステップS40)。
Amのデータ転送が終了すると、DMAコントローラ12は、通信コントローラ15に対して転送終了通知を出す(ステップS41)。前述のように、Am−1より先にAmのデータ転送が終了している。このため、この時点でのデータ転送回数カウンタ152の値はNmax−1であり、まだカウンタMAX値には満たない。
Am−1のデータ転送が終了すると、DMAコントローラ12は、通信コントローラ15に対して転送終了通知を出す(ステップS42)。この時点で、データ転送回数カウンタ152の値がNmaxとなる。そこで、通信コントローラ15(データ転送回数カウンタ152)は、転送データAのデータ転送が終了したと判断する。
図6の例によれば、通信コントローラ15にDMA制御部11から通知された全データ転送回数を保持する全データ転送回数保持部153を設ける必要がない。このため、図3の例と比較して、通信コントローラ15のデータ転送回数カウンタ152の周辺回路を削減することができる。
以上から判るように、以下のように本発明の実施の態様を把握することができる。
(付記1)データの転送元であるメモリと、
データの転送先である転送先デバイスと、
各々が前記メモリから前記転送先デバイスへのDMAによるデータ転送を行う複数のDMAエンジンを備えるDMAコントローラと、
前記DMAコントローラの前記複数のDMAエンジンに対して、DMAによるデータ転送を指示するDMA制御部とを備え、
前記DMA制御部が、転送すべきデータについて、そのデータ転送の終了を判断するための判断情報を前記転送先デバイスに送り、
前記転送先デバイスが、前記DMA制御部から送られた前記判断情報に基づいて、前記転送すべきデータについて、そのデータ転送の終了判定を行う
ことを特徴とするDMAデータ転送装置。
(付記2)付記1に記載のDMAデータ転送装置において、
前記DMA制御部が、複数の転送すべきデータの各々について、前記判断情報を前記転送先デバイスに送り、
前記転送先デバイスが、前記判断情報に基づいて、前記複数の転送すべきデータの各々について、そのデータ転送の終了判定を行う
ことを特徴とするDMAデータ転送装置。
(付記3)付記1に記載のDMAデータ転送装置において、
前記DMA制御部が、前記複数のDMAエンジンが転送可能なサイズになるように前記転送すべきデータの分割サイズを決定し、前記決定の結果に基づいて前記転送すべきデータを転送するために必要な転送回数である全データ転送回数を確定し、前記確定の結果に基づいて前記判断情報を生成する
ことを特徴とするDMAデータ転送装置。
(付記4)付記1に記載のDMAデータ転送装置において、
前記DMA制御部が、前記転送すべきデータを転送するために必要な転送回数である全データ転送回数が確定した後に、当該確定の結果に基づいて生成した前記判断情報を前記転送先デバイスに送る
ことを特徴とするDMAデータ転送装置。
(付記5)付記1に記載のDMAデータ転送装置において、
前記判断情報が、前記転送すべきデータを転送するために必要な転送回数である全データ転送回数からなり、
前記転送先デバイスが、前記転送すべきデータについて終了したデータ転送の回数をカウントするデータ転送回数カウンタと、前記全データ転送回数を保持する全データ転送回数保持部とを備え、前記データ転送回数カウンタの値が前記全データ転送回数に達した場合、前記転送すべきデータのデータ転送が終了したものと判断する
ことを特徴とするDMAデータ転送装置。
(付記6)付記1に記載のDMAデータ転送装置において、
前記転送先デバイスが、前記転送すべきデータについて終了したデータ転送の回数をカウントするデータ転送回数カウンタを備え、
前記判断情報が、前記データ転送回数カウンタがカウント可能な最大値であるカウンタMAX値から、前記転送すべきデータを転送するために必要な転送回数である全データ転送回数を引いた値であるデータ転送回数不足値からなり、
前記転送先デバイスが、前記データ転送回数不足値を前記データ転送回数カウンタの値に加算し、前記データ転送回数カウンタの値が前記カウンタMAX値に達した場合、前記転送すべきデータのデータ転送が終了したものと判断する
ことを特徴とするDMAデータ転送装置。
(付記7)付記6に記載のDMAデータ転送装置において、
前記カウンタMAX値は、前記転送すべきデータのデータ転送において実行が許容されるDMAによるデータ転送の回数の最大値に等しい
ことを特徴とするDMAデータ転送装置。
(付記8)付記1に記載のDMAデータ転送装置において、
前記メモリが、ユーザにより作成されたデータが記憶された第1のメモリと、予めその内容が定められたデータが記憶された第2のメモリとを含み、
前記第2のメモリが、前記第1のメモリよりも、前記DMA制御部に近い位置に設けられる
ことを特徴とするDMAデータ転送装置。
(付記9)付記1に記載のDMAデータ転送装置が、更に、
少なくとも1個の拡張スロットを備える情報処理装置と、
前記拡張スロットに搭載された拡張カードとからなり、
前記メモリが前記情報処理装置又は拡張カードに設けられ、前記転送先デバイス、前記DMAコントローラ及び前記DMA制御部が、前記拡張カードに設けられる
ことを特徴とするDMAデータ転送装置。
(付記10)付記9に記載のDMAデータ転送装置において、
前記メモリが、ユーザにより作成されたデータが記憶された第1のメモリと、予めその内容が定められたデータが記憶された第2のメモリとを含み、
前記第1のメモリが前記情報処理装置に設けられ、前記第2のメモリが前記拡張カードに設けられる
ことを特徴とするDMAデータ転送装置。
(付記11)付記9に記載のDMAデータ転送装置において、
前記拡張カードが通信制御カードからなり、
前記転送先デバイスは通信コントローラからなり、
前記情報処理装置が、前記拡張カードを介して、通信スイッチ又は他の情報処理装置と接続され、これらとの間で通信を行う
ことを特徴とするDMAデータ転送装置。
(付記12)付記11に記載のDMAデータ転送装置において、
前記転送先デバイスが、パケットを生成するパケット生成回路を含み、前記通信スイッチ又は他の情報処理装置との間でパケット通信を行う
ことを特徴とするDMAデータ転送装置。
(付記13)付記12に記載のDMAデータ転送装置において、
前記メモリが、ユーザにより作成されたデータが記憶された第1のメモリと、予めその内容が定められたデータが記憶された第2のメモリとを含み、
前記第1のメモリが前記情報処理装置に設けられ、前記第2のメモリが前記拡張カードに設けられ、
前記パケット生成回路が、前記パケットのヘッダを前記第2のメモリからデータ転送されたデータにより構成し、前記パケットのボディを前記第1のメモリからデータ転送されたデータにより構成することにより、前記パケットを生成する
ことを特徴とするDMAデータ転送装置。
(付記14)各々がメモリから転送先デバイスへのデータ転送を行う複数のDMAエンジンを備えるDMAコントローラと、前記DMAコントローラの前記複数のDMAエンジンに対してDMAによるデータ転送を指示するDMA制御部とを備えるDMAデータ転送装置におけるDMAデータ転送方法であって、
前記DMA制御部が、前記複数のDMAエンジンが転送可能なサイズになるように転送すべきデータの分割サイズを決定し、前記DMAコントローラの前記複数のDMAエンジンに対してDMAによるデータ転送を指示し、
前記DMAコントローラの前記複数のDMAエンジンが、前記DMA制御部の指示に従って、前記転送すべきデータを分割して前記転送デバイスに転送し、
前記DMA制御部が、前記転送すべきデータについて、そのデータ転送の終了を判断するための判断情報を、前記転送先デバイスに送り、
前記転送先デバイスが、前記DMA制御部から送られた前記判断情報に基づいて、前記転送すべきデータについて、そのデータ転送の終了判定を行う
ことを特徴とするDMAデータ転送方法。
以上、説明したように、本発明によれば、DMAデータ転送装置及びDMAデータ転送方法において、転送先デバイスがデータ転送の終了判定を行う。これにより、転送先デバイスにおいて当該終了判定の機能を増設し、DMAコントローラにおいてDMAによるデータ転送の多重度を上げるだけで、回路の規模を殆ど大きくすることなく、DMAによるデータ転送の性能を向上することができる。この結果、DMAによるデータ転送の性能を大幅に向上したコンピュータ等の情報処理装置を提供することができる。
本発明による情報処理装置の構成例を示す図である。 本実施の形態による通信制御カードの構成例を示す図である。 本発明によるDMAデータ転送の一例を説明する図である。 本発明によるDMAデータ転送を説明する図である。 本発明によるDMAデータ転送の動作シーケンスの一例である。 本発明によるDMAデータ転送の他の一例を説明する図である。 本発明によるDMAデータ転送の動作シーケンス他の一例である。 本発明の背景となったDMAデータ転送装置を示す図である。 図8のDMAデータ転送装置におけるDMAデータ転送の動作シーケンスである。 図8のDMAデータ転送装置の備える送信チェック処理部の構成例を示す図である。 図8のDMAデータ転送装置の備えるDMA転送管理テーブルの例を示す図である。
符号の説明
1 情報処理装置
2 通信スイッチ
3 情報処理装置
4 通信媒体
10 通信制御カード
11 DMA制御部
12 DMAコントローラ
13 内蔵メモリ
14 メモリコントローラ
15 通信コントローラ
16 第2ホストコントローラ
20 CPU
30 メモリ
40 第1ホストコントローラ
50 拡張スロット
120 DMAエンジン
150 パケット生成回路
151 転送終了判定部
152 データ転送回数カウンタ
153 全データ転送回数保持部

Claims (6)

  1. 転送すべきデータの転送元であるメモリと、
    前記転送すべきデータの転送先である転送先デバイスと、
    各々が前記メモリから前記転送先デバイスへのDMAによるデータ転送を行う複数のDMAエンジンを備えるDMAコントローラと、
    前記DMAコントローラの前記複数のDMAエンジンに対して、DMAによるデータ転送を指示するDMA制御部とを備え、
    前記DMA制御部が、前記転送すべきデータについて、そのデータ転送の終了を判断するための判断情報を前記転送先デバイスに送り、
    前記複数のDMAエンジンの各々が、前記転送すべきデータを分割したブロックデータを前記転送先デバイスにデータ転送すると共に、前記ブロックデータのデータ転送が終了すると、転送終了通知を前記転送先デバイスに送り、
    前記転送先デバイスが、前記DMA制御部から送られた前記判断情報と、前記複数のDMAエンジンの各々から送られた前記転送終了通知とに基づいて、前記転送すべきデータについて、そのデータ転送の終了判定を行う
    ことを特徴とするDMAデータ転送装置。
  2. 請求項1に記載のDMAデータ転送装置において、
    前記DMA制御部が、前記転送すべきデータを転送するために必要な転送回数である全データ転送回数が確定した後に、当該確定の結果に基づいて生成した前記判断情報を前記転送先デバイスに送る
    ことを特徴とするDMAデータ転送装置。
  3. 請求項1に記載のDMAデータ転送装置において、
    前記判断情報が、前記転送すべきデータを転送するために必要な転送回数である全データ転送回数からなり、
    前記転送先デバイスが、前記転送終了通知の数をカウントすることにより、前記転送すべきデータについて終了した前記ブロックデータのデータ転送の回数をカウントするデータ転送回数カウンタと、前記全データ転送回数を保持する全データ転送回数保持部とを備え、前記データ転送回数カウンタの値が前記全データ転送回数に達した場合、前記転送すべきデータのデータ転送が終了したものと判断する
    ことを特徴とするDMAデータ転送装置。
  4. 請求項1に記載のDMAデータ転送装置において、
    前記転送先デバイスが、前記転送終了通知の数をカウントすることにより、前記転送すべきデータについて終了した前記ブロックデータのデータ転送の回数をカウントするデータ転送回数カウンタを備え、
    前記判断情報が、前記データ転送回数カウンタがカウント可能な最大値であるカウンタMAX値から、前記転送すべきデータを転送するために必要な転送回数である全データ転送回数を引いた値であるデータ転送回数不足値からなり、
    前記転送先デバイスが、前記データ転送回数不足値を前記データ転送回数カウンタの値に加算し、前記データ転送回数カウンタの値が前記カウンタMAX値に達した場合、前記転送すべきデータのデータ転送が終了したものと判断する
    ことを特徴とするDMAデータ転送装置。
  5. 請求項1に記載のDMAデータ転送装置において、
    前記メモリが、ユーザにより作成されたデータが記憶された第1のメモリと、予めその内容が定められたデータが記憶された第2のメモリとを含み、
    前記第2のメモリが、前記第1のメモリよりも、前記DMA制御部に近い位置に設けられる
    ことを特徴とするDMAデータ転送装置。
  6. 各々がメモリから転送先デバイスへのデータ転送を行う複数のDMAエンジンを備えるDMAコントローラと、前記DMAコントローラの前記複数のDMAエンジンに対してDMAによるデータ転送を指示するDMA制御部とを備えるDMAデータ転送装置におけるDMAデータ転送方法であって、
    前記DMA制御部が、前記複数のDMAエンジンが転送可能なサイズになるように転送すべきデータの分割サイズを決定し、前記DMAコントローラの前記複数のDMAエンジンに対してDMAによるデータ転送を指示し、
    前記DMAコントローラの前記複数のDMAエンジンの各々が、前記DMA制御部の指示に従って、前記転送すべきデータを分割したブロックデータを前記転送デバイスにデータ転送すると共に、前記ブロックデータのデータ転送が終了すると、転送終了通知を前記転送先デバイスに送り、
    前記DMA制御部が、前記転送すべきデータについて、そのデータ転送の終了を判断するための判断情報を、前記転送先デバイスに送り、
    前記転送先デバイスが、前記DMA制御部から送られた前記判断情報と、前記複数のDMAエンジンの各々から送られた前記転送終了通知とに基づいて、前記転送すべきデータについて、そのデータ転送の終了判定を行う
    ことを特徴とするDMAデータ転送方法。
JP2006051872A 2006-02-28 2006-02-28 Dmaデータ転送装置及びdmaデータ転送方法 Expired - Fee Related JP4908017B2 (ja)

Priority Applications (5)

Application Number Priority Date Filing Date Title
JP2006051872A JP4908017B2 (ja) 2006-02-28 2006-02-28 Dmaデータ転送装置及びdmaデータ転送方法
KR1020060042303A KR100775406B1 (ko) 2006-02-28 2006-05-11 Dma 데이터 전송 장치 및 dma 데이터 전송 방법
US11/441,118 US7752349B2 (en) 2006-02-28 2006-05-26 Apparatus and method for performing DMA data transfer
CN200610091806A CN100592273C (zh) 2006-02-28 2006-05-29 执行dma数据传输的设备和方法
EP06114790A EP1826677A1 (en) 2006-02-28 2006-05-31 Apparatus and method for performing DMA data transfer

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006051872A JP4908017B2 (ja) 2006-02-28 2006-02-28 Dmaデータ転送装置及びdmaデータ転送方法

Publications (2)

Publication Number Publication Date
JP2007233522A JP2007233522A (ja) 2007-09-13
JP4908017B2 true JP4908017B2 (ja) 2012-04-04

Family

ID=37459390

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006051872A Expired - Fee Related JP4908017B2 (ja) 2006-02-28 2006-02-28 Dmaデータ転送装置及びdmaデータ転送方法

Country Status (5)

Country Link
US (1) US7752349B2 (ja)
EP (1) EP1826677A1 (ja)
JP (1) JP4908017B2 (ja)
KR (1) KR100775406B1 (ja)
CN (1) CN100592273C (ja)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100498748C (zh) * 2007-11-16 2009-06-10 威盛电子股份有限公司 计算机系统及直接内存访问传输方法
US8327040B2 (en) 2009-01-26 2012-12-04 Micron Technology, Inc. Host controller
JP5693176B2 (ja) * 2010-11-26 2015-04-01 キヤノン株式会社 モニタ回路、バスブリッジ及びバスシステム
US8904058B2 (en) 2011-05-27 2014-12-02 International Business Machines Corporation Selecting direct memory access engines in an adaptor input/output (I/O) requests received at the adaptor
US10013372B2 (en) 2014-04-09 2018-07-03 Hitachi, Ltd. Input/output apparatus and method
KR20160087224A (ko) * 2015-01-13 2016-07-21 삼성전자주식회사 메모리 컨트롤러 및 이를 포함하는 메모리 시스템
CN104717433A (zh) * 2015-03-27 2015-06-17 电子科技大学 一种用于视频流信号处理系统的分布式传输装置
KR102387460B1 (ko) 2015-04-09 2022-04-15 삼성전자주식회사 데이터 저장 장치와 이의 작동 방법
GB2551226A (en) * 2016-06-08 2017-12-13 Google Inc TLB shootdowns for low overhead
US10540292B2 (en) 2016-06-08 2020-01-21 Google Llc TLB shootdowns for low overhead
US10657292B2 (en) * 2017-12-18 2020-05-19 Xilinx, Inc. Security for programmable devices in a data center
US10725942B2 (en) * 2018-11-09 2020-07-28 Xilinx, Inc. Streaming platform architecture for inter-kernel circuit communication for an integrated circuit
WO2020097013A1 (en) * 2018-11-09 2020-05-14 Xilinx, Inc. Streaming platform flow and architecture
US10924430B2 (en) * 2018-11-09 2021-02-16 Xilinx, Inc. Streaming platform flow and architecture for an integrated circuit
JP7226084B2 (ja) * 2019-05-16 2023-02-21 オムロン株式会社 情報処理装置
US10990547B2 (en) 2019-08-11 2021-04-27 Xilinx, Inc. Dynamically reconfigurable networking using a programmable integrated circuit
US11232053B1 (en) 2020-06-09 2022-01-25 Xilinx, Inc. Multi-host direct memory access system for integrated circuits
US11539770B1 (en) 2021-03-15 2022-12-27 Xilinx, Inc. Host-to-kernel streaming support for disparate platforms
US11456951B1 (en) 2021-04-08 2022-09-27 Xilinx, Inc. Flow table modification for network accelerators
US11606317B1 (en) 2021-04-14 2023-03-14 Xilinx, Inc. Table based multi-function virtualization
CN115658571B (zh) * 2022-11-16 2023-02-28 浪潮电子信息产业股份有限公司 一种数据传输方法、装置、电子设备及介质

Family Cites Families (62)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4271466A (en) * 1975-02-20 1981-06-02 Panafacom Limited Direct memory access control system with byte/word control of data bus
US4313160A (en) * 1976-08-17 1982-01-26 Computer Automation, Inc. Distributed input/output controller system
JPS6349946A (ja) * 1986-08-20 1988-03-02 Canon Inc 演算処理装置
DE3851858T2 (de) * 1987-06-05 1995-05-24 Mitsubishi Electric Corp Digitaler Signalprozessor.
JPH077375B2 (ja) * 1988-06-17 1995-01-30 日本電気株式会社 バス制御方式
US5140679A (en) * 1988-09-14 1992-08-18 National Semiconductor Corporation Universal asynchronous receiver/transmitter
JPH03122745A (ja) * 1989-10-05 1991-05-24 Mitsubishi Electric Corp Dma制御方式
US5179661A (en) * 1989-10-30 1993-01-12 Hayes Microcomputer Products, Inc. Method and apparatus for serial data flow control
JPH04236649A (ja) 1991-01-21 1992-08-25 Matsushita Electric Ind Co Ltd データ転送装置
US5379381A (en) * 1991-08-12 1995-01-03 Stratus Computer, Inc. System using separate transfer circuits for performing different transfer operations respectively and scanning I/O devices status upon absence of both operations
US5444855A (en) * 1992-04-17 1995-08-22 International Business Machines Corporation System for guaranteed CPU bus access by I/O devices monitoring separately predetermined distinct maximum non CPU bus activity and inhibiting I/O devices thereof
JPH0683638A (ja) * 1992-09-03 1994-03-25 Nec Ic Microcomput Syst Ltd 割込み制御回路
US6026443A (en) * 1992-12-22 2000-02-15 Sun Microsystems, Inc. Multi-virtual DMA channels, multi-bandwidth groups, host based cellification and reassembly, and asynchronous transfer mode network interface
US5644787A (en) * 1993-08-03 1997-07-01 Seiko Epson Corporation Apparatus for controlling data transfer between external interfaces through buffer memory using table data having transfer start address transfer count and unit selection parameter
US5687389A (en) * 1993-12-22 1997-11-11 Adaptec, Inc. System for controlling an automatic read operation of read cache control circuit in a disk drive controller utilizing a start counter, a working counter, and a sector counter
US5805927A (en) * 1994-01-28 1998-09-08 Apple Computer, Inc. Direct memory access channel architecture and method for reception of network information
US5608889A (en) * 1994-08-17 1997-03-04 Ceridian Corporation DNA controller with wrap-around buffer mode
US5548587A (en) * 1994-09-12 1996-08-20 Efficient Networks, Inc. Asynchronous transfer mode adapter for desktop applications
US6351780B1 (en) * 1994-11-21 2002-02-26 Cirrus Logic, Inc. Network controller using held data frame monitor and decision logic for automatically engaging DMA data transfer when buffer overflow is anticipated
US5628026A (en) * 1994-12-05 1997-05-06 Motorola, Inc. Multi-dimensional data transfer in a data processing system and method therefor
US5768622A (en) * 1995-08-18 1998-06-16 Dell U.S.A., L.P. System for preemptive bus master termination by determining termination data for each target device and periodically terminating burst transfer to device according to termination data
KR0160193B1 (ko) * 1995-12-30 1998-12-15 김광호 직접메모리접근 제어장치
JP3492139B2 (ja) * 1996-03-04 2004-02-03 松下電器産業株式会社 バスを介したデータ転送方法およびバスマスタ制御装置
US6125425A (en) * 1996-03-29 2000-09-26 Intel Corporation Memory controller performing a mid transaction refresh and handling a suspend signal
US5991817A (en) * 1996-09-06 1999-11-23 Cisco Systems, Inc. Apparatus and method for a network router
US6148326A (en) * 1996-09-30 2000-11-14 Lsi Logic Corporation Method and structure for independent disk and host transfer in a storage subsystem target device
DE69735614T2 (de) * 1996-10-18 2006-09-07 Matsushita Electric Industrial Co., Ltd., Kadoma Datenübertragungsgerät und Datenübertragungssystem zur Arbitrierung von mehreren E/A Ports in DMA
US6702056B2 (en) * 1997-08-06 2004-03-09 Takata Corporation Seatbelt retractor
US6260082B1 (en) * 1998-12-23 2001-07-10 Bops, Inc. Methods and apparatus for providing data transfer control
US6330623B1 (en) * 1999-01-08 2001-12-11 Vlsi Technology, Inc. System and method for maximizing DMA transfers of arbitrarily aligned data
JP2000267988A (ja) 1999-03-19 2000-09-29 Canon Inc Dmaコントローラおよびdmaコントローラの異常検出方法
GB9909196D0 (en) * 1999-04-21 1999-06-16 Texas Instruments Ltd Transfer controller with hub and ports architecture
KR20010057244A (ko) * 1999-12-20 2001-07-04 윤종용 직접 메모리 억세스 버스 제어 방법
JP3761061B2 (ja) * 2000-04-28 2006-03-29 シャープ株式会社 データ処理システムおよびデータ処理方法
JP2002041445A (ja) * 2000-05-19 2002-02-08 Matsushita Electric Ind Co Ltd 高性能dmaコントローラ
US6778548B1 (en) * 2000-06-26 2004-08-17 Intel Corporation Device to receive, buffer, and transmit packets of data in a packet switching network
US7010614B2 (en) * 2000-07-05 2006-03-07 International Business Machines Corporation System for computing cumulative amount of data received by all RDMA to determine when a complete data transfer has arrived at receiving device
US6922741B2 (en) * 2002-02-01 2005-07-26 Intel Corporation Method and system for monitoring DMA status
JP3785373B2 (ja) * 2002-03-01 2006-06-14 シャープ株式会社 通信制御回路
DE10213839B4 (de) * 2002-03-27 2016-11-03 Advanced Micro Devices, Inc. DMA-Mechanismus für einen Hochgeschwindigkeitspaketbus
US6898723B2 (en) * 2002-04-01 2005-05-24 Mitac International Corp. Method for verifying clock signal frequency of computer sound interface that involves checking whether count value of counter is within tolerable count range
JP4686104B2 (ja) 2002-04-22 2011-05-18 富士通セミコンダクター株式会社 Dmaコントローラ
JP2004029898A (ja) * 2002-06-21 2004-01-29 Renesas Technology Corp データプロセッサ
US7664909B2 (en) * 2003-04-18 2010-02-16 Nextio, Inc. Method and apparatus for a shared I/O serial ATA controller
US7133943B2 (en) * 2003-02-26 2006-11-07 International Business Machines Corporation Method and apparatus for implementing receive queue for packet-based communications
JP2004287654A (ja) 2003-03-20 2004-10-14 Ricoh Co Ltd Dma転送装置
JP2004343205A (ja) * 2003-05-13 2004-12-02 Ricoh Co Ltd コントローラ装置、画像形成装置、メモリ制御方法、コンピュータプログラム及び記録媒体
US7323438B2 (en) * 2003-06-13 2008-01-29 Procter & Gamble Cleansing article with improved handleability
JP2005071104A (ja) * 2003-08-25 2005-03-17 Murata Mach Ltd データ転送制御装置
WO2005022390A1 (ja) * 2003-08-28 2005-03-10 Renesas Technology Corp. マイクロコンピュータ及びシステムプログラムの開発方法
JP2005115464A (ja) 2003-10-03 2005-04-28 Fuji Xerox Co Ltd データ処理装置およびデータ制御ユニット
US7475271B2 (en) * 2003-10-14 2009-01-06 Broadcom Corporation Exponential channelized timer
JP2005135098A (ja) 2003-10-29 2005-05-26 Denso Corp ダイレクト・メモリ・アクセス・システム
KR100633742B1 (ko) * 2003-12-23 2006-10-13 한국전자통신연구원 주변 장치로부터 데이터 전송 크기를 자동으로 갱신하는직접 메모리 액세스 제어 장치 및 방법
EP1564643A3 (en) 2004-02-11 2006-09-20 Intracom S.A. Hellenic Telecommunications & Electronics Industry Synthesizable vhdl model of a multi-channel dma-engine core for embedded bus systems
JP2005250683A (ja) * 2004-03-02 2005-09-15 Renesas Technology Corp マイクロコンピュータ
KR20050094989A (ko) * 2004-03-24 2005-09-29 삼성전자주식회사 디엠에이 설정값의 설정방법 및 장치
US7577772B2 (en) * 2004-09-08 2009-08-18 Qlogic, Corporation Method and system for optimizing DMA channel selection
JP2006293927A (ja) 2005-04-14 2006-10-26 Toshiba Corp ダイレクトメモリアクセス制御装置及びダイレクトメモリアクセス制御装置を含むシステムlsi
US7415549B2 (en) * 2005-09-27 2008-08-19 Intel Corporation DMA completion processing mechanism
US7644198B2 (en) * 2005-10-07 2010-01-05 International Business Machines Corporation DMAC translation mechanism
US20080313363A1 (en) * 2006-02-20 2008-12-18 Freescale Semiconductor, Inc. Method and Device for Exchanging Data Using a Virtual Fifo Data Structure

Also Published As

Publication number Publication date
KR20070089556A (ko) 2007-08-31
US20070204074A1 (en) 2007-08-30
CN101030182A (zh) 2007-09-05
CN100592273C (zh) 2010-02-24
JP2007233522A (ja) 2007-09-13
US7752349B2 (en) 2010-07-06
EP1826677A1 (en) 2007-08-29
KR100775406B1 (ko) 2007-11-12

Similar Documents

Publication Publication Date Title
JP4908017B2 (ja) Dmaデータ転送装置及びdmaデータ転送方法
US8225027B2 (en) Mapping address bits to improve spread of banks
US6233641B1 (en) Apparatus and method of PCI routing in a bridge configuration
US8850101B2 (en) System and method to reduce memory access latencies using selective replication across multiple memory ports
US7496699B2 (en) DMA descriptor queue read and cache write pointer arrangement
CN109558344B (zh) 一种适用于网络传输的dma传输方法及dma控制器
JP2012523619A (ja) データストレージデバイスのコマンド及び割り込みのグループ化
US9256555B2 (en) Method and system for queue descriptor cache management for a host channel adapter
JP2011243142A (ja) 通信制御装置、データ通信方法及びプログラム
CN109558250A (zh) 一种基于fpga的通信方法、设备、主机及异构加速系统
US9639473B1 (en) Utilizing a cache mechanism by copying a data set from a cache-disabled memory location to a cache-enabled memory location
CN111181874B (zh) 一种报文处理方法、装置及存储介质
JP4855864B2 (ja) ダイレクトメモリアクセスコントローラ
JP2008541276A (ja) 同時読み出し応答確認拡張ダイレクト・メモリ・アクセス・ユニット
US20160098212A1 (en) Information processor apparatus, memory control device, and control method
CN117033275A (zh) 加速卡间的dma方法、装置、加速卡、加速平台及介质
US10489318B1 (en) Scatter-gather approach for parallel data transfer in a mass storage system
CN114238156A (zh) 处理系统以及操作处理系统的方法
CN107085557A (zh) 直接存储器访问系统以及相关方法
JP5772132B2 (ja) データ転送装置、データ転送方法および情報処理装置
JP4431492B2 (ja) 複数のコヒーレンシー・グラニュールをサポートするデータ転送ユニット
US5712975A (en) Input/output cell in parallel computer and parallel computer system
US11327909B1 (en) System for improving input / output performance
CN103377033B (zh) 运算核心及其指令管理方法
JP4774099B2 (ja) 演算処理装置、情報処理装置及び演算処理装置の制御方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080605

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110322

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20110523

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20110523

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20110906

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111201

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

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20111209

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

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

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

Free format text: PAYMENT UNTIL: 20150120

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4908017

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees