(57)【要約】【課題】  ページ境界を超えるデータ転送に対してもページ境界に影響されることなくバースト転送を正常且つ効率良く行うＤＭＡ転送制御装置を提供する。【解決手段】  ＤＭＡ転送制御装置２００は、転送先、転送元及び転送サイズを設定する転送パラメータ設定手段（２０１，２０２，２０３）、バッファ（２０８）、データの転送サイズとバッファのサイズとを比較し、１回の読み込み処理で転送できる処理転送サイズを決定するバッファサイズ比較判定部（２０４）、転送サイズが、ページ境界を超えるか否かを判定し、ページ境界を超えると判定された場合には、処理転送サイズをページ境界以前で区切り分割転送サイズを設定するページ境界判定部（２０５）、ページ境界後の未送信データの有無を判定し、未送信データが有る場合、次回転送分の分割転送サイズを設定する未処理転送判定部（２０６）等を備える。【選択図】      図１
2006018642.tif 000002
【特許請求の範囲】
【請求項１】
ページ毎に、外部制御手段の制御に基づき転送元に格納された連続データを転送先にＤＭＡ転送する為の構成を備えたＤＭＡ転送制御装置において、
前記転送元に格納された連続データの転送元開始アドレス及び前記転送先の転送先開始アドレス、並びに前記連続データのデータサイズを前記外部制御手段からそれぞれ取得して転送する為のパラメータを設定する転送パラメータ設定手段と、
前記連続データを一時記憶するバッファと、
前記転送パラメータ設定手段と前記バッファのサイズとから、１回の読み込み処理で転送できる処理転送サイズを決定するバッファサイズ比較判定部と、
前記転送元から前記バッファへ読み込みする前記データサイズが前記転送元のページ境界を超えるか否かを判定し、前記転送元のページ境界を超えると判定された場合には、前記処理転送サイズを前記転送元のページ境界単位で区切り分割転送サイズを設定するページ境界判定部と、
前記転送元のページ境界後の未送信データの有無を判定し、前記未送信データが有る場合、次回転送分の前記分割転送サイズを設定する未処理転送判定部
とを備えることを特徴とするＤＭＡ転送制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、転送元または転送先がＤＲＡＭ系メモリである場合のバースト転送を正常且つ効率良く行うことができるＤＭＡ転送制御装置に関する。
【背景技術】
【０００２】
ＤＭＡ（ダイレクトメモリアクセス）は、データ転送元からデータ転送先へのデータ転送を制御する為の１つの方式である。ＤＭＡ転送では、データ転送元アドレス、データ転送先アドレス、データ転送サイズをレジスタ等に設定し、その後、ＣＰＵ等が転送開始を制御することによりＤＭＡ転送制御装置は転送動作を開始する。転送時にはＣＰＵによる転送制御の必要はない為、データの転送速度を向上させ、ＣＰＵの負担を減らすことができる。レジスタ等に設定されたデータサイズの転送が完了した場合、ＤＭＡ転送制御装置はＤＭＡ転送終了割り込みをアサートする。ＣＰＵは、ＤＭＡ転送終了割り込みのアサートが発生すると、実際に転送を終了したデータサイズ結果やＤＭＡ転送の停止や転送中等のステータスを報告する為のレジスタ等を読み込み、ＤＭＡ転送の動作を監視する。尚、ＤＭＡ転送の際は、１回のアドレス指定で複数個のバイトデータをまとめて連続的に転送するバースト転送を利用する場合が多い（特許文献１参照。）。
【特許文献１】特開２０００−１３２４９７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかしながら、上記のＤＭＡ転送制御装置においては、転送元または転送先がＤＲＡＭ系メモリのバースト転送では、大きい転送サイズを扱うと必ずページ境界を超える転送となり、ページ境界をまたいだ転送後においても、既にアクセスが終了したアドレスに対して同じアクセスを実行する。その為、正常なデータ転送を行うことが不可能となり、高速に大量のデータ転送を可能とするバースト転送の本来の目的を阻害する。
【０００４】
この不具合を回避する為には、ＣＰＵ等が転送元アドレス、転送先アドレス及び転送サイズを管理してページ境界をまたいだバースト転送を行わない様に制御する必要があるが、それではＣＰＵを介さずにデータ転送することでＣＰＵの負担を減らすことができるというＤＭＡ転送の本来の目的を阻害する。
【０００５】
本発明は、転送元または転送先がＤＲＡＭ系メモリである場合のバースト転送の際に、ページ境界を超える様な大きい転送サイズの転送に対しても、ページ境界に影響されることなくバースト転送を正常且つ効率良く行うことができるＤＭＡ転送制御装置を提供することを目的とする。
【課題を解決するための手段】
【０００６】
上記の問題点の鑑みて、本発明の特徴は、［イ］ページ毎に、外部制御手段の制御に基づき転送元に格納された連続データを転送先にＤＭＡ転送する為の構成を備えたＤＭＡ転送制御装置において、
転送元に格納された連続データの転送元開始アドレス及び転送先の転送先開始アドレス、並びに連続データのデータサイズを外部制御手段からそれぞれ取得して転送する為のパラメータを設定する転送パラメータ設定手段（２０１，２０２，２０３）と、［ロ］連続データを一時記憶するバッファ（２０８）と、［ハ］転送パラメータ設定手段とバッファのサイズとから、１回の読み込み処理で転送できる処理転送サイズを決定するバッファサイズ比較判定部（２０４）と、［ニ］転送元からバッファへ読み込みするデータサイズが転送元のページ境界を超えるか否かを判定し、転送元のページ境界を超えると判定された場合には、処理転送サイズを転送元のページ境界単位で区切り分割転送サイズを設定するページ境界判定部（２０５）と、［ホ］転送元のページ境界後の未送信データの有無を判定し、未送信データが有る場合、次回転送分の分割転送サイズを設定する未処理転送判定部（２０６）とを備えるＤＭＡ転送制御装置であることを要旨とする。
【発明の効果】
【０００７】
本発明のＤＭＡ転送制御装置よれば、転送元または転送先がＤＲＡＭ系メモリである場合のバースト転送の際に、ページ境界を超える様な大きい転送サイズの転送に対しても分割転送制御を行うことにより、ページ境界に影響されることなくバースト転送を正常且つ効率良く行うことが可能となる。
【０００８】
また、本発明のＤＭＡ転送制御装置はページ境界を超えるか否かを判断し、その判断結果によりバースト転送を分割するか否かを制御する為、ＣＰＵは転送元アドレス、転送先アドレス及び転送サイズを管理してページ境界をまたいだバースト転送を行わない様に制御する必要が無い。その為、ページ境界をまたいだバースト転送の場合においてもＣＰＵの負担が重くなることがなく、ＣＰＵ側はページ境界を考慮せずに、バースト転送を指示することが可能となる。
【発明を実施するための最良の形態】
【０００９】
以下、本発明の実施の形態に係るＤＭＡ転送制御装置について説明する。尚、本発明の実施の形態において使用される機器、手法等は一例であり、本発明はこれらに限定されるものではないことは勿論である。
【００１０】
（実施の形態）
（ＤＭＡ転送制御装置）
本発明の実施の形態に係るＤＭＡ転送制御装置２００は、図１に示すように、転送パラメータ設定手段である転送元アドレスレジスタ２０１，転送先アドレスレジスタ２０２及び転送サイズレジスタ２０３と、バッファサイズ比較判定部２０４と、ページ境界判定部２０５と、未処理転送判定部２０６と、バッファ２０８と、バスサイクル発生器２０９及びＤＭＡ転送制御器２１０等を備えている。
【００１１】
転送元アドレスレジスタ２０１は、転送元アドレスを保持する。転送先アドレスレジスタ２０２は、転送先アドレスを保持する。転送サイズレジスタ２０３は、転送サイズを保持する。
【００１２】
バッファサイズ比較判定部２０４は、転送サイズレジスタ２０３から得る全体のデータ転送量である「転送サイズ」とバッファ２０８の全体データ格納量である「バッファサイズ」を比較することで、転送の基本単位（以下「１クール」と記す）を読み込む処理で転送されるデータ量である「処理転送サイズ」を設定する。１クールの読み込み処理にて転送可能なデータ量はバッファサイズに依存する。つまり最大の処理転送サイズはバッファサイズとなる。
【００１３】
ページ境界判定部２０５は、転送元アドレスレジスタ２０１から得る転送元アドレス、バッファサイズ比較判定部２０４から得る処理転送サイズ及び転送元メモリ２１１から得るページ境界サイズより、この読み込み転送がページ境界を超えるか否かを判定する。ページ境界を超える場合には、処理転送サイズをページ境界で区切った「分割転送サイズ」を決定する。また、転送先アドレスレジスタ２０２から得る転送先アドレスと読み込み転送時にバッファ２０８に書き込みしたデータサイズ及び転送先メモリ２１２のページ境界サイズより、この書き込み転送がページ境界を超えるか否かを判定する。ページ境界を超える場合には、処理転送サイズをページ境界で区切った分割転送サイズを決定する。
【００１４】
未処理転送判定部２０６は、ページ境界をまたいだ分割転送の場合、未送信の分割転送データが未だ有るか否かを判定して、未送信の分割転送データが未だ有る場合、次回転送分の分割転送サイズを決定する。
【００１５】
バッファ２０８は、転送元メモリ２１１と転送先メモリ２１２間においてデータをやり取りするときに、処理速度や転送速度の差を補うためにデータを一時的に保存しておく為の記憶装置である。
【００１６】
バスサイクル発生器２０９は、転送元アドレスレジスタ２０１で指示される転送元メモリ２１１から転送先アドレスレジスタ２０２で指示される転送先メモリ２１２へ対して、転送サイズレジスタ２０３の転送サイズをバス幅（処理転送サイズの転送１クール内にて、１回のデータ転送で転送可能なデータ量）に従って転送する。
【００１７】
ＤＭＡ転送制御器２１０は、転送要求に基づく転送要求信号の入力により、ＤＭＡ転送制御装置２００によるＤＭＡ転送の実行を指示する。
【００１８】
ＤＭＡ転送制御装置２００は外部バスを介して、ＣＰＵ１００、転送元メモリ２１１及び転送先メモリ２１２に接続される。レジスタ１１０、転送元メモリ２１１、転送先メモリ２１２、バッファ２０８は、それぞれ複数バイト幅のデータバスで接続されている。
【００１９】
ＣＰＵ１００は、外部制御手段であり、転送元アドレスレジスタ２０１、転送先アドレスレジスタ２０２、転送サイズレジスタ２０３に所定の値を設定し、ＤＭＡ転送の要求を受けるとＤＭＡ転送処理の開始を指示する。一度ＤＭＡ転送が開始されると、ＣＰＵ１００はＤＭＡ転送に関しての直接の命令は行わない。
【００２０】
（ＤＭＡ転送制御装置の動作）
以下、本発明の実施の形態に係るＤＭＡ転送制御装置２００が、図１の転送元メモリ２１１からデータを読み込み、転送先メモリ２１２に書き込むデータ転送動作について図２のフローチャートを用いて説明する。
【００２１】
尚、以下において説明するデータ転送動作は、データバス幅１６バイトのバースト転送の場合のものであり、ＣＰＵ１００の制御命令により、転送元アドレス、転送先アドレス及び転送バイトサイズが、それぞれ図１の転送元アドレスレジスタ２０１、転送先アドレスレジスタ２０２、転送サイズレジスタ２０３に既に設定されているものとする。
【００２２】
(ａ)先ず、ステップＳ１０１においては、ＤＭＡ転送制御器２１０が、ＳＣＳＩインタフェース等の外部インタフェースを介してＤＭＡ転送の要求を受信したか否かを判定する。尚、判定要求を受信していない場合には、ＤＭＡ転送制御器２１０はこの判定を続ける。
【００２３】
（ｂ）ＤＭＡ転送の要求がある場合は、ステップＳ１０２において、ＣＰＵ１００がＤＭＡ転送制御装置２００に対しＤＭＡ転送開始を指示し、ＤＭＡ転送制御装置２００は、転送元アドレスレジスタ２０１内の転送元アドレス及び転送サイズレジスタ２０３内の転送サイズを読み出す。
【００２４】
（ｃ）ステップＳ１０３において、バッファサイズ比較判定部２０４は、転送元アドレス及び転送サイズ、バッファ２０８のサイズ及び転送元メモリ２１１のページ境界サイズの比較により、転送サイズを決定する。ステップＳ１０４において転送サイズがバッファサイズより大きい場合、「処理転送サイズ＝バッファサイズ」と設定される。ステップＳ１０５において転送サイズがバッファサイズと同量若しくはそれ以下である場合、「処理転送サイズ＝転送サイズ」であると設定される。最大転送サイズはバッファ２０８のサイズであり、以下のような関係となる。
【００２５】
１）転送サイズ＜バッファサイズの場合
転送サイズ＝転送サイズ（転送回数１回）
２）転送サイズ＝バッファサイズの場合
転送サイズ＝バッファサイズ（転送回数１回）
３）転送サイズ＞バッファサイズの場合
転送１回目：転送サイズ＝バッファサイズ
転送２回目：転送サイズ＝（転送サイズ―バッファサイズ）これ以降、転送サイズデータの残りのサイズが０となるまで、転送する度に処理転送サイズを決定する。
【００２６】
具体的には、バス幅＝１６バイト、バッファサイズ＝２５６バイトである場合、例えば、転送サイズ＝４０バイトであると、処理転送サイズは４０バイトとなり、４０＝１６＋１６＋８で、１クール３回の転送処理が必要となる。又、転送バイトサイズ＝２６０バイトであると、１クール目の処理転送バイトサイズはバッファサイズの２５６バイトとなり、２５６＝１６×１６で１クール１６回の転送処理、２クール目の処理転送バイトサイズは２６０−２５６＝４バイトとなり、４×１で２クール１回の転送処理が必要となる。
【００２７】
（ｄ）ステップＳ１０６では、ページ境界判定部２０５が、転送元アドレス、設定された処理転送サイズ及び転送元メモリ２１１のページ境界サイズとの比較を行い、転送サイズがページ境界を超えるか否かを判定する。
【００２８】
ページ境界を超える場合には、ステップＳ１０７において読み込み転送を分割して行う為、図３（ａ）に示す、１クール内における１回分読み込みの分割転送サイズ（転送元アドレスから転送元メモリ２１１のページ境界までのサイズ）を決定する。
【００２９】
ページ境界を超えない場合にはステップＳ１０８において、「分割転送サイズ＝処理転送サイズ」、つまり、処理転送サイズの分割は不要と判断され、処理転送サイズがそのまま分割転送サイズとなる。尚、以下においては便宜上、分割転送サイズと処理転送サイズが同量であっても、分割転送サイズと呼ぶ。
【００３０】
（ｅ）ステップＳ１０９においては、分割転送サイズが決定したので、転送元アドレスレジスタ２０１内の転送元アドレスからデータを読み込みする。ステップＳ１１０においては、バスサイクル発生器２０９が転送元メモリ２１１からバッファ２０８への処理転送サイズ分のデータ転送を１クールで行なう。転送先メモリ２１２はこの処理転送データを格納する。ステップＳ１１１においては、分割転送サイズが０であるかどうか、つまり分割転送データが全て転送されたかを判断し、０である場合はステップＳ１１２へ進み、０でない場合はステップＳ１０９に戻り再度データの読み込み処理を行う。
【００３１】
（ｆ）次に、ステップＳ１１２においては、ステップＳ１０４又はＳ１０５で決定された処理転送サイズとステップＳ１０７で決定された分割転送サイズとの比較により、未処理転送判定部２０６は、未処理分割読み込み転送の有無を判定する。
【００３２】
図３（ａ）のように「処理転送サイズ＞分割転送サイズ」となる場合、転送元メモリ２１１のページ境界を超える転送となる為、ページ境界後の未処理の分割転送データ（２回目）が存在する。従って、ステップＳ１１３において、転送元アドレス及び読み込みする転送サイズを更新して、ステップＳ１０９に戻り、以降同様に残りの読み込み転送を行う。
【００３３】
一方、「処理転送サイズ＝分割転送サイズ」と判定されて未処理の分割読み込み転送が無い場合は、ステップＳ１１４からの書き込み転送動作へ進む。
【００３４】
（ｇ）ステップＳ１１４においては、転送先アドレスレジスタ２０２より転送先アドレスが読み出される。ステップＳ１１５においては、ページ境界判定部２０５は、転送先アドレスと既に読み込み転送によってバッファ内に記憶されているデータサイズ及び転送先メモリ２１２のページ境界サイズとの比較により、ページ境界を超えるか否かを判定する。
【００３５】
ページ境界を超える場合には、ステップＳ１１６において書き込み転送を分割して行う。まず、図４のように１回目の分割転送サイズ（転送先アドレスから転送先メモリ２１２のページ境界までのサイズ）を設定する。ページ境界を超えない場合には、ステップＳ１１７においてデータ分割せずに処理転送サイズを設定する。
【００３６】
（ｈ）ステップＳ１１８においては、バスサイクル発生器２０９はバッファ２０８からデータを取得し、ステップＳ１１９にて転送先メモリ２１２へ転送する。転送先メモリ２１２はこれを格納する。この動作を分割転送サイズの全データの転送が終わるまで行なう（ステップＳ１２０）。
【００３７】
（ｉ）ステップＳ１２１では、未処理転送判定部２０６が、バッファ２０８内に残っているデータサイズと、ステップＳ１１６又はＳ１１７で決定した分割転送サイズとの比較により、次の分割転送の要、不要を判定する。「処理転送サイズ＞１回目の分割転送サイズ」の場合、転送先メモリ２１２のページ境界を超える転送となる為、ページ境界より後の未処理の書き込み転送が存在する。従って、ステップＳ１２２にて、転送先アドレス及び書き込み転送サイズを更新して、ステップＳ１１８〜Ｓ１２１に戻り、同様に残りの書き込み転送を行う。一方、「処理転送サイズ＝１回目の分割転送サイズ」と判定されて、分割転送サイズデータがもう存在しない場合は、ステップＳ１２３へ進む。
【００３８】
（ｊ）ステップＳ１２３では、最初の書き込み転送が終了すると、ステップＳ１２０において、全体の転送サイズと、既に書き込み転送が完了した処理転送サイズとの比較を行う。「転送サイズ＞処理転送サイズ」の場合には転送元メモリ２１１内に未転送データがある為、ステップＳ１２４において、転送元アドレス、転送先アドレス及び転送サイズを更新してステップＳ１０２に戻り、同様の読み込み及び書き込み処理を転送サイズが０になるまで繰り返す。
【００３９】
転送サイズが０となった場合、ＤＭＡ転送制御装置２００によるＤＭＡのバースト転送を終了する。
【００４０】
（実施例：読み込み転送動作）
以下、読み込み転送動作の実施例について図３を用いて具体的に説明する。以下においては、転送元アドレス０ｘ０１４０、転送バイトサイズ０ｘ１Ｃ０、ページ境界位置０ｘ２００及びバッファサイズは０ｘ１００とする。
【００４１】
＜処理１＞転送元アドレス（０ｘ０１４０）及び転送サイズ（０ｘ１Ｃ０）を読み出す。
【００４２】
＜処理２＞転送サイズ（０ｘ１Ｃ０）とバッファサイズ（０ｘ１００）を比較すると、転送サイズの方が大きい為、２回の読み込み転送が必要となる。１クール目の分割転送サイズは０ｘ１００となり、２クール目の分割転送サイズが０ｘＣ０となる。
【００４３】
＜処理３＞転送元アドレス（０ｘ０１４０）と１クール目の処理転送サイズ（０ｘ１００）及びページ境界（０ｘ２００）との比較によりページ境界を超えるか否かの判定結果、ページ境界を超えると判定される。すると読み込み転送を２分割して、転送元アドレスからページ境界までのサイズ（０ｘＣ０）を１回目の分割転送サイズとする。
【００４４】
＜処理４＞図３（ｂ）に示すように、転送元アドレス（０ｘ０１４０）から１回目の分割転送サイズのデータ（０ｘＣ０）をバッファ２０８へ書き込みする。
【００４５】
＜処理５＞読み込み転送未処理が有るか否かの判定で、「処理転送サイズ＞１回目の分割転送サイズ」となり、未処理の分割転送サイズのデータがある為、分割転送サイズ２回目の転送に入る。
【００４６】
＜処理６＞２回目の転送を行なう為、図３（ａ）に示すように転送元アドレスをページ境界の０ｘ０２００、読み込み転送サイズを０ｘ４０に更新する。
【００４７】
＜処理７＞転送元アドレス（０ｘ０２００）から２回目の分割転送サイズのデータ（０ｘ４０）を、図３（ｂ）のようにバッファ２０８へ書き込みする。
【００４８】
１クール目の読み込み転送動作が終了すると、後述する１クール目の書き込み転送動作が行なわれる。１クール目の書き込み転送動作が終了すると、図３（ａ）に示すように２クール目の転送処理サイズ（０ｘＣ０）の読み込み転送動作が行われ、図３（ｂ）に示すように、バッファ２０８に１クール目のデータに続いて書き込みが行われる。
【００４９】
この様に、ページ境界を超える場合の読み込み転送においてもＤＭＡ転送制御装置２００が転送元メモリ２１１のページ境界を超えるか否かを管理することで、転送元アドレスから任意の転送サイズデータを正常に読み込みしてバッファ２０８に記憶することが可能となる。
【００５０】
（実施例：書き込み転送動作）
次に、書き込み転送動作について具体的に説明する。図４に示す様に、前述した１回目の処理転送サイズのデータ転送によってバッファ２０８に記憶されたデータサイズ（０ｘ１００）のデータを転送先アドレス０ｘ０５８０に書き込み転送する場合について述べる。尚、ページ境界の位置を０ｘ６００とする。
【００５１】
＜処理１＞転送先アドレスレジスタ２０２より転送先アドレス（０ｘ０５８０）を読み出す。
【００５２】
＜処理２＞既に読み込み転送によってバッファ２０８内に記憶されているデータサイズ（０ｘ１００）及びページ境界（０ｘ６００）との比較によりページ境界を超えるか否かを判定する。図４ではページ境界を超える為、書き込み転送を２分割して行なう。分割転送サイズ１回目のデータは、ページ境界までのサイズ（０ｘ８０）となる。
【００５３】
＜処理４＞分割転送サイズ１回目のデータ（０ｘ８０）をバッファ２０８から転送先アドレス（０ｘ０５８０）へ書き込みする。
【００５４】
＜処理５＞未処理転送判定部２０６による未処理の分割転送が有るか否かの判定で、図４の場合、「バッファ２０８内に残っている処理転送サイズ＞１回目の分割転送サイズ」となり、未処理の分割書き込み転送がある為、分割転送２回目に入る。
【００５５】
＜処理６＞２回目の分割転送サイズの転送先アドレスを０ｘ０６００、転送サイズを０ｘ８０に更新する。
【００５６】
＜処理７＞分割転送サイズ２回目のデータ（０ｘ８０）をバッファ２０８から転送先アドレス（０ｘ０６００）へ書き込みする。この結果、バッファ２０８内に記憶されたデータは全て転送先アドレスへ書き込み転送されたことになり、１クール目の書き込み転送が終了となる。
【００５７】
次に、前述した２クール目の読み込み転送動作が行われる。２クール目の読み込み転送動作が終了すると、図４に示すように２クール目の処理転送サイズ（０ｘＣ０）の書き込み転送動作が行われ、全ての転送サイズデータの書き込みが完成する。
【００５８】
この様に、ページ境界を超える場合の書き込み転送においてもＤＭＡ転送制御装置２００が転送先メモリ２１２のページ境界を超えるか否かを管理することで、転送先アドレスに正常に書き込みすることができる。
【図面の簡単な説明】
【００５９】
【図１】本発明の実施の形態に係るＤＭＡ転送制御装置の内部構成ブロック図である。
【図２】ＤＭＡ転送制御の動作を示すフローチャートである。
【図３】本発明の読み込み転送時のデータ構成の説明図である。
【図４】本発明の書き込み転送時のデータ構成の説明図である。
【符号の説明】
【００６０】
１００…ＣＰＵ
１１０…レジスタ
２００…ＤＭＡ転送制御装置
２０１…転送元アドレスレジスタ
２０２…転送先アドレスレジスタ
２０３…転送サイズレジスタ
２０４…バッファサイズ比較判定部
２０５…ページ境界判定部
２０６…未処理転送判定部
２０８…バッファ
２０９…バスサイクル発生器
２１０…ＤＭＡ転送制御器
２１１…転送元メモリ
２１２…転送先メモリ
【図１】
2006018642.tif 000003
【図２】
2006018642.tif 000004
【図３】
2006018642.tif 000005
【図４】
2006018642.tif 000006