(57)【要約】【課題】２つ以上のバスを有する構成において、データの転送効率の改善を図る。【解決手段】ソースアドレスからディスティネーションアドレスにデータを転送するＤＭＡコントローラ５０は、バスに対応して設けられ、それぞれが対応するバスに接続されたマスターポートＰ１〜Ｐ４と、バスに接続されたモジュールのアドレスを、当該接続されたバスに対応付けて記憶するアドレステーブル５１４と、当該ソースアドレスのモジュールが属する転送元バスと、当該ディスティネーションアドレスのモジュールが属する転送先バスとを、アドレステーブル５１４を参照して特定する特定部５１２と、ソースアドレスからディスティネーションアドレスにデータを転送する経路を、転送元バス、転送元バスに接続されたマスターポート、転送先バスに接続されたマスターポート、および、転送先バスに設定する転送制御部５０２と、を具備する。【選択図】図２
2015222487.tif 000002
【特許請求の範囲】
【請求項１】
ソースアドレスからディスティネーションアドレスにデータを転送するＤＭＡコントローラであって、
少なくとも３つ以上のバスに対応して設けられ、それぞれが対応するバスに接続されるマスターポートと、
前記バスに接続されたモジュールのアドレスを、当該接続されたバスに対応付けて記憶するアドレステーブルと、
当該ソースアドレスのモジュールが属する転送元バスと、当該ディスティネーションアドレスのモジュールが属する転送先バスとを、前記アドレステーブルを参照して特定する特定部と、
前記ソースアドレスから前記ディスティネーションアドレスにデータを転送する経路を、前記転送元バス、前記転送元バスに接続されたマスターポート、前記転送先バスに接続されたマスターポート、および、前記転送先バスに設定する転送制御部と、
を具備することを特徴とするＤＭＡコントローラ。
【請求項２】
前記３つ以上のバスに対応して設けられたマスターポートのうち、少なくとも２つ以上は、互いに異なる転送帯域で、それぞれに対応するバスにデータ転送する
ことを特徴とする請求項１に記載のＤＭＡコントローラ。
【請求項３】
前記３つ以上のバスが、バスブリッジを介して直列に接続される
ことを特徴とする請求項１または２に記載のＤＭＡコントローラ。
【請求項４】
前記マスターポートは、
リードマスターポートおよびライトマスターポートの組である、
ことを特徴とする請求項１または２に記載のＤＭＡコントローラ。
【請求項５】
前記転送元バスおよび転送先バスが同一である場合、
当該転送元バスのリードマスターポートを介してリード転送されたデータが、当該転送先バスのライトマスターポートを介してライト転送される、
ことを特徴とする請求項４に記載のＤＭＡコントローラ。
【請求項６】
前記３つ以上のバスが、それぞれバスブリッジを介して直列に接続され、
前記転送先バスが、前記転送元バスに前記バスブリッジを介して接続されたバスである場合、当該転送元バスまたは当該転送先バスのいずれかに対応するマスターポートと、当該バスブリッジとを介してデータが転送される、
ことを特徴とする請求項４に記載のＤＭＡコントローラ。
【請求項７】
前記転送制御部によってデータ転送の機能が割り当てられる転送チャネルを複数有し、
前記転送制御部は、
前記複数の転送チャネルのうち、一の転送チャネルに、一のソースアドレスから一のディスティネーションアドレスへのデータ転送を割り当てた場合に、
当該一のソースアドレスのモジュールが属する転送元バスに接続されたリードマスターポートと、当該一のディスティネーションアドレスのモジュールが属する転送先バスに接続されたライトマスターポートとを、他の転送チャネルによるデータ転送の経路に設定していなければ、
当該一の転送チャネルに、割り当てたデータ転送を許可する、
ことを特徴とする請求項４、５または６に記載のＤＭＡコントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＤＭＡ（Direct Memory Access）方式によりデータを転送するＤＭＡコントローラに関する。
【背景技術】
【０００２】
例えばバスマスタとしてのＣＰＵ（Central Processing Unit）と、様々な機能を提供する複数のバススレーブとでシステムを構築する場合、これらが単一のバスで接続されることはない。この主な理由は、データの転送性能がバススレーブ毎に異なるためである。このため、転送性能の高いバススレーブや、ＣＰＵ、ＤＭＡコントローラを高速バスに接続するとともに、転送性能の低いバススレーブを低速バスに接続して、高速バスおよび低速バス同士をバスブリッジで接続する構成が一般的である。
【０００３】
この構成において、データがＤＭＡ転送される場合、当該転送が低速バスで完結するにもかかわらず、ＤＭＡ転送が高速バスを介して制御されるので、ＤＭＡコントローラによって高速バスが占有される。このため、ＣＰＵによるデータ転送が実行できず、高速バスの利用効率が低下する。
そこで、ＤＭＡ転送が低速バスで完結する場合には、高速バスを切り離すとともに、ＤＭＡコントローラにおける処理をバスブリッジに移行させる技術が知られている（特許文献１参照）。この技術では、低速バスで完結するデータ転送をバスブリッジに実行させる。これにより、ＤＭＡコントローラは、別の転送処理を実行するので、高速バスの利用効率の低下が防止される。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特許第３３２８２４６号
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上記技術において、バスブリッジを介して高速バスおよび低速バスの双方を使用したデータ転送は、低速バスの転送性能に律速されてしまう。すなわち、高速バスでは、より高速なデータ転送が可能であるにもかかわらず、低速バスの転送性能以上でデータを転送することができないのである。このため、高速バスの占有時間が長くなり、システム全体でみたときの効率が低下する、という問題があった。
【０００６】
一方、近年では、１つの半導体チップに必要とされる一連の機能（モジュールとしてのバススレーブ）を複数集積して、特定の用途に特化したＳｏＣ（System on Chip）が知られている。ＳｏＣで必要とされるバススレーブの転送性能は、非常に多岐にわたり、複数種類のバスを用いたデータ転送の効率化が要求されている。このため、バスとして、多数の３つ以上のバスを用意しなければならないが、上記技術では、そもそも２種類のバスしか想定されていない。
【０００７】
本発明は、このような事情に鑑みてなされたものであり、その目的の一つは、転送性能の異なる３つ以上のバスを有する構成において、データの転送効率の改善を図ったＤＭＡコントローラを提供することにある。
【課題を解決するための手段】
【０００８】
上記目的を達成するために、本発明の一態様に係るＤＭＡコントローラは、ソースアドレスからディスティネーションアドレスにデータを転送するＤＭＡコントローラであって、少なくとも３つ以上のバスに対応して設けられ、それぞれが対応するバスに接続されるマスターポートと、前記バスに接続されたモジュールのアドレスを、当該接続されたバスに対応付けて記憶するアドレステーブルと、当該ソースアドレスのモジュールが属する転送元バスと、当該ディスティネーションアドレスのモジュールが属する転送先バスとを、前記アドレステーブルを参照して特定する特定部と、前記ソースアドレスから前記ディスティネーションアドレスにデータを転送する経路を、前記転送元バス、前記転送元バスに接続されたマスターポート、前記転送先バスに接続されたマスターポート、および、前記転送先バスに設定する転送制御部と、を具備することを特徴とする。
【０００９】
上記一態様に係るＤＭＡコントローラによれば、ソースアドレスからディスティネーションアドレスへのデータが、転送元バスから転送先バスにダイレクトに転送される。このため、上記一態様によれば、３つ以上のバスを有する構成において、転送元バスおよび転送先バスの間にあるバスや、バス間のバスブリッジを経由させずに、最短経路でデータが転送されるので、テータの転送速度を改善することができる。
【００１０】
上記一態様において、前記３つ以上のバスに対応して設けられたマスターポートのうち、少なくとも２つ以上は、互いに異なる転送帯域で、それぞれに対応するバスにデータ転送する構成が好ましい。ここで、転送帯域とは、単位時間において実際に転送可能なデータ量をいい、主にバス幅、動作周波数、レイテンシ（遅延）によって定まる。
また、上記一態様において、前記３つ以上のバスが、バスブリッジを介して直列に接続される構成としても良い。
ここでいう直列に接続される、とは、例えば第１バスから第４バスまでの４つを有するのであれば、第１バスと第２バスとの間にバスブリッジが、第２バスと第３バスとの間にバスブリッジが、第３バスと第４バスとの間にバスブリッジが、それぞれ設けられて、バス間同士のデータ転送が可能な構成をいう。
【００１１】
上記一態様において、前記マスターポートは、リードマスターポートおよびライトマスターポートの組である構成が好ましい。この構成によれば、同じバスにおいてリードマスターポートを介したリード転送と、ライトマスターポートを介したライト転送とが実行可能であるので、ＤＭＡコントローラを含むシステム全体の効率を向上させることができる。
【００１２】
上記一態様において、前記転送元バスおよび転送先バスが同一である場合、当該転送元バスのリードマスターポートを介してリード転送されたデータが、当該転送先バスのライトマスターポートを介してライト転送される構成としても良い。
また、前記３つ以上のバスが、それぞれバスブリッジを介して直列に接続され、前記転送先バスが、前記転送元バスに前記バスブリッジを介して接続されたバスである場合、当該転送元バスまたは当該転送先バスのいずれかに対応するマスターポートと、当該バスブリッジとを介してデータが転送される構成としても良い。
【００１３】
上記一態様において、前記転送制御部によってデータ転送の機能が割り当てられる転送チャネルを複数有し、前記転送制御部は、前記複数の転送チャネルのうち、一の転送チャネルに、一のソースアドレスから一のディスティネーションアドレスへのデータ転送を割り当てた場合に、当該一のソースアドレスのモジュールが属する転送元バスに接続されたリードマスターポートと、当該一のディスティネーションアドレスのモジュールが属する転送先バスに接続されたライトマスターポートとを、他の転送チャネルによるデータ転送の経路に設定していなければ、当該一の転送チャネルに、割り当てたデータ転送を許可する構成としても良い。
この構成によれば、データ転送が割り当てられた一の転送チャネルは、リードマスターポートとライトマスターポートとが他の転送チャネルに使用されていない限り、データ転送を実行する。
【図面の簡単な説明】
【００１４】
【図１】実施形態に係るＤＭＡコントローラを含むシステムの構成を示す図である。
【図２】ＤＭＡコントローラの構成を示すブロック図である。
【図３】ＤＭＡコントローラにおけるアドレステーブルの一例を示す図である。
【図４】ＤＭＡコントローラの動作を示すフローチャートである。
【図５】システムにおけるデータ転送経路の一例を示す図である。
【図６】ＤＭＡコントローラにおいて設定された転送経路の一例を示す図である。
【図７】システムにおけるデータ転送経路の一例を示す図である。
【図８】ＤＭＡコントローラにおいて設定された転送経路の一例を示す図である。
【図９】ＤＭＡコントローラにおいて設定された転送経路の一例を示す図である。
【図１０】ＤＭＡコントローラにおいて設定された転送経路の一例を示す図である。
【図１１】ＤＭＡコントローラにおいて設定された転送経路の一例を示す図である。
【図１２】比較例のＤＭＡコントローラにおけるデータ転送経路の例を示す図である。
【発明を実施するための形態】
【００１５】
以下、本発明の実施形態について図面を参照して説明する。
【００１６】
図１は、実施形態に係るＤＭＡコントローラ５０を含むシステム１の全体の構成を示すブロック図である。
この図に示されるように、システム１は、バス（Ａ）１１０、バス（Ｂ）１２０、バス（Ｃ）１３０およびバス（Ｄ）１４０と、これらのバスの各々に接続されたＤＭＡコントローラ５０と、バス同士を接続するバスブリッジ１２、２３、３４とを含み、各バスには、１または複数のモジュールが次のように接続されている。
【００１７】
すなわち、バス（Ａ）１１０には、ＣＰＵ１１２、動画デコーダ１１４、描画エンジン１１６およびＳＲＡＭ（Static Random Access Memory）１１８が接続され、バス（Ｂ）１２０には、ＤＲＡＭ（Dynamic Random Access Memory）１２２、および、電源が遮断されても、記憶したデータを保持する不揮発性のメモリ１２４が接続される。また、バス（Ｃ）１３０には、サウンド回路（音源）１３２が接続され、バス（Ｄ）１４０には、ＳＰＩ（Serial Peripheral Interface）１４２、Ｉ２Ｃ（Inter-Integrated Circuit）１４４、ＧＰＩＯ（General Purpose Input/Output）１４６、および、ＲＯＭ（Read Only Memory）１４８が接続される。
【００１８】
ＤＭＡコントローラ５０の詳細については後述するが、バスの各々に対応したマスターポートＰ１〜Ｐ４を有し、マスターポートＰ１〜Ｐ４の各々は、「Ｒ」と表記されたリードマスターポートと、「Ｗ」と表記されたライトマスターポートとの組をそれぞれ有する。マスターポートＰ１〜Ｐ４のうち、マスターポートＰ１は、バス（Ａ）１１０に対応し、同様に、マスターポートＰ２、Ｐ３、Ｐ４は、バス（Ｂ）１２０、バス（Ｃ）１３０、バス（Ｄ）１４０に対応する。
【００１９】
一方、バス（Ａ）１１０、バス（Ｂ）１２０、バス（Ｃ）１３０、バス（Ｄ）１４０の各々は、指定されたアドレス（ソースアドレス）のモジュールから読み出されたデータを転送するリードバスと、指定されたアドレス（ディスティネーションアドレス）に書き込むデータを転送するライトバスと、の独立した２つの単方向バスをそれぞれ有する。
なお、各バスにおける動作周波数（転送速度）は、互いに異なっている。図の例では、バスの転送速度は、速い順に、
バス（Ｂ）１２０＞バス（Ａ）１１０＞バス（Ｃ）１３０＞バス（Ｄ）１４０
となっている。
【００２０】
バス（Ａ）１１０、バス（Ｂ）１２０、バス（Ｃ）１３０、バス（Ｄ）１４０の各々には、ＤＭＡコントローラ５０にアクセスするためのポイントＡｐがそれぞれ２つずつ設けられる。２つのポイントＡｐの一方は、対応するマスターポートのリードマスターポートに接続され、他方は、ライトマスターポートに接続される。
【００２１】
バスブリッジ１２は、バス（Ａ）１１０およびバス（Ｂ）１２０の間において、バスアクセスを双方向に変換する。同様に、バスブリッジ２３はバス（Ｂ）１２０およびバス（Ｃ）１３０の間において、また、バスブリッジ３４はバス（Ｃ）１３０およびバス（Ｄ）１４０の間において、それぞれバスアクセスを双方向に変換する。このようにして、バス（Ａ）１１０、バス（Ｂ）１２０、バス（Ｃ）１３０およびバス（Ｄ）１４０は、バスブリッジを介して直列に接続される。
【００２２】
図２は、ＤＭＡコントローラ５０の構成を示すブロック図である。
図に示されるように、ＤＭＡコントローラ５０は、上述したマスターポートＰ１〜Ｐ４のほか、転送制御部５０２、選択部５０４、特定部５１２、アドレステーブル５１４、および、ＤＭＡチャネル（転送チャネル）Ｃｈ０〜Ｃｈ１５を含む。
【００２３】
転送制御部５０２は、ＣＰＵ１１２からＤＭＡ転送命令を受け取ったとき、後述する処理を実行して、ＤＭＡコントローラ５０の各部を制御したり、各部を設定したりする。
ＤＭＡチャネルＣｈ０〜Ｃｈ１５の各々は、それぞれ転送制御部５０２による制御にしたがって、ソースアドレスから読み出したデータを、図示省略したＦＩＦＯ（Fast In Fast Out）メモリにバッファリングした上で、ディスティネーションアドレスに転送する。このとき、リードマスターポートからＤＭＡチャネルの入力端までの経路、および、ＤＭＡチャネルの出力端からライトマスターポートまでの経路は、それぞれ転送制御部５０２の制御にしたがって選択部５０４で設定される。
【００２４】
選択部５０４は、ＤＭＡチャネルＣｈ０〜Ｃｈ１５の各々における入出力端と、マスターポートＰ１〜Ｐ４におけるリードマスターポートとライトマスターポートとを接続して、ＤＭＡコントローラ５０での経路を設定する。なお、転送制御部５０２が経路を設定するために必要な情報を記憶する構成がアドレステーブル５１４であり、当該アドレステーブル５１４から必要な情報を特定し、転送制御部５０２に通知する構成が特定部５１２である。
【００２５】
図３は、アドレステーブル５１４の内容の一例を示す図である。この図に示されるように、アドレステーブル５１４では、バス（Ａ）１１０、バス（Ｂ）１２０、バス（Ｃ）１３０、バス（Ｄ）１４０毎に、接続されたモジュールのアドレス範囲が対応付けられて記憶されている。このため、特定部５１２が、アドレステーブル５１４を参照することで、指定されたアドレスのモジュールがどのバスに接続されているのかを特定できるようになっている。
なお、ＣＰＵ１１２については、ＤＭＡ転送を命令するモジュールであり、ＣＰＵ１１２自身はＤＭＡ転送の対象にならないので、アドレステーブル５１４の記載対象外となっている。
【００２６】
次に、ＤＭＡコントローラ５０の動作について、図面を参照して説明する。
【００２７】
図４は、ＤＭＡコントローラ５０における転送制御部５０２の制御内容を示すフローチャートである。
まず、転送制御部５０２は、ＤＭＡ転送命令を受け取ったとき、ＤＭＡチャネルＣｈ０〜Ｃｈ１５のうち、未割当のチャネル（空きチャネル）、すなわち、ＤＭＡ転送に関与していないＤＭＡチャネルがあるか否かを判別する（ステップＳａ１１）。転送制御部５０２は、空きチャネルがないと判別すれば（ステップＳａ１１の判別結果が「Ｎｏ」であれば）、処理手順をステップＳａ１１に戻す。このため、空きチャネルが発生するまで、転送制御部５０２は、当該ＤＭＡ転送命令をステップＳａ１１で待機（キュー）させることになる。
なお、ＤＭＡ転送を完了したＤＭＡチャネルは、後述するように割当が解除されるので、ＤＭＡ転送命令を受け取ったときに空きチャネルがなく、判別結果が当初「Ｎｏ」であっても、ステップＳａ１１で待機していれば、やがて「Ｙｅｓ」に転じることになる。
【００２８】
転送制御部５０２は、空きチャネルがあると判別すれば（ステップＳａ１１の判別結果が「Ｙｅｓ」であれば）、当該空きチャネルの１つを、当該ＤＭＡ転送命令を実行させるチャネルとして割り当てる（ステップＳａ１２）。
【００２９】
次に、転送制御部５０２は、特定部５１２に対し、当該ＤＭＡ転送命令に係るソースアドレスとディスティネーションアドレスとを通知して、転送元バスと転送先バスとの特定を指示する（ステップＳａ１３）。この指示によって特定部５１２は、アドレステーブル５１４を参照して、ソースアドレスに対応するバスを転送元バスと特定し、ディスティネーションアドレスに対応するバスを転送先バスと特定して、転送制御部５０２に返送する。
【００３０】
転送制御部５０２は、割り当てたＤＭＡチャネルが特定部５１２によって特定された転送元バスおよび転送先バスを用いてＤＭＡ転送が可能であるか否かを判別する（ステップＳａ１４）。
詳細には、転送制御部５０２は、転送元バスのリードマスターポートと転送先バスのライトマスターポートとの少なくとも一方が割り当てたＤＭＡチャネル以外の他のＤＭＡチャネルによってＤＭＡ転送に使用されていれば、割り当てたＤＭＡチャネルによるＤＭＡ転送を不可と判別し（ステップＳａ１４の判別結果を「Ｎｏ」とし）、処理手順をステップＳａ１４に戻す。なお、ＤＭＡ転送が不可と判別されても、他のＤＭＡチャネルによるＤＭＡ転送の完了によって、リードマスターポート、ライトマスターポートが使用されなくなる。このため、ステップＳａ１４の判別結果が当初「Ｎｏ」であっても、当該ステップＳａ１４で待機していれば、やがて「Ｙｅｓ」に転じることになる。
【００３１】
転送制御部５０２は、割り当てたＤＭＡチャネルによるＤＭＡ転送が可能であると判別すれば（ステップＳａ１４の判別結果が「Ｙｅｓ」であれば）、選択部５０４に対して次のような経路を設定させる（ステップＳａ１５）。
すなわち、転送制御部５０２は、割り当てたＤＭＡチャネルの入力端と転送元バスのリードマスターポートとを接続する経路と、当該ＤＭＡチャネルの出力端と転送先バスのライトマスターポートとを接続する経路と、を選択部５０４に設定するように制御する。選択部５０４は、この制御にしたがった経路を設定する。
【００３２】
転送制御部５０２は、選択部５０４に対して経路を設定させると、割り当てたＤＭＡチャネルに対してＤＭＡ転送を指示する（ステップＳａ１６）。これにより、当該ＤＭＡチャネルがＤＭＡ転送命令に係るデータのＤＭＡ転送を開始する。
【００３３】
転送制御部５０２は、割り当てたＤＭＡチャネルによるＤＭＡ転送が終了したか否かを判別する（ステップＳａ１７）。
転送制御部５０２は、割り当てたＤＭＡチャネルによるＤＭＡ転送が進行中であると判別すれば（ステップＳａ１７の判別結果が「Ｎｏ」であれば）、処理手順をステップＳａ１７に戻す。すなわち、当該ＤＭＡ転送が終了するまで、転送制御部５０２は、ステップＳａ１７で待機する。
一方、割り当てたＤＭＡチャネルによるＤＭＡ転送が終了したと判別すれば（ステップＳａ１７の判別結果が「Ｙｅｓ」であれば）、転送制御部５０２は、当該ＤＭＡチャネルの割り当てを解除する（ステップＳａ１８）。これにより、次のＤＭＡ転送命令を受け取ったときに、当該ＤＭＡチャネルを割り当てて、次のＤＭＡ転送を実行させることができる。
【００３４】
ステップＳａ１８の後、転送制御部５０２において、ＤＭＡ転送命令を受け取ったときの処理が終了する。転送制御部５０２は、ＤＭＡ転送命令を受け取る毎に、図４に示した処理を実行する。
【００３５】
次に、ＤＭＡ転送の具体例について説明する。図５は、ＤＭＡ転送によるデータの経路の一例を示す図であり、次のような条件を想定して設定される。詳細には、この例では、当該ＤＭＡ転送命令において、ＤＭＡチャネルＣｈ０が未割当であるために（ステップＳａ１１）、当該ＤＭＡチャネルＣｈ０にＤＭＡ転送が割り当てられた場合（ステップＳａ１２）を想定している。
また、当該ＤＭＡ転送命令において、ソースアドレスで示されるモジュール（転送元）がＲＯＭ１４８であり、ディスティネーションアドレスで示されるモジュール（転送先）がＳＲＡＭ１１８である場合を想定している。この場合、特定部５１２は、アドレステーブル５１４を参照して、ソースアドレスに対応する転送元バスがバス（Ｄ）１４０であることを特定し、ディスティネーションアドレスに対応する転送先バスがバス（Ａ）１１０であることを特定する（ステップＳａ１３）。
【００３６】
ここで、マスターポートＰ４のリードマスターポートと、マスターポートＰ１のライトマスターポートと、の双方が他のＤＭＡチャネルで使用されていなければ（ステップＳａ１４の判別結果が「Ｙｅｓ」であれば）、図６に示されるように、ＤＭＡチャネルＣｈ０の入力端がマスターポートＰ４のリードマスターポートに接続され、ＤＭＡチャネルＣｈ０の出力端がマスターポートＰ１のライトマスターポートに接続されて、ＤＭＡコントローラ５０内における転送経路が設定される（ステップＳａ１５）。
【００３７】
このように転送経路が設定された状態においてＤＭＡチャネルＣｈ０に転送指示がなされると、当該ＤＭＡチャネルＣｈ０は、図５および図６に示されるように、ＲＯＭ１４８から読み出したデータを、ＲＯＭ１４８→バス（Ｄ）１４０→マスターポートＰ４のリードマスターポート→ＤＭＡチャネルＣｈ０（ＦＩＦＯメモリ）という経路でリード転送して、一旦、ＦＩＦＯメモリに蓄積する。このため、ＤＭＡ転送のうち、ＲＯＭ１４８からの読み出しについていえば、ＲＯＭ１４８の読出速度またはバス（Ｄ）１４０の転送速度で決定され、他のバスの転送速度の影響を受けない。
一方、蓄積後、ＤＭＡチャネルＣｈ０は、ＦＩＦＯメモリから読み出したデータを、ＤＭＡチャネルＣｈ０（ＦＩＦＯメモリ）→マスターポートＰ１のライトマスターポート→バス（Ａ）１１０→ＳＲＡＭ１１８という経路で、データを転送する。このため、当該ＤＭＡ転送のうち、ＳＲＡＭ１１８への書き込みについていえば、ＳＲＡＭ１１８の書込速度またはバス（Ａ）１１０の転送速度で決定され、他のバスの転送速度の影響を受けない。
【００３８】
そして、このような経路によるＤＭＡ転送が完了すると（ステップＳａ１７の判別結果が「Ｙｅｓ」になると）、ＤＭＡチャネルＣｈ０の割当が解除される（ステップＳａ１８）。これにより、他のＤＭＡ転送命令が発行されたとき、ＤＭＡチャネルＣｈ０が割当可能となる。
【００３９】
次に、本実施形態に係るＤＭＡコントローラ５０の優位性について、従来のＤＭＡコントローラと比較して説明する。
【００４０】
図１２は、比較例に係るＤＭＡコントローラを含むシステムの構成を示す図である。図に示されるように、比較例に係るＤＭＡコントローラ５２は、１つのバス、この図の例では、バス（Ｃ）１３０のみに接続された構成となっている。このような構成において、ＤＭＡコントーラ５２を基準とした場合、転送元のバススレーブの位置が遠ければ、それだけリードレイテンシ（遅延）が増加するので、読み出しに係るバスの占有時間が長くなる。同様に、転送先（書込先）のモジュールの位置が遠ければ、それだけライトレイテンシが増加するので、書き込みに係るバスの占有時間が長くなる。バスの占有時間が長くなると、他のバスマスタ（ＣＰＵ１１２）のアクセスレイテンシも増加するので、システム全体の効率が低下してしまう。
【００４１】
また、リードの転送性能は、転送元のバススレーブの読出性能と、当該バススレーブが接続されたバスと、ＤＭＡコントーラ５２が接続されたバスと、途中を経由するバスとのうち、転送性能が最も低いバスに律速されてしまう。同様に、ライトの転送性能は、転送先のバススレーブの書込性能と、当該バススレーブが接続されたバスと、ＤＭＡコントーラ５２が接続されたバスと、途中を経由するバスとのうち、転送性能が最も低いバスに律速されてしまう。
【００４２】
例えば、この比較例では、ＤＭＡコントローラ５２が、ＲＯＭ１４８からＳＲＡＭ１１８にＤＭＡ転送する場合、ＲＯＭ１４８（リードポート）→バス（Ｄ）１４０→バスブリッジ３４→バス（Ｃ）１３０（→ＤＭＡコントローラ５２）という経路でデータを読み出す。この経路でのリードの転送性能は、ＲＯＭ１４８の読出性能が十分に速い場合、バス（Ｃ）１３０の転送性能が高くても、低い方のバス（Ｄ）１４０の転送性能に律速されてしまう。
同様に、ＤＭＡコントローラ５２は、（ＤＭＡコントローラ５２→）バス（Ｃ）１３０→バスブリッジ２３→バス（Ｂ）１２０→バスブリッジ１２→バス（Ａ）１１０→ＳＲＡＭ１１８（ライトポート）という経路で、データを書き込む。この経路でのライトの転送性能は、ＳＲＡＭ１１８の書込性能が十分に速い場合、バス（Ａ）１１０、バス（Ｂ）１２０の転送性能が高くても、低い方のバス（Ｃ）１３０の転送性能に律速されてしまう。
【００４３】
これに対して、本実施形態に係るＤＭＡコントローラ５０は、データの読出経路としては転送元バスのみが用いられ、データの書込経路としては転送先バスのみが用いられるので、リードの転送性能においても、ライトの転送性能においても、他のバスの転送性能に律速されることはない。
これについて、図５で示した経路のＤＭＡ転送で説明すると、データの読出経路としては転送元のバス（Ｄ）１４０のみが用いられる。このため、リードの転送性能において、他のバスの転送性能に律速されることはないので、転送元となるバススレーブの転送性能（読出性能）を最大限に引き出すことができる。
同様に、データの書込経路としては転送先のバス（Ａ）１１０のみが用いられる。このため、ライトの転送性能において、他のバスの転送性能に律速されることはないので、転送先となるバススレーブの転送性能（書込性能）を最大限に引き出すことができる。
このように、本実施形態に係るＤＭＡコントローラ５０によれば、４つのバスを有する構成において、転送元バスから転送先バスに最短経路でデータがＤＭＡ転送されるので、テータの転送速度を改善することができる。
【００４４】
また、本実施形態に係るＤＭＡコントローラ５０では、ＤＭＡチャネルＣｈ０〜Ｃｈ１５を有し、ＤＭＡ転送に割り当てられた各チャネルにおいてＤＭＡ転送が可能であれば（ステップＳａ１４の判別結果が「Ｙｅｓ」であれば）、同時並行してＤＭＡ転送が実行される。
【００４５】
例えば、ＤＭＡチャネルＣｈ０がＲＯＭ１４８からＳＲＡＭ１１８にＤＭＡ転送している状態において（図５参照）、ＤＭＡチャネルＣｈ１に対してメモリ１２４からＳＰＩ１４２へのＤＭＡ転送命令が割り当てられたとき、転送元バスのバス（Ｂ）１２０に接続されたマスターポートＰ２のリードマスターポートと、転送先バスのバス（Ｄ）１４０に接続されたマスターポートＰ４のライトマスターポートとがいずれもＤＭＡチャネルＣｈ０によって使用されていないので、当該ＤＭＡチャネルＣｈ１に対しては転送指示がなされる。
さらに、ＤＭＡチャネルＣｈ０、Ｃｈ１がＤＭＡ転送している状態において、ＤＭＡチャネルＣｈ１５に対してサウンド回路１３２からＤＲＡＭ１２２へのＤＭＡ転送命令が割り当てられたとき、転送元バスのバス（Ｃ）１３０に接続されたマスターポートＰ３のリードマスターポートと、転送先バスのバス（Ｂ）１２０に接続されたマスターポートＰ２のライトマスターポートとがいずれも、ＤＭＡチャネルＣｈ０、Ｃｈ１によって使用されていないので、当該ＤＭＡチャネルＣｈ１５に対しては転送指示がなされる。
【００４６】
図７は、このようにしてＤＭＡチャネルＣｈ０、Ｃｈ１、Ｃｈ１５がＤＭＡ転送している場合におけるデータの転送経路を示す図であり、図８は、ＤＭＡコントローラ５０におおて設定された転送経路を示す図である。
この図に示されるように、本実施形態では、３つのＤＭＡ転送が同時並行で実行されるので、システム全体でみたときの効率を、さらに向上させることができる。
また、図７、図８で示されるように、マスターポートＰ１のリードマスターポートと、マスターポートＰ３のライトマスターポートとはいずれも使用されていない。このため、転送元バスをバス（Ａ）１１０とし、転送先バスをバス（Ｃ）１３０とするＤＭＡ転送が他のＤＭＡチャネルによって可能となっている。
【００４７】
ＤＭＡコントローラ５０において、転送元バスと転送先バスとが同一であっても良いのはもちろんである。
図９は、ＤＭＡコントローラ５０が、転送元バスと転送先バスとが同じバス（Ｄ）１４０である場合におけるデータの転送経路の一例を示す図である。この図の例では、いずれかのＤＭＡチャネルが、ＲＯＭ１４８からＩ２Ｃ１４４にＤＭＡ転送する場合に、ＲＯＭ１４８（リードポート）→バス（Ｄ）１４０（→ＤＭＡコントローラ５０）という経路でデータを読み出す一方、（ＤＭＡコントローラ５０→）バス（Ｄ）１４０→バス（Ｄ）１４０→Ｉ２Ｃ１１４（ライトポート）という経路でデータを書き込む。
【００４８】
また、ＤＭＡコントローラ５０において、いずれかのバスブリッジを介して接続された２つのバスのうち、一方のバスのモジュールから、他方のバスのモジュールにＤＭＡ転送する場合、当該バスブリッジを介しても良い。
図１０は、バスブリッジ２３を介して接続されたバス（Ｂ）１２０、バス（Ｃ）１３０において、バス（Ｃ）１３０に属するサウンド回路１３２から、バス（Ｂ）１２０に属するメモリ１２２にＤＭＡ転送する場合におけるデータの転送経路を示す図である。この図の例では、いずれかのＤＭＡチャネルが、サウンド回路１３２（リードポート）→バス（Ｃ）１３０→バスブリッジ２３→バス（Ｂ）１２０（→ＤＭＡコントローラ５０）という経路でデータを読み出す一方、（ＤＭＡコントローラ５０→）バス（Ｂ）１３０→メモリ１２２（ライトポート）という経路でデータを書き込む。
【００４９】
なお、この場合に、ＤＭＡコントローラ５０のマスターポートＰ２ではなく、図１１に示されるように、マスターポートＰ３を用いても良い。詳細には、同図に示されるように、いずれかのＤＭＡチャネルが、サウンド回路１３２（リードポート）→バス（Ｃ）１３０（→ＤＭＡコントローラ５０）という経路でデータを読み出す一方、（ＤＭＡコントローラ５０→）バス（Ｃ）１３０→バスブリッジ２３→バス（Ｂ）１２０→メモリ１２２（ライトポート）という経路でデータを書き込む。
このように、本説明において、最短経路でデータの転送には、隣り合うバスにわたってバスブリッジを経由する転送を含み得る。
【００５０】
本発明は、上述した実施形態に限定されるものではなく、例えば次に述べるような各種の応用・変形が可能である。また、次に述べる応用・変形の態様は、任意に選択された一または複数を適宜に組み合わせることもできる。
【００５１】
上述した実施形態では、バス幅については言及していなかったが、バス（Ａ）１１０、バス（Ｂ）１２０、バス（Ｃ）１３０およびバス（Ｄ）１４０のバス幅については、互いに異なっていても良い。なお、バス幅が異なっている場合のバス幅変換については、ＤＭＡコントローラ５０（またはバスブリッジ１２、２３、３４）が実行することになる。
また、実施形態では、ＤＭＡコントローラ５０に接続されたバス数（およびマスターポート数）を「４」としたが、「３」以上であれば良い。３つ以上のバスにおいて、少なくとも２つのバスの転送帯域が異なっていれば良い。
【符号の説明】
【００５２】
５０…ＤＭＡコントローラ、１１０…バス（Ａ）、１１２…ＣＰＵ、１２０…バス（Ｂ）、１２２…ＤＲＡＭ、１２４…メモリ、１３０…バス（Ｃ）、１３２…サウンド回路、１４０…バス（Ｄ）、１４２…ＳＰＩ、１４８…ＲＯＭ、５０２…転送制御部、５０４…選択部、５１２…特定部、５１４…アドレステーブル。
【図１】
2015222487.tif 000003
【図２】
2015222487.tif 000004
【図３】
2015222487.tif 000005
【図４】
2015222487.tif 000006
【図５】
2015222487.tif 000007
【図６】
2015222487.tif 000008
【図７】
2015222487.tif 000009
【図８】
2015222487.tif 000010
【図９】
2015222487.tif 000011
【図１０】
2015222487.tif 000012
【図１１】
2015222487.tif 000013
【図１２】
2015222487.tif 000014