(57)【要約】【課題】　データ転送速度を向上させることが可能なデータ転送装置を提供する。【解決手段】　データ転送装置１は、先入れ先出しバッファ（ＦＩＦＯ）２と、ＦＩＦＯ２を制御する制御器２２とを備えている。制御器２２は、ローカルバスが使用可能な場合には、ＦＩＦＯ２に格納された１語以上のＣＰＵアクセスデータをローカルメモリ５６に逐次転送し、ＦＩＦＯ２に格納された複数語のＤＭＡアクセスデータをローカルメモリ５６にバースト転送するように、ＦＩＦＯ２を制御する。【選択図】　図１
2004094970.tif 000002
【特許請求の範囲】
【請求項１】
メインバスに接続されたメインメモリからローカルバスに接続されたローカルメモリにデータを転送するデータ転送装置であって、
　前記メインバスに接続されたＣＰＵによってアクセスされる１語以上のＣＰＵアクセスデータまたは、前記メインバスに接続されたＤＭＡコントローラによってアクセスされる複数語のＤＭＡアクセスデータを格納するデータ領域を有する先入れ先出しバッファと、
　前記先入れ先出しバッファを制御する制御器と
　を備え、
　前記制御器は、前記ローカルバスが使用可能な場合には、前記データ領域に格納された前記１語以上のＣＰＵアクセスデータを前記ローカルメモリに逐次転送し、前記データ領域に格納された前記複数語のＤＭＡアクセスデータを前記ローカルメモリにバースト転送するように、前記先入れ先出しバッファを制御し、
　前記先入れ先出しバッファは、前記データ領域に格納されたデータがＣＰＵアクセスデータであるかＤＭＡアクセスデータであるかを判別するための情報を格納する領域をさらに有している、データ転送装置。
【請求項２】
前記制御器は、前記データ領域に格納された前記複数語のＤＭＡアクセスデータをローカルＤＭＡ転送の単位として扱い、前記ローカルＤＭＡ転送の単位ごとに前記ローカルバスの使用要求を行う、請求項１に記載のデータ転送装置。
【請求項３】
前記制御器は、前記データ領域に格納された前記１語以上のＣＰＵアクセスデータの転送をローカルＤＭＡ転送として処理し、前記データ領域に格納された前記複数語のＤＭＡアクセスデータの転送をローカルＤＭＡ転送として処理する、請求項１に記載のデータ転送装置。
【発明の詳細な説明】
【技術分野】
【０００１】
　本発明は、メインバスに接続されたメインメモリからローカルバスに接続されたローカルメモリにデータを転送するデータ転送装置に関する。
【背景技術】
【０００２】
　図６は、従来のデータ転送装置１００の構成を示す。
【０００３】
　データ転送装置１００は、メインメモリ１１２からローカルメモリ１５６にデータを転送する。
【０００４】
　データ転送装置１００は、メインバスインタフェース１２７と、ローカルバスインタフェース１３４と、ＤＭＡ先頭アドレスレジスタ１２０と、ＤＭＡ転送語数レジスタ１２１と、加算器１０４と、減算器１０３と、制御器１２２とを含む。
【０００５】
　メインバスインタフェース１２７と、ローカルバスインタフェース１３４とは、内部データ線１５１と内部アドレス線１５２とを介して相互に接続されている。
【０００６】
　メインバスインタフェース１２７は、メインデータバス１１３とメインアドレスバス１５０とに接続されている。メインデータバス１１３とメインアドレスバス１５０とには、データ転送装置１００の周辺装置として、ＣＰＵ１１０とＤＭＡコントローラ１１１とメインメモリ１１２とが接続されている。
【０００７】
　ローカルバスインタフェース１３４は、ローカルデータバス１２８とローカルアドレスバス１３５とに接続されている。ローカルデータバス１２８とローカルアドレスバス１３５とには、データ転送装置１００の周辺装置として、バスインタフェース１５５を介してローカルメモリ１５６が接続されている。
【０００８】
　なお、ローカルデータバス１２８とローカルアドレスバス１３５とには、内部データ処理装置１６１がさらに接続されている。データ転送装置１００と内部データ処理装置１６１とは、ローカルメモリ１５６を共有するユニファイドメモリアーキテクチャを採用する。内部データ処理装置１６１は、例えば、ビデオ出力処理回路である。
【０００９】
　ここで、ＣＰＵ１１０およびＤＭＡコントローラ１１１からローカルメモリ１５６まで１語転送を行う場合、外部バス転送サイクル（メインバス転送サイクル）に対して内部バス転送サイクル（ローカルバス転送サイクル）は２分の１で行われるとする。
【００１０】
　実際には、外部バス転送サイクルが１０ＭＨｚであり、内部バス転送サイクルが１００ＭＨｚであり得る。これは、チップの内部バスのクロックは、チップの外部バスのクロックよりも、高速に動作させられることなどの理由による。
【００１１】
　本明細書では、ＣＰＵ１１０がメインメモリ１１２からローカルメモリ１５６にデータを転送することを「ＣＰＵ転送」といい、ＤＭＡコントローラ１１１がメインメモリ１１２からローカルメモリ１５６にデータを転送することを「ＤＭＡ転送」という。
【００１２】
　以下、ＣＰＵ１１０、ＤＭＡコントローラ１１１およびデータ転送装置１００の概略動作を説明する。
【００１３】
　メインメモリ１１２およびローカルメモリ１５６は、ＣＰＵ１１０およびＤＭＡコントローラ１１１にメモリマップされている。
【００１４】
　ＣＰＵ１１０およびＤＭＡコントローラ１１１は、メインデータバス１１３の使用権を交互にもしくは連続して取得し、データ転送装置１００を介してデータを転送する。
【００１５】
　（ＣＰＵ転送の場合）
　ＣＰＵ１１０は、メインデータバス１１３の使用権を取得すると、メインデータバス１１３とメインアドレスバス１５０とを介して、メインメモリ１１２からデータを転送ソースとして読み出し、データ転送装置１００に出力されるＣＰＵアクセス制御信号１２３をアサートするとともに、メインデータバス１１３とメインアドレスバス１５０とを介して、メインメモリ１１２から読み出されたデータを転送ディスティネーションとしてデータ転送装置１００に出力する。
【００１６】
　（ＤＭＡ転送の場合）
　この場合には、ＣＰＵ１１０を用いてＤＭＡ転送の初期設定をＤＭＡコントローラ１１１およびデータ転送装置１００において行うことが必要になる。
【００１７】
　まず、ＤＭＡコントローラ１１１の内部レジスタ（図示せず）に転送ソースであるメインメモリ１１２の先頭アドレスおよび転送語数をセットし、ＤＭＡ転送開始を要求する。
【００１８】
　次に、ＣＰＵ１１０は、ＣＰＵアクセスによりデータ転送装置１００内のＤＭＡ先頭アドレスレジスタ１２０に転送先であるローカルメモリ１５６のＤＭＡ転送における先頭アドレスを設定する。
【００１９】
　次に、ＣＰＵ１１０は、ＣＰＵアクセスによりデータ転送装置１００内のＤＭＡ転送語数レジスタ１２１にＤＭＡ転送回数を設定する。
【００２０】
　データ転送装置１００は、ＤＭＡ転送の初期設定が完了し、ローカルメモリ１５６に対するデータ転送の準備が整い次第、ＤＭＡ要求信号１２６をアサートする。
【００２１】
　ＤＭＡコントローラ１１１は、ＤＭＡ要求信号１２６のアサートを検出し、メインデータバス１１３の使用権を取得すると、メインデータバス１１３とメインアドレスバス１５０とを介して、メインメモリ１１２からデータを転送ソースとして読み出し、データ転送装置１００に出力されるＤＭＡアクセス制御信号１２５をアサートするとともに、メインデータバス１１３を介して、メインメモリ１１２から読み出されたデータを転送ディスティネーションとしてデータ転送装置１００に出力する。
【００２２】
　なお、ＤＭＡ転送の場合には、ディスティネーション側であるデータ転送装置１００には、ローカルメモリ１５６のアドレスは出力されない。
【００２３】
　次に、データ転送装置１００およびバスコントローラ１３３の概略動作を説明する。
【００２４】
　ＣＰＵ転送およびＤＭＡ転送を行う場合、データ転送装置１００は、データの転送先であるローカルメモリ１５６が接続されているローカルデータバス１２８、ローカルアドレスバス１３５の使用権を要求するローカルバス要求信号１３０をバスコントローラ１３３に出力する。ここで、ローカルデータバス１２８、ローカルアドレスバス１３５は、複数の処理ブロックによって共用されていると仮定する。内部データ処理装置１６１からのローカルバス要求信号１６０が出力されていない場合、バスコントローラ１３３は、ローカルバス許可信号１２９をデータ転送装置１００に出力する。
【００２５】
　次に、データ転送装置１００の内部動作を説明する。
【００２６】
　（ＣＰＵ転送の場合）
　ＣＰＵアクセス制御信号１２３とともＣＰＵ１１０から出力されるデータおよびローカルメモリアドレスは、メインバスインタフェース１２７に一時的に格納される。
【００２７】
　制御器１２２は、ＣＰＵ１１０からＣＰＵアクセス制御信号１２３を受け取ると、ＣＰＵ１１０に出力されるウェイト信号１２４をアサートするとともにバスコントローラ１３３にローカルバス要求信号１３０を出力する。
【００２８】
　制御器１２２は、バスコントローラ１３３からローカルバス許可信号１２９を受け取ると、ローカルバス制御信号１６２をローカルバスインタフェース１３４に出力する。ローカルバスインタフェース１３４は、ローカルバス制御信号１６２に従って、内部データ線１５１上のデータをローカルデータバス１２８に出力し、内部アドレス線１５２上のアドレスをローカルアドレスバス１３５に出力する。
【００２９】
　ここで、ローカルバス制御信号１６２は、ローカルデータバス１２８にデータを出力するタイミングを示すフィールドと、内部アドレス線１５２上のアドレスおよびＤＭＡアドレス線１５３上のアドレスのどちらをローカルアドレスバス１３５に出力するかを示すアドレス選択フィールドとを含んでいる。ＣＰＵ転送の場合には、内部アドレス線１５２上のアドレスをローカルアドレスバス１３５に出力するように、ローカルバス制御信号１６２のアドレス選択フィールドが設定される。
【００３０】
　バスインタフェース１５５は、ローカルアドレスバス１３５上のアドレスをデコードし、そのデコードされたアドレスに従って、ローカルデータバス１２８上のデータをローカルメモリ１５６に出力する。
【００３１】
　（ＤＭＡ転送の場合）
　制御器１２２は、バスコントローラ１３３にローカルバス要求信号１３０を出力する。
【００３２】
　バスコントローラ１３３は、内部データ処理装置１６１からのローカルバス要求信号１６０がアサートされていなければ、ローカルバス許可信号１２９を制御器２２に出力する。
【００３３】
　制御器１２２は、ローカルバス許可信号１２９のアサートを検出すると、ＤＭＡ要求信号１２６をＤＭＡコントローラ１１１に出力する。制御器１２２は、ＤＭＡコントローラ１１１からアサートされたＤＭＡアクセス制御信号１２５を受け取ると、ＤＭＡ要求信号１２６をネゲートするとともに、ローカルバスインタフェース１３４にローカルバス制御信号１６２を出力する。ＤＭＡ転送の場合には、ＤＭＡアドレス線１５３上のアドレスをローカルアドレスバス１３５に出力するように、ローカルバス制御信号１６２のアドレス選択フィールドが設定される。
【００３４】
　ＤＭＡ転送の場合、ローカルメモリ１５６の先頭アドレスはＤＭＡ先頭レジスタ１２０に予め設定され、ＤＭＡ転送語数はＤＭＡ転送語数レジスタ１２１に予め設定される。ＤＭＡアクセス開始とともに入力されるＤＭＡアクセス制御信号１２５に同期して、制御器２２はＤＭＡ開始要求信号１５８をアサートする。
【００３５】
　加算器１０４は、ＤＭＡ開始要求信号１５８のアサートを検出すると、ＤＭＡ先頭アドレスレジスタ１２２の値を初期値として、前回のＤＭＡアドレスを１語分だけインクリメントし、ＤＭＡアドレス線１５３に出力するとともに、ＤＭＡアドレス生成終了信号１５４をアサートする。
【００３６】
　減算器１０３は、ＤＭＡ開始要求信号１５８のアサートを検出すると、ＤＭＡ転送語数レジスタ１２１の値を初期値として、前回のＤＭＡ転送残数を１語分だけデクリメントする。減算器１０３は、ＤＭＡ転送残数が１語となった場合には、ＤＭＡ転送残数フラグ１５７をアサートする。
【００３７】
　制御器１２２は、ＤＭＡ転送残数フラグ１５７のネゲートを検出するまで、ローカルデータバス１２８へのデータ転送が終了した時点でＣＰＵ１１０からのアクセスがない場合には、ＤＭＡコントローラ１１１に出力されるＤＭＡ要求信号１２６をアサートする。
【００３８】
　図７は、ＣＰＵ転送とＤＭＡ転送とを混在して行った場合におけるデータ転送装置１００の動作シーケンスを示す。
【００３９】
　図７において、各信号のＬレベルがアサートを表し、各信号のＨレベルがネゲートを表すと仮定する。
【００４０】
　図７に示される例では、１語のＣＰＵ転送が５回行われ、１０語のＤＭＡ転送が１回行われる。
【００４１】
　Ｔ１サイクル以前には、前述したＤＭＡ転送のための初期値が予め設定されていると仮定する。データ転送装置１００は、ＤＭＡ要求信号１２６をアサートする。ＤＭＡコントローラ１１１は、ＤＭＡ要求信号１２６のアサートを検出し、ＤＭＡ転送要求信号１９７をアサートする。
【００４２】
　ここで、ＣＰＵ１１０は、ＤＭＡ転送要求信号１９７のアサートを検出しているが、次のサイクル以降は、ＣＰＵ転送を行うことを決定すると仮定する。その結果、Ｔ１、Ｔ２サイクルをＣＰＵ基本アクセスタイムとして、ＣＰＵ１１０とデータ転送装置１００との間の外部バス転送（ＣＰＵ＿Ｍ１）が行われる。ＣＰＵ１１０は、Ｔ１サイクルにおいてＣＰＵアクセス制御信号１２３のアサートを開始する。
【００４３】
　データ転送装置１００は、ＣＰＵアクセス制御信号１２３のアサートを検出すると、ウェイト制御信号１２４をアサートする。ウェイト制御信号１２４がアサートされている間、ＣＰＵ１１０は次のサイクル以降にＣＰＵ転送およびＤＭＡ転送を行うことができないように制御される。
【００４４】
　Ｔ３サイクルにおいて、データ転送装置１００とローカルメモリ１５６の間の内部バス転送（ＣＰＵ＿Ｌ１）が行われる。
【００４５】
　内部バス転送（ＣＰＵ＿Ｌ１）が終了すると、データ転送装置１００は、ウェイト制御信号１２４をネゲートする。
【００４６】
　ＣＰＵ１１０は、ウェイト制御信号１２４のネゲートを検出すると、ＣＰＵアクセス制御信号１２３をネゲートするとともに、次のサイクルにＣＰＵ転送もしくはＤＭＡ転送を行うための準備を開始する。ここでは、ＣＰＵ１１０は、ＤＭＡ転送要求信号１９７がアサートされていることを検出し、次のサイクルにＤＭＡ転送を行うことを決定すると仮定する。この場合、ＣＰＵ１１０は、ＤＭＡコントローラ１１１に出力されるＤＭＡ転送許可信号１９６をアサートする。
【００４７】
　ＤＭＡコントローラ１１１は、ＤＭＡ転送許可信号１９６のアサートを検出すると、Ｔ４、Ｔ５サイクルをＤＭＡ基本アクセスタイムとして、ＤＭＡコントローラ１１１とデータ転送装置１００との間で外部バス転送（ＤＭＡ＿Ｍ１）を行い、ＤＭＡアクセス制御信号１２５をアサートする。ＤＭＡアクセス制御信号１２５は、ＤＭＡ基本アクセスタイム間のみアサートされる。
【００４８】
　データ転送装置１００は、ＤＭＡアクセス制御信号１２５のアサートを検出すると、ＤＭＡ要求信号１２６をネゲートする。
【００４９】
　Ｔ６サイクルにおいて、データ転送装置１００とローカルメモリ１５６の間の内部バス転送（ＤＭＡ＿Ｌ１）が行われる。
【００５０】
　内部バス転送（ＤＭＡ＿Ｌ１）が終了すると、データ転送装置１００は、ＤＭＡ転送残数を検出し、ＤＭＡ要求信号１２６のアサートを開始する。
【００５１】
　ＤＭＡコントローラ１１１は、ＤＭＡ要求信号１２６のアサートを検出すると、ＤＭＡ転送要求信号１９７のアサートを開始する。
【００５２】
　これ以降、ＣＰＵ１１０は、ＣＰＵ転送およびＤＭＡ転送を交互にまたは連続的に行う。しかし、データ転送装置１００とローカルメモリ１５６の間の内部バス転送は、内部データ処理装置１６１とローカルメモリ１５６の間の内部バス転送（例えば、ＩＮＴ＿１）が行われている場合には、この内部バス転送が終了するまで待たされる。このため、ＣＰＵ１１０とデータ転送装置１００とのデータ転送に要するサイクルが延長される。
【００５３】
　Ｔ７サイクルにおいて、ＣＰＵ１１０は、ＣＰＵアクセス制御信号１２３をアサートすることにより、データ転送装置１００にデータ転送の開始を通知する。データ転送装置１００は、ＣＰＵアクセス制御信号１２３のアサートを検出すると、ローカルバス要求信号１３０をバスコントローラ１３３に出力することにより、ローカルバスの使用権をバスコントローラ１３３に要求する。図７に示される例では、バスコントローラ１３３は、データ転送装置１００ではなく、内部データ処理装置１６１にローカルバスの使用権を与える。内部データ処理装置１６１からも同様にローカルバスの使用権の要求が発生しているからである。
【００５４】
　Ｔ８サイクルにおいて、内部データ処理装置１６１とローカルメモリ１５６との間の内部バス転送（ＩＮＴ＿１）が開始される。その内部バス転送（ＩＮＴ＿１）は、Ｔ１２サイクルまで行われる。
【００５５】
　Ｔ１２サイクルの終わりにおいて、バスコントローラ１３３は、ローカルバスの使用権をデータ転送装置１００に与える。
【００５６】
　Ｔ１３サイクルにおいて、データ転送装置１００とローカルメモリ１５６との間の内部バス転送（ＣＰＵ＿Ｌ２）が行われる。内部バス転送（ＣＰＵ＿Ｌ２）が終了すると、データ転送装置１００は、ウェイト制御信号２４をネゲートする。ＣＰＵ１１０は、ウェイト制御信号２４のネゲートを検出すると、ＣＰＵアクセス制御信号１２３をネゲートする。
【００５７】
　以降、ＣＰＵ１１０とＤＭＡコントローラ１１１がメインバスの使用権を取り合いながら、データ転送装置１００にデータを転送する。
【００５８】
　Ｔ４７サイクルにおいて、１０回目のＤＭＡアクセス制御信号１２５が検出される。この場合、ＤＭＡ転送残数が０となるため、データ転送装置１００からのＤＭＡ要求信号１２６がネゲートされる。これ以降、ＤＭＡ転送は、ＣＰＵ１１０によって前述したＤＭＡ転送のための初期値が予め設定された後に再度開始される。
【発明の開示】
【発明が解決しようとする課題】
【００５９】
　上述したように、従来のデータ転送装置１００とローカルメモリ１５６との間の内部バス転送は、内部データ処理装置１６１とローカルメモリ１５６との間の内部バス転送が終了するまで待たされる。
【００６０】
　このように、従来のデータ転送装置は、ローカルバスが使用可能となるまで、ＣＰＵ転送にウェイトをかけるように制御され、もしくは、ＤＭＡ転送要求をＤＭＡコントローラに出力しないように制御される。その結果、データ転送装置と周辺装置とを含むシステムとしてのデータ転送速度を向上させることが困難であるという課題がある。
【００６１】
　本発明は、データ転送装置と周辺装置とを含むシステムとしてのデータ転送速度を向上させることが可能なデータ転送装置を提供することを目的とする。
【課題を解決するための手段】
【００６２】
　本発明のデータ転送装置は、メインバスに接続されたメインメモリからローカルバスに接続されたローカルメモリにデータを転送するデータ転送装置であって、前記メインバスに接続されたＣＰＵによってアクセスされる１語以上のＣＰＵアクセスデータまたは、前記メインバスに接続されたＤＭＡコントローラによってアクセスされる複数語のＤＭＡアクセスデータを格納するデータ領域を有する先入れ先出しバッファと、前記先入れ先出しバッファを制御する制御器とを備え、前記制御器は、前記ローカルバスが使用可能な場合には、前記データ領域に格納された前記１語以上のＣＰＵアクセスデータを前記ローカルメモリに逐次転送し、前記データ領域に格納された前記複数語のＤＭＡアクセスデータを前記ローカルメモリにバースト転送するように、前記先入れ先出しバッファを制御し、前記先入れ先出しバッファは、前記データ領域に格納されたデータがＣＰＵアクセスデータであるかＤＭＡアクセスデータであるかを判別するための情報を格納する領域をさらに有し、これにより、上記目的が達成される。
【００６３】
　前記制御器は、前記データ領域に格納された前記複数語のＤＭＡアクセスデータをローカルＤＭＡ転送の単位として扱い、前記ローカルＤＭＡ転送の単位ごとに前記ローカルバスの使用要求を行ってもよい。
【００６４】
　前記制御器は、前記データ領域に格納された前記１語以上のＣＰＵアクセスデータの転送をローカルＤＭＡ転送として処理し、前記データ領域に格納された前記複数語のＤＭＡアクセスデータの転送をローカルＤＭＡ転送として処理してもよい。
【発明の効果】
【００６５】
　本発明によれば、メインバスとローカルバスとの間に先入れ先出しバッファが設けられている。先入れ先出しバッファは、１語以上のＣＰＵアクセスデータと、複数語のＤＭＡアクセスデータとを格納するデータ領域を有している。これにより、ローカルバスがデータ転送装置以外の他の処理ブロックによって使用中である場合でも、メインバスと先入れ先出しバッファとの間でデータの転送を行うことが可能になる。その結果、データ転送速度を向上させることが可能になる。
【００６６】
　また、本発明によれば、先入れ先出しバッファのデータ領域に格納された複数語のＤＭＡアクセスデータをローカルＤＭＡ転送の単位として扱い、そのローカルＤＭＡ転送の単位ごとにローカルバスの使用要求が行われる。これにより、ローカルバスの使用要求の回数を削減することが可能になる。その結果、ローカルバスの使用権を取得するために要するサイクル数が削減されるため、ローカルバスの使用効率を向上させることが可能になる。
【００６７】
　また、本発明によれば、先入れ先出しバッファのデータ領域に格納された１語以上のＣＰＵアクセスデータの転送と複数語のＤＭＡアクセスデータの転送とをローカルＤＭＡ転送として統一して処理することが可能になる。その結果、ローカルアドレスバスを不要とすることができる。
【００６８】
　また、本発明によれば、先入れ先出しバッファのデータ領域に格納されたデータがＣＰＵアクセスデータであるかＤＭＡアクセスデータであるかを判別する領域が先入れ先出しバッファに設けられている。これにより、少ない容量を有する先入れ先出しバッファ内にＣＰＵアクセスデータとＤＭＡアクセスデータとを混在して保持することが可能となる。
【発明を実施するための最良の形態】
【００６９】
　以下、図面を参照しながら本発明の実施の形態を説明する。
【００７０】
　（実施の形態１）
　図１は、本発明の実施の形態１のデータ転送装置１の構成を示す。
【００７１】
　データ転送装置１は、メインデータバス１３とメインアドレスバス５０とに接続されている。メインデータバス１３とメインアドレスバス５０とには、データ転送装置１の周辺装置として、ＣＰＵ１０とＤＭＡコントローラ１１とメインメモリ１２とが接続されている。本明細書では、メインデータバス１３とメインアドレスバス５０とを総称して「メインバス」と呼ぶ。
【００７２】
　データ転送装置１は、ローカルデータバス２８に接続されている。ローカルデータバス２８には、データ転送装置１の周辺装置として、バスインタフェース５５を介してローカルメモリ５６が接続されている。本明細書では、ローカルデータバス２８を「ローカルバス」とも呼ぶ。
【００７３】
　なお、ローカルデータバス２８には、内部データ処理装置６１がさらに接続されている。データ転送装置１と内部データ処理装置６１とは、ローカルメモリ５６を共有するユニファイドメモリアーキテクチャを採用する。
【００７４】
　ここでは、内部データ処理装置６１は、ビデオ出力処理回路であると仮定する。ビデオ出力処理回路は、外部同期信号（図示せず）に従って、ローカルメモリ５６に蓄積されたフレームデータを所定のタイミングでモニタなどの外部出力装置（図示せず）に出力するように動作する。この場合、バスコントローラ３３は、ＣＰＵ１０とデータ転送装置１との間のデータ転送に比較して、ビデオ出力処理回路がローカルデータバス２８の使用権を高い優先度で取得することができるようにデータ転送装置１と内部データ処理装置６１とを制御する。
【００７５】
　データ転送装置１は、メインメモリ１２からローカルメモリ５６にデータを転送する。このデータは、ＣＰＵ１０によってアクセスされるデータ（以下、「ＣＰＵアクセスデータ」という）であるか、ＤＭＡコントローラ１１によってアクセスされるデータ（以下、「ＤＭＡアクセスデータ」という）であるかのいずれかである。
【００７６】
　ＣＰＵ転送の場合には、ＣＰＵ１０がメインメモリ１２からデータを読み出し、その読み出されたデータをＣＰＵアクセスデータとしてデータ転送装置１に出力する。ＤＭＡ転送の場合には、ＤＭＡコントローラ１１がメインメモリ１２からデータを読み出し、その読み出されたデータをＤＭＡアクセスデータとしてデータ転送装置１に出力する。
【００７７】
　データ転送装置１は、メインバスインタフェース２７と、ローカルバスインタフェース３４と、先入れ先出しバッファ（ＦＩＦＯ）２と、制御器２２とを含む。
【００７８】
　ＦＩＦＯ２は、データ線６７とアドレス線６８とを介して、メインバスインタフェース２７に接続されている。ＦＩＦＯ２は、データ線６５を介して、ローカルバスインタフェース３４に接続されている。また、ＦＩＦＯ２は、アドレス線６６を介して、レジスタ８９に接続されている。
【００７９】
　ライトポインタ生成器１５、リードポインタ生成器１７およびＤＭＡポインタ生成器８２は、ＦＩＦＯ２をアクセスするためのポインタを生成するために使用される。
【００８０】
　ライトポインタ生成器１５は、ＣＰＵアクセス制御信号２３に応答して前回のライトポインタを１語分だけインクリメントすることにより、ライトポインタ６９を生成する。ライトポインタ６９は、ＦＩＦＯ２に出力される。
【００８１】
　ＤＭＡポインタ生成器８２は、ＤＭＡアクセス制御信号２５に応答して前回の内部ポインタを１語分だけインクリメントすることにより、ライトポインタ８０を生成する。ライトポインタ８０は、ＦＩＦＯ２に出力される。
【００８２】
　ＤＭＡポインタ生成器８２は、ＤＭＡアクセス制御信号２５が入力された回数をカウントし、その回数がＦＩＦＯ２のＤＭＡ転送用のデータ領域２３０（図２）の語数に等しくなった場合には、内部ポインタを初期化するとともに、ローカルＤＭＡ終了信号８４を制御器２２に出力する。
【００８３】
　ＤＭＡポインタ生成器８２は、ＤＭＡ転送制御信号８３に応答して前回の内部ポインタを１語分だけインクリメントすることにより、リードポインタ８１を生成する。リードポインタ８１は、ＦＩＦＯ２に出力される。
【００８４】
　ＤＭＡポインタ生成器８２は、ＤＭＡ転送制御信号８３が入力された回数をカウントし、その回数がＦＩＦＯ２のＤＭＡ転送用のデータ領域２３０（図２）の語数に等しくなった場合には、内部ポインタを初期化するとともに、ローカルＤＭＡ終了信号８４を制御器２２に出力する。
【００８５】
　ポインタ比較器７４は、ライトポインタ６９とリードポインタ７０とを比較し、その比較結果に応じた値を有するＦＩＦＯフラグ７３を制御器２２に出力する。ＦＩＦＯフラグ７３の値は、ＦＩＦＯ２に保持されているＣＰＵアクセスデータがない場合には「０」であり、ＦＩＦＯ２に保持されているＣＰＵアクセスデータがある場合には「１」であり、ＦＩＦＯ２に保持されているＣＰＵアクセスデータの数がＦＩＦＯ２に保持され得るＣＰＵアクセスデータの上限値に等しい場合には「２」である。
【００８６】
　加算器４は、ＤＭＡ先頭アドレスレジスタ２０に予め設定される値を初期値として、ＤＭＡアクセス制御信号２５が入力される毎に制御器２２から出力されるＤＭＡ開始要求信号５８に応答して、ＤＭＡアドレスを１語数分だけインクリメントする。その結果、加算器４は、更新されたＤＭＡアドレスをアドレス線５３に出力する。
【００８７】
　減算器３は、ＤＭＡ転送語数レジスタ２１に予め設定される値を初期値として、ＤＭＡアクセス制御信号２５が入力される毎に制御器２２から出力されるＤＭＡ開始要求信号５８に応答して、ＤＭＡ転送語数を１語数分だけデクリメントする。その結果、減算器３は、更新されたＤＭＡ転送語数を転送語数線５４に出力する。
【００８８】
　本実施の形態において、ＣＰＵ転送は、１語のローカルＤＭＡ転送として処理され、ＤＭＡ転送は、複数語のローカルＤＭＡ転送として処理される。このように、ＣＰＵ転送とＤＭＡ転送とは、ローカルＤＭＡ転送として統一的に処理される。
【００８９】
　ここで、ＤＭＡコントローラ１１とデータ転送装置１との間のＤＭＡ転送は、ＦＩＦＯ２に保持され得るＤＭＡアクセスデータの上限値をローカルＤＭＡ転送の基本数とした単位に分割される。
【００９０】
　第１に、ＣＰＵ転送を行う場合におけるＦＩＦＯ２の制御と、ＣＰＵ転送を１語のローカルＤＭＡ転送として処理するためのローカルＤＭＡ転送パラメータの設定とを説明する。
【００９１】
　ＦＩＦＯ２は、ＣＰＵアクセス制御信号２３に応答して更新されるライトポインタ６９によって指定される位置に、メインバスインタフェース２７を介して入力されるＣＰＵアクセスデータを順次保持する。
【００９２】
　ポインタ比較器７４は、ライトポインタ６９とリードポインタ７０とを比較し、その比較結果に応じた値を有するＦＩＦＯフラグ７３を制御器２２に出力する。ＦＩＦＯフラグ７３の値は、ＦＩＦＯ２に保持されているＣＰＵアクセスデータがない場合には「０」であり、ＦＩＦＯ２に保持されているＣＰＵアクセスデータがある場合には「１」であり、ＦＩＦＯ２に保持されているＣＰＵアクセスデータの数がＦＩＦＯ２に保持され得るＣＰＵアクセスデータの上限値に等しい場合には「２」である。
【００９３】
　制御器２２は、ＦＩＦＯフラグ７３の値が「１」もしくは「２」である場合には、バスコントローラ３３にローカルバス要求信号３０を出力する。制御器２２は、バスコントローラ３３からローカルバス許可信号２９を受け取ると、リードポインタ生成要求信号７１をリードポインタ生成器１７に出力する。リードポインタ生成器１７は、リードポインタ生成要求信号７１に応答してリードポインタ７０を生成し、その生成されたリードポインタ７０をＦＩＦＯ２に出力する。
【００９４】
　ＦＩＦＯ２は、リードポインタ７０によって指定されるＣＰＵアクセスデータをデータ線６５に出力し、リードポインタ７０によって指定されるＣＰＵアクセスアドレスをアドレス線６６に出力する。
【００９５】
　レジスタ８９は、ＣＰＵ転送のためのローカルＤＭＡ先頭アドレスを指定するために使用される。ＤＭＡ先頭アドレスレジスタ８９は、内部同期信号（図示せず）に応答してアドレス線６６上のアドレスを保持する。
【００９６】
　レジスタ８８は、ＣＰＵ転送のためのローカルＤＭＡ転送語数を指定するために使用される。レジスタ８８は、１語数を表す固定レジスタである。
【００９７】
　ＣＰＵ転送を行う場合には、レジスタ８９の出力とレジスタ８８の出力とがローカルバスインタフェース３４に出力される。
【００９８】
　第２に、ＤＭＡ転送を行う場合におけるＦＩＦＯ２の制御と、ＤＭＡ転送を複数語のローカルＤＭＡ転送として処理するためのローカルＤＭＡ転送パラメータの設定とを説明する。
【００９９】
　ＦＩＦＯ２は、ＤＭＡアクセス制御信号２５に応答して更新されるＤＭＡライトポインタ８０によって指定される位置に、メインバスインタフェース２７を介して入力されるＤＭＡアクセスデータを順次保持する。ＦＩＦＯ２に保持されているＤＭＡアクセスデータの数が上限値に達した場合には、ＦＩＦＯ２は、ローカルＤＭＡ終了信号８４を制御器２２に出力する。
【０１００】
　制御器２２は、ローカルＤＭＡ終了信号８４を受け取ると、バスコントローラ３３にローカルバス要求信号３０を出力する。このように、制御器２２は、ＦＩＦＯ２に保持されている複数語のＤＭＡアクセスデータをローカルＤＭＡ転送の単位として扱い、ローカルＤＭＡ転送の単位ごとにローカルバスの使用要求を行う。これにより、ローカルバスの使用要求の回数を低減することが可能になる。
【０１０１】
　制御器２２は、バスコントローラ３３からローカルバス許可信号２９を受け取ると、ＤＭＡ開始要求信号５８とＤＭＡ転送制御信号８３とローカルＤＭＡ転送開始信号９２とを出力する。制御器２２は、ローカルＤＭＡ転送終了９１を受け取ると、ローカルバス要求信号３０を再度バスコントローラ３３に出力し、同様の処理を繰り返す。制御器２２は、ＤＭＡ転送残数フラグ５７がアサートされるとＤＭＡ転送処理を終了する。
【０１０２】
　レジスタ８７は、ＤＭＡ転送のためのローカルＤＭＡ先頭アドレスを指定するために使用される。レジスタ８７は、制御器２２から出力されるローカルＤＭＡ転送開始信号９２に応答して、ＤＭＡアドレス線５３上のＤＭＡアドレスをローカルＤＭＡ先頭アドレスとしてローカルバスインタフェース３４に出力する。
【０１０３】
　レジスタ８６は、ＤＭＡ転送のためのローカルＤＭＡ転送語数を指定するために使用される。レジスタ８６には、比較器９０の出力が格納される。レジスタ８６は、比較器９０の出力をローカルＤＭＡ転送語数としてローカルバスインタフェース３４に出力する。
【０１０４】
　比較器９０は、転送語数線５４上のＤＭＡ転送語数とローカルＤＭＡ転送基本数とを比較して、より小さい数をローカルＤＭＡ転送語数としてレジスタ８６に設定するとともに、ローカルＤＭＡ転送カウンタ８５の出力値とローカルＤＭＡ転送語数とを比較して、一致した場合にローカルＤＭＡ転送終了信号９１を制御器２２に出力する。
【０１０５】
　ローカルＤＭＡ転送カウンタ８５は、制御器２２から出力されるローカルＤＭＡ転送開始信号９２に応答して、カウント数を初期化するとともに、内部同期信号（図示せず）をカウントする。
【０１０６】
　制御器２２は、ＣＰＵ転送のためのローカルＤＭＡ転送パラメータとＤＭＡ転送のためのローカルＤＭＡ転送パラメータのうちの１つを予め決められた優先順位で選択するアクセス制御信号９５をローカルバスインタフェース３４に出力する。
【０１０７】
　ＤＭＡ転送よりもＣＰＵ転送を優先して行う場合には、ローカルバスインタフェース３４は、レジスタ８９の出力とレジスタ８８の出力とをローカルＤＭＡ転送パラメータとしてバスインタフェース５５に設定する。このような設定は、ＤＭＡ制御線９３を介して行われる。
【０１０８】
　ＣＰＵ転送よりもＤＭＡ転送を優先して行う場合には、ローカルバスインタフェース３４は、レジスタ８７の出力とレジスタ８６の出力とをローカルＤＭＡ転送パラメータとしてバスインタフェース５５に設定する。このような設定は、ＤＭＡ制御線９３を介して行われる。
【０１０９】
　ＤＭＡ転送のためのローカルＤＭＡ転送パラメータの生成のため、リードポインタ生成要求信号８３はデータ転送に先立って、ＤＭＡポインタ生成器８２に出力される。ＦＩＦＯ２は、リードポインタ８１によって指定される位置のＤＭＡアクセスデータを読み出し、そのＤＭＡアクセスデータをデータ線６５に出力する。ローカルバスインタフェース３４は、データ線６５上のＤＭＡアクセスデータを一時的に保持する。
【０１１０】
　バスインタフェース５５は、ローカルＤＭＡ転送の準備が整い次第、ローカルＤＭＡ要求信号９４を制御器２２に出力する。
【０１１１】
　制御器２２は、ローカルバス許可信号２９を受け取り次第、ローカルＤＭＡ制御線９３を介してローカルＤＭＡ転送開始をバスインタフェース５５に通知するとともに、ＤＭＡ転送の場合には、ローカルＤＭＡ転送開始要求９２とＤＭＡ転送開始要求８３とを出力する。ＦＩＦＯ２は、リードポインタ８１によって指定される位置のＤＭＡアクセスデータを読み出し、読み出されたＤＭＡアクセスデータをデータ線６５に出力する。ローカルバスインタフェース３４は、データ線６５上のＤＭＡアクセスデータをローカルデータバス２８に出力する。
【０１１２】
　ＣＰＵ転送の場合には、ローカルバスインタフェース３４は、ローカルＤＭＡ転送パラメータの生成時に保持されたＣＰＵアクセスデータをローカルデータバス２８に出力する。
【０１１３】
　図２は、ＦＩＦＯ２の構成例を示す。
【０１１４】
　ＦＩＦＯ２は、１語以上のＣＰＵアクセスデータと複数語のＤＭＡアクセスデータとを格納するデータ領域を有している。図２に示される例では、データ領域は、１語以上のＣＰＵアクセスデータを格納するＣＰＵ転送用のデータ領域２１０と、複数語のＤＭＡアクセスデータを格納するＤＭＡ転送用のデータ領域２３０とに分割されている。しかし、データ領域が必ずしもこのように分割されている必要はない。ＦＩＦＯ２のデータ領域は、１語以上のＣＰＵアクセスデータと複数語のＤＭＡアクセスデータとを格納することができる限り、任意のフォーマットをとり得る。
【０１１５】
　ＣＰＵ転送用のデータ領域２１０は、１以上のＣＰＵアクセスデータフィールド２１０ａと、１以上のＣＰＵアクセスアドレスフィールド２１０ｂとを含む。１以上のＣＰＵアクセスデータフィールド２１０ａのそれぞれには、１語のＣＰＵアクセスデータが格納される。１以上のＣＰＵアクセスアドレスフィールド２１０ｂのそれぞれには、対応するＣＰＵアクセスデータのアドレスが格納される。
【０１１６】
　ＤＭＡ転送用のデータ領域２３０は、複数のＤＭＡアクセスデータフィールド２３０ａを含む。複数のＤＭＡアクセスデータフィールド２３０ａのそれぞれには、１語のＤＭＡアクセスデータが格納される。
【０１１７】
　図２に示される例では、ＣＰＵ転送用のデータ領域２１０に含まれるＣＰＵアクセスデータフィールド２１０ａ、ＣＰＵアクセスアドレスフィールド２１０ｂの数はそれぞれ８であり、ＤＭＡ転送用のデータ領域２３０に含まれるＤＭＡアクセスデータフィールドの数は８である。しかし、データ領域２１０、２３０に含まれるフィールドの数がこれらに限定されるわけではない。データ領域２１０、２３０は、任意の数のフィールドを含み得る。データ領域２１０のフィールド数とデータ領域２３０のフィールド数とが異なっていてもよい。
【０１１８】
　はじめに、ＦＩＦＯ２へのデータの書き込みを説明する。
【０１１９】
　ＦＩＦＯ２に入力されたデータがＣＰＵアクセスデータである場合には、ライトポインタ６９に応じて複数の書き込み制御線２２０ａのうちＣＰＵアクセスデータの書き込み位置に対応する１本の書き込み制御線２２０ａがアサートされる。このような選択的なアサートは、回路２１０ｃによって行われる。その結果、アサートされた書き込み制御線２２０ａに接続されているＣＰＵアクセスデータフィールド２１０ａには、データ線６７上のデータが書き込まれ、アサートされた書き込み制御線２２０ａに接続されているＣＰＵアクセスアドレスフィールド２１０ｂには、アドレス線６８上のアドレスが書き込まれる。
【０１２０】
　ＦＩＦＯ２に入力されたデータがＤＭＡアクセスデータである場合には、ライトポインタ８０に応じて複数の書きこみ制御線２４０ａのうちＤＭＡアクセスデータの書き込み位置に対応する１本の書き込み制御線２４０ａがアサートされる。このような選択的なアサートは、回路２３０ｂによって行われる。その結果、アサートされた書き込み制御線２４０ａに接続されているＤＭＡアクセスデータフィールド２３０ａには、データ線６７上のデータが書き込まれる。
【０１２１】
　次に、ＦＩＦＯ２からのデータの読み出しを説明する。
【０１２２】
　セレクタ２１０ｄは、リードポインタ７０に応じて、複数のＣＰＵアクセスデータフィールド２１０ａの出力２２０ｂのうちの１つを選択し、選択された出力２２０ｂをデータ線６５に出力する。
【０１２３】
　セレクタ２１０ｅは、リードポインタ７０に応じて、複数のＣＰＵアクセスアドレスフィールド２１０ｂの出力２２０ｃのうちの１つを選択し、選択された出力２２０ｃをアドレス線６６に出力する。
【０１２４】
　セレクタ２３０ｃは、リードポインタ８１に応じて、複数のＤＭＡアクセスデータフィールド２３０ａの出力２３０ｃのうちの１つを選択し、選択された出力２３０ｃをデータ線６５に出力する。
【０１２５】
　なお、リードポインタ７０がネゲート状態の場合には、データセレクタ２１０ｄの出力およびアドレスセレクタ２１０ｅの出力は、それぞれ、ハイインピーダンス状態となる。また、リードポインタ８１がネゲート状態の場合には、データセレクタ２３０ｃの出力は、ハイインピーダンス状態となる。これにより、データの衝突が回避される。
【０１２６】
　図５は、ＣＰＵ転送とＤＭＡ転送とを混在して行った場合におけるデータ転送装置１の動作シーケンスを示す。
【０１２７】
　図５において、各信号線のＬレベルがアサートを表し、各信号のＨレベルがネゲートを表すと仮定する。
【０１２８】
　図５に示される例では、１語のＣＰＵ転送が５回行われ、１０語のＤＭＡ転送が１回行われる。
【０１２９】
　Ｔ１サイクル以前には、前述したＤＭＡ転送のための初期値が予め設定されていると仮定する。データ転送装置１は、ＤＭＡ要求信号２６をアサートする。ＤＭＡコントローラ１１は、ＤＭＡ要求信号２６のアサートを検出し、ＤＭＡ転送要求信号９７をアサートする。
【０１３０】
　ここで、ＣＰＵ１０は、ＤＭＡ転送要求信号９７のアサートを検出しているが、次のサイクル以降は、ＣＰＵ転送を行うことを決定すると仮定する。その結果、Ｔ１、Ｔ２サイクルをＣＰＵ基本アクセスタイムとして、ＣＰＵ１０とデータ転送装置１との間の外部バス転送（ＣＰＵ＿Ｍ１）が行われる。ＣＰＵ１０は、Ｔ１サイクルにおいてＣＰＵアクセス制御信号２３のアサートを開始する。
【０１３１】
　データ転送装置１は、ＣＰＵアクセス制御信号２３のアサートを検出すると、ウェイト制御信号２４をアサートする。ウェイト制御信号２４がアサートされている間、ＣＰＵ１０は次のサイクル以降にＣＰＵ転送およびＤＭＡ転送を行うことができないように制御される。
【０１３２】
　Ｔ２サイクルの終わりにおいて、データ転送装置１は、メインデータバス１３から入力されるデータをＦＩＦＯ２に保持するとともに、ウエイト制御信号２４をネゲートする。
【０１３３】
　ＣＰＵ１０は、ウェイト制御信号２４のネゲートを検出すると、ＣＰＵアクセス制御信号２３をネゲートするとともに、次のサイクルにＣＰＵ転送もしくはＤＭＡ転送を行うための準備を開始する。ここでは、ＣＰＵ１０は、ＤＭＡ転送要求信号９７がアサートされていることを検出し、次のサイクルにＤＭＡ転送を行うことを決定すると仮定する。この場合、ＣＰＵ１０は、ＤＭＡコントローラ１１に出力されるＤＭＡ転送許可信号９６をアサートする。
【０１３４】
　ＤＭＡコントローラ１１は、ＤＭＡ転送許可信号９６のアサートを検出すると、Ｔ３、Ｔ４サイクルをＤＭＡ基本アクセスタイムとして、ＤＭＡコントローラ１１とデータ転送装置１との間で外部バス転送（ＤＭＡ＿Ｍ１）を行い、ＤＭＡアクセス制御信号２５をアサートする。ＤＭＡアクセス制御信号２５は、ＤＭＡ基本アクセスタイム間のみアサートされる。
【０１３５】
　データ転送装置１は、ＤＭＡアクセス制御信号２５のアサートを検出すると、ＤＭＡ要求信号２６をネゲートする。
【０１３６】
　Ｔ３サイクルにおいて、データ転送装置１とローカルメモリ５６の間の内部バス転送（ＣＰＵ＿Ｌ１）が行われる。この内部バス転送では、ＦＩＦＯ２に保持されたＣＰＵアクセスデータがローカルメモリ５６に出力される。
【０１３７】
　Ｔ４サイクルにおいて、データ転送装置１は、ＤＭＡアクセス制御信号２５のネゲートを検出すると、ＤＭＡ要求信号２６をアサートする。
【０１３８】
　Ｔ７サイクルよりＴ２０サイクルまでは、ＤＭＡコントローラ１１とデータ転送装置１との間の外部バス転送が連続的に行われる。
【０１３９】
　Ｔ７サイクルからＴ２０サイクルまの期間中、データ転送装置１に入力されるＤＭＡアクセスデータは、ＦＩＦＯ２のＤＭＡ転送用のデータ領域２３０に保持される。この期間中、ＤＭＡコントローラ１１からのＤＭＡ転送は、ＤＭＡ基本アクセスタイム周期で行われる。この期間中、ローカルバスは、内部データ処理装置６１により一時的に占有され、内部バス転送ＩＮＴ＿１、ＩＮＴ＿２、ＩＮＴ＿３が行われる。
【０１４０】
　Ｔ２０サイクルにおいて、ＦＩＦＯ２のＤＭＡ転送用のデータ領域２３０が満杯となり、ＤＭＡ要求信号２６はネゲートされたままとなる。このため、ＣＰＵ１０は、Ｔ２１サイクル以降はＣＰＵ転送のみを行う。
【０１４１】
　Ｔ２４サイクルにおいて、ＦＩＦＯ２のＤＭＡ転送用のデータ領域２３０に格納された複数語のＤＭＡアクセスデータのバースト出力が開始される。Ｔ２０サイクルからＴ２３サイクルの内部バス転送（ＩＮＴ＿３）により、内部バス転送（ＤＭＡ＿Ｌ１からＤＭＡ＿Ｌ８）の開始が遅れている。
【０１４２】
　複数語のＤＭＡアクセスデータに対応する内部バス転送（ＤＭＡ＿Ｌ１からＤＭＡ＿Ｌ８）は連続して行われる。
【０１４３】
　Ｔ３１サイクルにおいて、ＦＩＦＯ２のＤＭＡ転送用のデータ領域２３０が空となる。制御器２２は、ＤＭＡ要求信号２６を再度アサートする。
【０１４４】
　Ｔ３２、Ｔ３３サイクルにおいては、内部バス転送（ＩＮＴ＿４）が行われ、続いて、内部バス転送（ＣＰＵ＿Ｌ３、ＣＰＵ＿Ｌ４、ＣＰＵ＿Ｌ５）が行われる。ＦＩＦＯ２のＤＭＡ転送用のデータ領域２３０には、再度、ＤＭＡコントローラ１１とデータ転送装置１との間の外部バス転送（ＤＭＡ＿Ｍ９、ＤＭＡ＿Ｍ１０）によるＤＭＡアクセスデータが保持される。
【０１４５】
　Ｔ３７、Ｔ３８サイクルにおいては、データ転送装置１とローカルメモリ５６との間の内部バス転送（ＤＭＡ＿Ｌ９、ＤＭＡ＿Ｌ１０）が行われる。
【０１４６】
　これ以降、ＤＭＡ転送は、ＣＰＵ１０によって前述したＤＭＡ転送のための初期値が予め設定された後に再度開始される。
【０１４７】
　このように、本実施の形態では、ＦＩＦＯ２に格納された複数語のＤＭＡアクセスデータをローカルメモリ５６にバースト転送し、ＦＩＦＯ２に格納された１語以上のＣＰＵアクセスデータをローカルメモリ５６に逐次転送するように、ＦＩＦＯ２が制御される。このようにＦＩＦＯ２を制御することにより、ウェイト制御信号２４のアサート期間を短縮することができる。その結果、ウェイト制御信号２４のアサートによりメインバスの使用権を決定するＣＰＵ１０の動作の待ち時間が短縮される。これにより、データ転送装置１と周辺装置とを含むシステムのデータ転送レートを向上させることができる。
【０１４８】
　なお、ローカルメモリ５６からＣＰＵ１０にデータを転送する場合には、ＦＩＦＯ２を介さずにローカルデータバス２８から直接的にメインデータバス１３に出力する制御を行う必要がある。ローカルメモリ５６からＤＭＡコントローラ１１にデータを転送する場合には、ローカルデータバス２８上のデータをバースト転送によりＦＩＦＯ２にいったん格納した上で、ＦＩＦＯ２に格納されたデータをＤＭＡ要求信号２６を用いて１語ずつＤＭＡコントローラ１１に転送する制御を行うことが必要である。
【０１４９】
　（実施の形態２）
　図３は、本発明の実施の形態２のデータ転送装置１ａの構成を示す。
【０１５０】
　図３において、図１に示される構成要素と同一の構成要素には同一の参照符号を付し、その説明を省略する。
【０１５１】
　図４は、ＦＩＦＯ２ａの構成例を示す。
【０１５２】
　ＦＩＦＯ２ａは、複数のデータフィールド４１０ａと、複数のアドレスフィールド４１０ｂと、複数のアクセス判別フィールド４１０ｃとを有している。複数のデータフィールド４１０ａのそれぞれには、１語のＣＰＵアクセスデータまたは１語のＤＭＡアクセスデータが格納される。複数のアドレスフィールド４１０ｂのそれぞれには、対応するデータフィールド４１０ａに格納されたデータに対応するアドレスが格納される。複数のアクセス判別フィールド４１０ｃのそれぞれには、対応するデータフィールド４１０ａに格納されたデータの種類を示す情報が格納される。
【０１５３】
　データフィールド４１０ａに格納されたデータがＣＰＵアクセスデータである場合には、そのデータフィールド４１０ａに対応するアクセス判別フィールド４１０ｃには、値「０」が格納される。データフィールド４１０ａに格納されたデータがＤＭＡアクセスデータである場合には、そのデータフィールド４１０ａに対応するアクセス判別フィールド４１０ｃには、値「１」が格納される。
【０１５４】
　なお、データフィールド４１０ａに格納されたデータがＤＭＡアクセスデータである場合には、そのデータフィールド４１０ａに対応するアドレスフィールド４１０ｂには、アドレスが無効（すなわち、「Ｉｎｖａｌｉｄ」）であることを示す任意の値が格納される。
【０１５５】
　図４に示される例では、ＦＩＦＯ２ａに含まれるデータフィールド４１０ａ、アドレスフィールド４１０ｂおよびアクセス判別フィールド４１０ｃの数はそれぞれ８である。しかし、ＦＩＦＯ２ａに含まれるフィールドの数がこれらに限定されるわけではない。ＦＩＦＯ２ａは、任意の数のフィールドを含み得る。
【０１５６】
　はじめに、ＦＩＦＯ２ａへのデータの書き込みを説明する。
【０１５７】
　ライトポインタ６９に応じて、複数の書き込み制御線４２０ａのうち書き込み位置に対応する１本の書き込み制御線４２０ａがアサートされる。このような選択的なアサートは、回路４１０ｄによって行われる。その結果、アサートされた書き込み制御線４２０ａに接続されているデータフィールド４１０ａには、データ線６７上のデータが書き込まれ、アサートされた書き込み制御線４２０ａに接続されているアドレスフィールド４１０ｂには、アドレス線６８上のアドレスが書き込まれ、アサートされた書き込み制御線４２０ａに接続されているアクセス判別フィールド４１０ｃには、信号線６３上のアクセス判別信号が書き込まれる。
【０１５８】
　次に、ＦＩＦＯ２ａからのデータの読み出しを説明する。
【０１５９】
　セレクタ４１０ｅは、リードポインタ７０に応じて、複数のデータフィールド４１０ａの出力４２０ｂのうちの１つを選択し、選択された出力４２０ｂをデータ線６５に出力する。
【０１６０】
　セレクタ４１０ｆは、リードポインタ７０に応じて、複数のアドレスフィールド４１０ｂの出力４２０ｃのうちの１つを選択し、選択された出力４２０ｃをアドレス線６６に出力する。
【０１６１】
　セレクタ４１０ｇは、リードポインタ７０に応じて、複数のアクセス判別フィールド４１０ｃの出力４２０ｄのうちの１つを選択し、選択された出力４２０ｄを信号線７５に出力する。
【０１６２】
　以下、図３および図４を参照して、データ転送装置１ａの内部動作を説明する。
【０１６３】
　ＣＰＵアクセス制御信号２３とともにＣＰＵ１０から出力されるデータおよびローカルメモリアドレスは、メインバスインターフェース２７に一時的に格納される。
【０１６４】
　アクセス判別器６４は、ＣＰＵアクセス制御信号２３とＤＭＡアクセス制御信号２とに基づいて、アクセス判別信号６３を生成する。アクセス判別器６４は、ＣＰＵアクセス制御信号２３がアサート状態であり、ＤＭＡアクセス制御信号２５がネゲート状態であることを検出すると、値「０」のアクセス判別信号６３を生成する。また、アクセス判別器６４は、ＣＰＵアクセス制御信号２３がネゲート状態であり、ＤＭＡアクセス制御信号２５がアサート状態であることを検出すると、値「１」のアクセス判別信号６３を生成する。アクセス判別信号６３は、ＦＩＦＯ２ａに出力される。
【０１６５】
　アクセス判別器６４は、ライトポインタ生成要求信号７２をライトポインタ生成器１５に出力する。
【０１６６】
　ライトポインタ生成器１５は、ライトポインタ生成要求信号７２に応答して前回のライトポインタを１語分だけインクリメントすることにより、ライトポインタ６９を生成する。ライトポインタ６９は、ＦＩＦＯ２ａに出力される。
【０１６７】
　ライトポインタ６９に対応する位置のアクセス判別フィールド４１０ｃには、アクセス判別信号６３が書き込まれる。ライトポインタ６９に対応する位置のデータフィールド４１０ａには、データ線６７上のＣＰＵアクセスデータが書き込まれる。ライトポインタ６９に対応する位置のアドレスフィールド４１０ｂには、アドレス線６８上のＣＰＵアクセスアドレスが書き込まれる。
【０１６８】
　このようにして、ＦＩＦＯ２ａには、ＣＰＵアクセスデータとＤＭＡアクセスデータとが混在して蓄積される。
【０１６９】
　なお、ＤＭＡ転送のための初期値の設定は、実施の形態１と同様である。
【０１７０】
　ポインタ比較器７４は、ライトポインタ６９とリードポインタ７０とを比較し、その比較結果に応じたＦＩＦＯフラグ７３を制御器２２に出力する。ＦＩＦＯフラグ７３の値は、ＦＩＦＯ２ａに保持されているデータがない場合には０であり、ＦＩＦＯ２ａに保持されているデータがある場合には１であり、ＦＩＦＯ２ａに保持されているデータの数がＦＩＦＯ２ａに保持可能なデータの数の上限値に等しい場合には２である。
【０１７１】
　制御器２２は、バスコントローラ３３にローカルバス要求信号３０を出力する。制御器２２は、ローカルバス許可信号２９のアサートを検出すると、リードポインタ生成要求信号７１をリードポインタ生成器１７に出力する。
【０１７２】
　リードポインタ生成器１７は、前回のリードポインタを１語分だけインクリメントすることにより、リードポインタ７０を生成する。リードポインタ７０は、ＦＩＦＯ２ａに出力される。
【０１７３】
　ＦＩＦＯ２ａは、リードポインタ７０に対応する位置のデータフィールド４１０ａに格納されているデータをデータ線６５に出力し、リードポインタ７０に対応する位置のアドレスフィールド４１０ｂに格納されているアドレスをアドレス線６６に出力し、リードポインタ７０に対応する位置のアクセス判別フィールド４１０ｃに格納されている信号を信号線７５に出力する。
【０１７４】
　信号線７５上のアクセス判別信号が０である場合には、制御器２２は、ＦＩＦＯ２ａから出力されたデータがＣＰＵアクセスデータであると判別する。制御器２２は、ローカルバス制御信号６２をローカルバスインタフェース３４に出力する。その結果、ローカルバスインタフェース３４は、データ線６５上のデータをローカルデータバス２８に出力し、アドレス線６６上のアドレスをローカルアドレスバス３５に出力する。
【０１７５】
　信号線７５上のアクセス判別信号が１である場合には、制御器２２は、ＦＩＦＯ２ａから出力されたデータがＤＭＡアクセスデータであると判別する。制御器２２は、ＤＭＡアドレス生成要求信号５８を加算器４および減算器３に出力する。加算器４は、前回のＤＭＡアドレスを１語分だけインクリメントし、その結果をＤＭＡアドレス線５３に出力する。減算器３は、前回のＤＭＡ転送残数を１語分だけデクリメントし、ＤＭＡアドレス生成終了信号５４を制御器２２に出力する。その結果、ＤＭＡ転送残数が１語となった場合には、ＤＭＡ転送残数フラグ５７をアサートする。
【０１７６】
　制御器２２は、ローカルバス制御信号６２をローカルバスインタフェース３４に出力する。ローカルバスインタフェース３４によって、ローカルバス制御信号６２のアドレス選択フィールドが参照される。その結果、ローカルバスインタフェース３４は、ＤＭＡアドレス線５３上のアドレスをローカルアドレスバス３５に出力する。
【０１７７】
　制御器２２は、バスコントローラ３３がローカルバスの使用許可をデータ転送装置１ａに与えている間、ＦＩＦＯ２ａにＤＭＡアクセスデータが残っていることを示すＤＭＡ転送残数フラグ５７がアサートされるまで、リードポインタ生成要求信号７１を出力する。
【０１７８】
　なお、上述した実施の形態において、ＤＭＡ転送の場合には、ＤＭＡコントローラからＦＩＦＯへは１語ずつ転送され、ＦＩＦＯからローカルメモリへはＦＩＦＯの容量単位にバースト転送される。このＦＩＦＯの容量は、外部バス転送サイクルと内部バス転送サイクルの速度や転送比率、チップ内に占める面積により、その最適値が変動する。これをバス使用比率を用いて考察する。
【０１７９】
　前提として、ＣＰＵおよびＤＭＡコントローラによるデータ転送における内部バス占有率１０％、内部バスの使用権交代１回に要する内部バス占有率を５％、内部データ処理装置の内部バス占有率を８０％とした場合、１語の外部バス転送の基本サイクルに要する時間が１語の内部バス転送の基本サイクルに要する時間の１０倍であれば、外部バス転送は連続して行えることとなる。
【０１８０】
　しかし、実際には、内部データ処理装置が連続して内部バスを占有する場合を考慮して、ＦＩＦＯの容量は大きい程よいと考えられる。しかしながら、チップ内のＦＩＦＯの面積は、チップのコストを引き上げるため、数十ワードの容量を備えることは難しい。このような理由から、ＦＩＦＯの容量は、２０ワード程度が最適と考えられる。
【図面の簡単な説明】
【０１８１】
【図１】本発明の実施の形態１のデータ転送装置１の構成を示すブロック図である。
【図２】図１に示されるＦＩＦＯ２の構成例を示す図である。
【図３】本発明の実施の形態２のデータ転送装置１ａの構成を示すブロック図である。
【図４】図３に示されるＦＩＦＯ２ａの構成例を示す図である。
【図５】ＣＰＵ転送とＤＭＡ転送とを混在して行った場合におけるデータ転送装置１の動作シーケンスを示す図である。
【図６】従来のデータ転送装置１００の構成を示すブロック図である。
【図７】ＣＰＵ転送とＤＭＡ転送とを混在して行った場合におけるデータ転送装置１００の動作シーケンスを示す図である。
【符号の説明】
【０１８２】
　１、１ａ　データ転送装置
　２、２ａ　ＦＩＦＯ
　１０　ＣＰＵ
　１１　ＤＭＡコントローラ
　１２　メインメモリ
　１３　メインデータバス
　２２　制御器
　２７　メインバスインタフェース
　２８　ローカルデータバス
　３３　バスコントローラ
　３４　ローカルバスインタフェース
　５０　メインアドレスバス
　５５　バスインタフェース
　５６　ローカルメモリ
【図１】
2004094970.tif 000003
【図２】
2004094970.tif 000004
【図３】
2004094970.tif 000005
【図４】
2004094970.tif 000006
【図５】
2004094970.tif 000007
【図６】
2004094970.tif 000008
【図７】
2004094970.tif 000009