(57)【要約】【課題】データ転送をより効率的に行う。【解決手段】機能モジュール１は、転送対象のデータをＦＩＦＯ７に出力する。ＲＡＭ２は、転送対象のデータをＦＩＦＯ７から入力する。制御部２０は、機能モジュール１からＲＡＭ２へのバースト転送開始前に、機能モジュール１およびＲＡＭ２のバースト転送に係るクロック信号の速度比と転送対象のデータ長とから転送対象のデータの分割数を求め、この分割数に従って転送対象のデータを複数のデータに分割してＦＩＦＯ７から入力するようにＲＡＭ２を制御する。【選択図】図１
2008287490.tif 000002
【特許請求の範囲】
【請求項１】
転送対象のデータを記憶部に出力する送信側装置と、
前記転送対象のデータを前記記憶部から入力する受信側装置と、
前記記憶部と、
前記送信側装置から前記受信側装置へのバースト転送開始前に、前記送信側および受信側装置のバースト転送に係るクロック信号の速度比と前記転送対象のデータ長とから前記転送対象のデータの分割数を求め、該分割数に従って前記転送対象のデータを複数のデータに分割して前記記憶部から入力するように前記受信側装置を制御する制御部と、
を備えることを特徴とするデータ転送装置。
【請求項２】
前記制御部は、前記転送対象のデータを複数のデータに分割して転送する際の総転送時間を、前記クロック信号の速度比、前記転送対象のデータ長、および前記分割数の関数で表し、該総転送時間が最小となる前記分割数を求めることを特徴とする請求項１記載のデータ転送装置。
【請求項３】
前記制御部は、前記転送対象のデータを複数のデータに分割して転送する際の総転送時間の最小値を、前記転送対象のデータの分割数を変化させて求めることを特徴とする請求項１記載のデータ転送装置。
【請求項４】
前記総転送時間は、前記送信側装置からのデータが前記記憶部に蓄積されるまでの時間、前記送信側装置から転送要求を発行するのにかかる時間、該転送要求を非同期処理するための時間、該転送要求を前記受信側装置で受け取るのに必要な時間、前記受信側装置が前記記憶部からデータを読み出すのに必要な時間の和であることを特徴とする請求項２または３記載のデータ転送装置。
【請求項５】
転送対象のデータを所望のバースト長の複数のデータに分割して送信側装置から受信側装置へバースト転送を行う方法であって、
前記送信側および受信側装置のバースト転送に係るクロック信号の速度比と前記転送対象のデータ長とから前記転送対象のデータの分割数を求め、該分割数に従って前記転送対象のデータを複数のデータに分割してバースト転送を行うことを特徴とするデータ転送方法。
【請求項６】
前記転送対象のデータを複数のデータに分割して転送する際の総転送時間を、前記クロック信号の速度比、前記転送対象のデータ長、および前記分割数の関数で表し、該総転送時間が最小となる前記分割数を求めることを特徴とする請求項５記載のデータ転送方法。
【請求項７】
前記送信側装置から前記受信側装置へのバースト転送開始前に、
前記送信側および受信側装置のバースト転送に係るクロック信号の速度の遅速に応じて、前記転送対象のデータを複数のデータに分割して転送する際の総転送時間の最小値を、前記転送対象のデータの分割数を変化させて求めるステップと、
求めた前記総転送時間の最小値となる時の分割数を元に前記複数のデータに分割したバースト長を算出するステップと、
前記算出したバースト長を前記受信側装置における転送手段に設定するステップと、
を含むことを特徴とする請求項５記載のデータ転送方法。
【請求項８】
前記送信側装置のバースト転送に係るクロック信号の速度が前記受信側装置のそれよりも速いときまたは等しいときに、前記分割数を変化させて求めるステップは、
分割数ｎを１とするステップと、
前記転送対象のデータに対する総転送時間ｔ（１）を算出するステップと、
ｔ（ｎ）＜ｔ（ｎ＋１）となるまでｎをインクリメントしながら総転送時間ｔ（ｎ）を算出するステップと、
ｔ（ｎ）＜ｔ（ｎ＋１）を満たしたときのｎを前記総転送時間の最小値となる時の分割数とするステップと、
を含むことを特徴とする請求項７記載のデータ転送方法。
【請求項９】
前記送信側装置のバースト転送に係るクロック信号の速度が前記受信側装置のそれよりも遅いときに、前記分割数を変化させて求めるステップは、
分割数ｎを１とするステップと、
前記転送対象のデータに対する総転送時間ｔ（１）を算出するステップと、
ｔ（ｎ）＜ｔ（ｎ＋１）となるまでｎをインクリメントしながら総転送時間ｔ（ｎ）を算出するステップと、
ｔ（ｎ）＜ｔ（ｎ＋１）と、前記複数のデータに分割したバースト長が前記クロック信号の速度比から定まる所定値以上であることの双方を満たしたときのｎを前記総転送時間の最小値となる時の分割数とするステップと、
を含むことを特徴とする請求項７記載のデータ転送方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ転送システムおよびデータ転送方法に関し、特にデータの送信元と受信先のデータ送受信に係る動作周波数が異なる場合のデータ転送を行うシステムおよび方法に関する。
【背景技術】
【０００２】
半導体装置には、内部にＣＰＵと機能モジュールを備え、外部にデータ記憶用の記憶装置を接続し、さまざまなデジタル処理を行うものがある。このような半導体装置内部の機能モジュールは、画像処理、音声処理など様々なデータ処理を行っており、ＣＰＵを介して外部の記憶装置との間で相互にデータ転送処理を行う。このようなデータ転送では、一定の量（ワード数）のデータを連続して転送するバースト転送方式が一般的に行われる。
【０００３】
ところで、バースト転送が行われる送受信装置（デバイス）は、互いに異なる動作周波数で動作する場合が多い。そこで送受信装置間にバッファメモリを挿入し、このバッファメモリによって異なる動作周波数を実質的に吸収してバースト転送が行われる。例えば、特許文献１には、デュアルポートメモリ内にメモリ空間を複数に分割したブロックを形成し、データが該ブロックに書き込まれてから当該データを読み出すようにして、メモリ空間より大きなサイズのデータ、或いは、微小なサイズのデータであっても、異なる系の動作周波数で動作する２つのデバイス間で、高速に、そして、効率的にデータ転送することができるデータ送受信システムが記載されている。
【０００４】
また、特許文献２には、異なる速度でデータを転送するバス間におけるデータのバッファリングに使用するための仮想的なＦＩＦＯとして、メモリ装置を、各々が個別のデータバッファとして構成された複数の領域に分割するようなブリッジ装置が開示されている。
【０００５】
なお、関連する技術として、映像処理を行う装置に対して、データ量が多い色データに対して優先的、かつバースト長を長くして転送を行う技術が特許文献３に記載されている。
【０００６】
【特許文献１】特開２００４−１３３７８９号公報
【特許文献２】特表２００１−５２１２４６号公報
【特許文献３】特開２００４−１３３６６１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
ところで、半導体装置等において、処理の高速化が求められ、バースト転送もより高速に動作することが要求されている。これに対し、従来、異なる速度で動作する装置間に存在するバッファを複数の領域に分割することでバースト転送を効率化するような技術が知られている。しかしながら、バースト転送を最短あるいはそれに近い時間で転送する方法は、開示されておらず、データ転送をより効率的に行うことができなかった。
【課題を解決するための手段】
【０００８】
本発明の１つのアスペクトに係るデータ転送システムは、転送対象のデータを記憶部に出力する送信側装置と、転送対象のデータを記憶部から入力する受信側装置と、記憶部と、送信側装置から受信側装置へのバースト転送開始前に、送信側および受信側装置のバースト転送に係るクロック信号の速度比と転送対象のデータ長とから転送対象のデータの分割数を求め、該分割数に従って転送対象のデータを複数のデータに分割して記憶部から入力するように受信側装置を制御する制御部と、を備える。
【０００９】
本発明の他のアスペクトに係るデータ転送方法は、転送対象のデータを所望のバースト長の複数のデータに分割して送信側装置から受信側装置へバースト転送を行う方法であって、送信側および受信側装置のバースト転送に係るクロック信号の速度比と転送対象のデータ長とから転送対象のデータの分割数を求め、該分割数に従って転送対象のデータを複数のデータに分割してバースト転送を行う。
【発明の効果】
【００１０】
本発明によれば、送信側および受信側装置のバースト転送に係るクロック信号の速度比と転送対象のデータ長とから転送対象のデータの分割数を求めるので、動作周波数が異なる送信側および受信側装置間のデータのバースト転送において、適切なバースト長を設定することができる。したがって、データ転送にかかる時間が短縮され、データ転送をより効率的に行うことができる。
【発明を実施するための最良の形態】
【００１１】
本発明の実施形態に係るデータ転送システムは、転送対象のデータを記憶部に出力する送信側装置と、転送対象のデータを記憶部から入力する受信側装置と、記憶部と、制御部と、を備える。制御部は、送信側装置から受信側装置へのバースト転送開始前に、送信側および受信側装置のバースト転送に係るクロック信号の速度比と転送対象のデータ長とから転送対象のデータの分割数を求め、該分割数に従って転送対象のデータを複数のデータに分割して記憶部から入力するように受信側装置を制御する。
【００１２】
ここで、制御部は、転送対象のデータを複数のデータに分割して転送する際の総転送時間を、クロック信号の速度比、転送対象のデータ長、および分割数の関数で表し、該総転送時間が最小となる分割数を求めるようにしてもよい。
【００１３】
また、制御部は、転送対象のデータを複数のデータに分割して転送する際の総転送時間の最小値を、転送対象のデータの分割数を変化させて求めるようにしてもよい。
【００１４】
総転送時間は、送信側装置からのデータが記憶部に蓄積されるまでの時間、送信側装置から転送要求を発行するのにかかる時間、該転送要求を非同期処理するための時間、該転送要求を受信側装置で受け取るのに必要な時間、受信側装置が記憶部からデータを読み出すのに必要な時間の和であることが好ましい。
【００１５】
データ転送システムによるデータ転送方法は、送信側装置から受信側装置へのバースト転送開始前に、送信側および受信側装置のバースト転送に係るクロック信号の速度の遅速に応じて、転送対象のデータを複数のデータに分割して転送する際の総転送時間の最小値を、転送対象のデータの分割数を変化させて求めるステップと、求めた総転送時間の最小値となる時の分割数を元に複数のデータに分割したバースト長を算出するステップと、算出したバースト長を受信側装置における転送手段に設定するステップと、を含んでいてもよい。
【００１６】
また、送信側装置のバースト転送に係るクロック信号の速度が受信側装置のそれよりも速いときまたは等しいときに、分割数を変化させて求めるステップは、分割数ｎを１とするステップと、転送対象のデータに対する総転送時間ｔ（１）を算出するステップと、ｔ（ｎ）＜ｔ（ｎ＋１）となるまでｎをインクリメントしながら総転送時間ｔ（ｎ）を算出するステップと、ｔ（ｎ）＜ｔ（ｎ＋１）を満たしたときのｎを総転送時間の最小値となる時の分割数とするステップと、を含んでいてもよい。
【００１７】
さらに、送信側装置のバースト転送に係るクロック信号の速度が受信側装置のそれよりも遅いときに、分割数を変化させて求めるステップは、分割数ｎを１とするステップと、転送対象のデータに対する総転送時間ｔ（１）を算出するステップと、ｔ（ｎ）＜ｔ（ｎ＋１）となるまでｎをインクリメントしながら総転送時間ｔ（ｎ）を算出するステップと、ｔ（ｎ）＜ｔ（ｎ＋１）と、複数のデータに分割したバースト長がクロック信号の速度比から定まる所定値以上であることの双方を満たしたときのｎを総転送時間の最小値となる時の分割数とするステップと、を含んでいてもよい。
【００１８】
以上のようなデータ転送システムによれば、送信側および受信側装置におけるバースト転送に係る動作周波数比に基づいて適切なバースト長を決定することで、データ転送を効率的に実行することができる。以下、実施例に即し、図面を参照して詳しく説明する。
【実施例１】
【００１９】
図１は、本発明の第１の実施例に係るデータ転送システムの構成を示すブロック図である。図１において、データ転送システムは、機能モジュール１、ＲＡＭ２、ＳＲＡＭなどで構成されるＦＩＦＯ７、制御部２０を備える。また、制御部２０は、ＣＰＵ３、クロック切り替え器４、バースト長設定レジスタ５、コントローラ６ａ、６ｂを含む。機能モジュール１は、バス１４ａ、８ａを介してＦＩＦＯ７と接続される。また、ＲＡＭ２は、バス１４ｂ、８ｂを介してＦＩＦＯ７と接続される。そして、制御部２０は、機能モジュール１とＲＡＭ２とがＦＩＦＯ７を仲立ちとしてデータのバースト転送を行うように制御する。
【００２０】
ここで、機能モジュール１とＲＡＭ２は、それぞれ異なる周波数で動作する。動作モードに応じて、ＣＰＵ３がクロック切り替え器４の内部レジスタ（図示せず）の設定を行う。これにより、機能モジュール１、コントローラ６ａ、６ｂ、ＦＩＦＯ７へ供給されるクロック信号１０ａ、１０ｂの動作周波数が変更される。動作周波数が変更されると、ＣＰＵ３は、クロック信号１０ａ、１０ｂの動作周波数に応じた適切なバースト長を、クロック切り替え器４から出力される信号９によってバースト長設定レジスタ５へ設定する。ＦＩＦＯ７を境界として、機能モジュール１とＲＡＭ２は、それぞれデータの送信および受信の操作を行うコントローラ６ａ、６ｂを備えている。コントローラ６ａ、６ｂは、それぞれＦＩＦＯ７へのデータ書き込みまたは読み込みの操作信号１１ａ、１１ｂを送受する。また、転送要求、要求受付などを適切なタイミングでデータ転送を行うための信号１２ａ、１２ｂを相互に通信する。これらのコントローラ６ａ、６ｂに対して、バースト長設定レジスタ５から出力される信号１３によってバースト長設定値を設定する。コントローラ６ａ、６ｂに設定されるバースト長は、双方とも同じ値である。
【００２１】
以上のようなデータ転送システムにおいて、半導体装置の動作モードによって、機能モジュール１からＲＡＭ２へのデータ送信、またはＲＡＭ２から機能モジュール１へのデータ送信のどちらの場合も行われる。したがって、クロック信号１０ａ、１０ｂの周波数が異なれば、動作周波数の高速側から低速側へのデータ転送、あるいは動作周波数の低速側から高速側へのデータ転送のどちらの場合も存在しうる。
【００２２】
データ転送を確実に行うために、設定バースト長と同数のワード数のデータが送信側のＦＩＦＯ７に蓄積された時点で、送信側のコントローラ６ａは、転送要求を受信側に発行する。非同期処理を経て転送要求を受けた受信側のコントローラ６ｂは、バースト長と同数のワード数のデータの受信を実行する。以後、この方式で転送が行われるものとする。
【００２３】
動作クロックが異なる機能モジュール間、あるいは機能モジュールとメモリ間での信号の受け渡しには、非同期処理が必要である。非同期処理は、図２に示すようなクロックＢで動作する２段のフリップフロップ５１、５２を経由して、クロックＡで動作するフリップフロップ５０が出力した信号を同期化して受け渡す構成が一般的である。このため、信号の受け取りには、フリップフロップ５１、５２を経由する間のタイムラグが発生する。このタイムラグを非同期処理期間と呼ぶ。非同期処理期間は、データを受け取る側の動作周波数が遅く、なおかつ双方の動作周波数比が大きいときに特に顕著となる。この非同期処理は、データ転送の要求信号および受信信号である信号１２ａ、１２ｂの通信においてそれぞれ発生する。
【００２４】
次に、ＣＰＵ３の制御の詳細について説明する。図３は、ＣＰＵ３によるバースト転送に係る処理を表すフローチャートである。
【００２５】
まず、ステップＳ１０において、ＣＰＵ３は、動作モードに従い送信側および受信側の動作クロックの設定を行う。
【００２６】
ステップＳ１１において、送信側および受信側のバースト転送に係るクロック信号の周波数比に応じてバースト長を算出する。
【００２７】
ステップＳ１２において、受信側および送信側のコントローラ６ａ、６ｂにバースト長を設定する。
【００２８】
ステップＳ１３において、バースト長設定が完了し、データ転送処理が実行可能な待ち状態となり一連の処理は終了する。
【００２９】
次に、上記のステップＳ１１におけるバースト長の算出方法の詳細について説明する。バースト長算出の方法は、送信側および受信側装置のバースト転送に係るクロック信号の速度の遅速によって異なる。
【００３０】
図４は、送信側が受信側よりも高速な動作周波数で動作している場合におけるバースト長の算出方法を表すフローチャートである。ここでｎは、分割数を示し、ｔ（ｎ）は、バースト長をｎ分割したときの総転送時間を示す。
【００３１】
ステップＳ２０において、ｎを１に設定する。
【００３２】
ステップＳ２１において、ＦＩＦＯ７に蓄積することができる最大のデータ数Ｎと同数のバースト長を基準として、総転送時間ｔ（１）を計算する。
【００３３】
ステップＳ２２において、分割数ｎを増加させた時の総転送時間ｔ（ｎ＋１）を計算する。
【００３４】
ステップＳ２３において、差分Ｍ＝ｔ（ｎ）−ｔ（ｎ＋１）を求め、Ｍ≧０ならばステップＳ２４においてｎを１増加させてステップＳ２２へ戻る。またＭ＜０であれば、ステップＳ２５に進む。
【００３５】
ステップＳ２５において、ｎを求めたい分割数とし、分割数ｎのバースト長を最適なバースト長として一連の処理を終了する。ここで最大バースト長をＮ（Ｎは２以上の整数）としたときの分割数ｎと、分割したバースト長をｂとしたとき、ｂ＝Ｎ／ｎで表される。
【００３６】
図５は、図４とは逆に受信側装置が送信側装置よりも高速に動作している場合におけるバースト長の算出方法を表すフローチャートであり、図３のステップＳ１１を詳細に記載したものである。図５と図４の違いは、ステップＳ２３ａにおいて、差分Ｍの算出に加え、バースト長ｂに対して後述の式（２４）に示される制約が加わる。
【００３７】
次に、バースト転送時のタイミングチャートについて説明する。図６は、送信側が受信側よりも高速な動作周波数で動作している場合におけるバースト転送のタイミングチャートである。
【００３８】
図６において、送信側から受信側へＮワードのバースト転送を行うに際し、図６（ａ）、（ｂ）、（ｃ）、（ｄ）のように分割数を１、２、４、８と増加させていった場合におけるバースト長ごとの動作の例を表している。送信データを短いバースト長で複数回に分けて受信すると、１バースト長のデータが揃った時点でデータ転送が開始できるため、その分データ受信開始が早くなり、転送にかかる全体の時間は、短くなる傾向にある。
【００３９】
しかし、バースト長を短くし転送回数を増やすに従い、転送の起動、受信、終了を相互に通知するための転送の要求信号および受信信号である信号１２ａ、１２ｂをやりとりするための非同期処理を行う回数が増加する。したがって、図６（ｄ）に示すように、転送回数を余り増やすと、かえって全体の転送時間を長くしてしまうこととなる。また、図２に示した非同期処理回路の構成からも自明なように、送信側と受信側の動作周波数比が大きくなるに従い、非同期処理期間（クロック数）も長くなっていくため、さらに全体の転送時間を長くする要因となる。このことから、送信側と受信側の動作周波数比に対して、全体の転送時間を最も短くする最適なバースト長は異なる。
【００４０】
ここで非同期処理時間Ｔ２は、設定バースト長と同数のデータがＦＩＦＯ７に蓄積されたことを送信側から受信側へ知らせる信号（図１の１２ａまたは１２ｂ）が同期化処理（図２のフリップフロップ５０、５１、５２を通過する時間）されるまでの時間である。非同期処理期間Ｔ２は、非同期処理の回路構成（動作仕様）に従って計算することで算出することができる。したがって、転送に係る全体のデータ量とバースト長、非同期処理にかかる時間を数式化することにより、期待される総転送時間を予測することができる。ＣＰＵ３は、送信側と受信側との周波数比において最も総転送時間が短くなるようなバースト長を算出しておく。そして、ＣＰＵ３は、動作モード変更などに伴って動作周波数設定の変更を検知するたびに、送信側と受信側の周波数比に応じてコントローラ６ａ、６ｂに適切なバースト長を設定する。このような設定を行うことで常に高速な転送が可能となる。
【００４１】
以下に、総転送時間の具体的な計算例を示す。なお、この計算を行う機構を半導体装置に組み込んでおいてもよいし、取りうる動作クロックの組み合わせで計算を別途実行しておき、結果のみをテーブルとして半導体装置に組み込んでおいても同じ効果が得られる。
【００４２】
図６において、送信側からの送信データがＦＩＦＯ７に設定バースト長と同じ数まで蓄積されるのにかかる時間をＴ１、送信側から受信側に転送要求を出し、それが同期化処理を経て受信側に認識されるまでの時間をＴ２、受信側がＦＩＦＯ７から設定バースト長と同数のデータを読み出すまでの時間をＴ３とする。受信側からの転送要求解除信号の非同期処理期間は、受信側のデータ読み出しと同時に並行して行えるため、ここでは考慮しない。ただし、転送要求解除信号を送信側で認識するまでＦＩＦＯ７へのデータ蓄積を停止する場合、またはバスのアービトレーションの影響など、処理時間として考慮しなければいけない期間がある動作仕様の場合は、数式への加算が必要となる。
【００４３】
図６は、バースト長をＦＩＦＯ７に蓄積することができる最大のデータ数Ｎと同数のバースト長とした場合の総転送時間を表したものである。取りうるバースト長ｂを、Ｎ、Ｎ÷２、Ｎ÷４、Ｎ÷８としたとき、図６（ｂ）は、バースト長ｂをＮ÷２とし、２分割で受信する場合を表し、図６（ｃ）、（ｄ）は、同様にＮ÷４、Ｎ÷８としたケースを表している。
【００４４】
図６（ａ）、図６（ｂ）、図６（ｃ）、図６（ｄ）における総転送時間をそれぞれｔ（１）、ｔ（２）、ｔ（３）、ｔ（４）とする。ｔ（１）、ｔ（２）、ｔ（３）、ｔ（４）は、それぞれＴ１、Ｔ２、Ｔ３を用いて、下記の式（１）〜（４）のように表される。
図６（ａ）の場合、
ｔ（１）＝Ｔ１＋Ｔ２＋Ｔ３      ・・・・式（１）
図６（ｂ）の場合、
ｔ（２）＝Ｔ１÷２＋２×Ｔ２＋２×Ｔ３÷２      ・・・・式（２）
図６（ｃ）の場合、
ｔ（３）＝Ｔ１÷４＋４×Ｔ２＋４×Ｔ３÷４      ・・・・式（３）
図６（ｄ）の場合、
ｔ（４）＝Ｔ１÷８＋８×Ｔ２＋８×Ｔ３÷８      ・・・・式（４）
【００４５】
これらの計算を図４に示すフローチャートに沿って行う。Ｔ１、Ｔ２、Ｔ３は、送信側と受信側の周波数比から実数値が入る（詳細後述）。
【００４６】
図４のステップＳ２０、Ｓ２１から、最大バースト長Ｎでの転送時間は、ｔ（１）となる。ステップＳ２２において、２分割のバースト長での転送時間はｔ（２）となる。
【００４７】
また、差分Ｍ（図６（ｂ）のＭに対応）を取ると、下記に示す式（５）のようになる。
Ｍ＝ｔ（１）−ｔ（２）
＝Ｔ１＋Ｔ２＋Ｔ３−（Ｔ１÷２＋２×Ｔ２＋２×Ｔ３÷２）
＝Ｔ１÷２−Ｔ２      ・・・・式（５）
【００４８】
ステップＳ２３において、Ｍ≧０であれば、転送時間が改善されたという意味であるので、以後同様ステップＳ２４を経由し、２番目に大きいバースト長（この例ではＮ÷２）からｔ（２）−ｔ（３）、ｔ（３）−ｔ（４）、・・・と繰り返し、Ｍ＜０となった時点で前回（この例ではｔ（３））の時点のバースト長を最適なバースト長として決定する（ステップＳ２５）。
【００４９】
Ｔ１、Ｔ２、Ｔ３を具体的に数値として求める例を以下に示す。本例では送信側のほうが受信側よりも高速に動作していることから、図７に示したようなクロック関係になる。送信側のクロック信号のサイクル時間をＣ１、受信側のクロック信号のサイクル時間をＣ２とする。データ送信側のクロックを基準に考えると、サイクル時間の比ｆは、下記に示す式（６）で表される。
ｆ＝Ｃ２÷Ｃ１      ・・・・式（６）
【００５０】
式（６）は、送信側から見て受信側がｆ倍（ｆ＞１）の動作サイクル（周波数は逆数）で動作しているという意味になる。
【００５１】
送信側からのデータがＦＩＦＯ７に蓄積されるまでの時間Ｔ１は、以下の式（７）で表すことができる。
Ｔ１＝Ｃ１×Ｎ      ・・・・式（７）
【００５２】
図８は、非同期処理期間の算出を説明するためのタイミングチャートである。図８に示すように、非同期処理にかかる時間Ｔ２は、送信側から転送要求を発行するのにかかる時間Ｃ１と、転送要求を非同期処理するための最大時間（２×Ｃ２）と受信側で受け取るのに必要な最大時間Ｃ２、これらを足し合わせ、式（８）が成り立つ。
Ｔ２＝Ｃ１＋３×Ｃ２＝Ｃ１×（１＋３×ｆ）      ・・・・式（８）
【００５３】
なお、図８に示すように、転送要求解除の非同期処理期間は、データ受信期間に隠蔽され、転送処理時間算出に対して無視することができる。
【００５４】
受信側がＦＩＦＯ７からデータを読み出すのに必要な時間Ｔ３は、以下の式（９）で表すことができる。
Ｔ３＝Ｃ２×Ｎ＝Ｃ１×ｆ×Ｎ      ・・・・式（９）
【００５５】
Ｃ１、Ｃ２、ｆは、送信側および受信側の動作周波数が決定されると一意に決まるため、図４に示したフローチャートに基づき、総転送時間はバースト長ｂをＦＩＦＯ７の容量と同数であるＮを基準として計算することができる。
【００５６】
以上の説明において、総転送時間の最小値を、転送対象のデータの分割数を変化させて求める方法を示した。しかし、これに限定されること無く以下のように、転送対象のデータを複数のデータに分割して転送する際の総転送時間Ｔｔｏｔａｌを、クロック信号の速度比ｆ、転送対象のデータ長Ｎ、および分割数ｋの関数で表し、総転送時間Ｔｔｏｔａｌが最小となる分割数を求めるようにしてもよい。
【００５７】
式（１）〜（４）を一般化すれば、ｋ分割の場合、
Ｔｔｏｔａｌ＝Ｔ１／ｋ＋ｋ・Ｔ２＋Ｔ３      ・・・・式（１０）
となる。
【００５８】
式（７）〜（９）から、Ｔ１＝Ｃ１・Ｎ、Ｔ２＝Ｃ１（１＋３ｆ）、Ｔ３＝Ｃ１・ｆ・Ｎであるので、式（１０）は、式（１１）のように表される。
Ｔｔｏｔａｌ＝Ｃ１・Ｎ／ｋ＋ｋ・Ｃ１（１＋３ｆ）＋Ｃ１・ｆ・Ｎ      ・・・・式（１１）
【００５９】
Ｔｔｏｔａｌのｋに対する最小値を求める。Ｔｔｏｔａｌをｋで微分し、０とおくと、
−Ｃ１・Ｎ／ｋ２＋Ｃ１（１＋３ｆ）＝０      ・・・・式（１２）
∴ｋ＝（Ｎ／（１＋３ｆ））１／２      ・・・・式（１３）
となる。
【００６０】
式（１３）で求めたｋは、非整数である可能性もあるので、この場合は求めたｋの前後の整数のいずれかを分割数とすればよい。なお、Ｎ、ｆが予め限定された値であるような場合、算術演算の煩雑さを避けるために、Ｎ、ｆの組み合わせをテーブル化しておき、ｋを索引するようにして求めてもよい。
【００６１】
一方、図９は、送信側が受信側よりも低速な動作周波数で動作している場合におけるバースト転送のタイミングチャートである。図６と同様、バースト長をＦＩＦＯ７に蓄積することができる最大のデータ数Ｎと同数のバースト長とした場合の総転送時間を表したものである。取りうるバースト長ｂを、Ｎ、Ｎ÷２、Ｎ÷４、Ｎ÷８としたとき、図９（ｂ）は、バースト長をＮ÷２とし、２分割で受信する場合を表し、図９（ｂ）、（ｃ）は、同様にＮ÷４、Ｎ÷８とした場合を表している。
【００６２】
ところで、送信側の動作速度が低速なときは、図６のケースとは考え方が異なる。受信側が送信側のデータがＦＩＦＯ７に所定のバースト数だけ蓄積されるのを待つ状態になるため、最も高速に全データの転送を行うためには、送信側のデータが全てＦＩＦＯ７に蓄積されるのが終了すると同時に最後の１回の転送を開始しなければならない。この例を示したのが図９の各図である。図９（ａ）、（ｂ）、（ｃ）からも明らかなように、バースト長が短いほど総転送時間は短くなる。しかし、短くしすぎると、図９（ｄ）に示すように非同期処理時間の総計のほうが長くなってしまい、最後の１回の転送が始まるまでタイムロスＷが発生してしまう。したがって、非同期処理にかかる時間がデータ蓄積終了までの時間を超えないことという条件が加わる（詳細後述）。
【００６３】
送信側からすべてのデータがＦＩＦＯ７に蓄積されるまでの時間をＴ４、送信側から受信側に最後の１転送の転送要求を出し、それが同期化処理を経て受信側に認識されるまでの時間をＴ５、受信側がＦＩＦＯ７から設定バースト長と同数のデータを読み出すまでの時間をＴ６とする。
【００６４】
図９（ａ）、（ｂ）、（ｃ）、（ｄ）のそれぞれにおける総転送時間を、ｔ（１１）、ｔ（１２）、ｔ（１３）、ｔ（１４）とする。ｔ（１１）、ｔ（１２）、ｔ（１３）、ｔ（１４）は、それぞれＴ４、Ｔ５、Ｔ６を用いて以下の式（１４）〜（１７）のように表される。
図９（ａ）の場合、
ｔ（１１）＝Ｔ４＋Ｔ５＋Ｔ６      ・・・・式（１４）
図９（ｂ）の場合、
ｔ（１２）＝Ｔ４＋Ｔ５＋Ｔ６÷２      ・・・・式（１５）
図９（ｃ）の場合、
ｔ（１３）＝Ｔ４＋Ｔ５＋Ｔ６÷４      ・・・・式（１６）
図９（ｄ）の場合、
ｔ（１４）＝Ｔ４＋Ｔ５＋Ｗ＋Ｔ６÷８      ・・・・式（１７）
【００６５】
図６のケースと同様に、図５のフローチャートに沿って総転送時間を比較し、最も良いバースト長を求める。
【００６６】
次に、Ｔ４、Ｔ５、Ｔ６を実際に数値として求める例を以下に示す。本例では、データ送信側よりも受信側のほうが高速に動作していることから、図１０に示したようなクロック関係になる。送信側のクロック信号のサイクル時間をＣ３、受信側のクロック信号のサイクル時間をＣ４とする。データ送信側のクロックを基準に考えると、サイクル時間の比ｆａは、以下の式（１８）で表される。
ｆａ＝Ｃ４÷Ｃ３      ・・・・式（１８）
【００６７】
式（１８）は、送信側から見て受信側がｆａ倍（ｆａ＜１）の動作サイクル（周波数は逆数）で動作しているという意味になる。
【００６８】
Ｔ４、Ｔ５、Ｔ６は、図６の例と同じようにして、以下の式（１９）〜（２１）で表すことができる。
Ｔ４＝Ｃ３×Ｎ      ・・・・式（１９）
Ｔ５＝Ｃ３＋３×Ｃ４＝Ｃ３×（１＋３×ｆａ）      ・・・・式（２０）
Ｔ６＝Ｃ４×Ｎ＝Ｃ３×ｆａ×Ｎ      ・・・・式（２１）
【００６９】
また、前述した図９（ｄ）に示すように非同期処理時間の総計のほうが長くなってしまうケースを防ぐための制約として、受信側の一回のバースト転送にかかる最短の時間Ｔ７よりも送信側の１バースト分のデータ蓄積時間が長いことが必要となる。すなわち、Ｔ７は、ｔ（ｎ）のときのバースト長ｂを用いて、式（２２）のように表すことができる。
Ｔ７＜Ｃ３×ｂ      ・・・・式（２２）
【００７０】
図１１は、非同期処理期間の算出を説明するためのタイミングチャートである。図１１に示すように、非同期処理にかかる時間Ｔ７は、図１１に示すように１回の受信処理を最短で終える時間（Ｔ５＋送信側の５ｃｌｋ）であるから、式（２３）が成り立つ。
Ｔ７＝Ｔ５＋５×Ｃ３＝Ｃ３×（１＋３×ｆａ）＋５×Ｃ３      ・・・・式（２３）
【００７１】
式（２２）、（２３）から、式（２４）が成り立つ。
Ｃ３×（１＋３×ｆａ）＋５×Ｃ３＜Ｃ３×ｂ
∴ｂ＞（１＋３×ｆａ）＋５      ・・・・式（２４）
【００７２】
よって、複数のデータに分割したバースト長ｂがクロック信号の速度比ｆａから定まる所定値以上である条件、例えば式（２４）を満たす条件を加えた、図５のフローチャートによって転送時間が最小となるバースト長ｂを決定すればよい。
【００７３】
以上、送信側と受信側が異なる周波数で動作している半導体装置において、最適なバースト長を求める方法を示した。この方法により、データ送信側と受信側との動作周波数比から、分割回数毎に転送時間を計算し、最適なバースト長を決定して最短の転送時間でデータ転送を行うことができる。
【００７４】
なお、図１ではデータ転送対象となる機能モジュールが一つである場合を示している。しかし、これに限定されることなく、異なる機能を持つ機能モジュールを複数個接続することもできる。また、各々の機能モジュールに対応するバースト長レジスタを個別に持ち、各々の機能モジュールごとに最適なバースト長を設定することもできる。
【図面の簡単な説明】
【００７５】
【図１】本発明の第１の実施例に係るデータ転送システムの構成を示すブロック図である。
【図２】非同期処理のための回路の例を示す図である。
【図３】ＣＰＵによるバースト転送に係る処理を表すフローチャートである。
【図４】送信側装置が受信側装置よりも高速な動作周波数で動作している場合におけるバースト長の算出方法を表すフローチャートである。
【図５】受信側装置が送信側装置よりも高速に動作している場合におけるバースト長の算出方法を表すフローチャートである。
【図６】送信側装置が受信側装置よりも高速な動作周波数で動作している場合におけるバースト転送のタイミングチャートである。
【図７】受信側装置と送信側装置とにおけるデータ送受信に係るクロック信号の関係を示す第１の図である。
【図８】非同期処理期間の算出を説明するための第１のタイミングチャートである。
【図９】送信側装置が受信側装置よりも低速な動作周波数で動作している場合におけるバースト転送のタイミングチャートである。
【図１０】受信側装置と送信側装置とにおけるデータ送受信に係るクロック信号の関係を示す第２の図である。
【図１１】非同期処理期間の算出を説明するための第２のタイミングチャートである。
【符号の説明】
【００７６】
１  機能モジュール
２  ＲＡＭ
３  ＣＰＵ
４  クロック切り替え器
５  バースト長設定レジスタ
６ａ、６ｂ  コントローラ
７  ＦＩＦＯ
８ａ、８ｂ、１４ａ、１４ｂ  バス
９、１２ａ、１２ｂ、１３  信号
１０ａ、１０ｂ  クロック信号
１１ａ、１１ｂ  操作信号
２０  制御部
５０、５１、５２  フリップフロップ
【図１】
2008287490.tif 000003
【図２】
2008287490.tif 000004
【図３】
2008287490.tif 000005
【図４】
2008287490.tif 000006
【図５】
2008287490.tif 000007
【図６】
2008287490.tif 000008
【図７】
2008287490.tif 000009
【図８】
2008287490.tif 000010
【図９】
2008287490.tif 000011
【図１０】
2008287490.tif 000012
【図１１】
2008287490.tif 000013