(57)【要約】【課題】ＤＭＡ転送において、データ転送元アドレスとデータ転送先アドレスが、アドレスの位置するバイトアライメントが異なるように設定される場合であっても、高速にデータ転送を行う。【解決手段】データを一時的に格納する内部メモリ１４０と、データを一時的に格納するバッファ１５０と、前記バッファへの入力データ又は前記バッファからの出力データのいずれかをバイト毎に選択するセレクタ１６０と、データをローテートするローテータ１７０とを備え、前記内部メモリは転送元からのリードデータを入力とし、前記バッファは前記内部メモリからのデータを入力とし、前記セレクタは前記内部メモリからのデータと前記バッファからのデータとを入力とし、前記ローテータは前記セレクタで選択されたデータを入力とし、前記ローテータからの出力をライトデータとする。【選択図】図１
2008033721.tif 000002
【特許請求の範囲】
【請求項１】
転送元から転送先へのダイレクトメモリアクセス（ＤＭＡ）転送を行うＤＭＡ転送制御装置であって、
データを一時的に格納する内部メモリと、
データを一時的に格納するバッファと、
前記バッファへの入力データ又は前記バッファからの出力データのいずれかをバイト毎に選択するセレクタと、
データをローテートするローテータとを備え、
前記内部メモリと、前記バッファを有する前記セレクタと、前記ローテータとが任意の順序で接続されていることを特徴とするＤＭＡ転送制御装置。
【請求項２】
請求項１記載のＤＭＡ転送制御装置において、
前記内部メモリは転送元からのリードデータを入力とし、
前記バッファは前記内部メモリからのデータを入力とし、
前記セレクタは前記内部メモリからのデータと前記バッファからのデータとを入力とし、
前記ローテータは前記セレクタで選択されたデータを入力とすることを特徴とするＤＭＡ転送制御装置。
【請求項３】
請求項１記載のＤＭＡ転送制御装置において、
前記バッファは転送元からのリードデータを入力とし、
前記セレクタは前記転送元からのリードデータと前記バッファからのデータとを入力とし、
前記ローテータは前記セレクタで選択されたデータを入力とし、
前記内部メモリは前記ローテータからのデータを入力とすることを特徴とするＤＭＡ転送制御装置。
【請求項４】
請求項１記載のＤＭＡ転送制御装置において、
前記内部メモリは転送元からのリードデータを入力とし、
前記ローテータは前記内部メモリからのデータを入力とし、
前記バッファは前記ローテータからのデータを入力とし、
前記セレクタは前記ローテータからのデータと前記バッファからのデータとを入力とすることを特徴とするＤＭＡ転送制御装置。
【請求項５】
請求項１記載のＤＭＡ転送制御装置において、
前記ローテータは転送元からのリードデータを入力とし、
前記バッファは前記ローテータからのデータを入力とし、
前記セレクタは前記ローテータからのデータと前記バッファからのデータとを入力とし、
前記内部メモリは前記セレクタで選択されたデータを入力とすることを特徴とするＤＭＡ転送制御装置。
【請求項６】
請求項１記載のＤＭＡ転送制御装置において、
前記ローテータは転送元からのリードデータを入力とし、
前記内部メモリは前記ローテータからのデータを入力とし、
前記バッファは前記内部メモリからのデータを入力とし、
前記セレクタは前記内部メモリからのデータと前記バッファからのデータとを入力とすることを特徴とするＤＭＡ転送制御装置。
【請求項７】
請求項１記載のＤＭＡ転送制御装置において、
前記バッファは転送元からのリードデータを入力とし、
前記セレクタは前記転送元からのリードデータと前記バッファからのデータとを入力とし、
前記内部メモリは前記セレクタで選択されたデータを入力とし、
前記ローテータは前記内部メモリからのデータを入力とすることを特徴とするＤＭＡ転送制御装置。
【請求項８】
請求項１記載のＤＭＡ転送制御装置において、
前記ローテータは、転送元アドレスと転送先アドレスとの差異をローテーション段数決定に用いることを特徴とするＤＭＡ転送制御装置。
【請求項９】
請求項１記載のＤＭＡ転送制御装置において、
前記セレクタは、転送元アドレスと転送先アドレスとの差異を選択決定に用いることを特徴とするＤＭＡ転送制御装置。
【請求項１０】
請求項１記載のＤＭＡ転送制御装置において、
転送元へのリードの転送サイズを決定するリードサイズ決定回路と、転送先へのライトの転送サイズを決定するライトサイズ決定回路との少なくとも一方を更に備えたことを特徴とするＤＭＡ転送制御装置。
【請求項１１】
請求項１０記載のＤＭＡ転送制御装置において、
前記リードサイズ決定回路及び前記ライトサイズ決定回路は、転送元アドレスと転送先アドレスとの少なくとも一方を、リードサイズ決定又はライトサイズ決定に利用することを特徴とするＤＭＡ転送制御装置。
【請求項１２】
請求項１０記載のＤＭＡ転送制御装置において、
前記リードサイズ決定回路及び前記ライトサイズ決定回路は、転送元からリードするアドレスからの連続領域サイズと、転送先へライトするアドレスからの連続領域サイズとを、リードサイズ決定又はライトサイズ決定に利用することを特徴とするＤＭＡ転送制御装置。
【請求項１３】
請求項４又は５に記載のＤＭＡ転送制御装置において、
前記ローテータは、転送元からリードするアドレスからの連続領域サイズと、転送先へライトするアドレスからの連続領域サイズとを、ローテーション段数決定に用いることを特徴とするＤＭＡ転送制御装置。
【請求項１４】
請求項４又は５に記載のＤＭＡ転送制御装置において、
前記セレクタは、転送元からリードするアドレスからの連続領域サイズと、転送先へライトするアドレスからの連続領域サイズとを選択決定に用いることを特徴とするＤＭＡ転送制御装置。
【請求項１５】
請求項２、４、６のうちいずれか１項に記載のＤＭＡ転送制御装置において、
データを一時的に格納する第２のバッファと、
前記第２のバッファへの入力データ又は前記第２のバッファからの出力データのいずれかをバイト毎に選択する第２のセレクタとを更に備え、
前記第２のセレクタからの出力データを前記内部メモリ又は前記ローテータに入力することを特徴とするＤＭＡ転送制御装置。
【請求項１６】
請求項２又は３に記載のＤＭＡ転送制御装置において、
前記セレクタの選択機能及び前記ローテータのローテート機能は、２つの入力データをバイト単位で任意に組み合わせて生成されるデータの中から１つを選択して出力とするセレクタ・ローテータ回路により実現されたことを特徴とするＤＭＡ転送制御装置。
【請求項１７】
請求項１記載のＤＭＡ転送制御装置において、
転送元アドレスと転送先アドレスとのアライメントが等しい場合では、前記バッファは使用されないことを特徴とするＤＭＡ転送制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータ・システムのバス間でのデータ転送に関する。詳細には、デバイス間でデータを転送するためのダイレクトメモリアクセス（ＤＭＡ）転送制御装置、バス間でデータを転送するためのバスアダプタ、かかるバスアダプタ又はＤＭＡ転送制御装置あるいはその両方を組み込んだコンピュータ・システム、及びバス間でのデータ転送方法に関する。
【背景技術】
【０００２】
従来において、ＣＰＵを経由させずにデータ転送を転送デバイス間で直接行うＤＭＡ転送方法が広く知られており、メモリ同士のデータ転送を両メモリ間で直接行う等において使われている。
【０００３】
ＤＭＡ転送では、データ転送元アドレス、データ転送先アドレス、データ転送サイズ等の転送に必要な情報をＤＭＡ転送制御装置のレジスタ等に設定し、その後ＣＰＵ等が転送開始を制御することにより転送動作を実行する。転送時にはＣＰＵによる転送制御の必要はないため、ＣＰＵを経由する場合に比べて高速にデータ転送を行うことができ、またＣＰＵの負担を減らすことができる。レジスタ等に設定された転送サイズだけ転送が完了したら、ＤＭＡ転送制御装置の設定によって、ＤＭＡ転送終了割り込みをアサートする。ＣＰＵは、ＤＭＡ転送終了割り込みを検知すると、ＤＭＡ転送制御装置のレジスタ等を読み込んで、ＤＭＡ転送の結果やステータスを監視する。
【０００４】
またＤＭＡ転送では、１回のアドレス指定で複数個のバイトデータをまとめて連続的に転送することが可能な、バースト転送を利用する場合が多い。
【０００５】
ＤＭＡ転送において、データ転送元アドレスとデータ転送先アドレスが、アドレスの位置するバイトアライメントが異なるように設定される場合、リードしたデータをそのままライトのデータとして用いることができなくなる。このため、アドレスに応じて、２回分のリードデータからライトデータを再生成する等の処理が必要となる。
【０００６】
このような課題に対し、ある従来に係る転送制御装置は、リードデータをシフトするためのシフタと、シフトされたバイトの選択的な累積を行い、かつ出力バイトを供給するアキュムレータとを備えている（特許文献１参照）。
【０００７】
この従来技術における、転送元アドレスと転送先アドレスとのバイトアライメントが異なる場合のバースト転送動作を、図２２を用いて説明する。１つのリードデータに対して、２フェーズで転送処理が行われる。第１フェーズでは、リードデータを設定アドレスに応じてシフトし、直ちにライトデータとして出力できるバイトに対しては、アキュムレータへのバイトイネーブル信号を有効にしてアキュムレータへ書き込み、同時にアキュムレータよりライトデータを出力する。第２フェーズでは、第１フェーズにおいてライトデータとして出力されなかったバイトに対して、アキュムレータへのバイトイネーブル信号を有効にしてアキュムレータへ書き込みを行い、データを累積させる。これらのバイトは、次回の第１フェーズにおいて、次のリードデータの一部と共に、ライトデータとして出力される。
【特許文献１】特開２０００−２６７９８９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかしながら、上記従来の転送制御装置では、転送元アドレスと転送先アドレスとのバイトアライメントが異なる場合には、１つのリードデータに対して２フェーズの処理が必要となるために、データの転送速度が低下してしまっていた。
【０００９】
本発明は、転送元アドレスと転送先アドレスとのバイトアライメントが異なる場合であっても、転送速度を低下させずに、データ転送を行うことが可能なＤＭＡ転送制御装置を提供することを目的とする。
【課題を解決するための手段】
【００１０】
本発明のＤＭＡ転送制御装置は、データを一時的に格納する内部メモリと、データを一時的に格納するバッファと、前記バッファへの入力データ又は前記バッファからの出力データのいずれかをバイト毎に選択するセレクタと、データをローテートするローテータとを備え、前記内部メモリと、前記バッファを有する前記セレクタと、前記ローテータとが任意の順序で接続されていることを特徴とする。
【００１１】
具体的な接続としては、前記内部メモリは転送元からのリードデータを入力とし、前記バッファは前記内部メモリからのデータを入力とし、前記セレクタは前記内部メモリからのデータと前記バッファからのデータとを入力とし、前記ローテータは前記セレクタで選択されたデータを入力とすることを特徴とする。
【００１２】
あるいは、前記バッファは転送元からのリードデータを入力とし、前記セレクタは前記転送元からのリードデータと前記バッファからのデータとを入力とし、前記ローテータは前記セレクタで選択されたデータを入力とし、前記内部メモリは前記ローテータからのデータを入力とすることを特徴とする。
【００１３】
あるいは、前記内部メモリは転送元からのリードデータを入力とし、前記ローテータは前記内部メモリからのデータを入力とし、前記バッファは前記ローテータからのデータを入力とし、前記セレクタは前記ローテータからのデータと前記バッファからのデータとを入力とすることを特徴とする。
【００１４】
あるいは、前記ローテータは転送元からのリードデータを入力とし、前記バッファは前記ローテータからのデータを入力とし、前記セレクタは前記ローテータからのデータと前記バッファからのデータとを入力とし、前記内部メモリは前記セレクタで選択されたデータを入力とすることを特徴とする。
【００１５】
あるいは、前記ローテータは転送元からのリードデータを入力とし、前記内部メモリは前記ローテータからのデータを入力とし、前記バッファは前記内部メモリからのデータを入力とし、前記セレクタは前記内部メモリからのデータと前記バッファからのデータとを入力とすることを特徴とする。
【００１６】
あるいは、前記バッファは転送元からのリードデータを入力とし、前記セレクタは前記転送元からのリードデータと前記バッファからのデータとを入力とし、前記内部メモリは前記セレクタで選択されたデータを入力とし、前記ローテータは前記内部メモリからのデータを入力とすることを特徴とする。
【００１７】
本発明のＤＭＡ転送制御装置によれば、転送元アドレスと転送先アドレスとのバイトアライメントが異なる場合でも、リードデータの一部を、ライトデータとして出力するタイミングと、次のライトデータ生成用に保存するタイミングとが同じであるため、転送速度を低下させずにＤＭＡ転送を行うことが可能となる。
【００１８】
また、本発明のＤＭＡ転送制御装置において、前記ローテータは、転送元アドレスと転送先アドレスとの差異をローテーション段数決定に用いることを特徴とする。
【００１９】
本発明のＤＭＡ転送制御装置によれば、１回のみのローテート動作によって、転送元アドレスから転送先アドレスへのデータアライメント調整が可能となる。
【００２０】
また、本発明のＤＭＡ転送制御装置において、前記セレクタは、転送元アドレスと転送先アドレスとの差異を選択決定に用いることを特徴とする。
【００２１】
本発明のＤＭＡ転送制御装置によれば、セレクタにおいてライトデータの生成に使われる入力データを的確にバイト毎に選択することが可能となる。
【００２２】
また、本発明のＤＭＡ転送制御装置において、転送元へのリードの転送サイズを決定するリードサイズ決定回路と、転送先へのライトの転送サイズを決定するライトサイズ決定回路との少なくとも一方を備えたことを特徴とする。
【００２３】
本発明のＤＭＡ転送制御装置によれば、設定された転送サイズだけでなく、その他の要因も考慮することで、転送効率がより向上するような転送サイズを決定することが可能となる。
【００２４】
また、本発明のＤＭＡ転送制御装置において、前記リードサイズ決定回路及び前記ライトサイズ決定回路は、転送元アドレスと転送先アドレスとの少なくとも一方を、リードサイズ決定又はライトサイズ決定に利用することを特徴とする。
【００２５】
本発明のＤＭＡ転送制御装置によれば、転送元アドレスと転送先アドレスとのアライメントがずれている場合に、転送サイズを調整することで、転送効率を向上させることが可能となる。
【００２６】
また、本発明のＤＭＡ転送制御装置において、前記リードサイズ決定回路及び前記ライトサイズ決定回路は、転送元からリードするアドレスからの連続領域サイズと、転送先へライトするアドレスからの連続領域サイズとを、リードサイズ決定又はライトサイズ決定に利用することを特徴とする。
【００２７】
本発明のＤＭＡ転送制御装置によれば、連続領域サイズを超えないようにリード転送又はライト転送を調整することで、不連続領域の転送データを扱うための追加回路を必要とせずに、不連続領域のリードデータ又はライトデータ又はその両方に対応したＤＭＡ転送を行うことが可能となる。
【００２８】
また、本発明のＤＭＡ転送制御装置において、前記ローテータは、転送元からリードするアドレスからの連続領域サイズと、転送先へライトするアドレスからの連続領域サイズとを、ローテーション段数決定に用いることを特徴とする。
【００２９】
また、本発明のＤＭＡ転送制御装置において、前記セレクタは、転送元からリードするアドレスからの連続領域サイズと、転送先へライトするアドレスからの連続領域サイズとを選択決定に用いることを特徴とする。
【００３０】
本発明のＤＭＡ転送制御装置によれば、不連続領域サイズのリードデータから連続領域のライトデータを生成する、又は連続領域サイズのリードデータから不連続領域のライトデータを生成する、又は不連続領域サイズのリードデータから異なる不連続領域のライトデータを生成することが可能となり、不連続領域のリードデータ又はライトデータに対応したＤＭＡ転送を高速に行うことが可能となる。
【００３１】
また、本発明のいくつかのＤＭＡ転送制御装置において、データを一時的に格納する第２のバッファと、前記第２のバッファへの入力データ又は前記第２のバッファからの出力データのいずれかをバイト毎に選択する第２のセレクタとを更に備え、前記第２のセレクタからの出力データを前記内部メモリ又は前記ローテータに入力することを特徴とする。
【００３２】
本発明のＤＭＡ転送制御装置によれば、リードデータが転送バス幅よりも小さいデータ幅の場合に、前記第２のバッファにリードデータを蓄積してから内部メモリにデータを格納することで、効率良く内部メモリを使用することが可能となる。
【００３３】
また、本発明のいくつかのＤＭＡ転送制御装置において、前記セレクタの選択機能及び前記ローテータのローテート機能は、２つの入力データをバイト単位で任意に組み合わせて生成されるデータの中から１つを選択して出力とするセレクタ・ローテータ回路により実現されたことを特徴とする。
【００３４】
本発明のＤＭＡ転送制御装置によれば、小規模な回路で選択機能とローテート機能とを実現することができ、回路規模を小さくすることが可能となる。
【００３５】
また、本発明のＤＭＡ転送制御装置において、転送元アドレスと転送先アドレスとのアライメントが等しい場合では、前記バッファは使用されないことを特徴とする。
【００３６】
本発明のＤＭＡ転送制御装置によれば、アライメントの調整が不要な場合においてバッファを使わなくするよう制御することにより、消費電力を抑えることが可能となる。
【００３７】
なお本発明については、特許請求の範囲の独立項及び従属項で詳細に説明されているが、従属項の特徴の組み合わせを独立項の特徴と適切に組み合わせることが可能であり、特許請求の範囲で明示的に説明されているものに限らない。
【発明の効果】
【００３８】
以上説明したように、本発明に係るＤＭＡ転送制御装置によれば、転送元アドレスと転送先アドレスとのバイトアライメントが異なる場合であっても、従来技術と比べて高速にライトデータを生成することができるので、転送速度を低下させずにＤＭＡ転送を行うことが可能である。
【００３９】
また、本発明に係るＤＭＡ転送制御装置によれば、矩形領域のような不連続領域を含むデータの転送を行う場合であっても、特別な回路を必要とせずに不連続領域の転送データに対応したＤＭＡ転送を行うことが可能である。また、不連続領域を含むデータを連続領域のデータや異なる不連続領域を含むデータに変換することも可能であり、高速にＤＭＡ転送を行うことが可能である。
【発明を実施するための最良の形態】
【００４０】
以下、本発明におけるＤＭＡ転送制御装置の実施の形態を図面に基づいて詳細に説明する。なお、本発明の実施の形態において使用される手法・構成は一例であり、本発明はこれらに限定されるものでない。
【００４１】
《実施の形態１》
図１は、本発明の実施の形態１におけるＤＭＡ転送制御装置１００の概略構成を示すブロック図である。本実施形態のＤＭＡ転送制御装置１００は、転送元デバイス又は転送元デバイスが接続されているバスが、バスインタフェースＡ１２０と接続されており、転送先デバイス又は転送先デバイスが接続されているバスが、バスインタフェースＢ１３０と接続されている。
【００４２】
ＤＭＡ転送制御装置１００は、上記のバスインタフェースＡ１２０、バスインタフェースＡ１２０から出力されるリードデータ１２１を入力とする内部メモリ１４０、内部メモリ１４０から出力される内部メモリ出力データ１４１を入力とするバッファ１５０、内部メモリ出力データ１４１とバッファ１５０から出力されるバッファ出力データ１５１とを入力とするセレクタ１６０、セレクタ１６０から出力されるセレクタ出力データ１６１を入力とするローテータ１７０、ローテータ１７０から出力されるローテータ出力データ１７１を入力とするバスインタフェースＢ１３０を有している。
【００４３】
またＤＭＡ転送制御装置１００は、設定レジスタ１１０を有しており、転送サイズ１１１、転送元開始アドレス１１２、転送先開始アドレス１１３、転送元連続領域サイズ１１４、転送先連続領域サイズ１１５、転送元データ幅１１６、転送先データ幅１１７が設定されている。
【００４４】
またＤＭＡ転送制御装置１００は、リードサイズ決定回路１８０、ライトサイズ決定回路１９０を有している。
【００４５】
なお、転送に必要な情報を格納している設定レジスタについては、これに限らず、例えば外部端子より転送情報が入力される等、異なる方法により転送情報を与えても構わないことは明白である。
【００４６】
次に、本実施形態のＤＭＡ転送制御装置について、データ転送の流れを説明する。転送元デバイスからバスインタフェースＡ１２０を介してリードされたリードデータ１２１は、バースト転送を行うために一旦内部メモリ１４０に入れられる。適切なサイズだけデータが内部メモリ１４０に蓄積されたら、内部メモリ１４０からデータリードを行う。内部メモリからの出力データは、セレクタ１６０に入力されると同時に、バッファ１５０にも入力される。バッファ１５０では、データを一時的に蓄えたのち、セレクタ１６０に出力する。セレクタ１６０では、入力された２つのデータのいずれかを、転送先開始アドレス１１３の設定値から転送元開始アドレス１１２の設定値を差し引いた差異に応じてバイト毎に選択する。セレクタからの出力データは、ローテータ１７０に入力される。ローテータ１７０では、前述のアドレス差異に応じてローテーション段数を決定し、これに応じて入力データをローテートする。ローテータ出力データは、バスインタフェースＢ１３０を通って転送先デバイスに送られる。
【００４７】
転送元アドレスと転送先アドレスとのバイトアライメントが異なる場合の転送（アンアライメント転送）の動作例を、図２を用いて説明する。転送バス幅は８バイトである。また、転送元開始アドレスは下位３ビットの値が３、転送先開始アドレスは下位３ビットの値が５であり、転送元と転送先でアドレスのアライメントが転送バス幅でされておらず、また先頭データの途中のバイトからデータが有効となる。
【００４８】
まず内部メモリ１４０より、先頭のリードデータ「ｘｘｘＡＢＣＤＥ」が出力されると、バッファ１５０とセレクタ１６０に入力される。セレクタ１６０では、転送先開始アドレス１１３の設定値の下位３ビットから、転送元開始アドレス１１２の設定値の下位３ビットを差し引いた差異に応じてバイト毎に選択する。この例では、差異が２なので、８バイトのうち後ろの２バイトをバッファ出力データ１５１から選択し、残りは内部メモリ出力データ１４１から選択する。つまり０バイト目から５バイト目は内部メモリ出力データ１４１から、６バイト目から７バイト目はバッファ出力データ１５１から選択されるので、先頭リードデータからは、先頭ライトデータ生成に必要な「ｘｘｘＡＢＣ」のみが選択されて、「ＤＥ」は選択されない。セレクタ出力データ１６１はローテータ１７０に入力され、前述のアドレス差異だけ右方向にローテートされる。つまり入力された「ｘｘｘＡＢＣｘｘ」は、右方向にローテートされ、「ｘｘｘｘｘＡＢＣ」となって出力され、バスインタフェースＢ１３０を通って転送先デバイスに送られる。バッファ１５０に入力された内部メモリ出力データ１４１は、一時的に格納される。
【００４９】
次のサイクルにおいて、内部メモリ１４０より次のリードデータ「ＦＧＨＩＪＫＬＭ」が出力されると、前回と同様にバッファ１５０とセレクタ１６０に入力される。セレクタ１６０では、前回と同様に６バイト目の箇所で選択されるバイトを分けるので、内部メモリ出力データ１４１「ＦＧＨＩＪＫＬＭ」から「ＦＧＨＩＪＫ」、バッファ出力データ１５１から前サイクルのリードデータの一部「ＤＥ」が選択され、「ＦＧＨＩＪＫＤＥ」がセレクタから出力される。このデータはローテータ１７０で前回と同様にローテートされ、「ＤＥＦＧＨＩＪＫ」となってローテータ出力データ１７１として出力され、バスインタフェースＢ１３０を通って転送先デバイスに送られる。
【００５０】
この動作を繰り返してライトデータの生成を行うことで、転送元アドレスと転送先アドレスとのバイトアライメントが異なる場合でも、ライトデータを毎サイクル出力することが可能となり、高速にＤＭＡ転送を行うことができる。
【００５１】
なお、転送元アドレスと転送先アドレスとのバイトアライメントが等しい場合では、セレクタ１６０は、常に内部メモリ出力データ１４１からの入力データを選択され、ローテータ１７０では入力データのローテートを行わずにそのまま出力する。バッファ１５０は使用されないので、クロック供給を制御することで消費電力を抑えることができる。
【００５２】
次に、本実施形態のＤＭＡ転送制御装置について、転送元アドレスと転送先アドレスとのバイトアライメントが異なる場合の発行サイズ調整について説明する。仮に、レジスタに設定された転送サイズ１１１によってのみリードサイズとライトサイズが決められるとすると、リードとライトで同じ転送回数となるように命令が発行される。しかし転送元アドレスと転送先アドレスとのバイトアライメントが異なる場合では、転送回数がリードとライトで同じであっても、転送に有効なデータサイズが常に同じとは限らない。リードの方がライトよりも有効なデータサイズが少ない場合では、ライトの転送回数よりも多くリードの転送回数を発行してから、ライト命令を発行する必要が生じる。多くのシステムにおいては、バスや転送デバイスのプロトコル等によって、１回の命令でアクセスできる転送回数が規定されている。このような場合は、リード命令を２回実行してからライト命令を発行する必要がある。一例を、図３に示す。図３において、１回の命令でアクセスできる転送回数はバスのプロトコルによって２回までに規定されているとする。このとき、２回目のリードの命令でデータを取得してはじめて、ライトに必要なデータがそろう。つまり、必要なデータがそろってからライト命令を発行するため、転送元アドレスと転送先アドレスとのバイトアライメントが同じ場合と比べて、転送が遅くなる。
【００５３】
そこで本発明のＤＭＡ転送制御装置では、上記のような場合において、１回のリード命令が完了したタイミングで、転送回数を１つ減らしたライト転送命令を発行するように調整を行う。この場合の一例を、図４に示す。転送回数の条件は、上記の場合と同じである。ライトの転送回数は本来２回まで発行可能であるが、初回のライトの転送回数を１回とすることで、初回のリードデータ取得後すぐに、ライトデータを書き込むことができる。
【００５４】
このように転送サイズを調整することで、ライトの転送回数を調整しない場合に比べて、ライトデータの到着を早くし、転送を高速化することができる。また早くライトすることで、内部メモリでの過剰なデータ蓄積を防ぎ、内部メモリの空き容量不足によるリードミスを防ぐことができる。
【００５５】
次に、本実施形態のＤＭＡ転送制御装置について、不連続領域のデータ転送を行う場合の発行サイズ調整について説明する。不連続領域のデータをリードする場合は、データが不連続となる箇所で転送が分かれるように命令を実行する。つまり、不連続となる箇所までのデータを転送するよう転送サイズを設定して命令を発行し、次の命令は、次の連続領域からデータを転送するようにアドレスやサイズを設定して発行する。不連続領域のリードデータを扱う場合の一例を、図５に示す。１回の命令でアクセスできる転送回数は、バスのプロトコルによって４回までに規定されているとする。このとき、転送サイズ０ｘ１３を転送元データ幅０ｘ８バイトで割ることにより、必要なリードの転送回数は３回と算出されるが、連続領域リードサイズが０ｘ０ａであるので、これを転送元データ幅０ｘ８バイトで割って算出した２回を、初回のリードの転送回数としてリード命令を発行する。２回目のリード発行では、転送回数は残りの転送サイズ０ｘ０９より２回を発行する。なお、アドレスは次の連続領域の先頭を指定して発行する。なお、ライトの発行のタイミングについては、図示の例に限らない。
【００５６】
不連続領域のライトデータを扱う場合でも、同様に発行サイズ調整を行って対応する。図６に、ライトの場合の一例を示す。図６において、１回の命令でアクセスできる転送回数はバスのプロトコルによって４回までに規定されているとする。ライトにおいて転送回数は、転送サイズ０ｘ１３を転送元データ幅０ｘ８バイトで割ることにより、必要なライトの転送回数は３回と算出されるが、連続領域ライトサイズが０ｘ０ａであるので、これを転送元データ幅０ｘ８バイトで割って算出した２回を、初回のライトの転送回数としてライト命令を発行する。２回目のライト発行では、転送回数は残りの転送サイズ０ｘ０９より２回を発行する。なおアドレスは、次の連続領域の先頭を指定して発行する。
【００５７】
不連続領域のリードデータとライトデータを同時に扱う場合の一例を図７に示す。図７において、１回の命令でアクセスできる転送回数はバスのプロトコルによって４回までに規定されているとする。リードデータは、先に説明した不連続領域データをリードする場合の方法により取得する。ライトでは、転送サイズ０ｘ１３を転送元データ幅０ｘ８バイトで割ることにより、必要なライトの転送回数は３回と算出されるが、リードの不連続領域に対応するために、連続領域リードサイズが０ｘ０ａであるので、これを転送元データ幅０ｘ８バイトで割って算出した２回を、初回のライトの転送回数としてライト命令を発行する。２回目のライト発行では、連続領域ライトサイズ０ｘ０ｃから前回の転送サイズ０ｘ０ａを引いて算出した、残りの連続領域ライトサイズが０ｘ０２なので、ライトの不連続領域に対応するためにここでライトデータを区切って、転送回数は１回で発行する。３回目のライトでは、転送サイズ０ｘ１３から既に転送を行ったサイズ０ｘ０ｃを引いた値が０ｘ０７であるが、発行アドレスのアライメントにより、転送回数を２回にして発行する。
【００５８】
なお、これらの説明はあくまで一例であり、リードやライトのタイミングや転送回数はこれに限らない。このように転送サイズと転送アドレスを調整することで、不連続領域のデータも、特別な回路を必要とせずに連続領域のデータと同様に扱うことができる。
【００５９】
《実施の形態２》
図８は、本発明の実施の形態２におけるＤＭＡ転送制御装置２００の概略構成を示すブロック図である。本実施形態のＤＭＡ転送制御装置２００は、転送元デバイスが接続されているバスが、バスインタフェースＡ２２０と接続されており、転送先デバイスが接続されているバスが、バスインタフェースＢ２３０と接続されている。
【００６０】
ＤＭＡ転送制御装置２００は、上記のバスインタフェースＡ２２０、バスインタフェースＡ２２０から出力されるリードデータ２２１を入力とするバッファ２５０、リードデータ２２１とバッファ２５０から出力されるバッファ出力データ２５１とを入力とするセレクタ２６０、セレクタ２６０から出力されるセレクタ出力データ２６１を入力とするローテータ２７０、ローテータ２７０から出力されるローテータ出力データ２７１を入力とする内部メモリ２４０、内部メモリ２４０から出力される内部メモリ出力データ２４１を入力とするバスインタフェースＢ２３０を有している。
【００６１】
またＤＭＡ転送制御装置２００は、設定レジスタ２１０を有しており、転送サイズ２１１、転送元開始アドレス２１２、転送先開始アドレス２１３、転送元連続領域サイズ２１４、転送先連続領域サイズ２１５、転送元データ幅２１６、転送先データ幅２１７が設定されている。
【００６２】
またＤＭＡ転送制御装置２００は、リードサイズ決定回路２８０、ライトサイズ決定回路２９０を有している。
【００６３】
なお、転送に必要な情報を格納している設定レジスタについては、これに限らず、例えば外部端子より転送情報が入力される等、異なる方法により転送情報を与えても構わないことは明白である。
【００６４】
次に、本実施形態のＤＭＡ転送制御装置について、データ転送の流れを説明する。転送元デバイスからバスインタフェースＡ２２０を介してリードされたリードデータ２２１は、セレクタ２６０に入力されると同時に、バッファ２５０にも入力される。バッファ２５０では、データを一時的に蓄えたのち、セレクタ２６０に出力する。セレクタ２６０では、入力された２つのデータのいずれかを、転送先開始アドレス２１３の設定値から転送元開始アドレス２１２の設定値を差し引いた差異に応じてバイト毎に選択する。セレクタからの出力データは、ローテータ２７０に入力される。ローテータ２７０では、前述のアドレス差異に応じてローテーション段数を決定し、これに応じて入力データをローテートする。出力データは、バースト転送のために一旦内部メモリ２４０に入れられる。適切なサイズだけデータが内部メモリ２４０に蓄積されたら、内部メモリ２４０からデータリードを行う。内部メモリからの出力データは、バスインタフェースＢ２３０を通って転送先デバイスに送られる。
【００６５】
転送元アドレスと転送先アドレスとのバイトアライメントが異なる場合の転送動作の例を、図９を用いて説明する。転送バス幅は８バイトである。また、転送元開始アドレスは下位３ビットが３、転送先開始アドレスは下位３ビットが５と、転送元転送先共にアドレスが転送バス幅でアライメントされておらず、先頭データの途中のバイトからデータが有効となる。
【００６６】
まずバスインタフェースＡ２２０より、先頭のリードデータ「ｘｘｘＡＢＣＤＥ」が送られると、バッファ２５０とセレクタ２６０に入力される。セレクタ２６０では、転送先開始アドレス２１３の設定値の下位３ビットから、転送元開始アドレス２１２の設定値の下位３ビットを差し引いた差異に応じてバイト毎に選択する。この例では、差異が２なので、８バイトのうち後ろの２バイトをバッファ出力データ２５１から選択し、残りは内部メモリ出力データ２４１から選択する。つまり０バイト目から５バイト目は内部メモリ出力データ２４１、６バイト目から７バイト目はバッファ出力データ２５１から選択されるので、先頭リードデータからは、先頭ライトデータ生成に必要な「ｘｘｘＡＢＣ」のみが選択されて、「ＤＥ」は選択されない。セレクタ出力データ２６１はローテータ２７０に入力され、前述のアドレス差異だけ右方向にローテートされる。つまり入力された「ｘｘｘＡＢＣｘｘ」は、右方向に２つローテートされ、「ｘｘｘｘｘＡＢＣ」となって出力され、内部メモリ２４０に送られる。バッファ２５０に入力されたリードデータ２２１は、一時的に格納される。
【００６７】
次のサイクルにおいて、バスインタフェースＡ２２０より次のリードデータ「ＦＧＨＩＪＫＬＭ」が出力されると、前回と同様にバッファ２５０とセレクタ２６０に入力される。セレクタ２６０では、前回と同様に６バイト目の箇所で選択されるバイトを分けるので、内部メモリ出力データ２４１「ＦＧＨＩＪＫＬＭ」から「ＦＧＨＩＪＫ」、バッファ出力データ２５１から前サイクルのリードデータの一部「ＤＥ」が選択され、「ＦＧＨＩＪＫＤＥ」がセレクタから出力される。このデータはローテータ２７０で前回と同様にローテートされ、「ＤＥＦＧＨＩＪＫ」となってローテータ出力データ２７１として出力され、内部メモリ２４０に送られる。
【００６８】
この動作を繰り返してリードデータを内部メモリへ取り込むことで、転送元アドレスと転送先アドレスとのバイトアライメントが異なる場合でも、リードデータを毎サイクル取り込むことが可能となる。ライトデータも、転送元アドレスに応じて適切なデータが内部メモリに格納されているので、高速にＤＭＡ転送を行うことができる。
【００６９】
なお、転送元アドレスと転送先アドレスとのバイトアライメントが等しい場合では、セレクタ２６０は、常にリードデータ２２１からの入力データを選択され、ローテータ２７０では入力データのローテートを行わずにそのまま出力する。バッファ２５０は使用されないので、クロック供給を制御することで消費電力を抑えることができる。
【００７０】
また、本実施形態のＤＭＡ転送制御装置では、発行サイズ調整が可能であるが、転送元アドレスと転送先アドレスとのバイトアライメントが異なる場合についてと、不連続領域のデータ転送を行う場合についてと共に、実施の形態１での説明と同様である。
【００７１】
次に、本実施形態のＤＭＡ転送制御装置についての、転送バス幅よりも小さいデータ幅でリード転送する場合について説明する。バッファ２５０では、有効なリードデータのバイトのみバッファに書き込む機能を有しており、どのバイトを書き込むかは、転送元開始アドレスと転送データ幅を用いて決定することができる。有効なリードデータ２２１を順にバッファ２５０に蓄積していき、転送バス幅分だけデータがリードされたら、内部メモリ２４０へ格納する。リードデータが蓄積されるまでは格納は行わない。
【００７２】
動作の例を、図１０を用いて説明する。転送元デバイスからのリードデータ２２１は、初回のリードデータ「ｘＡｘｘｘｘｘｘ」がリードされると、バッファ２５０では下位アドレスが０ｘ１の「Ａ」が書き込まれる。この時に、他のバイトについては書き込みされない。ただし下位アドレスが０ｘ０の「ｘ」の書き込みはどちらでも構わない。次のサイクルにリードデータ「ｘｘＢＣｘｘｘｘ」がリードされると、バッファ２５０には下位アドレスが０ｘ２，０ｘ３の「ＢＣ」が書き込まれる。このとき、他のバイトは書き込みされずに以前の値を保持しているので、バッファ２５０のデータは「ｘＡＢＣｘｘｘｘ」となる。これを毎サイクル繰り返していくと、バッファ２５０のデータは「ｘＡＢＣＤＥＦＧ」となる。次にリードデータ２２１で「ＨＩｘｘｘｘｘｘ」がリードされると、セレクタ２６０では、転送元開始アドレスと転送先開始アドレスとの差異に基づいて、リードデータ２２１の「Ｈ」と、バッファデータ２５１の「ＡＢＣＤＥＦＧ」が選択され、「ＨＡＢＣＤＥＦＧ」が出力される。このセレクタ出力データ２６１は、ローテータ２７０に入力される。ローテータ２７０では、前述のアドレス差異に基づいて入力されるデータをローテートして「ＡＢＣＤＥＦＧＨ」が出力されて、このデータが内部メモリ２４０に格納される。
【００７３】
このようにリードデータを扱うことで、転送バス幅よりも小さいデータ幅でリード転送する場合でも、転送バス幅でまとめて内部メモリに格納することが可能となり、効率良く内部メモリを使用することができる。なお、転送バス幅よりも小さいデータ幅でライト転送する場合については、ライトデータが複数サイクルに分けてライトされるのみで、本ＤＭＡ転送制御装置内でのデータ転送方法は、転送バス幅と同じデータ幅でライト転送する場合と変わらない。
【００７４】
《実施の形態３》
図１１は、本発明の実施の形態３におけるＤＭＡ転送制御装置３００の概略構成を示すブロック図である。本実施形態のＤＭＡ転送制御装置３００は、転送元デバイス又は転送元デバイスが接続されているバスが、バスインタフェースＡ３２０と接続されており、転送先デバイス又は転送先デバイスが接続されているバスが、バスインタフェースＢ３３０と接続されている。
【００７５】
ＤＭＡ転送制御装置３００は、上記のバスインタフェースＡ３２０、バスインタフェースＡ３２０から出力されるリードデータ３２１を入力とする内部メモリ３４０、内部メモリ３４０から出力される内部メモリ出力データ３４１を入力とするローテータ３７０、ローテータ３７０から出力されるローテータ出力データ３７１を入力とするバッファ３５０、ローテータ出力データ３７１とバッファ３５０から出力されるバッファ出力データ３５１とを入力とするセレクタ３６０、セレクタ３６０から出力されるセレクタ出力データ３６１を入力とするバスインタフェースＢ３３０を有している。
【００７６】
またＤＭＡ転送制御装置３００は、設定レジスタ３１０を有しており、転送サイズ３１１、転送元開始アドレス３１２、転送先開始アドレス３１３、転送元連続領域サイズ３１４、転送先連続領域サイズ３１５、転送元データ幅３１６、転送先データ幅３１７が設定されている。
【００７７】
またＤＭＡ転送制御装置３００は、リードサイズ決定回路３８０、ライトサイズ決定回路３９０を有している。
【００７８】
なお、転送に必要な情報を格納している設定レジスタについては、これに限らず、例えば外部端子より転送情報が入力される等、異なる方法により転送情報を与えても構わないことは明白である。
【００７９】
次に、本実施形態のＤＭＡ転送制御装置について、データ転送の流れを説明する。転送元デバイスからバスインタフェースＡ３２０を介してリードされたリードデータ３２１は、バースト転送を行うために一旦内部メモリ３４０に入れられる。適切なサイズだけデータが内部メモリ３４０に蓄積されたら、内部メモリ３４０からデータリードを行う。内部メモリからの出力データは、ローテータ３７０に入力される。ローテータ３７０では、転送先開始アドレス３１３の設定値から転送元開始アドレス３１２の設定値を差し引いたアドレス差異に応じてローテーション段数を決定して入力データをローテートする。ローテータ出力データ３７１は、セレクタ３６０に入力されると同時に、バッファ３５０にも入力される。バッファ３５０では、データを一時的に蓄えたのち、セレクタ３６０に出力する。セレクタ３６０では、入力された２つのデータのいずれかを、前述のアドレス差異に応じてバイト毎に選択する。セレクタからの出力データは、バスインタフェースＢ３３０を通って転送先デバイスに送られる。
【００８０】
転送元アドレスと転送先アドレスとのバイトアライメントが異なる場合の転送動作の例を、図１２を用いて説明する。転送バス幅は８バイトである。また、転送元開始アドレスは下位３ビットが３、転送先開始アドレスは下位３ビットが５と、転送元転送先共にアドレスが転送バス幅でアライメントされておらず、先頭データの途中のバイトからデータが有効となる。
【００８１】
まずバスインタフェースＡ３２０より、リードデータが内部メモリ３４０に格納される。ライトデータ生成に必要なデータが格納されたら、内部メモリ３４０からデータをリードする。先頭のリードデータ「ｘｘｘＡＢＣＤＥ」が出力されると、ローテータ３７０に入力される。ローテータ３７０では、転送先開始アドレス３１３の設定値の下位３ビットから、転送元開始アドレス３１２の設定値の下位３ビットを差し引いた差異に応じてローテートを行う。この例では、差異が２なので、入力データを右方向に２だけローテートして、「ＤＥｘｘｘＡＢＣ」が出力される。ローテータ出力データ３７１は、バッファ３５０とセレクタ３６０に入力される。セレクタ３６０では、前述のアドレス差異に応じてバイト毎に選択する。ローテート済みのデータから選択するので、この例ではアドレス差異２より、８バイトのうち前の２バイトをバッファ出力データ３５１から選択し、残りはローテータ出力データ３７１から選択する。つまり、０バイト目から１バイト目はバッファ出力データ３５１、２バイト目から７バイト目はローテータ出力データ３７１から選択されるので、先頭リードデータからは、先頭ライトデータ生成に必要な「ｘｘｘＡＢＣ」のみが選択されて、「ＤＥ」は選択されない。セレクタ出力データ３６１は、バスインタフェースＢ３３０を通って転送先デバイスに送られる。バッファ３５０に入力されたローテータ出力データ３７１は、一時的に格納される。
【００８２】
次のサイクルにおいて、内部メモリ３４０より次のリードデータ「ＦＧＨＩＪＫＬＭ」が出力されると、前回と同様にローテータ３７０でローテートされ、「ＬＭＦＧＨＩＪＫ」が出力される。このデータは、バッファ３５０とセレクタ３６０に入力される。セレクタ３６０では、前回と同様に２バイト目の箇所で選択されるバイトを分けるので、ローテータ出力データ３７１「ＬＭＦＧＨＩＪＫ」から「ＦＧＨＩＪＫ」、バッファ出力データ３５１から前サイクルのリードデータの一部「ＤＥ」が選択され、「ＤＥＦＧＨＩＪＫ」がセレクタから出力される。このデータは、バスインタフェースＢ３３０を通って転送先デバイスに送られる。
【００８３】
この動作を繰り返してライトデータの生成を行うことで、転送元アドレスと転送先アドレスとのバイトアライメントが異なる場合でも、ライトデータを毎サイクル出力することが可能となり、高速にＤＭＡ転送を行うことができる。
【００８４】
なお、転送元アドレスと転送先アドレスとのバイトアライメントが等しい場合では、ローテータ３７０では入力データのローテートを行わずにそのまま出力し、セレクタ３６０は常にローテータ出力データ３７１からの入力データを選択する。バッファ３５０は使用されないので、クロック供給を制御することで消費電力を抑えることができる。
【００８５】
また、本実施形態のＤＭＡ転送制御装置では発行サイズ調整が可能であるが、転送元アドレスと転送先アドレスとのバイトアライメントが異なる場合についてと、不連続領域のデータ転送を行う場合についてと共に、実施の形態１での説明と同様である。
【００８６】
次に、本実施形態のＤＭＡ転送制御装置について、不連続領域サイズを含むデータの効率的な転送方法について説明する。ローテータ３７０では、不連続領域サイズを含むデータ転送に対応するため、転送元開始アドレスと転送先開始アドレスとの差異だけでなく、連続転送データサイズも考慮してローテーション段数を決定する。またバッファ３５０は、有効なデータのバイトのみ書き込むことができ、データの蓄積が可能である。
【００８７】
図１３では、不連続領域サイズを含むリードデータから、連続領域のライトデータを生成して転送を行う様子を示している。リードデータ３２１は、不連続データのまま内部メモリ３４０に格納される。まず内部メモリ３４０より出力される先頭のリードデータ「ｘＡＢＣＤＥｘｘ」が、ローテータ３７０に入力される。ローテータ３７０では、転送先開始アドレス１１３の設定値の下位３ビットから、転送元開始アドレス１１２の設定値の下位３ビットを差し引いた差異が４であるので右方向に４つローテートし、ローテータ出力データ３７１は「ＤＥｘｘｘＡＢＣ」となる。このデータは、バッファ３５０とセレクタ３６０に入力される。セレクタ３６０では、転送先開始アドレスにより、５バイト目の箇所で選択されるバイトが分けられるので、先頭リードデータからは、先頭ライトデータ生成に必要な「ＡＢＣ」のみが選択される。セレクタ出力データ３６１は、バスインタフェースＢ３３０を通って転送先デバイスに送られる。バッファ３５０に入力されたローテータ出力データ３７１は、一時的に格納される。
【００８８】
次のサイクルにおいて、内部メモリ３４０より次のリードデータ「ｘＦＧＨＩＪｘｘ」が、ローテータ３７０に入力される。ローテーション段数は、前サイクルでの値４に、転送元連続領域サイズ５を加えて９となり、これを転送バス幅８で割った余りの１つだけ、右方向にローテートを行う。ローテータ出力データ３７１は、「ｘｘＦＧＨＩＪｘ」となり、バッファ３５０とセレクタ３６０に入力される。バッファ３５０では、有効バイト「ＦＧＨＩＪ」のみ書き込みを行い、他のバイトのデータはそのまま蓄積されるので、次のサイクルでのバッファ出力データ３５１は「ＤＥＦＧＨＩＪｘ」となる。セレクタ３６０では、選択バイトの指定に、前サイクルでの５に転送元連続領域サイズの５を加えて１０として、これを転送バス幅８で割った余りの２を用い、２バイト目の箇所で選択されるバイトを分けるので、セレクタ出力データ３６１は、「ＤＥＦＧＨＩＪｘ」となる。しかしこのサイクルでは、次のライトデータ生成に必要なリードデータが不足しているので、ライトは行わない。
【００８９】
次のサイクルにおいて、内部メモリ３４０より次のリードデータ「ｘＫＬＭＮＯｘｘ」が、ローテータ３７０に入力される。ローテーション段数は、前サイクルでの値１に、転送元連続領域サイズ５を加えて６となるので、右方向に６つローテートする。ローテータ出力データ３７１は、「ＬＭＮＯｘｘｘＫ」となり、バッファ３５０とセレクタ３６０に入力される。セレクタ３６０では、前サイクルでの選択バイト箇所２に転送元連続領域サイズ５を加えて７を算出し、７バイト目の箇所で選択されるバイトを分けるので、セレクタ出力データ３６１は「ＤＥＦＧＨＩＪＫ」となる。このデータは、バスインタフェースＢ３３０を通って転送先デバイスに送られる。
【００９０】
このようにしてデータを転送することで、不連続領域を含むリードデータであっても、連続領域データや異なる不連続領域を含むデータなど、ライトに適したデータに変換することで、不連続領域のリードデータに対応したＤＭＡ転送を高速に行うことができる。また同様の方法により、セレクタでのデータ選択バイトやローテータのローテーション段数を調整することで、不連続領域を含むライトデータ、又はライトデータとリードデータ両方の場合でも転送を行うことができる。
【００９１】
《実施の形態４》
図１４は、本発明の実施の形態４におけるＤＭＡ転送制御装置４００の概略構成を示すブロック図である。本実施形態のＤＭＡ転送制御装置４００は、転送元デバイス又は転送元デバイスが接続されているバスが、バスインタフェースＡ４２０と接続されており、転送先デバイス又は転送先デバイスが接続されているバスが、バスインタフェースＢ４３０と接続されている。
【００９２】
ＤＭＡ転送制御装置４００は、上記のバスインタフェースＡ４２０、バスインタフェースＡ４２０から出力されるリードデータ４２１を入力とするローテータ４７０、ローテータ４７０から出力されるローテータ出力データ４７１を入力とするバッファ４５０、ローテータ出力データ４７１とバッファ４５０から出力されるバッファ出力データ４５１とを入力とするセレクタ４６０、セレクタ４６０から出力されるセレクタ出力データ４６１を入力とする内部メモリ４４０、内部メモリ４４０から出力される内部メモリ出力データ４４１を入力とするバスインタフェースＢ４３０を有している。
【００９３】
またＤＭＡ転送制御装置４００は、設定レジスタ４１０を有しており、転送サイズ４１１、転送元開始アドレス４１２、転送先開始アドレス４１３、転送元連続領域サイズ４１４、転送先連続領域サイズ４１５、転送元データ幅４１６、転送先データ幅４１７が設定されている。
【００９４】
またＤＭＡ転送制御装置４００は、リードサイズ決定回路４８０、ライトサイズ決定回路４９０を有している。
【００９５】
なお、転送に必要な情報を格納している設定レジスタについては、これに限らず、例えば外部端子より転送情報が入力される等、異なる方法により転送情報を与えても構わないことは明白である。
【００９６】
次に、本実施形態のＤＭＡ転送制御装置について、データ転送の流れを説明する。転送元デバイスからバスインタフェースＡ４２０を介してリードされたリードデータ４２１は、ローテータ４７０に入力される。ローテータ４７０では、転送先開始アドレス４１３の設定値から転送元開始アドレス４１２の設定値を差し引いたアドレス差異に応じてローテーション段数を決定して入力データをローテートする。ローテータ出力データ４７１は、セレクタ４６０に入力されると同時に、バッファ４５０にも入力される。バッファ４５０では、データを一時的に蓄えたのち、セレクタ４６０に出力する。セレクタ４６０では、入力された２つのデータのいずれかを、前述のアドレス差異に応じてバイト毎に選択する。セレクタからの出力データは、バースト転送を行うために一旦内部メモリ４４０に入れられる。適切なサイズだけデータが内部メモリ４４０に蓄積されたら、内部メモリ４４０からデータリードを行う。内部メモリからの出力データは、バスインタフェースＢ４３０を通って転送先デバイスに送られる。
【００９７】
転送元アドレスと転送先アドレスとのバイトアライメントが異なる場合の転送動作の例を、図１５を用いて説明する。転送バス幅は８バイトである。また、転送元開始アドレスは下位３ビットが３、転送先開始アドレスは下位３ビットが５と、転送元転送先共にアドレスが転送バス幅でアライメントされておらず、先頭データの途中のバイトからデータが有効となる。
【００９８】
まずバスインタフェースＡ４２０より、先頭のリードデータ「ｘｘｘＡＢＣＤＥ」が出力されると、ローテータ４７０に入力される。ローテータ４７０では、転送先開始アドレス４１３の設定値の下位３ビットから、転送元開始アドレス４１２の設定値の下位３ビットを差し引いた差異に応じてローテートする。この例では、差異が２なので、入力データを右方向に２だけローテートして、「ＤＥｘｘｘＡＢＣ」が出力される。ローテータ出力データ４７１は、バッファ４５０とセレクタ４６０に入力される。セレクタ４６０では、前述のアドレス差異に応じてバイト毎に選択する。この例では、８バイトのうち前の２バイトをバッファ出力データ４５１から選択し、残りはローテータ出力データ４７１から選択する。つまり０バイト目から１バイト目はバッファ出力データ４５１、２バイト目から７バイト目はローテータ出力データ４７１から選択されるので、先頭リードデータからは、先頭ライトデータ生成に必要な「ｘｘｘＡＢＣ」のみが選択されて、「ＤＥ」は選択されない。セレクタ出力データ４６１は、内部メモリ４４０に格納される。バッファ４５０に入力されたローテータ出力データ４７１は、一時的に格納される。
【００９９】
次のサイクルにおいて、バスインタフェースＡ４２０より次のリードデータ「ＦＧＨＩＪＫＬＭ」が出力されると、前回と同様にローテータ４７０でローテートされ、「ＬＭＦＧＨＩＪＫ」が出力される。このデータは、バッファ４５０とセレクタ４６０に入力される。セレクタ４６０では、前回と同様に２バイト目の箇所で選択されるバイトを分けるので、ローテータ出力データ４７１「ＬＭＦＧＨＩＪＫ」から「ＦＧＨＩＪＫ」、バッファ出力データ４５１から前サイクルのリードデータの一部「ＤＥ」が選択され、「ＤＥＦＧＨＩＪＫ」がセレクタから出力される。このデータは、内部メモリ３４０に格納される。ライトデータ生成に必要なデータが格納されたら、内部メモリ３４０からデータをリードし、バスインタフェースＢ４３０を通って転送先デバイスに送られる。
【０１００】
この動作を繰り返してライトデータの生成を行うことで、転送元アドレスと転送先アドレスとのバイトアライメントが異なる場合でも、ライトデータを毎サイクル出力することが可能となり、高速にＤＭＡ転送を行うことができる。
【０１０１】
なお、転送元アドレスと転送先アドレスとのバイトアライメントが等しい場合では、ローテータ４７０では入力データのローテートを行わずにそのまま出力し、セレクタ４６０は常にローテータ出力データ４７１からの入力データを選択する。バッファ４５０は使用されないので、クロック供給を制御することで消費電力を抑えることができる。
【０１０２】
また、本実施形態のＤＭＡ転送制御装置では、発行サイズ調整が可能であるが、転送元アドレスと転送先アドレスとのバイトアライメントが異なる場合についてと、不連続領域のデータ転送を行う場合についてと共に、実施の形態１での説明と同様である。
【０１０３】
また、本実施形態のＤＭＡ転送制御装置では、転送バス幅よりも小さいデータ幅でのリード転送が可能であるが、動作については実施の形態２での説明と同様である。
【０１０４】
また、本実施形態のＤＭＡ転送制御装置では、不連続領域サイズを含むデータの効率的な転送方法が可能であるが、動作については実施の形態３での説明と同様である。
【０１０５】
《実施の形態５》
図１６は、本発明の実施の形態５におけるＤＭＡ転送制御装置５００の概略構成を示すブロック図である。本実施形態のＤＭＡ転送制御装置５００は、転送元デバイス又は転送元デバイスが接続されているバスが、バスインタフェースＡ５２０と接続されており、転送先デバイス又は転送先デバイスが接続されているバスが、バスインタフェースＢ５３０と接続されている。
【０１０６】
ＤＭＡ転送制御装置５００は、上記のバスインタフェースＡ５２０、バスインタフェースＡ５２０から出力されるリードデータ５２１を入力とするローテータ５７０、ローテータ５７０から出力されるローテータ出力データ５７１を入力とする内部メモリ５４０、内部メモリ５４０から出力される内部メモリ出力データ５４１を入力とするバッファ５５０、ローテータ出力データ５７１とバッファ５５０から出力されるバッファ出力データ５５１とを入力とするセレクタ５６０、セレクタ５６０から出力されるセレクタ出力データ５６１を入力とするバスインタフェースＢ５３０を有している。
【０１０７】
またＤＭＡ転送制御装置５００は、設定レジスタ５１０を有しており、転送サイズ５１１、転送元開始アドレス５１２、転送先開始アドレス５１３、転送元連続領域サイズ５１４、転送先連続領域サイズ５１５、転送元データ幅５１６、転送先データ幅５１７が設定されている。
【０１０８】
またＤＭＡ転送制御装置５００は、リードサイズ決定回路５８０、ライトサイズ決定回路５９０を有している。
【０１０９】
なお、転送に必要な情報を格納している設定レジスタについては、これに限らず、例えば外部端子より転送情報が入力される等、異なる方法により転送情報を与えても構わないことは明白である。
【０１１０】
次に、本実施形態のＤＭＡ転送制御装置について、データ転送の流れを説明する。転送元デバイスからバスインタフェースＡ５２０を介してリードされたリードデータ５２１は、バースト転送を行うために一旦内部メモリ５４０に入れられる。適切なサイズだけデータが内部メモリ５４０に蓄積されたら、内部メモリ５４０からデータリードを行う。内部メモリからの出力データは、ローテータ５７０に入力される。ローテータ５７０では、転送先開始アドレス５１３の設定値から転送元開始アドレス５１２の設定値を差し引いたアドレス差異に応じてローテーション段数を決定して入力データをローテートする。ローテータ出力データ５７１は、セレクタ５６０に入力されると同時に、バッファ５５０にも入力される。バッファ５５０では、データを一時的に蓄えたのち、セレクタ５６０に出力する。セレクタ５６０では、入力された２つのデータのいずれかを、前述のアドレス差異に応じてバイト毎に選択する。セレクタからの出力データは、バスインタフェースＢ５３０を通って転送先デバイスに送られる。
【０１１１】
転送元アドレスと転送先アドレスとのバイトアライメントが異なる場合の転送動作の例を、図１７を用いて説明する。転送バス幅は８バイトである。また、転送元開始アドレスは下位３ビットが３、転送先開始アドレスは下位３ビットが５と、転送元転送先共にアドレスが転送バス幅でアライメントされておらず、先頭データの途中のバイトからデータが有効となる。
【０１１２】
まずバスインタフェースＡ５２０より、先頭のリードデータ「ｘｘｘＡＢＣＤＥ」が出力されると、ローテータ５７０に入力される。ローテータ５７０では、転送先開始アドレス５１３の設定値の下位３ビットから、転送元開始アドレス５１２の設定値の下位３ビットを差し引いた差異に応じてローテートを行う。この例では、差異が２なので、入力データを右方向に２だけローテートして、「ＤＥｘｘｘＡＢＣ」が出力される。ローテータ出力データ５７１は、内部メモリ５４０に格納される。次のサイクルにおいて、次のリードデータ「ＦＧＨＩＪＫＬＭ」が出力されると、前回と同様にローテータ５７０でローテートされ、「ＬＭＦＧＨＩＪＫ」が出力されて内部メモリ５４０に格納される。
【０１１３】
ライトデータ生成に必要なデータが全て格納されたら、内部メモリ５４０からデータをリードして、バッファ５５０とセレクタ５６０に入力される。セレクタ５６０では、前述のアドレス差異に応じてバイト毎に選択する。この例では、８バイトのうち前の２バイトをバッファ出力データ５５１から選択し、残りは内部メモリ出力データ５４１から選択する。つまり０バイト目から１バイト目はバッファ出力データ５５１、２バイト目から７バイト目は内部メモリ出力データ５４１から選択されるので、先頭リードデータからは、先頭ライトデータ生成に必要な「ｘｘｘＡＢＣ」のみが選択されて、「ＤＥ」は選択されない。セレクタ出力データ５６１は、バスインタフェースＢ５３０を通って転送先デバイスに送られる。バッファ５５０に入力された内部メモリ出力データ５４１は、一時的に格納される。
【０１１４】
次のサイクルにおいて、内部メモリ５４０より次のリードデータ「ＦＧＨＩＪＫＬＭ」が出力されると、前回と同様にローテータ５７０でローテートされ、「ＬＭＦＧＨＩＪＫ」が出力される。このデータは、バッファ５５０とセレクタ５６０に入力される。セレクタ５６０では、前回と同様に２バイト目の箇所で選択されるバイトを分けるので、ローテータ出力データ３７１「ＬＭＦＧＨＩＪＫ」から「ＦＧＨＩＪＫ」、バッファ出力データ５５１から前サイクルのリードデータの一部「ＤＥ」が選択され、「ＤＥＦＧＨＩＪＫ」がセレクタから出力される。このデータは、バスインタフェースＢ５３０を通って転送先デバイスに送られる。
【０１１５】
この動作を繰り返してライトデータの生成を行うことで、転送元アドレスと転送先アドレスとのバイトアライメントが異なる場合でも、ライトデータを毎サイクル出力することが可能となり、高速にＤＭＡ転送を行うことができる。
【０１１６】
なお、転送元アドレスと転送先アドレスとのバイトアライメントが等しい場合では、ローテータ５７０では入力データのローテートを行わずにそのまま出力し、セレクタ５６０は常に内部メモリ出力データ５４１からの入力データを選択する。バッファ５５０は使用されないので、クロック供給を制御することで消費電力を抑えることができる。
【０１１７】
また、本実施形態のＤＭＡ転送制御装置では、発行サイズ調整が可能であるが、転送元アドレスと転送先アドレスとのバイトアライメントが異なる場合についてと、不連続領域のデータ転送を行う場合についてと共に、実施の形態１での説明と同様である。
【０１１８】
《実施の形態６》
図１８は、本発明の実施の形態６におけるＤＭＡ転送制御装置６００の概略構成を示すブロック図である。本実施形態のＤＭＡ転送制御装置６００は、転送元デバイスが接続されているバスが、バスインタフェースＡ６２０と接続されており、転送先デバイスが接続されているバスが、バスインタフェースＢ６３０と接続されている。
【０１１９】
ＤＭＡ転送制御装置６００は、上記のバスインタフェースＡ６２０、バスインタフェースＡ６２０から出力されるリードデータ６２１を入力とするバッファ６５０、リードデータ６２１とバッファ６５０から出力されるバッファ出力データ６５１とを入力とするセレクタ６６０、セレクタ６６０から出力されるセレクタ出力データ６６１を入力とする内部メモリ６４０、内部メモリ６４０から出力される内部メモリ出力データ６４１を入力とするローテータ６７０、ローテータ６７０から出力されるローテータ出力データ６７１を入力とするバスインタフェースＢ６３０を有している。
【０１２０】
またＤＭＡ転送制御装置６００は、設定レジスタ６１０を有しており、転送サイズ６１１、転送元開始アドレス６１２、転送先開始アドレス６１３、転送元連続領域サイズ６１４、転送先連続領域サイズ６１５、転送元データ幅６１６、転送先データ幅６１７が設定されている。
【０１２１】
またＤＭＡ転送制御装置６００は、リードサイズ決定回路６８０、ライトサイズ決定回路６９０を有している。
【０１２２】
なお、転送に必要な情報を格納している設定レジスタについては、これに限らず、例えば外部端子より転送情報が入力される等、異なる方法により転送情報を与えても構わないことは明白である。
【０１２３】
次に、本実施形態のＤＭＡ転送制御装置について、データ転送の流れを説明する。転送元デバイスからバスインタフェースＡ６２０を介してリードされたリードデータ６２１は、セレクタ６６０に入力されると同時に、バッファ６５０にも入力される。バッファ６５０では、データを一時的に蓄えたのち、セレクタ６６０に出力する。セレクタ６６０では、入力された２つのデータのいずれかを、転送先開始アドレス６１３の設定値から転送元開始アドレス６１２の設定値を差し引いた差異に応じてバイト毎に選択する。セレクタからの出力データは、バースト転送のために一旦内部メモリ６４０に入れられる。適切なサイズだけデータが内部メモリ６４０に蓄積されたら、内部メモリ６４０からデータリードを行う。内部メモリからの出力データは、ローテータ６７０に入力される。ローテータ６７０では、前述のアドレス差異に応じてローテーション段数を決定し、これに応じて入力データをローテートする。出力データは、バスインタフェースＢ６３０を通って転送先デバイスに送られる。
【０１２４】
転送元アドレスと転送先アドレスとのバイトアライメントが異なる場合の転送動作の例を、図１９を用いて説明する。転送バス幅は８バイトである。また、転送元開始アドレスは下位３ビットが３、転送先開始アドレスは下位３ビットが５と、転送元転送先共にアドレスが転送バス幅でアライメントされておらず、先頭データの途中のバイトからデータが有効となる。
【０１２５】
まずバスインタフェースＡ６２０より、先頭のリードデータ「ｘｘｘＡＢＣＤＥ」が送られると、バッファ６５０とセレクタ６６０に入力される。セレクタ６６０では、転送先開始アドレス６１３の設定値の下位３ビットから、転送元開始アドレス６１２の設定値の下位３ビットを差し引いた差異に応じてバイト毎に選択する。この例では、差異が２なので、８バイトのうち後ろの２バイトをバッファ出力データ６５１から選択し、残りはリードデータ６２１から選択する。つまり０バイト目から５バイト目はリードデータ６２１、６バイト目から７バイト目はバッファ出力データ６５１から選択されるので、先頭リードデータからは、先頭ライトデータ生成に必要な「ｘｘｘＡＢＣ」のみが選択されて、「ＤＥ」は選択されない。セレクタ出力データ６６１は内部メモリ６４０に送られる。バッファ６５０に入力されたリードデータ６２１は、一時的に格納される。
【０１２６】
次のサイクルにおいて、バスインタフェースＡ６２０より次のリードデータ「ＦＧＨＩＪＫＬＭ」が出力されると、前回と同様にバッファ６５０とセレクタ６６０に入力される。セレクタ６６０では、前回と同様に６バイト目の箇所で選択されるバイトを分けるので、内部メモリ出力データ６４１「ＦＧＨＩＪＫＬＭ」から「ＦＧＨＩＪＫ」、バッファ出力データ６５１から前サイクルのリードデータの一部「ＤＥ」が選択され、「ＦＧＨＩＪＫＤＥ」がセレクタから出力される。このセレクタ出力データ６６１は、内部メモリ６４０に送られる。
【０１２７】
適切なサイズだけデータが内部メモリ６４０に蓄積されたら、内部メモリ６４０からデータリードを行う。内部メモリ出力データ６４１は、ローテータ６７０に入力され、前述のアドレス差異だけ右方向にローテートされる。つまり入力された先頭のリードデータ「ｘｘｘＡＢＣｘｘ」は、右方向に２つローテートされ、「ｘｘｘｘｘＡＢＣ」となって出力される。
【０１２８】
次のサイクルでは、次の内部メモリ出力データ「ＦＧＨＩＪＫＤＥ」が、ローテータ６７０で前回と同様にローテートされ、「ＤＥＦＧＨＩＪＫ」となってローテータ出力データ６７１として出力され、内部メモリ６４０に送られる。
【０１２９】
この動作を繰り返してライトデータを生成することで、転送元アドレスと転送先アドレスとのバイトアライメントが異なる場合でも、リードデータを毎サイクル取り込むことが可能となる。ライトデータも、転送元アドレスに応じて適切なデータが内部メモリに格納されているので、高速にＤＭＡ転送を行うことができる。
【０１３０】
なお、転送元アドレスと転送先アドレスとのバイトアライメントが等しい場合では、セレクタ６６０は、常にリードデータ６２１からの入力データを選択され、ローテータ６７０では内部メモリ出力データ６４１のローテートを行わずにそのまま出力する。バッファ６５０は使用されないので、クロック供給を制御することで消費電力を抑えることができる。
【０１３１】
また、本実施形態のＤＭＡ転送制御装置では、発行サイズ調整が可能であるが、転送元アドレスと転送先アドレスとのバイトアライメントが異なる場合についてと、不連続領域のデータ転送を行う場合についてと共に、実施の形態１での説明と同様である。
【０１３２】
また、本実施形態のＤＭＡ転送制御装置では、転送バス幅よりも小さいデータ幅でのリード転送が可能であるが、動作については実施の形態２での説明と同様である。
【０１３３】
《実施の形態７》
図２０は、本発明の実施の形態７におけるＤＭＡ転送制御装置７００の概略構成を示すブロック図である。本実施形態のＤＭＡ転送制御装置７００は、転送元デバイス又は転送元デバイスが接続されているバスが、バスインタフェースＡ７２０と接続されており、転送先デバイス又は転送先デバイスが接続されているバスが、バスインタフェースＢ７３０と接続されている。
【０１３４】
ＤＭＡ転送制御装置７００は、上記のバスインタフェースＡ７２０、バスインタフェースＡ７２０から出力されるリードデータ７２１を入力とするバッファＢ７５２、リードデータ７２１とバッファＢ７５２から出力されるバッファＢ出力データ７５３とを入力とするセレクタＢ７６２、セレクタＢから出力されるセレクタ出力データ７６３を入力とする内部メモリ７４０、内部メモリ７４０から出力される内部メモリ出力データ７４１を入力とするバッファＡ７５０、内部メモリ出力データ７４１とバッファＡ出力データ７５１とを入力とするセレクタＡ７６０、セレクタＡ７６０から出力されるセレクタＡ出力データ７６１を入力とするローテータ７７０、ローテータ７７０から出力されるローテータ出力データ７７１を入力とするバスインタフェースＢ７３０を有している。つまり、図２０のＤＭＡ転送制御装置７００は、本発明の実施の形態１におけるＤＭＡ転送制御装置１００（図１参照）の場合と同様のバッファＡ７５０及びセレクタＡ７６０に加えて、第２のバッファ及び第２のセレクタとしてバッファＢ７５２及びセレクタＢ７６２を備えている。
【０１３５】
またＤＭＡ転送制御装置７００は、設定レジスタ７１０を有しており、転送サイズ７１１、転送元開始アドレス７１２、転送先開始アドレス７１３、転送元連続領域サイズ７１４、転送先連続領域サイズ７１５、転送元データ幅７１６、転送先データ幅７１７が設定されている。
【０１３６】
またＤＭＡ転送制御装置７００は、リードサイズ決定回路７８０、ライトサイズ決定回路７９０を有している。
【０１３７】
なお、転送に必要な情報を格納している設定レジスタについては、これに限らず、例えば外部端子より転送情報が入力される等、異なる方法により転送情報を与えても構わない。
【０１３８】
また、本実施形態のＤＭＡ転送制御装置では、転送元開始アドレスと転送先開始アドレスが異なる場合のデータ転送が可能である。動作については、セレクタＢ７６２は、常にリードデータ７２１からの入力データを選択する以外は、実施の形態１での説明と同様である。
【０１３９】
また、本実施形態のＤＭＡ転送制御装置では、バッファＢ７５２とセレクタＢ７６２を用いることで、転送バス幅よりも小さいデータ幅でのリード転送が可能である。この場合のリード動作については、実施の形態２での説明と同様である。
【０１４０】
なお、本発明の実施の形態３におけるＤＭＡ転送制御装置３００（図１１参照）にて内部メモリ３４０の前段又は次段に第２のバッファ及び第２のセレクタを追加することも可能である。同様に、本発明の実施の形態５におけるＤＭＡ転送制御装置５００（図１６参照）にてローテータ５７０の前段又は次段に第２のバッファ及び第２のセレクタを追加することも可能である。
【０１４１】
以上、本発明の実施の形態１〜７を説明してきた。最後に、上記実施の形態１，２，７におけるセレクタ機能とローテータ機能を実現するための回路構成について説明する。
【０１４２】
図２１は、セレクタ・ローテータ回路８００の概略構成を示すブロック図である。図２１のセレクタ・ローテータ回路８００は、バッファ入力データ８０１、バッファ出力データ８０２、ローテーション段数制御信号８０３を入力とし、セレクタ８０４を備えており、セレクタ・ローテータ出力データ８０５を出力とする。
【０１４３】
セレクタ８０４に入力されるデータは、バッファ入力データ８０１とバッファ出力データ８０２をバイト毎にいずれかを選択・連結して生成されたデータであり、転送バス幅だけ存在する。これらのデータの中から、ローテーション段数制御信号８０３に応じて１つのデータを選択して、セレクタ・ローテータ出力データ８０５として出力する。例えば、ローテーション段数制御信号８０３が３であった場合、バッファ入力データ８０１の０バイト目から４バイト目と、バッファ出力データ８０２の５バイト目から７バイト目とを連結して生成された８バイトのデータが、セレクタ・ローテータ出力データ８０５として出力される。
【０１４４】
図２１のセレクタ・ローテータ回路は、上記の実施の形態１，２，７のように、セレクタの出力がローテータの入力と連結されている場合において、セレクタ機能とローテータ機能を実現するための回路として利用することができる。この回路を用いることで、必要な選択機能とローテート機能を小規模な回路で実現することができる。
【産業上の利用可能性】
【０１４５】
本発明に係るＤＭＡ転送制御装置は、転送元アドレスと転送先アドレスとのバイトアライメントが異なるように設定された場合でも、わずかな回路の追加によって、転送速度を低下させずにＤＭＡ転送を行うことができるため、バイトアライメントの違いによる性能低下を気にすることなく、柔軟にアドレス等を設定することができる。ＤＭＡ転送制御機能を含むバスアダプタにおいても、異なるバイトアライメントを有するような、異なるプロトコルのバス間でデータ転送を行う場合に有効となる。
【図面の簡単な説明】
【０１４６】
【図１】本発明の実施の形態１におけるＤＭＡ転送制御装置の概略構成を示すブロック図である。
【図２】本発明の実施の形態１における、転送元アドレスと転送先アドレスとのバイトアライメントが異なる場合の転送動作の例を説明するためのタイミングフロー図である。
【図３】本発明の実施の形態１における、転送元アドレスと転送先アドレスとのバイトアライメントが異なる場合の発行サイズ調整を行わない例を説明するためのタイミングフロー図である。
【図４】本発明の実施の形態１における、転送元アドレスと転送先アドレスとのバイトアライメントが異なる場合の発行サイズ調整を行う例を説明するためのタイミングフロー図である。
【図５】本発明の実施の形態１における、リード側が不連続領域のデータ転送を行う場合の発行サイズ調整を行う例を説明するためのタイミングフロー図である。
【図６】本発明の実施の形態１における、ライト側が不連続領域のデータ転送を行う場合の発行サイズ調整を行う例を説明するためのタイミングフロー図である。
【図７】本発明の実施の形態１における、リード側とライト側が不連続領域のデータ転送を行う場合の発行サイズ調整を行う例を説明するためのタイミングフロー図である。
【図８】本発明の実施の形態２におけるＤＭＡ転送制御装置の概略構成を示すブロック図である。
【図９】本発明の実施の形態２における、転送元アドレスと転送先アドレスとのバイトアライメントが異なる場合の転送動作の例を説明するためのタイミングフロー図である。
【図１０】本発明の実施の形態２における、転送バス幅よりも小さいデータ幅でリード転送する場合の転送動作の例を説明するためのタイミングフロー図である。
【図１１】本発明の実施の形態３におけるＤＭＡ転送制御装置の概略構成を示すブロック図である。
【図１２】本発明の実施の形態３における、転送元アドレスと転送先アドレスとのバイトアライメントが異なる場合の転送動作の例を説明するためのタイミングフロー図である。
【図１３】本発明の実施の形態３における、リード側が不連続領域のデータ転送を行う場合の転送動作の例を説明するためのタイミングフロー図である。
【図１４】本発明の実施の形態４におけるＤＭＡ転送制御装置の概略構成を示すブロック図である。
【図１５】本発明の実施の形態４における、転送元アドレスと転送先アドレスとのバイトアライメントが異なる場合の転送動作の例を説明するためのタイミングフロー図である。
【図１６】本発明の実施の形態５におけるＤＭＡ転送制御装置の概略構成を示すブロック図である。
【図１７】本発明の実施の形態５における、転送元アドレスと転送先アドレスとのバイトアライメントが異なる場合の転送動作の例を説明するためのタイミングフロー図である。
【図１８】本発明の実施の形態６におけるＤＭＡ転送制御装置の概略構成を示すブロック図である。
【図１９】本発明の実施の形態６における、転送元アドレスと転送先アドレスとのバイトアライメントが異なる場合の転送動作の例を説明するためのタイミングフロー図である。
【図２０】本発明の実施の形態７におけるＤＭＡ転送制御装置の概略構成を示すブロック図である。
【図２１】本発明の実施の形態１，２，７におけるセレクタ機能とローテータ機能を実現するためのセレクタ・ローテータ回路の概略構成を示すブロック図である。
【図２２】従来のデータ転送制御装置の概略構成を示すブロック図と、転送元アドレスと転送先アドレスとのバイトアライメントが異なる場合の転送動作の例を説明するためのタイミングフロー図である。
【符号の説明】
【０１４７】
１００，２００，３００，４００，５００，６００，７００  ＤＭＡ転送制御装置
１１０，２１０，３１０，４１０，５１０，６１０，７１０  設定レジスタ
１１１，２１１，３１１，４１１，５１１，６１１，７１１  転送サイズ
１１２，２１２，３１２，４１２，５１２，６１２，７１２  転送元開始アドレス
１１３，２１３，３１３，４１３，５１３，６１３，７１３  転送先開始アドレス
１１４，２１４，３１４，４１４，５１４，６１４，７１４  転送元連続領域サイズ
１１５，２１５，３１５，４１５，５１５，６１５，７１５  転送先連続領域サイズ
１１６，２１６，３１６，４１６，５１６，６１６，７１６  転送元データ幅
１１７，２１７，３１７，４１７，５１７，６１７，７１７  転送先データ幅
１２０，２２０，３２０，４２０，５２０，６２０，７２０  バスインタフェースＡ
１２１，２２１，３２１，４２１，５２１，６２１，７２１  リードデータ
１３０，２３０，３３０，４３０，５３０，６３０，７３０  バスインタフェースＢ
１４０，２４０，３４０，４４０，５４０，６４０，７４０  内部メモリ
１４１，２４１，３４１，４４１，５４１，６４１，７４１  内部メモリ出力データ
１５０，２５０，３５０，４５０，５５０，６５０  バッファ
１５１，２５１，３５１，４５１，５５１，６５１  バッファ出力データ
１６０，２６０，３６０，４６０，５６０，６６０  セレクタ
１６１，２６１，３６１，４６１，５６１，６６１  セレクタ出力データ
１７０，２７０，３７０，４７０，５７０，６７０，７７０  ローテータ
１７１，２７１，３７１，４７１，５７１，６７１，７７１  ローテータ出力データ
１８０，２８０，３８０，４８０，５８０，６８０，７８０  リードサイズ決定回路
１９０，２９０，３９０，４９０，５９０，６９０，７９０  ライトサイズ決定回路
７５０  バッファＡ
７５１  バッファＡ出力データ
７５２  バッファＢ
７５３  バッファＢ出力データ
７６０  セレクタＡ
７６１  セレクタＡ出力データ
７６２  セレクタＢ
７６３  セレクタＢ出力データ
８００  セレクタ・ローテータ回路
８０１  前段バッファ入力データ
８０２  前段バッファ出力データ
８０３  ローテーション段数制御信号
８０４  セレクタ
８０５  セレクタ・ローテータ出力データ
【図１】
2008033721.tif 000003
【図２】
2008033721.tif 000004
【図３】
2008033721.tif 000005
【図４】
2008033721.tif 000006
【図５】
2008033721.tif 000007
【図６】
2008033721.tif 000008
【図７】
2008033721.tif 000009
【図８】
2008033721.tif 000010
【図９】
2008033721.tif 000011
【図１０】
2008033721.tif 000012
【図１１】
2008033721.tif 000013
【図１２】
2008033721.tif 000014
【図１３】
2008033721.tif 000015
【図１４】
2008033721.tif 000016
【図１５】
2008033721.tif 000017
【図１６】
2008033721.tif 000018
【図１７】
2008033721.tif 000019
【図１８】
2008033721.tif 000020
【図１９】
2008033721.tif 000021
【図２０】
2008033721.tif 000022
【図２１】
2008033721.tif 000023
【図２２】
2008033721.tif 000024