(57)【要約】【課題】複雑な転送エンジンを用いることなく、多数の転送モードに対応可能なＤＭＡコントローラを提供する。【解決手段】プリプロセッサ３４を設け、これにより転送モードに応じて指示パケットを生成し、メモリ・周辺装置転送エンジン１８及び周辺装置・メモリ転送エンジン２０に与える。指示パケットは、転送方向識別パラメータ、転送開始メモリアドレス、アドレス増減フラグ、タグ識別フラグ、タグ転送識別フラグ、及び転送ワード数を含む。転送エンジン１８，２０は、指示パケットに応じてメモリ及び周辺装置間でデータを転送する。【選択図】図１
2006309561.tif 000002
【特許請求の範囲】
【請求項１】
互いに異なる複数の転送モードに応じて指示パケットを生成するプリプロセッサと、
メモリと周辺装置との間に接続されるバッファと、
前記プリプロセッサから与えられた指示パケットに応じて、メモリ及び周辺装置の間でデータを転送するよう前記バッファを制御する転送エンジンとを備えたことを特徴とするダイレクトメモリアクセスコントローラ。
【請求項２】
請求項１に記載のダイレクトメモリアクセスコントローラであって、
前記指示パケットは、メモリから周辺装置への転送方向又は周辺装置からメモリへの転送方向を示す転送方向識別情報と、データの転送を開始すべきメモリのアドレスを示す転送開始メモリアドレスと、１回に転送すべきデータのワード数を示す転送ワード数とを含み、
前記転送エンジンは、前記転送方向識別情報がメモリから周辺装置への転送方向を示すとき、メモリからのデータの読み出しを前記転送開始メモリアドレスから開始し、前記転送ワード数のデータをメモリから読み出して前記バッファに書き込み、前記バッファからデータを読み出して周辺装置に書き込むように、前記バッファを制御し、前記転送方向識別情報が周辺装置からメモリへの転送方向を示すとき、前記転送ワード数のデータを周辺装置から読み出して前記バッファに書き込み、メモリへのデータの書き込みを前記転送開始メモリアドレスから開始し、前記バッファからデータを読み出してメモリに書き込むように、前記バッファを制御することを特徴とするダイレクトメモリアクセスコントローラ。
【請求項３】
請求項２に記載のダイレクトメモリアクセスコントローラであって、
前記転送エンジンは、データの読み出しを終了したとき、その次にデータを読み出すべき転送開始メモリアドレスを前記プリプロセッサに与え、データの書き込みを終了したとき、その次にデータを書き込むべき転送開始アドレスを前記プリプロセッサに与えることを特徴とするダイレクトメモリアクセスコントローラ。
【請求項４】
請求項２又は請求項３に記載のダイレクトメモリアクセスコントローラであって、
前記指示パケットはさらに、タグの読み込みか否かを示すタグ識別情報を含み、
前記転送エンジンは、前記タグ識別情報がタグの読み込みを示すとき、タグをメモリ又は周辺装置から読み出して前記プリプロセッサに与え、
前記プリプロセッサは、与えられたタグに基づいて転送開始メモリアドレス及び転送ワード数を設定することを特徴とするダイレクトメモリアクセスコントローラ。
【請求項５】
請求項４に記載のダイレクトメモリアクセスコントローラであって、
前記指示パケットはさらに、タグの転送か否かを示すタグ転送識別情報を含み、
前記転送エンジンは、前記タグ転送識別情報がタグの転送を示すとき、メモリ又は周辺装置から読み出されたタグを前記バッファに書き込むことを特徴とするダイレクトメモリアクセスコントローラ。
【請求項６】
請求項１〜請求項５のいずれか１項に記載のダイレクトメモリアクセスコントローラであって、
前記転送エンジンは、
メモリから周辺装置にデータを転送するよう前記バッファを制御する第１の転送エンジンと、
周辺装置からメモリにデータを転送するよう前記バッファを制御する第２の転送エンジンとを含むことを特徴とするダイレクトメモリアクセスコントローラ。
【請求項７】
メモリと周辺装置との間に接続されるバッファと、前記バッファを制御する転送エンジンとを備えたダイレクトメモリアクセスコントローラによるデータ転送方法であって、
互いに異なる複数の転送モードに応じて指示パケットを生成し、前記転送エンジンに与えるステップと、
前記転送エンジンにより、与えられた指示パケットに応じて、メモリから周辺装置にデータを転送するステップと、
前記転送エンジンにより、与えられた指示パケットに応じて、周辺装置からメモリにデータを転送するステップとを備えたことを特徴とするデータ転送方法。
【請求項８】
請求項７に記載のデータ転送方法であって、
前記指示パケットは、メモリから周辺装置への転送方向又は周辺装置からメモリへの転送方向を示す転送方向識別情報と、データの転送を開始すべきメモリのアドレスを示す転送開始メモリアドレスと、１回に転送すべきデータのワード数を示す転送ワード数とを含み、
前記転送エンジンによるデータを転送するステップは、前記転送方向識別情報がメモリから周辺装置への転送方向を示すとき、メモリからのデータの読み出しを前記転送開始メモリアドレスから開始し、前記転送ワード数のデータをメモリから読み出して前記バッファに書き込み、前記バッファからデータを読み出して周辺装置に書き込み、前記転送方向識別情報が周辺装置からメモリへの転送方向を示すとき、前記転送ワード数のデータを周辺装置から読み出して前記バッファに書き込み、メモリへのデータの書き込みを前記転送開始メモリアドレスから開始し、前記バッファからデータを読み出してメモリに書き込むことを特徴とするデータ転送方法。
【請求項９】
請求項８に記載のデータ転送方法であってさらに、
前記転送エンジンにより、データの読み出しを終了したとき、その次にデータを読み出すべき転送開始メモリアドレスを生成するステップと、
前記転送エンジンにより、データの書き込みを終了したとき、その次にデータを書き込むべき転送開始メモリアドレスを生成するステップとを備えたことを特徴とするデータ転送方法。
【請求項１０】
請求項８又は請求項９に記載のデータ転送方法であって、
前記指示パケットはさらに、タグの読み込みか否かを示すタグ識別情報を含み、
前記データ転送方法はさらに、
前記転送エンジンにより、前記タグ識別情報がタグの読み込みを示すとき、タグをメモリから読み出すステップと、
前記転送エンジンにより、前記タグ識別情報がタグの読み込みを示すとき、タグを周辺装置から読み出すステップと、
読み出されたタグに基づいて転送開始メモリアドレス及び転送ワード数を設定するステップとを備えたことを特徴とするデータ転送方法。
【請求項１１】
請求項１０に記載のデータ転送方法であって、
前記指示パケットはさらに、タグの転送か否かを示すタグ転送識別情報を含み、
前記データ転送方法はさらに、
前記転送エンジンにより、前記タグ転送識別情報がタグの転送を示すとき、メモリから読み出されたタグを前記バッファに書き込むステップと、
前記転送エンジンにより、前記タグ転送識別情報がタグの転送を示すとき、周辺装置から読み出されたタグを前記バッファに書き込むステップとを備えたことを特徴とするデータ転送方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ダイレクトメモリアクセス（ＤＭＡ）コントローラ及びそのデータ転送方法に関し、さらに詳しくは、複数の転送モードに対応したＤＭＡコントローラ及びそのデータ転送方法に関する。
【背景技術】
【０００２】
ＤＭＡコントローラは、マザーボード上にあるメモリと、フレキシブルディスクドライブ、ハードディスクドライブ、プリンタなどの周辺装置との間で、ＣＰＵ(Central Possessing Unit)を経由することなくデータを転送するためのＬＳＩ(Large Scale Integrated circuit)である。ＤＭＡコントローラは一般に複数の通信経路（ＤＭＡチャネル）を有し、１つの機器が１つのチャネルを占有する。
【０００３】
多チャネルに対応するＤＭＡコントローラでは、ＤＭＡ要求／承認ハンドラがＤＭＡチャネルの仲裁（アービトレーション）を行う。具体的には、ＤＭＡ要求／承認ハンドラが要求を受け付けてサービスを提供すべきＤＭＡチャネルを決定した後、共通の転送エンジンがその決定されたＤＭＡチャネルに対してデータ転送を行う。
【０００４】
転送モードが少ない場合（たとえば２種類程度）、転送エンジンは全ての転送モードに対応可能であるが、転送モードが多い場合（たとえば７種類以上）、転送エンジンは全ての転送モードに対応することは困難である。仮に転送エンジンを全ての転送モードに対応可能に設計したとすると、転送エンジンの回路構成は複雑になり、かつ回路サイズも大きくなるという問題が生じる。
【特許文献１】特開平１１−４５２２５号公報
【特許文献２】特開２０００−２３１５３７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
本発明の目的は、複雑な転送エンジンを用いることなく、複数の転送モードに対応可能なＤＭＡコントローラ及びそのデータ転送方法を提供することである。
【課題を解決するための手段及び発明の効果】
【０００６】
本発明によるＤＭＡコントローラは、プリプロセッサと、バッファと、転送エンジンとを備える。プリプロセッサは、互いに異なる複数の転送モードに応じて指示パケットを生成する。バッファは、メモリと周辺装置との間に接続される。転送エンジンは、プリプロセッサから与えられた指示パケットに応じて、メモリ及び周辺装置の間でデータを転送するようバッファを制御する。
【０００７】
このＤＭＡコントローラでは、転送モードに応じてプリプロセッサにより指示パケットが生成され、転送エンジンに与えられる。したがって、転送エンジンは単に指示パケットに従ってデータを転送しさえすればよい。よって、このＤＭＡコントローラは、複雑な転送エンジンを用いることなく、複数の転送モードに対応することができる。
【０００８】
好ましくは、指示パケットは、メモリから周辺装置への転送方向又は周辺装置からメモリへの転送方向を示す転送方向識別情報と、データの転送を開始すべきメモリのアドレスを示す転送開始メモリアドレスと、１回に転送すべきデータのワード数を示す転送ワード数とを含む。転送エンジンは、転送方向識別情報がメモリから周辺装置への転送方向を示すとき、メモリからのデータの読み出しを転送開始メモリアドレスから開始し、転送ワード数のデータをメモリから読み出してバッファに書き込み、バッファからデータを読み出して周辺装置に書き込むように、バッファを制御し、転送方向識別情報が周辺装置からメモリへの転送方向を示すとき、転送ワード数のデータを周辺装置から読み出してバッファに書き込み、メモリへのデータの書き込みを転送開始メモリアドレスから開始し、バッファからデータを読み出してメモリに書き込むように、バッファを制御する。
【０００９】
この場合、指示パケットに含まれる転送ワード数分のデータがメモリ及び周辺装置の間で転送されるので、転送エンジンはバルク転送及びスライス転送の区別を必要としない。
【００１０】
好ましくは、転送エンジンは、データの読み出しを終了したとき、その次にデータを読み出すべき転送開始メモリアドレスをプリプロセッサに与え、データの書き込みを終了したとき、その次にデータを書き込むべき転送開始メモリアドレスをプリプロセッサに与える。
【００１１】
この場合、転送エンジンからプリプロセッサに次の転送開始メモリアドレスが与えられ、次のデータ転送のためにプリプロセッサから転送エンジンに与えられる。したがって、データはスライスされて転送される。
【００１２】
好ましくは、指示パケットはさらに、タグの読み込みか否かを示すタグ識別情報を含む。転送エンジンは、タグ識別情報がタグの読み込みを示すとき、タグをメモリ又は周辺装置から読み出してプリプロセッサに与える。プリプロセッサは、与えられたタグに基づいて転送開始メモリアドレス及び転送ワード数を設定する。
【００１３】
この場合、タグがメモリ又は周辺装置から読み出され、プリプロセッサに与えられる。タグに記述された転送開始メモリアドレスからデータの読み出し又は書き込みが開始され、また、タグに記述された転送ワード数分のデータがメモリ及び周辺装置の間で転送される。
【００１４】
好ましくは、指示パケットはさらに、タグの転送か否かを示すタグ転送識別情報を含む。転送エンジンは、タグ転送識別情報がタグの転送を示すとき、メモリ又は周辺装置から読み出されたタグをバッファに書き込む。
【００１５】
この場合、メモリ又は周辺装置から読み出されたタグはバッファに書き込まれるので、タグもデータと一緒にメモリ及び周辺装置の間で転送される。
【００１６】
好ましくは、転送エンジンは、第１及び第２の転送エンジンを含む。第１の転送エンジンは、メモリから周辺装置にデータを転送するようバッファを制御する。第２の転送エンジンは、周辺装置からメモリにデータを転送するようバッファを制御する。
【００１７】
この場合、転送エンジンが２つに分割されているため、メモリ側のバスプロトコルと周辺装置側のバスプロトコルが異なっていても、各転送エンジンは複雑にならない。
【００１８】
一方、本発明によるデータ転送方法は、メモリと周辺装置との間に接続されるバッファと、バッファを制御する転送エンジンとを備えたＤＭＡコントローラによるデータ転送方法であって、互いに異なる複数の転送モードに応じて指示パケットを生成し、転送エンジンに与えるステップと、転送エンジンにより、与えられた指示パケットに応じて、メモリから周辺装置にデータを転送するステップと、転送エンジンにより、与えられた指示パケットに応じて、周辺装置からメモリにデータを転送するステップとを備える。
【００１９】
このデータ転送方法では、転送モードに応じて指示パケットが生成され、転送エンジンに与えられる。したがって、転送エンジンは単に指示パケットに従ってデータを転送しさえすればよい。よって、このデータ転送方法は、複雑な転送エンジンを用いることなく、複数の転送モードに対応することができる。
【００２０】
好ましくは、指示パケットは、メモリから周辺装置への転送方向又は周辺装置からメモリへの転送方向を示す転送方向識別情報と、データの転送を開始すべきメモリのアドレスを示す転送開始メモリアドレスと、１回に転送すべきデータのワード数を示す転送ワード数とを含む。転送エンジンによるデータを転送するステップは、転送方向識別情報がメモリから周辺装置への転送方向を示すとき、メモリからのデータの読み出しを転送開始メモリアドレスから開始し、転送ワード数のデータをメモリから読み出してバッファに書き込み、バッファからデータを読み出して周辺装置に書き込み、転送方向識別情報が周辺装置からメモリへの転送方向を示すとき、転送ワード数のデータを周辺装置から読み出してバッファに書き込み、メモリへのデータの書き込みを転送開始メモリアドレスから開始し、バッファからデータを読み出してメモリに書き込む。
【００２１】
この場合、指示パケットに含まれる転送ワード数分のデータがメモリ及び周辺装置の間で転送されるので、転送エンジンはバルク転送及びスライス転送の区別を必要としない。
【００２２】
好ましくは、データ転送方法はさらに、転送エンジンにより、データの読み出しを終了したとき、その次にデータを読み出すべき転送開始メモリアドレスを生成するステップと、転送エンジンにより、データの書き込みを終了したとき、その次にデータを書き込むべき転送開始メモリアドレスを生成するステップとを備える。
【００２３】
この場合、転送エンジンからプリプロセッサに次の転送開始メモリアドレスが与えられ、その次のデータ転送のためにプリプロセッサから転送エンジンに与えられる。したがって、データはスライスされて転送される。
【００２４】
好ましくは、指示パケットはさらに、タグの読み込みか否かを示すタグ識別情報を含む。データ転送方法はさらに、転送エンジンにより、タグ識別情報がタグの読み込みを示すとき、タグをメモリから読み出すステップと、転送エンジンにより、タグ識別情報がタグの読み込みを示すとき、タグを周辺装置から読み出すステップと、読み出されたタグに基づいて転送開始メモリアドレス及び転送ワード数を設定するステップとを備える。
【００２５】
この場合、タグがメモリ又は周辺装置から読み出される。タグに記述された転送開始メモリアドレスからデータの読み出し又は書き込みが開始され、また、タグに記述された転送ワード数分のデータがメモリ及び周辺装置の間で転送される。
【００２６】
好ましくは、指示パケットはさらに、タグの転送か否かを示すタグ転送識別情報を含む。データ転送方法はさらに、転送エンジンにより、タグ転送識別情報がタグの転送を示すとき、メモリから読み出されたタグをバッファに書き込むステップと、転送エンジンにより、タグ転送識別情報がタグの転送を示すとき、メモリから読み出されたタグをバッファに書き込むステップとを備える。
【００２７】
この場合、メモリ又は周辺装置から読み出されたタグはバッファに書き込まれるので、タグもデータと一緒にメモリ及び周辺装置の間で転送される。
【発明を実施するための最良の形態】
【００２８】
以下、図面を参照し、本発明の実施の形態を詳しく説明する。図中同一又は相当部分には同一符号を付してその説明は繰り返さない。
【００２９】
図１を参照して、本発明の実施の形態によるＤＭＡコントローラ１０は、転送エンジン制御回路１２と、データバッファ１４と、セレクタ１６及び１７と、メモリ・周辺装置転送エンジン１８と、周辺装置・メモリ転送エンジン２０とを備える。
【００３０】
転送エンジン制御回路１２は、７種類の転送モードに応じてあらかじめ定められた指示パケットを生成して転送エンジン１８又は２０に与える。詳細は後述する。
【００３１】
データバッファ１４は、ＰＬＢ(Processor Local Bus)２２及びＯＰＢ(On-chip Peripheral Bus)２４の間に接続される。ＰＬＢ２２は１２８又は６４ビットのバス幅を有し、メモリ（図示せず）に接続される。ＯＰＢ２４は３２ビットのバス幅を有し、周辺装置（図示せず）に接続される。
【００３２】
セレクタ１６はＰＬＢ２２及びＯＰＢ２４に接続され、かつデータバッファ１４の入力に接続される。セレクタ１６はＰＬＢ２２又はＯＰＢ２４を選択し、その選択されたバス２２又は２４から与えられたデータをデータバッファ１４に与える。セレクタ１７はＰＬＢ２２及びＯＰＢ２４に接続され、かつデータバッファ１４の出力に接続される。セレクタ１７はＰＬＢ２２又はＯＰＢ２４を選択し、データバッファ１４から与えられたデータをその選択されたバス２２又は２４に与える。
【００３３】
メモリ・周辺装置転送エンジン１８は、転送エンジン制御回路１２から与えられた指示パケットに応じて、メモリから周辺装置にデータを転送するようデータバッファ１４及びセレクタ１６，１７を制御する。周辺装置・メモリ転送エンジン２０は、転送エンジン制御回路１２から与えられた指示パケットに応じて、周辺装置からメモリにデータを転送するようデータバッファ１４及びセレクタ１６，１７を制御する。
【００３４】
図２を参照して、転送エンジン制御回路１２は、ＤＭＡ要求／承認ハンドラ２６と、複数の内部レジスタ２８と、セレクタ３０及び３１と、ＯＰＢスレーブ３２と、プリプロセッサ３４とを備える。
【００３５】
ＤＭＡ要求／承認ハンドラ２６は、各チャネルから与えられるＤＭＡ要求信号ＤＲＥＱｘに応じてチャネルからのデータ転送の要求を仲裁し、選択チャネル番号をセレクタ３０及び３１に与え、かつＤＭＡ承認信号ＤＡＣＫｘを当該チャネルに返信する。
【００３６】
内部レジスタ２８はチャネルに対応して設けられる。各内部レジスタ２８は、対応するチャネル用のデータ転送に係る各種パラメータを一時的に記憶する。
【００３７】
セレクタ３０及び３１は、ＤＭＡ要求／承認ハンドラ２６からの選択チャネル番号に応じて１つの内部レジスタ２８を選択する。セレクタ３０は、転送エンジン１８，２０側からフィードバックされたタグ上の転送ワード数Xfer_Count及び次の転送開始メモリアドレスNext_Start_Addressをその選択された内部レジスタ２８に与える。セレクタ３１は、選択された内部レジスタ２８から各種パラメータを読み出してプリプロセッサ３４に与える。
【００３８】
ＯＰＢスレーブ３２は、ＣＰＵ（図示せず）からＯＰＢ２４（図１）経由で与えられた指令に従って、選択された内部レジスタ２８に所定のデータを書き込む。
【００３９】
プリプロセッサ３４は、コントローラ３６と、演算器３８と、転送方向識別パラメータ生成器４０と、転送開始メモリアドレス生成器４２と、アドレス増減フラグ生成器４４と、タグ識別フラグ生成器４６と、タグ転送識別フラグ生成器４８と、転送ワード数生成器５０とを備える。
【００４０】
コントローラ３６は、当該チャネルの内部レジスタ２８から読み出されたパラメータに基づいて７種類の転送モードの中から１つを設定する。演算器３８は、コントローラ３６で設定された転送モードに応じて、当該チャネルの内部レジスタ２８に設定されている転送ワード数（以下「所定スライスサイズ」という）をそのまま転送ワード数生成器５０に与えたり、タグから得られた転送ワード数に１ワード、２ワード又は４ワードを加算したり、タグから得られた転送ワード数等を所定スライスサイズと比較したりする。
【００４１】
転送方向識別パラメータ生成器４０は、当該チャネルの内部レジスタ２８から読み出されたパラメータに基づいて転送方向識別パラメータm2d/d2mを生成する。転送方向識別パラメータm2d/d2mは、メモリから周辺装置への転送方向又は周辺装置からメモリへの転送方向を示す。m2d＝１かつd2m＝０のとき、データはメモリから周辺装置へ転送され、m2d＝０かつd2m＝１のとき、データは周辺装置からメモリへ転送される。
【００４２】
転送開始メモリアドレス生成器４２は、当該チャネルの内部レジスタ２８から読み出されたパラメータに基づいて転送開始メモリアドレスStart_Addressを生成する。転送開始メモリアドレスStart_Addressは、データの転送を開始すべきメモリのアドレスを示す。
【００４３】
アドレス増減フラグ生成器４４は、当該チャネルの内部レジスタ２８から読み出されたパラメータに基づいてアドレス増減フラグAddress_Inc_NDecを生成する。アドレス増減フラグAddress_Inc_NDecは、データを読み出すべき又は書き込むべきアドレスを増加させるか又は減少させるかを示す。Address_Inc_NDec＝１のとき、アドレスはインクリメントされ、Address_Inc_NDec＝０のとき、アドレスはデクリメントされる。
【００４４】
タグ識別フラグ生成器４６は、コントローラ３６に設定された転送モードに応じてタグ識別フラグThis_Is_Tagを生成する。タグ識別フラグThis_Is_Tagは、タグの取り込みか又はデータの転送かを示す。This_Is_Tag＝１のとき、タグが転送エンジン制御回路１２に取り込まれ、This_Is_Tag＝０のとき、データがメモリと周辺装置との間で転送される。
【００４５】
タグ転送識別フラグ生成器４８は、コントローラ３６に設定された転送モードに応じてタグ転送識別フラグTag_Xferを生成する。タグ転送識別フラグTag_Xferは、取り込まれたタグも転送するか否か、つまりデータバッファ１４に書き込むか否かを示す。
【００４６】
転送ワード数生成器５０は、演算器３８による演算結果に応じて転送ワード数Xfer_Countを生成する。転送ワード数Xfer_Countは、１回に転送すべきデータのワード数を示す。
【００４７】
プリプロセッサ３４は、これらのパラメータ等を含む指示パケットをメモリ・周辺装置転送エンジン１８又は周辺装置・メモリ転送エンジン２０に与える。
【００４８】
このＤＭＡコントローラ１０は７種類の転送モード、具体的には、（１）バルクモード、（２）スライスモード、（３）チェーンモードＣ１、（４）チェーンモードＣ２、（５）チェーンモードＣ３、（６）チェーンモードＣ４、及び（７）チェーンモードＣ５を有する。以下、これら転送モードの動作を１つずつ説明する。
【００４９】
（１）バルクモード
本モードでは、データがスライスされることなく一括して転送される。詳細は次のとおり。
【００５０】
m2d＝１，d2m＝０又はm2d＝０，d2m＝１の転送方向識別パラメータが当該チャネルの内部レジスタ２８から読み出され、転送方向識別パラメータ生成器４０に設定される。また、転送開始メモリアドレスStart_Addressが当該チャネルの内部レジスタ２８から読み出され、転送開始メモリアドレス生成器４２に設定される。また、Address_Inc_NDec＝１又は０のアドレス増減フラグが当該チャネルの内部レジスタ２８から読み出され、アドレス増減フラグ生成器４４に設定される。また、コントローラ３６がバルクモードを検出し、これに応じて、This_Is_Tag＝０のタグ識別フラグがタグ識別フラグ生成器４６に設定され、かつTag_Xfer＝０のタグ転送識別フラグがタグ転送識別フラグ生成器４８に設定される。さらに、転送ワード数Xfer_Countが当該チャネルの内部レジスタ２８から読み出され、演算器３８で変更されることなく、そのまま転送ワード数生成器５０に設定される。
【００５１】
プリプロセッサ３４はこれらのパラメータ等を含む指示パケットを、m2d＝１，d2m＝０の場合はメモリ・周辺装置転送エンジン１８に与え、m2d＝０，d2m＝１の場合は周辺装置・メモリ転送エンジン２０に与える。
【００５２】
図３（ａ）に示すように、メモリ・周辺装置転送エンジン１８は、転送ワード数Xfer_Count分のバルクデータをメモリからセレクタ１６経由でデータバッファ１４に書き込み、かつデータバッファ１４から読み出したデータをセレクタ１７経由で周辺装置に送出する。メモリからのデータの読み出しは、転送開始メモリアドレスStart_Addressから開始し、アドレスは、Address_Inc_NDec＝１の場合は１つずつ増加され、Address_Inc_NDec＝０の場合は１つずつ減少される。
【００５３】
一方、周辺装置・メモリ転送エンジン２０は、転送ワード数Xfer_Count分のバルクデータを周辺装置からセレクタ１６経由でデータバッファ１４に書き込み、かつデータバッファ１４から読み出したデータをセレクタ１７経由でメモリに書き込む。メモリへのデータの書き込みは、転送開始メモリアドレスStart_Addressから開始し、アドレスは、Address_Inc_NDec＝１の場合は１つずつ増加され、Address_Inc_NDec＝０の場合は１つずつ減少される。
【００５４】
（２）スライスモード
本モードでは、データがｎワードずつｍ個にスライスされ、転送される。ここでも、転送方向識別パラメータm2d/m2d、転送開始メモリアドレスStart_Address、アドレス増減フラグAddress_Inc_NDec、タグ識別フラグThis_Is_Tag、タグ転送識別フラグTag_Xfer＝０、及び転送ワード数Xfer_Countは、上記と同様に設定される。
【００５５】
ただし、図３（ｂ）に示すように、最初のスライスデータについては、ＣＰＵから与えられた転送開始メモリアドレスStart_Addressから転送が開始されるが、２番目以降のスライスデータについては、転送エンジン１８，２０からフィードバックされた次の転送開始メモリアドレスNext_Start_Addressから転送が開始される。したがって本モードでは、転送エンジン１８，２０は、１つのスライスデータを転送し終えた後、最終アドレスに１を加算し、次の転送開始メモリアドレスNext_Start_Addressとして転送エンジン制御回路１２に返送する。この次の転送開始メモリアドレスNext_Start_Addressは、転送開始メモリアドレスStart_Addressとして当該チャネルの内部レジスタ２８に書き込まれる。
【００５６】
この場合、図３（ｂ）に示すように、転送エンジン１８，２０は、データを転送ワード数Xfer_Countごとにスライスしてメモリ及び周辺装置間で転送する。
【００５７】
（３）チェーンモードＣ１
チェーンモードはディスクリプタモードとも呼ばれ、転送開始メモリアドレスStart_Address及び転送ワード数Xfer_CountをＣＰＵからではなく、メモリから取得する。メモリには、図４に示すように、タグ（ディスクリプタ）として、転送開始メモリアドレスStart_Address及び転送ワード数Xfer_Countが書き込まれている。
【００５８】
チェーンモードでは、最初にタグが読み込まれ、次にデータが転送される。データは、タグ内の転送開始メモリアドレスStart_Addressから読み出され、タグ内の転送ワード数Xfer_Countだけ転送される。特に、チェーンモードＣ１では、タグは１ワードで、タグ自身も転送される。また、データはメモリから周辺装置にバルク転送される。詳細は次のとおり。
【００５９】
最初にメモリからタグを読み込むために、転送方向識別パラメータがm2d＝１，d2m＝０に設定され、転送開始メモリアドレスStart_Addressが当該チャネルの内部レジスタ２８から読み出され、タグ用の転送開始メモリアドレスとして設定される。また、アドレス増減フラグがAddress_Inc_NDec＝１に設定され、タグ識別フラグがThis_Is_Tag＝１に設定される。また、タグ転送識別フラグがTag_Xfer＝１に設定され、転送ワード数Xfer_Countが１ワードに設定される。
【００６０】
m2d＝１，d2m＝０であるから、プリプロセッサ３４はこれらのパラメータ等を含む指示パケットをメモリ・周辺装置転送エンジン１８に与える。メモリ・周辺装置転送エンジン１８はメモリにアクセスし、転送開始メモリアドレスStart_Addressから１ワード分のデータ、つまりタグを読み込み、転送エンジン制御回路１２に与える。読み込まれたタグは、当該チャネルの内部レジスタ２８に書き込まれるとともに、データバッファ１４にも書き込まれる。
【００６１】
次にデータをメモリから周辺装置に転送するために、転送方向識別パラメータがm2d＝１，d2m＝０に設定され、タグから得られた転送開始メモリアドレスStart_Addressが当該チャネルの内部レジスタ２８から読み出され、データ用の転送開始メモリアドレスとして設定される。また、アドレス増減フラグがAddress_Inc_NDec＝１又は０に設定され、タグ識別フラグがThis_Is_Tag＝０に設定される、かつタグ転送識別フラグがTag_Xfer＝１に設定される。また、演算器３８により、タグから得られた転送ワード数Xfer_Countに１（タグのワード数）が加算され、その総ワード数が転送ワード数Xfer_Countとして設定される。
【００６２】
m2d＝１，d2m＝０であるから、プリプロセッサ３４はこれらのパラメータ等を含む指示パケットをメモリ・周辺装置転送エンジン１８に与える。その結果、図５（ａ）に示すように、メモリ・周辺装置転送エンジン１８は、１ワードのタグを転送した後、転送ワード数Xfer_Count分のバルクデータをメモリから周辺装置に転送する。
【００６３】
（４）チェーンモードＣ２
チェーンモードＣ２では、チェーンモードＣ１と異なり、タグ自身は転送されない。したがって、最初にメモリからタグを読み込むために設定されるパラメータ等は、タグ転送識別フラグがTag_Xfer＝０に設定される点を除き、上記チェーンモードＣ１と同じである。また、次にデータを転送するために設定されるパラメータ等は、タグから得られた転送ワード数Xfer_Countがそのまま転送ワード数Xfer_Countとして設定される点を除き、上記チェーンモードＣ１と同じである。
【００６４】
この場合、図５（ｂ）に示すように、メモリ・周辺装置転送エンジン１８は、転送ワード数Xfer_Count分のバルクデータ（タグを含まない）をメモリから周辺装置に転送する。
【００６５】
（５）チェーンモードＣ３
チェーンモードＣ３では、タグは２ワードで、タグ自身は転送されない。また、データはメモリから周辺装置にスライス転送される。したがって、最初にメモリからタグを読み込むために設定されるパラメータ等は、転送ワード数Xfer_Countが２ワードに設定される点を除き、上記チェーンモードＣ２と同じである。また、次にデータを転送するために設定されるパラメータ等は、転送ワード数Xfer_Countを除き、チェーンモードＣ２と同じである。転送ワード数Xfer_Countの設定は次のとおり。
【００６６】
演算器３８は、タグから得られた転送ワード数又はまだ転送されずに残っているデータのワード数（以下「残ワード数」という）を、所定スライスサイズ（当該チャネルの内部レジスタ２８に設定されている転送ワード数）と比較する。その結果、タグから得られた転送ワード数又は残ワード数が所定スライスサイズよりも大きい場合、転送ワード数Xfer_Countは所定スライスサイズに設定され、そうでない場合、タグから得られた転送ワード数又は残ワード数に設定される。
【００６７】
この場合、図５（ｃ）に示すように、メモリ・周辺装置転送エンジン１８は、データを転送ワード数Xfer_Countごとにスライスしてメモリから周辺装置に転送する。
【００６８】
（６）チェーンモードＣ４
チェーンモードＣ４では、チェーンモードＣ３と異なり、タグは４ワードで、タグ自身も転送される。したがって、最初にメモリからタグを読み込むために設定されるパラメータ等は、タグ転送識別フラグがTag_Xfer＝１に設定され、かつ転送ワード数Xfer_Countが４ワードに設定される点を除き、チェーンモードＣ３と同じである。また、次にデータを転送するために設定されるパラメータ等は、転送ワード数Xfer_Countを除き、チェーンモードＣ３と同じである。転送ワード数Xfer_Countの設定は次のとおり。
【００６９】
演算器３８は、タグから得られた転送ワード数又は残ワード数にタグ分の４ワードを加算した総ワード数を所定スライスサイズと比較する。その結果、総ワード数が所定スライスサイズよりも大きい場合、転送ワード数Xfer_Countは所定スライスサイズに設定され、そうでない場合、総ワード数に設定される。
【００７０】
この場合、図５（ｄ）に示すように、メモリ・周辺装置転送エンジン１８は、４ワードのタグを転送した後、データを転送ワード数Xfer_Countごとにスライスしてメモリから周辺装置に転送する。
【００７１】
（７）チェーンモードＣ５
チェーンモードＣ５では、チェーンモードＣ３と異なり、タグは４ワードで、データは周辺装置からメモリに転送される。なお、タグ自身は転送されない。したがって、最初にメモリからタグを読み込むために設定されるパラメータ等は、転送方向識別パラメータm2d/d2m、転送開始メモリアドレスStart_Address及び転送ワード数Xfer_Countを除き、チェーンモードＣ３と同じである。転送方向識別パラメータはm2d＝０，d2m＝１に設定され、転送開始メモリアドレスStart_Addressはダミーアドレス（たとえば０）に設定され、転送ワード数Xfer_Countは４ワードに設定される。
【００７２】
また、次にデータを転送するために設定されるパラメータ等は、転送方向識別パラメータm2d/d2mを除き、チェーンモードＣ３と同じである。転送方向識別パラメータはm2d＝０，d2m＝１に設定される。なお、転送開始メモリアドレスはタグから得られた転送開始メモリアドレスStart_Addressに設定されるが、チェーンモードＣ５ではデータが周辺装置からメモリに転送されるので、転送元ではなく、転送先のメモリのアドレスを示す。
【００７３】
この場合、図５（ｅ）に示すように、周辺装置・メモリ転送エンジン２０は、データを転送ワード数Xfer_Countごとにスライスして周辺装置からメモリに転送する。
【００７４】
次に、図６を参照し、チャネルＣｈ０→チャネルＣｈ１→チャネルＣｈ２の順にＤＭＡ要求／承認ハンドラ２６が要求を受け付けた場合の動作を説明する。
【００７５】
チャネルＣｈ０がメモリから周辺装置にデータをバルクで転送するよう要求してきた場合、そのための指示パケットＩＰ１がプリプロセッサ３４からメモリ・周辺装置転送エンジン１８に与えられる。
【００７６】
次に、チャネルＣｈ１がメモリから周辺装置にデータをチェーンモードで転送するよう要求してきた場合、最初に、タグを読み込むための指示パケットＩＰ２がプリプロセッサ３４からメモリ・周辺装置転送エンジン１８に与えられ、続いて、データを転送するための指示パケットＩＰ３がプリプロセッサ３４からメモリ・周辺装置転送エンジン１８に与えられる。
【００７７】
そして、チャネルＣｈ２が周辺装置からメモリにデータをチェーンモードで転送するよう要求してきた場合、最初に、タグを読み込むための指示パケットＩＰ４がプリプロセッサ３４から周辺装置・メモリ転送エンジン２０に与えられ、続いて、データを転送するための指示パケットＩＰ５がプリプロセッサ３４から周辺装置・メモリ転送エンジン２０に与えられる。
【００７８】
以上、本発明の実施の形態によれば、プリプロセッサ３４において７種類の転送モードに応じて指示パケットが生成され、転送エンジン１８，２０に与えられる。したがって、転送エンジン１８，２０は単に指示パケットに従ってデータを転送しさえすればよく、回路構成を複雑化することなく、７種類の転送モードに対応することができる。また、指示パケットに含まれる転送ワード数Xfer_Count分のデータが転送されるので、転送エンジン１８，２０はバルク転送及びスライス転送の区別を必要としない。さらに、転送エンジン１８，２０からプリプロセッサ３４に次の転送開始メモリアドレスNext_Start_Addressが与えられ、次のデータ転送のためにプリプロセッサ３４から転送エンジン１８，２０に与えられる。したがって、データはスライスされて転送される。
【００７９】
上記実施の形態には７種類の転送モードがあるが、この数は何ら限定されない。７種類の転送モードのうちいくつかはなくてもよく、逆に、これら以外の転送モードが追加されてもよい。
【００８０】
以上、本発明の実施の形態を説明したが、上述した実施の形態は本発明を実施するための例示に過ぎない。よって、本発明は上述した実施の形態に限定されることなく、その趣旨を逸脱しない範囲内で上述した実施の形態を適宜変形して実施することが可能である。
【図面の簡単な説明】
【００８１】
【図１】本発明の実施の形態によるＤＭＡコントローラの構成を示す機能ブロック図である。
【図２】図１に示したＤＭＡコントローラ中の転送エンジン制御回路の構成を示す機能ブロック図である。
【図３】図１に示したＤＭＡコントローラの動作を示すタイミング図であり、（ａ）はバルクモードを示し、（ｂ）はスライスモードを示す。
【図４】図１に示したＤＭＡコントローラがチェーンモードで参照するためのメモリ上のタグを示すメモリマップである。
【図５】図１に示したＤＭＡコントローラのチェーンモードにおける動作を示すタイミング図である。
【図６】図１に示したＤＭＡコントローラでプリプロセッサから転送エンジンに与えられる指示パケットを示すタイミング図である。
【符号の説明】
【００８２】
１０  コントローラ
１２  転送エンジン制御回路
１４  データバッファ
１６，１７，３０，３１  セレクタ
１８  メモリ・周辺装置転送エンジン
２０  周辺装置・メモリ転送エンジン
２２  ＰＬＢ
２４  ＯＰＢ
２６  ＤＭＡ要求／承認ハンドラ
２８  内部レジスタ
３４  プリプロセッサ
３６  コントローラ
３８  演算器
４０  転送方向識別パラメータ生成器
４２  転送開始メモリアドレス生成器
４４  アドレス増減フラグ生成器
４６  タグ識別フラグ生成器
４８  タグ転送識別フラグ生成器
５０  転送ワード数生成器
【図１】
2006309561.tif 000003
【図２】
2006309561.tif 000004
【図３】
2006309561.tif 000005
【図４】
2006309561.tif 000006
【図５】
2006309561.tif 000007
【図６】
2006309561.tif 000008