(57)【要約】【課題】  再利用性の高いシンプルな仕様で、且つ回路規模の小さいＤＭＡコントローラを複数接続して多次元アドレッシングを実現する。【解決手段】  多次元アドレッシングをサポートする第１のＤＭＡコントローラと、メモリライト専用の第２のＤＭＡコントローラと、メモリリード専用の第３のＤＭＡコントローラとを含むデータ転送システムのデータ転送方法であって、第３のＤＭＡコントローラが所定のメモリからデータ転送を開始するアドレス及び転送長を示す情報を読み出し、第２のＤＭＡコントローラへ転送させ、第２のＤＭＡコントローラが第３のＤＭＡコントローラから転送された情報を第１のＤＭＡコントローラへ書き込み、第１のＤＭＡコントローラにて書き込まれた情報に基づいてデータ転送を実行させる。そして、所定のメモリにデータ転送を開始するアドレス及び転送長を示す情報を複数個記憶させておき、不連続なメモリ領域に対するデータ転送を可能とする。【選択図】      図９
2006126938.tif 000002
【特許請求の範囲】
【請求項１】
多次元アドレッシングをサポートする第１のＤＭＡコントローラと、メモリライト専用の第２のＤＭＡコントローラと、メモリリード専用の第３のＤＭＡコントローラとを含むデータ転送システムであって、
前記第１、第２、第３のＤＭＡコントローラは、システムバスに接続するための第１のインターフェースと、周辺デバイスとの間でデータ転送を行う第２のインターフェースと、先頭アドレスレジスタと転送長レジスタとを有し、転送終了後、外部へ転送終了信号を生成する手段と、ソフトウェアによる起動以外に外部トリガによりデータ転送を起動する手段とを有し、
前記第１のＤＭＡコントローラの前記転送終了信号を前記第２のＤＭＡコントローラの外部トリガ入力に接続し、前記第２及び第３のＤＭＡコントローラを前記第２のインターフェースを介して直接、或いは選択手段を介して接続する手段を有し、
前記選択手段を介して接続した場合は、ソフトウェアによって周辺デバイスとの接続を有効にするか、前記第２及び第３のＤＭＡコントローラの間の接続を有効にするかを選択可能とすることを特徴とするデータ転送システム。
【請求項２】
複数のＤＭＡコントローラから前記転送終了信号を入力し、前記転送終了信号を全ての外部トリガ信号の出力候補として選択可能な選択手段と、前記選択手段の選択信号を生成するための生成手段とを有することを特徴とする請求項１記載のデータ転送システム。
【請求項３】
多次元アドレッシングをサポートする第１のＤＭＡコントローラと、メモリライト専用の第２のＤＭＡコントローラと、メモリリード専用の第３のＤＭＡコントローラとを含むデータ転送システムのデータ転送方法であって、
前記第３のＤＭＡコントローラが所定のメモリからデータ転送を開始するアドレス及び転送長を示す情報を読み出し、前記第２のＤＭＡコントローラへ転送させる工程と、
前記第２のＤＭＡコントローラが前記第３のＤＭＡコントローラから転送された情報を第１のＤＭＡコントローラへ書き込み、前記第１のＤＭＡコントローラにて書き込まれた情報に基づいてデータ転送を実行させる工程とを有し、
前記所定のメモリに前記データ転送を開始するアドレス及び転送長を示す情報を複数個記憶させておき、不連続なメモリ領域に対するデータ転送を可能とすることを特徴とするデータ転送システムのデータ転送方法。
【請求項４】
請求項３記載のデータ転送システムのデータ転送方法をコンピュータに実行させるためのプログラム。
【請求項５】
請求項４記載のプログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェアの介在を極力減らして多次元アドレッシングを実現する技術に関する。
【背景技術】
【０００２】
従来のダイレクトメモリアクセス（ＤＭＡ）コントローラでは、不連続なメモリ領域に対するデータ転送のアドレッシングを実現するために、いくつかの方法が用いられている。以下に３種類の方法を挙げる。
【０００３】
最もシンプルな方法としては、アドレスが連続する範囲については１度のＤＭＡ転送で行い、不連続なアドレスに飛ばす必要がある場合は再びＤＭＡの再設定、再起動をするというやり方がある。この方法は、転送速度に対する要求があまり高くない場合やアドレスが連続する領域がそれなりの大きさを持つ場合、大きな影響はでないが、ＣＰＵの介在が増え過ぎるとパフォーマンスは低下する。
【０００４】
そこで、ＣＰＵの介在を減らす方法として、ＤＭＡコントローラ（以下、ＤＭＡＣ）内に複数のオフセットアドレスレジスタを用意し、ある設定した転送長に達すると自動的にオフセットアドレスレジスタに設定された分だけアドレスをジャンプさせ、ＤＭＡが再びある設定した転送長に達すると次は別のオフセットアドレスレジスタの値分だけアドレスをジャンプさせるという方法が良く用いられている。
【０００５】
上述の方法によれば、ＤＭＡＣ自体が不連続な領域に対してアドレスをジャンプさせることができるので、ＣＰＵの介在も減り、パフォーマンスを最大限まで向上させることができる。但し、この方法の場合、１つのＤＭＡＣ内にオフセットレジスタをいくつ用意すればＩＰ化された画像処理ブロックや通信処理ブロックなどが要求する次元数（アドレスが不連続な領域に飛ぶ回数）を満足できるかというのを断定するのが非常に難しいという問題がある。
【０００６】
例えば、今回の特定用途向け集積回路（ＡＳＩＣ）に搭載する画像処理では、４次元で充分ということで４次元アドレッシング対応のＤＭＡＣを設計したところ、次期ＡＳＩＣでは６次元アドレッシングが必須な画像処理モジュールを採用する場合、これに対応するＤＭＡＣを新たに設計しなくてはならない。これでは限られた開発期間中に設計、検証を行うことは厳しいと思われる。
【０００７】
このような次元数（アドレスが不連続な領域に飛ぶ回数）の変更に影響を受けないＤＭＡＣとして、不連続なアドレスへジャンプする際に、ＤＭＡパラメータ、特にオフセットアドレス値をメモリ領域からリードして自らＤＭＡパラメータを書き換えることのできるものがある。これは、更新予定のＤＭＡパラメータを予めメモリ領域に置いておくことで実現可能である。
【０００８】
この方法によれば、次元数（アドレスが不連続な領域に飛ぶ回数）が増えてもソフトの介在なしで不連続アドレッシングが可能であり、且つＤＭＡＣ自体の仕様を変えずに使用できるので、再利用性も高いと考えられる。
【０００９】
ＤＭＡＣによるデータ転送のアドレッシングに関する先行技術として、例えば特許文献１〜５が提案されている。
【特許文献１】特開平05-120205号公報
【特許文献２】特開平07-306825号公報
【特許文献３】特開平05-108548号公報
【特許文献４】特開平07-210496号公報
【特許文献５】特開平05-120205号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
しかしながら、一般的に、上記従来例のようなアドレッシング方法のＤＭＡＣの設計は難易度が高く、バグを内在させてしまう仕様であると言える。また、再利用性は高いが、この冗長な機能を持ったＤＭＡＣを、多次元アドレッシングを必要としない通常デバイスに対しても使用することで、回路規模が大きくなってしまうという問題もある。
【００１１】
本発明は、上記課題を解決するためになされたものであり、再利用性の高いシンプルな仕様で、且つ回路規模の小さいＤＭＡコントローラを複数接続して多次元アドレッシングを実現することを目的とする。
【課題を解決するための手段】
【００１２】
本発明は、多次元アドレッシングをサポートする第１のＤＭＡコントローラと、メモリライト専用の第２のＤＭＡコントローラと、メモリリード専用の第３のＤＭＡコントローラとを含むデータ転送システムであって、前記第１、第２、第３のＤＭＡコントローラは、システムバスに接続するための第１のインターフェースと、周辺デバイスとの間でデータ転送を行う第２のインターフェースと、先頭アドレスレジスタと転送長レジスタとを有し、転送終了後、外部へ転送終了信号を生成する手段と、ソフトウェアによる起動以外に外部トリガによりデータ転送を起動する手段とを有し、前記第１のＤＭＡコントローラの前記転送終了信号を前記第２のＤＭＡコントローラの外部トリガ入力に接続し、前記第２及び第３のＤＭＡコントローラを前記第２のインターフェースを介して直接、或いは選択手段を介して接続する手段を有し、前記選択手段を介して接続した場合は、ソフトウェアによって周辺デバイスとの接続を有効にするか、前記第２及び第３のＤＭＡコントローラの間の接続を有効にするかを選択可能とすることを特徴とする。
【００１３】
また、本発明は、多次元アドレッシングをサポートする第１のＤＭＡコントローラと、メモリライト専用の第２のＤＭＡコントローラと、メモリリード専用の第３のＤＭＡコントローラとを含むデータ転送システムのデータ転送方法であって、前記第３のＤＭＡコントローラが所定のメモリからデータ転送を開始するアドレス及び転送長を示す情報を読み出し、前記第２のＤＭＡコントローラへ転送させる工程と、前記第２のＤＭＡコントローラが前記第３のＤＭＡコントローラから転送された情報を第１のＤＭＡコントローラへ書き込み、前記第１のＤＭＡコントローラにて書き込まれた情報に基づいてデータ転送を実行させる工程とを有し、前記所定のメモリに前記データ転送を開始するアドレス及び転送長を示す情報を複数個記憶させておき、不連続なメモリ領域に対するデータ転送を可能とすることを特徴とする。
【発明の効果】
【００１４】
本発明によれば、再利用性の高いシンプルな仕様で、且つ回路規模の小さいＤＭＡコントローラを複数接続して多次元アドレッシングを実現することができる。
【発明を実施するための最良の形態】
【００１５】
以下、図面を参照しながら発明を実施するための最良の形態について詳細に説明する。本実施形態では、ダイレクトメモリアクセス（ＤＭＡ）コントローラ（以下、ＤＭＡＣ）単体の構成及び動作を詳細に説明し、次に、当該ＤＭＡＣを複数使用するシステムの構成及び動作について説明する。
【００１６】
本実施形態におけるＤＭＡＣにはライトＤＭＡＣとリードＤＭＡＣの２種類が存在する。このライトＤＭＡＣはＩＯデバイスからのデータをＤＭＡバスで受信し、システムバスを介してメモリ空間又はＩＯ空間へライトする専用ＤＭＡＣである。一方、リードＤＭＡＣはその逆の動作を行うものであり、システムバスを介してメモリ空間又はＩＯ空間からデータを受信し、ＤＭＡバスを介してＩＯデバイスへ送信する専用ＤＭＡＣである。
【００１７】
図１は、本実施形態におけるＤＭＡＣの内部構成の一例を示す概略図である。ここでは代表してライトＤＭＡＣのみを示している。図１に示すように、ライトＤＭＡＣ１００は、バスマスタＩ／Ｆ１０２、ＤＭＡバスＩ／Ｆ１０３、ＤＭＡ制御ブロック１０６、制御レジスタブロック（バススレーブＩ／Ｆを有する）１０５、データＦＩＦＯ１０４で構成されている。
【００１８】
ＤＭＡ制御ブロック１０６は、不図示のＣＰＵ等のレジスタアクセスによるＤＭＡ起動要求（Start116）や外部トリガ（Start113）によるＤＭＡ起動要求を受けてＤＭＡを開始し、ＤＭＡが終了すると、転送終了信号（End114）や割り込み信号（Int115）を出力するブロックである。
【００１９】
図２は、図１に示す信号とＤＭＡ実行に関する関係を示す図である。図２に示すように、ＤＭＡ起動要求（Start116）や外部トリガ（Start113）が１サイクルで入力されると、ＤＭＡ動作が実行される。その後、ＤＭＡ動作が終了すると、転送終了信号（End114）を１サイクルアサートする。尚、割り込み信号（Int115）は転送終了信号と同時にアサートされるが、割り込み要因がクリアされるまで“１”を保持する。
【００２０】
ここで図１に戻り、制御レジスタブロック１０５は、内部にバススレーブＩ／Ｆを有し、バスマスタからアクセス制御が行われる制御レジスタ（詳細は後述する）で構成されている。データＦＩＦＯ１０４は、ＤＭＡバスを介してＩＯデバイスから受信したデータを格納するためのＦＩＦＯである。
【００２１】
バスマスタＩ／Ｆ１０２は、データＦＩＦＯ１０４の空き状態や、アドレスのアラインメント或いは残転送長などを監視し、システムバス１０１に対して最適なバスコマンドの要求を出力するブロックである。また、バスマスタＩ／Ｆ１０２は発行するバスアドレスを生成するカウンタを有するアドレス生成ブロック１０７、システムバス１０１へのバスリクエストを発行するバス要求発行制御ブロック１０８、システムバス１０１に出力するデータをデータＦＩＦＯ１０４から取り出して送信するデータ制御ブロック１０９で構成されている。
【００２２】
ＤＭＡバスＩ／Ｆ１０３は、ＤＭＡバスのプロトコルである「valid110」、「data111」、「busy112」信号を制御し、データＦＩＦＯ１０４へ「data111」を書き込むブロックである。
【００２３】
図３は、ＤＭＡバスにおけるプロトコルの仕様を説明するための図である。データ送信元はvalidが“１”の時に有効データdataを出力するので、受信側はこれを受け取らなくてはならない。但し、受信側の事情でデータを受け取れない場合は、受信側はbusy信号を“１”にすることで、データ受信を拒否できる。その間、送信元はvalidと有効データを保持し続ける。
【００２４】
尚、リードＤＭＡＣの内部構成は図示していないが、ライトＤＭＡＣの内部構成と同じである。また、リードＤＭＡＣでは、データの流れが逆になるので、ＤＭＡバスＩ／Ｆ、バスマスタＩ／Ｆなどの制御が若干異なる。
【００２５】
次に、上述したＤＭＡＣ内の制御レジスタブロック１０５における制御レジスタの仕様について説明する。
【００２６】
図４は、制御レジスタブロック１０５における制御レジスタの構成例を示す図である。図４に示すように、制御レジスタは２種類存在し、どちらも３２ビットで構成されている。そして、ライトＤＭＡＣ及びリードＤＭＡＣに共通である。
【００２７】
４０１はＤＭＡ先頭アドレスレジスタであり、ＤＭＡを開始する先頭アドレス（ＳＡ）を３２ビット幅のアドレス空間で指定するものである。また、初期値は「0x0000_0000」である。４０２はＤＭＡ制御レジスタであり、４つのフィールドで構成されている。また、初期値は「0x0000_0000」である。
【００２８】
ＤＭＡ制御レジスタ４０２において、０ビット目はＤＭＡ起動ビット（Ｓ）で、“１”を書くとＤＭＡを起動でき、ＤＭＡを実行中に“０”を書くとＤＭＡを強制終了できる。１ビット目は割り込みイネーブルビット（ＩＥ）で、“１”を書くとＤＭＡを終了後に、不図示の割り込みコントローラに対して割り込みを通知する。“０”を書くと割り込みはアサートされない。
【００２９】
２ビット目は割り込みステータスビット（ＩＳ）で、不図示の割り込みコントローラに対して出力する割り込み信号と対応している。割り込みイネーブル状態で、ＤＭＡが終了するとこのビットは“１”にセットされ、このビットに“０”を書くことでクリアされ、割り込み信号も“０”になる。また、割り込みディセーブル状態では、このビットは常に“０”である。
【００３０】
４ビット目〜３１ビット目までの上位２８ビットはＤＭＡ転送長フィールド（ＬＥＮ）で、単位はバイトである。その他の空ビットはリザーブ領域である。
【００３１】
ＤＭＡ先頭アドレスレジスタ４０１及びＤＭＡ制御レジスタ４０２の何れも、初期値は「0x0000_0000」で、ＤＭＡ先頭アドレスレジスタ４０１、ＤＭＡ制御レジスタ４０２の順でＩＯアドレス空間に連続して配置されている。
【００３２】
以上がＤＭＡＣ単体の仕様であり、非常にシンプルで、小規模な回路構成が可能であることが分かる。
【００３３】
次に、図５を用いて複数のライトＤＭＡＣ及びリードＤＭＡＣを使用したＤＭＡＣシステムについて説明する。
【００３４】
図５は、本実施形態におけるＤＭＡＣシステムの一例を示すブロック図である。図５に示すように、システム（アドレス、データ）バス１に接続されるバスマスタは４つあり、ＣＰＵ２１、ＤＭＡＣ５、ＤＭＡＣ６、ＤＭＡＣ７である。
【００３５】
一方、バススレーブとしてアービタ４、メモリコントローラ２、割り込みコントローラＩＮＴＣ２３、デバイス選択ブロック１１、ＩＯデバイス８、９、１０が存在する。
【００３６】
尚、全てのＤＭＡＣ５〜７は、バスマスタであるのに加えてバススレーブとしても動作する。また、ＤＭＡＣ５〜７は、上述したライトＤＭＡＣ（リードＤＭＡＣ）と同一仕様のＤＭＡＣである。そして、ＤＭＡＣ５はＩＯデバイス８とＤＭＡバス１９を介して直結されており、本発明の主題である多次元アドレッシングを行うべきＤＭＡＣとして定義されている。
【００３７】
図５では、ＤＭＡＣ５をライトＤＭＡＣとしているが、本来、多次元アドレッシングをサポートすべきＤＭＡＣにはＤＭＡＣがライトＤＭＡＣかリードＤＭＡＣかという制限はなく、リードＤＭＡＣであっても、図５に示す構成は変らないことになる。
【００３８】
ＤＭＡＣ６はライトＤＭＡＣであり、ＤＭＡバス１４と接続されている。ここでＤＭＡバス１４はＩＯデバイス９のＤＭＡバス１６とセレクタ（デマルチプレクサ）１３の出力であるＤＭＡバス１７の何れかがセレクタ（マルチプレクサ）１２でセレクトされたものである。ＤＭＡバス１７はリードＤＭＡＣであるＤＭＡＣ７と接続されているＤＭＡバス１５に対応している。
【００３９】
セレクタ１２及び１３のセレクト信号はデバイス選択ブロック１１で生成され、ＣＰＵ２１がレジスタ設定で切り替えている。切り替えるタイミングはＤＭＡバスがアクティブでない状態でなければならない。
【００４０】
ＤＭＡＣ７はリードＤＭＡＣであり、セレクタ１３を介してＩＯデバイス１０に接続されている。セレクタ１２は２入力のうち、選択された入力のみを出力するマルチプレクサであり、セレクタ１３は選択された出力番号のみに入力を通過させ、他方の出力にはインアクティブのレベルを通過させるデマルチプレクサである。また、図５中のＤＭＡバスの矢印はあくまでデータの流れを示したものであり、全てのバスの信号が矢印方向へ向いているわけではない。
【００４１】
多次元アドレッシング対象のＤＭＡＣ５のＤＭＡ転送終了信号（End）、即ち、図５の信号２０はライトＤＭＡＣであるＤＭＡＣ６のＤＭＡ外部トリガ（Start）と接続されている。
【００４２】
ＩＯデバイス８、９、１０は画像処理を行う専用のモジュール、又は外部デバイスとの間で通信を制御するためのモジュールである。このＩＯデバイスはＤＭＡバスプロトコルをサポートするためにＤＭＡバスインターフェース回路を内蔵している。
【００４３】
ＩＮＴＣ２２は割り込みコントローラであり、ＤＭＡＣ５、６、７からの割り込み信号２３、２４、２５のうち選択された割り込み要因のみを最終的な割り込み信号２６としてＣＰＵ２１へ通知する。
【００４４】
メモリコントローラ２は各バスマスタとＤＲＡＭ３との間でデータ転送を取り持つブロックである。そして、アービタ４は複数のマスタのバスリクエストを調停するモジュールである。
【００４５】
以上が、ＤＭＡＣ５が多次元アドレッシングＤＭＡを実行できる最小システムの構成である。
【００４６】
もしＤＭＡＣ５を多次元アドレッシングとして使用する場合、ＤＭＡＣ７のＤＭＡバス１５とＤＭＡＣ６のＤＭＡバス１４が接続されるように、セレクタ１２とセレクタ１３のセレクト信号を設定する必要がある。即ち、この場合、ＤＭＡバス１５とＤＭＡバス１７とＤＭＡバス１４が接続され、ＩＯデバイス９、１０が使用不可状態になる。ＤＭＡＣ６とＤＭＡＣ７は連携してＤＭＡＣ５の多次元アドレッシング機能を有効にする。
【００４７】
上述したＤＭＡＣシステムにおいて、ＤＭＡＣ５が多次元アドレッシングＤＭＡを行う簡単な動作を以下に説明する。
【００４８】
多次元アドレッシングを行いたいＤＭＡＣ５は、単体では１次元アドレッシングＤＭＡしか実行できない。そこで、他の２つのＤＭＡＣ６及びＤＭＡＣ７でＤＭＡＣ５が有している転送パラメータ（ＤＭＡ先頭アドレスレジスタ４０１、ＤＭＡ制御レジスタ４０２）を動的に書き換えることでＤＭＡＣ５の多次元アドレッシングを実現する。ここで、書き換えるレジスタのデータはメモリ領域内に予め配置しておくものとする。
【００４９】
リードＤＭＡＣであるＤＭＡＣ７がメモリ中の転送パラメータを順序通りにリードし、ＤＭＡバス１５（同ＤＭＡバス１４）を介してライトＤＭＡＣであるＤＭＡＣ６へ送る。これにより、ＤＭＡＣ６はこのデータ群をＤＭＡＣ５の制御レジスタに対して書き込む。ここで、ＤＭＡＣ６に設定されたＤＭＡ先頭アドレスはＤＭＡＣ５の制御レジスタのＩＯアドレスをポイントしておかなければならない。ＤＭＡＣ５のパラメータの更新はＤＭＡＣ５の１次元ＤＭＡが終了する度に発生する。このときＤＭＡＣ５のＤＭＡ転送終了信号（End）とＤＭＡＣ６の外部トリガ信号（Start）の接続関係が、ＤＭＡパラメータの更新ループを可能にしている。
【００５０】
尚、ＤＭＡＣ５が多次元アドレッシングを必要としない構成の場合、ＤＭＡＣ６とＩＯデバイス９が、ＤＭＡＣ７とＩＯデバイス１０が接続されるように、セレクタ１２、１３をセレクトすれば良い。この場合、ＤＭＡＣ６とＤＭＡＣ７は、通常のＩＯデバイスとのＤＭＡ転送が可能となる。
【００５１】
次に、具体的に不連続な転送領域を仮定し、どのようなレジスタの設定を行えば、仮定した不連続領域のアドレッシングが可能となるか、また、どのような手順でＤＭＡを起動すれば、仮定した不連続領域のアドレッシングが可能となるかについて説明する。
【００５２】
図６は、本実施形態における不連続領域を仮定した場合の一例を示す図である。図６に示すように、全てのＤＭＡ転送領域は５つの不連続領域（領域０、領域１、領域２、領域３、領域４）に分かれている。その領域内部では、アドレスは全て連続である。各領域中でＳＡｘ（ｘ＝０〜４）を先頭アドレスとして図の右向きへアドレッシングを行い、終端まで到達すると次の領域の先頭アドレスまでジャンプする。即ち、この不連続アドレスへのジャンプが本実施形態では４度行われる。それぞれの領域の転送範囲（転送バイト数）はＬＥＮｘで表される。
【００５３】
以上のような領域で転送を行うためには、図７に示すように、転送パラメータをメモリ（ＤＲＡＭ３）中に予め格納しておく必要がある。転送パラメータはメモリ中の「0x0001_0000」番地をベースアドレス（ＢＡ）として隙間無く全ての領域分配置される。また、配置する順番は、領域０のＤＭＡ先頭アドレスレジスタ、ＤＭＡ制御レジスタ、領域１のＤＭＡ先頭アドレスレジスタ、ＤＭＡ制御レジスタ、…というように、領域順、レジスタ順である。
【００５４】
ここで、ＤＭＡ先頭アドレスレジスタ（ＳＡ）には、各領域の先頭アドレス（ＳＡ０〜ＳＡ４）を指定する。ＤＭＡ制御レジスタの転送長フィールド（ＬＥＮ）には、各領域の転送長（ＬＥＮ０〜ＬＥＮ４）を指定する。スタートビット（Ｓ）は全ての領域で“１”を、割り込みイネーブルビット（ＩＥ）は最後の領域（領域４）を除いて“０”を、最後の領域のみ“１”を設定する。これはＤＭＡ転送が全ての領域での転送を終了したときの割り込みのみを検出するために、最後の領域のみの割り込みを有効にするためである。
【００５５】
尚、用途によって途中の割り込みを検出したければ、割り込みイネーブルフィールドを適宜“１”に設定すれば良い。割り込みステータスフィールドは同フィールドが“１”のとき“０”クリアしか作用しないので、割り込み要因をクリアしたいときのみ“０”で、それ以外は全て“１”を設定すると安全である。
【００５６】
このパラメータをリードＤＭＡＣ７が逐一リードしてライトＤＭＡＣ６へ送り、ライトＤＭＡＣ６がそのパラメータを多次元アドレッシングサポートＤＭＡＣ５の制御レジスタへ書き込むことになる。
【００５７】
図８は、各ＤＭＡＣの制御レジスタに設定すべき値を示す図である。まず、ＤＭＡＣ５のレジスタ値は全てＢＡをベースアドレスにするメモリ内に置かれているので、何も設定する必要はない。
【００５８】
次に、ＤＭＡＣ６のＤＭＡ先頭ベースアドレスレジスタ（ＳＡ）にはＤＭＡＣ５のレジスタベースアドレスである「0xF000_0000」を、ＤＭＡ制御レジスタの転送長フィールド（ＬＥＮ）に３２ビットレジスタ２個分の「0x8」を設定する。つまり、１度のＤＭＡでＤＭＡＣ５の２つのレジスタに書き込みを行うという設定である。各レジスタに割り当てられているアドレスは図中に示してある。
【００５９】
スタートビット（Ｓ）は“１”にして、最初の一度のＤＭＡのみソフトウェアによって起動させる必要がある。図５から分かるように、ＤＭＡＣ６の外部スタート（Start）はＤＭＡＣ５のＤＭＡ転送終了信号（End）に接続され、ＤＭＡＣ５のＤＭＡ終了によって起動するようになっているが、最初のＤＭＡＣ５の転送開始を設定するのはＤＭＡＣ６であるので、最初のＤＭＡＣ６の起動はソフトウェアでなければならない。また、割り込みイネーブルフィールドは“０”で構わない。
【００６０】
ＤＭＡＣ７のＤＭＡ先頭アドレスレジスタ（ＳＡ）は、ＤＭＡＣ５の転送領域パラメータが格納されたメモリ領域のベースアドレス（ＢＡ）の値を入れる。この場合、「0x0001_0000」である。
【００６１】
ＤＭＡ制御レジスタの転送長フィールド（ＬＥＮ）はメモリ内のパラメータの個数分をバイト換算したものであるので、「0x28」となる。スタートビットには“１”を設定する。割り込みイネーブルフィールドは“０”で構わない。このＤＭＡＣ７は、一度の多次元ＤＭＡＣで１度しか起動することはない。
【００６２】
図９は、図８の設定でＤＭＡ転送を行う場合の、時系列でのＤＭＡ転送の推移と起動の関係を示す図である。尚、図９には示していないが、ＤＭＡ転送を行う前に、ＣＰＵ２１からＤＲＡＭ３の任意のメモリ領域に対してＤＭＡＣ５の転送パラメータを配置する作業が必要である。
【００６３】
まず、ＣＰＵ２１がＤＭＡＣ６、ＤＭＡＣ７の転送パラメータを設定し、ＤＭＡを起動する。最初に動作するＤＭＡＣはＤＭＡＣ７で、メモリ領域からＤＭＡＣ７のパラメータ情報をリードしてくる。ここで、リードデータはＤＭＡＣ６に対してＤＭＡバス１５及び１４を介して送られる。ＤＭＡＣ６がＤＭＡＣ７より８バイト分のデータを受信すると、バスリクエストを発行して８バイト分のＤＭＡを行う。ここでターゲットはＤＭＡＣ５のレジスタアドレスである。
【００６４】
次に、ＤＭＡＣ６の８バイト分、つまり、ＤＭＡＣ５の先頭アドレスレジスタ及び制御レジスタの書き込みが終了すると同時に、ＤＭＡＣ５のＤＭＡが開始され、最初の領域の転送長（ＬＥＮ０）分のデータ転送が行われる。この間、ＤＭＡＣ６はＤＭＡバス１４側からのデータ受信は引き続き行うが、システムバス１に対してのデータ転送は完全に停止している。また、ＤＭＡＣ７はこの間を含めて設定された転送長分のＤＭＡを続けるが、ＤＭＡＣ６のＤＭＡが停止しているので、ＤＭＡＣ７のＤＭＡ自体も止まってしまう可能性がある。特に、ＤＭＡＣ６の内部に段数の少ないＦＩＦＯを有している場合、この状態が起こりやすい。逆に、複数段のＦＩＦＯを有している場合、ＤＭＡＣ７のＤＭＡ転送は図９に示すものより早い段階で終了するかもしれない。
【００６５】
その後、ＤＭＡＣ５が領域０のＤＭＡを終了すると、ＤＭＡＣ６に対して外部トリガをかけ、ＤＭＡＣ６はそれに応えて再ＤＭＡを行う。そして、このシーケンスをＤＭＡＣ５の最終領域（ＬＥＮ４）のＤＭＡが終了するまで繰り返し実行する。
【００６６】
尚、ＤＭＡＣ５のＤＭＡ転送終了信号（End）をＤＭＡＣ６のスタートトリガ（Start）としているので、ＤＭＡＣ６の最後１回のＤＭＡが余計に開始されてしまう。そのため、ＤＭＡＣ５の転送終了割り込み検出後にＤＭＡＣ６のＤＭＡを強制終了する必要がある。このとき、ＤＭＡＣ７では既にＤＭＡ転送を終了しており、またＤＭＡＣ６内には余分なデータが存在するわけではないので、ＤＭＡＣ６がＤＭＡＣ５を余計に起動をかけることはない。
【００６７】
以上説明したように、少なくとも１つのライトＤＭＡＣと１つのリードＤＭＡＣと多次元アドレッシングを行いたいライトＤＭＡＣ（若しくはリードＤＭＡＣ）を組み合わせることで、簡単に多次元ＤＭＡＣを実現することができる。
【００６８】
本実施形態におけるＤＭＡＣの仕様は、リード専用とライト専用の違いは当然あるものの、非常にシンプルな１次元ＤＭＡＣである。共通のシンプルな仕様であるＤＭＡＣだけを用いて多次元ＤＭＡＣを実現できるところが最大の利点である。
【００６９】
そのため、多次元アドレッシングを使用しない状況では、図５に示すＤＭＡシステムのセレクタ１２、１３でＤＭＡＣ６とＤＭＡＣ７の接続を解除し、通常のＩＯデバイス用にＤＭＡＣを使用できる。この場合、セレクタ１２、１３を切り替えるタイミングは完全にスタティックなものであって、確実にＤＭＡが終了したことを確認した後に行わなければならない。
【００７０】
本実施形態では、図５に示すように、１つの多次元アドレッシング対象であるＤＭＡＣと、それを実現するために必要なライトＤＭＡＣとリードＤＭＡＣを用意し、後者２つのＤＭＡＣは別の用途（ＩＯデバイス用ＤＭＡ）としても使用できるように、ＤＭＡバスにセレクタを置いて切り替え可能としている。
【００７１】
これを拡張して考えると、図１０に示すようなシステムを構成することも可能である。図１０は、任意のＤＭＡＣを多次元アドレッシング対象のＤＭＡＣとする構成の一例を示す図である。図１０に示すように、このシステムに存在する全てのＤＭＡＣのＤＭＡバスをＤＭＡバスセレクタ２０５に接続し、デバイス選択モジュール２０２にてデバイス選択信号２００を制御して切り替える。
【００７２】
また同時に、多次元アドレッシングを行いたいＤＭＡＣとライトＤＭＡＣ間で外部起動トリガと終了信号の接続を行う必要があるので、ＤＭＡバスセレクタ２０５の場合と同様に、トリガ転送終了セレクタ２０４を備え、トリガ選択モジュール２０３にてトリガ選択信号２０１を制御して切り替えを行う。
【００７３】
このように制御することで多次元アドレッシングを行うべきＤＭＡチャネルに対して、その時点で使用されていないＤＭＡＣチャネルを多次元ＤＭＡＣ用のサポート用途に切り替えることができるようになり、より柔軟性が高まる。
【００７４】
或いは、最初から多次元ＤＭＡＣ用のサポートＤＭＡＣとしてライトＤＭＡＣとリードＤＭＡＣを１組用意しておき、使用することも可能である。
【００７５】
以上説明したように、本実施形態によれば、非常にシンプルな１次元アドレッシングのみをサポートしたＤＭＡＣを複数個使用することで多次元アドレッシングが可能となる。また、同一仕様のＤＭＡＣだけを使いまわすことで、他のＩＯデバイス用のＤＭＡＣとしても使用でき、更に設計、検証期間の短縮が可能となる。
【００７６】
尚、本発明は複数の機器（例えば、ホストコンピュータ，インターフェース機器，リーダ，プリンタなど）から構成されるシステムに適用しても、１つの機器からなる装置（例えば、複写機，ファクシミリ装置など）に適用しても良い。
【００７７】
また、本発明の目的は前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記録媒体を、システム或いは装置に供給し、そのシステム或いは装置のコンピュータ（ＣＰＵ若しくはＭＰＵ）が記録媒体に格納されたプログラムコードを読出し実行することによっても、達成されることは言うまでもない。
【００７８】
この場合、記録媒体から読出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記録媒体は本発明を構成することになる。
【００７９】
このプログラムコードを供給するための記録媒体としては、例えばフロッピー（登録商標）ディスク，ハードディスク，光ディスク，光磁気ディスク，ＣＤ−ＲＯＭ，ＣＤ−Ｒ，磁気テープ，不揮発性のメモリカード，ＲＯＭなどを用いることができる。
【００８０】
また、コンピュータが読出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているＯＳ（オペレーティングシステム）などが実際の処理の一部又は全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【００８１】
更に、記録媒体から読出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部又は全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【図面の簡単な説明】
【００８２】
【図１】本実施形態におけるＤＭＡＣの内部構成の一例を示す概略図である。
【図２】図１に示す信号とＤＭＡ実行に関する関係を示す図である。
【図３】ＤＭＡバスにおけるプロトコルの仕様を説明するための図である。
【図４】制御レジスタブロック１０５における制御レジスタの構成例を示す図である。
【図５】本実施形態におけるＤＭＡＣシステムの一例を示すブロック図である。
【図６】本実施形態における不連続領域を仮定した場合の一例を示す図である。
【図７】メモリ領域の配置を説明するための図である。
【図８】各ＤＭＡＣの制御レジスタに設定すべき値を示す図である。
【図９】図８の設定でＤＭＡ転送を行う場合の、時系列でのＤＭＡ転送の推移と起動の関係を示す図である。
【図１０】任意のＤＭＡＣを多次元アドレッシング対象のＤＭＡＣとする構成の一例を示す図である。
【符号の説明】
【００８３】
１  システムバス（アドレスバス、データバス）
２  メモリコントローラ
３  ＤＲＡＭ
４  バスアービター
５  ライトＤＭＡＣ
６  ライトＤＭＡＣ
７  リードＤＭＡＣ
８  ＩＯデバイス（送信専用）
９  ＩＯデバイス（送信専用）
１０  ＩＯデバイス（受信専用）
１１  デバイス選択ブロック
１２  ＤＭＡバスセレクタ（マルチプレクサ）
１３  ＤＭＡバスセレクタ（デマルチプレクサ）
１４  ＤＭＡＣ６用ＤＭＡバス
１５  ＤＭＡＣ７用ＤＭＡバス
１６  ＩＯデバイス９用ＤＭＡバス
１７  ＤＭＡＣ連結用ＤＭＡバス
１８  ＩＯデバイス１０用ＤＭＡバス
１９  ＩＯデバイス８用ＤＭＡバス（ＤＭＡＣ５用ＤＭＡバス）
２０  ＤＭＡＣ５のＤＭＡ転送終了信号
２１  ＣＰＵ
２２  割り込みコントローラ（ＩＮＴＣ）
２３  ＤＭＡＣ５の割り込み信号
２４  ＤＭＡＣ６の割り込み信号
２５  ＤＭＡＣ７の割り込み信号
１００  ライトＤＭＡＣ
１０１  システムバス
１０２  バスマスタインターフェース
１０３  ＤＭＡバスインターフェース
１０４  データＦＩＦＯ
１０５  制御レジスタブロック
１０６  ＤＭＡ制御ブロック
１０７  アドレス生成回路
１０８  バス要求発行制御ブロック
１０９  データ制御ブロック
１１０  valid信号
１１１  data信号
１１２  busy信号
１１３  外部トリガ信号Start
１１４  ＤＭＡ転送終了信号End
１１５  割り込み信号Int
１１６  内部トリガ信号Start
２００  デバイス選択信号
２０１  トリガ選択信号
２０２  デバイス選択モジュール
２０３  トリガ選択モジュール
２０４  トリガ転送終了セレクタ
２０５  ＤＭＡバスセレクタ
【図１】
2006126938.tif 000003
【図２】
2006126938.tif 000004
【図３】
2006126938.tif 000005
【図４】
2006126938.tif 000006
【図５】
2006126938.tif 000007
【図６】
2006126938.tif 000008
【図７】
2006126938.tif 000009
【図８】
2006126938.tif 000010
【図９】
2006126938.tif 000011
【図１０】
2006126938.tif 000012