(57)【要約】【課題】本発明は、ＣＰＵを介さずに転送回数設定を行うことにより、ＣＰＵへの負担を減らし、ＤＭＡ転送開始までの時間の短縮化を図ること。【解決手段】本発明のＤＭＡ転送装置は、ＤＭＡ転送回数レジスタ１３１を内部に備え、バス１４０を介して接続されるＦＩＦＯ１２０から転送回数データを読み出してＤＭＡ転送回数レジスタ１３１に格納し、ＤＭＡ転送回数レジスタ１３１に格納された転送回数のデータの示す転送回数が０になるまで、ＦＩＦＯ１２０からのデータ転送を行い、転送回数を、ＦＩＦＯ１２０からのデータ転送を行う毎に１ずつ減らす。この発明によれば、ＤＭＡ転送開始前にＤＭＡに転送回数データを読み込むことができ、ＤＭＡ転送開始に当たりＣＰＵに処理を返す必要がなくなるので、従来のＤＭＡに比べ、転送開始までのサイクルが短くでき、ＣＰＵの負荷を軽減できる。【選択図】        図１
2006048593.tif 000002
【特許請求の範囲】
【請求項１】
メモリに記憶されているデータの転送に先立って、当該データの転送開始前の転送回数情報を前記メモリから読み込む読込手段と、
前記メモリに記憶されているデータを転送する転送手段と、
前記読込手段によって前記転送回数情報が読み込まれた場合、前記転送手段を制御して、前記メモリに記憶されているデータを転送する転送制御手段と、
を備えることを特徴とするＤＭＡ転送装置。
【請求項２】
前記転送制御手段は、
前記読込手段によって読み込まれた転送回数情報が所定回数以下であるかどうかを判定する判定手段を備え、
前記判定手段によって判定された判定結果に基づいて、前記転送手段を制御して、前記メモリに記憶されているデータを転送することを特徴とする請求項１に記載のＤＭＡ転送装置。
【請求項３】
前記読込手段は、
前記転送制御手段によって前記データが転送された後、前記転送開始前の転送回数情報と、前記転送手段による前記データの転送回数情報と、に基づいて、前記データの現在の転送回数情報を前記メモリから読み込むことを特徴とする請求項１または２に記載のＤＭＡ転送装置。
【請求項４】
メモリに記憶されるデータの有無に関する許可信号を前記メモリから受信する受信手段と、
前記メモリに記憶されているデータを転送する転送手段と、
前記受信手段によって前記許可信号が受信されている間、前記転送手段を制御して、前記メモリに記憶されているデータを転送する転送制御手段と、
を備えることを特徴とするＤＭＡ転送装置。
【請求項５】
前記転送制御手段による前記データの転送時間を計時する計時手段を備え、
前記転送制御手段は、
前記計時手段によって計時された転送時間が、所定の転送時間に達した場合、前記転送手段を制御して、前記メモリに記憶されているデータの転送を停止することを特徴とする請求項１〜４のいずれか一つに記載のＤＭＡ転送装置。
【請求項６】
メモリに記憶されているデータを他のデバイスに転送するＤＭＡ転送装置の転送制御方法において、
前記データの転送開始前の転送回数情報を前記メモリから読み込む読込工程と、
前記読込工程によって前記転送回数情報が読み込まれた場合、前記データの転送を指示する転送指示工程と、
を含んだことを特徴とするＤＭＡ転送装置の転送制御方法。
【請求項７】
前記転送指示工程は、
前記読込工程によって読み込まれた転送回数情報が所定回数以下であるかどうかを判定する判定工程を含み、
前記判定工程によって判定された判定結果に基づいて、前記メモリに記憶されているデータの転送を指示することを特徴とする請求項６に記載のＤＭＡ転送装置の転送制御方法。
【請求項８】
前記読込工程によって読み込まれた転送開始前の転送回数情報と、前記転送指示工程によって前記データが転送された転送回数情報と、に基づいて、前記データの現在の転送回数情報を前記メモリから読み込む第２の読込工程を含んだことを特徴とする請求項６または７に記載のＤＭＡ転送装置の転送制御方法。
【請求項９】
メモリに記憶されているデータを他のデバイスに転送するＤＭＡ転送装置の転送制御方法において、
前記メモリに記憶されるデータの有無に関する許可信号を前記メモリから受信する受信工程と、
前記受信工程によって前記許可信号が受信されている間、前記メモリに記憶されているデータの転送を指示する転送指示工程と、
を含んだことを特徴とするＤＭＡ転送装置の転送制御方法。
【請求項１０】
前記転送指示工程による前記データの転送指示から所定時間経過後に、前記メモリに記憶されているデータの転送を停止する転送停止工程を含んだことを特徴とする請求項６〜９のいずれか一つに記載のＤＭＡ転送装置の転送制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリに記憶されているデータを他のデバイスに転送するＤＭＡ転送装置およびＤＭＡ転送装置の転送制御方法に関する。
【背景技術】
【０００２】
コンピュータ機器、コンピュータ制御機器において、ＤＭＡ（ダイレクト・メモリ・アクセス）転送装置が頻繁に用いられている。ＤＭＡ転送装置は、メモリに格納されたデータを直接他のメモリなどに転送するための装置である。ＣＰＵはデータの演算に加え、データの転送を行う場合があるが、このＣＰＵの処理負担を、ＤＭＡを用いることにより軽減することができる。ＤＭＡ転送装置は内部にレジスタをもつことにより転送回数を設定し、設定された回数分、ＣＰＵを介することなくデータの転送を行うことができる。このＤＭＡ転送装置の動作およびこれによる問題点を、図６および図７を用いて説明する。
【０００３】
図６は従来のＤＭＡ転送装置によるデータの転送例を示す説明図である。ＣＰＵ６１０、ＦＩＦＯ（先入れ先出しメモリ）６２０、ＤＭＡ転送装置６３０は、バス６４０を介して接続され、バスアービタ６５０によりバス６４０のバス権が管理されている。ＦＩＦＯ６２０は、有効バイト数レジスタ６２１および格納領域６２２により構成され、格納領域６２２はブロック６２３、６２４、６２５、・・・に分かれ、ＤＭＡ転送装置６３０はＤＭＡ転送回数レジスタ６３１を含む。
【０００４】
まずＣＰＵ６１０は、ＦＩＦＯ６２０にある有効バイト数レジスタ６２１から転送回数データを読み込む（６６０）。ＣＰＵ６１０は、読み込んだ転送回数データをＤＭＡ転送装置６３０のＤＭＡ転送回数レジスタ６３１に書き込む（６７０）。そしてＤＭＡ転送装置６３０が、転送回数データを読み込み、格納領域６２２からのＤＭＡ転送を開始する。
【０００５】
図７は従来のＤＭＡ転送の処理手順を示すフローチャートである。転送開始に先立って、ＣＰＵ６１０が、ＦＩＦＯ６２０の有効バイト数レジスタ６２１からＤＭＡ転送回数を読み込む（ステップＳ７０１）。次にＣＰＵ６１０が、ＤＭＡ転送装置６３０内のＤＭＡ転送回数レジスタ６３１に、読み込んだＤＭＡ転送回数を書き込む（ステップＳ７０２）。そして転送直前にＤＭＡ転送装置６３０は、ＤＭＡ転送回数レジスタ６３１に書き込まれたＤＭＡ転送回数を読み込み、ＤＭＡ転送を開始する。
【０００６】
ここでＤＭＡ転送装置６３０はＣＰＵ６１０に対して割り込み要求を送る（ステップＳ７０３）。ＣＰＵ６１０からの許可信号が１になるのを待って次の処理に移行する（ステップＳ７０４）。ＣＰＵ６１０からの許可信号が１になると（ステップＳ７０４：Ｙｅｓ）、ＤＭＡ転送装置６３０は、内部でＳＴＯＰ要求がされているかどうかを判定する（ステップＳ７０５）。ＳＴＯＰ要求がされている場合は（ステップＳ７０５：Ｙｅｓ）、ＳＴＯＰ許可信号が１であるかどうかを判定する（ステップＳ７０６）。ＳＴＯＰ要求がされＳＴＯＰ許可信号が１である場合は（ステップＳ７０６：Ｙｅｓ）、ＤＭＡ処理を中止する旨の要求が出されているということなので、ＤＭＡ転送処理を終了し、バスアービタ６５０は、バス権をＣＰＵ６１０に渡す。
【０００７】
ＳＴＯＰ要求がされていないか（ステップＳ７０５：Ｎｏ）、されていてもＳＴＯＰ許可信号が入力されていない場合（ステップＳ７０６：Ｎｏ）は、ＤＭＡ転送処理に戻る。この時バスアービタ６５０はバス権をＣＰＵ６１０からＤＭＡ転送装置６３０に移す。ここでＤＭＡ転送装置６３０は、ＤＭＡ転送回数レジスタ６３１から転送回数データを読み出す（ステップＳ７０７）。転送回数データを書き込むとＤＭＡ転送処理を行う（ステップＳ７０８）。
【０００８】
１回分のデータ転送が終了したら、ＤＭＡ転送回数レジスタ６３１に書かれている転送回数を１減らす（ステップＳ７０９）。そして転送回数が０になったかどうかを判定する（ステップＳ７１０）。転送回数が０になった時（ステップＳ７１０：Ｙｅｓ）、ＤＭＡ転送装置６３０は処理を終了する。
【０００９】
転送回数データが０でない場合（ステップＳ７１０：Ｎｏ）、ＦＩＦＯ６２０に転送すべきデータがまだ残っているということなのでＤＭＡ転送処理に戻る。ここでＤＭＡ転送装置６３０は、内部でＳＴＯＰ要求がされているかどうかを判定する（ステップＳ７１１）。ＳＴＯＰ要求がされている場合は（ステップＳ７１１：Ｙｅｓ）、ＳＴＯＰ許可信号が１かどうかを判定する（ステップＳ７１２）。ＳＴＯＰ要求がされＳＴＯＰ許可信号が１の場合は（ステップＳ７１２：Ｙｅｓ）、ＤＭＡ処理を中止する旨の要求が出されているということなので、ＤＭＡ転送処理を終了し、バスアービタ６５０は、バス権をＣＰＵ６１０に渡す。ＳＴＯＰ要求がされていないか（ステップＳ７１１：Ｎｏ）、されていてもＳＴＯＰ許可信号が１ではない場合は（ステップＳ７１２：Ｎｏ）、ステップＳ７０８に進み、ＤＭＡ転送処理に戻る。
【００１０】
また、プロセッサの起動によらないＤＭＡ起動、ＤＭＡ起動条件制御を実現する技術があった。この技術では、ＤＭＡコントローラがＩ／Ｏ内のデータ量を常に監視してしきい値と比較し、一致したことを条件として転送先のＩ／Ｏが存在するバスのバスマスタにバス権要求を行ってバス権を得てからＤＭＡ転送を行う。ＤＭＡとＦＩＦＯは、同一のＩ／Ｏ内に構成されている。このことによりネットワークから一定量のデータを受信し、ＦＩＦＯ内に蓄積されると、ＣＰＵを介することなくＤＭＡを起動してバスに対して受信したデータをＤＭＡ転送する（たとえば、下記特許文献１を参照。）。
【００１１】
【特許文献１】特開平７−１１４５１０号公報
【発明の開示】
【発明が解決しようとする課題】
【００１２】
しかしながら、従来のＤＭＡ転送回数の設定は、ＣＰＵ６１０が一度ＦＩＦＯ６２０の有効バイト数レジスタ６２１を読み込んでＤＭＡ転送回数レジスタ６３１に転送回数データを書き込み、それをＤＭＡ転送装置６３０が読み出してＤＭＡ転送を行っていた。そのため、ＣＰＵ６１０の処理に負担がかかり、転送開始までに時間がかかっていた。
【００１３】
ＤＭＡ転送回数を設定するのに、ＣＰＵ６１０がＦＩＦＯ６２０から転送回数データを読んで、それをＤＭＡ転送回数レジスタ６３１に書き込み、ＤＭＡ転送装置６３０がＤＭＡ転送回数レジスタ６３１から読み出すという段階を踏んでいるため、ＤＭＡ転送開始するまでの時間が掛かり、ＣＰＵ６１０の処理にも負荷をかけていた。この過程はＤＭＡ転送を行う際には常におこなっていた。
【００１４】
この発明は、上記従来技術の問題点を解決するため、ＣＰＵを介さずに転送回数設定を行うことにより、ＣＰＵへの負担を減らし、ＤＭＡ転送開始までの時間の短縮化を図ることができるＤＭＡ転送装置およびＤＭＡ転送装置の転送制御方法を提供することを目的とする。
【課題を解決するための手段】
【００１５】
上述した課題を解決し、目的を達成するため、この発明にかかるＤＭＡ転送装置は、メモリに記憶されているデータの転送に先立って、当該データの転送開始前の転送回数情報を前記メモリから読み込む読込手段と、前記メモリに記憶されているデータを転送する転送手段と、前記読込手段によって前記転送回数情報が読み込まれた場合、前記転送手段を制御して、前記メモリに記憶されているデータを転送する転送制御手段と、を備えることを特徴とする。
【００１６】
また、この発明にかかるＤＭＡ転送装置の転送制御方法は、データが転送された後、転送開始前の転送回数情報と、転送手段によるデータの転送回数情報と、に基づいて、データの現在の転送回数情報を前記メモリから読み込むことを特徴とする。
【００１７】
この発明によれば、ＤＭＡ転送開始前にＤＭＡに転送回数データを読み込むことができ、ＤＭＡ転送開始に当たりＣＰＵに処理を返す必要がなくなるので、従来のＤＭＡに比べ、転送開始までのサイクルを短くでき、ＣＰＵの負荷を軽減できる。
【発明の効果】
【００１８】
本発明により、従来のＤＭＡ転送と比較して転送開始までのサイクルを短くし、ＣＰＵの負荷を軽減することによりバスを有効に使うことが可能となるという効果を奏する。
【発明を実施するための最良の形態】
【００１９】
以下に添付図面を参照して、この発明にかかるＤＭＡ転送装置およびＤＭＡ転送装置の転送制御方法の好適な実施の形態を詳細に説明する。
【００２０】
（実施の形態１）
図１は、ＤＭＡ処理装置のハードウェア構成を示すブロック図である。ＣＰＵ１１０は、システム全体の処理動作を制御し、演算動作などを実行するプロセッサである。ＦＩＦＯ１２０は、先入れ先出し方式であり、受け取った順番にデータを格納し、先に格納されたデータからデータの読み出しを行うメモリである。
【００２１】
ＦＩＦＯ１２０は有効バイト数レジスタ１２１および格納領域１２２を含む。有効バイト数レジスタ１２１は、転送回数データを格納する。格納領域１２２はデータを格納する領域で、ブロック１２３、１２４、１２５・・に分かれている。ＤＭＡ転送装置１３０は、ＦＩＦＯ１２０に格納されたデータのＤＭＡ転送を実行する。
【００２２】
ＤＭＡ転送装置１３０はＤＭＡ転送回数レジスタ１３１、タイマー１３２、ＳＴＯＰ要求レジスタ１３３、内部ＣＰＵ１３４、およびＲＯＭ１３５を含む。ＤＭＡ転送回数レジスタ１３１は、ＤＭＡ転送装置１３０が実行するデータ転送の実行回数である、転送回数データを格納するレジスタである。ＤＭＡ転送装置１３０がデータ転送を１回行った時点で、ＤＭＡ転送回数レジスタ１３１は、０でない場合は格納される次のデータ転送を行って転送回数データを１減らし、０になるとＤＭＡ転送装置１３０はデータ転送を終了する。
【００２３】
タイマー１３２は、ＤＭＡ転送装置１３０にバス権が渡されてからの経過時間のカウントを行い、一定時間が経過したらＤＭＡ転送装置１３０による処理を中止しバス権を解放する。ＳＴＯＰ要求レジスタ１３３は、ＤＭＡ転送装置１３０によるデータ転送を終了するときに、ＳＴＯＰのフラグを立てるレジスタであり、後述のバスアービタ１５０がこのフラグを読み取ることによりバスの使用権を移せるようにするためのものである。以上のＤＭＡ転送装置１３０の動作は、内部ＣＰＵ１３４が、ＲＯＭ１３５からプログラムを読み込むことにより実行される。
【００２４】
以上のＣＰＵ１１０、ＦＩＦＯ１２０、およびＤＭＡ転送装置１３０はバス１４０により接続され、バス１４０を介してデータの受け渡しや制御動作の指示を行う。バス１４０の使用権は特定の処理部により占有されるが、このバス権の管理はバスアービタ１５０により行われる。ＲＡＭ１６０はバス１４０に接続される。ＤＭＡ転送装置１３０がＦＩＦＯ１２０から読み取ったデータは、ＲＡＭ１６０に転送される。
【００２５】
以上の構成を用いて、ＤＭＡ処理装置全体の動作を説明する。ＤＭＡ転送装置１３０は、ＦＩＦＯ１２０の有効バイト数レジスタ１２１からデータを読み込み、読み込んだデータを、ＤＭＡ転送装置１３０のＤＭＡ転送回数レジスタ１３１にＤＭＡ転送回数データとして書き込む（１７０）。従来はＣＰＵがＦＩＦＯの有効バイト数レジスタを読み込んで、それをＤＭＡの転送回数レジスタに書き込んでいたが、ＤＭＡ転送装置１３０が、転送開始前にＦＩＦＯ１２０の有効バイト数レジスタ１２１のデータを、転送回数データとして読み込み、ＤＭＡ転送装置１３０のＤＭＡ転送回数レジスタ１３１に書き込むことにより、従来よりも転送開始までのサイクル数を短くしている。
【００２６】
図２はＦＩＦＯ１２０を詳細に説明した構成図である。図２を用いて、有効バイト数レジスタ１２１に読み出されるデータについて説明する。ＦＩＦＯ１２０は転送データ１２３〜１２６を格納しているが、ここでリード（Ｒｅａｄ）ポイントは１２３を、ライト（Ｗｒｉｔｅ）ポイントは１２６を指している。リードポイントおよびライトポイントはいずれもポインタにより特定される。ポインタが指す、ライトポイントとリードポイントの差が有効バイト数であり、これが転送回数データとして、有効バイト数レジスタ１２１に書き込まれる。
【００２７】
図３は実施の形態１におけるＤＭＡ処理装置の動作を示すフローチャートである。最初にＤＭＡ転送設定を行う（ステップＳ３０１）。次にＤＭＡ転送装置１３０はＣＰＵ１１０に対して割り込み要求を送る（ステップＳ３０２）。ＣＰＵ１１０からの許可信号が１になるのを待って次の処理に移行する（ステップＳ３０３）。ＣＰＵ１１０からの許可信号が１の場合（ステップＳ３０３：Ｙｅｓ）、ＤＭＡ転送装置１３０は、内部のＳＴＯＰ要求レジスタ１３３にＳＴＯＰ要求が書かれているかどうかを判定する（ステップＳ３０４）。
【００２８】
ＳＴＯＰ要求が書かれている場合は（ステップＳ３０４：Ｙｅｓ）ＳＴＯＰ許可信号が１かどうかを判定する（ステップＳ３０５）。ＳＴＯＰ許可信号が１の場合は（ステップＳ３０５：Ｙｅｓ）、ＤＭＡ処理を中止する旨の要求が出されているということなので、ＤＭＡ転送処理を終了し、バスアービタ１５０は、バス権をＣＰＵ１１０に渡す。
【００２９】
ＳＴＯＰ要求が出されていないか（ステップＳ３０４：Ｎｏ）、出されていてもＳＴＯＰ許可信号が０の場合（ステップＳ３０５：Ｎｏ）、バスアービタ１５０がバス権をＣＰＵ１１０からＤＭＡ転送装置１３０に移して、ＤＭＡ転送装置１３０が、ＦＩＦＯ１２０中の有効バイト数レジスタ１２１から転送回数データを読み出し（ステップＳ３０６）、ＤＭＡ転送回数レジスタ１３１に書き込む（ステップＳ３０７）。
【００３０】
つまり、ＣＰＵ１１０が転送回数データをＤＭＡ転送装置１３０のＤＭＡ転送回数レジスタ１３１に一旦書き込んでから、書き込んだ転送回数データをＤＭＡ転送装置１３０が読み出すのではなく、ＤＭＡ転送装置１３０がＦＩＦＯ１２０の有効バイト数レジスタ１２１の転送回数データを、データ転送開始前にＤＭＡ転送装置１３０の転送回数として読み込み、ＤＭＡ転送回数レジスタ１３１に書き込む。
【００３１】
転送回数データを書き込むとＤＭＡ転送処理を行う（ステップＳ３０８）。ＤＭＡ転送装置１３０は、格納領域１２２からデータを読み出してくる。読み出すデータはリードポイントにより指されているブロック１２３のデータとする。データを読み出したらブロック１２３のデータは消去し、リードポイントを１２４に移す。読み出したデータはバス１４０を介してＲＡＭ１６０に転送する。
【００３２】
１回分のデータ転送が終了したら、ＤＭＡ転送回数レジスタ１３１に書かれている転送回数を１減らす（ステップＳ３０９）。ＤＭＡ転送を行ってから転送回数を減らす構成にしたが、転送回数を減らしてからＤＭＡ転送を行う構成にすることもできる。そして転送回数が０になったかどうかを判定する（ステップＳ３１０）。転送回数が０になった時（ステップＳ３１０：Ｙｅｓ）、ＤＭＡ転送装置１３０は、有効バイト数レジスタ１２１に転送回数データを読み込みにいき（ステップＳ３１１）、転送回数データがあるかどうかを判定する（ステップＳ３１２）。有効バイト数レジスタ１２１に転送回数データがある場合（ステップＳ３１２：Ｙｅｓ）、再びステップＳ３０７に戻り、ＤＭＡ転送回数データをＤＭＡ転送回数レジスタ１３１に書き込む。
【００３３】
本来この転送回数データの書き込みは、ＤＭＡ転送装置１３０によるデータの転送を終了した時点で処理をＣＰＵ１１０に渡し、再びＣＰＵ１１０から転送指示を受けて再開するが、本実施の形態ではＣＰＵ１１０に処理を戻すことなく行われる。これによりＤＭＡ転送を開始するためＣＰＵ１１０の負荷を軽減することができる。転送回数データの書き込みが行われれば、上述のＤＭＡ転送処理の動作を繰り返し行う。有効バイト数レジスタ１２１に転送回数データがない場合、転送処理を終了し、バスアービタ１５０は、バス権をＣＰＵ１１０に渡す。
【００３４】
転送回数データが０でない場合（ステップＳ３１０：Ｎｏ）、ＦＩＦＯ１２０に転送すべきデータがまだ残っているということなのでＤＭＡ転送処理に戻る。ここでＤＭＡ転送装置１３０は、内部のＳＴＯＰ要求レジスタ１３３にＳＴＯＰ要求が書かれているかどうかを判定する（ステップＳ３１３）。ＳＴＯＰ要求が書かれている場合は（ステップＳ３１３：Ｙｅｓ）、ＳＴＯＰ許可信号が１かどうかを判定する（ステップＳ３１４）。ＳＴＯＰ許可信号が１の場合は（ステップＳ３１４：Ｙｅｓ）、ＤＭＡ処理を中止する旨の要求が出されているということなので、ＤＭＡ転送処理を終了し、バスアービタ１５０は、バス権をＣＰＵ１１０に渡す。ＳＴＯＰ要求が出されていないか（ステップＳ３１３：Ｎｏ）、出されていてもＳＴＯＰ許可信号が０の場合は（ステップＳ３１４：Ｎｏ）、ステップＳ３０８に進み、ＤＭＡ転送処理に移行する。
【００３５】
ステップＳ３０４およびステップＳ３１３のＳＴＯＰ要求について説明する。これは、優先度の高い処理がＣＰＵ１１０で行われることになって割り込みが発生する場合や、エラーが発生した場合に行われる。またタイマー１３２が所定の時間を経過した場合に、ＤＭＡ転送処理を一時中断するために行うこともできる。タイマー１３２は、ステップＳ３０２のＤＭＡ転送装置１３０による割り込み要求がなされ、許可信号が１であることを確認することにより、ＤＭＡ転送処理の開始を確認したときにカウントを開始する。
【００３６】
あらかじめ設定されたカウント値をタイマー１３２がカウントしたときに、ＤＭＡ転送装置１３０はＳＴＯＰ要求を行い、ステップＳ３０４およびステップＳ３１３のＳＴＯＰ要求の有無の判定処理を経て、ＤＭＡ転送処理を中断してＣＰＵ１１０に処理を渡す。中断したＤＭＡ転送処理は再開することもできる。有効バイト数レジスタ１２１には転送回数データが残っているので、ＣＰＵ１１０が処理を終了し、ＤＭＡ転送装置１３０がバス権を再度取得したときに、この転送回数データを再度読み出すことによりＤＭＡ転送処理を再開する。このことにより、有効バイト数レジスタ１２１にデータがある限りＤＭＡ転送が続くという事態を防止できる。
【００３７】
（実施の形態２）
実施の形態１ではＤＭＡ転送回数レジスタ１３１を介してＤＭＡ転送の制御を行っていたが、実施の形態２では、ＤＭＡ転送レジスタ１３１を介さずにＤＭＡ転送の制御を行う例について説明する。図４は実施の形態２におけるＤＭＡ処理装置のハードウェア構成を示すブロック図である。ＣＰＵ１１０、ＦＩＦＯ１２０の機能の構成は実施の形態１と同様である。ここで、ＦＩＦＯ１２０から、有効バイト数レジスタ１２１が０にならない限りＤＭＡ転送装置１３０に転送継続許可信号１３６が出力される。有効バイト数レジスタ１２１が０になると、ＤＭＡ転送装置１３０への転送継続許可信号１３６が切断される構成になっている。
【００３８】
ＤＭＡ転送装置１３０は、ＤＭＡ転送時に常にＦＩＦＯ１２０を読み込み、有効バイト数レジスタ１２１が０にならない限り格納領域１２２に格納されたデータをＲＡＭ１６０に転送し続ける。実施の形態１と異なり、ＤＭＡ転送回数レジスタ１３１を必要としない。ＦＩＦＯ１２０からＤＭＡ転送装置１３０に転送継続許可信号１３６が常に出力されるからである。転送継続許可信号１３６は、所定の時間間隔で検出することができる。タイマー１３２は、実施の形態１と同様、ＤＭＡ転送装置１３０にバス権が渡されてからの経過時間をカウントし、一定時間が経過したらＤＭＡ転送装置１３０による処理を中止しバス権を解放する。
【００３９】
図５は、実施の形態２におけるＤＭＡ処理装置の動作を示すフローチャートである。ステップＳ３０１からステップＳ３０５まで、およびステップＳ３０８は、実施の形態１の処理と同じである。ステップＳ３０４およびステップＳ３０５で、ＳＴＯＰ要求が出されていないか（ステップＳ３０４：Ｎｏ）、出されていてもＳＴＯＰ許可信号が０の場合（ステップＳ３０５：Ｎｏ）、バスアービタ１５０がバス権をＣＰＵ１１０からＤＭＡ転送装置１３０に移して、ＤＭＡ転送装置１３０が、転送継続許可信号１３６を読み込む（ステップＳ５０１）。
【００４０】
次に転送継続許可信号１３６が出力されているか否かを判定し（ステップＳ５０２）、出力されていない場合（ステップＳ５０２：Ｎｏ）、処理を終了する。転送継続許可信号１３６が出力されている場合（ステップＳ５０２：Ｙｅｓ）、ＤＭＡ転送処理を行う（ステップＳ３０８）。
【００４１】
ＤＭＡ転送処理において、ＤＭＡ転送装置１３０は、格納領域１２２からデータを読み出してくる。読み出すデータはリードポイントにより指されているブロック１２３のデータとする。データを読み出したらブロック１２３のデータは消去し、リードポイントを１２４に移す。読み出したデータはバス１４０を介してＲＡＭ１６０に転送する。１回分のデータ転送が終了したら、再びステップＳ３０４に戻る。
【００４２】
以上の構成により、転送回数の設定がいらなくなり、転送継続許可信号１３６が１の間は転送を継続するので、従来のＤＭＡ転送と比べて、転送開始までのサイクル数も少なくなりＣＰＵの負荷も軽減できる。
【００４３】
図８は、本発明のＤＭＡ転送装置の機能的構成を示すブロック図である。転送回数データ読み出し部８０１は、有効バイト数レジスタ１２１（図１参照）から転送回数データを読み出してくる機能部である。転送回数データは、上述のように、リードポイントとライトポイントの差である有効バイト数であり、これを転送回数データとして読み出してくる。転送回数データ格納部８０２は、転送回数データ読み出し部８０１で読み出された転送回数データを格納する格納領域である。
【００４４】
データ転送部８０３は、ＦＩＦＯ１２０からＲＡＭ１６０へのデータの転送を行う機能部である。転送制御部８０４は、データ転送部８０３に対してデータ転送をさせたりデータ転送を終了させたりする機能部であり、転送回数データ判定部８０５、データ転送指示／停止処理部８０７、および許可信号受信部８０８により構成される。
【００４５】
転送回数データ判定部８０５は、転送回数データの示す転送回数を減らし、その結果転送回数データ格納部８０２で格納された転送回数が０になったかどうかを判定する機能部である。転送回数が０の場合は、データ転送部８０３によるデータ転送処理を終了させ、転送回数データ読み出し部８０１に再度の転送回数データの読み出しを指示する。
【００４６】
タイマー計測部８０６は、データ転送部８０３がデータ転送を開始するときカウントをはじめ、データ転送を終了するときに０にリセットする機能部である。データ転送指示／停止処理部８０７は、タイマー計測部８０６が計測するカウントが所定の値に達した場合、その他エラー発生時などＤＭＡ転送装置１３０（図１参照）の処理を終了するのが適当と判断される場合に、データ転送部８０３によるデータ転送処理を終了させる機能部である。許可信号受信部８０８は、実施の形態２の転送継続許可信号１３６を受信する機能ブロックであり、転送継続許可信号１３６（図４参照）が示す転送継続の許可／不許可により、データ転送指示／停止処理部８０７にデータ転送の継続・終了を指示する。
【００４７】
以上で説明した実施の形態によれば、ＤＭＡ転送開始前にＤＭＡに転送回数データを読み込むことができ、ＤＭＡ転送開始に当たりＣＰＵに処理を返す必要がなくなるので、従来のＤＭＡに比べ、転送開始までのサイクルを短くでき、ＣＰＵの負荷を軽減できる。また、ＤＭＡ転送装置が一旦バス権を離すこと無く、連続して転送を続けることにより、バスの受け渡しを省略でき、効率的にＤＭＡ転送を行うことができる。
【００４８】
特に実施の形態２によれば、ＤＭＡ転送装置内にＤＭＡ転送回数を格納するレジスタがいらなくなり、さらにレジスタの読み書きが不要になることでＤＭＡ転送開始までのサイクルを短くすることができる。
【００４９】
またタイマー１３２を用いた実施の形態によれば、メモリにデータがある限りＤＭＡ転送装置が転送を続けることによりバス権を保有し続けてその他のリソースの動作に影響を及ぼすのを回避することができ、ある一定時間を経たらメモリにデータがあってもＤＭＡ転送を行わずバス権を返し、バスを占有し続けないようにすることができる。
【００５０】
なお、本実施の形態で説明したＤＭＡ転送装置の転送制御方法は、予め用意されたプログラムをコンピュータで実行することにより実現することができる。このプログラムは、ＲＯＭ、ハードディスク等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。
【産業上の利用可能性】
【００５１】
以上のように、本発明に係るＤＭＡ転送装置およびＤＭＡ転送装置の転送制御方法は、先入れ先出しメモリからのデータ転送に有用であり、特にＤＭＡによるデータ転送を高速化する場合に適している。
【図面の簡単な説明】
【００５２】
【図１】ＤＭＡ処理装置のハードウェア構成を示したブロック図である。
【図２】ＦＩＦＯを詳細に説明した構成を示したブロック図である。
【図３】この発明の実施の形態１にかかるＤＭＡ処理装置の動作を示したフローチャートである。
【図４】この発明の実施の形態２にかかるＤＭＡ処理装置のハードウェア構成を示したブロック図である。
【図５】この発明の実施の形態２にかかるＤＭＡ処理装置の動作を示したフローチャートである。
【図６】従来のＤＭＡ転送装置によるデータの転送例を示したブロック図である。
【図７】従来のＤＭＡ転送の処理手順を示したフローチャートである。
【図８】本発明のＤＭＡ転送装置の機能的構成を示すブロック図である。
【符号の説明】
【００５３】
１１０，６１０  ＣＰＵ
１２０，６２０  ＦＩＦＯ
１２１，６２１  有効バイト数レジスタ
１２２，６２２  格納領域
１３０，６３０  ＤＭＡ転送装置
１３１，６３１  ＤＭＡ転送回数レジスタ
１３２  タイマー
１３３  ＳＴＯＰ要求レジスタ
１３６  転送継続許可信号
１４０，６４０  バス
１５０，６５０  バスアービタ
【図１】
2006048593.tif 000003
【図２】
2006048593.tif 000004
【図３】
2006048593.tif 000005
【図４】
2006048593.tif 000006
【図５】
2006048593.tif 000007
【図６】
2006048593.tif 000008
【図７】
2006048593.tif 000009
【図８】
2006048593.tif 000010