(57)【要約】【課題】   異なるバス間でバッファを介してＤＭＡ転送するシステムの転送データのブロックサイズを簡単に変更可能とする。【解決手段】   第１のバス１１と第２のバス１２とはバッファメモリを有するバス中継器１３を介して接続され、各バス１１、１２にはＤＭＡ（ダイレクトメモリアクセス）コントローラ２２、２７が接続される。バス中継器１３は、データ転送時にダミーデータを付加したり、一部のデータを省略することができる。【選択図】図１
2005190496.tif 000002
【特許請求の範囲】
【請求項１】
第１CPUおよび第１DMAコントローラが接続された第１バスと、第２CPUおよび第２DMAコントローラが接続された第２バスとを、バッファメモリを有するバス中継器を介して接続するシステムにおけるバス間データ転送制御方法であって、
前記バス中継器からの第１DMA要求により、前記第１DMAコントローラが前記第１バスに接続された第1装置と前記バッファメモリとの間で、第1転送単位においてデータ転送する処理と、
前記第１転送単位において転送されたデータを前記バッファメモリに一時記憶する処理と、
前記バス中継器からの第２DMA要求により、前記第２のバスに接続された第２DMAコントローラが、前記第２バスに接続された第2装置と前記バッファメモリとの間で、前記第１転送単位よりも小さい第2転送単位において、前記バッファメモリ内に一時記憶されたデータの一部をデータ転送する処理と、
前記第２転送単位においてデータ転送する処理が終了した後、前記バッファメモリ内に一時記憶されたデータを破棄する処理とを含む、バス間データ転送制御方法。
【請求項２】
第１CPUおよび第１DMAコントローラが接続された第１バスと、第２CPUおよび第２DMAコントローラが接続された第２バスとを、バッファメモリおよびバッファ制御ユニットを有するバス中継器を介して接続するシステムであって、
前記第１DMAコントローラは、前記第１バスに接続された第1装置と前記バッファメモリとの間で第1転送単位においてDMAデータ転送するように設定され、
前記バッファメモリは前記第１転送単位においてＤＭＡデータ転送されたデータを一時記憶することができるように構成され、
前記第２DMAコントローラは、前記第２バスに接続された第2装置と前記バッファメモリとの間で、前記第１転送単位よりも小さい第2転送単位において、前記バッファメモリに一時記憶されたデータの一部をDMAデータ転送するように設定され、
前記バッファ制御ユニットが、前記第１、第２DMAコントローラのそれぞれに対してDMA要求を出力することにより、前記バッファメモリを介して前記第１装置と前記第２装置との間でデータ転送を実行させるとともに、前記第２転送単位におけるデータ転送が終了した後、前記バッファメモリ内のデータを破棄する、システム。
【請求項３】
第１CPUおよび第１DMAコントローラが接続された第１バスと、第２CPUおよび第２DMAコントローラが接続された第２バスとを、バッファメモリを有するバス中継器を介して接続するシステムにおけるバス間データ転送制御方法であって、
前記バス中継器からの第１DMA要求により、前記第１DMAコントローラが前記第１バスに接続された第1装置と前記バッファメモリとの間で、第1転送単位においてデータ転送する処理と、
前記第１転送単位において転送されたデータを前記バッファメモリに一時記憶する処理と、
前記バス中継器からの第２DMA要求により、前記第２のバスに接続された第２DMAコントローラが、前記第２バスに接続された第2装置と前記バッファメモリとの間で、前記第１転送単位よりも大きい第2転送単位において、前記バッファメモリ内に一時記憶されたデータおよびダミーデータをデータ転送する処理と、
前記第２転送単位においてデータ転送する処理が終了した後、前記ダミーデータを上書きする処理とを含む、バス間データ転送制御方法。
【請求項４】
第１CPUおよび第１DMAコントローラが接続された第１バスと、第２CPUおよび第２DMAコントローラが接続された第２バスとを、バッファメモリおよびバッファ制御ユニットを有するバス中継器を介して接続するシステムであって、
前記第１DMAコントローラは、前記第１バスに接続された第1装置と前記バッファメモリとの間で第1転送単位においてDMAデータ転送するように設定され、
前記バッファメモリは前記第１転送単位においてＤＭＡデータ転送されたデータを一時記憶することができるように構成され、
前記第２DMAコントローラは、前記第２バスに接続された第2装置と前記バッファメモリとの間で、前記第１転送単位よりも大きい第2転送単位において、前記バッファメモリに一時記憶されたデータおよびダミーデータをDMAデータ転送するように設定され、
前記バッファ制御ユニットが、前記第１、第２DMAコントローラのそれぞれに対してDMA要求を出力することにより、前記バッファメモリを介して前記第１装置と前記第２装置との間でデータ転送を実行させるとともに、前記第２転送単位におけるデータ転送が終了した後、前記第２バスに接続されたＣＰＵが前記ダミーデータを上書き可能にする、システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、２つの異なるバスにそれぞれ接続されたデバイスやメモリの間でデータを転送するためのデータ転送方法及び装置に関する。
【背景技術】
【０００２】
従来において、メインバスとサブバスのような異なるバスをゲートウェイ等のバス中継器を介して接続し、メインバスに設けられたＤＭＡ（ダイレクトメモリアクセス）コントローラによりこれらのバス間でデータのＤＭＡ転送を行うものが知られている。
【０００３】
例えば、図１３に示すような構成において、メインバス１０１とサブバス１０２とはそれぞれバスゲートウェイ等のバス中継器１０３に接続されている。メインバス１０１には、ＣＰＵや各種インターフェース等のデバイス１０４、ＤＭＡコントローラ１０５が接続され、サブバス１０２には、デバイス１０６、ＲＯＭ等のメモリ１０７が接続される。
【０００４】
この図１３の例では、メインバス１０１上のＤＭＡコントローラ１０５がバス中継器１０３を介してサブバス１０２も制御することにより、例えばデバイス１０４とデバイス１０６との間のＤＭＡ転送を実現している。このように、異なるバス１０１、１０２間であっても、それぞれのバスのアクセス時間が同じ程度であれば、無駄な待ち時間がなく、効率の良いデータ転送を行うことができる。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ところで、デバイス間でデータ転送を行う場合には、それぞれのデバイスにとって都合のよいデータの並びかたがあり、これに対応するために、余分なデータを切り捨てたり、転送されたデータ列の間に別のデータを挿入したりすることが必要とされる。
【０００６】
メモリ上に展開されたデータ列に対して、上述のような操作をＣＰＵが行おうとすると、一旦ＣＰＵのレジスタに読み込んだ後、また書かなければならないことから、非常に効率が悪く、これはＣＰＵが他の作業を行おうとする時間を削減することにもなり、好ましくない。
【０００７】
ここで、ＤＭＡコントローラがデータ転送時に転送元アドレスや転送先アドレスを毎回変更することも考えられ、この場合には、転送元のアドレスと転送量のリストを用意し、ＤＭＡコントローラが毎回そのリストに従ってＤＭＡ転送を行うわけであるが、転送仕様テーブルをＣＰＵが用意しなければならず、毎回転送仕様をチェックするためのオーバーヘッドが生ずる等の難点がある。
【０００８】
また、上述したような１つのシステム内で異なるバスが共存する場合には、バス幅やデータアクセス速度が異なることが多く、例えば図１３の例では、メインバス１０１が３２ビット幅で高速、サブバス１０２が１６ビット幅で低速となっている。このように、バス幅やデータアクセス速度が異なるバス間でＤＭＡ転送を行わせる場合にも、余分なデータを切り捨てたり、転送されたデータ列の間に別のデータを挿入したりすることがあり、この場合にも簡単にデータ構造やアドレスの区切りの変更が行えることが望ましい。
【０００９】
本発明は、このような実情に鑑みてなされたものであり、異なる２つのバス間でのデータ転送の際に、ＣＰＵに負担をかけずに簡単に転送データブロックのサイズを変更でき、作業効率の向上を図ることができるようなデータ転送方法及び装置の提供を目的とする。
【課題を解決するための手段】
【００１０】
上記課題の少なくとも一つに対応して、本発明の一態様は、互いに異なる第１のバスと第２のバスとをバッファメモリを有するバス中継手段を介して接続し、上記第１のバスと上記第２のバスとの間でのデータ転送を上記バス中継手段内のバッファメモリを介して行い、上記バス中継手段はデータ転送時にダミーデータを付加することにより転送データブロックのサイズを大きくすること、又は、上記バス中継手段はデータ転送時に一部のデータを省略することにより転送データブロックのサイズを小さくすることを特徴とする。
ここで、上記第１のバスに接続された第１のダイレクトメモリアクセス制御手段により、上記第１のバスと上記バス中継手段内のバッファメモリとの間でデータ転送制御し、上記第２のバスに接続された第２のダイレクトメモリアクセス制御手段により、上記第２のバスと上記バス中継手段内のバッファメモリとの間でデータ転送制御することが挙げられる。また、上記バス中継手段は、データ転送時に上記バッファメモリ内のデータがなくなっても出力要求がきているときにダミーデータを出力することにより転送データブロックのサイズを大きくしたり、データ転送時に出力側のデータ転送が終了した時点で上記バッファメモリ内のデータが残存しているときに、該残存データを破棄することにより転送データブロックのサイズを小さくすることが挙げられる。
転送を仲介するバス中継器に、転送データのブロックサイズを大きくしたり、小さくしたりする機能を付加することにより、データ転送時に簡単なデータ構成の変更を行うことができる。
【００１１】
本発明の他の態様は、第１CPUおよび第１DMAコントローラが接続された第１バスと、第２CPUおよび第２DMAコントローラが接続された第２バスとを、バッファメモリを有するバス中継器を介して接続するシステムにおけるバス間データ転送制御方法であって、前記バス中継器からの第１DMA要求により、前記第１DMAコントローラが前記第１バスに接続された第1装置と前記バッファメモリとの間で、第1転送単位においてデータ転送する処理と、前記第１転送単位において転送されたデータを前記バッファメモリに一時記憶する処理と、前記バス中継器からの第２DMA要求により、前記第２のバスに接続された第２DMAコントローラが、前記第２バスに接続された第2装置と前記バッファメモリとの間で、前記第１転送単位よりも小さい第2転送単位において、前記バッファメモリ内に一時記憶されたデータの一部をデータ転送する処理と、前記第２転送単位においてデータ転送する処理が終了した後、前記バッファメモリ内に一時記憶されたデータを破棄する処理とを含む。
本発明のさらに他の態様は、第１CPUおよび第１DMAコントローラが接続された第１バスと、第２CPUおよび第２DMAコントローラが接続された第２バスとを、バッファメモリおよびバッファ制御ユニットを有するバス中継器を介して接続するシステムであって、前記第１DMAコントローラは、前記第１バスに接続された第1装置と前記バッファメモリとの間で第1転送単位においてDMAデータ転送するように設定され、前記バッファメモリは前記第１転送単位においてＤＭＡデータ転送されたデータを一時記憶することができるように構成され、前記第２DMAコントローラは、前記第２バスに接続された第2装置と前記バッファメモリとの間で、前記第１転送単位よりも小さい第2転送単位において、前記バッファメモリに一時記憶されたデータの一部をDMAデータ転送するように設定され、前記バッファ制御ユニットが、前記第１、第２DMAコントローラのそれぞれに対してDMA要求を出力することにより、前記バッファメモリを介して前記第１装置と前記第２装置との間でデータ転送を実行させるとともに、前記第２転送単位におけるデータ転送が終了した後、前記バッファメモリ内のデータを破棄する。
【００１２】
本発明のさらに別の態様は、第１CPUおよび第１DMAコントローラが接続された第１バスと、第２CPUおよび第２DMAコントローラが接続された第２バスとを、バッファメモリを有するバス中継器を介して接続するシステムにおけるバス間データ転送制御方法であって、前記バス中継器からの第１DMA要求により、前記第１DMAコントローラが前記第１バスに接続された第1装置と前記バッファメモリとの間で、第1転送単位においてデータ転送する処理と、前記第１転送単位において転送されたデータを前記バッファメモリに一時記憶する処理と、前記バス中継器からの第２DMA要求により、前記第２のバスに接続された第２DMAコントローラが、前記第２バスに接続された第2装置と前記バッファメモリとの間で、前記第１転送単位よりも大きい第2転送単位において、前記バッファメモリ内に一時記憶されたデータおよびダミーデータをデータ転送する処理と、前記第２転送単位においてデータ転送する処理が終了した後、前記ダミーデータを上書きする処理とを含む。
本発明のさらに別の態様は、第１CPUおよび第１DMAコントローラが接続された第１バスと、第２CPUおよび第２DMAコントローラが接続された第２バスとを、バッファメモリおよびバッファ制御ユニットを有するバス中継器を介して接続するシステムであって、前記第１DMAコントローラは、前記第１バスに接続された第1装置と前記バッファメモリとの間で第1転送単位においてDMAデータ転送するように設定され、前記バッファメモリは前記第１転送単位においてＤＭＡデータ転送されたデータを一時記憶することができるように構成され、前記第２DMAコントローラは、前記第２バスに接続された第2装置と前記バッファメモリとの間で、前記第１転送単位よりも大きい第2転送単位において、前記バッファメモリに一時記憶されたデータおよびダミーデータをDMAデータ転送するように設定され、前記バッファ制御ユニットが、前記第１、第２DMAコントローラのそれぞれに対してDMA要求を出力することにより、前記バッファメモリを介して前記第１装置と前記第２装置との間でデータ転送を実行させるとともに、前記第２転送単位におけるデータ転送が終了した後、前記第２バスに接続されたＣＰＵが前記ダミーデータを上書き可能にする。
【発明の効果】
【００１３】
本発明によれば、第１のバス及び第２のバスの間にバッファメモリを有するバス中継手段を設け、上記第１のバスと上記第２のバスとの間でのデータ転送を上記バス中継手段内のバッファメモリを介して行い、上記バス中継手段は、データ転送時にダミーデータを付加することにより転送データブロックのサイズを大きくすること、又は、データ転送時に一部のデータを省略することにより転送データブロックのサイズを小さくすることにより、データ転送時に簡単なデータ構成の変更を行うことができ、システムのパフォーマンスを向上させることができる。
【００１４】
また、上記第１のバスに第１のダイレクトメモリアクセス制御手段を接続して、上記第１のバスと上記バス中継手段内のバッファメモリとの間でデータ転送制御し、上記第２のバスに第２のダイレクトメモリアクセス制御手段を接続して、上記第２のバスと上記バス中継手段内のバッファメモリとの間でデータ転送制御するようにし、上記バス中継手段としては、データ転送時に上記バッファメモリ内のデータがなくなっても出力要求がきているときにダミーデータを出力する機能と、データ転送時に出力側のデータ転送が終了した時点で上記バッファメモリ内のデータが残存しているときに該残存データを破棄する機能とを持たせることにより、データ転送されたあるいはデータ転送されようとしているメモリ上のデータをＣＰＵ等が並べ替え処理するような効率の悪い作業を省くことができ、またデータ転送のための転送元アドレスや転送量等の特別の転送仕様テーブルを用意したり参照したりする手間が省ける。また、異なるデータフォーマットのデバイス間のデータ転送を行うことができる。
【発明を実施するための最良の形態】
【００１５】
以下、本発明に係る実施の形態について、図面を参照しながら説明する。図１は、本発明に係る実施の形態となるデータ転送方法が適用されるシステム構成をを示すブロック図である。
【００１６】
この図１において、第１のバス１１及び第２のバス１２は、ＦＩＦＯ等のバッファメモリを用いて成るバス中継器１３にそれぞれ接続され、このバス中継器１３を介してバス１１、１２間で互いにデータの転送を行うことができる。第１のバス１１には、ＣＰＵ２１、ＤＭＡ（ダイレクトメモリアクセス）コントローラ（ＤＭＡＣ）２２、デバイス２３、メモリ２４等が接続されており、第２のバス１２には、ＣＰＵ２６、ＤＭＡコントローラ２７、デバイス２８、メモリ２９等が接続されている。
【００１７】
デバイス２３はＤＭＡコントローラ２２に対して、デバイス２８はＤＭＡコントローラ２７に対して、それぞれＤＭＡ要求を出すことができる。これらのデバイス２３，２８としては、例えば、画像や音声のエンコーダ、デコーダ、グラフィック処理のためのグラフィックエンジン、画像処理や音声処理ＩＣ等、あるいは、それぞれのインターフェースを介してのハードディスク装置、光磁気ディスク装置、フロッピィディスク装置、ＣＤ−ＲＯＭ装置等の周辺機器を挙げることができる。バス中継器１３は、ＤＭＡコントローラ２２、２７に対してそれぞれＤＭＡ要求（DREQ）を出すことができる。これらのＤＭＡ要求は、複数のＤＭＡチャネルの内のどのＤＭＡチャネルかを指定することができる。また、バス中継器１３は、例えばバス１２上のＣＰＵ２６に対してバス１２の使用権の要求（BREQ）を出し、ＣＰＵ２６からのバス使用許可の応答（BACK）を受け取ることができる。
【００１８】
このような図１のシステムに用いられるバス中継器１３の構成の一例を図２に示す。この図２において、上記図１の第１のバス１１はデータバス１１ａとアドレス・制御バス１１ｂとに分けて、上記第２のバス１２はデータバス１２ｂとアドレス・制御バス１２ｂとに分けて示されている。バス中継器１３内には、第１のバス１１のデータバス１１ａに接続される内部バス３１と、第２のバス１２のデータバス１２ａに接続される内部バス３２とが設けられ、これらの内部バス３１，３２には、ＦＩＦＯ（First In First Out：先入れ先出し）メモリ３３と、バッファ制御ユニット３４とがそれぞれ接続されている。バッファ制御ユニット３４は、第１のバス１１のアドレス・制御バス１１ｂ、及び第２のバス１２のアドレス・制御バス１２ｂとも接続されている。また、バッファ制御ユニット３４には、上記図１のＤＭＡコントローラ２２，２７との間でＤＭＡ要求（DREQ）やチャネル指定等を行うための制御信号ラインが接続されている。
【００１９】
この図２に示すバス中継器１３において、ＦＩＦＯメモリ３３は、バッファの役割を果たすメモリであり、バッファ制御ユニット３４によって、アクセスされるバス１１，１２、すなわちこれらに接続された内部バス３１，３２に対してデータの入出力を制御される。バッファ制御ユニット３４は、ＦＩＦＯメモリ３３のバスアクセス動作を制御すると共に、各バス１１，１２のＤＭＡコントローラ２２，２７に対してＤＭＡ要求（DREQ）を出し、その応答（ＤＭＡアクノリッジ：DACK）を受け取る。このＤＭＡ要求は、複数のＤＭＡチャネルの１つを指定して出すことができる。ＤＭＡコントローラ２２，２７からのＤＭＡチャネル選択情報もこのバッファ制御ユニット３４に送られる。
【００２０】
ところで、第１のバス１１と第２のバス１２との間で、バス中継器１３を介してＤＭＡ転送を行う場合には、ＤＭＡコントローラ２２及び２７のＤＭＡの設定（例えばデータサイズ等）が矛盾なく対応している必要がある。ＣＰＵ２１はＤＭＡコントローラ２２に対して、またＣＰＵ２６はＤＭＡコントローラ２７に対して、それぞれのバス上のＤＭＡの設定を行う。
【００２１】
例えば、第１のバス１１のメモリ２４から第２のバス１２のメモリ２８にＤＭＡによるデータ転送を行う場合、第１のバス１１のＤＭＡコントローラ２２にはメモリ２４からバス中継器１３へのＤＭＡについて、また第２のバス１２のＤＭＡコントローラ２７にはバス中継器１３からメモリ２９へのＤＭＡについて、それぞれ同じデータサイズ（データ量）で対応するＤＭＡチャネルとなるように設定されることが必要である。これらの設定がされた後の処理手順は、図３のようになる。
【００２２】
この図３において、最初のステップＳ６１で、バス中継器１３からＤＭＡコントローラ２２に対してＤＭＡ要求（DREQ）を行う。次のステップＳ６２で、ＤＭＡコントローラ２２はＣＰＵ２１にバス１１の使用権の要求（BREQ）を行ってバス使用権をもらい、メモリ２４からバス中継器１３へのＤＭＡ転送を行う。次のステップＳ６３では、バス中継器１３はＤＭＡコントローラ２７に対してＤＭＡ要求（DREQ）を行う。次のステップＳ６４では、ＤＭＡコントローラ２７はＣＰＵ２６にバス１２の使用権の要求（BREQ）を行ってバス使用権をもらい、バス中継器１３からメモリ２９へのＤＭＡ転送を行う。
【００２３】
また、第２のバス１２上のデバイス２８から第１のバス１１上のデバイス２３にデータをＤＭＡ転送する場合には、ＤＭＡコントローラ２７にはデバイス２８からバス中継器１３へのＤＭＡについて、またＤＭＡコントローラ２２にはバス中継器１３からデバイス２３へのＤＭＡについて、それぞれ同じデータサイズで対応するＤＭＡチャネルとなるように設定されることが必要である。これらの設定がされた後の処理手順は、図４のようになる。
【００２４】
この図４の最初のステップＳ７１において、第２のバス１２上のデバイス２８はＤＭＡコントローラ２７に対してＤＭＡ要求（DREQ）を行う。次のステップＳ７２で、バス中継器１３はＤＭＡコントローラ２７に対してＤＭＡ要求（DREQ）を行う。ステップＳ７３で、ＤＭＡコントローラ２７は、デバイス２８及びバス中継器１３からの各ＤＭＡ要求を受けたことに応じて、ＣＰＵ２６にバス１２の使用権の要求（BREQ）を行ってバス使用権をもらい、デバイス２８からバス中継器１３へのＤＭＡ転送を行う。このとき、ＣＰＵ２６がバス要求（BREQ）に応じてバスを開放したときの応答をＤＭＡコントローラ２７に返し、ＤＭＡコントローラ２７はＤＭＡアクノリッジ（DACK）をバス中継器１３等に返すことは、通常のＤＭＡ転送と同様である。次のステップＳ７４で、バス中継器１３が第１のバス１１上のＤＭＡコントローラ２２に対してＤＭＡ要求（DREQ）を行い、ステップＳ７５で、デバイス２３がＤＭＡコントローラ２２に対してＤＭＡ要求（DREQ）を行う。次のステップＳ７６で、ＤＭＡコントローラ２２は、デバイス２３及びバス中継器１３からの各ＤＭＡ要求を受けたことに応じて、ＣＰＵ２１にバス１１の使用権の要求（BREQ）を行ってバス使用権をもらい、バス中継器１３からデバイス２３へのＤＭＡ転送を行う。
【００２５】
なお、バス中継器１３のＦＩＦＯ等のメモリ容量は有限なので、それを超える大きさのデータを転送する場合には、ＤＭＡコントローラ２２、２７に分割転送の設定をして、上記ステップＳ６１からＳ６４まで、あるいはステップＳ７１からＳ７６までを繰り返せばよい。この分割転送の際の１回の転送単位（ブロック）は、バス中継器１３のメモリ容量によって決まる。
【００２６】
従って、バス中継器１３のバッファメモリを介して２つのバス１１，１２間でＤＭＡ転送を行わせることにより、異なるバス間のＤＭＡを無駄な待ち時間を発生させることなく行うことができる。また、複数のＤＭＡチャネルを同時に動作可能にすることにより、ＣＰＵの処理を簡素化し、平易なプログラミングと少ないオーバーヘッドを実現できる。また、バス間の中継器のバッファを効率よく活用することができる。さらに、マルチスレッドのプログラムを簡単に書くことができる。
【００２７】
ところで、上述したようなＤＭＡ転送の際に、転送元からの連続したデータ列を全て転送先にそのまま書き込む場合、１回の転送単位（ブロック）は、ＤＭＡコントローラ２２，２７共にバス中継器１３内のＦＩＦＯ３３のサイズと等しく設定することによって最も効率のよい転送が行われる。
【００２８】
バス中継器１３は、バッファ（ＦＩＦＯ３３）に入ってくるデータ量と出て行くデータ量とが異なる場合に、次のような処理を行う機能を有している。
【００２９】
すなわち、第１に、入力されたデータがバッファ（ＦＩＦＯ３３）からなくなってもさらに出力要求がきている場合にはダミーデータを出力する。第２に、入力されたデータが出力側のＤＭＡが終了した時点でバッファ（ＦＩＦＯ３３）に残っている場合には、残ったデータを破棄する。
【００３０】
このようなバス中継器１３の機能によって、転送するデータ列の構成を変えることができる。このデータ列の構成の変更としては、ＤＭＡ転送時にダミーデータを追加することによりデータブロックのサイズを大きくすることと、ＤＭＡ転送時に一部のデータを省略することによりデータブロックのサイズを小さくすることが挙げられる。
【００３１】
以下、バス中継器１３のバッファ（ＦＩＦＯ３３）の容量が６４バイトである場合の具体例について説明する。
【００３２】
例えば、図５に示すようなデータ列Ｓ1A，Ｓ1B，Ｓ1C，Ｓ2A，…が、図１のメモリ２９に展開されているものとする。このデータ列Ｓ1A，Ｓ1B，Ｓ1C，Ｓ2A，…の添字のＡ，Ｂ，Ｃは、それぞれ種類の異なるデータを表し、これらの３種類のデータの内のＢ，Ｃの種類のデータだけを図１のデバイス２３に転送する場合を想定する。このときデバイス２３には、図６に示すようなデータ列を書き込む必要がある。なお、データ列Ｓ1A，Ｓ1B，Ｓ1C，Ｓ2A，…の添字の数字１，２，３，…は、１回の転送単位であるデータブロックの番号を示す。
【００３３】
ＤＭＡコントローラ２７には、上記データＳ1A，Ｓ1B，Ｓ1C，Ｓ2A，…の全ての種類（Ａ，Ｂ，Ｃ）、すなわち３２バイトを１ブロックとして、データ列Ｓ1Bから３ブロック分を転送するようなＤＭＡ転送の設定を行う。これに対して、ＤＭＡコントローラ２２には、上記Ｂ，Ｃの２種類だけ、すなわち２４バイトを１ブロックとして３ブロック分を転送するように設定する。これによって、種類Ｃのデータ列（Ｓ1C，Ｓ2C）に続く８バイト（データ列Ｓ2A，Ｓ3A）は破棄されるから、結果として、図６に示すようなデータ列をデバイス２３に書き込むことができる。
【００３４】
次に、図１のデバイス２３から図６に示すような書式のデータ列を出力し、これを例えばメモリ２９に展開すると共に図４に示すように種類Ｃのデータ列の後に種類Ｄのデータ列を挿入しようとする場合を想定する。
【００３５】
この場合には、ＤＭＡコントローラ２７には、３６バイトを１ブロックとして３ブロック転送するように設定を行う。このとき、ＤＭＡ転送の結果、上記種類Ｂ，Ｃの２４バイトのデータ列の後に１２バイトのダミーデータが書き込まれるため、図１のＣＰＵ２６は、このダミーデータ領域に上記種類Ｄのデータ列を直接書き込むことができる。すなわち、ＣＰＵ２６は、メモリ２９上でデータをシフトさせる手間を省くことができる。
【００３６】
なお、図１の例えばデバイス２８が図７のようなデータ列を出力し、その内のＢ，Ｃの種類だけのデータ列をデバイス２３に書き込むような場合には、ＤＭＡコントローラ２７にはデータ列の先頭から３６バイトを１ブロックとして３ブロック転送するように設定し、ＤＭＡコントローラ２７には２４バイトを１ブロックとして３ブロック転送するように設定すればよい。
【００３７】
このように、転送を仲介するバス中継器１３に上述した機能を付加するだけで、簡単なデータ構成の変換をデータ列の転送時に行うことができ、システムのパフォーマンスを向上させることができる。
【００３８】
ここで、上述したような余分のデータを切り捨てたり、データ列の間に別のデータを挿入する場合の具体例について、図面を参照しながら説明する。
【００３９】
図８は、コンピュータグラフィックス等の画像処理におけるテクスチャマッピングのためのテクスチャ画像領域を示しており、この広いテクスチャ領域内の一部、例えば図中の斜線部で示す領域Ｔ1，Ｔ2，Ｔ3，Ｔ4を転送することを想定する。このテクスチャ画像は、メモリ上で例えば図９のように展開され、このメモリ上での一部領域Ｔ1，Ｔ2，Ｔ3，Ｔ4のデータを転送するときに、余分なデータを切り捨てることが必要とされる。
【００４０】
また、データ付加の例としては、図１０に示すようにいくつかのデータ列、例えばポリゴンデータにヘッダを付加する場合が挙げられる。すなわち、ポリゴンデータは、頂点数、シェーディング、テクスチャの有無などによってデータ列の大きさが異なり、また、テクスチャデータとの区別や転送先の区別などのために、ヘッダ（GPUIFtag）を付けることがある。ＧＰＵ（グラフィックプロセッサユニット）のインターフェースＧＰＵＩＦにより転送されるデータは、先頭のヘッダ（GPUIFtag）と、後続するデータとで構成されるプリミティブと称されるデータの一まとまりを基本単位とし、また一括処理される複数のプリミティブをまとめてＧＰＵパケットという。図１１は、上記ヘッダ（GPUIFtag）の構成例を示しており、ＭＳＢから順に、レジスタ記述子REGS、レジスタ記述子数NREG、データ形式FLG 等から成っている。このように、ポリゴンデータにヘッダ（GPUIFtag）を付加する場合に、データ列の間に別のデータを挿入することが必要とされる。
【００４１】
以上のような簡単なデータ構成の変換を必要とする場合に、上述した本発明の実施の形態を用いることにより、メモリ上にＤＭＡ転送されたデータ列あるいはメモリ上のＤＭＡ転送されようとしているデータ列をＣＰＵが並べ替えるといった効率の悪い作業を省くことができ、システムのパフォーマンスが向上する。また、異なるデータフォーマットのデバイス間のＤＭＡ転送を行うことができる。さらに、特別な仕様の転送元アドレスや転送量のテーブルを用意したり、テーブルを参照したりする作業を省略できる。
【００４２】
次に、図１２は、本発明の実施の形態が適用されるシステムの一例を示し、このシステムにおいては、高速の画像処理を行うためのメインバス１１１と、ＣＤ−ＲＯＭドライブ等の低速な周辺デバイスが接続されるサブバス１１２とを、ＦＩＦＯ等のバッファメモリを有するバス中継器１１３を介して接続している。
【００４３】
すなわち、図１２において、高速のメインバス１１１には、メインＣＰＵ１２１と、ＤＭＡコントローラ１２２と、高速画像処理のためのグラフィックエンジン１２３と、メインメモリ１２４とが接続され、比較的低速のサブバス１２２には、サブＣＰＵ１２６と、ＤＭＡコントローラ１２７と、ＣＤ−ＲＯＭ等のデータ記録媒体１２８と、サブメモリ１２９とが接続されている。これらのメインバス１１１とサブバス１１２とは、上述したようなＦＩＦＯ等のバッファメモリを有するバス中継器１１３を介して接続され、このバス中継器１１３は、ＤＭＡコントローラ１２２、１２７に複数のＤＭＡチャネルに対応する複数種類のＤＭＡ要求、例えば３種類のＤＭＡ要求を出すことができる。このバス中継器１１３の具体的な構成及び動作は、上述した実施の形態のバス中継器１３と同様とすればよいため、説明を省略する。
【００４４】
このように、高速バスと低速バスとの間でＤＭＡ転送する場合に、高速バス上で無駄な待ち時間を生じさせることなくデータ転送が行え、ＣＰＵの処理を簡素化できる。また、簡単なデータ構成の変更をデータ転送時に行うことができ、システムのパフォーマンスを向上させることができる。
【００４５】
なお、本発明は上記実施の形態のみに限定されるものではなく、例えば、上記実施の形態では、第１のバスと第２のバスとの間で双方向のＤＭＡ転送を行う例について説明したが、第１のバスから第２のバスへのＤＭＡ転送のみ、あるいは第２のバスから第１のバスへのＤＭＡ転送のみを行う場合にも本発明を適用できる。また、ＤＭＡチャネル数、各バスに接続される回路等は実施の形態に限定されないことは勿論である。
【図面の簡単な説明】
【００４６】
【図１】本発明の実施の形態の概略構成を示すブロック図である。
【図２】本発明の実施の形態に用いられるバス中継器の内部構成の一例を示すブロック図である。
【図３】本発明の実施の形態の動作の一例を説明するためのフローチャートである。
【図４】本発明の実施の形態の動作の他の例を説明するためのフローチャートである。
【図５】転送前のデータ列の具体例を示す図である。
【図６】転送の際に一部を省略して得られたデータ列の具体例を示す図である。
【図７】転送の際に別のデータを追加して得られたデータ列の具体例を示す図である。
【図８】テクスチャ画像上の転送すべきデータ領域の一例を示す図である。
【図９】図８のメモリ上でのデータ配列を示す図である。
【図１０】いくつかのデータ列にヘッダを付加した一例を示す図である。
【図１１】図１０で付加されるヘッダの具体例を示す図である。
【図１２】本発明の実施の形態が適用されたシステムの一例を示すブロック図である。
【図１３】２バスを用いるシステムの従来例を示すブロック図である。
【符号の説明】
【００４７】
１１ 第１のバス、 １２ 第２のバス、 １３ バス中継器、 ２１，２６ＣＰＵ、 ２２，２７ ＤＭＡコントローラ、 ２３，２８ デバイス、 ２４，２９ メモリ、 ３１，３２ 内部バス、 ３３ ＦＩＦＯメモリ、 ３４バッファ制御ユニット
【図１】
2005190496.tif 000003
【図２】
2005190496.tif 000004
【図３】
2005190496.tif 000005
【図４】
2005190496.tif 000006
【図５】
2005190496.tif 000007
【図６】
2005190496.tif 000008
【図７】
2005190496.tif 000009
【図８】
2005190496.tif 000010
【図９】
2005190496.tif 000011
【図１０】
2005190496.tif 000012
【図１１】
2005190496.tif 000013
【図１２】
2005190496.tif 000014
【図１３】
2005190496.tif 000015