DMA転送を行うDMA装置であって、ディスクリプタに対応するデータを転送するデータ転送手段と、前記データ転送手段によるデータ転送処理を制御する制御手段とを有し、前記制御手段は、あるディスクリプタに対応するDMA転送処理が完了する前に、このディスクリプタの後続のディスクリプタに関する一部の処理を開始させるDMA装置。少なくともディスクリプタを蓄積するバッファをさらに有し、前記制御手段は、あるディスクリプタに対応するDMA転送処理が完了する前に、このディスクリプタの後続のディスクリプタを外部から読み出し、読み出されたディスクリプタを前記バッファに蓄積する請求項1に記載のDMA装置。前記バッファに蓄積されたディスクリプタに基づいて、あるディスクリプタに対応するDMA転送処理が完了する前に、このディスクリプタの後続のディスクリプタに関するミスアライン計算を行うミスアライン計算手段をさらに有する請求項1に記載のDMA装置。前記バッファは、読出し側バッファと、書込み側バッファとを含み、前記読出し側バッファは、少なくとも、転送元アドレス及び転送長を蓄積し、前記書込み側バッファは、少なくとも、転送先アドレス及び転送長を蓄積する請求項3に記載のDMA装置。中央演算装置と、主記憶装置と、DMA装置とを備え、前記DMA装置は、前記主記憶装置から読み出されたディスクリプタに対応するデータを転送するデータ転送手段と、前記データ転送手段によるデータ転送処理を制御する制御手段とを有し、前記制御手段は、あるディスクリプタに対応するDMA転送処理が完了する前に、このディスクリプタの後続のディスクリプタに関する一部の処理を開始させる情報処理装置。DMA転送を行うデータ転送方法であって、ディスクリプタに対応するデータを転送するステップと、前記ディスクリプタに対応するDMA転送処理が完了する前に、このディスクリプタの後続のディスクリプタを読み出すステップと、読み出されたディスクリプタをバッファに蓄積するステップとを有するデータ転送方法。本発明は、比較的簡易な構成で、DMA転送の高速化を実現するDMA装置を提供する。本発明にかかるDMA装置は、DMA転送を行うDMA装置であって、ディスクリプタに対応するデータを転送するデータ転送手段と、前記データ転送手段によるデータ転送処理を制御する制御手段とを有し、前記制御手段は、あるディスクリプタに対応するDMA転送処理が完了する前に、このディスクリプタの後続のディスクリプタに関する一部の処理を開始させる。好適には、少なくともディスクリプタを蓄積するバッファをさらに有し、前記制御手段は、あるディスクリプタに対応するDMA転送処理が完了する前に、このディスクリプタの後続のディスクリプタを外部から読み出し、読み出されたディスクリプタを前記バッファに蓄積する。好適には、前記バッファに蓄積されたディスクリプタに基づいて、あるディスクリプタに対応するDMA転送処理が完了する前に、このディスクリプタの後続のディスクリプタに関するミスアライン計算を行うミスアライン計算手段をさらに有する。好適には、前記バッファは、読出し側バッファと、書込み側バッファとを含み、前記読出し側バッファは、少なくとも、転送元アドレス及び転送長を蓄積し、前記書込み側バッファは、少なくとも、転送先アドレス及び転送長を蓄積する。また、本発明にかかる情報処理装置は、中央演算装置と、主記憶装置と、DMA装置とを備え、前記DMA装置は、前記主記憶装置から読み出されたディスクリプタに対応するデータを転送するデータ転送手段と、前記データ転送手段によるデータ転送処理を制御する制御手段とを有し、前記制御手段は、あるディスクリプタに対応するDMA転送処理が完了する前に、このディスクリプタの後続のディスクリプタに関する一部の処理を開始させる。また、本発明にかかるデータ転送方法は、DMA転送を行うデータ転送方法であって、ディスクリプタに対応するデータを転送するステップと、前記ディスクリプタに対応するDMA転送処理が完了する前に、このディスクリプタの後続のディスクリプタを読み出すステップと、読み出されたディスクリプタをバッファに蓄積するステップとを有する。本発明によれば、比較的簡易な構成で、DMA転送の高速化を実現できる。図1は、情報処理装置1の全体構成を例示する図である。図1に例示するように、情報処理装置1は、DMA装置10、ホストコンピュータ20、記憶装置30、I/O装置40、及びペリフェラルバス50を有する。DMA装置10は、ホストコンピュータ20と、記憶装置30又はI/O装置40との間のDMADirectMemoryAccess転送処理を行う。I/O装置40には、ネットワークを介してデータを送受信する通信装置が含まれる。DMA装置10は、ディスクリプタ制御部12、ディスクリプタバッファ部14、及びDMAコントローラ16を有する。ディスクリプタ制御部12は、本発明にかかる制御手段の一例であり、ディスクリプタの読出しを制御する。ディスクリプタとは、転送対象となるデータを示す情報であり、例えば、転送元又は転送先の先頭アドレスメモリ上のアドレスと、転送データ領域の長さとが含まれている。ディスクリプタバッファ部14は、ディスクリプタ制御部12により読み出されたディスクリプタを蓄積する。DMAコントローラ16は、ディスクリプタ制御部12により読み出されたディスクリプタに基づいて、ディスクリプタに対応するデータを転送する。より詳細には、図1に例示するように、ディスクリプタ制御部12は、ディスクリプタアドレスレジスタ120を含む。ディスクリプタ制御部12は、ディスクリプタアドレスレジスタ120に保持されているアドレスから、ディスクリプタを読み出し、読み出されたディスクリプタに含まれるディスクリプタアドレスで、ディスクリプタアドレスレジスタ120を更新する。すなわち、ディスクリプタ制御部12は、ディスクリプタに含まれるディスクリプタアドレスに基づいて、後続のディスクリプタの先頭アドレスを特定する。本例のディスクリプタ制御部12は、上記構成によって、あるディスクリプタに対応するDMA転送処理の完了前に、このディスクリプタに続く後続のディスクリプタを読み出し、読み出されたディスクリプタをディスクリプタバッファ部14に送る。ディスクリプタバッファ部14は、Readディスクリプタバッファ140と、ミスアライン計算部142と、Writeディスクリプタバッファ144とを含む。Readディスクリプタバッファ140は、本発明にかかる読出し側バッファの一例であり、転送元アドレス及び転送長を蓄積する。Writeディスクリプタバッファ144は、本発明にかかる書込み側バッファの一例であり、転送先アドレス及び転送長を蓄積する。ミスアライン計算部142は、Readディスクリプタバッファ140又はWriteディスクリプタバッファ144に蓄積されているディスクリプタの少なくとも一部に基づいて、ミスアライン計算を行う。すなわち、ミスアライン計算部142は、あるディスクリプタに対応するDMA転送処理の完了前に、このディスクリプタに続く後続のディスクリプタに関するミスアライン計算を行う。DMAコントローラ16は、Read制御部160と、Write制御部162と、データFIFO164とを含む。Read制御部160は、Readディスクリプタバッファ140に蓄積された転送元アドレス及び転送長に基づいて、転送対象となるデータを主記憶装置202から読み出し、読み出されたデータをデータFIFO164に送る。Write制御部162は、Writeディスクリプタバッファ144に蓄積されている転送先アドレス及び転送長に基づいて、データFIFO164に蓄積されているデータを順に転送先に送る。データFIFO164は、転送データ用のバッファである。ホストコンピュータ20は、CPU200、主記憶装置202、及びCPUバス204を有する。CPU200は、中央演算装置である。主記憶装置202は、転送元又は転送先となるメモリである。CPUバス204は、CPU200及び主記憶装置202が接続された伝送路である。図2は、Readディスクリプタバッファ140及びミスアライン計算部142をより詳細に説明する図である。なお、本図では、Readディスクリプタバッファ140の構成を例示しているが、Writeディスクリプタバッファ144も同様の構成である。図2に例示するように、Readディスクリプタバッファ140は、転送元データ領域の先頭アドレスと、転送データ領域の転送長とをバッファリングすると共に、ミスアライン計算部142から出力された計算結果をバッファリングする。ミスアライン計算部142は、Readディスクリプタバッファ140にバッファリングされている先頭アドレス及び転送長を参照して、ミスアライン計算を行う。ミスアライン計算では、最初のアクセスのバースト長、2番目以降のアクセスの有無、最後のアクセスのバースト長、及び、転送データのバイト位置を整列するアライナの制御情報が計算される。同様に、Writeディスクリプタバッファ144も、転送先データ領域の先頭アドレスと、転送データ領域の転送長と、ミスアライン計算部142から出力された計算結果とをバッファリングする。図3は、主記憶装置202に格納されているディスクリプタ及びDMA転送データ領域を模式的に説明する図である。図3に例示するように、主記憶装置202には、複数の転送データ領域転送元データ領域及び転送先データ領域と、それぞれの転送データ領域に対応するディスクリプタとが格納されている。本例では、ディスクリプタ1が転送元データ領域1及び転送先データ領域1に対応し、ディスクリプタ2が転送元データ領域2及び転送先データ領域2に対応する。ディスクリプタには、転送元データ領域の先頭アドレス、転送先データ領域の先頭アドレス、転送データ領域の長さすなわち、転送長、及び、次のディスクリプタアドレスが含まれている。図4Aは、比較例におけるDMA転送処理のタイムチャートであり、図4Bは、実施例1におけるDMA転送処理のタイムチャートである。なお、本比較例は、特許文献1に開示された方法である。図4Aに示すように、比較例では、1つのディスクリプタに対応するDMA転送を複数に分割し、複数のDMAコントローラで転送する。これにより、主記憶装置の応答時間が長くても、時間あたりの情報転送量を増大化させる。しかしながら、1つのディスクリプタに対応する転送データ領域が小さく、転送時間が短い場合には、性能の改善が少ない。また、DMAコントローラが複数必要であるため、回路規模が増大する。また、複数のDMAコントローラが並行して転送処理を行うため、データの順序を保証できない可能性がある。一方、本実施例1によれば、図4Bに例示するように、あるディスクリプタに対応するDMA転送処理が完了する前に、後続のディスクリプタに関する処理具体的には、ディスクリプタの読出し、ミスアライン計算などを開始するため、DMA転送全体の処理時間が短縮される。特に、ディスクリプタに対応する転送データ領域が小さい場合に、比較例と比べて実施例1は有利である。最後に、ミスアライン計算部142によるミスアライン計算を説明する。転送元データ領域の先頭アドレスをSRCTOPADDRESSと表記し、転送先データ領域の先頭アドレスをDESTINATIONTOPADDRESSと表記し、転送データ領域の長さをTRANSFERLENGTHと表記し、ホストコンピュータによって決められる最大の転送サイズをMAXSIZEと表記する。なお、MAXSIZEは、計算を容易にするため、2のn乗nは整数バイトとする。まず、転送元データ領域について、MAXSIZEの単位で区切られた領域の中における転送元データ領域の先頭アドレスの位置を算出する。図5Aは、MAXSIZEの単位で区切られた領域の中における転送元データ領域の先頭アドレスの位置の算出方法を例示する。なお、図中の0xは16進数であることを表している。ADDRESSINMAXSIZEは、SRCTOPADDRESSと、MAXSIZEにより得られるマスク値以降、MAXSIZEMASKと表記との、ビット単位のANDを計算することで得られる。MAXSIZEMASKは、以下の式により得られる。なお、以降、全ての値は2の補数で表記されており、加算、減算-は2の補数を演算する演算子である。MAXSIZEMASK=MAXSIZE-1ADDRESSINMAXSIZE=SRCTOPADDRESSANDMAXSIZEMASK次に、2番目以降のアクセスの有無を求める。まず、MAXSIZEの単位で区切られた領域の中の残りの転送サイズを算出する。図5Bに、REMAININMAXSIZEの領域を例示する。REMAININMAXSIZEは、以下の式で求められる。REMAININMAXSIZE=MAXSIZE-ADDRESSINMAXSIZE2番目以降のアクセスは、MAXSIZEの単位で区切られた領域を超えて転送が継続される場合に存在する。よって、以下の式が真trueのときに存在する。REMAININMAXSIZE<TRANSFERLENGTH次に、最初のアクセスのバースト長の計算について説明する。最初のアクセスのバースト長を算出するため、まず、BUSSIZEとBUSSIZEMASKについて定義する。BUSSIZEはバス幅ここでは8バイトのため8のことであり、2のn乗nは整数のバイト数で表現できる値とする。BUSSIZEMASKは、バスのバイト位置を区別するためのアドレスを取り出すためのマスク値で、以下のように計算できる。BUSSIZEMASK=BUSSIZE-1この値を用い、かつ、2番目以降のアクセスが存在する場合と存在しない場合とに分け、最初のアクセスのバースト長を求める。2番目以降のアクセスが存在する場合は、転送元データ領域の最初のアクセスのバースト長=REMAININMAXSIZE-1/BUSSIZE1となる。除算はBUSSIZEが2のn乗nは整数のため、論理右シフト演算により、ハードウェアに実装する場合、非常に容易に得ることができる。この具体例を図6Aに示す。次に、2番目以降のアクセスが存在しない場合のバースト長を算出する。算出の具体例を図6Bに示す。まず、2番目以降のアクセスが存在する場合と同様に、図6AにおけるREMAININMAXSIZEだけアクセスした場合のバースト長を計算する。REMAININMAXSIZEのアクセスのバースト長=REMAININMAXSIZE-1/BUSSIZE1この値から、最後の転送データ以降の部分を差し引く。差し引き分は、以下のように計算される。最後の転送データ以降のデータの差し引き分=MAXSIZE-SRCTOPADDRESSTRANSFERLENGTHANDMAXSIZEMASK/BUSSIZEこれらを用いて、バースト長は以下のように計算できる。転送元データ領域の最初のアクセスのバースト長=REMAININMAXSIZEのアクセスのバースト長-最後の転送データ以降のデータの差し引き分次に、最後のアクセスのバースト長について計算する。最後のアクセスのバースト長の具体的な計算例を図7に示す。最後のアクセスのバースト長については以下の式により算出することができる。転送元データ領域の最後のアクセスのバースト長=SRCTOPADDRESSTRANSFERLENGTH-1ANDMAXSIZEMASK/BUSSIZE以上で転送元データ領域に対するミスアラインの計算について説明した。転送先データ領域については、以上の過程について、SRCTOPADDRESSをDESTINATIONTOPADDRESSに置き換えて計算することで同様に算出することができる。次に、転送データのバイト位置を整列するアライナの制御情報であるが、これは、以下の式により得られる。アライナの制御情報=DESTINATIONTOPADDRESSANDBUSSIZEMASK-SRCTOPADDRESSANDBUSSIZEMASKこの制御情報を用いて、転送先のアドレスに応じて転送先のデータバスの適切な位置にデータを配置して転送を行うよう制御される。