(57)【要約】【課題】異なるバス間でのデータ転送の効率を向上させる、ＤＭＡコントローラ及びバス間データ転送方法、を提供する。【解決手段】本発明のＤＭＡコントローラは、転送情報登録部と送信ＦＩＦＯメモリと制御部とを備えている。転送情報登録部には、転送情報（第１のバスに接続された第１のデータ記憶手段のアドレスを示す転送元アドレスと、第２のバスに接続された第２のデータ記憶手段のアドレスを示す転送先アドレスとを示す）が登録されるようになっている。制御部は、前記転送情報登録部に前記転送情報が登録された際、前記転送元アドレスから読み出したデータを、前記送信ＦＩＦＯメモリに送信する。そして、前記送信ＦＩＦＯメモリに前記データの記憶が開始され始めた際、前記送信ＦＩＦＯメモリに記憶されている前記データを、前記転送先アドレスに送信する。【選択図】      図１
2016130927.tif 000002
【特許請求の範囲】
【請求項１】
第１のバスに接続された第１のデータ記憶手段のアドレスを示す転送元アドレスと、前記第１のバスとは異なる第２のバスに接続された第２のデータ記憶手段のアドレスを示す転送先アドレスとを示す転送情報が、前記第１のバスに接続されたＣＰＵから登録される転送情報登録部と、
前記転送元アドレスから読み出されたデータを一時記憶する送信ＦＩＦＯメモリと、
前記転送情報登録部に、前記転送元アドレスと前記転送先アドレスを示す前記転送情報が登録された際、前記転送元アドレスから読み出したデータを、前記送信ＦＩＦＯメモリに送信し、
前記送信ＦＩＦＯメモリに前記データの記憶が開始され始めた際、前記送信ＦＩＦＯメモリに記憶されている前記データを、前記転送先アドレスに送信する制御部と、
を備えていることを特徴とするＤＭＡコントローラ。
【請求項２】
前記転送情報登録部に、
第１のバスに接続された第１のデータ記憶手段のアドレスを示す第１の転送先アドレスと、前記第１のバスとは異なる第２のバスに接続された第２のデータ記憶手段のアドレスを示す第１の転送元アドレスと、を示す第１の転送情報と、
前記第１のバスに接続された前記第１のデータ記憶手段のアドレスを示す第２の転送先アドレスと、前記第１のバスとは異なる第３のバスに接続された第３のデータ記憶手段のアドレスを示す第２の転送元アドレスと、を示す第２の転送情報が登録された際、
前記制御部は、前記第１の転送元アドレスから読み出したデータを、前記第１の転送先アドレスに送信し、
前記第２の転送元アドレスからのデータを読み出すのに適切な時間であるところの要求送信時間を演算し、
現在の時間が、前記要求送信時間に到達したか或いは前記要求送信時間を越えている場合、前記第２の転送元アドレスに読み出し要求を送信して前記第２の転送元アドレスのデータを前記送信ＦＩＦＯメモリに送信させ、
前記送信ＦＩＦＯメモリに前記第２の転送元アドレスのデータの記憶が開始され始めた際、前記送信ＦＩＦＯメモリに記憶されている前記第２の転送元アドレスのデータを、前記第２の転送先アドレスに送信する、
ことを特徴とする請求項１に記載のＤＭＡコントローラ。
【請求項３】
前記要求送信時間は、前記第１の転送元アドレスから読み出したデータが、前記第１の転送先アドレスに全て送信されるまでの時間を予測した予測時間から、
前記送信ＦＩＦＯメモリに送信された前記第２の転送元アドレスのデータが、前記第２の転送先アドレスに送信され始めるまでに要する前記制御部の内部処理時間と、前記第２の転送情報に示されている外部遅延時間とを減算した時間である、
ことを特徴とする請求項２に記載のＤＭＡコントローラ。
【請求項４】
前記転送情報登録部に、
第１のバスに接続された第１のデータ記憶手段のアドレスを示す第１の転送元アドレスと、前記第１のバスとは異なる第２のバスに接続された第２のデータ記憶手段のアドレスを示す第１の転送先アドレスと、を示す第１の転送情報と、
前記第１のバスに接続された前記第１のデータ記憶手段のアドレスを示す第２の転送元アドレスと、前記第１のバスとは異なる第３のバスに接続された第３のデータ記憶手段のアドレスを示す第２の転送先アドレスと、を示す第２の転送情報が登録された際、
前記制御部は、前記第１の転送元アドレスから読み出したデータを、前記第１の転送先アドレスに送信し、
前記第２の転送元アドレスからのデータを読み出すのに適切な時間であるところの第２の要求送信時間を演算し、
現在の時間が、前記第２の要求送信時間に到達したか或いは前記第２の要求送信時間を越えている場合、前記第２の転送元アドレスに読み出し要求を送信して前記第２の転送元アドレスのデータを前記送信ＦＩＦＯメモリに送信させ、
前記送信ＦＩＦＯメモリに前記第２の転送元アドレスのデータの記憶が開始され始めた際、前記送信ＦＩＦＯメモリに記憶されている前記第２の転送元アドレスのデータを、前記第２の転送先アドレスに送信する、
ことを特徴とする請求項１に記載のＤＭＡコントローラ。
【請求項５】
前記第２の要求送信時間は、前記第１の転送元アドレスから読み出したデータが、前記第１の転送先アドレスに全て送信されるまでの時間を予測した予測時間から、
前記送信ＦＩＦＯメモリに送信された前記第１の転送元アドレスのデータが、前記第１の転送先アドレスに送信され始めるまでに要する前記制御部の内部処理時間と、前記第２の転送情報に示されている外部遅延時間とを減算した時間である、
ことを特徴とする請求項４に記載のＤＭＡコントローラ。
【請求項６】
転送情報が登録される転送情報登録部と、データ記憶手段から読み出されたデータを一時記憶する送信ＦＩＦＯメモリを備えるＤＭＡコントローラにおいて、
前記転送情報登録部に、第１のバスに接続された第１のデータ記憶手段のアドレスを示す転送元アドレスと、前記第１のバスとは異なる第２のバスに接続された第２のデータ記憶手段のアドレスを示す転送先アドレスとを示す転送情報が登録された際、前記転送元アドレスから読み出したデータを、前記送信ＦＩＦＯメモリに送信し、
前記送信ＦＩＦＯメモリに前記データの記憶が開始され始めた際、前記送信ＦＩＦＯメモリに記憶されている前記データを、前記転送先アドレスに送信する、
ことを特徴とするバス間データ転送方法。
【請求項７】
前記転送情報登録部に、
第１のバスに接続された第１のデータ記憶手段のアドレスを示す第１の転送先アドレスと、前記第１のバスとは異なる第２のバスに接続された第２のデータ記憶手段のアドレスを示す第１の転送元アドレスと、を示す第１の転送情報と、
前記第１のバスに接続された前記第１のデータ記憶手段のアドレスを示す第２の転送先アドレスと、前記第１のバスとは異なる第３のバスに接続された第３のデータ記憶手段のアドレスを示す第２の転送元アドレスと、を示す第２の転送情報が登録された際、前記第１の転送元アドレスから読み出したデータを、前記第１の転送先アドレスに送信し、
前記第２の転送元アドレスからのデータを読み出すのに適切な時間であるところの要求送信時間を演算し、
現在の時間が、前記要求送信時間に到達したか或いは前記要求送信時間を越えている場合、前記第２の転送元アドレスに読み出し要求を送信して前記第２の転送元アドレスのデータを前記送信ＦＩＦＯメモリに送信させ、
前記送信ＦＩＦＯメモリに前記第２の転送元アドレスのデータの記憶が開始され始めた際、前記送信ＦＩＦＯメモリに記憶されている前記第２の転送元アドレスのデータを、前記第２の転送先アドレスに送信する、
ことを特徴とする請求項６に記載のバス間データ転送方法。
【請求項８】
前記要求送信時間は、前記第１の転送元アドレスから読み出したデータが、前記第１の転送先アドレスに全て送信されるまでの時間を予測した予測時間から、
前記送信ＦＩＦＯメモリに送信された前記第２の転送元アドレスのデータが、前記第２の転送先アドレスに送信され始めるまでに要する内部処理時間と、前記第２の転送情報に示されている外部遅延時間とを減算した時間である、
ことを特徴とする請求項７に記載のバス間データ転送方法。
【請求項９】
前記転送情報登録部に、
第１のバスに接続された第１のデータ記憶手段のアドレスを示す第１の転送元アドレスと、前記第１のバスとは異なる第２のバスに接続された第２のデータ記憶手段のアドレスを示す第１の転送先アドレスと、を示す第１の転送情報と、
前記第１のバスに接続された前記第１のデータ記憶手段のアドレスを示す第２の転送元アドレスと、前記第１のバスとは異なる第３のバスに接続された第３のデータ記憶手段のアドレスを示す第２の転送先アドレスと、を示す第２の転送情報が登録された際、前記第１の転送元アドレスから読み出したデータを、前記第１の転送先アドレスに送信し、
前記第２の転送元アドレスからのデータを読み出すのに適切な時間であるところの第２の要求送信時間を演算し、
現在の時間が、前記第２の要求送信時間に到達したか或いは前記第２の要求送信時間を越えている場合、前記第２の転送元アドレスに読み出し要求を送信して前記第２の転送元アドレスのデータを前記送信ＦＩＦＯメモリに送信させ、
前記送信ＦＩＦＯメモリに前記第２の転送元アドレスのデータの記憶が開始され始めた際、前記送信ＦＩＦＯメモリに記憶されている前記第２の転送元アドレスのデータを、前記第２の転送先アドレスに送信する、
ことを特徴とする請求項６に記載のバス間データ転送方法。
【請求項１０】
前記第２の要求送信時間は、前記第１の転送元アドレスから読み出したデータが、前記第１の転送先アドレスに全て送信されるまでの時間を予測した予測時間から、
前記送信ＦＩＦＯメモリに送信された前記第１の転送元アドレスのデータが、前記第１の転送先アドレスに送信され始めるまでに要する内部処理時間と、前記第２の転送情報に示されている外部遅延時間とを減算した時間である、
ことを特徴とする請求項９に記載のバス間データ転送方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリやデバイスなどの間でのデータ転送を行う、ＤＭＡコントローラ及びバス間データ転送方法、に関する。
【背景技術】
【０００２】
ＣＰＵ、メモリ、各種のデバイスなどから構成されるコンピュータにおいて、メモリとメモリ間、或いは、メモリとデバイス間などでデータ転送を行う場合、その制御は、ＣＰＵだけでなく、ＤＭＡコントローラでも行うようになってきている。ここで、前記のＣＰＵは、「Central Processing Unit：中央演算処理装置」の略記である。また、ＤＭＡは、「Direct Memory Access：ディーエムエー」の略記である。
【０００３】
コンピュータ内でデータ転送を行う場合、データは、コンピュータ内のバス（bus）を介して、メモリやデバイスなどの間を転送されるようになっている。
【０００４】
そして、ＤＭＡコントローラは、１本のバス上でのデータ転送を制御するだけでなく、複数のバス間でのデータ転送をも行わせるようになってきている（例えば、特許文献１参照。）。
【０００５】
上述した特許文献１「データ転送方法及び装置」には以下の記載がなされている。
【０００６】
すなわち、図１１に示すように、第１のバス１１と第２のバス１２とは、ＦＩＦＯ等のバッファメモリを有するバス中継器１３を介して接続され、各バス１１、１２にはそれぞれＤＭＡ（ダイレクトメモリアクセス）コントローラ２２、２７が接続される。バス中継器１３は各ＤＭＡコントローラ２２、２７にＤＭＡ転送の要求を出すことができる。ＤＭＡコントローラ２２は、バス１１上のデバイス２３やメモリ２４からのデータをバス中継器１３内のバッファメモリにＤＭＡ転送し、ＤＭＡコントローラ２７はバス中継器１３内のバッファメモリからバス１２上のデバイス２８やメモリ２９にＤＭＡ転送する。同様に、ＤＭＡコントローラ２７、２２によりバス１２上のデータをバス中継器１３内のバッファメモリを介してバス１１上にＤＭＡ転送する。
【０００７】
このことにより、異なるバス間でのＤＭＡ転送を効率よく行うことができる、としている。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開平１０−２９３７４２号公報（第３〜７頁、図１〜５）
【発明の概要】
【発明が解決しようとする課題】
【０００９】
上述した特許文献１に記載の手法においては、ＤＭＡコントローラ２２は、先ず、バス１１上のデバイス２３やメモリ２４からのデータをバス中継器１３内のバッファメモリにＤＭＡ転送する。そして、バス中継器１３は、ＤＭＡコントローラ２７にＤＭＡ転送を行うよう要求する。すると、ＤＭＡコントローラ２７は、バス中継器１３内のバッファメモリのデータを、デバイス２８やメモリ２９に転送するようにしている。このことにより、異なるバス間でのデータ転送が効率よく行えるようになる、としている。
【００１０】
しかし、特許文献１に記載の手法においては、ＤＭＡコントローラ２２のＤＭＡ転送が終了した後に、ＤＭＡコントローラ２７のＤＭＡ転送が行われるようになっている。このため、異なるバス間でのデータ転送に要する時間は、ＤＭＡコントローラ２２の動作時間と、ＤＭＡコントローラ２７の動作時間の合計となってしまうものとなっている。
【００１１】
ここで、特許文献１に記載の手法について、バスの使用形態という観点からみてみると、ＤＭＡコントローラ２２のＤＭＡ転送が行われている時は、ＤＭＡコントローラ２２が接続されているバス１１だけが使用されている。また、ＤＭＡコントローラ２７のＤＭＡ転送が行われている時は、ＤＭＡコントローラ２７が接続されているバス１２だけが使用されている。すなわち、異なるバスがそれぞれ時間的に独立に使用される形態となっている。そして、バス１１はＤＭＡコントローラ２２が使用し、バス１２はＤＭＡコントローラ２７が使用するものであるため、バス１１とバス１２を、時間的に独立にではなく、並列して使用するのは難しい、という課題を有している。
【００１２】
上述した、異なるバスがそれぞれ独立に使用される形態を、異なるバスを並列して使用するようにすれば、異なるバス間でのデータ転送に要する全体の時間は短縮され、データ転送をより効率的に行うことが可能となる。
【００１３】
本発明は上述した課題を解決するためになされたものである。従って、本発明の目的は、異なるバス間でのデータ転送の効率を向上させる、ＤＭＡコントローラ及びバス間データ転送方法、を提供することにある。
【課題を解決するための手段】
【００１４】
本発明のＤＭＡコントローラは、転送情報登録部と、送信ＦＩＦＯメモリと、制御部とを備えている。
【００１５】
ここで、転送情報登録部には、転送情報が登録されるようになっている。この転送情報は、第１のバスに接続された第１のデータ記憶手段のアドレスを示す転送元アドレスと、前記第１のバスとは異なる第２のバスに接続された第２のデータ記憶手段のアドレスを示す転送先アドレスとを示すものである。そして、この転送情報は、前記第１のバスに接続されているＣＰＵから登録されるものである。
【００１６】
送信ＦＩＦＯメモリは、前記転送元アドレスから読み出されたデータを一時記憶するようになっている。
【００１７】
制御部は、以下の動作を行う。すなわち、前記転送情報登録部に、前記転送元アドレスと前記転送先アドレスを示す前記転送情報が登録された際、前記転送元アドレスから読み出したデータを、前記送信ＦＩＦＯメモリに送信する。そして、前記送信ＦＩＦＯメモリに前記データの記憶が開始され始めた際、前記送信ＦＩＦＯメモリに記憶されている前記データを、前記転送先アドレスに送信する。
【００１８】
本発明のバス間データ転送方法は、転送情報が登録される転送情報登録部と、データ記憶手段から読み出されたデータを一時記憶する送信ＦＩＦＯメモリを備えるＤＭＡコントローラにおいて実行されるものである。すなわち、前記転送情報登録部に、第１のバスに接続された第１のデータ記憶手段のアドレスを示す転送元アドレスと、前記第１のバスとは異なる第２のバスに接続された第２のデータ記憶手段のアドレスを示す転送先アドレスとを示す転送情報が登録された際、以下を実行する。
【００１９】
先ず、前記転送元アドレスから読み出したデータを、前記送信ＦＩＦＯメモリに送信する。そして、前記送信ＦＩＦＯメモリに前記データの記憶が開始され始めた際、前記送信ＦＩＦＯメモリに記憶されている前記データを、前記転送先アドレスに送信する。
【発明の効果】
【００２０】
本発明によれば、異なるバス間でのデータ転送の効率を向上させることが可能となる。
【図面の簡単な説明】
【００２１】
【図１】本発明のＤＭＡコントローラの第１の実施形態を示すブロック図である。
【図２】第１の実施形態の動作を説明する第１のタイミングチャートである。
【図３】第１の実施形態の動作を説明する第２のタイミングチャートである。
【図４】本発明のＤＭＡコントローラの第２の実施形態を示すブロック図である。
【図５】転送情報登録部の一例を示す図である。
【図６】第２の実施形態の動作を説明するタイミングチャートである。
【図７】第１の実施形態の動作を説明する第３のタイミングチャートである。
【図８】本発明のＤＭＡコントローラの第３の実施形態を示すブロック図である。
【図９】第３の実施形態の転送情報登録部の一例を示す図である。
【図１０】第３の実施形態の動作を説明するタイミングチャートである。
【図１１】従来のＤＭＡコントローラの一例を示す図である。
【００２２】
次に、本発明の実施形態について図面を参照して説明する。
[第１の実施形態]
図１は、本発明のＤＭＡコントローラの第１の実施形態を示すブロック図である。なお、以下において、ＤＭＡコントローラ（Direct Memory Access Controller）を、ＤＭＡＣと略記するものとする。また、中央演算処理装置（Central Processing Unit）はＣＰＵと記載するものとする。
【００２３】
図１に示すＤＭＡＣ１００は、制御部１１０、送信ＦＩＦＯ（First-In First-Out：ファイフォ）メモリ１２０、転送情報登録部１３０を備えている。そして、ＤＭＡＣ１００は、データの経路であるところの複数のバス（bus）３０（３０−１、３０−２、・・・、３０−ｎ）と接続し、複数のバス３０間で行われるデータ転送の制御を行うようになっている。
【００２４】
各々のバス３０には、ＣＰＵ１０（１０−１、１０−２、・・・、１０−ｎ）、メモリ２０（２０−１、２０−２、・・・、２０−ｎ）が接続されるよう構成されている。そして、ＣＰＵ１０は、バス３０を介してメモリ２０にアクセスし、メモリ２０からデータを読み出し、或いは、メモリ２０にデータを書き込むよう動作するようになっている。なお、メモリ２０は、ＲＡＭ（Random Access Memory：ラム）やＲＯＭ（Read Only Memory：ロム）などの記憶装置である。また、メモリ２０は、データを記憶することが可能な、周辺装置などのデバイスであってもよい。
【００２５】
ＤＭＡＣ１００の制御部１１０は、ＣＰＵ１０からデータ転送の開始指示を受けた際、その指示の内容に従って、バス３０を用いたメモリ２０間でのデータ転送の制御を行う。
【００２６】
送信ＦＩＦＯメモリ１２０は、或るメモリ２０から読み出したデータを一旦記憶しておく記憶装置である。一旦記憶された当該データは、後の時点で他のメモリ２０に書き込まれるデータである。
【００２７】
転送情報登録部１３０は、或るメモリ２０から他のメモリ２０に転送するデータについて、データの転送元となるメモリ２０のアドレス、当該データの転送先となるメモリ２０のアドレス、及び、転送データのサイズ、などから成る転送情報を登録する記憶装置である。この転送情報は、データ転送の処理を実行しようとするＣＰＵ１０によって登録されるものである。
【００２８】
なお、本実施形態におけるデータ転送は、転送元となるメモリ２０と転送先のメモリ２０は、異なるバス３０に接続されているメモリ２０間で行われるものである。例えば、転送元のメモリ２０が、バス３０−２に接続されるメモリ２０−２である場合、転送先のメモリ２０は、バス３０−２以外のバス３０（例、バス３０−１）に接続されるメモリ２０（例、メモリ２０−１）である。
【００２９】
次に、図２を参照して、本実施形態の動作について説明する。なお、図２においては、転送元が、バス３０−２に接続されるメモリ２０−２であり、転送先が、バス３０−１に接続されるメモリ２０−１である場合を、一例として説明する。
【００３０】
図２は、第１の実施形態の動作を説明する第１のタイミングチャートである。なお、図２において、横軸は時間の経過を示すものとし、図２の左側から右側に向けて時間が経過していくものとする。ここで、時間は「Ｔ○」で示すものとする。
【００３１】
先ず、ＣＰＵ１０−２は、転送情報登録部１３０に対し、「転送元アドレス＝メモリ２０−２、転送先アドレス＝メモリ２０−１、転送サイズ＝Ａ」を登録することにより、ＤＭＡＣ１００に対してデータ転送の開始指示を行う。
【００３２】
転送情報が転送情報登録部１３０に登録されたことを認識したＤＭＡＣ１００の制御部１１０は、登録された「転送元アドレス＝メモリ２０−２、転送先アドレス＝メモリ２０−１、転送サイズ＝Ａ」の処理を実施するため、図２に示すように動作する。
【００３３】
すなわち、ＤＭＡＣ１００の制御部１１０は、転送元アドレスであるバス３０−２に接続されているメモリ２０−２に対し、転送サイズＡのデータの読み出し要求を送信する（図２の時間Ｔ１）。読み出し要求を受信したメモリ２０−２からは、送信ＦＩＦＯメモリ１２０に対し、読み出したデータの送信が開始される（時間Ｔ２）。そして、時間Ｔ２から時間Ｔ４にかけて、メモリ２０−２から読み出された転送サイズ＝Ａのデータが、送信ＦＩＦＯメモリ１２０に順次、記憶されていく。
【００３４】
制御部１１０は、送信ＦＩＦＯメモリ１２０に、メモリ２０−２からの読み出しデータが記憶され始めたことを認識すると、時間Ｔ２の時点で、メモリ２０−１へのデータ転送を開始するよう動作する。すなわち、制御部１１０は、転送先アドレスであるバス３０−１のメモリ２０−１に対し、書き込み要求と共に、メモリ２０−２から受信したデータ、すなわち、送信ＦＩＦＯメモリ１２０のデータを、書き込みデータとして送信する。書き込み要求を受信したメモリ２０−１は、メモリ２０−２から送信ＦＩＦＯメモリ１２０に記憶されたデータの受信を開始する（時間Ｔ３）。そして、時間Ｔ３から時間Ｔ５にかけて、メモリ２０−２から読み出された転送サイズ＝Ａのデータが、メモリ２０−１に順次、記憶されていく。
【００３５】
そして、時間Ｔ５になると、転送サイズＡ全てのデータの転送が完了する。
【００３６】
以上、本発明の第１の実施形態の動作について説明した。
【００３７】
以上説明したように、第１の実施形態のＤＭＡコントローラ（１００）は、転送情報登録部（１３０）と、送信ＦＩＦＯメモリ（１２０）と、制御部（１１０）とを備えている。
【００３８】
ここで、転送情報登録部には、転送情報が登録されるようになっている。この転送情報は、第１のバスに接続された第１のデータ記憶手段（メモリ２０）のアドレスを示す転送元アドレスと、前記第１のバスとは異なる第２のバスに接続された第２のデータ記憶手段（メモリ２０）のアドレスを示す転送先アドレスとを示すものである。そして、この転送情報は、前記第１のバスに接続されているＣＰＵから登録されるものである。
【００３９】
送信ＦＩＦＯメモリは、前記転送元アドレスから読み出されたデータを一時記憶するようになっている。
【００４０】
制御部は、以下の動作を行う。すなわち、前記転送情報登録部に、前記転送元アドレスと前記転送先アドレスを示す前記転送情報が登録された際、前記転送元アドレスから読み出したデータを、前記送信ＦＩＦＯメモリに送信する。そして、前記送信ＦＩＦＯメモリに前記データの記憶が開始され始めた際、前記送信ＦＩＦＯメモリに記憶されている前記データを、前記転送先アドレスに送信する。
【００４１】
このように、第１の実施形態のＤＭＡコントローラによれば、転送元アドレスから読み出したデータが、送信ＦＩＦＯメモリへ記憶され始めると、直ちに、転送先アドレスへの送信を開始するようにしている。すなわち、転送元アドレスのデータ記憶手段を接続するバスが使用されている途中であっても、転送先アドレスのデータ記憶手段を接続するバスの使用を開始するようにしている。つまり、異なるバスを並列して使用するようにしている。
【００４２】
従って、本実施形態によれば、異なるバス間でのデータ転送の効率を向上させることが可能となる。
[第２の実施形態]
次に、図１に示した第１の実施形態の変形例としての本発明による第２の実施形態について説明する。
【００４３】
第２の実施形態は、或るバス３０に接続されるメモリ２０から他のバス３０に接続されるメモリ２０へのデータ転送が、２つ連続して行われる場合を示すものである。なお、異なるバス３０へのデータ転送を２つ連続して行う際、第１の実施形態で示したＤＭＡＣ１００をそのままの形で用いると、或るバス３０上に未使用時間が生じてしまう。そこで、第２の実施形態は、バス３０上に生じる未使用時間を減少させることにより、異なるバス間でのデータ転送の効率を向上させ得るＤＭＡＣ１００を提供するものである。
【００４４】
ここで、第２の実施形態を説明する前に、連続したデータ転送を第１の実施形態で行った場合に、バス３０上に未使用時間が生じる様子について、図３を参照して説明するものとする。
【００４５】
図３は、第１の実施形態の動作を説明する第２のタイミングチャートである。図３では、第１の実施形態のＤＭＡＣ１００が、２つのデータ転送を連続して行う場合であって、且つ、２つのデータ転送の転送先が同一バス３０上にある場合について説明する。データの転送先が同一の場合の一例として、メモリ２０−２からメモリ２０−１へのデータ転送と、メモリ２０−３からメモリ２０−１へのデータ転送が、連続して実施される場合を説明する。なお、図３において、横軸は時間の経過を示すものとし、図３の左側から右側に向けて時間が経過していくものとする。ここで、時間は「Ｔ○」で示すものとする。
【００４６】
先ず、ＣＰＵ１０−２は、転送情報登録部１３０に対し、「転送元アドレス＝メモリ２０−２、転送先アドレス＝メモリ２０−１、転送サイズ＝Ａ」を登録することにより、ＤＭＡＣ１００に対してデータ転送の開始指示を行う。
【００４７】
また、ＣＰＵ１０−３は、転送情報登録部１３０に対し、「転送元アドレス＝メモリ２０−３、転送先アドレス＝メモリ２０−１、転送サイズ＝Ｂ」を登録する。
【００４８】
転送情報が転送情報登録部１３０に登録されたことを認識したＤＭＡＣ１００の制御部１１０は、最初に登録された「転送元アドレス＝メモリ２０−２、転送先アドレス＝メモリ２０−１、転送サイズ＝Ａ」の処理を実施するため、図３に示すように動作する。
【００４９】
最初に、ＤＭＡＣ１００の制御部１１０は、転送元アドレスであるバス３０−２に接続されているメモリ２０−２に対し、転送サイズＡの読み出し要求を送信する（図３の時間Ｔ１１）。読み出し要求を受信したメモリ２０−２からは、送信ＦＩＦＯメモリ１２０に対し、読み出したデータの送信が開始される（時間Ｔ１２）。そして、制御部１１０は、転送先アドレスであるバス３０−１のメモリ２０−１に対し、書き込み要求と共に、メモリ２０−２から受信したデータ、すなわち、送信ＦＩＦＯメモリ１２０のデータを、書き込みデータとして送信する（時間Ｔ１３）。
【００５０】
転送サイズＡ全てのデータの転送が完了すると（時間Ｔ１４）、制御部１１０は、転送情報登録部１３０に２番目に登録された「転送元アドレス＝メモリ２０−３、転送先アドレス＝メモリ２０−１、転送サイズ＝Ｂ」の処理を開始する。
【００５１】
すなわち、時間Ｔ１４において、制御部１１０は、転送元アドレスであるバス３０−３に接続されているメモリ２０−３に対し、転送サイズＢの読み出し要求を送信する（図３の時間Ｔ１４）。読み出し要求を受信したメモリ２０−３からは、送信ＦＩＦＯメモリ１２０に対し、読み出したデータの送信が開始される（時間Ｔ１５）。そして、制御部１１０は、転送先アドレスであるバス３０−１のメモリ２０−１に対し、書き込み要求と共に、メモリ２０−３から受信したデータ、すなわち、送信ＦＩＦＯメモリ１２０のデータを、書き込みデータとして送信する（時間Ｔ１６）。そして、転送サイズＢ全てのデータのメモリ２０−１への転送は、時間Ｔ１７において終了する。
【００５２】
時間Ｔ１７においては、当初の目標であった、メモリ２０−２からメモリ２０−１へのデータ転送、及び、メモリ２０−３からメモリ２０−１へのデータ転送が、連続して実施され、かつ、データ転送が完了したものとなっている。
【００５３】
ここで、図３を再度参照すると、２つのデータ転送の転送先であるところのメモリ２０−１を接続するバス３０−１は、時間Ｔ１４と時間Ｔ１６の間は使用されていない状態となっている。本実施形態においては、時間Ｔ１４からＴ１６の間を、図３の（１）として示すように「未使用時間」と称するものとする。
【００５４】
ここで、未使用時間は、図３の（２）として示す外部遅延時間と、（３）として示す内部処理時間を合算した時間となっている。
【００５５】
外部遅延時間とは、制御部１１０が、バス３０−３に接続されたメモリ２０−３へ読み出し要求を送信してから（時間Ｔ１４）、メモリ２０−３から読み出したデータが、送信ＦＩＦＯメモリ１２０に到着するまで（時間Ｔ１５）にかかる時間である。外部遅延時間は、ＤＭＡＣ１００の外部で生じる遅延時間であり、メモリ２０でのデータの読み出しに要する遅延時間や、バス３０の使用権の制御のためのバス調停などに要する時間である。
【００５６】
内部処理時間とは、バス３０−１に接続されたメモリ２０−１への書き込み要求を送信してから（時間Ｔ１５）、送信ＦＩＦＯメモリ１２０のデータがメモリ２０−１へ到着するまで（時間Ｔ１６）にかかる時間である。内部処理時間は、送信ＦＩＦＯメモリ１２０のデータを、メモリ２０−１へ送信する処理のために、ＤＭＡＣ１００の内部で必要となる時間である。
【００５７】
以上説明したように、異なるバス３０へのデータ転送を２つ連続して行う際、第１の実施形態で示したＤＭＡＣ１００をそのままの形で用いると、或るバス３０上に、上述した未使用時間が生じてしまう。そこで、第２の実施形態は、バス３０上に生じる未使用時間を減少させることにより、異なるバス間でのデータ転送の効率を向上させ得るＤＭＡＣ１００を提供するものである。
【００５８】
ここで、バス３０上に生じる未使用時間を減少させるために、第２の実施形態では、どのような手法で行おうとしているか、について、予め説明しておくものとする。
【００５９】
図３を再度参照すると、メモリ２０−２から受信したデータは、時間Ｔ１３から時間Ｔ１４にかけて、バス３０−１のメモリ２０−１に送信されている。また、メモリ２０−３から受信したデータは、時間Ｔ１６から時間Ｔ１７にかけて、バス３０−１のメモリ２０−１に送信されている。
【００６０】
ここで、メモリ２０−３から受信したデータを、時間Ｔ１４にまで遡ってメモリ２０−１に送信するようにすれば、時間Ｔ１４から時間Ｔ１６の間で生じていた未使用時間を減少させることが可能となる。つまり、メモリ２０−２から読み出されたデータが、メモリ２０−１に全て送信され終わった時点で、即座に、メモリ２０−３からのデータがメモリ２０−１に送信されるようにすればよい。そして、その実現のためには、時間Ｔ１４で行っていたメモリ２０−３に対する読み出し要求の送信を、未使用時間に相当する分だけ早めるようにすればよい。
【００６１】
そこで、第２の実施形態では、メモリ２０−３に対する読み出し要求を、いつの時点で送信すれば良いか（「要求送信時間」と称する）を演算して求め、その時間に到達した際に、メモリ２０−３に対する読み出し要求を送信するようにしている。
【００６２】
以下、本発明の第２の実施形態について説明する。
【００６３】
図４は、本発明のＤＭＡコントローラの第２の実施形態を示すブロック図である。図４は、図１に示したＤＭＡＣ１００に機能追加を行い、転送情報登録部１３０の構成を変更したブロック図を示すものである。従って、図４において、図１の構成要素に対応するものは同一の参照数字または符号を付し、その説明を極力省略するものとする。
【００６４】
図４に示すＤＭＡＣ１００−２は、制御部１１０−２、送信ＦＩＦＯメモリ１２０、転送情報登録部１３０−２を備えている。そして、ＤＭＡＣ１００−２は、データの経路であるところの複数のバス３０（３０−１、３０−２、・・・、３０−ｎ）と接続し、複数のバス３０間で行われるデータ転送の制御を行うようになっている。
【００６５】
各々のバス３０には、図１と同様に、ＣＰＵ１０（１０−１、１０−２、・・・、１０−ｎ）、メモリ２０（２０−１、２０−２、・・・、２０−ｎ）が接続されるよう構成されている。そして、ＣＰＵ１０は、バス３０を介してメモリ２０にアクセスし、メモリ２０からデータを読み出し、或いは、メモリ２０にデータを書き込むよう動作するようになっている。
【００６６】
ＤＭＡＣ１００−２の制御部１１０−２は、ＣＰＵ１０からデータ転送の開始指示を受けた際、その指示の内容に従って、バス３０を用いたメモリ２０間でのデータ転送の制御を行う。特に、本実施形態における制御部１１０−２は、バス３０の未使用時間を減少させるために、上述した「要求送信時間」を演算する。そして、要求送信時間に到達した際に、メモリ２０に対し、読み出し要求を送信するよう動作するようになっている。
【００６７】
送信ＦＩＦＯメモリ１２０は、図１と同様に、或るメモリ２０から読み出したデータを一旦記憶しておく記憶装置である。一旦記憶された当該データは、後の時点で他のメモリ２０に書き込まれるデータである。
【００６８】
転送情報登録部１３０−２は、或るメモリ２０から他のメモリ２０に転送するデータについて、データの転送元となるメモリ２０のアドレス、当該データの転送先となるメモリ２０のアドレス、転送データのサイズ、及び、外部遅延時間、から成る転送情報を登録する記憶装置である。この転送情報は、データ転送の処理を実行しようとするＣＰＵ１０によって登録されるものである。
【００６９】
なお、本実施形態におけるデータ転送は、第１の実施形態と同様、転送元となるメモリ２０と転送先のメモリ２０は、異なるバス３０に接続されているメモリ２０間で行われるものである。
【００７０】
ここで、図５を参照して、転送情報登録部１３０−２について説明する。
【００７１】
図５は、転送情報登録部の一例を示す図である。
【００７２】
図５に示す転送情報登録部１３０−２は、図５の５０−０行に示すように、番号（５０−１１列）、転送元アドレス（５０−１２列）、転送先アドレス（５０−１３列）、転送サイズ（５０−１４列）、外部遅延時間（５０−１５列）の欄を有している。
【００７３】
番号（５０−１１列）の欄は、転送情報登録部１３０−２の行の番号を示す欄であり、１行に一つの転送情報が登録されるようになっている。
【００７４】
転送元アドレス（５０−１２列）の欄は、データ転送を行う際の、転送される元のデータを記憶しているメモリ２０のアドレスを示すものである。５０−１行の例では、転送元アドレスの欄には「メモリ２０−２」と記載されており、これは、「メモリ２０−２」の或るアドレスが、転送されるデータの先頭アドレスであることを示している。
【００７５】
転送先アドレス（５０−１３列）の欄は、データ転送を行う際に、転送されたデータが記憶されるメモリ２０のアドレスを示すものである。５０−１行の例では、転送先アドレスの欄には「メモリ２０−１」と記載されており、これは、「メモリ２０−１」の或るアドレスが、転送されたデータが記憶される先頭アドレスであることを示している。
【００７６】
転送サイズ（５０−１４列）の欄は、転送されるデータのサイズを示すものである。５０−１行の例では、転送サイズの欄には「Ａ」と記載されており、これは、転送されるデータのサイズが「Ａ」であることを示している。サイズの単位は、例えば、バイト数であってよい。
【００７７】
外部遅延時間（５０−１５列）の欄は、データ転送を行う際に、ＤＭＡＣ１００−２の外部で生じる遅延時間である。前記したように、外部遅延時間は、メモリ２０でのデータの読み出しに要する遅延時間や、バス３０の使用権の制御のためのバス調停などに要する時間である。５０−１行の例では、外部遅延時間の欄には「○○」と記載されている。外部遅延時間の単位は、例えば、ミリ秒であってよい。
【００７８】
なお、図５に示した転送情報登録部１３０−２の５０−２行（番号が「２」の行）には、２番目に登録された転送情報の他の例を示している。
【００７９】
次に、第２の実施形態の動作について説明する。
【００８０】
図６は、第２の実施形態の動作を説明するタイミングチャートである。図６では、ＤＭＡＣ１００−２が、２つのデータ転送を連続して行う場合であって、且つ、２つのデータ転送の転送先が同一バス３０上にある場合について説明する。データの転送先が同一の場合の一例として、メモリ２０−２からメモリ２０−１へのデータ転送と、メモリ２０−３からメモリ２０−１へのデータ転送が、連続して実施される場合を説明する。これは、図５の番号「１」の行と番号「２」の行で例示した転送情報が、転送情報登録部１３０−２に登録された場合に相当するものである。なお、図６において、横軸は時間の経過を示すものとし、図６の左側から右側に向けて時間が経過していくものとする。ここで、時間は「Ｔ○」で示すものとする。
【００８１】
先ず、ＣＰＵ１０−２は、転送情報登録部１３０−２に対し、図５の番号「１」の行に示した転送情報を登録することにより、ＤＭＡＣ１００−２に対してデータ転送の開始指示を行う。
【００８２】
また、ＣＰＵ１０−３は、転送情報登録部１３０−２に対し、図５の番号「２」の行に示した転送情報を登録する。
【００８３】
転送情報が転送情報登録部１３０−２に登録されたことを認識したＤＭＡＣ１００−２の制御部１１０−２は、最初に登録された「転送元アドレス＝メモリ２０−２、転送先アドレス＝メモリ２０−１、転送サイズ＝Ａ、外部遅延時間＝○○」の処理を開始する。すなわち、図６に示すように動作する。
【００８４】
最初に、ＤＭＡＣ１００−２の制御部１１０−２は、転送元アドレスであるバス３０−２に接続されているメモリ２０−２に対し、転送サイズＡの読み出し要求を送信する（図６の時間Ｔ２１）。読み出し要求を受信したメモリ２０−２からは、送信ＦＩＦＯメモリ１２０に対し、読み出したデータの送信が開始される（時間Ｔ２２）。そして、制御部１１０−２は、転送先アドレスであるバス３０−１のメモリ２０−１に対し、書き込み要求と共に、メモリ２０−２から受信したデータ、すなわち、送信ＦＩＦＯメモリ１２０のデータを、書き込みデータとして送信する（時間Ｔ２３）。
【００８５】
ここで、制御部１１０−２は、上述した「要求送信時間」を求めるための演算を行う。「要求送信時間」の算出方法については後述する。
【００８６】
次に、制御部１１０−２は、現在の時間が、要求送信時間に到達したかの判定を行う。そして、現在の時間が、要求送信時間に到達した際、或いは、要求送信時間を過ぎている際に、メモリ２０−３に対し、読み出し要求を送信する（図６のＴ２５）。時間Ｔ２５で読み出し要求を送信することにより、転送情報登録部１３０−２に２番目に登録された「転送元アドレス＝メモリ２０−３、転送先アドレス＝メモリ２０−１、転送サイズ＝Ｂ、外部遅延時間＝○△」の処理が開始されたこととなる。
【００８７】
読み出し要求を受信したメモリ２０−３からは、送信ＦＩＦＯメモリ１２０に対し、読み出したデータの送信が開始される（時間Ｔ２７）。そして、制御部１１０−２は、転送先アドレスであるバス３０−１のメモリ２０−１に対し、書き込み要求と共に、メモリ２０−３から受信したデータ、すなわち、送信ＦＩＦＯメモリ１２０のデータを、書き込みデータとして送信する（時間Ｔ２８）。そして、転送サイズＢ全てのデータのメモリ２０−１への転送は、時間Ｔ２９において終了する。
【００８８】
時間Ｔ２９においては、当初の目標であった、メモリ２０−２からメモリ２０−１へのデータ転送、及び、メモリ２０−３からメモリ２０−１へのデータ転送が、連続して実施され、かつ、データ転送が完了したものとなっている。
【００８９】
ここで、図６の時間Ｔ２８の時点を見てみると、バス３０−１上では、図３の（１）として示した未使用時間が減少した状態となっていることが分かる。これは、メモリ２０−３への読み出し要求が、図３では時間Ｔ１４の時点（図６では時間Ｔ２８に相当）で出されていたが、図６では時間Ｔ２５の時点にまで早められた結果によるものである。
【００９０】
ここで、前述の、制御部１１０−２が行う「要求送信時間」の算出方法について説明する。
【００９１】
制御部１１０−２は、バス３０−１上で、図６の時間Ｔ２３で開始された書き込みデータの送信が終了する時間（図６のＴ２８）を予測する。ここでの予測は、転送情報登録部１３０−２に登録されている転送サイズ（例えば、転送サイズ＝Ａ）や、バス３０−１の動作スピードなどを勘案して予測する。そして、この予測時間から、外部遅延時間と内部処理時間を減算する。これが、求める要求送信時間である。なお、外部遅延時間は、図５の転送情報登録部１３０−２の外部遅延時間の欄（５０−２行、５０−１５列）に登録されている値（「○△」）を使用すればよい。また、内部処理時間は、送信ＦＩＦＯメモリ１２０のデータを、メモリ２０−１へ送信する処理のために必要となる時間として、制御部１１０−２が演算して求めるようにすればよい。
【００９２】
以上、第２の実施形態の動作について説明した。
【００９３】
以上説明したように、第２の実施形態のＤＭＡコントローラ（１００−２）は、転送情報登録部（１３０−２）と、送信ＦＩＦＯメモリ（１２０）と、制御部（１１０−２）とを備えている。
【００９４】
そして、前記転送情報登録部に、第１の転送情報と第２の転送情報が登録される。第１の転送情報は、第１のバスに接続された第１のデータ記憶手段のアドレスを示す第１の転送先アドレスと、前記第１のバスとは異なる第２のバスに接続された第２のデータ記憶手段のアドレスを示す第１の転送元アドレスと、を示すものである。第２の転送情報は、前記第１のバスに接続された前記第１のデータ記憶手段のアドレスを示す第２の転送先アドレスと、前記第１のバスとは異なる第３のバスに接続された第３のデータ記憶手段のアドレスを示す第２の転送元アドレスと、を示すものである。
【００９５】
前記第１の転送情報と前記第２の転送情報が前記転送情報登録部に登録された際、前記制御部は以下のように動作する。
【００９６】
すなわち、前記制御部は、前記第１の転送元アドレスから読み出したデータを、前記第１の転送先アドレスに送信する。そして、前記第２の転送元アドレスからのデータを読み出すのに適切な時間であるところの要求送信時間を演算する。次に、前記制御部は、現在の時間が、前記要求送信時間に到達したか或いは前記要求送信時間を越えている場合、前記第２の転送元アドレスに読み出し要求を送信して前記第２の転送元アドレスのデータを前記送信ＦＩＦＯメモリに送信させる。そして、前記送信ＦＩＦＯメモリに前記第２の転送元アドレスのデータの記憶が開始され始めた際、前記送信ＦＩＦＯメモリに記憶されている前記第２の転送元アドレスのデータを、前記第２の転送先アドレスに送信する。
【００９７】
上記の要求送信時間は、予測時間から、前記制御部の内部処理時間と前記第２の転送情報に示されている外部遅延時間とを減算した時間である。ここで、前記予測時間は、前記第１の転送元アドレスから読み出したデータが、前記第１の転送先アドレスに全て送信されるまでの時間を予測した時間である。また、前記内部処理時間は、前記送信ＦＩＦＯメモリに送信された前記第２の転送元アドレスのデータが、前記第２の転送先アドレスに送信され始めるまでに要する時間である。
【００９８】
このように、第２の実施形態のＤＭＡコントローラは、第２の転送元アドレスからのデータを読み出すのに適切な時間であるところの要求送信時間を演算する。この要求送信時間は、第１の転送元アドレスから読み出されたデータが、第１の転送先アドレスに全て送信され終わった時点で、即座に、第２の転送元アドレスからのデータが第１の転送先アドレスに送信されるようにするための時間である。
【００９９】
そして、ＤＭＡコントローラは、現在の時間が、前記要求送信時間に到達したか或いは前記要求送信時間を越えている場合、前記第２の転送元アドレスに読み出し要求を送信する。このことにより、前記第２の転送元アドレスのデータを前記送信ＦＩＦＯメモリに送信させる。そして、前記送信ＦＩＦＯメモリに前記第２の転送元アドレスのデータの記憶が開始され始めた際、前記送信ＦＩＦＯメモリに記憶されている前記第２の転送元アドレスのデータを、前記第２の転送先アドレスに送信する、ようにしている。
【０１００】
この結果、前記送信ＦＩＦＯメモリに送信された前記第２の転送元アドレスのデータは、前記第１の転送元アドレスのデータが前記第１の転送先アドレスに全て送信され終わった直後から、前記第１の転送先アドレスに送信されるようになる。
【０１０１】
従って、本実施形態によれば、同一の転送先アドレスへのデータ転送が連続して行われる場合、同一の転送先アドレスのデータ記憶手段を接続するバスの使用効率が向上する。
[第３の実施形態]
次に、図４に示した第２の実施形態の変形例としての本発明による第３の実施形態について説明する。
【０１０２】
第３の実施形態は、或るバス３０に接続されるメモリ２０から他のバス３０に接続されるメモリ２０へのデータ転送が、２つ連続して行われる場合を示すものである。これは、第２の実施形態における前提と同一であるが、第３の実施形態は、２つのデータ転送の「転送元が同一バス３０上にある場合」についての実施形態となっている。
【０１０３】
なお、２つのデータ転送の「転送元が同一バス３０上にある場合」についても、第１の実施形態で示したＤＭＡＣ１００をそのままの形で用いると、或るバス３０上に未使用時間が生じてしまう。そこで、第３の実施形態は、第２の実施形態と同様に、バス３０上に生じる未使用時間を減少させることにより、異なるバス間でのデータ転送の効率を向上させ得るＤＭＡＣ１００を提供するものである。
【０１０４】
ここで、第３の実施形態を説明する前に、「転送元が同一バス３０上にある場合」の連続するデータ転送を、第１の実施形態で行った場合に、バス３０上に未使用時間が生じる様子について、図７を参照して説明するものとする。
【０１０５】
図７は、第１の実施形態の動作を説明する第３のタイミングチャートである。図７では、第１の実施形態のＤＭＡＣ１００が、２つのデータ転送を連続して行う場合であって、且つ、２つのデータ転送の転送元が同一バス３０上にある場合について説明する。データの転送元が同一の場合の一例として、メモリ２０−１からメモリ２０−２へのデータ転送と、メモリ２０−１からメモリ２０−３へのデータ転送が、連続して実施される場合について説明する。なお、図７において、横軸は時間の経過を示すものとし、図７の左側から右側に向けて時間が経過していくものとする。ここで、時間は「Ｔ○」で示すものとする。
【０１０６】
先ず、ＣＰＵ１０−１は、転送情報登録部１３０に対し、「転送元アドレス＝メモリ２０−１、転送先アドレス＝メモリ２０−２、転送サイズ＝Ｃ」を登録することにより、ＤＭＡＣ１００に対してデータ転送の開始指示を行う。
【０１０７】
また、ＣＰＵ１０−１は、転送情報登録部１３０に対し、「転送元アドレス＝メモリ２０−１、転送先アドレス＝メモリ２０−３、転送サイズ＝Ｄ」を登録する。
【０１０８】
転送情報が転送情報登録部１３０に登録されたことを認識したＤＭＡＣ１００の制御部１１０は、最初に登録された「転送元アドレス＝メモリ２０−１、転送先アドレス＝メモリ２０−２、転送サイズ＝Ｃ」の処理を実施するため、図７に示すように動作する。
【０１０９】
最初に、ＤＭＡＣ１００の制御部１１０は、転送元アドレスであるバス３０−１に接続されているメモリ２０−１に対し、転送サイズＣの読み出し要求を送信する（図７の時間Ｔ３１）。読み出し要求を受信したメモリ２０−１からは、送信ＦＩＦＯメモリ１２０に対し、読み出したデータの送信が開始される（時間Ｔ３２）。そして、制御部１１０は、転送先アドレスであるバス３０−２のメモリ２０−２に対し、書き込み要求と共に、メモリ２０−１から受信したデータ、すなわち、送信ＦＩＦＯメモリ１２０のデータを、書き込みデータとして送信する（時間Ｔ３３）。なお、時間Ｔ３２の時点で、送信ＦＩＦＯメモリ１２０に対して送信開始されたメモリ２０−１からのデータは、時間Ｔ３４の時点で送信終了となっている。
【０１１０】
メモリ２０−２に対する転送サイズＣ全てのデータの転送が完了すると（時間Ｔ３５）、制御部１１０は、転送情報登録部１３０に２番目に登録された「転送元アドレス＝メモリ２０−１、転送先アドレス＝メモリ２０−３、転送サイズ＝Ｄ」の処理を開始する。
【０１１１】
すなわち、時間Ｔ３５において、制御部１１０は、転送元アドレスであるバス３０−１に接続されているメモリ２０−１に対し、転送サイズＤの読み出し要求を送信する（図７の時間Ｔ３５）。読み出し要求を受信したメモリ２０−１からは、送信ＦＩＦＯメモリ１２０に対し、読み出したデータの送信が開始される（時間Ｔ３６）。そして、制御部１１０は、転送先アドレスであるバス３０−３のメモリ２０−３に対し、書き込み要求と共に、メモリ２０−１から受信したデータ、すなわち、送信ＦＩＦＯメモリ１２０のデータを、書き込みデータとして送信する（時間Ｔ３７）。そして、転送サイズＤ全てのデータのメモリ２０−３への転送は、時間Ｔ３８において終了する。
【０１１２】
時間Ｔ３８においては、当初の目標であった、メモリ２０−１からメモリ２０−２へのデータ転送、及び、メモリ２０−１からメモリ２０−３へのデータ転送が、連続して実施され、かつ、データ転送が完了したものとなっている。
【０１１３】
ここで、図７を再度参照すると、２つのデータ転送の転送元であるところのメモリ２０−１を接続するバス３０−１は、時間Ｔ３４と時間Ｔ３６の間は使用されていない状態となっている。本実施形態においては、第２の実施形態と同様に、時間Ｔ３４からＴ３６の間を、図７の（１）として示すように「未使用時間」と称するものとする。
【０１１４】
ここで、未使用時間は、図７の（２）として示す外部遅延時間と、（３）として示す内部処理時間を合算した時間となっている。
【０１１５】
外部遅延時間とは、制御部１１０が、バス３０−１に接続されたメモリ２０−１へ読み出し要求を送信してから（時間Ｔ３５）、メモリ２０−１から読み出したデータが、送信ＦＩＦＯメモリ１２０に到着するまで（時間Ｔ３６）にかかる時間である。外部遅延時間は、第２の実施形態と同様、ＤＭＡＣ１００の外部で生じる遅延時間であり、メモリ２０でのデータの読み出しに要する遅延時間や、バス３０の使用権の制御のためのバス調停などに要する時間である。
【０１１６】
内部処理時間とは、メモリ２０−１から最初に読み出されたデータが、送信ＦＩＦＯメモリ１２０に対して送信され始めた時点から（時間Ｔ３２）、書き込みデータとしてメモリ２０−２へ到着するまで（時間Ｔ３３）にかかる時間である。内部処理時間は、第２の実施形態と同様、送信ＦＩＦＯメモリ１２０のデータを、メモリ２０−２へ送信する処理のために、ＤＭＡＣ１００の内部で必要となる時間である。なお、時間Ｔ３２から時間Ｔ３３の時間の長さは、時間Ｔ３４からＴ３５までの時間の長さと同一である。このため、図７においては、便宜的に、時間Ｔ３４からＴ３５までの間の時間を、（３）で示す内部処理時間として記載している。
【０１１７】
以上説明したように、異なるバス３０へのデータ転送を２つ連続して行い、且つ、２つのデータ転送の転送元が同一バス３０上にある場合に、第１の実施形態で示したＤＭＡＣ１００をそのままの形で用いると、或るバス３０上に未使用時間が生じてしまう。そこで、第３の実施形態は、バス３０上に生じる未使用時間を減少させることにより、異なるバス間でのデータ転送の効率を向上させ得るＤＭＡＣ１００を提供するものである。
【０１１８】
ここで、バス３０上に生じる未使用時間を減少させるために、第３の実施形態では、どのような手法で行おうとしているか、について、予め説明しておくものとする。
【０１１９】
図７を再度参照すると、メモリ２０−１から受信した最初のデータは、時間Ｔ３２から時間Ｔ３４にかけて、送信ＦＩＦＯメモリ１２０に送信されている。また、メモリ２０−１から２番目に受信したデータは、時間Ｔ３６の時点から、送信ＦＩＦＯメモリ１２０に送信されている。
【０１２０】
ここで、メモリ２０−１から２番目に受信したデータを、時間Ｔ３４にまで遡って送信ＦＩＦＯメモリ１２０に送信するようにすれば、時間Ｔ３４から時間Ｔ３６の間で生じていた未使用時間を減少させることが可能となる。つまり、メモリ２０−１から読み出された最初のデータが、送信ＦＩＦＯメモリ１２０に全て送信され終わった時点（時間Ｔ３４）で、即座に、メモリ２０−１からの２番目のデータが送信ＦＩＦＯメモリ１２０に送信されるようにすればよい。そして、その実現のためには、時間Ｔ３５で行っていたメモリ２０−１に対する２番目のデータの読み出し要求の送信を、未使用時間に相当する分だけ早めるようにすればよい。
【０１２１】
そこで、第３の実施形態では、メモリ２０−１に対する２番目のデータの読み出し要求を、いつの時点で送信すれば良いか（「第２の要求送信時間」と称する）を演算して求め、その時間に到達した際に、メモリ２０−１に対する読み出し要求を送信するようにしている。
【０１２２】
以下、本発明の第３の実施形態について説明する。
【０１２３】
図８は、本発明のＤＭＡコントローラの第３の実施形態を示すブロック図である。図８は、図４に示したＤＭＡＣ１００−２の機能を変更し、転送情報登録部１３０−２に登録される転送情報を変更した際のブロック図を示すものである。従って、図８において、図４の構成要素に対応するものは同一の参照数字または符号を付し、その説明を極力省略するものとする。
【０１２４】
図８に示すＤＭＡＣ１００−３は、制御部１１０−３、送信ＦＩＦＯメモリ１２０、転送情報登録部１３０−３を備えている。そして、ＤＭＡＣ１００−３は、データの経路であるところの複数のバス３０（３０−１、３０−２、・・・、３０−ｎ）と接続し、複数のバス３０間で行われるデータ転送の制御を行うようになっている。
【０１２５】
各々のバス３０には、図４と同様に、ＣＰＵ１０（１０−１、１０−２、・・・、１０−ｎ）、メモリ２０（２０−１、２０−２、・・・、２０−ｎ）が接続されるよう構成されている。そして、ＣＰＵ１０は、バス３０を介してメモリ２０にアクセスし、メモリ２０からデータを読み出し、或いは、メモリ２０にデータを書き込むよう動作するようになっている。
【０１２６】
ＤＭＡＣ１００−３の制御部１１０−３は、ＣＰＵ１０からデータ転送の開始指示を受けた際、その指示の内容に従って、バス３０を用いたメモリ２０間でのデータ転送の制御を行う。特に、本実施形態における制御部１１０−３は、バス３０の未使用時間を減少させるために、上述した「第２の要求送信時間」を演算する。そして、第２の要求送信時間に到達した際に、メモリ２０に対し、読み出し要求を送信するよう動作するようになっている。
【０１２７】
送信ＦＩＦＯメモリ１２０は、図４と同様に、或るメモリ２０から読み出したデータを一旦記憶しておく記憶装置である。一旦記憶された当該データは、後の時点で他のメモリ２０に書き込まれるデータである。
【０１２８】
転送情報登録部１３０−３は、或るメモリ２０から他のメモリ２０に転送するデータについて、データの転送元となるメモリ２０のアドレス、当該データの転送先となるメモリ２０のアドレス、転送データのサイズ、及び、外部遅延時間、から成る転送情報を登録する記憶装置である。この転送情報は、データ転送の処理を実行しようとするＣＰＵ１０によって登録されるものである。
【０１２９】
なお、本実施形態におけるデータ転送は、第２の実施形態と同様、或るバス３０に接続されるメモリ２０から他のバス３０に接続されるメモリ２０へのデータ転送が、２つ連続して行われる場合を示すものである。但し、２つのデータ転送の「転送元が同一バス３０上にある場合」である点が、第２の実施形態とは異なっている。
【０１３０】
ここで、転送情報登録部１３０−３に登録される転送情報につき、図９を参照して説明するものとする。
【０１３１】
図９は、第３の実施形態の転送情報登録部の一例を示す図である。
【０１３２】
図９に示す転送情報登録部１３０−３は、図９の９０−０行に示すように、番号（９０−１１列）、転送元アドレス（９０−１２列）、転送先アドレス（９０−１３列）、転送サイズ（９０−１４列）、外部遅延時間（９０−１５列）の欄を有している。これら、９０−０行に示す各欄は、図５に示したものと同一である。
【０１３３】
そして、図９の９０−１の番号「１」の行には、第１の転送情報の例が示されており、９０−２の番号「２」の行には、第２の転送情報の例が示されている。
【０１３４】
番号「１」の行には、転送元アドレス（メモリ２０−１）、転送先アドレス（メモリ２０−２）、転送サイズ（Ｃ）、外部遅延時間（□□）が登録されている。また、番号「２」の行には、転送元アドレス（メモリ２０−１）、転送先アドレス（メモリ２０−３）、転送サイズ（Ｄ）、外部遅延時間（□△）が登録されている。つまり、番号「１」の行の転送元アドレス（メモリ２０−１）と、番号「２」の行の転送元アドレス（メモリ２０−１）は同一となっている。
【０１３５】
次に、第３の実施形態の動作について説明する。
【０１３６】
図１０は、第３の実施形態の動作を説明するタイミングチャートである。図１０では、ＤＭＡＣ１００−３が、２つのデータ転送を連続して行う場合であって、且つ、２つのデータ転送の転送元が同一バス３０上にある場合について説明する。データの転送元が同一の場合の一例として、メモリ２０−１からメモリ２０−２へのデータ転送と、メモリ２０−１からメモリ２０−３へのデータ転送が、連続して実施される場合を説明する。これは、図９の番号「１」の行と番号「２」の行で例示した転送情報が、転送情報登録部１３０−３に登録された場合に相当するものである。なお、図１０において、横軸は時間の経過を示すものとし、図１０の左側から右側に向けて時間が経過していくものとする。ここで、時間は「Ｔ○」で示すものとする。
【０１３７】
先ず、ＣＰＵ１０−１は、転送情報登録部１３０−３に対し、図９の番号「１」の行に示した転送情報を登録することにより、ＤＭＡＣ１００−３に対してデータ転送の開始指示を行う。
【０１３８】
また、ＣＰＵ１０−１は、転送情報登録部１３０−３に対し、図９の番号「２」の行に示した転送情報を登録する。
【０１３９】
転送情報が転送情報登録部１３０−３に登録されたことを認識したＤＭＡＣ１００−３の制御部１１０−３は、最初に登録された「転送元アドレス＝メモリ２０−１、転送先アドレス＝メモリ２０−２、転送サイズ＝Ｃ、外部遅延時間＝□□」の処理を開始する。すなわち、図１０に示すように動作する。
【０１４０】
最初に、ＤＭＡＣ１００−３の制御部１１０−３は、転送元アドレスであるバス３０−１に接続されているメモリ２０−１に対し、転送サイズＣの読み出し要求を送信する（図１０の時間Ｔ４１）。読み出し要求を受信したメモリ２０−１からは、送信ＦＩＦＯメモリ１２０に対し、読み出したデータの送信が開始される（時間Ｔ４２）。そして、制御部１１０−３は、転送先アドレスであるバス３０−２のメモリ２０−２に対し、書き込み要求と共に、メモリ２０−１から受信したデータ、すなわち、送信ＦＩＦＯメモリ１２０のデータを、書き込みデータとして送信する（時間Ｔ４３）。この書き込みデータは、時間Ｔ４３から時間Ｔ４８にかけて、メモリ２０−２に送信される。
【０１４１】
ここで、制御部１１０−３は、上述した「第２の要求送信時間」を求めるための演算を行う。「第２の要求送信時間」の算出方法については後述する。
【０１４２】
次に、制御部１１０−３は、現在の時間が、第２の要求送信時間に到達したかの判定を行う。そして、現在の時間が、第２の要求送信時間に到達した際、或いは、第２の要求送信時間を過ぎている際に、メモリ２０−１に対し、読み出し要求を送信する（図１０の時間Ｔ４５）。時間Ｔ４５で読み出し要求を送信することにより、転送情報登録部１３０−３に２番目に登録された「転送元アドレス＝メモリ２０−１、転送先アドレス＝メモリ２０−３、転送サイズ＝Ｄ、外部遅延時間＝□△」の処理が開始されたこととなる。
【０１４３】
時間Ｔ４５で送信された読み出し要求を受信したメモリ２０−１からは、送信ＦＩＦＯメモリ１２０に対し、読み出したデータの送信が開始される（時間Ｔ４７）。そして、制御部１１０−３は、転送先アドレスであるバス３０−３のメモリ２０−３に対し、書き込み要求と共に、メモリ２０−１から受信したデータ、すなわち、送信ＦＩＦＯメモリ１２０のデータを、書き込みデータとして送信する（時間Ｔ４９）。そして、転送サイズＤ全てのデータのメモリ２０−３への転送は、時間Ｔ５０において終了する。
【０１４４】
時間Ｔ５０においては、当初の目標であった、メモリ２０−１からメモリ２０−２へのデータ転送、及び、メモリ２０−１からメモリ２０−３へのデータ転送が、連続して実施され、かつ、データ転送が完了したものとなっている。
【０１４５】
ここで、図１０の時間Ｔ４７の時点を見てみると、バス３０−１上では、図７の（１）として示した未使用時間が減少した状態となっていることが分かる。これは、メモリ２０−１への読み出し要求が、図７では時間Ｔ３５の時点（図１０では時間Ｔ４８に相当）で出されていたが、図１０では時間Ｔ４５の時点にまで早められた結果によるものである。
【０１４６】
ここで、前述の、制御部１１０−３が行う「第２の要求送信時間」の算出方法について説明する。
【０１４７】
制御部１１０−３は、バス３０−２上で、図１０の時間Ｔ４３で開始された書き込みデータの送信が終了する時間（図１０のＴ４８）を予測する。ここでの予測は、転送情報登録部１３０−３に登録されている最初の転送情報の転送サイズ（例えば、転送サイズ＝Ｃ）や、バス３０−２の動作スピードなどを勘案して予測する。そして、この予測時間から、外部遅延時間と内部処理時間を減算する。これが、求める第２の要求送信時間である。なお、外部遅延時間は、図９の転送情報登録部１３０−３の外部遅延時間の欄（９０−２行、９０−１５列）に登録されている値（「□△」）を使用すればよい。また、内部処理時間は、送信ＦＩＦＯメモリ１２０のデータを、メモリ２０−２へ送信する処理のために必要となる時間として、制御部１１０−３が演算して求めるようにすればよい。
【０１４８】
以上、第３の実施形態の動作について説明した。
【０１４９】
以上説明したように、第３の実施形態のＤＭＡコントローラ（１００−３）は、転送情報登録部（１３０−３）と、送信ＦＩＦＯメモリ（１２０）と、制御部（１１０−３）とを備えている。
【０１５０】
そして、前記転送情報登録部に、第１の転送情報と第２の転送情報が登録される。第１の転送情報は、第１のバスに接続された第１のデータ記憶手段のアドレスを示す第１の転送元アドレスと、前記第１のバスとは異なる第２のバスに接続された第２のデータ記憶手段のアドレスを示す第１の転送先アドレスと、を示すものである。第２の転送情報は、前記第１のバスに接続された前記第１のデータ記憶手段のアドレスを示す第２の転送元アドレスと、前記第１のバスとは異なる第３のバスに接続された第３のデータ記憶手段のアドレスを示す第２の転送先アドレスと、を示すものである。
【０１５１】
前記第１の転送情報と前記第２の転送情報が前記転送情報登録部に登録された際、前記制御部は以下のように動作する。
【０１５２】
すなわち、前記制御部は、前記第１の転送元アドレスから読み出したデータを、前記第１の転送先アドレスに送信する。そして、前記第２の転送元アドレスからのデータを読み出すのに適切な時間であるところの第２の要求送信時間を演算する。次に、前記制御部は、現在の時間が、前記第２の要求送信時間に到達したか或いは前記第２の要求送信時間を越えている場合、前記第２の転送元アドレスに読み出し要求を送信して前記第２の転送元アドレスのデータを前記送信ＦＩＦＯメモリに送信させる。そして、前記送信ＦＩＦＯメモリに前記第２の転送元アドレスのデータの記憶が開始され始めた際、前記送信ＦＩＦＯメモリに記憶されている前記第２の転送元アドレスのデータを、前記第２の転送先アドレスに送信する。
【０１５３】
上記の第２の要求送信時間は、予測時間から、前記制御部の内部処理時間と前記第２の転送情報に示されている外部遅延時間とを減算した時間である。ここで、前記予測時間は、前記第１の転送元アドレスから読み出したデータが、前記第１の転送先アドレスに全て送信されるまでの時間を予測した時間である。また、前記内部処理時間は、前記送信ＦＩＦＯメモリに送信された前記第１の転送元アドレスのデータが、前記第１の転送先アドレスに送信され始めるまでに要する時間である。
【０１５４】
このように、第３の実施形態のＤＭＡコントローラは、第２の転送元アドレスからのデータを読み出すのに適切な時間であるところの第２の要求送信時間を演算する。この第２の要求送信時間は、第１の転送元アドレスから読み出されたデータが、送信ＦＩＦＯメモリに全て送信され終わった時点で、即座に、第２の転送元アドレスからのデータが前記送信ＦＩＦＯメモリに送信されるようにするための時間である。
【０１５５】
そして、ＤＭＡコントローラは、現在の時間が、前記第２の要求送信時間に到達したか或いは前記第２の要求送信時間を越えている場合、前記第２の転送元アドレスに読み出し要求を送信する。このことにより、前記第２の転送元アドレスのデータを前記送信ＦＩＦＯメモリに送信させる。そして、前記送信ＦＩＦＯメモリに前記第２の転送元アドレスのデータの記憶が開始された際、前記送信ＦＩＦＯメモリに記憶されている前記第２の転送元アドレスのデータを、前記第２の転送先アドレスに送信する、ようにしている。
【０１５６】
この結果、前記第１の転送元アドレスのデータが前記送信ＦＩＦＯメモリに送信され終わった時点で、即座に、前記第２の転送元アドレスのデータが前記送信ＦＩＦＯメモリに送信され始めるようになる。
【０１５７】
従って、本実施形態によれば、同一の転送元アドレスからのデータ転送が連続して行われる場合、同一の転送元アドレスのデータ記憶手段を接続するバスの使用効率が向上する。
【符号の説明】
【０１５８】
１０    ＣＰＵ
２０    メモリ
３０    バス
１００    ＤＭＡＣ
１１０    制御部
１２０    送信ＦＩＦＯメモリ
１３０    転送情報登録部
１１    バス
１２    バス
１３    バス中継器
２１    ＣＰＵ
２２    ＤＭＡコントローラ
２３    デバイス
２４    メモリ
２６    ＣＰＵ
２７    ＤＭＡコントローラ
２８    デバイス
２９    メモリ
【図１】
2016130927.tif 000003
【図２】
2016130927.tif 000004
【図３】
2016130927.tif 000005
【図４】
2016130927.tif 000006
【図５】
2016130927.tif 000007
【図６】
2016130927.tif 000008
【図７】
2016130927.tif 000009
【図８】
2016130927.tif 000010
【図９】
2016130927.tif 000011
【図１０】
2016130927.tif 000012
【図１１】
2016130927.tif 000013