(57)【要約】本発明は、通常はシングルバッファとして動作し、必要に応じてダブルバッファ方式として動作し高速データ転送を実現可能なデータ転送装置を提供することを目的とする。データ転送装置は、第１の動作モードにおいて第１のバッファを中継して第１のデータ転送を実行する第１のチャネルユニットと、第１の動作モードにおいて第２のバッファを中継して第１のデータ転送とは異なる第２のデータ転送を実行する第２のチャネルユニットを含み、第２の動作モードにおいて少なくとも第１のバッファと第２のバッファを含む複数のバッファを順次選択し、転送元から読み出すデータを順次選択したバッファを中継して転送先に転送することで、転送元からのデータ読み出しと転送先へのデータ書き込みを並行して実行するよう構成される。
2004077304.tif 000002
【特許請求の範囲】
【請求項１】
第１の動作モードにおいて第１のバッファを中継して第１のデータ転送を実行する第１のチャネルユニットと、
該第１の動作モードにおいて第２のバッファを中継して該第１のデータ転送とは異なる第２のデータ転送を実行する第２のチャネルユニット
を含み、第２の動作モードにおいて少なくとも該第１のバッファと該第２のバッファを含む複数のバッファを順次選択し、転送元から読み出すデータを該順次選択したバッファを中継して転送先に転送することで、該転送元からのデータ読み出しと該転送先へのデータ書き込みを並行して実行するよう構成されることを特徴とするデータ転送装置。
【請求項２】
該第２の動作モードにおいて該第１のバッファと該第２のバッファを交互に選択し、該転送元から読み出すデータを該交互に選択したバッファを中継して該転送先に転送することで、該第１のバッファへの該転送元からのデータ読み出し動作と該第２のバッファからの該転送先へのデータ書き込み動作とを並行して実行すると共に、該第２のバッファへの該転送元からのデータ読み出し動作と該第１のバッファからの該転送先へのデータ書き込み動作とを並行して実行するよう構成されることを特徴とする請求項１記載のデータ転送装置。
【請求項３】
該第２の動作モードにおいて該第１のチャネルと該第２のチャネルとが共同動作することにより単一のチャネルとしてデータ転送することを特徴とする請求項２記載のデータ転送装置。
【請求項４】
該第２の動作モードにおいて該第１のチャネルと該第２のチャネルは、該転送元からのデータ読み出し動作が完了すると相手側に読み出し動作完了を通知することを特徴とする請求項３記載のデータ転送装置。
【請求項５】
該第１のチャネルユニットと該第２のチャネルユニットの各々は、
該転送元のアクセス位置を示すアドレスを格納する転送元レジスタと、
該転送先のアクセス位置を示すアドレスを格納する転送先レジスタと、
該転送元レジスタに格納されるアドレスをインクリメントする第１のアドレスインクリメントモジュールと、
該転送先レジスタに格納されるアドレスをインクリメントする第２のアドレスインクリメントモジュール
を含み、
該第２の動作モードにおいて、該第１のアドレスインクリメントモジュールは該転送元のアクセス位置を１つおきにアクセスするようにアドレスをインクリメントし、該第２のアドレスインクリメントモジュールは該転送先のアクセス位置を１つおきにアクセスするようにアドレスをインクリメントし、該第１のチャネルユニットの該転送元レジスタ及び該転送先レジスタと該第２のチャネルユニットの該転送元レジスタ及び該転送先レジスタとが互い違いにアクセス位置を指定することを特徴とする請求項４記載のデータ転送装置。
【請求項６】
該第１のチャネルユニットと該第２のチャネルユニットの各々は、
該転送元のアクセス位置を示すアドレスを格納する転送元レジスタと、
該転送先のアクセス位置を示すアドレスを格納する転送先レジスタと、
該転送元レジスタに格納されるアドレスをインクリメントする第１のアドレスインクリメントモジュールと、
該転送先レジスタに格納されるアドレスをインクリメントする第２のアドレスインクリメントモジュール
を含み、
該第２の動作モードにおいて、該第１のチャネルの該第１のアドレスインクリメントモジュールは該転送元のアクセス位置を順番に１つずつアクセスするようにアドレスをインクリメントし、該第１のチャネルの該第２のアドレスインクリメントモジュールは該転送先のアクセス位置を順番に１つずつアクセスするようにアドレスをインクリメントし、該第１のチャネルユニットの該転送元レジスタ及び該転送先レジスタによりアクセス位置を指定してデータ転送することを特徴とする請求項４記載のデータ転送装置。
【請求項７】
該第２のチャネルユニットは、該転送先へのデータ書き込み動作が完了すると該第１のチャネルユニットに書き込み動作完了を通知することを特徴とする請求項６記載のデータ転送装置。
【請求項８】
該第１のチャネルユニットはバッファを特定する情報を順番に格納する第１のキューを含み、該第２のチャネルユニットはバッファを特定する情報を順番に格納する第２のキューを含み、該第２の動作モードにおいて、該第１のチャネルユニットは、該複数のバッファのうちで利用可能なバッファを順次選択し、該選択されたバッファを特定する情報を該第１のキューに順番に格納し、該第１のキューの最後尾の情報が指定するバッファへの該転送元からのデータ読み出しと該キューの先頭の情報が指定するバッファから該転送先へのデータ書き込みとを並行して実行することを特徴とする請求項１記載のデータ転送装置。
【請求項９】
第１のチャネルユニットと、
第２のチャネルユニット
を含み、該第１のチャネルユニットは、
第１のバッファと、
転送元のアクセス位置を示す第１の転送元レジスタと、
転送先のアクセス位置を示す第１の転送先レジスタ
を含み該第１のバッファを中継して該第１の転送元レジスタの示す転送元から該第１の転送先レジスタの示す転送先にデータ転送するよう構成され、該第２のチャネルユニットは、
第２のバッファと、
転送元のアクセス位置を示す第２の転送元レジスタと、
転送先のアクセス位置を示す第２の転送先レジスタ
を含み該第２のバッファを中継して該第２の転送元レジスタの示す転送元から該第２の転送先レジスタの示す転送先にデータ転送するよう構成され、該第１のチャネルユニットと該第２のチャネルユニットとが協調動作することで該第１のバッファへの一の転送元からのデータ読み出し動作と該第２のバッファからの一の転送先へのデータ書き込み動作とを並行して実行すると共に、該第２のバッファへの該一の転送元からのデータ読み出し動作と該第１のバッファからの該一の転送先へのデータ書き込み動作とを並行して実行するよう構成されることを特徴とするデータ転送装置。
【請求項１０】
複数のバッファと、
バッファを特定する情報を順番に格納する第１のキューを含む第１のチャネルユニットと、
バッファを特定する情報を順番に格納する第２のキューを含む第２のチャネルユニットと、
を含み、該第１のチャネルユニットは、該複数のバッファのうちで利用可能なバッファを順次選択し、該選択されたバッファを特定する情報を該第１のキューに順番に格納し、該キューの最後尾の情報が指定するバッファへの転送元からのデータ読み出しと該キューの先頭の情報が指定するバッファから転送先へのデータ書き込みとを並行して実行することを特徴とするデータ転送装置。
【発明の詳細な説明】
【技術分野】  本発明は、一般にデータ転送装置に関し、詳しくはデュアルバスシステムにおいてデータをＤＭＡ転送するデータ転送装置に関する。
【背景技術】  コンピュータシステムにおいては、ＣＰＵを介さずに２つのデバイス間のデータ転送を直接に実行するＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）転送が、高いシステム性能を達成するために必要不可欠な技術である。
一般にコンピュータシステムは、複数のデバイスとそれらを接続するバスから構成される。バスに接続されたデバイスは、ＲｅａｄやＷｒｉｔｅの要求を出力するマスターと呼ばれるデバイスと、マスターが出した要求を受け取るスレーブと呼ばれるデバイスとに分けることができる。ＤＭＡ（ＤｉｒｅｃｔＭｅｍｏｒｙＡｃｃｅｓｓ）転送を制御するＤＭＡＣ（ＤＭＡＣｏｎｔｒｏｌｌｅｒ）やＣＰＵは、要求を出す側のマスターデバイスである。
ＤＭＡＣは、ＣＰＵを介することなくスレーブデバイス間のデータ転送を直接に行なう。バスシステムにおいては、アドレスを用いることで、各スレーブデバイスを特定すると共に各スレーブデバイス内の位置（例えばメモリデバイス内の各アドレス）を特定する。図１は、アドレス空間におけるスレーブデバイスの割り当てを示すアドレスマップである。
ＤＭＡＣは、スレーブデバイスに対してＲｅａｄ要求を出し、アドレスにより指定されるスレーブデバイス内の特定の位置から情報を読み出す。その後ＤＭＡＣは、Ｗｒｉｔｅ要求を出し、読み出した情報を別のスレーブデバイスへ転送する。このようにして、ＤＭＡＣはＲｅａｄとＷｒｉｔｅの要求を出すことによって、スレーブデバイス間のデータ転送を実現する。
図２は、デュアルバスのシステムにおけるダブルバッファ方式のデータ転送動作を説明するための図である。
図２のデュアルバスシステムは、ＤＭＡＣ１０、バス１１、バス１２、ＲＡＭ１３、ＲＯＭ１４、ビデオディスプレイ１５、ＵＡＲＴ（Ｕｎｉｖｅｒｓａｌ  Ａｓｙｎｃｈｒｏｎｏｕｓ  Ｒｅｃｅｉｖｅｒ  Ｔｒａｎｓｍｉｔｔｅｒ）１６を含む。ＤＭＡＣ１０がマスターデバイスであり、ＲＡＭ１３、ＲＯＭ１４、ビデオディスプレイ１５、及びＵＡＲＴ１６がスレーブデバイスである。ＲＡＭ１３及びＲＯＭ１４はバス１１を介してＤＭＡＣ１０に接続され、ビデオディスプレイ１５及びＵＡＲＴ１６はバス１２を介してＤＭＡＣ１０に接続される。
ＤＭＡＣ１０は、２つのバッファ（Ｂｕｆｆｅｒ１）２１及びバッファ（Ｂｕｆｆｅｒ２）２２を含む。例として、ＲＡＭ１３からビデオディスプレイ１５へのＤＭＡデータ転送動作について以下に説明する。図３は、ＲＡＭ１３からビデオディスプレイ１５へのＤＭＡデータ転送動作を示すタイミング図である。
ＤＭＡＣ１０は、まずＲＡＭ１３へＲｅａｄ要求を送出し、Ｒｅａｄ要求の結果としてＲＡＭ１３から送られてきたデータをバッファ２１へ格納する。このＲｅａｄ動作は、図３においてＲＡＭ−＞ｂｕｆｆｅｒ１として示される。このＲｅａｄ動作が完了すると、ＤＭＡＣ１０はバッファ２１に格納された情報をビデオディスプレイ１５へ書き込む。このＷｒｉｔｅ動作は、図３においてｂｕｆｆｅｒ１−＞ｖｉｄｅｏとして示される。
図２の構成はダブルバッファ方式であるので、もう１つのバッファ（ｂｕｆｆｅｒ２）２２をバッファ２１と同時に使用することができる。即ちバッファ２１からビデオディスプレイ１５への書き込みと平行して、ＲＡＭ１３から次のデータを読み出してバッファ２２に格納する（ＲＡＭ−＞ｂｕｆｆｅｒ２）。バッファ２２に格納されたデータは、ＲＡＭ１３からデータを読み出してバッファ２１に格納するのと並行して、ビデオディスプレイ１５に書き込まれる（ｂｕｆｆｅｒ２−＞ｖｉｄｅｏ）。
このように、デュアルバスシステムにおけるダブルバッファ方式のデータ転送においては、２つのバスと２つのバッファを利用することにより、１つのバッファを利用するシングルバッファの場合と比較して、スレーブデバイス間の転送速度を２倍にすることができる。
上述のダブルバッファ方式では、シングルバッファ方式と比較して２倍の情報を記憶しておく必要があり、多くのチップ面積を消費することになる。また一般にシステム内に存在するスレーブデバイスのうち、ダブルバッファ方式により初めて実現可能な程の高い転送性能を必要とするデバイスはそれほど多くはない。従ってダブルバッファ方式には、多くのチップ面積を必要とするというデメリットが存在する割には、データ転送の高速性というメリットを享受することができる場合が限られている。
以上を鑑みて、本発明は、通常はシングルバッファとして動作し、必要に応じてダブルバッファ方式として動作し高速データ転送を実現可能なデータ転送装置を提供することを目的とする。
【特許文献１】    特開平１−２２９３５３
【特許文献２】    特開昭６４−７８３５１
【発明の開示】
本発明によるデータ転送装置は、第１の動作モードにおいて第１のバッファを中継して第１のデータ転送を実行する第１のチャネルユニットと、該第１の動作モードにおいて第２のバッファを中継して該第１のデータ転送とは異なる第２のデータ転送を実行する第２のチャネルユニットを含み、第２の動作モードにおいて少なくとも該第１のバッファと該第２のバッファを含む複数のバッファを順次選択し、転送元から読み出すデータを該順次選択したバッファを中継して転送先に転送することで、該転送元からのデータ読み出しと該転送先へのデータ書き込みを並行して実行するよう構成されることを特徴とする。
上記データ転送装置では、高速データ転送が必要とされない場合には、第１の動作モードにおいて各チャネルが別個のチャネルとして動作して別々のデータ転送を実現する。そして高速データ転送が必要となった場合には、第２の動作モードにおいてデータ読み出し動作とデータ書き込み動作とを並行して実行し、ダブルバッファ方式データ転送を実現する。従って、高速データ転送の必要がない場合には、シングルバッファ方式の複数のチャネルとして効率的なデータ転送を実現し、高速データ転送が必要な場合には、ダブルバッファ方式の単一のチャネルを実現して高速なデータ転送を実行する。このようにして、ダブルバッファ方式のデメリットを低減しながらも、ダブルバッファ方式のデータ転送の高速性というメリットを享受することができる。
【図面の簡単な説明】  図１は、アドレス空間におけるスレーブデバイスの割り当てを示すアドレスマップである。
図２は、デュアルバスシステムにおけるダブルバッファ方式のデータ転送動作を説明するための図である。
図３は、ＲＡＭからビデオディスプレイへのＤＭＡデータ転送動作を示すタイミング図である。
図４は、本発明によるＤＭＡコントローラ（データ転送装置）を説明するための図である。
図５は、ＲＡＭからビデオディスプレイへのダブルバッファ方式データ転送動作を示すタイミング図である。
図６は、第１のチャネルがＲＡＭからＵＡＲＴへのＤＭＡデータ転送を実行し、第２のチャネルがＲＡＭからビデオディスプレイへのＤＭＡデータ転送を実行する動作を説明するための図である。
図７は、図６に示す２つのチャネルによるデータ転送動作を示すタイミング図である。
図８は、２つのチャネルが１つのチャネルとして動作してダブルバッファ方式データ転送を実現する構成の実施例を示す図である。
図９は、図８のデータ転送動作を示すタイミング図である。
図１０は、２つのチャネルが１つのチャネルとして動作してダブルバッファ方式データ転送を実現する構成の別の実施例を示す図である。
図１１は、図８のデータ転送動作を示すタイミング図である。
図１２は、本発明による高速データ転送の別の実施例について説明する図である。
図１３は、ＲＡＭからビデオディスプレイへのダブルバッファ方式データ転送動作を示すタイミング図である。
【発明を実施するための最良の形態】  以下に、本発明の実施例を添付の図面を用いて詳細に説明する。
図４は、本発明によるＤＭＡコントローラ（データ転送装置）を説明するための図である。
本発明によるＤＭＡコントローラ（ＤＭＡＣ）３０は、図４に示されるようにデュアルバスシステムにおいて使用される。図４のバスシステムは、ＤＭＡＣ３０、バス１１、バス１２、ＲＡＭ１３、ＲＯＭ１４、ビデオディスプレイ１５、及びＵＡＲＴ１６を含む。ＲＡＭ１３及びＲＯＭ１４はバス１１を介してＤＭＡＣ３０に接続され、ビデオディスプレイ１５及びＵＡＲＴ１６はバス１２を介してＤＭＡＣ３０に接続される。
ＤＭＡＣ３０には、複数のチャネル（チャネルユニット）３１−１乃至３１−Ｎが実装され、チャネル毎にバッファが１つ設けられる。例えば、チャネル３１−１にはバッファ３２−１が設けられ、チャネル３１−２にはバッファ３２−２が設けられる。ＤＭＡＣの各チャネルには、アドレスを設定するための２つのレジスタＳ及びレジスタＤが設けられる。レジスタＳが転送元であるスレーブデバイス内の位置を示すアドレスを格納し、レジスタＤが転送先のスレーブデバイス内の位置を示すアドレスを格納する。
図４の例では、チャネル３１−１及びチャネル３１−２の双方が、ＲＡＭ１３からビデオディスプレイ１５へのＤＭＡデータ転送を実行する。これによりチャネル３１−１及びチャネル３１−２が仮想的に１つのチャネルとして動作し、２つのバッファ３２−１及び３２−２を利用したダブルバッファ方式データ転送を実行する。
図５は、ＲＡＭ１３からビデオディスプレイ１５へのダブルバッファ方式データ転送動作を示すタイミング図である。
まずＤＭＡＣ３０のチャネル３１−１が、ＲＡＭ１３へＲｅａｄ要求を送出し、Ｒｅａｄ要求の結果としてＲＡＭ１３から送られてきたデータをバッファ３２−１へ格納する。このＲｅａｄ動作は、図５においてＲＡＭ−＞ｂｕｆｆｅｒ１として示される。Ｒｅａｄ転送が完了したところで、チャネル３１−１からチャネル３１−２に奇数読み出し完了信号を送出し、チャネル３１−２にデータ転送を開始するよう指示する（図５の矢印１及び矢印３）。これと同時に、チャネル３１−１はバッファ３２−１に格納された情報をビデオディスプレイ１５へ書き込む動作を開始する（図５の矢印２）。このＷｒｉｔｅ動作は、図５においてｂｕｆｆｅｒ１−＞ｖｉｄｅｏとして示される。
チャネル３１−２は、奇数読み出し完了信号のアサートを検知し、ＲＡＭ１３へＲｅａｄ要求を送出する。これにより、ＲＡＭ１３から次のデータを読み出してバッファ３２−２に格納する（ＲＡＭ−＞ｂｕｆｆｅｒ２）。この動作は、チャネル３１−１がバッファ３２−１に格納された情報をビデオディスプレイ１５へ書き込む動作（ｂｕｆｆｅｒ１−＞ｖｉｄｅｏ）と並行して実行される。ＲＡＭ１３からバッファ３２−２への転送が完了すると、チャネル３１−２は偶数読み出し完了信号を送出し、チャネル３１−１にデータ転送を開始するよう指示する（図５の矢印４及び７）。チャネル３１−１は、書き込みの完了（矢印６）と偶数読み出し完了信号のアサート（矢印７）とを契機として、ＲＡＭ１３に対して次のＲｅａｄ要求を出して読み出し動作を開始する。
チャネル３１−１がＲＡＭ１３からデータを読み出してバッファ３２−１に格納する（ＲＡＭ−＞Ｂｕｆｆｅｒ１）のと並行して、チャネル３１−２は、バッファ３２−２に格納されたデータをビデオディスプレイ１５に書き込む（ｂｕｆｆｅｒ２−＞ｖｉｄｅｏ）。
このようにして２つのチャネルは、交互に自らのバッファを使用することで、仮想的に１つのチャネルとして動作してダブルバッファ方式データ転送を実行する。これにより必要に応じて高い転送性能を実現することができる。
また何れのチャネルによる転送をバスへ送出するかを決める優先順位制御に、ラウンドロビンや回転優先順位を使用している場合、２つのチャネルを１チャネルとして利用する上記データ転送は、他のチャネルによるデータ転送よりも２倍多くの優先権を得ることができる。従って、高い転送レートを確保しなければならないスレーブデバイスについてデータ転送する場合に、確実に２倍の転送レートを実現することができるという利点がある。
図４に示すＤＭＡＣ３０においては、必要に応じて２つのチャネルが仮想的に１つのチャネルとして動作してダブルバッファ方式データ転送を実行する。高速データ転送が必要とされない場合には、各チャネルは、それぞれが別個のチャネルとして別々のデータ転送動作を実行する。
図６は、チャネル３１−１がＲＡＭ１３からＵＡＲＴ１６へのＤＭＡデータ転送を実行し、チャネル３１−２がＲＡＭ１３からビデオディスプレイ１５へのＤＭＡデータ転送を実行する動作を説明するための図である。
図７は、図６に示す２つのチャネルによるデータ転送動作を示すタイミング図である。
まずＤＭＡＣ３０のチャネル３１−１は、ＲＡＭ１３へＲｅａｄ要求を出す。Ｒｅａｄ要求の結果、得られた情報をチャネル３１−１のバッファ３２−１へ格納する（ＲＡＭ−＞ＣＨ１）。その後チャネル３１−１は、ＵＡＲＴ１６へＷｒｉｔｅ要求を出し、バッファ３２−１の内容をＵＡＲＴ１６に書き込む（ＣＨ１−＞ＵＡＲＴ）。
チャネル３１−１がＵＡＲＴ１６へ書き込み動作を行なうのと並行して、チャネル３１−２がＲＡＭ１３へＲｅａｄ要求を出し、読み出した情報をバッファ３２−２へ格納する（ＲＡＭ−＞ＣＨ２）。その後、チャネル３１−２は、ビデオディスプレイ１５へバッファ３２−２の内容を書き込む（ＣＨ２−＞Ｖｉｄｅｏ）。
このように、高速データ転送が必要とされない場合には、各チャネルが別個のチャネルとして動作して別々のデータ転送を実現する。そして高速データ転送が必要となった場合には、前述のように、２つのチャネルが仮想的に１つのチャネルとして動作して、ダブルバッファ方式データ転送を実行する。従って、高速データ転送の必要がない場合には、シングルバッファ方式の複数のチャネルとして効率的なデータ転送を実現し、高速データ転送が必要な場合には、ダブルバッファ方式の単一のチャネルを実現して高速なデータ転送を実行する。このようにして、ダブルバッファ方式のデメリットを低減しながらも、ダブルバッファ方式のデータ転送の高速性というメリットを享受することができる。
図８は、２つのチャネルが１つのチャネルとして動作してダブルバッファ方式データ転送を実現する構成の実施例を示す図である。
図８においてＤＭＡＣ３０には、複数のチャネル３１−１乃至３１−Ｎが実装され、チャネル毎にバッファが１つ設けられる。また各チャネルには、転送元レジスタ４１、転送先レジスタ４２、アドレスインクリメントモジュール４３、及びアドレスインクリメントモジュール４４が設けられる。転送元レジスタ４１は当該チャネルが実行するデータ転送の転送元のアドレスを格納し、転送先レジスタ４２は当該チャネルが実行するデータ転送の転送先のアドレスを格納する。アドレスインクリメントモジュール４３は、転送元レジスタ４１の内容を＋２して更新する。またアドレスインクリメントモジュール４４は、転送先レジスタ４２の内容を＋２して更新する。
ＤＭＡＣにおいては、転送元アドレス及び転送先アドレスをインクリメントしながらデータの転送を行なう。通常は、１回のバッファ転送動作で読み出し又は書き込みされる転送データサイズの分だけ、アドレスをインクリメント（＋１）する。それに対して図８の実施例では、２つのチャネルがそれぞれ転送サイズの２倍づつアドレスをインクリメント（＋２）する。
この実施例の構成では、バッファを制御するコントローラの構成を殆ど変えることなく、アドレスインクリメントモジュールを少し改造するだけで、ダブルバッファ動作を実現することができる。なおアドレスインクリメントモジュールは、シングルバッファ方式のデータ転送にも対応するために＋１のアドレスインクリメントも実行可能であり、＋１のインクリメントと＋２のインクリメントとを切り換えられるように構成される。
図９は、図８のデータ転送動作を示すタイミング図である。
なおチャネル３１−１の転送元レジスタ４１の内容はＳｒｃ１として示し、チャネル３１−１の転送先レジスタ４２の内容はＤｅｓｔ１として示す。チャネル３１−２の転送元レジスタ４１の内容はＳｒｃ２として示し、チャネル３１−２の転送先レジスタ４２の内容はＤｅｓｔ２として示す。
図９において、読み出し及び書き込み動作についてのデータの流れは図５と同一である。以下においては、読み出し及び書き込み動作とアドレス生成とを関連付けて説明する。まずチャネル３１−１がＳｒｃ１のアドレス（０）に対してＲｅａｄ動作を実行する（ＲＡＭ−＞Ｂｕｆｆｅｒ１）。このＲｅａｄ動作の完了に応答して（矢印１）、Ｓｒｃ１の値に２を加算して加算結果（２）でＳｒｃ１を更新する。同様に、チャネル３１−２がＳｒｃ２のアドレス（１）に対してＲｅａｄ動作を行い（ＲＡＭ−＞Ｂｕｆｆｅｒ２）、その完了に応答して（矢印２）、Ｓｒｃ２の値に２を加算して加算結果（３）でＳｒｃ２を更新する。
チャネル３１−２のＲｅａｄ動作と並行して、チャネル３１−１はＤｅｓｔ１のアドレス（１０００）に対してＷｒｉｔｅ動作を行う（Ｂｕｆｆｅｒ１−＞Ｖｉｄｅｏ）。チャネル３１−１のＷｒｉｔｅ動作の完了に応答して（矢印３）、Ｄｅｓｔ１の値に２を加算して加算結果（１００２）でＤｅｓｔ１を更新する。同様に、チャネル３１−２のＷｒｉｔｅ動作（Ｂｕｆｆｅｒ２−＞Ｖｉｄｅｏ）の完了に応答して（矢印４）、Ｄｅｓｔ２の値に２を加算し加算結果（１００３）でＤｅｓｔ２を更新する。
図１０は、２つのチャネルが１つのチャネルとして動作してダブルバッファ方式データ転送を実現する構成の別の実施例を示す図である。図１０において、図８と同一の構成要素は同一の番号で参照し、その説明は省略する。
図１０の実施例では、チャネル３１−１のみがアドレスを出力するよう構成される。従って、アドレスインクリメントモジュール４３は転送元レジスタ４１の内容を＋１して更新し、アドレスインクリメントモジュール４４は転送先レジスタ４２の内容を＋１して更新する。即ち、１回のバッファ転送動作で読み出し又は書き込みされる転送データサイズの分だけ、アドレスをインクリメント（＋１）する。
このようにしてチャネル３１−１の転送元レジスタ４１及び転送先レジスタ４２のみを用いてアドレス指定しながら、チャネル３１−１及びチャネル３１−２が、バッファ３２−１とバッファ３２−２とを用いてダブルバッファ方式のデータ転送を実現する。この実施例では、チャネル３１−１が双方のバッファを制御可能なようにＤＭＡＣ３０を構成する必要があるが、アドレスインクリメントモジュールには＋２のインクリメントの構成を設ける必要がない。
図１１は、図８のデータ転送動作を示すタイミング図である。
まずチャネル３１−１がＳｒｃ１のアドレス（０）に対してＲｅａｄ動作を実行する（ＲＡＭ−＞Ｂｕｆｆｅｒ１）。このＲｅａｄ動作の完了に応答して（矢印１）、Ｓｒｃ１の値に１を加算して加算結果（１）でＳｒｃ１を更新する。次にチャネル３１−２がＳｒｃ１のアドレス（１）に対してＲｅａｄ動作を実行する（ＲＡＭ−＞Ｂｕｆｆｅｒ２）。その完了に応答して（矢印２）、チャネル３１−１がＳｒｃ１の値に１を加算して加算結果（２）でＳｒｃ１を更新する。この更新は、チャネル３１−２からチャネル３１−１への偶数読み出し完了信号に応答して実行するようにすればよい。
チャネル３１−２のＲｅａｄ動作と並行して、チャネル３１−１はＤｅｓｔ１のアドレス（１０００）に対してＷｒｉｔｅ動作を行う（Ｂｕｆｆｅｒ１−＞Ｖｉｄｅｏ）。チャネル３１−１のＷｒｉｔｅ動作の完了に応答して（矢印３）、Ｄｅｓｔ１の値に１を加算して加算結果（１００１）でＤｅｓｔ１を更新する。次にチャネル３１−２のＷｒｉｔｅ動作（Ｂｕｆｆｅｒ２−＞Ｖｉｄｅｏ）が完了すると、これに応答して、チャネル３１−２からチャネル３１−１へ偶数書き込み完了信号を供給する。この偶数書き込み完了信号のアサートに応答して（矢印４）、チャネル３１−１がＤｅｓｔ１の値に１を加算し加算結果（１００２）でＤｅｓｔ１を更新する。
図１２は、本発明による高速データ転送の別の実施例について説明する図である。
本発明によるＤＭＡコントローラ（ＤＭＡＣ）５０は、図１２に示されるようにデュアルバスシステムにおいて使用される。図１２のバスシステムは、ＤＭＡＣ５０、バス１１、バス１２、ＲＡＭ１３、ビデオディスプレイ１５、ＵＡＲＴ１６、及びＣＰＵ６０を含む。ＲＡＭ１３はバス１１を介してＤＭＡＣ５０に接続され、ビデオディスプレイ１５及びＵＡＲＴ１６はバス１２を介してＤＭＡＣ５０に接続される。
ＤＭＡＣ５０には、複数のチャネル５１−１乃至５１−Ｎが実装され、チャネル毎にバッファ番号キューが１つ設けられる。例えば、チャネル５１−１にはバッファ番号キュー５２−１が設けられ、チャネル５１−２にはバッファ番号キュー５２−２が設けられる。また各チャネルとは別に、バッファ５３−１乃至５３−Ｎが設けられる。また有効フラグ５４−１乃至５４−Ｎが設けられ、対応するバッファ５３−１乃至５３−Ｎが利用可能か否かを示す。
図１３は、ＲＡＭ１３からビデオディスプレイ１５への高速データ転送動作を示すタイミング図である。
まずチャネル５１−１が、有効フラグ５４−１乃至５４−Ｎをチェックして空いているバッファを見つけ、そのバッファの番号（Ｂｕｆｆｅｒ１）をバッファ番号キュー５２−１へ格納する。更に、ＲＡＭ１３から読み出したデータを当該バッファ（キュー最後尾の番号のバッファ）へ格納する（ＲＡＭ−＞Ｂｕｆｆｅｒ１）。続いて同様に、チャネル５１−１が、有効フラグ５４−１乃至５４−Ｎをチェックして空いているバッファを見つけ、そのバッファの番号（Ｂｕｆｆｅｒ２）をバッファ番号キュー５２−１へ格納する。更に、ＲＡＭ１３から読み出した次のデータを当該バッファ（キュー最後尾の番号のバッファ）へ格納する（ＲＡＭ−＞Ｂｕｆｆｅｒ２）。
ビデオディスプレイ１５から書き込み要求が到来すると、チャネル５１−１は、ビデオディスプレイ１５に対する書き込みを行う。この時、バッファ番号キュー５２−１から出力される番号（キューの先頭の番号）が指し示すバッファから、ビデオディスプレイ１５にデータを送出する（Ｂｕｆｆｅｒ１−＞Ｖｉｄｅｏ）。なお図１３に示されるように、チャネル５１−１は、ＲＡＭ１３からのデータ読み出しと、ビデオディスプレイ１５へのデータ書き込みとを並行して実行することができる。
図１３の例において、チャネル５１−１は、バッファとしてＢｕｆｆｅｒ１、Ｂｕｆｆｅｒ２、Ｂｕｆｆｅｒ３を順に使用した後、Ｂｕｆｆｅｒ１を再度使用し、その後Ｂｕｆｆｅｒ２を使用してから更にＢｕｆｆｅｒ１を再度使用している。本実施例におけるデータ転送においては、有効フラグをチェックして随時利用可能なバッファを特定するので、状況に応じて使用するバッファが変化していくことになる。
また各チャネルは、独自にバッファを獲得して、別々のデータ転送動作を実行してよい。
上記の実施例では、複数のバッファを包括的に管理し、必要に応じて各チャネルがバッファを獲得して使用する。この方法では、バッファ制御が図８や図１０の方式に比較して複雑になるが、２つのバッファが利用可能な状況であれば、ダブルバッファ方式のデータ転送と同様の効果を得ることができる。
また利用可能であれば２つ以上のバッファを使用することが可能である。従って、データ転送途中で他のマスターのアクセス等により邪魔されて転送元からＤＭＡＣ５０への転送が中断されても、複数のバッファに格納されるデータを転送先に送出し続けることが可能である。即ち、図１３に示されるように、例えばＣＰＵ６０によるＲＡＭ１３へのアクセス（ＲＡＭ−＞ＣＰＵ）が複数回実行され、ＲＡＭ１３からＤＭＡＣ５０への転送が度々滞った場合でも、ビデオディスプレイ１５へのデータ転送が滞る可能性を低減することができる。
この実施例の構成は、あるチャネルが全てのバッファを確保してしまうと、別のチャネルのＲｅａｄ転送が行なえないという問題がある。一般に、転送要求からデータ受け取りまでの動作は所定時間内に実行すべきという制約がある場合が多く、上記問題を解決するためには結局各チャネル毎に１つのバッファが対応するように制御することが簡単な解決策である。この場合には、上記図４及び図６の動作と本質的に同様となる。
以上、本発明を実施例に基づいて説明したが、本発明は上記実施例に限定されるものではなく、特許請求の範囲に記載の範囲内で様々な変形が可能である。
【図１】
2004077304.tif 000003
【図２】
2004077304.tif 000004
【図３】
2004077304.tif 000005
【図４】
2004077304.tif 000006
【図５】
2004077304.tif 000007
【図６】
2004077304.tif 000008
【図７】
2004077304.tif 000009
【図８】
2004077304.tif 000010
【図９】
2004077304.tif 000011
【図１０】
2004077304.tif 000012
【図１１】
2004077304.tif 000013
【図１２】
2004077304.tif 000014
【図１３】
2004077304.tif 000015
【国際調査報告】
2004077304.tif 000016
2004077304.tif 000017