(57)【要約】【課題】ＭＰＵによるデータ転送制御装置の管理時間を増大させることなく、しかも特定のバスマスタの占有時間を過度に増加させることなく、ひとかたまりの大容量データを分割して転送することが可能なデータ転送制御装置を提供すること。【解決手段】転送元アドレスを格納するための転送元アドレスレジスタと、転送先アドレスを格納するための転送先アドレスレジスタと、データ転送数を格納するための転送数レジスタと、１ブロックあたりの最大データ転送数設定値を格納するための最大転送数設定レジスタと、を備え、転送数レジスタに格納されたデータ転送数分のデータを最大転送数設定値レジスタに格納された最大転送数設定値毎に分割して転送する。【選択図】図２
2007249597.tif 000002
【特許請求の範囲】
【請求項１】
転送元アドレスを格納するための転送元アドレスレジスタと、
転送先アドレスを格納するための転送先アドレスレジスタと、
データ転送数を格納するための転送数レジスタと、
１ブロックあたりの最大データ転送数設定値を格納するための最大転送数設定レジスタと、を備え、
転送数レジスタに格納されたデータ転送数分のデータを最大転送数設定値レジスタに格納された最大転送数設定値毎に分割して転送することを特徴とするデータ転送制御装置。
【請求項２】
転送数レジスタに格納されたデータ転送数分のデータの転送完了を待って転送終了イベントを発生することを特徴とする請求項１に記載のデータ転送制御装置。
【請求項３】
分割された１ブロックの転送が完了する毎にバス権の解放並びに獲得が行われることを特徴とする請求項１に記載のデータ転送制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、マルチバスマスタをサポートするバスに接続されるデータ転送制御装置に関するものである。
【背景技術】
【０００２】
従来のデータ転送制御装置（ＤＭＡＣ）の内部構成を示す説明図が図９に示されている。同図に示されるように、このデータ転送制御装置９０は、全体制御部９０１と、コントロールレジスタ９０２と、転送元アドレスレジスタ９０３と、転送先アドレスレジスタ９０４と、転送数レジスタ９０５とを含んでいる。
【０００３】
使用にあたっては、ＭＰＵを介してそれらのレジスタ９０２〜９０５に適当な値を設定することにより、転送元アドレスから転送先アドレスへと指定された転送数のデータを連続的に転送することが可能となされている。このときデータ転送の制御は、バス権制御信号、データ転送制御信号、データ転送数に基づいて実行される（特許文献１参照）。
【０００４】
このようなデータ転送制御装置を用いた従来の転送例を示す説明図が図１０に示されている。同図に示されるように、マルチバスマスタをサポートするバスに接続されるデータ転送制御装置は、転送起動後、バス権を獲得して転送終了後バス権を解放する。バス権はデータ転送完了まで保持されるため、データ転送数に応じてバス権獲得期間は伸縮する。この間に他のマスタでデータ転送が起動されると、データ転送はバス権獲得まで待たされる。
【０００５】
バスアクセスでは、各種のデータが転送される。大容量の転送もあれば小数の転送もある。また、即時性を要求する転送もあれば転送時間がかかってもよい転送もある。プログラマブル・コントローラのようにリアルタイム性が要求されるシステムにおいては、データ転送における遅延の最悪値が計算できる必要がある。従来のデータ転送制御装置による転送では、最大転送数を規定しない限り最悪値を規定することは不可能になる。
【０００６】
このようなシステムにおいて大容量のデータを転送する場合、規定された最大転送数毎にブロック分けして、複数回データ転送装置を起動する必要がある。マスタ数が増えれば必然的にバス権獲得までの平均待ち時間が延びるので、この最大転送数を小さくする必要がある。そうすると、転送データのブロック数が多くなり、データ転送装置に対するＭＰＵの設定回数は増え性能低下に繋がる。
【０００７】
マスタの最大転送数が４００に規定されているバスで、２０００回のデータを送信する場合の例を示す図が図１１に示されている。１マスタ当たりの平均待ち時間を同じようにすると、８マスタシステムでは最大転送数を２マスタシステムの１／４にしなければならない。同じデータ転送を行う場合でも、データ転送制御装置にアクセスするＭＰＵのアクセス数の違いが大きくなり、マルチマスタシステムにおけるＭＰＵのオーバーヘッドが大きくなる。
【０００８】
一般に、データ転送制御装置を用いて大容量のデータを分割して送るには、ひとかたまりの大容量データをソフトウェアにより複数のブロックとして扱い、各ブロック毎にデータ転送制御装置（ＤＭＡＣ）に設定・起動・終了確認することにより転送を行う方法（以下、第１の方法と言う）と、継続的起動情報（ディスクリプタ）に従って動作するデータ転送制御装置（ＤＭＡＣ）を用いて、分割数に応じた数のディスクリプタを用意し、起動することにより転送を行う方法（以下、第２の方法と言う）が知られている。
【特許文献１】特開平０５−２５２１６５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
しかし上述の第１の方法にあっては、ブロック数に応じて設定回数、及び終了判断の回数が増えるという問題点がある。またひとかたまりのデータ転送に対して、起動中、完了の２つの状態以外に、ブロック転送中、ｎブロック転送終了、など状態が追加されることにより、ＭＰＵ処理も複雑になる。通常データ転送装置起動中、ＭＰＵは別の処理を並列的に行うことにより処理能力を向上させている。ＭＰＵによるデータ転送制御装置の管理時間が増大することは、システム全体の性能低下に繋がる。
【００１０】
また、上述の第２の方法にあっては、ディスクリプタを格納しておくメモリが必要になる。データ転送制御装置がディスクリプタにより起動される場合、データ転送制御装置が直接アクセスできる空間にディスクリプタを格納する必要がある。この格納領域の増大が懸念される。また、転送が毎回同じである保証がない場合、データ転送イベントの発生ごとにディスクリプタを構築し、メモリに格納する必要がある。これはＭＰＵにとって処理の増大を意味し、システムの性能を低下させる要因となる。
【００１１】
この発明は、このような従来の問題点に着目してなされたものであり、その目的とするところは、ＭＰＵによるデータ転送制御装置の管理時間を増大させることなく、しかも特定のバスマスタの占有時間を過度に増加させることなく、ひとかたまりの大容量データを分割して転送することが可能なデータ転送制御装置を提供することにある。
【００１２】
この発明のさらに他の目的ならびに作用効果については、明細書の以下の記述を参照することにより、当業者であれば容易に理解されるであろう。
【課題を解決するための手段】
【００１３】
上記の目的を達成するために、本発明のデータ転送制御装置は、つぎのような構成を採用するものである。
【００１４】
すなわち、本発明のデータ転送制御装置は、転送元アドレスを格納するための転送元アドレスレジスタと、転送先アドレスを格納するための転送先アドレスレジスタと、データ転送数を格納するための転送数レジスタと、１ブロックあたりの最大データ転送数設定値を格納するための最大転送数設定レジスタと、を備え、転送数レジスタに格納されたデータ転送数分のデータを最大転送数設定値レジスタに格納された最大転送数設定値毎に分割して転送することを特徴とするものである。
【００１５】
このような構成によれば、転送元アドレスレジスタと、転送先アドレスレジスタと、転送数レジスタと、最大転送数設定レジスタとに必要なデータを転送しさえすれば、以後、転送数レジスタに格納された転送数分のデータの転送が完了するまで、最大転送数設定値で規定されるデータ数単位で分割転送が行われるため、ＭＰＵによるデータ転送制御装置の管理時間を増大させることなく、しかも特定のバスマスタの占有時間を過度に増加させることなく、ひとかたまりの大容量データを分割して転送することが可能となる。
【００１６】
好ましい実施の形態においては、転送数レジスタに格納されたデータ転送数分のデータの転送完了を待って転送終了イベントを発生するようにしてもよい。
【００１７】
好ましい実施の形態においては、分割された１ブロックの転送が完了する毎にバス権の解放並びに獲得が行われるようにしてもよい。
【００１８】
好ましい実施の形態においては、分割された１ブロックの転送が完了する毎にバス権の解放並びに獲得が行われるようにしてもよい。
【発明の効果】
【００１９】
本発明のデータ転送制御装置によれば、ＭＰＵによるデータ転送装置の管理時間を増大させることなく、かつ特定のバスマスタの占有時間を過度に増加させることなく、ひとかたまりの大容量データを分割して送信することができる。
【発明を実施するための最良の形態】
【００２０】
以下に、この発明に係るデータ転送制御装置の好適な実施の一形態を添付図面に従って詳細に説明する。
【００２１】
本発明が対象とするシステムの構成図が図１に示されている。同図に示されるように、このシステムは、複数台のバスマスタ１，１・・・をマルチバスマスタ対応バス２によって結んで構成されている。
【００２２】
各バスマスタ１内には、本発明に係るデータ転送制御装置（ＤＭＡＣ）１０と、ＭＰＵ２０と、メモリ３０とが含まれている。
【００２３】
本発明に係るデータ転送制御装置（ＤＭＡＣ）の内部構成を示す説明図が図２に示されている。同図に示されるように、このデータ転送制御装置（ＤＭＡＣ）１０は、全体制御部１０１と、１ブロック転送制御部１０２と、コントロールレジスタ１０３と、転送元アドレスレジスタ１０４と、転送先アドレスレジスタ１０５と、転送数レジスタ１０６と、最大転送数設定レジスタ１０７と、比較器１０８と、選択器１０９とを含むと共に、１ブロック転送制御部１０２内にはブロック転送数レジスタ１０２ａが含まれている。
【００２４】
コントロールレジスタ１０３は起動停止制御を行うものであり、転送元アドレスレジスタ（Ａｓｒｃ）１０４は転送元アドレスデータを格納するものであり、転送先アドレスレジスタ（Ａｄｓｔ）１０５は転送先アドレスデータを格納するものであり、転送数レジスタ（Ｔｓｉｚｅ）１０６は転送数データを格納するものであり、最大転送数設定レジスタ（Ｔｍａｘ）１０７は、１ブロック当たりの最大転送数データを格納するためのものである。
【００２５】
また、比較器１０８は最大転送数設定レジスタ１０７に格納された最大転送数設定データと残り転送数設定データとの比較を行うものであり、選択器１０９はブロック転送数レジスタ１０２ａに設定されるべき元データを選択するためのものであり、ブロック転送数レジスタ（Ｃｏｕｎｔ）１０２ａは１ブロック当たりの転送数データを格納するためのものである。
【００２６】
図９に示される従来のデータ転送制御装置（ＤＭＡＣ）９０にあっては、転送元アドレス、転送先アドレス、転送回数を設定後、コントロールレジスタ９０２に起動コマンドを書き込むことでデータ転送が起動される。１転送毎に転送数レジスタ９０５が減算され、転送数レジスタ９０５のデータが「０」になるまで連続してデータ転送が行われる。そのため、データ転送がバス権取得を伴う場合、転送開始時にバス権を取得し、転送終了までバス権の解放は行われず、占有することとなる。バスの転送方式によっては、転送開始時に転送数を送信する場合もある。この場合、転送数は設定値がそのまま出力されるので、途中での分割などは不可能となる。
【００２７】
これに対して、図２に示される本発明のデータ転送制御装置１０によれば、従来と同様のレジスタ設定を行うものの、それに先立ち、最大転送数設定レジスタ１０７にブロック転送最大転送数を設定しておくため、以下に述べるように、特定のバスマスタが長時間バスを占有するという事態を回避しつつも、ＭＰＵの負担を増大させることなく、効率よくひとかたまりの大容量データを分割して高速に転送することが可能となる。
【００２８】
本発明に係るデータ転送制御装置１０の動作を示すフローチャートが図３に示されている。同図において、各レジスタ１０３〜１０７への所要データの設定により転送が起動されると、先ず、転送するレジスタ（Ｔｓｉｚｅ）１０６の内容が正か負かの判定が行われる（ステップ３０１）。ここで、判定結果が正であれば（ステップ３０１ＹＥＳ）、続くステップ３０２へと進むのに対し、判定結果が負であれば（ステップ３０１ＮＯ）、直ちに転送を終了する。
【００２９】
ステップ３０２においては、最大転送数レジスタ１０７に格納された最大転送数設定値（Ｔｍａｘ）と転送数レジスタ１０６に格納された転送数（Ｔｓｉｚｅ）との比較が行われる。ここで、転送数（Ｔｓｉｚｅ）が最大転送数設定値（Ｔｍａｘ）よりも大きいと判定されれば（ステップ３０２ＹＥＳ）、以後分割１ブロック転送制御へと移行する。
【００３０】
これに対して、転送数（Ｔｓｉｚｅ）が最大転送数設定値（Ｔｍａｘ）よりも大きいと判定されれば（ステップ３０２ＮＯ）、最終ブロック転送制御へと移行する。
【００３１】
分割１ブロック転送制御においては、先ず、ブロック転送数レジスタ１０２ａに格納されるブロック転送数（Ｃｏｕｎｔ）を最大転送数設定値（Ｔｍａｘ）に設定した後（ステップ３０３）、以後、バス権が許可されるのを待機する（ステップ３０５）。
【００３２】
この状態において、バス権が許可されたならば（ステップ３０５ＹＥＳ）、バス権の獲得を行い（ステップ３０６）、以後、１データを転送するたびに（ステップ３０７）、転送元アドレス（Ａｓｒｃ）並びに転送先アドレス（Ａｄｓｔ）を＋１更新すると共に、転送数（Ｔｓｉｚｅ）及びブロック転送数（Ｃｏｕｎｔ）を−１更新する処理（ステップ３０８）を、ブロック転送数（Ｃｏｕｎｔ）が０となるまで（ステップ３０９ＮＯ）、繰り返す。
【００３３】
そして、以上の処理を繰り返す間に、ブロック転送数（Ｃｏｕｎｔ）が「０」となれば（ステップ３０９ＹＥＳ）、バス権を解放して（ステップ３１０）、ステップ３０１へ戻る。
【００３４】
以後、転送数（Ｔｓｉｚｅ）が正とされ（ステップ３０１ＹＥＳ）、かつ転送数（Ｔｓｉｚｅ）が最大転送数設定値（Ｔｍａｘ）よりも大きいと判定される限り（ステップ３０２ＹＥＳ）、分割１ブロック転送制御（ステップ３０３〜３１０）が繰り返し実行される。
【００３５】
以上の処理を繰り返す間に、転送数（Ｔｓｉｚｅ）が最大転送数設定値（Ｔｍａｘ）よりも小さいと判定されると（ステップ３０２ＮＯ）、最終ブロック転送制御への移行が行われる。この最終ブロック転送制御においては、まず、ブロック転送数（Ｃｏｕｎｔ）に転送数（Ｔｓｉｚｅ）を設定した後（ステップ３１１）、バス権の要求を行い（ステップ３１２）、以後バス権許可されるのを待機する（ステップ３１３ＮＯ）。この状態において、バス権が許可されると（ステップ３１３ＹＥＳ）、バス権獲得を行った後（ステップ３１４）、１データを転送しては（ステップ３１５）、転送元アドレス（Ａｓｒｃ）及び転送先アドレス（Ａｄｓｔ）を＋１更新し、転送数（Ｄｓｉｚｅ）及びブロック転送数（Ｃｏｕｎｔ）を−１更新する処理（ステップ３１６）を、ブロック転送数（Ｃｏｕｎｔ）が「０」となるまで（ステップ３１７ＮＯ）、繰り返し、ブロック転送数（Ｃｏｕｎｔ）が「０」となるのを待って（ステップ３１７ＹＥＳ）、バス権を解放し（ステップ３１８）、すべての転送処理を終了する。
【００３６】
以上図３に示される処理によれば、コントロールレジスタ１０３に起動コマンドを書き込むことでデータ転送は起動されるが、残りの転送数と最大転送数の比較を行い、１ブロック転送を起動する転送数を決定する。残りの転送数が最大転送数より大きい場合は最大転送数をブロック転送数として起動する。逆に、小さい場合は、残り転送数をブロック転送数として起動する。残り転送数が最大転送数より大きい間は複数回のブロック転送が自動で起動され、最終的に残りの転送数が「０」になると、データ転送（ＤＭＡＣ）は終了する。この間起動をかけたＭＰＵからみると、ひとかたまりのデータ転送の起動後、終了まで不必要なイベントは発生せず、最終的な終了時にのみ終了イベントが発生する。これにより不必要なＭＰＵの処理が軽減され、システムとしての性能が向上する。
【００３７】
本発明が対象とするシステムにおけるデータや信号の流れを示す説明図が図４に示されている。図において、Ｓ１はバス権要求信号（ＲＥＱ）、Ｓ２はバス権許可信号（ＧＲＡＮＴ）、Ｓ３はビジー信号（ＢＵＳＹ）、Ｄ１はデータ転送１、Ｄ２はデータ転送２、Ｄ３はデータ転送３である。なお、図中符号３は、複数のバスマスタ間におけるバス権の調停を行うためのアービタである。このアービタ３は、図６に示されるように、分割１ブロック転送のたびにアービトレーションタイミングを取得することができる。そのため、特定のバスマスタが長時間にわたりバスを占有して、他のバスマスタに悪影響を与えるといった事態が回避される。
【００３８】
従来方式と本発明方式とを比較して示す作用説明図が図５に示されている。以上一連の動作をバス権の観点でみると次のようになる。トータル３５０回の転送を行う設定について比較する。本方式における最大転送数を１００回に設定した場合を考える。従来方式では３５０回の転送が終了するまでバス権を保持する。この間、他のマスタがバス権要求を発行しても待たされることとなる。
【００３９】
これに対して、本発明では、１００回転送ごとに一旦バス権を解放する。解放後、再度バス権を要求しバス権を獲得する。このタイミングで他のバスマスタへバス権を切り替えることが可能となり、システムとしての平均待ち時間を小さくすることができる。本発明では、この転送の分割を設定により自動で行うことで、バスの使用効率を上げると共に、管理するＭＰＵの負荷を軽減する効果が得られる。
【００４０】
一方、スレーブ側の処理は従来の機能を変更することなく採用できる。すなわち、従来の一括転送においても、データ転送後終了イベントを新たにスレーブに発行してデータ転送終了を通知する。バスのデータ転送としては、３５０回のデータ転送が終了後、新たな終了通知イベントを発行してスレーブ側にデータ転送完了を通知する。
【００４１】
本発明方式では、データ転送が１００回×３と５０回の計４回の転送に分けて行われる。バス転送部では、全転送が３５０回であることは認識せずに、各転送ごとにバスアクションは終了する。４回目の転送が終了後、結果として３５０回連続した転送と同じデータが転送されている状態となる。この時点でマスタはスレーブに対する終了イベントを発行し、データ転送完了を通知する。
【００４２】
レジスタの設定例を従来方式と本発明方式とで比較して示す説明図が図７に示されている。同図に示されるように、転送元開始アドレスをＡＤｓｒｃ、転送先アドレスをＡＤｄｉｓｔとすると、レジスタに設定する値は同表のようになる。従来方式との違いは最大転送数レジスタの設定が増えたのみである。ただし、本発明方式では転送が分割されるが、従来方式では３５０回連続して転送される。
【００４３】
従来方式において本発明方式と同じ動作を行う場合のレジスタ設定例を示す説明図が図８に示されている。同図に示されるように、従来方式においては、データ転送制御装置（ＤＭＡＣ）に対して複数回の設定が必要となり、ＭＰＵ負荷の増大につながることが理解されるであろう。
【００４４】
複数マスタによる競合時のバス権の動き、及び転送回数の動作を示すタイムチャートが図６に示されている。この例にあっては、各ノードは３５０回転送を同時に発行する。各マスタはアービタに対してバス権要求信号（ＲＥＱ）によりバス権を要求し、アービタはバス権許可信号（ＧＲＡＮＴ）によりバス権を許可する。バス権許可信号（ＧＲＡＮＴ）を受信したマスタはビジー信号（ＢＵＳＹ）を出力してバス権を獲得する。アービトレーションモデルの波形をあわせて示す。例えば、マスタ＃０はデータ転送１を行い、マスタ＃１はデータ転送２を行い、マスタ＃２はデータ転送３を行う。
【００４５】
最後に、最大転送数の決定方式の一例として、最大待ち時間から算出する方法を示す。システム上のマスタ数をｍ、転送１回あたりの時間をＴａ、バス権保有中の最大点総数をＮとすると、最大待ち時間（ＷＴｍａｘ）は以下の式で表わされる。
ＷＴｍａｘ  ＝  （ｍ−１）×（Ｔａ×Ｎ）      ・・・（式１）
ｍ及びＴａはシステムごとの規定値であるので、ＷＴｍａｘを決定するパラメータは最大転送数（Ｎ）となる。式１より最大待ち時間Ｔｍａｘを実現するためには以下の条件が必要となる。
【００４６】
Ｎ  ≦  ＷＴｍａｘ  ／  ［（ｍ−１）×Ｔａ］    ・・・（式２）
式２から明らかなように、システムのマスタ数が増えれば、最大転送数を減少させなければならない。このことは従来方式においては、データ転送制御装置（ＤＭＡＣ）起動回数の増大にあたり、ＭＰＵの負荷増大につながる。
【００４７】
以上実施形態に示されたデータ転送制御装置によれば、マルチバスマスタをサポートするバスに適用した場合、ＭＰＵによるデータ転送制御装置の管理時間を増大させることなく、ひとかたまりの大容量データを分割して高速転送することができ、しかもその間に特定のバスマスタが長時間バスを占有することがないという利点がある。
【産業上の利用可能性】
【００４８】
本発明のデータ転送制御装置によれば、ＭＰＵによるデータ転送装置の管理時間を増大させることなく、かつ特定のバスマスタの占有時間を過度に増加させることなく、ひとかたまりの大容量データを分割して送信することができる。
【図面の簡単な説明】
【００４９】
【図１】本発明が対象とするシステムの構成図である。
【図２】本発明に係るデータ転送制御装置（ＤＭＡＣ）の内部構成を示す説明図である。
【図３】本発明装置の動作を示すフローチャートである。
【図４】本発明が対象とするシステムにおけるデータや信号の流れを示す説明図である。
【図５】従来方式と本発明方式とを比較して示す作用説明図である。
【図６】複数マスタによる競合時のバス権の動き、及び転送回数の動作を示すタイムチャートである。
【図７】レジスタの設定例を従来方式と本発明方式とで比較して示す説明図である。
【図８】従来方式において本発明方式と同じ動作を行う場合のレジスタ設定例を示す説明図である。
【図９】従来のデータ転送制御装置（ＤＭＡＣ）の内部構成を示す説明図である。
【図１０】従来の転送例を示す説明図である。
【図１１】マスタの最大転送数が４００に規定されているバスで、２０００回のデータを送信する場合の例を示す図である。
【符号の説明】
【００５０】
１      バスマスタ
２      マルチバスマスタ対応バス
３      アービタ
１０    データ転送制御装置（ＤＭＡＣ）
２０    ＭＰＵ
３０    メモリ
９０    従来のデータ転送制御装置
１０１  全体制御部
１０２  １ブロック転送制御部
１０２ａ  ブロック転送数レジスタ
１０３  コントロールレジスタ
１０４  転送元アドレスレジスタ
１０５  転送先アドレスレジスタ
１０６  転送数レジスタ
１０７  最大転送数設定レジスタ
１０８  比較器
１０９  選択器
９０１  全体制御部
９０２  コントロールレジスタ
９０３  転送元アドレスレジスタ
９０４  転送先アドレスレジスタ
９０５  転送数レジスタ
【図１】
2007249597.tif 000003
【図２】
2007249597.tif 000004
【図３】
2007249597.tif 000005
【図４】
2007249597.tif 000006
【図５】
2007249597.tif 000007
【図６】
2007249597.tif 000008
【図７】
2007249597.tif 000009
【図８】
2007249597.tif 000010
【図９】
2007249597.tif 000011
【図１０】
2007249597.tif 000012
【図１１】
2007249597.tif 000013