(57)【要約】利用形態に合わせて容易に機能を変更可能なＤＭＡ転送を効率よく実行できるようにする。ＤＭＡＣ（１４）と、ＤＭＡＣ（１４）専用に設けられたＤＭＡＣ用メモリ（１５）とが、ＤＭＡデータ転送制御装置として機能する。ＤＭＡＣ（１４）は、ＤＭＡＣ用メモリ（１５）内のＤＭＡプログラム（１５ｄ）に従ってＤＭＡ転送を実行する。たとえば、ＤＭＡＣ（１４）は、ＤＭＡ要求を受け取ると、そのＤＭＡ要求の内容をＤＭＡ要求パラメータテーブル（１５ａ）に格納する。ＤＭＡ要求パタメータテーブル（１５ａ）に格納されたＤＭＡ要求は、ＤＭＡ要求管理テーブル（１５ｂ）を用いてキュー管理され、格納された順に処理される。実行中のＤＭＡ転送に関する情報は、ＤＭＡチャネル情報テーブル（１５ｃ）により管理される。
2004079583.tif 000002
【特許請求の範囲】
【請求項１】
複数のメモリ間のデータ転送を行うデータ転送制御装置において、
ＤＭＡ転送の処理手順が記述されたＤＭＡプログラムが格納されたＤＭＡコントローラ用メモリと、
ＤＭＡ要求を受け取ると、前記ＤＭＡコントローラ用メモリに格納された前記ＤＭＡプログラムに従って、前記複数のメモリ間のデータ転送を実行するＤＭＡコントローラと、
を有することを特徴とするデータ転送制御装置。
【請求項２】
前記ＤＭＡコントローラは、専用のバスを介して前記ＤＭＡコントローラ用メモリに接続されていることを特徴とする請求の範囲第１項記載のデータ転送制御装置。
【請求項３】
前記ＤＭＡコントローラは、前記ＤＭＡプログラム内の命令を解釈する命令デコーダ回路と、データ転送用のアドレスを生成するアドレス生成回路とを有することを特徴とする請求の範囲第１項記載のデータ転送制御装置。
【請求項４】
前記ＤＭＡコントローラは、前記ＤＭＡ要求を受け取る毎に、前記ＤＭＡコントローラ用メモリ内に前記ＤＭＡ要求の内容を格納し、未処理の前記ＤＭＡ要求の内容を前記ＤＭＡコントローラ用メモリから順次取り出してデータ転送を実行することを特徴とする請求の範囲第１項記載のデータ転送制御装置。
【請求項５】
前記ＤＭＡコントローラは、前記ＤＭＡ要求を任意の数のチャネルの１つに対応付け、前記チャネル毎の前記ＤＭＡ要求を前記ＤＭＡコントローラ用メモリに格納し、単位データを転送する毎に実行すべき前記チャネルを切り替え、実行すべき前記チャネルに対応付けられた前記ＤＭＡ要求に応じた処理を実行することを特徴とする請求の範囲第１項記載のデータ転送制御装置。
【請求項６】
前記ＤＭＡコントローラは、前記ＤＭＡ要求におけるアドレスを絶対アドレスと認識するのか、または相対アドレスとして認識するのかを、前記ＤＭＡ要求によるモード指定に基づいて判断することを特徴とする請求の範囲第１項記載のデータ転送制御装置。
【請求項７】
前記ＤＭＡコントローラは、前記ＤＭＡ要求において矩形領域の転送指示を受けると、転送元データから前記矩形領域を抽出して、前記矩形領域のＤＭＡ転送を行うことを特徴とする請求の範囲第１項記載のデータ転送制御装置。
【請求項８】
前記ＤＭＡコントローラは、前記矩形領域の複数回のデータ転送の合間に、前記矩形領域に挟まれた他のデータのデータ幅分だけ転送元のアドレスをスキップさせることで、前記矩形領域のＤＭＡ転送を行うことを特徴とする請求の範囲第７項記載のデータ転送制御装置。
【請求項９】
前記矩形領域は、画像データ内の一部分であることを特徴とする請求の範囲第７項記載のデータ転送制御装置。
【請求項１０】
前記ＤＭＡコントローラは、前記ＤＭＡ要求に設定されたモードに応じて、前記矩形領域の転送処理とブロック転送処理とを切り替えることを特徴とする請求の範囲第７項記載のデータ転送制御装置。
【請求項１１】
前記ＤＭＡコントローラを制御する上位プロセッサを有することを特徴とする請求の範囲第１項記載のデータ転送制御装置。
【請求項１２】
前記上位プロセッサは、前記ＤＭＡコントローラに対して、専用の信号線で接続されていることを特徴とする請求の範囲第１１項記載のデータ転送制御装置。
【請求項１３】
前記ＤＭＡコントローラは、前記ＤＭＡ用メモリから前記ＤＭＡプログラム内の命令を読み取り、命令の内容を解釈し、命令に応じた制御信号を出力する命令デコーダと、前記命令デコーダから制御信号に応じてＤＭＡ転送用のアドレスを生成するアドレス生成回路と、を有することを特徴とする請求の範囲第１項記載のデータ転送制御装置。
【請求項１４】
バスを介したＤＭＡ転送を制御するためのＤＭＡコントローラにおいて、
ＤＭＡ用メモリからＤＭＡプログラム内の命令を読み取り、命令の内容を解釈し、命令に応じた制御信号を出力する命令デコーダと、
前記命令デコーダから制御信号に応じてＤＭＡ転送用のアドレスを生成するアドレス生成回路と、
を有することを特徴とするＤＭＡコントローラ。
【請求項１５】
バスを介したＤＭＡ転送を制御するためのＤＭＡデータ転送制御方法において、
プログラムを実行可能なＤＭＡコントローラ専用のＤＭＡコントローラ用メモリに、ＤＭＡ転送処理手順を記述したＤＭＡプログラムを格納し、
前記ＤＭＡコントローラにＤＭＡ要求が入力されると、前記ＤＭＡコントローラにより、前記ＤＭＡコントローラ用メモリに格納された前記ＤＭＡプログラムに従って、前記複数のメモリ間のＤＭＡによるデータ転送を実行する、
ことを特徴とするＤＭＡデータ転送制御方法。
【発明の詳細な説明】
【技術分野】  本発明はデータ転送制御装置、ＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）コントローラおよびＤＭＡデータ転送方法に関し、特にデータ転送方式を変更可能なデータ転送制御装置、ＤＭＡコントローラおよびＤＭＡデータ転送制御方法に関する。
【背景技術】  大容量のデータを高速に入出力して処理することが必要なコンピュータシステムでは、データを実際に処理するメインプロセッサとは別に、データの転送を専門に担当するＤＭＡコントローラ（以下、ＤＭＡＣと呼ぶ）を搭載する場合が多い。ＤＭＡＣは、通常、メインプロセッサとは独立して動作し、指示された転送元、転送先、転送サイズに従って、メモリ領域間のデータ転送を行う。
ＤＭＡＣを搭載すると、メインプロセッサがデータ演算を行っている間、同時並行的にＤＭＡＣによってデータ転送を行うことが可能となる。そのため、メインプロセッサの処理時間に関し、データ転送時間というオーバヘッドが隠蔽できる利点がある。また、ＤＭＡＣ用のメモリをＤＭＡＣに接続することで、プロセッサによるメモリアクセスと、ＤＭＡＣによる専用メモリへのアクセスを並行して実行できるようにすれば、プロセッサのデータ処理効率をさらに向上させることができる（たとえば、特許文献１参照）。
なお、ＤＭＡＣによるＤＭＡ転送処理は、あるメモリ領域間のコピーという単純な転送から、複雑な矩形領域のコピー、あるいはある規則に基づく複雑な転送や、計算によって得られるアドレスを用いた高度な転送まで、コンピュータシステムの要求に合わせて様々な要求がある。
これまでのＤＭＡＣは、通常、パラメータを設定するＩ／Ｏレジスタ領域に、データの転送元アドレス、転送先アドレス、転送サイズなどを設定し、スタート指示によって転送を開始する。このようなＤＭＡＣは、単独またはシステムの一部として、周辺チップとして設計され、ハードウェア回路によって固定された機能で実現されてきた。
ＤＭＡＣはハードウェア回路によって機能が実現されるため、使用目的に応じて個別に設計される。たとえば、複数の転送チャネルを備え、複数のＤＭＡ転送の並列実行をサポートするものや、転送要求をＦＩＦＯ形式のバッファに保管し、次々に処理することが可能なもの等がある。このように、使用目的に応じて様々な機能を有するＤＭＡＣが製品化されている。
ところが、専用ハードウェアで実現されるＤＭＡＣは、その動作が予め設計された機能で制限されてしまう。そのため、システム構成や搭載するアプリケーションによってはオーバースペックとなったり、機能不足に陥ったりする可能性がある。例えば、ＤＭＡチャネル数は、４チャネルで設計されれば、運用時に６チャネル使用したくても４チャネル内で工夫して利用せざるを得ない。その際オーバヘッドによりパフォーマンスが低下する可能性が高い。
また、ＤＭＡＣはメインプロセッサの補助回路という立場で搭載されるため、通常、回路コストや電力の問題から、比較的単純なアドレス更新機能のみを備えている。したがって、高度な処理を伴う転送は実行できない。たとえば、ＤＭＡＣでは、特殊なアドレス更新パターンでの転送など、複雑なアドレス処理には対応できない場合が多い。これら特殊なアドレッシングに対応したＤＭＡＣも存在するが、このようなＤＭＡＣは特定のアプリケーション向けとなる場合が多く、搭載されるアプリケーションによっては有効活用できない場合も多い。
このように、ハードウェアで実現するＤＭＡＣでは、機能が固定化されてしまうために、搭載するアプリケーションに合わせて、適したデータ転送形式を実現することが難しく、ほとんどの場合、単純なデータ転送しかサポートできなかった。換言すると、システムの用途が限定されている場合を除き高機能なＤＭＡ転送をＤＭＡＣで実行することはできず、単純な転送以外は、メインプロセッサがアドレス計算・設定しながら、転送命令によってデータ転送を行っていた。その為、メインプロセッサの処理時間を転送で占有し、システム性能の低下を招いていた。
そこで、ＤＭＡＣを専用ハードウェア回路によって機能固定で実現するのではなく、マルチプロセッサシステムによって複雑なＤＭＡ転送をも実現する方法がある（たとえば、特許文献２参照）。これは、メインプロセッサとは別に、サブプロセッサを搭載し、それをＤＭＡＣとして機能させるという手法である。この手法では、サブプロセッサが目的の転送に対して十分に高機能であれば、アドレス計算を算術演算で導くような複雑かつ高度なアクセスも可能である。また、マイクロプロセッサはプログラマブルであるため、ＤＭＡ機能に柔軟性を持たせることができる。
【特許文献１】特開平７−２４４６３２号公報
【特許文献２】特開平７−１３９２０号公報
しかし、特許文献２に示すようなＤＭＡＣとして機能するサブプロセッサは汎用プロセッサである。そのため、メモリ間データ転送のアドレス制御等のため、サブプロセッサにおいて、専用のハードウェアを有するＤＭＡＣよりも煩雑な処理が行われる。たとえば、サブプロセッサは、メモリ間転送命令に応じて、ロード命令とストア命令を続けて実行することにより、一度レジスタに値を取り込み、その後、そのレジスタ値をメモリに書き込む、という手順を辿らなければならない。
通常、ＤＭＡ機能に特化したハードウェア構成のＤＭＡＣでは、アドレス更新とデータのリードライトコントロールのみを行って、バースト転送をコントロールし、メモリ間の高速データ転送を実現している。これに比べると、マルチプロセッサシステムを構成するプロセッサの１つが転送を処理する手法では、柔軟性のある複雑なＤＭＡ転送が可能な半面、転送速度が低下し、また、通常の専用ＤＭＡＣに比べて回路規模の大きなプロセッサを搭載することによるコスト問題が発生する。
しかも、特許文献２に示されるサブプロセッサにＤＭＡ転送を制御させるシステムでは、メインプロセッサが扱うデータメモリ領域とＤＭＡのパラメータ領域、およびサブプロセッサのプログラム領域がすべて同一メモリ領域上に構成されている。そのため、２つポートからの同時アクセスが可能なデュアルポートランダムアクセスメモリ（ＤＰＲＡＭ）を使用しても、サブプロセッサ側ポートでプログラムフェッチとデータの読み書きが１ポートを共有することになる。その結果、サブプロセッサ側の転送速度が大きく低下するという問題がある。
メインプロセッサの処理時間からＤＭＡ転送時間を見えないようにすることが、ＤＭＡＣによるＤＭＡ転送の最大の目的であるが、サブプロセッサによるデータ転送速度が低下すると、サブプロセッサによるＤＭＡ転送が完了しない。そのため、メインプロセッサが次の処理に進めなくなるケースが発生する可能性が高くなってしまう。
【発明の開示】
本発明はこのような点に鑑みてなされたものであり、利用形態に合わせて容易に機能を変更可能なＤＭＡ転送を効率よく実行することができるデータ転送制御装置、ＤＭＡコントローラ、およびＤＭＡデータ転送制御方法を提供することを目的とする。
本発明では上記課題を解決するために、図１に示すようなデータ転送制御装置が提供される。本発明に係るデータ転送制御装置は、複数のメモリ１２，１３間のデータ転送を行うものである。このデータ転送制御装置は、ＤＭＡ転送の処理手順が記述されたＤＭＡプログラム１５ｄが格納されたＤＭＡコントローラ用メモリ１５と、ＤＭＡ要求を受け取ると、ＤＭＡコントローラ用メモリ１５に格納されたＤＭＡプログラム１５ｄに従って、複数のメモリ１２，１３間のＤＭＡによるデータ転送を実行するＤＭＡコントローラ１４と、を有している。
このようなデータ転送制御装置により、ＤＭＡコントローラ用メモリ１５に格納されたＤＭＡプログラム１５ｄに従ったＤＭＡ転送がＤＭＡコントローラ１４により実行される。
また、上記課題を解決するために、バスを介したＤＭＡ転送を制御するためのＤＭＡコントローラにおいて、ＤＭＡ用メモリからＤＭＡプログラム内の命令を読み取り、命令の内容を解釈し、命令に応じた制御信号を出力する命令デコーダと、前記命令デコーダから制御信号に応じてＤＭＡ転送用のアドレスを生成するアドレス生成回路と、を有することを特徴とするＤＭＡコントローラが提供される。
また、上記課題を解決するために、バスを介したＤＭＡ転送を制御するためのＤＭＡデータ転送制御方法において、プログラムを実行可能なＤＭＡコントローラ専用のＤＭＡコントローラ用メモリに、ＤＭＡ転送処理手順を記述したＤＭＡプログラムを格納し、前記ＤＭＡコントローラにＤＭＡ要求が入力されると、前記ＤＭＡコントローラにより、前記ＤＭＡコントローラ用メモリに格納された前記ＤＭＡプログラムに従って、前記複数のメモリ間のＤＭＡによるデータ転送を実行する、ことを特徴とするＤＭＡデータ転送制御方法が提供される。
本発明の上記および他の目的、特徴および利点は本発明の例として好ましい実施の形態を表す添付の図面と関連した以下の説明により明らかになるであろう。
【図面の簡単な説明】  図１は、実施の形態におけるシステム構成例を示す図である。
図２は、ＤＭＡ要求パラメータテーブルのデータ構造例を示す図である。
図３は、ＤＭＡ要求管理テーブルのデータ構造例を示す図である。
図４は、ＤＭＡチャネル情報テーブルのデータ構造例を示す図である。
図５は、ＤＭＡＣで実行する転送プログラムの処理のフローチャートである。
図６は、第２の実施の形態のシステム構成例を示す図である。
図７は、チャネル管理テーブルのデータ構造例を示す図である。
図８は、チャネル管理を示す概念図である。
図９は、チャネルを複数管理する場合のＤＭＡ処理を示すフローチャートである。
図１０は、第３の実施の形態に係るシステム構成例を示す図である。
図１１は、動作中のプログラム入れ替えの動作の処理のフローチャートである。
図１２は、第４の実施の形態のシステム構成例を示す図である。
図１３は、ＤＭＡ設定管理テーブルのデータ構造例を示す図である。
図１４は、上位プロセッサによるＤＭＡ起動処理手順を示すフローチャートである。
図１５は、ＤＭＡＣによるＤＭＡ要求検出処理を示すフローチャートである。
図１６は、ステータス更新の手順を示すシーケンス図である。
図１７は、第５の実施の形態に係るシステムの構成例を示す図である。
図１８は、転送同期テーブルの例を示す図である。
図１９は、第５の実施の形態におけるＤＭＡチャネル情報テーブルの例を示す図である。
図２０は、ＤＭＡＣの同期動作の手順を示すフローチャートである。
図２１は、第６の実施の形態に係るシステムの構成例を示す図である。
図２２は、メモリ領域管理情報テーブルのデータ構造例を示す図である。
図２３は、パラメータ検査処理の手順を示すフローチャートである。
図２４は、第７の実施の形態のシステム構成例を示す図である。
図２５は、ＤＭＡＣの内部構成を示すブロック図である。
図２６は、基本レジスタ構成を示す図である。
図２７は、ＤＭＡＣで実行可能な基本命令セットを示す図である。
図２８は、分岐条件の例を示す図である。
図２９は、アドレス更新機能を示す図である。
図３０は、拡張レジスタの構成を示す図である。
図３１は、拡張命令セットの例を示す図である。
図３２は、拡張条件を示す図である。
図３３は、ＤＭＡプログラムの一例を示す図である。
図３４は、矩形ブロックＤＭＡ転送の概念を示す図である。
図３５は、矩形ブロック転送のＤＭＡ要求パラメータテーブルの例を示す図である。
図３６は、矩形ブロックＤＭＡ転送処理の手順を示すフローチャートである。
図３７は、相対アドレス記述のＤＭＡ要求パラメータテーブルの例を示す図である。
図３８は、矩形ブロック転送の例を示す図である。
図３９は、第９の実施の形態のシステム構成例を示す図である。
【発明を実施するための最良の形態】  以下、本発明の実施の形態を図面を参照して説明する。
まず、実施の形態に適用される発明の概要について説明し、その後、実施の形態の具体的な内容を説明する。
［第１の実施の形態］
第１の実施の形態は、本発明を実現するための基本構成である。
図１は、実施の形態におけるシステム構成例を示す図である。第１の実施の形態に係るシステムでは、プロセッサ１１、２つのメモリ１２，１３、およびＤＭＡコントローラ（ＤＭＡＣ）１４がバス１６を介して互いに接続されている。また、ＤＭＡＣ１４には、専用のバス１７を介してＤＭＡＣ用メモリ１５が接続されている。
プロセッサ１１は、システム全体を制御する。メモリ１２，１３は、システムの動作に利用されるデータを格納する記録媒体である。
ＤＭＡＣ１４は、メモリ領域間のデータ転送を制御する回路である。ＤＭＡＣ１４は、ＤＭＡ要求を受け取ると、ＤＭＡＣ用メモリ１５に格納されたＤＭＡプログラム１５ｄやデータに従って、ＤＭＡ要求で指定されているＤＭＡ転送を実現する。ＤＭＡＣ１４は、ＤＭＡ転送の制御に特化したプログラマブルな回路であり、命令を解釈する命令デコーダやＤＭＡ転送の際のリードアドレスやライトアドレスを生成するアドレス生成回路などを有している。
また、ＤＭＡＣ１４は、ＤＭＡプログラム１５ｄに記述されたＤＭＡ転送機能を有するため、柔軟な機能変更が可能である。たとえば、ＤＭＡプログラム１５ｄにおいて単純なＤＭＡ転送や高度なＤＭＡ転送（矩形領域の転送等）などの複数の機能に関する処理手順（プログラムモジュール）が記述されていれば、ＤＭＡＣ１４は、モード指定等に応じて機能を選択して、選択した機能を実行できる。
ＤＭＡＣ用メモリ１５は、ＤＭＡＣ１４で実行させるプログラムや、実行に必要なデータを格納するための記録媒体である。ＤＭＡＣ用メモリ１５は、ＤＭＡＣ１４専用に設けられている。ＤＭＡＣ用メモリ１５には、ＤＭＡＣ１４に実行させる動作を記述したプログラムが配置される。たとえば、ＤＭＡＣ用メモリ１５には、ＤＭＡ要求毎のＤＡＭ要求パラメータテーブル１５ａ、ＤＭＡ要求管理テーブル１５ｂ、ＤＭＡチャネル情報テーブル１５ｃおよびＤＭＡプログラム１５ｄが格納される。ＤＭＡ要求パラメータテーブル１５ａには、ＤＭＡ要求によって入力されたパラメータが格納される。ＤＭＡ要求管理テーブル１５ｂには、プロセッサ１１等から出力されたＤＭＡ要求のリストが蓄積される。ＤＭＡチャネル情報テーブル１５ｃには、ＤＭＡチャネル毎のステータス（データ転送状態）に関する情報が格納される。ＤＭＡプログラム１５ｄは、ＤＭＡＣ１４に実行させる処理が記述された命令の集合である。
このようなシステムにおいて、ＤＭＡＣ１４とＤＭＡＣ用メモリ１５とが、ＤＭＡデータ転送制御装置として機能する。ＤＭＡＣ１４は、ＤＭＡ用メモリ１５内のＤＭＡプログラム１５ｄに従ってＤＭＡ転送を実行する。たとえば、ＤＭＡＣ１４は、ＤＭＡ要求を受け取ると、そのＤＭＡ要求の内容をＤＭＡ要求パラメータテーブル１５ａに格納する。ＤＭＡ要求パタメータテーブル１５ａに格納されたＤＭＡ要求は、ＤＭＡ要求管理テーブル１５ｂを用いてキュー管理され、たとえば格納された順に処理される。実行中のＤＭＡ転送に関する情報は、ＤＭＡチャネル情報テーブル１５ｃにより管理される。
このようにＤＭＡＣ１４は、ＤＭＡＣ用のデータ転送プログラムを格納するための専用命令メモリ領域を備えており、ここに格納されたプログラムの実行により、ＤＭＡ転送を行う。ＤＭＡＣ１４は、プログラム制御命令（ループ制御命令、分岐命令、条件判定など）と転送命令との解釈、実行機能を備えるが、通常のマイクロプロセッサが備えるような、乗算機能や論理演算機能などの複雑な演算器を搭載する必要はないため、汎用のプロセッサに比べて単純な回路構成でよい。
具体的には、ＤＭＡＣ１４はシーケンサとして動作すればよく、格納されているプログラムを１命令ずつフェッチして実行し、ＤＭＡ転送を制御する。ＤＭＡＣ１４の動作シーケンスがプログラマブルであるため、一般的に行われるＤＭＡ転送のように、転送元アドレス、転送先アドレス、転送サイズをＤＭＡパラメータとして設定し、それに従ってＤＭＡＣが転送を行うという基本的な動作が可能となる。さらに、ＤＭＡ転送のチャネル数を可変にしたり、ＤＭＡパラメータ設定のキューイング個数を可変にしたりすることが出来、プログラム次第で柔軟な制御を行うことができる。
このように、転送命令等をプログラム実行可能な専用のＤＭＡＣ１４によって、これらのＤＭＡ転送における問題点を解決する。
なお、ＤＭＡＣ１４に接続するＤＭＡＣ用メモリ１５としては、命令とデータを同時に読み出せる２ポートリードメモリを搭載したり、命令メモリとデータメモリをそれぞれ別に搭載したりすることも可能である。この場合には、命令メモリからの命令フェッチ、およびデータメモリのリードライトが同時に行えるため、命令フェッチとデータのリードライトのメモリアクセス衝突によるウェイト発生を回避できる。また、ＤＭＡＣ１４に接続するＤＭＡＣ用メモリ１５として、バスを介して別のデータメモリ領域を搭載することも可能で、このとき、各データメモリ領域で、ＤＭＡＣによるデータのＤＭＡ転送が可能である。
次に、ＤＭＡＣ用メモリ１５内のデータ構造について説明する。
図２は、ＤＭＡ要求パラメータテーブルのデータ構造例を示す図である。ＤＭＡ要求パラメータテーブル１５ａには、データ項目として、転送元、転送先、転送サイズ、モード、オプションパラメータがある。これらのデータの組により、１つのＤＭＡ要求パラメータが構成される。
転送元は、転送対象のデータの記憶領域の先頭を示すメモリアドレスである。転送先は、転送されたデータを格納すべき記憶領域の先頭を示すメモリアドレスである。転送サイズは、ＤＭＡ転送すべきデータ容量である。モードは、ＤＭＡ転送の際の処理内容を指定するための情報である。すなわち、モードを切り替えることで、ＤＭＡ転送の処理内容を変更することができる。オプションパラメータは、高度な転送処理（転送元、転送先、転送サイズ以外のパラメータを必要とする処理）を実行する際に必要なパラメータである。
図３は、ＤＭＡ要求管理テーブルのデータ構造例を示す図である。ＤＭＡ要求管理テーブル１５ｂには、ＤＭＡ要求の識別情報に関連付けて、ＤＭＡ要求パラメータ１５ａへのポインタと属性とが登録される。
ＤＭＡ要求パラメータ１５ａへのポインタは、対応するＤＭＡ要求パラメータ１５ａが格納された領域を指し示すメモリアドレスである。属性は、ＤＭＡ要求の属性を示している。属性の値には、たとえば「有効」と「無効」とがある。有効は、要求に応じたＤＭＡ処理を実行する必要があることを示しており、無効は、要求に応じたＤＭＡ処理を実行する必要がない（たとえば、既にＤＭＡ転送が完了している）ことを示している。
図４は、ＤＭＡチャネル情報テーブルのデータ構造例を示す図である。ＤＭＡチャネル情報テーブル１５ｃには、要求管理テーブルポインタ、処理対象、転送元、転送先、残りサイズ、モード、オプションパラメータ等の項目のデータが登録される。
要求管理テーブルポインタは、対応するＤＭＡ要求管理テーブル１５ｂの格納場所を示すメモリアドレスである。処理対象は、そのチャネルで処理している処理要求の識別情報である。転送元は、次に転送すべきデータの格納位置を指し示すメモリアドレスである。転送先は、次に転送されたデータを格納すべき記憶領域を指し示すメモリアドレスである。残りサイズは、転送すべき残りのデータのサイズである。モードは、現在ＤＭＡ転送を実行しているＤＭＡ要求のモードである。オプションパラメータは、現時実行しているＤＭＡ転送処理に設定されたオプションのパラメータである。
このように、ＤＭＡチャネル情報テーブル１５ｃにより、管理テーブルのどの要求までを処理完了し、どの要求を処理中なのか、という実行状態が管理される。なお、これらのテーブルのサイズは、最終的には搭載メモリ容量に依存するものの、テーブル領域として確保したサイズだけ、ＤＭＡ転送要求を管理可能であるため、非常に多くの要求を処理できる。
このような構成のシステムにおいて、ＤＭＡＣ１４に実行させるためのＤＭＡプログラム１５ｄを、ＤＭＡＣ用メモリ１５に予め格納する。そして、プロセッサ１１は、ＤＭＡ転送が必要になると、ＤＭＡ要求をＤＭＡＣ１４に渡す。ＤＭＡ要求には、ＤＭＡパラメータが含まれる。
ＤＭＡ要求を受け取ったＤＭＡＣ１４は、ＤＭＡ要求パラメータテーブル１５ａにＤＭＡ要求に関するパラメータを格納し、そのＤＭＡ要求パラメータへのポインタを含むＤＭＡ要求のエントリを、ＤＭＡ要求管理テーブル１５ｂに追加する。その際、ＤＭＡ要求の属性には、「有効」が設定される。
ＤＭＡ要求管理テーブル１５ｂに有効なＤＭＡ要求が登録されると、ＤＭＡＣ１４はＤＭＡプログラム１５ｄに従ったＤＭＡ転送処理を行う。
以下、ＤＭＡＣ１４によるＤＭＡ転送内容を説明する。
図５は、ＤＭＡＣで実行する転送プログラムの処理のフローチャートである。この処理は、ＤＭＡチャネル情報テーブル１５ｃに新たなＤＭＡ要求の情報が登録されたときに実行される。以下、図５に示す処理をステップ番号に沿って説明する。
［ステップＳ１］ＤＭＡＣ１４は、ＤＭＡチャネル情報テーブル１５ｃからＤＭＡ要求管理テーブル１５ｂへのポインタを読み出し、ＤＭＡ要求管理テーブル１５ｂの最初の要求パラメータを、現在処理中のＤＭＡ要求とする。
［ステップＳ２］ＤＭＡＣ１４は、ＤＭＡチャネル情報テーブル１５ｃから処理中のＤＭＡ要求パラメータを読み取る。
［ステップＳ３］ＤＭＡＣ１４は、読み出した値に従って転送を１単位（たとえば、１バイト）だけ行う。この際、ＤＡＭＣ１４は、ＤＭＡチャネル情報テーブル１５ｃの残りサイズのデータを更新する。すなわち、転送したデータ容量分だけ、残りサイズから減算する。
［ステップＳ４］ＤＭＡＣ１４は、ＤＭＡ転送の転送元と転送先のアドレスを更新（転送された単位データ分だけアドレスを加算）する。
［ステップＳ５］ＤＭＡＣ１４は、転送終了条件を満たしているか否かを判断する。終了条件は、たとえば、転送サイズ分のデータ転送が完了したことである。すなわち、ＤＭＡチャネル情報の残りサイズが０になっていれば、転送終了と判断する。転送終了条件が満たされていれば、処理がステップＳ６に進められる。転送終了条件が満たされていなければ、処理がステップＳ３に進められ、引き続いて転送が行われる。
［ステップＳ６］ＤＭＡＣ１４は、ＤＭＡ要求管理テーブル１５ｂの次のＤＭＡ要求へポインタを更新する。
［ステップＳ７］ＤＭＡＣ１４は、全てのＤＭＡ要求に応じた処理が終了したか否かを判断する。ＤＭＡ要求に応じた処理が終了していない場合には、処理がステップＳ２に進められる。ＤＭＡ要求に応じた処理が終了した場合には、処理が終了する。
対象となるＤＭＡ要求の処理が終了すると、ＤＭＡＣ１４は、次のＤＭＡ要求を処理するために、チャネル情報テーブル１５ｃの処理対象を、ＤＭＡ要求管理テーブル１５ｂに格納されている次のＤＭＡ要求に書き直す。そして、ＤＭＡＣ１４は、新しい処理対象のＤＭＡ処理に入る。
このようにして、ＤＭＡＣ用メモリ１５に格納されたＤＭＡプログラム１５ｄに従ったＤＭＡ転送が実行される。その結果、処理機能の変更が可能となる。すなわち、専用ハードウェアで構成される従来のＤＭＡＣでは、管理できるＤＭＡ要求数に限界があった。これは、要求を格納するバッファ領域が、ハードウェアで実現されて固定化されているためであり、これまでは、管理可能な要求は通常数個〜十数個程度であった。一方、本実施の形態によれば、ＤＭＡＣにおける処理内容がＤＭＡプログラム１５ｄで定義されるため、ＤＭＡ転送処理の機能変更が容易である。
たとえば、ＤＭＡプログラム１５ｄでＤＭＡＣにおける処理対象とするチャネルの情報をテーブルで管理することができる。通常、プログラムであればテーブルの数の変更は容易である。このように各チャネルの情報をテーブルで管理することで、ＤＭＡチャネル数を任意に設定することができる。
なお、図５の例では、ＤＭＡＣが搭載している命令が単純な転送命令の場合を想定して、転送の１単位を１データとしている。バースト転送の命令がＤＭＡプログラム１５ｄに設定されていれば、バースト転送が行われる。
また、本実施の形態のように、ＤＭＡ要求パラメータの格納アドレス（ポインタ）を利用すれば、決まったパターンで行うＤＭＡ転送を、テーブルとして容易に確保できる。すなわち、転送元や転送先が同じＤＭＡ転送を、繰り返し行う必要がある場合、ＤＭＡ要求管理テーブル１５ｂに登録するポインタによって、同じＤＭＡ要求パラメータを指定すれば、同じパターンのＤＭＡ転送を容易に再実行できる。これにより、データ転送の度にＤＭＡ要求パラメータを設定しなくてすみ、処理効率が向上する。
ここで、図１に示すシステムと従来のシステムとを比較する。
仕様に沿ったＤＭＡ専用ハードウェアで実現された従来のＤＭＡＣは、定められたＤＭＡチャネル数で定められた個数の転送要求しか受け付けられなかった。一方、第１の実施の形態に係るＤＭＡＣ１４はプログラマブルであるため、メモリの許す限り転送要求をキューイングすることができる。このようにキューイングの深さに制限が無いことで、運用上の動作制限が緩和される。
汎用的なプロセッサにＤＭＡ転送を行わせるシステムでは、転送処理を実行させるにはオーバースペックであり不要なコストアップを招いてしまう。一方、第１の実施の形態に係るＤＭＡＣ１４は、メモリアドレス生成回路等によりＤＭＡ転送用のメモリアドレスを生成することで、簡単な処理でデータ転送が可能となる。
［第２の実施の形態］
第２の実施の形態は、チャネル数を容易に変更できるようにしたものである。すなわち、一般に、ＤＭＡチャネル数はシステムに搭載するアプリケーションによって要求数がまちまちである。それにもかかわらず、ハードウェアで構成されるＤＭＡ機能の場合、通常、チャネル数は固定である。そのため、要求に対してオーバースペックとなるか、あるいはチャネルの不足によってＤＭＡ管理が煩雑になる等の問題がある。
第２の実施の形態では、第１の実施の形態で使用したＤＭＡ要求管理テーブルをＤＭＡの１チャネルとみなし、複数のＤＭＡ要求管理テーブルをチャネル管理テーブルで管理しながら、多チャネルのＤＭＡ転送として処理する。ＤＭＡＣ用のメモリ領域に複数のＤＭＡ要求管理テーブルを格納することで、メモリの許す限り、チャネル数を可変にして管理制御することが可能となる。
図６は、第２の実施の形態のシステム構成例を示す図である。第２の実施の形態におけるシステム構成は、図１に示した第１の実施の形態とほぼ同じであるため、同一の構成要素には同一の符号を付し、説明を省略する。
第２の実施の形態では、ＤＭＡＣ用メモリ１５に格納される情報のみが第１の実施の形態と異なる。図６に示すように、第２の実施の形態では、ＤＭＡＣ１５内に複数のＤＭＡ要求管理テーブル１５ｅが設けられている。さらに、チャネル管理テーブル１５ｆが追加されている。また、ＤＭＡ用メモリ１５には、第２の実施の形態の機能を実現するための処理手順が記述されたＤＭＡプログラム１５ｇが格納されている。
ＤＭＡ要求管理テーブル１５ｅは、チャネル毎に設けられている。各ＤＭＡ要求管理テーブル１５ｅのデータ構造は、図３に示した第１の実施の形態におけるＤＭＡ要求管理テーブル１５ｂのデータ構造と同様である。
チャネル管理テーブル１５ｆは、複数のＤＭＡチャネル情報テーブル１５ｃを管理するための情報（チャネルポインタ等）である。
図７は、チャネル管理テーブルのデータ構造例を示す図である。チャネル管理テーブル１５ｆには、レコード毎に、番号、ＤＭＡチャネル情報テーブル１５ｃへのポインタ（チャネルポインタ）、および属性が登録されている。番号は、各レコードの識別番号である。ＤＭＡチャネル情報テーブル１５ｃへのポインタは、１つのＤＭＡチャネル情報テーブル１５ｃが格納された記憶領域のアドレスである。そのＤＭＡチャネル情報テーブル１５ｃに記載された要求管理テーブルへのポインタは、１つのＤＭＡ要求管理テーブル１５ｅが格納された記憶領域のアドレスである。属性は、そのレコードが有効か無効かを示す情報である。
以上のようなチャネル管理テーブル１５ｆを介して、複数のチャネル情報が管理される。
図８は、チャネル管理を示す概念図である。図８の例では、チャネル管理テーブル１５ｆに、チャネル毎に設けられた複数のＤＭＡチャネル情報テーブル１８ａ，１８ｃが登録されており、その各々にはＤＭＡ要求管理テーブル１６ａ，１６ｂに対する要求管理テーブルポインタが登録されている。チャネル１のＤＭＡ要求管理テーブル１６ａには、複数のＤＭＡ要求パラメータテーブル１７ａ，１７ｂへのポインタが登録されている。チャネル２のＤＭＡ要求管理テーブル１６ｂには、複数のＤＭＡ要求パラメータテーブル１７ｃ，１７ｄへのポインタが登録されている。
現在管理しているＤＭＡ要求管理テーブルの数が、現在処理対象となっているＤＭＡチャネル数である。ＤＭＡ要求管理テーブルについては既に説明の通りであり、個々のＤＭＡ転送要求をひとつのチャネルに対する転送要求として管理し、次々に転送処理する。
図８に示すように情報を関連付けることで、複数のチャネルが管理される。チャネル毎の転送処理の詳細は、第１の実施の形態と同様である。ここで、複数のチャネルのそれぞれにおいて、現在転送処理対象となっているＤＭＡ要求が存在するが、それら各ＤＭＡ要求については、予め定義された優先度情報等に従った適切な順序で処理が行われる。
このように、テーブルのポインタを受け取るだけでＤＭＡ転送を処理できるようにＤＭＡプログラムを作成すれば、同じパターンのＤＭＡ転送を繰り返すことも容易である上、複数チャネルで、同一パターンのＤＭＡ転送を共有することも可能である（テーブル先頭ポインタと、テーブルの参照ポインタをチャネルごとに管理すればよい）。
図９は、チャネルを複数管理する場合のＤＭＡ処理を示すフローチャートである。この方法は、タイムシェアリング方式で、各チャネルで処理対象となっているＤＭＡ要求を、１データ単位ずつ、均等に処理するものである。以下、図９に示す処理をステップ番号に沿って説明する。
［ステップＳ１１］ＤＭＡＣ１４は、まず、チャネル管理テーブル１５ｆからＤＭＡチャネル情報テーブル１５ｃへのポインタをひとつ読み出す。
［ステップＳ１２］ＤＭＡＣ１４は、読み出したチャネル情報テーブルポインタのチャネルの属性を判断する。そのチャネルが「有効」である場合、処理がステップＳ１３に進められる。チャネルが「無効」の場合、処理がステップＳ１６に進められる。
［ステップＳ１３］ＤＭＡＣ１４は、ＤＭＡチャネル情報テーブル１５ｃのステータスを読み、現在処理中のＤＭＡ要求の転送状態を確認する。
［ステップＳ１４］ＤＭＡＣ１４は、読み込んだＤＭＡチャネル情報テーブル１５ｃに登録されている処理対象のＤＭＡ要求に基づき、１データ単位だけＤＭＡ転送を行う。
［ステップＳ１５］ＤＭＡＣ１４は、ＤＭＡチャネル情報テーブル１５ｃの転送状態のステータスを更新する。
［ステップＳ１６］ＤＭＡＣ１４は、ＤＭＡチャネル情報テーブル１５ｃへのポインタを、次のチャネルへと処理を移す。
［ステップＳ１７］ＤＭＡＣ１４は、全チャネルに対する処理が終了したか否かを判断する。全チャネルに対してこの処理が終了していなければ、処理がステップＳ１１に進められ、全チャネルに対する処理が終了していれば、全チャネルへの１回ずつの巡回処理が終了となる。
このような処理を繰り返していくことで、ＤＭＡ処理が進んでいく。あるチャネルで対象となる要求が処理完了すると、処理を待っていた次の要求へと対象が進むのは、これまでと同様である。あるチャネルの全要求が処理完了すると、このチャネルを「有効」から「無効」へ書き換え、新たなＤＭＡ要求が格納されるまでは処理対象から外す。「有効」のチャネルがチャネル管理リストから無くなれば、ＤＭＡ処理が全て終わりとなる。
この方法では、全てのチャネルのプライオリティが対等であるが、これにさらに重み（優先順位）をつけて、処理を行ってもよい。
以下に、チャネル情報の管理方法、およびＤＭＡ処理の実行方法について、ハードウェアで機能が固定されたＤＭＡＣの機能と比較して説明する。
・ハードウェアで機能が固定されたＤＭＡＣの処理
通常のハードウェアで構成されるＤＭＡＣでは、ＤＭＡチャネルに転送要求が積み上げられており、ＤＭＡＣがそれらを順に処理していく。具体的には、ＤＭＡＣは、ある決まったブロック領域の転送が頻繁に現れるような場合、チャネル数に余裕があれば、あるチャネルに設定した使用頻度の高い転送設定のパターンを、他の転送設定で上書きすることなくチャネルの設定状態を保持しておく。
そして、ＤＭＡＣ再びＤＭＡ転送を実行したいときに、最小限のパラメータ変更だけで実行を行うような配慮を行う。チャネル数に余裕がない場合は、他の転送の後に再び設定をやり直す必要が生じ、その設定作業がオーバヘッドとなる。
・ＤＭＡプログラムに従った機能を実現する第２の実施の形態に係るＤＭＡＣの処理
本発明の第２の実施の形態において、チャネル管理テーブルに登録されている各チャネルのＤＭＡ要求を時分割で処理する方法を説明する。チャネル管理テーブル１５ｆには、チャネルの状態が保持されているので、ＤＭＡＣ１４は、「有効」な各チャネルのＤＭＡ要求を、１データ転送単位だけ処理し、その後、次のチャネルのＤＭＡ要求処理に移る。これにより、各チャネルのＤＭＡ要求は、１データ転送単位ずつ均等に処理が進められる。その結果、チャネルの追加・削除も容易となる。このような処理を繰り返し、あるチャネルのＤＭＡ要求の未処理分が無くなれば、そのチャネルは「有効」状態から終了状態となる。
このように、チャネル数を可変にできる上、チャネル管理テーブルへの登録および削除が容易である。そのため、あるチャネルに対して使用頻度の高い転送パターンのパラメータ設定を行って、そのチャネルの情報すべてをメモリ上に保持し、必要に応じてチャネル管理テーブルへの登録・削除、及び有効化・無効化を行うことで、頻度の高い転送パターンを再度パラメータ設定する必要がなくなり、オーバヘッドを大きく削減できる。
［第３の実施の形態］
第３の実施の形態は、上位プロセッサによってＤＭＡＣを制御するものである。
図１０は、第３の実施の形態に係るシステム構成例を示す図である。図１０に示すように、上位プロセッサ２１には、バス２６を介してメモリ２２、ＤＭＡＣ２４およびＤＭＡＣ用メモリ２５が接続されている。また、上位プロセッサ２１は、専用バス２８によってＤＭＡＣ２４に対して接続されている。メモリ２２とＤＭＡＣ２４とは、バス２７を介してメモリ２３に接続されている。さらに、ＤＭＡＣ２４は、バス２９を介してＤＭＡＣ用メモリ２５に接続されている。
専用バス２８は、制御信号として、リセット信号や、転送終了信号を伝送する。これにより、上位プロセッサ２１がＤＭＡＣ用メモリ２５にアクセスして、ＤＭＡプログラムを入れ替えたり、ＤＭＡ転送のタイミングを制御したりすることが可能となる。
従来のＤＭＡＣはハードウェアで実現されているため、ＤＭＡＣの備えている機能そのものは、システム動作中はもちろん、システム停止時でも、変更することができない。
一方、図１０に示す第３の実施の形態の構成では、ＤＭＡＣ２４を一時停止状態にし、上位プロセッサがＤＭＡプログラムを入れ替え、ＤＭＡＣ２４を再スタートさせることが可能である。また、転送処理の実行タイミングを上位プロセッサと同期するようにＤＭＡＣプログラムを構成することにより、細やかなタイミング制御も可能となる。
以下、ＤＭＡＣプログラムの入れ替え処理について説明する。
図１１は、動作中のプログラム入れ替えの動作の処理のフローチャートである。以下、図１１に示す処理をステップ番号に沿って説明する。
［ステップＳ２１］上位プロセッサ２１は、専用バス２８を介してリセット信号を出力し、ＤＭＡＣ２４を停止状態にする。
［ステップＳ２２］ＤＭＡＣ２４が停止している状態で、上位プロセッサ２１はＤＭＡＣ用メモリ２５上にＤＭＡプログラムをダウンロードする。
［ステップＳ２３］上位プロセッサ２１は、ＤＭＡＣ用メモリ２５内の各種テーブルの初期化を行う。
［ステップＳ２４］上位プロセッサ２１は、リセット信号を解除する。これにより、ＤＭＡＣ２４の動作がスタートする。
このようにして、ＤＭＡプログラムを入れ替えることができる。
その後、上位プロセッサ２１は、ＤＭＡ転送の要求が発生すると、まず、ＤＭＡ要求パラメータをＤＭＡ要求パラメータテーブルに書き込み、転送の設定を行う。すでに登録されたチャネルに対するＤＭＡ転送要求の場合は、上位プロセッサ２１は、ＤＭＡ要求パラメータテーブルをＤＭＡＣ用メモリ２５に格納する。そして、上位プロセッサ２１は、該当するチャネルに対応するＤＭＡ要求管理テーブルの最後に、新たに格納したＤＭＡ要求パラメータテーブルへのポインタを登録する。
もし新しいチャネルに対するＤＭＡ転送要求である場合には、上位プロセッサ２１は、新たなＤＭＡ要求管理テーブルを作成する。そして、上位プロセッサ２１は、ＤＭＡ要求パラメータテーブルをＤＭＡ用メモリ２５に格納し、そのＤＭＡ要求パラメータテーブルへのポインタを、新規チャネルとして生成したＤＭＡ要求管理テーブルに登録する。
ＤＭＡＣ２４で実行されるＤＭＡプログラムは、起動後、あるいは転送要求待ちの状態では、まずチャネル管理テーブルを参照する。チャネル管理テーブルに、チャネルテーブルへのポインタが登録されていると、転送処理を開始する。転送処理の詳細は、第２の実施の形態と同様である。
ここで、ＤＭＡＣ２４はＤＭＡ要求パラメータのオプションパラメータにおける設定で終了通知設定がＯＮの場合は、転送要求を処理完了した際に、ホストへ転送処理の終了を通知する。
［第４の実施の形態］
第４の実施の形態では、ＤＭＡＣが上位プロセッサからの転送開始指示に従って転送設定情報を読み取り、転送を開始するようにＤＭＡプログラムを動作記述する。これによって上位プロセッサは、従来のハードウェア回路による固定機能のＤＭＡＣへの設定と同様に、転送元アドレス、転送先アドレス、転送サイズなどを設定し、転送開始指示を送ることにより、転送を開始させることができる。すなわち、既存のシステムにおける上位プロセッサの動作を変更せずに、本発明に係るＤＭＡデータ転送装置（ＤＭＡＣとＤＭＡＣ用メモリ）を実装可能となる。
図１２は、第４の実施の形態のシステム構成例を示す図である。なお、第４の実施の形態におけるシステム構成は、図１０に示した第３の実施の形態とほぼ同じであるため、同一の構成要素には同一の符号を付し、説明を省略する。
第４の実施の形態では、ＤＭＡＣ用メモリ２５に格納される情報が、第３の実施の形態と異なる。第４の実施の形態では、ＤＭＡＣ用メモリ２５に、ＤＭＡ要求設定テーブル２５ａ、ＤＭＡチャネル情報テーブル２５ｂ、ＤＭＡプログラム２５ｃ、ＤＭＡ要求パラメータテーブル２５ｊ、およびＤＭＡ要求管理テーブル２５ｋが格納される。ＤＭＡチャネル情報テーブル２５ｂ、ＤＭＡ要求パラメータテーブル２５ｊ、およびＤＭＡ要求管理テーブル２５ｋに関しては、図６に示した第２の実施の形態の同名の要素と同じ情報である。
ＤＭＡ要求設定テーブル２５ａは、チャネル毎のＤＭＡ要求パラメータ等が登録される。ＤＭＡプログラム２５ｃは、第４の実施の形態に係る処理をＤＭＡＣ２４に実行させるためのプログラムである。
ところで、ハードウェアにより固定された機能を有するＤＭＡＣ用のＤＭＡ設定パラメータは、一般にメモリ空間上のＩ／Ｏレジスタにマッピングされる。第４の実施の形態では、ＤＭＡ設定パラメータがメモリ空間上のＩ／Ｏレジスタにマッピングされる形態を維持して、プログラムによる機能変更可能なＤＭＡＣ２４を適用する場合を想定する。
図１３は、ＤＭＡ要求設定テーブルのデータ構造例を示す図である。図１３に示すＤＭＡ要求設定テーブル２５ａは、Ｉ／ＯレジスタにマッピングされたＤＭＡパラメータテーブルと同等のパラメータを、ＤＭＡ用メモリ２５上のあるアドレスにテーブル形式で格納したものである。
図１３に示すように、ＤＭＡ要求設定テーブル２５ａには、チャネル番号、項目、および値の欄が設けられている。チャネル番号の欄には、チャネルの識別番号が登録される。項目の欄には、各チャネルに設定されるパラメータの名称が登録される。パラメータとしては、ステータス、転送元、転送先、転送サイズ等がある。ステータスは、そのチャネルが転送要求を受け付け可能か否かを示す情報である。転送元は、転送元のデータが格納された領域の先頭のメモリアドレスである。転送先は、転送されたデータを格納すべき領域の先頭のメモリアドレスである。転送サイズは、転送すべきデータのデータ容量である。
次に、第４の実施の形態における処理手順を説明する。
図１４は、上位プロセッサによるＤＭＡ起動処理手順を示すフローチャートである。以下、図１４に示す処理をステップ番号に沿って説明する。
［ステップＳ３１］上位プロセッサ２１は、ＤＭＡ要求設定テーブル２５ａを参照し、処理対象チャネルのステータスを読み出す。
［ステップＳ３２］上位プロセッサ２１は、読み出したチャネルのステータスに基づいて、転送要求の受け付けが可能かどうかを判断する。転送要求が可能であれば、処理がステップＳ３３に進められる。転送要求が不可能であれば、処理がステップＳ３１に進められ、転送要求が可能になるまでステータスの判断が繰り返される。
［ステップＳ３３］上位プロセッサ２１は、ＤＭＡ転送に必要なパラメータを、ＤＭＡ要求設定テーブル２５ａ内に設定する。パラメータは、転送元のアドレス、転送先のアドレス、転送サイズ等である。
［ステップＳ３４］上位プロセッサ２１は、処理対処チャネルのＤＭＡ転送開始の指示を、ＤＭＡ要求設定テーブル２５ａ内の処理対象チャネルのステータスに書き込む。
このような処理を上位プロセッサ２１が実行することで、ＤＭＡ要求がＤＭＡＣ２４に通知される。
ＤＭＡＣ２４は、所定のタイミングでＤＭＡ要求検出処理を行う。
図１５は、ＤＭＡＣによるＤＭＡ要求検出処理を示すフローチャートである。なお、ＤＭＡ要求検出処理は、ＤＭＡ転送の空き時間帯を利用して実行される。以下、図１５に示す処理をステップ番号に沿って説明する。
［ステップＳ４１］ＤＡＭＣ２４は、ＤＭＡ要求設定テーブル２５ａのチャネルのステータスを読み出す。
［ステップＳ４２］ＤＭＡＣ２４は、ステータスに基づいてＤＭＡ要求があるか否かを判断する。具体的には、チャネルのステータスにＤＭＡ転送開始指示が設定されていた場合、そのチャネルのＤＭＡ転送要求があると判断される。ＤＭＡ要求があれば、処理がステップＳ４３に進められる。ＤＭＡ要求がなければ終了する。
［ステップＳ４３］ＤＭＡＣ２４は、ＤＭＡ要求が出されているチャネルのステータスを、ＤＭＡ要求受け付け禁止に変更する。
［ステップＳ４４］ＤＭＡＣ２４は、ＤＭＡ転送を実行すべきチャネルのパラメータを、ＤＭＡ要求設定テーブル２５ａからＤＭＡ要求パラメータテーブル２５ｊにコピーする。
［ステップＳ４５］ＤＭＡＣ２４は、ＤＭＡ要求が出されているチャネルのステータスを、ＤＭＡ要求受け付け可能に変更する。
このように、ＤＭＡＣ２４はＤＭＡ転送処理の合間の時間帯を利用し、各チャネルのステータスを読み取って、新たなＤＭＡ要求の有無（転送開始ステータス）を確認する。要求がある場合には、転送パラメータを該当チャネルのＤＭＡ要求パラメータテーブル２５ｊにコピーし、ＤＭＡ要求設定テーブル２５ａ内の該当チャネルのステータスを「受け付け可能」の状態に戻す。
これら処理が終わると、ＤＭＡＣ２４は通常の転送処理シーケンスに戻り、新たに登録されたＤＭＡ要求に応じたＤＭＡ転送を、ＤＭＡプログラム２５ｃに定義された転送処理シーケンスに従って処理する。
以上の様に、上位プロセッサ２１側から見えるＤＭＡ転送のパラメータインターフェイスを従来のＩ／Ｏレジスタと同様のテーブルで実現することにより、上位プロセッサ２１のプログラムを変更することなく、ＤＭＡ転送処理することが可能となる。
すなわち、ハードウェアで実現されていた従来のＤＭＡ転送では、ＤＭＡ要求設定テーブル２５ａに相当するパラメータテーブルをＩ／Ｏレジスタなどに搭載していた。そして、Ｉ／ＯレジスタにＤＭＡ要求に沿ったパラメータを書き込んで開始指示を出すと、ＤＭＡＣが指示に従って転送処理を実行していた。
一方、第４の実施の形態のシステムでは、ＤＭＡ要求設定テーブル２５ａをＤＭＡＣ用メモリ２５に配置して、上位プロセッサ２１はそのテーブル領域へパラメータを書き込む。そして、ＤＭＡＣ２４はその領域を監視し、要求を確認し、そのＤＭＡ要求に応じたＤＭＡ転送処理を開始する。このような方法により、上位プロセッサ２１は従来方式となんら変わることなくＤＭＡ転送を扱うことができるようになる。
ここで、ＤＭＡ要求設定テーブル２５ａ内のステータスの書き換え手順について説明する。
図１６は、ステータス更新の手順を示すシーケンス図である。まずＤＭＡＣ２４は、ＤＭＡ要求設定テーブル２５ａのステータスを「受け付け可」状態とする（ステップＳ５１）。その後、ＤＭＡＣ２４は、要求が来ないか、一定時間ごとにステータスの確認を行う（ステップＳ５２）。
一方、上位プロセッサ２１は、転送要求が発生すると、パラメータをＤＭＡ要求設定テーブル２５ａに書き込んでも良いかどうかに関し、ＤＭＡ要求設定テーブル２５ａのステータスを参照することで確認する（ステップＳ５３）。ステータスが「ＯＫ」ならば、上位プロセッサ２１は、転送アドレス等のパラメータを書き込んで、最後にステータスを「転送開始要求」に書き換える（ステップＳ５４）。
ＤＭＡＣ２４は、一定時間間隔のステータス確認（ステップＳ５５）において転送開始要求を検出すると、転送要求のパラメータを書き込んだＤＭＡ要求パラメータテーブル２５ｊを生成すると同時に、ＤＭＡ要求管理テーブル２５ｋにＤＭＡ要求パラメータテーブル２５ｊへのポインタを登録する（ステップＳ５６）。最後に、ＤＭＡＣ２４は、ステータスを「受け付け可」に戻す（ステップＳ５７）。
このような方法により、上位プロセッサは、従来のＤＭＡ制御とまったく同等に本発明のＤＭＡＣを扱うことが可能となり、従来方式とのプログラム互換性を保つことができる。
［第５の実施の形態］
第５の実施の形態は、上位プロセッサの負荷の軽減を図ったものである。第５の実施の形態では、ＤＭＡプログラムで詳細なＤＭＡ転送動作を記述し、上位制御装置である上位プロセッサが、タイミングの制御や、ステータス確認のみを行う。これにより、上位プロセッサの負荷を軽減することが可能となる。
具体的には、第４の実施の形態では、上位プロセッサ２１が必要なタイミングでＤＭＡ転送のパラメータ設定とスタート指示（ＤＭＡ転送開始指示）を行うことを切っ掛けとして、ＤＭＡＣ２４がＤＭＡ要求設定テーブル２５ｅにＤＭＡ要求を追加していった。
そこで、第５の実施の形態では、上位プロセッサがスタート指示を伴わない転送パラメータの設定を、ＤＭＡ要求管理テーブルに対して直接行うようにする。その後、上位プロセッサ２１から同期のためのスタート指示を与えることにより、ＤＭＡＣ２４がＤＭＡ要求管理テーブル内の転送要求を１つずつ処理していく。この場合、ＤＭＡＣは、１つの転送が終了すると次のスタート指示まで待機状態に入る。具体的には、ＤＭＡＣは、チャネル管理テーブルに同期パラメータ領域を確保し、ＤＭＡＣはＤＭＡ要求に対する処理を開始する際に、この同期パラメータで開始の指示があるまで待機する。
一般に、信号処理などでは、ＤＭＡ転送のパターンが決まっているケースが多い。例えば、１画面の画像データを小さなブロック領域に分割し、ＤＭＡによって１ブロックを読み込んで処理し、処理完了後に再びＤＭＡによって１ブロック分のデータ出力を行い、これを一画面分繰り返す場合などである。この場合、１画面内のブロック数だけ、規則的に入力と出力のＤＭＡ転送を繰り返す。そのため、一画面分の各ブロックについて、転送パラメータを予め設定しておけば、上位プロセッサ２１は対象ブロックの処理に合わせて、同期制御を行うだけでよい。
このように、前記第４の実施の形態は、上位プロセッサ２１が転送パラメータをセットし、転送指示を行うことによってＤＭＡが開始される方式であった。この方式では上位プロセッサ２１は、自らが処理中のプログラム処理の進行状況に合わせて、次に必要となるデータの準備や、処理後のデータの出力（待避）のためにＤＭＡ転送処理を行う。従来のＤＭＡＣもこのケースに相当し、処理の進行状況に合わせて転送タイミングが決まるため、上位プロセッサがプログラム処理の合間に転送の設定を行っていた。しかしながら、様々な転送パラメータの設定が頻繁に発生するために、上位プロセッサのプログラム処理自体に、オーバヘッドとして影響を及ぼすことがあった。
第５の実施の形態では、ＤＭＡＣはプログラムによって処理すべきＤＭＡ転送のフローを全てプログラムし、上位プロセッサはタイミングの制御だけを指示する。これによって、上位プロセッサの負荷が軽減される。
図１７は、第５の実施の形態に係るシステムの構成例を示す図である。第５の実施の形態に係るシステムは、第４の実施の形態とほぼ同じであるため、同一の構成要素には同一の符号を付し、説明を省略する。
第５の実施の形態では、ＤＭＡＣ用メモリ２５に格納される情報が第４の実施の形態と異なる。第５の実施の形態では、ＤＭＡＣ用メモリ２５内に、ＤＭＡ要求設定テーブル２５ａ、ＤＭＡチャネル情報テーブル２５ｂ、転送同期テーブル２５ｅ、ＤＭＡプログラム２５ｆ、ＤＭＡ要求パラメータテーブル２５ｊ、およびＤＭＡ要求管理テーブル２５ｋが格納される。ＤＭＡ要求設定テーブル２５ａ、ＤＭＡチャネル情報テーブル２５ｂ、ＤＭＡ要求パラメータテーブル２５ｊ、およびＤＭＡ要求管理テーブル２５ｋについては、第４の実施の形態の同名のテーブルと同じデータ構造である。
転送同期テーブル２５ｅは、チャネルに対する開始指示を管理するための情報である。ＤＭＡプログラム２５ｆは、上位プロセッサへの負荷を軽減させるためのＤＭＡ転送用のプログラムである。
図１８は、転送同期テーブルの例を示す図である。転送同期テーブル２５ｅには、チャネル番号（Ｎｏ．）に対応付けて、ＤＭＡチャネル情報テーブルへのポインタとステータスとが登録されている。ステータスは、転送の状態（転送開始、または転送終了）が設定される。
このような構成のシステムにおいて、上位プロセッサ２１の負荷を軽減させることができる。ここで、実施例としてダブルバッファ形式の出力バッファの制御を例に挙げる。
ダブルバッファ形式では、上位プロセッサ２１は演算結果をバッファＡとバッファＢに交互に出力する。具体的には、上位プロセッサ２１は、バッファＡに出力を開始する際に、バッファＢに格納されている出力データをＤＭＡ転送で外部メモリへ出力する。続いて、上位プロセッサ２１は、バッファＡへのデータ出力が完了すると、今度は演算結果の出力先をバッファＢに切り替える。そして、上位プロセッサ２１は、バッファＡに格納されている処理済のデータを外部メモリへＤＭＡによって出力開始すると同時に、バッファＢへの出力を開始する。
従来では、これらの処理を上位プロセッサが全て引き受け、ＤＭＡＣは、指示されたパラメータに従って転送を行うだけであった。
そこで、第５の実施の形態では、ＤＭＡ要求パラメータテーブルにおいて、２つの要求のみを有効とする。そして、有効なＤＭＡ要求を個別のチャネルで実行するものとし、それぞれのＤＭＡチャネル情報テーブル２５ｂにバッファからメモリへのＤＭＡ転送用のパラメータを設定する。このときＤＭＡチャネル情報テーブル２５ｂには、繰り返し実行を示すパラメータが設定される。
図１９は、第５の実施の形態におけるＤＭＡチャネル情報テーブルの例を示す図である。図１９に示すように、ＤＭＡチャネル情報テーブル２５ｂのモードとして「ｒｅｐｅａｔ」、オプションパラメータとして「ｆｏｒｅｖｅｒ」が設定されている。「ｒｅｐｅａｔ」のモードは、テーブルの最後まで処理が終わると、次の要求をテーブルの先頭に戻すことを指示するものである。オプションパラメータ「ｆｏｒｅｖｅｒ」は、繰り返し回数が永久（制限なし）であることを示す。
このように転送の種類としてはバッファＡとバッファＢの転送の２種しかないため、ここでは要求が２種類のみが登録されＤＭＡチャネル情報テーブル２５ｂのモード指定で「ｒｅｐｅａｔ」、オプションで「ｆｏｒｅｖｅｒ」が指定されている。このような指定に対して、ＤＭＡＣ２４は、タイミングだけ上位プロセッサ２１の指示に合わせて、バッファＡとバッファＢの転送を交互に永久に自走で繰り返す。これによって上位プロセッサは非常に軽いタイミング指示の処理のみですむ。
図２０は、ＤＭＡＣの同期動作の手順を示すフローチャートである。以下、図２０に示す処理をステップ番号に沿って説明する。
［ステップＳ６１］ＤＭＡＣ２４は、上位プロセッサ２１からスタート指示が入力されたか否かを判断する。スタート指示が入力された場合、処理がステップＳ６２に進められる。スタート指示が入力されていなければ、ステップＳ６１の処理が繰り返される。
［ステップＳ６２］ＤＭＡＣ２４は、バッファＡ用のＤＭＡ転送処理を行う。
［ステップＳ６３］ＤＭＡＣ２４は、上位プロセッサ２１からスタート指示が入力されたか否かを判断する。スタート指示が入力された場合、処理がステップＳ６４に進められる。スタート指示が入力されていなければ、ステップＳ６３の処理が繰り返される。
［ステップＳ６４］ＤＭＡＣ２４は、バッファＢ用のＤＭＡ転送処理を行う。その後、処理がステップＳ６１に進められる。
ＤＭＡ転送が完了すると、転送同期テーブル２５ｅ内の該当するチャネルのステータスが転送終了となる。転送終了のステータスになったチャネルに関しては、ステータスが転送開始に変更されるまで、転送が開始されない。
なお、ここでは２つのバッファについて交互にＤＭＡ転送するケースを示したが、パターン化されるＤＭＡ転送は、このような制御によって、ＤＭＡＣ側に処理の大半を自律動作させることが可能となり、上位プロセッサ２１の負荷の大幅な削減が期待できる。
また、ＤＭＡ要求パラメータのオプションフィールドに、繰り返し属性を設定することができるようにすれば、ＤＭＡＣ２４は、転送終了時にこの属性を読み取った場合に、ＤＭＡ要求設定テーブル２５ａの先頭に戻って繰り返し実行できる。これによって、次の１画面に対して、同様の処理を行うことが可能である。
さらに、第５の実施の形態に係る方式は、１つのＤＭＡ転送が終わると、次のスタート指示を待機する。そのため、転送完了通知を受けたら即座に次のスタート指示（上位でやるか、ＤＭＡＣの上位層でやるかは不問）を出せば、普通にキューイングされたＤＭＡの連続実行と等価な処理を行うことができる。
［第６の実施の形態］
第６の実施の形態は、設定されるパラメータ値についてのチェック機構を備えたものである。
ハードウェアで実現されているＤＭＡＣは、通常、設定されるパラメータ値についてのチェック機構を備えていない。これはハードウェアが煩雑になる上、搭載メモリ容量を変更した場合などの対処が難しいためである。
本発明に係るシステムは、プログラムに従って動作するため、システムのメモリ領域情報テーブルを備えている。そして、ＤＭＡＣは、メモリ領域情報テーブルを参照しながらＤＭＡ要求のアドレスやサイズのパラメータを検査し、転送処理を開始する前または、実行中に、領域のエラーを検出して、上位制御装置に通知するエラー検出機構を備えることが容易である。
図２１は、第６の実施の形態に係るシステムの構成例を示す図である。第６の実施の形態に係るシステムは、第４の実施の形態とほぼ同じであるため、同一の構成要素には同一の符号を付し、説明を省略する。
第６の実施の形態では、ＤＭＡＣ用メモリ２５に格納される情報が第４の実施の形態と異なる。第６の実施の形態では、ＤＭＡＣ用メモリ２５内に、ＤＭＡ要求設定テーブル２５ａ、ＤＭＡチャネル情報テーブル２５ｂ、メモリ領域管理情報テーブル２５ｇ、およびＤＭＡプログラム２５ｈが格納される。ＤＭＡ要求設定テーブル２５ａとＤＭＡチャネル情報テーブル２５ｂについては、第４の実施の形態の同名のテーブルと同じデータ構造である。
メモリ領域管理情報テーブル２５ｇは、メモリ領域毎のステータスが登録される。ＤＭＡプログラム２５ｈは、パラメータのチェック機構の処理手順を含むＤＭＡ転送用のプログラムである。
図２２は、メモリ領域管理情報テーブルのデータ構造例を示す図である。メモリ領域管理情報テーブル２５ｇには、エリア番号（Ｎｏ．）、スタート（ｓｔａｒｔ）、エンド（ｅｎｄ）、ライト（ｗｒｉｔｅ）、およびリード（ｒｅａｄ）の欄が設けられている。
エリア番号の欄には、区分けされた各記憶領域の管理番号が登録される。スタートの欄には、記憶領域の先頭のメモリアドレス（開始アドレス）が登録される。エンドの欄には、記憶領域の最後尾のメモリアドレス（終了アドレス）が登録される。ライトの欄には、記憶領域に対する書き込みの可否が設定される。ライトの欄に「ＯＫ」と登録されていれば書き込み可能であり、「ＮＧ」と登録されていれば書き込み不可である。リードの欄には、記憶領域からの読み取りの可否が設定される。リードの欄に「ＯＫ」と登録されていれば読み取り可能であり、「ＮＧ」と登録されていれば読み取り不可である。
図２３は、パラメータ検査処理の手順を示すフローチャートである。なお、パラメータ検査処理は、ＤＭＡ要求の転送元アドレスと転送先アドレスとのそれぞれに関して行われる。以下、図２３に示す処理をステップ番号に沿って説明する。
［ステップＳ７１］ＤＭＡＣ２４は、メモリ領域管理情報テーブル２５ｇから領域情報を１つ読み取る（たとえば、エリア番号順に選択される）。
［ステップＳ７２］ＤＭＡＣ２４は、読み取った記憶領域と、ＤＭＡ要求で指定されたアドレス（転送元アドレスまたは転送先アドレス）とを比較する。
［ステップＳ７３］ＤＭＡＣ２４は、ＤＭＡ要求のアドレスが、ステップＳ７２で選択した記憶領域の範囲に入っているかを判定する。記憶領域内であれば処理がステップＳ７４に進められる。記憶領域外であれば処理がステップＳ７７に進められる。
［ステップＳ７４］ＤＭＡＣ２４は、該当した記憶領域の読み書きの属性を検査する。転送元アドレスの検査であれば、リードの属性が検査され、転送先アドレスの検査であれば、ライトの属性が検査される。
［ステップＳ７５］ＤＭＡＣ２４は、ステップＳ７４で検査の結果、アクセス違反か否かを判断する。すなわち、検査対象の属性が「ＯＫ」であればアクセス可能であり、「ＮＧ」であればアクセス違反である。アクセス違反でなければ処理がステップＳ７６に進められる。アクセス違反であれば処理がステップＳ７７に進められる。
［ステップＳ７６］ＤＭＡＣ２４は、ＤＭＡプログラム２５ｈに従ったＤＭＡ転送を行い、処理を終了する。
［ステップＳ７７］ＤＭＡＣ２４は、全ての記憶領域（エリア）の検証を行ったか否かを判断する。全てのエリアに関して検証済の場合、処理がステップＳ７８に進められる。未検証のエリアが存在する場合、処理がステップＳ７９に進められ、他のエリアに関して検証が行われる。
［ステップＳ７８］ＤＭＡＣ２４は、すべてのエリアでエラーした場合は、パラメータ設定の不正とし、エラーを通知する。エラーの通知は、上位プロセッサ２１から参照できるように、例えばＤＭＡ要求パラメータテーブルあるいはＤＭＡ要求管理テーブルにステータスとして記述される。
［ステップＳ７９］ＤＭＡＣ２４は、メモリ領域管理情報テーブル２５ｇから次の領域情報を読み取り、処理をステップＳ７２に進める。
このような検査処理を起動するタイミングとしては、２通りの方法が考えられる。第１に、新しい転送要求の処理に入る前に検査を行う場合であり、第２に、転送処理の最中に１データ転送単位ごとに検査を行う場合である。
前者は、転送領域が一次元で連続した領域などの単純ブロック領域（開始アドレスからサイズを加算した値が終了アドレスであるような、単純転送のケース）に関しては、処理も軽く有効である。この場合、転送元および転送先の連続領域の先頭と終わりのそれぞれ２つのアドレスを検査して、いずれもＯＫとなれば、ＤＭＡ転送要求のエラー無しであると判断できる。ただし、複雑な転送については、先頭アドレスとサイズだけでは領域をエラーを単純に判断できない。
後者は、転送領域が矩形である場合や、さらに複雑な形状の場合に有効である。ＤＭＡＣ２４は、プログラムにより複雑な転送も実現が容易であるため、転送開始の初回で検査を１度実行して判断するのが困難な場合が発生する。１データ単位の転送の度に検査すると、転送速度の低下を招くが、ＤＭＡ転送のアドレス設定ミス等を検出するという意味では、上位プロセッサ２１のプログラムデバッグ段階で有効に利用することができる。つまり、上位プロセッサ２１のプログラムデバッグ段階で、検査を有効にし、プログラムのデバッグが完了した後には、もはや検査の必要は無く、検査はスキップすればよい。
このように、プログラムで動作するＤＭＡＣ２４の柔軟性を活用して、システムのメモリ領域情報を元に転送領域のエラー検査を行うことができる。すなわち、検査対象アドレスが、所定のメモリ領域（アクセス可能なメモリ空間）の範囲内であるか、テーブルの情報とひとつずつ比較しながら検査する。また、読み出し専用領域に書き込もうとしていないか、などの領域属性もチェックすることもできる。ここで、領域の範囲と読み書きの属性が共にマッチすれば、正常ステータスを返し、包含するアドレス範囲が見つからない場合や、読み書きの属性の誤りの場合には、エラーを返す。
この検査フローを起動するタイミングであるが、新たなＤＭＡ要求を処理する最初に起動する場合と、１データ単位の転送毎に起動する場合が考えられる。
以下、本発明のより具体的な実現例を、他の実施の形態として説明する。
［第７の実施の形態］
第７の実施の形態は、上記第１の実施の形態の具体的な実現例である。
図２４は、第７の実施の形態のシステム構成例を示す図である。図２４に示すように、システム全体を制御するプロセッサ５１に対し、バス５６を介してメモリ５２，５３やＤＭＡＣ５４が接続されている。ＤＭＡＣ５４には、ＤＭＡＣ用メモリ５５が接続されている。ＤＭＡＣ用メモリ５５には、命令メモリ領域５５ａとデータメモリ領域５５ｂとが設けられている。ＤＭＡＣ用メモリ５５の命令メモリ領域５５ａには、ＤＭＡＣの動作を記述したＤＭＡプログラムが配置される。
ＤＭＡＣ５５は、命令メモリ領域５５ａに格納されたＤＭＡプログラムに従った処理手順でＤＭＡ転送を行うことができる。また、ＤＭＡＣ５５は、ＤＭＡ転送に必要な各種情報をデータメモリ領域５５ｂに格納したり、データメモリ領域５５ｂから情報を読み出したりする。
ＤＭＡＣ用メモリ５５としては、命令とデータを同時に読み出せるメモリを利用できる。たとえば、ＤＭＡＣ用メモリ５５として、２ポートリードメモリを搭載することができる。また、ＤＭＡＣ用メモリ５５として、命令メモリ領域５５ａに相当する命令メモリとデータメモリ領域５５ｂに相当するデータメモリとを、それぞれ別に搭載することも可能である。このような構成とすることで、命令メモリからの命令フェッチ、およびデータメモリのリードライトが同時に行えるため、命令フェッチとデータのリードライトのメモリアクセス衝突によるウェイト発生を回避できる。その結果、ＤＭＡＣのプログラム処理を高速に実行することが可能となる。
また、ＤＭＡＣ用メモリ５５として、バスを介して接続されたメモリに、データメモリ領域５５ｂとは別のデータメモリ領域を設けることも可能である。このとき、各データメモリ領域で、ＤＭＡＣ５４によるデータのＤＭＡ転送が可能となる。
図２５は、ＤＭＡＣの内部構成を示すブロック図である。図２５に示すように、ＤＭＡＣ５４は、汎用レジスタ５４ａ、アドレスレジスタ５４ｂ、加算器５４ｃ、セレクタ５４ｄ、データセレクタ５４ｅ、メモリインタフェイス５４ｆ、命令デコーダ５４ｇ、リードアドレス生成部５４ｈ、ライトアドレス生成部５４ｉ、セレクタ５４ｊ、加算器５４ｋ、セレクタ５４ｍ、およびＰＣ（プログラムカウンタ）５４ｎを有している。リードアドレス生成部５４ｈは、セレクタ５４１、加算器５４２、およびセレクタ５４３で構成される。なお、ライトアドレス生成部５４ｉの内部構成も、リードアドレス生成部５４ｈと同様である。
汎用レジスタ５４ａの２つの出力信号があり、一方の出力信号は加算器５４ｃとセレクタ５４ｄとに入力され、他方の出力信号は加算器５４ｃにのみ入力される。アドレスレジスタ５４ｂの４つの出力信号のうち２つの出力信号がリードアドレス生成部５４ｈに入力され、他の２つの出力信号がライトアドレス生成部５４ｉに入力される。アドレスレジスタ５４ｂからリードアドレス生成部５４ｈに入力される２つの信号のうち、一方の信号がセレクタ５４１に入力され、他の信号が加算器５４２とセレクタ５４３とに入力される。同様に、アドレスレジスタ５４ｂからライトアドレス生成部５４ｉに入力される信号も、ライトアドレス生成部５４ｉ内のセレクタや加算器に分配される。
加算器５４ｃは、汎用レジスタ５４ａから入力された２つのデータを加算し、加算結果をセレクタ５４ｄに対して出力する。セレクタ５４ｄは、命令デコーダ５４ｇから送られる信号に基づいて、加算器５４ｃから出力された信号と汎用レジスタ５４ａから入力された信号との一方を選択し、データセレクタ５４ｅに対して出力する。
データセレクタ５４ｅは、命令デコーダ５４ｇから送られる信号に基づいて、セレクタ５４ｄやメモリインタフェイス５４ｆから入力されるデータのうち、レジスタやＤＭＡＣ用メモリ５５に格納すべきデータを選択する。データセレクタ５４ｅは、命令デコーダ５４ｇからの信号に従い、選択したデータを汎用レジスタ５４ａ、アドレスレジスタ５４ｂまたはメモリインタフェイス５４ｆに対して出力する。
メモリインタフェイス５４ｆは、ＤＭＡＣ用メモリ５５に対してデータの入出力を行う。たとえば、メモリインタフェイス５４ｆは、データセレクタ５４ｅから入力されたライトデータを、ライトアドレス生成部５４ｉから入力されるライトデータアドレスで示される記憶領域に格納する。また、メモリインタフェイス５４ｆは、リードアドレス生成部５４ｈから入力されるリードデータアドレスで示される記憶領域からリードデータを読み取り、データセレクタ５４ｅに対して出力する。
命令デコーダ５４ｇは、命令メモリ領域５５ａに格納されたＤＭＡプログラムの命令を受け取り、その命令を解釈する。そして、命令デコーダ５４ｇは、解釈した命令で指示される動作内容に従って、汎用レジスタ５４ａやアドレスレジスタ５４ｂからデータを読み取り、演算処理を行う。命令デコーダ５４ｇは、セレクタ５４ｄ、セレクタ５４１、セレクタ５４３、セレクタ５４ｊおよびセレクタ５４ｍに対して制御用の信号を出力しており、演算結果に従って信号を制御する。
リードアドレス生成部５４ｈは、命令デコーダ５４ｇからの信号に従って、データを読み取るためのリードデータアドレスを生成する。具体的には、アドレスレジスタ５４ｂから出力される値と、命令デコーダ５４ｇから出力される即値加算（ＡＤＤＩ）値がセレクタ５４１に入力される。セレクタ５４１は、命令デコーダ５４ｇからの信号に従って、入力された値を選択し、加算器５４２に対して出力する。加算器５４２は、アドレスレジスタ５４ｂから入力された値とセレクタ５４１から入力された値とを加算し、セレクタ５４３に対して入力する。セレクタ５４３は、命令デコーダ５４ｇからの信号に従って、アドレスレジスタ５４ｂ、加算器５４２および命令デコーダ５４ｇの何れかから入力された値を選択し、リードデータアドレスとしてデータセレクタ５４ｅとメモリインタフェイス５４ｆとに対して出力する。
ライトアドレス生成部５４ｉは、命令デコーダ５４ｇからの信号に従って、データを書き込むためのライトデータアドレスを生成する。ライトアドレス生成部５４ｉの内部構成は、リードアドレス生成部５４ｈと同じであり、生成されたライトデータアドレスは、データセレクタ５４ｅとメモリインタフェイス５４ｆとに対して出力される。
セレクタ５４ｊには、ＰＣ更新値と、命令デコーダ５４ｇから出力される相対分岐値とが入力される。セレクタ５４ｊは、命令デコーダ５４ｇからの信号に従って、入力された何れかの値を選択し、加算器５４ｋに対して出力する。
加算器５４ｋは、セレクタ５４ｊの出力値に加え、ＰＣ５４ｎの値が入力されており、２つの値を加算する。加算器５４ｋは、加算結果をセレクタ５４ｍに対して出力する。
セレクタ５４ｍは、加算器５４ｋの加算結果に加え、命令デコーダ５４ｇから絶対分岐値が入力されると共に、ＰＣ５４ｎの値が入力される。セレクタ５４ｍは、命令デコーダ５４ｇからの信号に従って、入力された何れかの値を選択し、ＰＣ５４ｎに対して出力する。たとえば、絶対分岐が行われるときは、命令デコーダ５４ｇからの絶対分岐値が選択され、ＰＣの更新が行われる際には、加算器からの出力結果が選択され、命令をリピートする際にはＰＣ５４ｎから入力された値が選択される。
ＰＣ５４ｎは、実行すべき命令の格納アドレスを示すレジスタである。ＰＣ５４ｎに設定された値は、命令フェッチアドレスとしてＤＭＡＣ用メモリ５５に対して出力される。
このような構成のＤＭＡＣ５４によって、ＤＭＡプログラムに応じたＤＭＡ転送が実行される。ＤＭＡＣ５４の構成は、基本構成と拡張構成とに分けることができる。汎用レジスタ５４ａ、加算器５４ｃ、およびセレクタ５４ｄが拡張構成であり、その他が基本構成である。基本構成だけでも本発明の実施は可能であるが、拡張構成があることで、ＤＭＡプログラムの自由度が増す。
基本構成として必要なレジスタ（基本レジスタ）は、以下の通りである。
図２６は、基本レジスタ構成を示す図である。ＤＭＡＣ５４には、基本レジスタ構成６１として、アドレスレジスタ５４ｂ、リピートカウンタ（図２５では省略されているが、命令デコーダ部５４ｇ内部に設けられる）、ＰＣ（プログラムカウンタ）５４ｎが設けられている。アドレスレジスタ５４ｂは複数設けられ、それぞれにレジスタ名として「Ａｎ（ｎは０以上の整数）」が設定される。リピートカウンタは複数設けられ、それぞれにレジスタ名として「ＲＰＣｍ（ｍは０以上の整数）」が設定される。ＰＣ５４ｎのレジスタ名は「ＰＣ」である。
基本構成で機能するときに命令デコーダ５４ｇが処理可能な命令（基本命令）は以下の通りである。
図２７は、ＤＭＡＣで実行可能な基本命令セットを示す図である。図２７に示す基本命令セット６２では、命令フォーマットとその命令の動作内容とが示されている。
命令フォーマット「ｓｅｔ  Ｄ，ｖａｌ」は、「ｖａｌをレジスタＤにセットする」という動作を示している。
命令フォーマット「ｌｏａｄ  Ｄ，（ＳＡＤ）」は、「読み出し元アドレスＳＡＤのデータをレジスタＤへロードする」という動作を示している。
命令フォーマット「ｓｔｏｒｅ（ＤＡＤ），Ｓ」は、「レジスタＳの値を格納先アドレスＤＡＤへストアする」という動作を示している。
命令フォーマット「ｍｏｖ（ＤＡＤ），（ＳＡＤ）」は、「転送元ＳＡＤのデータを転送先アドレスＤＡＤへコピーする」という動作を示している。
命令フォーマット「ｒｅｐｅａｔ」は、「指定回数後続の命令をリピートする」という動作を示している。
命令フォーマット「ｊｕｍｐ  ｃｏｎｄｉｔｉｏｎ，Ｄ」は、「条件（ｃｏｎｄｉｔｉｏｎ）を満たす場合、アドレスＤに分岐する。条件省略時は無条件に分岐。」という動作を示している。
命令フォーマット「ｃａｌｌ  Ｄ」は、「サブルーチンコール」を示している。
命令フォーマット「ｒｅｔｕｒｎ」は、「コールからの復帰」を示している。
図２８は、分岐条件の例を示す図である。図２８に示す分岐条件６３では、条件とその動作内容が示されている。
条件「ＲＰＣｎ＝ｖａｌ」は、「ＲＰＣｎを１だけ減じて、ｖａｌと等しければ真、それ以外は偽。」という動作を示している。
条件「ＲＰＣｎ＞ｖａｌ」は、「ＲＰＣｎを１だけ減じて、ｖａｌよりも大きければ真、それ以外は偽。」という動作を示している。
また、ＤＭＡＣ５４は、複数のアドレス更新機能を有している。アドレス更新機能の内容は以下の通りである。
図２９は、アドレス更新機能を示す図である。図２９に示すアドレス更新機能６４では、アドレス更新指示の表記と、その動作内容とが示されている。
アドレス更新指示が「Ａｎ＋＋ｖａｌ」の場合、「Ａｎをアドレスとして生成し、その後Ａｎにｖａｌを加算」というアドレス更新動作が行われる。
アドレス更新指示が「Ａｎ＋ｖａｌ」の場合、「Ａｎにｖａｌを加算したアドレスを生成」というアドレス更新動作が行われる。
アドレス更新指示が「Ａｎ＋Ａｍ」の場合、「ＡｎにＡｍを加算したアドレスを生成」というアドレス更新動作が行われる。
このような命令をＤＭＡＣ５４が解釈し、その命令に従った処理が実行される。基本的には、レジスタとメモリでのストアとロード、およびメモリ間の転送、そして分岐命令で命令セットを構成する。すなわち、ＤＭＡＣ５４には、一般のプロセッサが備えているような演算機能等を搭載する必要はない。そのため、ＤＭＡＣ５４内のプログラム処理回路の複雑化を防いでＤＭＡＣ５４のコストを下げることが可能である。通常、プロセッサはシステムの中でもコストの高い構成部品であり、マルチプロセッサ構成で、あるプロセッサにＤＭＡ処理を担当させるようなシステムよりも、コストを大幅に削減できる。
ここで、プログラミングの自由度を増すため、ＤＭＡＣ５４内に拡張レジスタを搭載することもできる。
図３０は、拡張レジスタの構成を示す図である。ＤＭＡＣ５４には、拡張レジスタ６５の構成として、汎用レジスタ５４ａとフラグレジスタ（図２５では省略されている）とを実装することができる。汎用レジスタは複数設けられ、それぞれにレジスタ名としてＲｐ（ｐは０以上の整数）が設定される。フラグレジスタはレジスタ名としてＦが設定される。
さらに、ＤＭＡＣ５４が処理可能な拡張命令セットを用意してもよい。
図３１は、拡張命令セットの例を示す図である。図３１に示す拡張命令セット６６では、命令フォーマットとその命令の動作内容とが示されている。
命令フォーマット「ａｄｄ  Ｄ，Ｓ」は、「レジスタＳとＤを加算して、Ｄに代入する。演算ステータスをフラグレジスタに反映する」という動作を示している。
命令フォーマット「ｓｕｂ  Ｄ，Ｓ」は、「レジスタＤからＳを減算して、Ｄに代入する。演算ステータスをフラグレジスタに反映する」という動作を示している。
拡張機能は、フラグレジスタに設定される値に応じて処理条件（拡張条件）が決定される。
図３２は、拡張条件を示す図である。図３２には、拡張条件６７として、条件（ｃｏｎｄｉｔｉｏｎ）と動作内容が示されている。「Ｆ＝ｃｎｄ」条件は「フラグＦがｃｎｄかどうか？」という判断処理を示している。ここでｃｎｄはＺ（ゼロステータス）、ＮＺ（ノンゼロステータス）、などである。このような拡張条件により、拡張機能の処理条件の切り替えが可能となる。
このように、汎用レジスタや拡張命令セットによる比較演算を行うための加算器等をＤＭＡＣ５４に搭載することで、ＤＭＡＣ５４のプログラム自由度がより高くなる。
このような構成のＤＭＡＣ５４が命令メモリ領域５５ａに格納されたＤＭＡプログラムを実行することで、ＤＭＡ転送機能が実現する。
図３３は、ＤＭＡプログラムの一例を示す図である。図３３には、説明の簡単のため、基本的なＤＭＡ転送を実施するためのＤＭＡプログラム６８が示されている。
１行目の命令は「ｓｅｔ  Ａ０，０ｘ１０００」である。これは、「０ｘ１０００」を、「Ａ０」のアドレスレジスタへ代入させる命令である。
２行目の命令は「ｓｅｔ  Ａ１，０ｘ２０００」である。これは、「０ｘ２０００」を、「Ａ１」のアドレスレジスタへ代入させる命令である。
３行目の命令は「ｓｅｔ  ｒｐｃ０，１０」である。これは、「１０」の値を「ＲＰＣ０」のリピートカウンタに代入させる命令である。
４行目の命令は「ｒｅｐｅａｔ」である。これは、「ＲＰＣ０」のリピートカウンタにセットされた回数だけ、後の処理をリピートさせる命令である。
５行目の命令は「ｍｏｖ（Ａ０＋＋１），（Ａ１＋＋１）」である。これは、「Ａ１」のアドレスレジスタに格納されたアドレスのデータを、「Ａ０」のアドレスレジスタに格納されたアドレスへコピーさせる命令である。また、コピー処理後、「Ａ０」と「Ａ１」とのアドレスレジスタの値にそれぞれ１を加算させる。
以上の様な構成のＤＭＡＣ５４によれば、ＤＭＡＣ５４の命令デコーダ５４ｇは、ＰＣ５４ｎの指すアドレスにある命令をＤＭＡＣ用メモリ５５の命令メモリ領域５５ａから１つ取り込んで実行する。その後、命令デコーダ５４ｇは、実行した命令の内容に応じてセレクタ５４ｊやセレクタ５４ｍに出力する信号を制御し、ＰＣを更新する。すると、次の命令が命令メモリ領域５５ａ再び取り込まれ、命令デコーダ５４ｇで実行される。
なお、通常は１つ次の命令をフェッチするような更新値をＰＣ５４ｎに加算するが、分岐命令では分岐先をＰＣ５４ｎに書き込んだり、リピート命令では、同じＰＣ５４ｎを再設定するなど、命令に応じたＰＣ５４ｎの更新が行われ、プログラム処理が継続される。
このような動作は通常のプログラム処理を行うプロセッサと同様である。このＰＣ５４ｎの指し示すアドレスはＤＭＡＣ用メモリ５５の命令メモリ領域５５ａである。
データ転送のアドレッシングについては、メモリアクセスのアドレスを保持するアドレスレジスタ５４ｂは、ＤＭＡＣ５４の持つアドレス演算器（リードアドレス生成部５４ｈおよびライトアドレス生成部５４ｉ）により、図２９のようなアドレス更新記述に従って自動更新される。例えば、図３３のＤＭＡＣ用プログラムでは、Ａ１のアドレスからＡ０のアドレスへ転送を行うが、Ａ１とＡ０はアクセスするたびに１ずつインクリメントされるため、このＭＯＶ命令を１０回繰り返すことで連続する１０バイトを転送（コピー）できる。
第７の実施の形態では、このようなプログラム処理を基本とすることにより、ＤＭＡＣ５４は、ＤＭＡＣ用メモリ５５に格納されたプログラムを実行することが可能となり、その結果柔軟なＤＭＡ転送処理を行うことが可能となる。ＤＭＡＣ５４は、命令メモリ領域５５ａとデータメモリ領域５５ｂを同時にアクセスできるため、命令フェッチとデータアクセスで、ウェイトが発生することなく、高速なＤＭＡ制御動作が可能となる。すなわち、高速アクセスが実現可能となる。
ところで、専用ハードウェアで構成される従来のＤＭＡＣでは、要求を格納するバッファ領域が、ハードウェアで実現されて固定化されているため、管理できるＤＭＡ要求数に限界があった。第７の実施の形態では、第１の実施の形態と同様に、ＤＭＡＣ５４は、転送元アドレス、転送先アドレス、転送サイズなどの組をＤＭＡ用メモリ領域５５ｂ内のＤＭＡ要求パラメータテーブル（図２と同様）に書き込む。ＤＭＡＣ５４は、ＤＭＡ要求パラメータテーブル内のパラメータをＤＭＡ要求管理テーブル（図３と同様）で管理して、ＤＭＡ要求を順に処理していく。
さらに、ＤＭＡＣ５４は、ＤＭＡ要求管理テーブルを、ＤＭＡチャネル情報テーブル（図４と同様）によって管理する。ＤＭＡチャネル情報テーブルは、現在の管理テーブルの属性をはじめ、管理テーブルのどの要求までを処理完了し、どの要求を処理中なのか、という実行状態や、属性などを記録している。
このような管理テーブルを用いることにより、テーブルサイズは、最終的には搭載メモリ容量に依存するものの、テーブル領域として確保したサイズだけ、ＤＭＡ転送要求を管理可能であるため、非常に多くの要求を処理できる。
ＤＭＡＣ５４で実行する転送プログラムのシーケンスは、図５に示した第１の実施の形態と同様である。すなわち、ＤＭＡＣ５４は、まず、要求管理テーブルのチャネルステータステーブルから現在の処理対象を調べ、続いてその処理対象のパラメータを読み出す。ＤＭＡＣ５４は、読み出した値に従って、転送を１単位だけ行い、転送終了条件に満たなければ、引き続いて転送を行う。転送の終了条件は、残りサイズが０になることである。ＤＭＡＣ５４は、１つの要求に対する処理が終了すると、次の要求に対する処理へと移行する。すべての要求が終了すると、ＤＭＡ処理は完了となる。
対象となるＤＭＡ要求の処理が終了すると、次のＤＭＡ要求を処理するために、チャネル情報テーブルの処理対象を、ＤＭＡ要求管理テーブルに格納されている次の要求に書き直し、転送のパラメータをコピーする。続いて、新しい処理対象のＤＭＡ処理に入る。
［第８の実施の形態］
第８の実施の形態は、第１の実施の形態を画像データのＤＭＡ転送に利用したものである。ハードウェア構成は第７の実施の形態と同様であるため、図２４，図２５に示した構成を参照して、第８の実施の形態について説明する。
上記の各実施の形態では、１つのＤＭＡ要求の基本として、転送元アドレス、転送先アドレス、転送サイズを元に１データ単位ずつ転送処理を行う例を説明しているが、ＤＭＡ要求パラメータテーブルには、より複雑な意味を持たせることも可能である。具体的には、ＤＭＡＣ５４は、ＤＭＡ要求管理テーブルからパラメータを読み出す際に、まずモードをチェックし、モードに応じて転送処理を切り替えることができる。例えば、「モード」の項目に記述するモード１を矩形ブロックＤＭＡ転送の指定であるものと定義する。このとき、転送元のデータとして画像データを指定し、その中の矩形領域をモード１で転送することができる。
図３４は、矩形ブロックＤＭＡ転送の概念を示す図である。図３４に示すように、転送元データ７１として画像データがメモリに格納されているとき、転送元データ７１内の矩形領域７１ａを切り取って、転送先メモリ領域７２に転送し別の画像データ７２ａとする場合がある。このように大きな画像中の矩形領域を処理対象としてＤＭＡ転送することは、画像データ処理において、しばしば行われる処理である。
画像データの場合、横方向の１ラインずつデータが並べられて、メモリ内に格納されている。そのため、矩形領域７１ａに相当するデータは、ライン毎の複数のデータに分散して格納されている。そのため、転送元アドレスと転送サイズとの指定によりＤＭＡ転送を行った場合、ライン毎のＤＭＡ転送パラメータを設定する必要がある。
そこで、第８の実施の形態では、図３４の様に矩形を規定するパラメータをオプションパラメータとして、ＤＭＡ要求パラメータテーブルに追加する。
図３５は、矩形ブロック転送のＤＭＡ要求パラメータテーブルの例を示す図である。ＤＭＡ要求パラメータテーブル８１には、転送元アドレス、転送先アドレス、転送サイズと共に、モードとして「モード１」が設定され、オプションパラメータとして、「Ｗｉｄｔｈ＝１６」「Ｈｅｉｇｈｔ＝１６」、「Ｓｋｉｐ＝３０４」が設定されている。
モードが「モード１」であることにより、矩形ブロックのＤＭＡ転送であることが指定されている。矩形ブロックの範囲は、オプションパラメータによって指定されている。Ｗｉｄｔｈは矩形ブロックの横幅（ピクセル数）、Ｈｅｉｇｈｔは矩形ブロックの縦幅（ピクセル数）、Ｓｋｉｐは分散して格納されたライン毎のデータの間にある他のデータ（データ転送から除外されるデータ）のデータ幅（ピクセル数）である。
このようなＤＭＡ要求パラメータテーブル８１に基づき、ＤＭＡＣ５４は、矩形領域の複数回のデータ転送の合間に、矩形領域に挟まれた他のデータのデータ幅分だけ転送元のアドレスをスキップさせる。以下に、矩形ブロックＤＭＡ転送処理の手順を以下に示す。
図３６は、矩形ブロックＤＭＡ転送処理の手順を示すフローチャートである。以下、図３６に示す処理をステップ番号に沿って説明する。
［ステップＳ８１］ＤＭＡＣ５４は、まず、パラメータを読み取る。
［ステップＳ８２］ＤＭＡＣ５４は、矩形の幅のカウンタをＲＰＣ０＝ｗｉｄｔｈ、高さのカウンタをＲＰＣ１＝ｈｅｉｇｈｔとして初期化する。
［ステップＳ８３］ＤＭＡＣ５４は、単位データ分のデータ転送を行う。
［ステップＳ８４］ＤＭＡＣ５４は、データを転送したら、転送元アドレスＡ０と転送先アドレスＡ１とを更新する。また、ＤＭＡＣ５４は、矩形の幅カウンタＲＰＣ０を１だけ減算する。
［ステップＳ８５］ＤＭＡＣ５４は、矩形の幅カウンタＲＰＣ０が０より大きいか否かを判断する。ＲＰＣ０が０より大きければ処理がステップＳ８３に進められ、矩形の幅の分のデータが転送されるまで単位データの転送を繰り替えす。ＲＰＣ０が０以下であれば処理がステップＳ８６に進められる。
［ステップＳ８６］ＤＭＡＣ５４は、矩形の幅だけ転送したら、アドレスはスキップ値をＡ０に加えて、高さ方向のカウンタ更新と、幅カウンタの再設定を行う。具体的には、矩形の幅のカウンタをＲＰＣ０＝ｗｉｄｔｈとし、高さのカウンタをＲＰＣ１＝ＲＰＣ１−１とし、アドレスＡ０をＡ０＋ｓｋｉｐとする。
［ステップＳ８７］ＤＭＡＣ５４は、高さのカウンタＲＰＣ１が０より大きいか否かを判断する。０より大きければ処理がステップＳ８３に進められ、矩形の高さ分のデータが転送されるまで単位データの転送を繰り返す。０以下であれば処理が終了する。
この様に転送パラメータのモードにさまざまな転送モードを設定し、ＤＭＡＣ５４のＤＭＡプログラムに、相当する転送処理を記述しておくことによって、転送要求に対して個別にさまざまな転送処理を切り替えることが可能となる。このような柔軟な機能の実現はハードウェアソリューションによるＤＭＡＣでは困難であり、プログラムを実行可能なＤＭＡＣ５４により実現される。
なお、これまでのＤＭＡ要求パラメータテーブルは、転送元アドレスや、転送先アドレスを、絶対番地で記述する例で示したが、これを相対アドレス記述できるモードを備えることが可能である。たとえば、相対記述モードをモード２と定義する。
図３７は、相対アドレス記述のＤＭＡ要求パラメータテーブルの例を示す図である。ＤＭＡ要求パラメータテーブル８２には、転送元アドレス、転送先アドレス、転送サイズと共に、モードとして「モード２」が設定されている。
モードが「モード２」であることにより、相対記述モードであることが指定されている。
相対記述モードでは、ＤＭＡ要求管理テーブルの最初の要求で指定するアドレスをベースアドレスとし、このアドレスのみ絶対番地記述とする。その後に続くＤＭＡ要求パラメータで相対記述モードの指定のあるものは、ベースアドレスからの相対アドレス値として処理する。
このようにすることによって、あるＤＭＡパターンの組で構成されるＤＭＡ要求管理テーブルを、先頭の転送要求のアドレスを変えるだけで、様々な場所で再利用できるようになる。
相対記述モードにすることで、矩形ブロックの転送を行うときのパラメータ設定が容易となる。
図３８は、矩形ブロック転送の例を示す図である。図３８の例では、転送元データ９１内の矩形領域９１ａが９つの矩形に分かれている。矩形領域９１ａの矩形を転送先メモリ９２に転送すると、転送後のデータ９２ａが一列に配置される。
このとき、相対記述モードであらかじめＤＭＡ要求管理テーブルを作成しておき、先頭ブロックのアドレス設定とＤＭＡ要求管理テーブルの登録を行うだけで、すべてのブロックの転送設定を完了できる。これにより、ＤＭＡ転送の設定にかかるオーバヘッドを大きく削減できる。
また、第２の形態で示したように、チャネルをポインタによって関連付けることで、ポインタを切り替えて、新たなチャネルを「有効」にすることが可能である。例えば、図３８のような９つの矩形からなる領域の転送を考える。着目ブロックの隣接ブロックを対象として画像処理を行う場合に、しばしば必要となるパターンである。このようなパターンを１つのチャネルに対する要求として予め登録しておき、転送が必要なときに、そのチャネルポインタをチャネル管理テーブルに登録して、「有効」とすれば、非常に簡単にある規則パターンを転送することができる。このパターンを再度呼び出すのも容易である。このような柔軟性は本発明の大きな効果のひとつである。
［第９の実施の形態］
ＤＭＡＣに上位プロセッサを接続した場合の構成例である。
図３９は、第９の実施の形態のシステム構成例を示す図である。図３９の例では、上位プロセッサ１０１は、命令メモリ１０２とＤＭＡＣ１０５とに接続されている。ＤＭＡＣ１０５に対してはリセット信号の出力と、割り込み信号の入力とのための信号線で接続されている。また、上位プロセッサ１０１は、バス１０８を介してメモリ１０３、ＤＭＡＣ１０５、ＤＭＡＣ用メモリ１０６に接続されている。上位プロセッサ１０１は、命令メモリ１０２に格納された命令に従って、システム全体を制御する。
ＤＭＡＣ１０５は、バス１０７を介して、命令メモリ１０２やメモリ１０３，１０４に接続されている。また、ＤＭＡＣ１０５は、ＤＭＡＣ用メモリ１０６に専用のバスで接続されている。
命令メモリ１０２は、上位プロセッサ１０１が実行すべき命令を格納する記録媒体である。メモリ１０３，１０４は、各種データを格納するための記録媒である。
ＤＭＡＣ用メモリ１０６は、ＤＭＡＣ用プログラム領域１０６ａとＤＭＡＣ用データ領域１０６ｂとを有している。ＤＭＡＣ用プログラム領域１０６ａには、ＤＭＡプログラムが格納される。ＤＭＡＣ用データ領域１０６ｂには、ＤＭＡ転送に必要な各種テーブル等が格納される。
このとき、上位プロセッサ１０１は制御信号としてＤＭＡＣ１０５のリセット信号をコントロールし、ＤＭＡＣ１０５をリセット状態としてから、システム運用中にＤＭＡＣ用プログラムを入れ替えることができる。プログラム入れ替えの後、上位プロセッサ１０１は、リセットを解除してＤＭＡＣ１０５を起動できる。
また、ＤＭＡＣ１０５が転送処理を完了した際に上位プロセッサ１０１へ転送の終了を通知すると、上位プロセッサ１０５は、通知を割り込みあるいはポーリングによって検出できる。これにより、上位プロセッサ１０１はデータ処理のタイミング、および次のＤＭＡ処理要求を発行するタイミングを知ることができる。
転送要求は基本的に上位プロセッサ１０１から発行される。ＤＭＡ要求は、ＤＭＡ管理テーブルへ登録され、ＤＭＡＣ１０５で認識される。テーブルに登録されたＤＭＡ要求に対するＤＭＡＣ１０５側の転送処理は第１の実施の形態で説明した通りである。上位プロセッサ１０１側は、テーブルのアドレスを知っていれば、新たな要求が発生した際に直接テーブルを更新できるし、テーブルのアドレスを知らない場合、ＤＭＡＣ側へ転送要求を出して、ＤＭＡＣ側がテーブル更新を行えばよい。このインターフェイスについては、どちらの手法でも構わない。
以上のような本発明の実施の形態によれば、ＤＭＡＣは、上位プロセッサからは、ハードウェアで実現されている従来のＤＭＡＣとまったく同様に扱うことが可能であることはもちろん、より高度な転送処理をプログラムによって実現可能である。そのため、上位プロセッサの負荷を軽減することができる。さらにマルチプロセッサ構成で実現する従来のＤＭＡＣに比べて、低コストでシステムを実現することが可能である。また、メモリ領域情報をもとに、転送処理を判定して、アクセスの違反を検出することが可能であり、システム構成を変えた場合にも、メモリ領域情報を書き換えるだけで対応可能である。
具体的には、以下のような効果がある。
ＤＭＡＣがプログラムの実行が可能であるため、ＤＭＡ転送に関する機能の変更が容易となる。しかも、ＤＭＡＣは、非常に単純な命令を解釈できればよいため、機能を限定した安価な回路で構成することができる。このように、専用メモリをシステムに搭載することによって、機能の柔軟性、転送処理速度、システムコストの面で、有利なＤＭＡコントローラが実現できる。
また、ＤＭＡ転送に関する情報を専用のＤＭＡ用メモリで管理している。そして、ＤＭＡ用メモリ内のＤＭＡ要求管理テーブルにＤＭＡ転送要求を格納している。これにより、複数のＤＭＡ要求をメモリの許す限り受け付けて順番待ちの状態とし、受け付けたＤＭＡ要求を順次処理することが可能となる。
また、ＤＭＡ転送要求をテーブルで管理するため、テーブルを予め作成し、必要に応じてテーブルを処理対象とすることにより、頻度の高い複数のＤＭＡ転送パターンを、必要な時点で一つずつ設定することなく、オーバヘッドなしに起動できる。しかも、ＤＭＡ要求パラメータをチャネル内で相対アドレス指定することで、同一パターンのＤＭＡ転送を起動する際のパラメータ設定のオーバヘッドが低減される。
ＤＭＡ要求管理テーブルを１つのＤＭＡチャネルとし、複数チャネルをチャネル管理テーブルで管理することによって、メモリの許す限りＤＭＡチャネル数を増やすことが可能となる。このとき、各チャネルにおいてＤＭＡ転送の処理対象となっている要求を、タイムシェアリング式で処理することができる。チャネル管理テーブルへのチャネルの登録は容易であるため、頻度の高いＤＭＡ転送パターンを予めＤＭＡ管理テーブルとして作成しておくことによって容易に起動できるだけでなく、同じパターンを別チャネルで同時に起動することも可能である。
また、ＤＭＡＣに上位プロセッサを接続することで、システム稼動中のＤＭＡＣ用プログラムの入れ替えや、同期制御が可能となる。この際、上位プロセッサ側からは、従来のＤＭＡＣと同様の制御が可能となり、システム上で動作するソフトウェアの互換性を保つことが可能である。すなわち、従来のようなハードウェア回路で実現されたＤＭＡＣを本願実施の形態で説明したＤＭＡＣに置き換えても、システム上のアプリケーション等に修正を加える必要がない。さらに、上位プロセッサは同期指示のみ行い、上位プロセッサの指示に同期してＤＭＡＣのプログラムが予め定義したＤＭＡシーケンスで自律動作することにより、上位プロセッサの負荷を大きく軽減できる。
また、ＤＭＡＣがプログラムを実行可能なことにより、ＤＭＡ転送のパラメータ設定ミスをＤＭＡＣで検査することが可能となる。その結果、プログラム開発効率を高めることができる。
なお、上記のＤＭＡプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記録装置には、ハードディスク装置（ＨＤＤ）、フレキシブルディスク（ＦＤ）、磁気テープなどがある。光ディスクには、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｃ）、ＤＶＤ−ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＣＤ−Ｒ（Ｒｅｃｏｒｄａｂｌｅ）／ＲＷ（ＲｅＷｒｉｔａｂｌｅ）などがある。光磁気記録媒体には、ＭＯ（Ｍａｇｎｅｔｏ−Ｏｐｔｉｃａｌ  ｄｉｓｃ）などがある。
ＤＭＡプログラムを流通させる場合には、たとえば、そのＤＭＡプログラムが記録されたＤＶＤ、ＣＤ−ＲＯＭなどの可搬型記録媒体が販売される。また、ＤＭＡプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのＤＭＡプログラムを転送することもできる。
ＤＭＡプログラムを実行可能なＤＭＡＣを搭載したコンピュータは、たとえば、可搬型記録媒体に記録されたＤＭＡプログラムもしくはサーバコンピュータから転送されたＤＭＡプログラムを、ＤＭＡＣ用メモリに格納する。そして、ＤＭＡＣは、ＤＭＡＣ用メモリからＤＭＡプログラムを読み取り、ＤＭＡプログラムに従った処理を実行する。
以上説明したように本発明では、ＤＭＡ用メモリに格納されたＤＭＡプログラムに従った手順でＤＭＡコントローラがＤＭＡ転送を行うようにしたことで、機能の柔軟性の向上と、転送処理速度の向上とを両立させることが可能となる。
上記については単に本発明の原理を示すものである。さらに、多数の変形、変更が当業者にとって可能であり、本発明は上記に示し、説明した正確な構成および応用例に限定されるものではなく、対応するすべての変形例および均等物は、添付の請求項およびその均等物による本発明の範囲とみなされる。
【図１】
2004079583.tif 000003
【図２】
2004079583.tif 000004
【図３】
2004079583.tif 000005
【図４】
2004079583.tif 000006
【図５】
2004079583.tif 000007
【図６】
2004079583.tif 000008
【図７】
2004079583.tif 000009
【図８】
2004079583.tif 000010
【図９】
2004079583.tif 000011
【図１０】
2004079583.tif 000012
【図１１】
2004079583.tif 000013
【図１２】
2004079583.tif 000014
【図１３】
2004079583.tif 000015
【図１４】
2004079583.tif 000016
【図１５】
2004079583.tif 000017
【図１６】
2004079583.tif 000018
【図１７】
2004079583.tif 000019
【図１８】
2004079583.tif 000020
【図１９】
2004079583.tif 000021
【図２０】
2004079583.tif 000022
【図２１】
2004079583.tif 000023
【図２２】
2004079583.tif 000024
【図２３】
2004079583.tif 000025
【図２４】
2004079583.tif 000026
【図２５】
2004079583.tif 000027
【図２６】
2004079583.tif 000028
【図２７】
2004079583.tif 000029
【図２８】
2004079583.tif 000030
【図２９】
2004079583.tif 000031
【図３０】
2004079583.tif 000032
【図３１】
2004079583.tif 000033
【図３２】
2004079583.tif 000034
【図３３】
2004079583.tif 000035
【図３４】
2004079583.tif 000036
【図３５】
2004079583.tif 000037
【図３６】
2004079583.tif 000038
【図３７】
2004079583.tif 000039
【図３８】
2004079583.tif 000040
【図３９】
2004079583.tif 000041
【国際調査報告】
2004079583.tif 000042
2004079583.tif 000043
2004079583.tif 000044
2004079583.tif 000045