(57)【要約】【課題】実行順序が定められた複数のデータ転送処理をＤＭＡ転送装置が実行する場合において、ＣＰＵが介在する頻度を少なくすることを目的とする。【解決手段】ＣＰＵ１０は、指定したデータ転送処理を実行させるデータ転送指示情報と、実行順序を制御する制御指示情報との指示情報が並べられた指示コマンドを、各チャネル２００に対応付けてコマンドメモリ１３０に設定し、各チャネル２００を起動する。各チャネル２００は起動されると、コマンドメモリ１３０に設定された指示コマンドのうち、自己に対応付けられた指示コマンドの指示情報を並べられた順に読み出す。各チャネル２００は、読み出した指示情報がデータ転送指示情報であった場合、データ転送指示情報で指定されたデータ転送処理を実行し、読み出した指示情報が制御指示情報であった場合、他のチャネル２００によるデータ転送処理の実行状況に応じて、次の指示情報の読み出しを待つ。【選択図】図１
2011070259.tif 000002
【特許請求の範囲】
【請求項１】
データ転送処理を実行する複数の転送処理部を備え、実行順序が定められた複数のデータ転送処理を前記複数の転送処理部で順に実行するデータ転送装置であり、
指定したデータ転送処理を実行させるデータ転送指示情報と、前記実行順序を制御する制御指示情報との指示情報が並べられた指示コマンドを、前記複数の転送処理部の各転送処理部に対応付けて複数記憶するコマンド記憶部を備え、
前記各転送処理部は、
前記コマンド記憶部が記憶した指示コマンドのうち、自己に対応付けられた指示コマンドの指示情報を並べられた順に読み出す指示読出部と、
前記指示読出部が読み出した指示情報が前記データ転送指示情報であった場合、前記データ転送指示情報で指定されたデータ転送処理を実行する転送実行部と、
前記指示読出部が読み出した指示情報が前記制御指示情報であった場合、他の転送処理部によるデータ転送処理の実行状態に応じて、前記指示読出部に次の指示情報の読み出しを待たせる順序制御部と
を備えることを特徴とするデータ転送装置。
【請求項２】
前記制御指示情報には、指定したデータ転送処理が完了したことを通知させる通知指示情報と、指定したデータ転送処理が完了するまで待たせる待ち指示情報とがあり、
前記順序制御部は、
前記制御指示情報が通知指示情報であった場合には、前記通知指示情報で指定されたデータ転送処理が完了したことを他の転送処理部へ通知し、
前記制御指示情報が待ち指示情報であった場合には、前記待ち指示情報で指定されたデータ転送処理が完了したことが他の転送処理部から通知されるまで、前記指示読出部に次の指示情報の読み出しを待たせる
ことを特徴とする請求項１に記載のデータ転送装置。
【請求項３】
前記データ転送装置は、さらに、
前記複数のデータ転送処理の各データ転送処理の実行状態を示すフラグ情報を記憶するフラグ記憶部を備え、
前記順序制御部は、
前記制御指示情報が通知指示情報であった場合には、前記フラグ記憶部が記憶したフラグ情報であって、前記通知指示情報で指定されたデータ転送処理についての実行状態を示すフラグ情報を完了を示す状態に更新し、
前記制御指示情報が待ち指示情報であった場合には、前記フラグ記憶部が記憶したフラグ情報であって、前記待ち指示情報で指定されたデータ転送処理についての実行状態を示すフラグ情報が完了を示す状態になるまで、前記指示読出部に次の指示情報の読み出しを待たせる
ことを特徴とする請求項２に記載のデータ転送装置。
【請求項４】
前記順序制御部は、
前記待ち指示情報で指定されたデータ転送処理についての実行状態を示すフラグ情報を前記フラグ記憶部から読み出すアクセス部と、
前記アクセス部が読み出したフラグ情報が完了を示す状態でない場合、前記アクセス部に再び前記フラグ情報の読み出しをさせるとともに、前記アクセス部が読み出したフラグ情報が完了を示す状態である場合、前記指示読出部に次の指示情報の読み出しをさせるフラグ判定部と
を備えることを特徴とする請求項３に記載のデータ転送装置。
【請求項５】
前記データ転送装置は、バスを介してＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）と接続されており、前記ＣＰＵで実行される所定の処理との間で実行順序が定められた前記複数のデータ転送処理を実行し、
前記順序制御部は、前記指示読出部が読み出した指示情報が前記制御指示情報であった場合、前記ＣＰＵによる前記所定の処理の実行状態に応じて、前記指示読出部に次の指示情報の読み出しを待たせる
ことを特徴とする請求項１に記載のデータ転送装置。
【請求項６】
前記制御指示情報には、指定したデータ転送処理が完了したことを通知させる通知指示情報と、前記所定の処理が完了するまで待たせる待ち指示情報とがあり、
前記順序制御部は、
前記制御指示情報が通知指示情報であった場合には、前記通知指示情報で指定されたデータ転送処理が完了したことを前記ＣＰＵへ通知し、
前記制御指示情報が待ち指示情報であった場合には、前記所定の処理が完了したことが前記ＣＰＵから通知されるまで、前記指示読出部に次の指示情報の読み出しを待たせる
ことを特徴とする請求項５に記載のデータ転送装置。
【請求項７】
前記データ転送装置は、さらに、
前記複数のデータ転送処理の各データ転送処理の実行状態と、前記ＣＰＵによる前記所定の処理の実行状態とを示すフラグ情報を記憶するフラグ記憶部を備え、
前記順序制御部は、
前記制御指示情報が通知指示情報であった場合には、前記フラグ記憶部が記憶したフラグ情報であって、前記通知指示情報で指定されたデータ転送処理についての実行状態を示すフラグ情報を完了を示す状態に更新し、
前記制御指示情報が待ち指示情報であった場合には、前記フラグ記憶部が記憶したフラグ情報であって、前記ＣＰＵによる前記所定の処理についての実行状態を示すフラグ情報が完了を示す状態になるまで、前記指示読出部に次の指示情報の読み出しを待たせる
ことを特徴とする請求項６に記載のデータ転送装置。
【請求項８】
前記順序制御部は、
前記ＣＰＵによる前記所定の処理についての実行状態を示すフラグ情報を前記フラグ記憶部から読み出すアクセス部と、
前記アクセス部が読み出したフラグ情報が完了を示す状態でない場合、前記アクセス部に再び前記フラグ情報の読み出しをさせるとともに、前記アクセス部が読み出したフラグ情報が完了を示す状態である場合、前記指示読出部に次の指示情報の読み出しをさせるフラグ判定部と
を備えることを特徴とする請求項７に記載のデータ転送装置。
【請求項９】
前記データ転送装置は、バスを介してさらに外部メモリとも接続されており、
前記順序制御部は、
前記制御指示情報が通知指示情報であった場合には、前記通知指示情報で指定されたデータ転送処理が完了したことを示す情報を前記外部メモリに書き込み、
前記制御指示情報が待ち指示情報であった場合には、前記ＣＰＵによる前記所定の処理が完了したことを示す情報が前記外部メモリに書き込まれるまで、前記指示読出部に次の指示情報の読み出しを待たせる
ことを特徴とする請求項６に記載のデータ転送装置。
【請求項１０】
前記データ転送装置は、さらに、
前記フラグ記憶部が記憶したフラグ情報を未完了を示す状態に初期化するとともに、前記フラグ情報を初期化している間、他から前記フラグ情報へのアクセスを制限するフラグリセット部
を備えることを特徴とする請求項３又は７に記載のデータ転送装置。
【請求項１１】
前記フラグリセット部は、前記フラグ情報を初期化している間、他から前記フラグ情報へのアクセスを待たせる
ことを特徴とする請求項１０に記載のデータ転送装置。
【請求項１２】
前記フラグリセット部は、前記フラグ情報を初期化している間、他から前記フラグ情報の読み出しがされた場合、未完了を示す状態として読み出しさせる
ことを特徴とする請求項１０に記載のデータ転送装置。
【請求項１３】
前記コマンド記憶部は、データ転送指示情報と制御指示情報とに加え、前記フラグリセット部を起動させる初期化指示情報が並べられた指示コマンドを記憶し、
前記各転送処理部は、
前記指示読出部が読み出した指示情報が前記初期化指示情報であった場合、前記フラグリセット部を起動させ、前記フラグリセット部に前記フラグ情報を初期化させる初期化指示部
を備えることを特徴とする請求項１０から１２までのいずれかに記載のデータ転送装置。
【請求項１４】
バスを介してＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）と接続されており、前記ＣＰＵで実行される所定の処理との間で実行順序が定められたデータ転送処理を実行するデータ転送装置であり、
データ転送処理を実行させるデータ転送指示情報と、前記実行順序を制御させる制御指示情報との指示情報が並べられた指示コマンドを記憶するコマンド記憶部とを備え、
前記各転送処理部は、
前記コマンド記憶部が記憶した指示コマンドにおける指示情報を並べられた順に読み出す指示読出部と、
前記指示読出部が読み出した指示情報が前記データ転送指示情報であった場合、前記データ転送指示情報で指定されたデータ転送処理を実行する転送実行部と、
前記指示読出部が読み出した指示情報が前記制御指示情報であった場合、前記ＣＰＵによる前記所定の処理の実行状態に応じて、前記指示読出部に次の指示情報の読み出しを待たせる順序制御部と
を備えることを特徴とするデータ転送装置。
【請求項１５】
一部の実行順序が定められた複数のデータ転送処理を複数のチャネルで順に実行するデータ転送方法であり、
前記複数のチャネルの各チャネルは、
データ転送処理を実行させるデータ転送指示情報と、前記実行順序を制御させる制御指示情報との指示情報が並べられた指示コマンドをチャネル毎に記憶した記憶装置から、自己についての指示コマンドにおける指示情報を並べられた順に読み出し、
読み出した指示情報が前記データ転送指示情報であった場合、前記データ転送指示情報で指定されたデータ転送処理を実行し、
読み出した指示情報が前記制御指示情報であった場合、他のチャネルによるデータ転送処理の実行状態に応じて、前記指示読出部に次の指示情報の読み出しを待たせる
ことを特徴とするデータ転送方法。
【発明の詳細な説明】
【技術分野】
【０００１】
実行順序が定められた複数のデータ転送処理を複数のチャネルで並列に実行する技術に関する。
【背景技術】
【０００２】
複数のＩ／Ｏ装置（Ｉｎｐｕｔ／Ｏｕｔｐｕｔ装置）を管理して処理を実行させる方法として、ＩＢＭ（登録商標）Ｓ／３７０のＣＣＷ（チャネルコマンドワード）を使用するチャネル方式がある。
チャネル方式では、チャネルと呼ばれる処理の実行部が、メインメモリに記憶されたチャネルプログラムと呼ばれる制御用のプログラムに設定されたＣＣＷを読み込み、読み込んだＣＣＷに従ったＩ／Ｏ装置の操作を行う。
ここで、ＣＣＷはコマンドチェーンフラグというフラグ情報を有する。チャネルは、読み込んだＣＣＷのコマンドチェーンフラグが有意である限り、次のＣＣＷを読み込み処理を実行する。したがって、この方法を用いれば、複数のＣＣＷを設定することにより、チャネルへ複数の処理をまとめて指示することができる。
【０００３】
一方、単純なＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）転送装置では、１度に１つのデータ転送処理がＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）から指示されることを基本とする。しかし、ＤＭＡ転送装置にも上述したチャネル方式の概念を取り入れたものがある。ＤＭＡ転送装置にチャネル方式の概念を取り入れる場合、前記ＣＣＷに相当する指示がＣＰＵによりＤＭＡ転送装置内のメモリに設定される。
つまり、ＣＰＵがデータ転送処理を指示するＣＣＷをＤＭＡ転送装置内のメモリに複数設定し、ＣＰＵから起動をかけられたＤＭＡ転送装置がコマンドチェーンフラグが有意である限り順次ＣＣＷを読み込み実行する。これにより、ＣＰＵがＤＭＡ転送装置を１回起動しただけで、ＤＭＡ転送装置により連続して複数のデータ転送処理が実行される。
【０００４】
また、データ転送処理を実行するチャネルを複数備えるＤＭＡ転送装置がある。このＤＭＡ転送装置では、レイテンシの大きいメモリやレイテンシの大きいＩ／Ｏ装置を効率よく動かすために、複数のチャネルを並列動作させる。つまり、複数のチャネルにより、データ転送処理を並列して実行させる。この場合、各チャネルの動作は独立しているため、各チャネルが同時に同じメモリ領域にアクセスしないように、ＣＰＵがチャネルの起動を制御する。
なお、レイテンシとは、データの読み書きが行われるまでにかかる遅延時間のことであり、レイテンシが大きいほど遅延時間が長いことを意味する。
【０００５】
特許文献１には、優先度、タイミング情報、キャンセル情報などのパラメータを転送情報に含めてＣＰＵがＤＭＡ転送装置へ与え、ＤＭＡ転送装置が与えられたパラメータに従ったデータ転送処理を実行することについての記載がある。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００２−４１４４５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
特許文献１に記載された方法では、ＤＭＡ転送装置は、タイミング情報によって指定されたタイミングで順次データ転送処理を実行することは可能である。しかし、あるチャネルが他のチャネルでデータ転送処理が完了しているか否かの確認を行うことはできない。そのため、特許文献１に記載された方法を用いたとしても、実行順序が定められた複数のデータ転送処理を実行する場合、ＣＰＵが介在して、チャネル間におけるデータ転送処理の実行順序を制御する必要がある。つまり、ＤＭＡ転送装置は、ＣＰＵからの介在なしに、実行順序が定められた複数のデータ転送処理を連続して実行することはできない。
この発明は、実行順序が定められた複数のデータ転送処理をＤＭＡ転送装置が実行する場合において、ＣＰＵが介在する頻度を少なくすることを目的とする。
【課題を解決するための手段】
【０００８】
この発明に係るデータ転送装置は、例えば、
データ転送処理を実行する複数の転送処理部を備え、実行順序が定められた複数のデータ転送処理を前記複数の転送処理部で順に実行するデータ転送装置であり、
指定したデータ転送処理を実行させるデータ転送指示情報と、前記実行順序を制御する制御指示情報との指示情報が並べられた指示コマンドを、前記複数の転送処理部の各転送処理部に対応付けて複数記憶するコマンド記憶部を備え、
前記各転送処理部は、
前記コマンド記憶部が記憶した指示コマンドのうち、自己に対応付けられた指示コマンドの指示情報を並べられた順に読み出す指示読出部と、
前記指示読出部が読み出した指示情報が前記データ転送指示情報であった場合、前記データ転送指示情報で指定されたデータ転送処理を実行する転送実行部と、
前記指示読出部が読み出した指示情報が前記制御指示情報であった場合、他の転送処理部によるデータ転送処理の実行状態に応じて、前記指示読出部に次の指示情報の読み出しを待たせる順序制御部と
を備えることを特徴とする。
【発明の効果】
【０００９】
この発明に係るデータ転送装置では、各転送処理部が他のデータ転送処理の実行状態に応じて指示コマンドの読み出しを待ち状態として、実行順序を制御する。そのため、実行順序を制御するためにＣＰＵが介在する必要がなく、実行順序が定められた複数のデータ転送処理を連続して実行する場合におけるＣＰＵの介在回数を減らすことができる。
【図面の簡単な説明】
【００１０】
【図１】実施の形態１に係るＤＭＡ転送装置１００の構成図。
【図２】実施の形態１に係るＤＭＡ転送装置１００が備えるチャネル２００の構成図。
【図３】ＣＣＷの一例を示す図（コマンドメモリ１３０Ａに設定されるＣＣＷ）。
【図４】ＣＣＷの一例を示す図（コマンドメモリ１３０Ｂに設定されるＣＣＷ）。
【図５】フラグメモリ１４０の構成図。
【図６】ＤＭＡ転送装置１００における各チャネル２００の処理の流れを示すフローチャート。
【図７】フラグ機能２２の構成図。
【図８】ＣＰＵ１０の処理の流れを示すフローチャート。
【図９】チャネル２００Ａとチャネル２００Ｂとによるデータ転送処理と、ＣＰＵ１０によるＣＰＵ処理との実行制御の説明図。
【図１０】フラグメモリ１４０とフラグアクセス制御回路１５０との構成の例示す図。
【図１１】実施の形態２に係るＤＭＡ転送装置１００の構成図。
【図１２】実施の形態３に係るＤＭＡ転送装置１００の構成図。
【図１３】実施の形態３に係るフラグメモリ１４０とフラグアクセス制御回路１５０とフラグリセット部１６０との構成図。
【図１４】リセット起動情報とフラグアクセスディセーブル信号とを１つの信号で実現する場合におけるＤＭＡ転送装置１００の構成図。
【図１５】リセット起動情報とフラグアクセスディセーブル信号とを１つの信号で実現する場合におけるフラグメモリ１４０とフラグアクセス制御回路１５０とフラグリセット部１６０との構成図。
【図１６】実施の形態４に係るＤＭＡ転送装置１００の構成図。
【図１７】フラグメモリ１４０として２ポートメモリを使用した場合のフラグメモリ１４０とフラグアクセス制御回路１５０との構成図。
【図１８】ライト要求とリード要求との処理タイミングをずらした場合のタイミングチャート。
【発明を実施するための形態】
【００１１】
実施の形態１．
実施の形態１では、実行順序が定められた複数のデータ転送処理を、複数のチャネル２００間で実行順序を制御しながら、順次実行するＤＭＡ転送装置１００について説明する。
【００１２】
図１は、実施の形態１に係るＤＭＡ転送装置１００の構成図である。
図２は、実施の形態１に係るＤＭＡ転送装置１００が備えるチャネル２００の構成図である。なお、図２では、図１に示すチャネル２００Ａを一例として示す。
【００１３】
まず、ＤＭＡ転送装置１００の概要を説明する。
ＤＭＡ転送装置１００は、メモリ２０、又は図示されていないＩ／Ｏ装置の所定のアドレスＡから所定の転送長Ｘのデータを、メモリ２０、又はＩ／Ｏ装置の所定のアドレスＢへ転送するデータ転送処理を実行する装置である。
ＤＭＡ転送装置１００にデータ転送処理を実行させる場合、ＣＰＵ１０は、転送元のアドレスＡ、転送先のアドレスＢ、転送長Ｘ等を含むＣＣＷ（指示情報）をコマンドメモリ１３０Ａやコマンドメモリ１３０Ｂに書き込み、ＤＭＡ転送装置１００を起動させる。すると、ＤＭＡ転送装置１００は、書き込まれたＣＣＷに従いデータ転送処理を実行する。特に、ＣＰＵ１０は一度に複数のＣＣＷをコマンドメモリ１３０Ａやコマンドメモリ１３０Ｂに書き込み、ＤＭＡ転送装置１００は書き込まれた複数のＣＣＷを順次読み出して、データ転送処理を順次実行する。
また、図１では、ＤＭＡ転送装置１００は、チャネル２００Ａとチャネル２００Ｂとの２つのチャネル（転送処理部）を備える。チャネル２００Ａは、コマンドメモリ１３０Ａに書き込まれたＣＣＷに従いデータ転送処理をチャネル２００Ｂとは独立して実行する。同様に、チャネル２００Ｂは、コマンドメモリ１３０Ｂに書き込まれたＣＣＷに従いデータ転送処理をチャネル２００Ａとは独立して実行する。つまり、チャネル２００Ａとチャネル２００Ｂとは、互いに独立して、並列にデータ転送処理を実行することができる。
【００１４】
次に、ＤＭＡ転送装置１００の構成を説明する。
図１に示すように、ＤＭＡ転送装置１００は、バス１１を介してＣＰＵ１０と接続される。また、ＣＰＵ１０は、メモリバス２１を介してメモリ２０と接続される。
ＤＭＡ転送装置１００は、バス制御を行うバス制御回路１１０と、ＤＭＡ転送装置１００の起動設定が行われる起動レジスタ１２０と、ＣＣＷが格納されるコマンドメモリ１３０Ａ及びコマンドメモリ１３０Ｂ（コマンド記憶部）と、転送完了の状態をフラグとして保持するフラグメモリ１４０（フラグ記憶部）と、フラグメモリ１４０へのアクセスを制御するフラグアクセス制御回路１５０（フラグアクセス制御部）と、データ転送処理を実行するチャネル２００Ａ及びチャネル２００Ｂと、内部バス３００と、内部バス３００と外部バス３２０とを接続するバスブリッジ３１０とを備える。なお、内部バス３００や外部バス３２０には、図示されていないＩ／Ｏ装置等と接続されている。
また、コマンドメモリ１３０Ａ及びコマンドメモリ１３０Ｂに格納されるＣＣＷには、転送元アドレス、転送先アドレス、転送長等を含み、データ転送処理を実行させる転送用コマンド（転送指示情報）と、転送完了の通知／確認を指示し、実行順序の制御をするフラグコマンド（制御指示情報）との２種類がある。
【００１５】
図２に示すように、チャネル２００Ａは、コマンドメモリ１３０ＡからＣＣＷを読み出すコマンド読出回路２１０（指示読出部）と、コマンド読出回路２１０が読み出したＣＣＷが転送用コマンドであるか、フラグコマンドであるかを判定するコマンド判別回路２２０（コマンド判定部）と、コマンド読出回路２１０が読み出したＣＣＷが転送用コマンドであった場合、転送用コマンドに従いデータ転送処理を実行する転送実行部２３０と、コマンド読出回路２１０が読み出したＣＣＷがフラグコマンドであった場合、他のチャネル（ここでは、チャネル２００Ｂ）によるデータ転送処理の実行状態に応じて、コマンド読出回路２１０に次のＣＣＷの読み出しを待たせる順序制御部２４０とを備える。
転送実行部２３０は、データ転送処理の制御を行う転送制御回路２３１と、データ転送処理を実行する転送回路２３４とを備える。転送制御回路２３１は、コマンド全体制御部２３２とコマンド個別制御部２３３とを備え、転送回路２３４は、転送要求部２３５とバッファ２３６とを備える。
順序制御部２４０は、フラグメモリ１４０に記憶されたフラグへのリードアクセス、ライトアクセスを行うフラグメモリアクセス回路２４１（アクセス部）、フラグメモリアクセス回路２４１が読み出したフラグの値が“転送完了状態”又は“ＣＰＵ処理完了状態”であるか否かを判定するフラグ判定回路２４２（フラグ判定部）を備える。
【００１６】
なお、チャネル２００Ｂは、チャネル２００Ａと同一の構成である。但し、チャネル２００Ｂが備えるコマンド読出回路２１０がＣＣＷを読み出すのは、コマンドメモリ１３０Ａではなく、コマンドメモリ１３０Ｂである。
また、ここでは、ＤＭＡ転送装置１００がチャネル２００Ａとチャネル２００Ｂとの２つのチャネルを備える例を説明するが、ＤＭＡ転送装置１００は３つ以上のチャネルを備えていてもよい。また、ここでは、チャネル２００毎にコマンドメモリ１３０を分けているが、各チャネル２００で共通のコマンドメモリ１３０を用いてもよい。
【００１７】
次に、ＣＣＷについて説明する。
図３と図４とは、ＣＣＷの一例を示す図である。なお、図３は、コマンドメモリ１３０Ａに書き込まれたＣＣＷの例であり、図４は、コマンドメモリ１３０Ｂに書き込まれたＣＣＷの例である。
図３，４に示すように、ＣＣＷには、転送用コマンドとフラグコマンドとの２種類がある。そして、２種類のＣＣＷがチャネル２００に実行させる順に並べられ指示コマンドを形成する。
例えば、図３に示すように、コマンドメモリ１３０Ａには、ＣＣＷ０＿０、ＣＣＷ０＿２、ＣＣＷ０＿５の転送用コマンドと、ＣＣＷ０＿１、ＣＣＷ０＿３、ＣＣＷ０＿４のフラグコマンドとが、ＣＣＷ０＿０、ＣＣＷ０＿１、ＣＣＷ０＿２、ＣＣＷ０＿３、ＣＣＷ０＿４、ＣＣＷ０＿５の順に並べられた指示コマンドが設定されている。なお、ここでは、ＣＣＷ０＿０はデータ転送処理「転送Ａ」を指示し、ＣＣＷ０＿２はデータ転送処理「転送Ｄ」を指示し、ＣＣＷ０＿５はデータ転送処理「転送Ｈ」を指示するものとする。
また、図４に示すように、コマンドメモリ１３０Ｂには、ＣＣＷ１＿０、ＣＣＷ１＿２、ＣＣＷ１＿４の転送用コマンドと、ＣＣＷ１＿１、ＣＣＷ１＿３、ＣＣＷ１＿５のフラグコマンドとが、ＣＣＷ１＿０、ＣＣＷ１＿１、ＣＣＷ１＿２、ＣＣＷ１＿３、ＣＣＷ１＿４、ＣＣＷ１＿５の順に並べられた指示コマンドが設定されている。なお、ここでは、ＣＣＷ１＿０はデータ転送処理「転送Ｂ」を指示し、ＣＣＷ１＿２はデータ転送処理「転送Ｅ」を指示し、ＣＣＷ１＿４はデータ転送処理「転送Ｇ」を指示するものとする。
【００１８】
転送用コマンドは、転送元アドレス、転送先アドレス、転送長を含む。
転送元アドレスは、データ転送処理におけるデータの取得先を示すアドレスである。転送先アドレスは、データ転送処理におけるデータの書き込み先を示すアドレスである。転送長は、転送するデータのサイズを示す。
【００１９】
フラグコマンドは、転送完了を通知させるｓｅｔコマンド（フラグコマンドｓｅｔ，通知指示情報）と、転送完了を確認させるｗａｉｔコマンド（フラグコマンドｗａｉｔ，待ち指示情報）との２種類がある。ｓｅｔコマンドは、更新するフラグのアドレスを含み、そのアドレスのフラグの値を“１”に更新させる。ｗａｉｔコマンドは、読み出すフラグのアドレスを含み、そのフラグの値を読み出させる。
【００２０】
なお、転送用コマンドとフラグコマンドとのどちらも、コマンドチェーンフラグを含む。コマンドチェーンフラグは、指示コマンドに次のＣＣＷが設定されているか否かを示す。コマンドチェーンフラグの値が“１”であれば、次のＣＣＷが設定されていることを示し、コマンドチェーンフラグの値が“０”であれば、次のＣＣＷが設定されていないことを示す。
例えば、図３に示すように、ＣＣＷ０＿４のコマンドチェーンフラグの値は“１”であるから、ＣＣＷ０＿４の次にはＣＣＷ（ここでは、ＣＣＷ０＿５）が設定されていることを示す。一方、ＣＣＷ０＿５のコマンドチェーンフラグの値は“０”であるから、ＣＣＷ０＿５の次にはＣＣＷが設定されていないことを示す。
【００２１】
次に、フラグメモリ１４０について説明する。
図５は、フラグメモリ１４０の構成図である。
図５に示すように、フラグメモリ１４０は、アドレス毎にフラグが設定されている。フラグメモリ１４０が有する各フラグは、各データ転送処理に対応し、そのデータ転送処理の実行が完了したか否かを示す。例えば、アドレス“０ｘ００００”のフラグは、転送Ａに対応し、転送Ａが完了したか否かを示す。同様に、アドレス“０ｘ０００１”のフラグは、転送Ｇに対応し、転送Ｇが完了したか否かを示す。
つまり、図３に示すＣＣＷ０＿１のｓｅｔコマンドは、アドレス“０ｘ００００”を指定して、転送完了を通知させるコマンドであるから、転送Ａが完了したことを通知させるコマンドである。すなわち、ＣＣＷ０＿１のｓｅｔコマンドは、アドレス“０ｘ００００”のフラグを“１”に更新させることにより、転送Ａが完了したことを通知させる。
一方、図４に示すＣＣＷ１＿１のｗａｉｔコマンドは、アドレス“０ｘ００００”を指定して、転送完了を確認させるコマンドであるから、転送Ａが完了したことを確認させるコマンドである。すなわち、ＣＣＷ１＿１のｗａｉｔコマンドは、アドレス“０ｘ００００”のフラグが“１”であるか確認させることにより、転送Ａが完了したかを確認させる。
【００２２】
ＤＭＡ転送装置１００の動作について説明する。
図６は、ＤＭＡ転送装置１００における各チャネル２００の処理の流れを示すフローチャートである。
まず、ＣＰＵ１０はバス１１を介して、ＤＭＡ転送装置１００のコマンドメモリ１３０Ａとコマンドメモリ１３０ＢとにＣＣＷを書き込む。ここでは、コマンドメモリ１３０Ａには、図３に示すＣＣＷが書き込まれ、コマンドメモリ１３０Ｂには、図４に示すＣＣＷが書き込まれたものとする。したがって、チャネル２００Ａは、ＣＣＷ０＿０〜ＣＣＷ０＿５の順に処理を実行することになる。同様に、チャネル２００Ｂは、ＣＣＷ１＿０〜ＣＣＷ１＿５の順に処理を実行することになる。
そして、ＣＰＵ１０は、コマンドメモリ１３０Ａにコマンドを書き込んだ後、チャネル２００Ａの起動をかけるため、起動レジスタ１２０におけるチャネル２００Ａについての起動フラグを“１”（有意）にする。すると、起動レジスタ１２０が、起動フラグが“１”になったことを、チャネル２００Ａのコマンド読出回路２１０へ通知する。これにより、チャネル２００Ａが動作を開始する。
同様に、ＣＰＵ１０は、コマンドメモリ１３０Ｂにコマンドを書き込んだ後、チャネル２００Ｂの起動をかけるため、起動レジスタ１２０におけるチャネル２００Ｂについての起動フラグを“１”（有意）にする。すると、起動レジスタ１２０が、起動フラグが“１”になったことを、チャネル２００Ｂのコマンド読出回路２１０へ通知する。これにより、チャネル２００Ｂが動作を開始する。
【００２３】
各チャネル２００（チャネル２００Ａとチャネル２００Ｂ）は次のように動作する。
（Ｓ１１）では、起動レジスタ１２０から通知を受けたコマンド読出回路２１０は、対応するコマンドメモリ１３０へＣＣＷリード要求を送信して、コマンドメモリ１３０から順にＣＣＷを読み込む。（Ｓ１２）では、コマンド判別回路２２０は、コマンド読出回路２１０が読み込んだＣＣＷが、転送用コマンドであるか、フラグコマンドであるかを判定する。ＣＣＷが転送用コマンドであれば（Ｓ１２でＹＥＳ）、（Ｓ１３）で転送実行部２３０によりデータ転送処理が実行される。一方、ＣＣＷがフラグコマンドであれば（Ｓ１２でＮＯ）、（Ｓ１４）から（Ｓ１７）で順序制御部２４０により実行順序の制御が行われる。
【００２４】
（Ｓ１３）では、コマンド判別回路２２０は、コマンド個別制御部２３３へＣＣＷ（転送用コマンド）を送信する。コマンド個別制御部２３３は、送信された転送用コマンドを構成する転送元アドレスと、転送先アドレスと、転送長とを転送要求部２３５に設定する。転送要求部２３５は、設定された転送元アドレスと転送長とに従ったリード要求を内部バス３００を経由して送信し、転送元アドレスからデータ（リードデータ）を読み出し、バッファ２３６に格納する。さらに、転送要求部２３５は、設定された転送用コマンドを構成する転送先アドレスに従ったライト要求を、バッファ２３６に格納されたデータ（ライトデータ）とともに内部バス３００を経由して送信する。これにより、バッファ２３６に格納されたデータを転送先アドレスに書き込む。
この読み出しと書き込みはバッファ２３６の容量又はそれ以下の単位サイズで繰り返され、ＣＣＷに格納された転送長に達するまで転送元アドレスと転送先アドレスとに前記単位サイズを加算しながら繰り返し処理が行われる。データの書き込みの完了によって、データ転送処理は完了する。
データ転送処理が完了すると転送要求部２３５は、コマンド個別制御部２３３へデータ転送処理が完了したことを伝え、コマンド個別制御部２３３は、データ転送処理が完了したことをコマンド全体制御部２３２へ伝える。コマンド全体制御部２３２は、データ転送処理が完了したことの通知を受けると、コマンド読出回路２１０に次のＣＣＷを読み出すように指令を出す。
【００２５】
一方、（Ｓ１４）では、コマンド判別回路２２０は、フラグメモリアクセス回路２４１へＣＣＷ（フラグコマンド）を送信する。フラグメモリアクセス回路２４１は、送信されたＣＣＷがｓｅｔコマンドであるかｗａｉｔコマンドであるかを判定する。フラグコマンドがｓｅｔコマンドであれば、（Ｓ１５）でデータ転送処理が完了したことを通知する。一方、フラグコマンドがｗａｉｔコマンドであれば、（Ｓ１６）と（Ｓ１７）とで、所定のデータ転送処理が完了するまで処理を待たせる。
【００２６】
（Ｓ１５）では、フラグメモリアクセス回路２４１は、フラグコマンドを構成するアドレスとライト要求とをフラグアクセス制御回路１５０を介してフラグメモリ１４０へ送信する。なお、ライト要求には、ライトデータ（ここでは、フラグを“１”に更新するため“１”）と、リクエスト信号（例えば、“１”）と、リードライト信号（ライト要求である場合、例えば“１”）とが含まれる。これで、ｓｅｔコマンドで指定されているフラグメモリ１４０のアドレスに設定されたフラグが、データ転送処理の完了状態を示す“１”に更新される。これにより、他のチャネルにデータ転送処理が完了したことを示す。
そして、フラグ判定回路２４２は、フラグアクセス制御回路１５０からアクノリッジ信号（Ａｃｋ）を受信すると、コマンド読出回路２１０に次のＣＣＷを読み出すように指令を出す。
【００２７】
一方、（Ｓ１６）では、フラグメモリアクセス回路２４１は、ｗａｉｔコマンドを構成するアドレスとリード要求とをフラグアクセス制御回路１５０を介してフラグメモリ１４０へ送信する。なお、リード要求には、リクエスト信号（例えば、“１”）と、リードライト信号（リード要求である場合、例えば“０”）とが含まれる。
【００２８】
（Ｓ１７）では、フラグ判定回路２４２は、（Ｓ１６）で送信したリード要求に対する応答としてフラグの値（リードフラグ）を受信し、受信したフラグの値を判定する。
フラグの値がデータ転送処理の完了状態を示す“１”であると判定された場合（Ｓ１７でＹＥＳ）、フラグ判定回路２４２は、データ転送処理が完了しているとみなす。そして、フラグ判定回路２４２は、コマンド読出回路２１０に次のＣＣＷを読み出すように指令を出す。
一方、読み込んだフラグの値がデータ転送処理の完了状態を示す“１”ではない場合（Ｓ１７でＮＯ）、フラグ判定回路２４２は、データ転送処理が完了していないとみなす。そして、フラグ判定回路２４２は、フラグメモリアクセス回路２４１に再度フラグメモリ１４０へリード要求を送信するように指令を出す。つまり、フラグメモリアクセス回路２４１とフラグ判定回路２４２とによるフラグの値の読み込みとフラグの値の判定とは、読み込んだフラグの値が“１”になるまで繰り返される。この繰り返し間隔が短すぎると他チャンネルからのフラグメモリ１４０へのアクセスと競合し易くなるため読み出し間隔をある程度長くしてもよい。
すなわち、ｗａｉｔコマンドで指定されたアドレスにおけるフラグの値が“１”にならない限り、コマンド読出回路２１０は次のＣＣＷを読み出せず、チャネル２００は次のＣＣＷを実行することができない。
【００２９】
（Ｓ１８）では、（Ｓ１３）又は（Ｓ１５）又は（Ｓ１７）で、次のＣＣＷを読み出すように指令が出された場合、コマンド読出回路２１０は（Ｓ１１）で読み込んだＣＣＷのコマンドチェーンフラグが“１”であるか否かを判定する。ＣＣＷのコマンドチェーンフラグが“１”であれば、（Ｓ１８でＹＥＳ）、（Ｓ１１）へ戻って次のＣＣＷを読み出す。一方、ＣＣＷのコマンドチェーンフラグが“１”でなければ（Ｓ１８でＮＯ）、コマンド読出回路２１０は処理を終了し、アイドル状態になる。
【００３０】
つまり、各チャネル２００は、読み込んだＣＣＷがｓｅｔコマンドであった場合には、ｓｅｔコマンドで指定されたアドレスのフラグを、データ転送処理が完了したことを示す“１”に更新する。これにより、各チャネル２００は、他のチャネル２００へそのアドレスのフラグが示すデータ転送処理が完了したことを通知する。一方、各チャネル２００は、読み込んだＣＣＷがｗａｉｔコマンドであった場合には、ｗａｉｔコマンドで指定されたアドレスのフラグが、データ転送処理が完了したことを示す“１”になるまで処理をループさせて、次のＣＣＷの読み込みを停止する。これにより、複数のチャネル２００が独立して動作しながらも、ＣＰＵ１０の介在なしに、他のチャネル２００で実行されるデータ転送処理との間の実行順序を制御できる。
すなわち、ＤＭＡ転送装置１００は、あるチャネル２００（例えば、チャネル２００Ａ）が実行するデータ転送処理と、他のチャネル２００（例えば、チャネル２００Ｂ）が実行するデータ転送処理との間での実行順序を、ＣＰＵ１０の介在なしに制御することができる。
【００３１】
次に、チャネル２００間での実行順序の制御に加え、チャネル２００が実行するデータ転送処理と、ＣＰＵ１０が実行するＣＰＵ処理との間での実行順序を制御する処理について説明する。
【００３２】
まず、メモリ２０について説明する。
図１に示すように、メモリ２０は、フラグ機能２２と処理プログラム２３とを備える。
図７は、フラグ機能２２の構成図である。
フラグ機能２２は、フラグメモリ１４０と同様に、アドレス毎にフラグが設定されている。フラグ機能２２が有する各フラグは、各データ転送処理又はＣＰＵ１０で実行される各ＣＰＵ処理に対応し、そのデータ転送処理又はＣＰＵ処理の実行が完了したか否かを示す。例えば、アドレス“０ｘ１０００”のフラグは、転送Ｅに対応し、データ転送処理Ｅが完了したか否かを示す。同様に、アドレス“０ｘ２０００”のフラグは、ＣＰＵ処理Ｆに対応し、ＣＰＵ処理Ｆが完了したか否かを示す。
【００３３】
次に、ＤＭＡ転送装置１００側の処理について説明する。
この場合におけるＤＭＡ転送装置１００の処理の流れは、図６に示す通りである。しかし、図６の（Ｓ１５）と（Ｓ１６）とにおける処理が、上述した内容とは若干異なる。
【００３４】
上記説明において（Ｓ１５）では、フラグメモリアクセス回路２４１は、フラグコマンドを構成するアドレスとライト要求とをフラグメモリ１４０へ送信して、フラグの値を“１”に更新すると説明した。
しかし、他のチャネル２００が実行するデータ転送処理だけでなく、ＣＰＵ１０が実行するＣＰＵ処理との間での実行順序を制御する場合には、フラグメモリアクセス回路２４１は、フラグコマンドに含まれるアドレスに応じて、ライト要求の送信先を変更する。
つまり、フラグコマンドに含まれるアドレスが、フラグメモリ１４０におけるアドレスである場合には、フラグメモリアクセス回路２４１は、ライト要求をフラグメモリ１４０へ送信する。一方、フラグメモリ１４０におけるアドレスでない場合（メモリ２０におけるフラグ機能２２のアドレスである場合）には、フラグメモリアクセス回路２４１は、ライト要求を内部バス３００を介してメモリ２０へ送信する。これで、ｓｅｔコマンドで指定されているメモリ２０のアドレスに設定されたフラグを、データ転送処理の完了状態を示す“１”に更新される。これにより、ＣＰＵ１０にデータ転送処理が完了したことを示す。
なお、例えば、フラグメモリ１４０のアドレス領域と、フラグ機能２２のアドレス領域とを予めフラグメモリアクセス回路２４１に設定しておく。これにより、フラグメモリアクセス回路２４１は、フラグコマンドに含まれるアドレスがフラグメモリ１４０のアドレスであるかフラグ機能２２のアドレスであるかを判定できる。
【００３５】
（Ｓ１６）においても、（Ｓ１５）の場合と同様に、ＣＰＵ１０が実行するＣＰＵ処理との間での実行順序を制御する場合には、フラグメモリアクセス回路２４１は、フラグコマンドに含まれるアドレスに応じて、リード要求の送信先を変更する。
つまり、フラグコマンドに含まれるアドレスが、フラグメモリ１４０におけるアドレスである場合には、フラグメモリアクセス回路２４１は、リード要求をフラグメモリ１４０へ送信する。一方、フラグメモリ１４０におけるアドレスでない場合（メモリ２０におけるアドレスである場合）には、フラグメモリアクセス回路２４１は、リード要求をメモリ２０へ送信する。
ＣＰＵ１０の処理については詳しくは後述するが、ＣＰＵ１０では、ＣＰＵ処理が終了した場合に、メモリ２０の所定のアドレスに設定されたフラグをＣＰＵ処理の完了状態を示す“１”に更新する。したがって、所定のＣＰＵ処理が完了しない限り、コマンド読出回路２１０は次のＣＣＷを読み出せず、チャネル２００は次のＣＣＷを実行することができない。
【００３６】
次に、ＣＰＵ１０側の処理を説明する。
図８は、ＣＰＵ１０の処理の流れを示すフローチャートである。
まず（Ｓ２１）から（Ｓ２３）で、ＣＰＵ１０は初期処理を行う。（Ｓ２１）では、上述したように、ＣＰＵ１０は、ＤＭＡ転送装置１００のコマンドメモリ１３０Ａとコマンドメモリ１３０ＢとにＣＣＷを書き込む。（Ｓ２２）では、ＣＰＵ１０は、フラグメモリ１４０やメモリ２０のフラグをリセットする。（Ｓ２３）では、上述したように、ＣＰＵ１０は、起動レジスタ１２０におけるチャネル２００についての起動フラグを“１”（有意）にして、チャネル２００を起動させる。
【００３７】
続いて、（Ｓ２４）から（Ｓ３０）で、ＣＰＵ１０は、ＤＭＡ転送装置１００が実行するデータ転送処理と実行順序が定められたＣＰＵ処理を順次実行する。なお、ＣＰＵ１０が実行するＣＰＵ処理の順序や、ＤＭＡ転送装置１００が実行するデータ転送処理との間の実行順序は、メモリ２０に設定された処理プログラム２３に設定されている。また、ＣＰＵ１０が更新する、又は読み込むフラグが設定されたアドレスも処理プログラム２３に設定されているものとする。
（Ｓ２４）では、ＣＰＵ１０は、処理の実行前に完了しなければならないデータ転送処理がないか否かを判定する。
完了しなければならないデータ転送処理がなければ（Ｓ２４でＹＥＳ）、（Ｓ２５）でＣＰＵ１０はＣＰＵ処理を実行する。
一方、完了しなければならないデータ転送処理があれば（Ｓ２４でＮＯ）、（Ｓ２６）でＣＰＵ１０は、メモリ２０の所定のアドレスに設定されたフラグの値を読み込む。そして、（Ｓ２７）で、（Ｓ２６）で読み込んだフラグの値を判定する。フラグの値がデータ転送処理の完了状態を示す“１”であると判定された場合は、データ転送処理が完了しているとみなし、ＣＰＵ１０は（Ｓ２５）へ進みＣＰＵ処理を実行する。一方、読み込んだフラグの値がデータ転送処理の完了状態を示す“１”ではない場合は、データ転送処理が完了していないとみなし、ＣＰＵ１０は（Ｓ２６）へ戻って再びフラグの値を読み込む。つまり、フラグの値がデータ転送処理の完了状態を示す“１”になるまで、ＣＰＵ１０はＣＰＵ処理を実行しない。
（Ｓ２５）でＣＰＵ処理を実行すると、（Ｓ２８）では、ＣＰＵ１０は、ＣＰＵ処理の完了状態を示す“１”に所定のフラグを更新する必要があるか否かを判定する。フラグを更新する必要があれば（Ｓ２８でＹＥＳ）、（Ｓ２９）でフラグを更新した後、（Ｓ３０）で次に実行する処理がないか否か判定する。一方、フラグを更新する必要がなければ（Ｓ２８でＮＯ）、フラグを更新することなく、（Ｓ３０）で次に実行する処理がないか否か判定する。次に実行する処理があれば（Ｓ３０でＮＯ）、（Ｓ２４）へ戻る。一方、次に実行する処理がなければ（Ｓ３０でＹＥＳ）、処理を終了する。
【００３８】
以上のようにＤＭＡ転送装置１００とＣＰＵ１０とが動作することにより、ＤＭＡ転送装置１００は、チャネル２００が実行するデータ転送処理と、ＣＰＵ１０が実行するＣＰＵ処理との間での実行順序を制御することができる。
【００３９】
図９は、図３，４のようにＣＣＷが設定されている場合におけるチャネル２００Ａとチャネル２００Ｂとによるデータ転送処理と、ＣＰＵ１０によるＣＰＵ処理との実行制御の説明図である。
なお、図９では、処理プログラム２３には、（１）処理Ｃを実行し、（２）アドレス“０ｘ１０００”のフラグが“１”か否か確認し、（３）処理Ｆを実行し、（４）アドレス“０ｘ２０００”のフラグを“１”に更新することが設定されているものとする。
また、転送用コマンドとフラグコマンドが使用するアドレスマップは、アドレス“０ｘ００００”〜“０ｘ０ＦＦＦ”がフラグメモリ１４０のアドレスであるとする。同様に、アドレス“０ｘ１０００〜０ｘＦＦＦＦ”がメモリ２０のフラグ機能２２で使用するアドレスであるとする。同様に、アドレス“０ｘ１００００”〜“０ｘＦＦＦＦＦ”がメモリ２０のフラグ機能以外で使用するアドレスであるとする。そして、フラグメモリ１４０に設定されたフラグは、図５のようにデータ転送処理に割り当てられ、フラグ機能２２に設定されたフラグは、図７のようにデータ転送処理及びＣＰＵ処理に割り当てられているものとする。
【００４０】
ＣＰＵ１０が（Ｓ２１）から（Ｓ２３）を実行して、チャネル２００Ａとチャネル２００Ｂとを起動する。すると、図９に示すように、まず、ＣＰＵ１０が処理Ｃ（ＣＰＵの処理（１））を、チャネル２００Ａが転送Ａ（ＣＣＷ０＿０）を、チャネル２００Ｂが転送Ｂ（ＣＣＷ１＿０）を並列して実行する。
チャネル２００Ｂによる転送Ｂが最も早く完了するが、チャネル２００Ｂはアドレス“０ｘ００００”のフラグが“１”になるまで待ちに入る（ＣＣＷ１＿１）。データ転送処理Ｂに続いて、チャネル２００Ａによる転送Ａが完了する。すると、チャネル２００Ａは、アドレス“０ｘ００００”のフラグを“１”に更新する（ＣＣＷ０＿１）。そして、チャネル２００Ａは次の転送Ｄを実行する（ＣＣＷ０＿２）。アドレス“０ｘ００００”のフラグが“１”に更新されたため、チャネル２００Ａがデータ転送処理Ｄを実行するのと並列して、チャネル２００Ｂはデータ転送処理Ｅを実行する（ＣＣＷ１＿２）。一方、ＣＰＵ１０による処理Ｃも、チャネル２００Ａによるデータ転送処理Ａが完了後まもなく完了するが、ＣＰＵ１０はアドレス“０ｘ１０００”のフラグが“１”になるまで待ちに入る（ＣＰＵの処理（２））。
チャネル２００Ａによるデータ転送処理Ｄと、チャネル２００Ｂによるデータ転送処理Ｅとが完了する。すると、チャネル２００Ａは、アドレス“０ｘ２０００”のフラグが“１”になるまで待ちに入る（ＣＣＷ０＿３）。チャネル２００Ｂは、アドレス“０ｘ１０００”のフラグを“１”に更新する（ＣＣＷ１＿３）。そして、チャネル２００Ｂは次のデータ転送処理Ｇを実行する（ＣＣＷ１＿４）。アドレス“０ｘ１０００”のフラグが“１”に更新されたため、チャネル２００Ｂがデータ転送処理Ｇを実行するのと並列して、ＣＰＵ１０は処理Ｆを実行する（ＣＰＵの処理（３））。
チャネル２００Ｂによるデータ転送処理Ｇが、ＣＰＵ１０による処理Ｆよりも先に完了する。チャネル２００Ｂは、データ転送処理Ｇが完了すると、アドレス“０ｘ０００１”のフラグを“１”に更新する（ＣＣＷ１＿５）。また、ＣＰＵ１０は、処理Ｆが完了すると、アドレス“０ｘ２０００”のフラグを“１”に更新する（ＣＰＵの処理（４））。すると、アドレス“０ｘ２０００”のフラグが“１”に更新されたため、チャネル２００Ａはアドレス“０ｘ０００１”のフラグが“１”であるかを確認する（ＣＣＷ０＿４）。ここでは、既にアドレス“０ｘ０００１”のフラグは“１”であるから、すぐにチャネル２００Ａは次のデータ転送処理Ｈを実行する（ＣＣＷ０＿５）。データ転送処理Ｈが完了すると、処理が全て完了したことになる。
【００４１】
以上のように、ＤＭＡ転送装置１００であれば、図３，４に示す全てのデータ転送処理を実行するには、ＣＰＵ１０は、チャネル２００Ａの起動とチャネル２００Ｂの起動との計２回、ＤＭＡ転送装置１００へアクセスすればよい。
一方、従来のように、実行順序の制御をＣＰＵ１０が介在して行った場合、図３，４に示す全てのデータ転送処理を実行するには、ＣＰＵ１０は、チャネル２００Ａの起動と、チャネル２００Ｂとの起動と、データ転送処理Ｅの起動と、データ転送処理Ｈの起動との合計４回の起動に加え、データ転送処理Ａの完了確認とデータ転送処理Ｅの完了確認とデータ転送処理Ｇの完了確認との３回の完了確認を行う必要がある。つまり、ＣＰＵ１０は、ＤＭＡ転送装置１００に計７回のアクセスが必要となる。
複数のチャネルで複数の転送を並列に実行する場合、特許文献１のような従来技術では、複数の転送を一度の起動で連続して順次実行する事は可能である。しかし、実行するチャネル同士が他のチャネルの転送状況を知る手段がなく、実行の順序が決まっている複数の転送をチャネル間で並列に実行するためには、ＣＰＵが転送の完了の確認と転送起動を何度も行わなければならない。
したがって、ＤＭＡ転送装置１００によれば、ＣＰＵ１０がＤＭＡ転送装置１００へアクセスする回数を少なくすることができ、ＤＭＡ転送に関するＣＰＵ１０の負荷を減らすことができる。すなわち、ＤＭＡ転送装置１００では、各チャネル２００が、ＣＣＷに従い、他のチャネル２００のデータ転送処理やＣＰＵ処理の完了を確認して、能動的に次のデータ転送処理を開始する。そのため、ＣＰＵ１０が行うデータ転送処理の完了確認と、データ転送処理の起動との回数が減る。その結果、ＤＭＡ転送に関するＣＰＵ１０の負荷を減らすことができる。
【００４２】
また、ＣＰＵ１０が実行するＣＰＵ処理とＤＭＡ転送装置１００が実行するデータ転送処理との間の実行順序を制御する場合、従来は、ＤＭＡ転送装置１００の転送完了をＣＰＵ１０が確認する必要がある。この確認をするためには、ＤＭＡ転送装置１００からの割り込み通知を受信するか、ＣＰＵ１０からポーリングによって確認する必要があった。
ここで、割り込みは処理時間がかかる。一方、ポーリングは、処理時間が短いが、ＣＰＵ１０とＤＭＡ転送装置１００との接続がＰＣＩＥｘｐｒｅｓｓのような読み出しレイテンシが大きいバスを使用している場合バスアクセス時間がかかる。そのため、転送完了を確認することにかかる時間は長くなり、ＤＭＡ転送に係わるＣＰＵ１０の処理時間が長くなり、ＣＰＵ１０とＤＭＡ転送装置１００との連携によるシステム動作の性能が低下していた。
しかし、ＤＭＡ転送装置１００は、データ転送処理が完了したことをメモリ２０に書き込む。そのため、ＣＰＵ１０はメモリ２０にアクセスするだけで、データ転送処理が完了したことを確認できる。したがって、ＣＰＵ１０がデータ転送処理が完了したことを確認する処理時間を短縮できる。
【００４３】
なお、チャネル２００Ａとチャネル２００Ｂとが同時にフラグメモリ１４０に対してリード要求やライト要求を出す場合が考えられる。この場合、フラグメモリ１４０がＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）で構成されていると、処理に不具合が発生する可能性がある。
そこで、フラグメモリ１４０に対してリード要求やライト要求が同時に送信された場合、フラグメモリ１４０へ送信するリード要求又はライト要求はフラグアクセス制御回路１５０によって選択される。選択されていないリード要求やライト要求は、選択されるまでフラグメモリ１４０への送信が待たされる。これにより、複数のリード要求やライト要求が同時にフラグメモリ１４０へ送信され、処理に不具合が発生することを防止する。
【００４４】
図１０は、フラグメモリ１４０とフラグアクセス制御回路１５０との構成の例示す図である。
フラグアクセス制御回路１５０は、調停部１５１とアクセス選択部１５２とを備える。
調停部１５１は、チャネル２００Ａ、チャネル２００Ｂからのリード／ライト信号、リクエスト信号を受信し、所定の調停のプロトコルに従って、アクセス選択部１５２へ入力されたどのリード要求、ライト要求をフラグメモリ１４０へ送信するかを決定する。なお、調停のプロトコルとは、チャネル２００に割り振られている優先度から決定する規則、リード要求よりもライト要求を優先する規則、ラウンドロビンにより決定する規則等の所定の規則を規定したプロトコルである。
アクセス選択部１５２は、調停部１５１の決定に従い、リード要求、ライト要求をフラグメモリ１４０へ送信する。なお、リード要求をフラグメモリ１４０へ送信するとは、リード要求とともに送信されたアドレスをフラグメモリ１４０へ送信することであり、ライト要求をフラグメモリ１４０へ送信するとは、ライト要求とともに送信されたアドレスと、ライト要求に含まれるライトデータとをフラグメモリ１４０へ送信することである。
【００４５】
また、調停部１５１は、フラグメモリ１４０へ送信するリード要求、ライト要求を決定すると、その要求を出したチャネル２００のフラグ判定回路２４２へアクノリッジ信号を送る。また、調停部１５１はフラグメモリ１４０へ送るリクエスト信号、リード／ライト信号に応じてチップセレクト信号とライトイネーブル信号とを生成し、フラグメモリ１４０の制御を行う。
例えば、調停部１５１は、フラグメモリ１４０へリード要求を送信する場合には、チップセレクト信号を“１”（有意）とし、ライトイネーブル信号を“０”（非有意）とする。また、調停部１５１は、フラグメモリ１４０へライト要求を送信する場合には、チップセレクト信号を“１”（有意）とし、ライトイネーブル信号を“１”（有意）とする。
フラグメモリ１４０は、チップセレクト信号が“１”（有意）でない場合は、ライトイネーブル信号に関わらず動作しない。一方、フラグメモリ１４０は、チップセレクト信号が“１”（有意）であり、ライトイネーブル信号が“０”（非有意）の場合、送信されたアドレスからデータを読み出すリード動作を行う。また、フラグメモリ１４０は、チップセレクト信号が“１”（有意）であり、ライトイネーブル信号が“１”（有意）の場合、送信されたアドレスに、送信されたデータを書き込むライト動作を行う。
【００４６】
フラグ判定回路２４２は、ライト要求を出している場合に、調停部１５１からのアクノリッジ信号を受信することにより、そのライト要求による書き込みが完了したと判断し、コマンド読出回路２１０に次のＣＣＷを読み出すように指令を出す。一方、フラグ判定回路２４２は、リード要求を出している場合に、調停部１５１からのアクノリッジ信号を受信すると、フラグメモリ１４０から送信されるリードデータが自分の出したリード要求のデータであると判断し、その値の判定を行う。なお、フラグ判定回路２４２は、アクノリッジ信号が送られてくる前に、フラグメモリ１４０から送られたデータは無視する。
【００４７】
また、上記説明では、フラグメモリ１４０やメモリ２０に設定された各フラグが個別のアドレスを持つ例を示した。しかし、フラグメモリ１４０は、各ビットがフラグを表すビット列を記憶してもよい。そして、チャネル２００は、アドレスに代えて、どのビットにアクセスするかを示す情報を送信するとしてもよい。
例えば、フラグメモリ１４０は８ビットで表されたフラグを記憶しており、チャネル２００はアクセスするフラグを“０ｘ０００００１０１”のようにビット列で指定する。この場合、リトルエンディアン形式のビット０とビット２が指定されたものとする。
つまり、ｓｅｔコマンドが“ｓｅｔ  ０ｘ０００００００１”である場合には、ビット０のフラグを“１”（転送完了状態）にすることを意味する。ｗａｉｔコマンドが“ｗａｉｔ  ０ｘ０００００００１”の場合は、ビット０のフラグが“１”になるまで次のデータ転送処理の実行を待つことを意味する。また、ｗａｉｔコマンドが“ｗａｉｔ  ０ｘ０００００１０１”の場合は、ビット０とビット２のフラグの値が両方とも“１”になるまで、次のデータ転送処理の実行を待つことを意味する。
このように、フラグをビット列として表した場合、ｗａｉｔコマンドの判定を、フラグを表すビット列と、フラグを指定するビット列とについて所定のブール式の計算により行うことができる。そのため、“ｗａｉｔ  ０ｘ０００００１０１”のように複数のフラグを指定したｗａｉｔコマンドを判定する場合に、複数のフラグを１つずつ判定することなく１度に判定できる。したがって、判定処理を効率化することができる。
【００４８】
また、上記説明では、ＣＰＵ１０とＤＭＡ転送装置１００における複数のチャネル２００との動作について説明した。しかし、ＤＭＡ転送装置１００におけるチャネル２００が１つの場合であっても、上記と同様に動作し、チャネル２００が実行するデータ転送処理とＣＰＵ１０が実行するＣＰＵ処理との間の実行順序を制御することに関しては同様の効果がある。
【００４９】
実施の形態２．
実施の形態２では、ＣＰＵ１０からフラグメモリ１４０へアクセス可能にしたＤＭＡ転送装置１００について説明する。
図１１は、実施の形態２に係るＤＭＡ転送装置１００の構成図である。
【００５０】
実施の形態２に係るＤＭＡ転送装置１００は、ＣＰＵ１０からフラグメモリ１４０にアクセス可能とするパス３０１を備える。
ＤＭＡ転送装置１００がパス３０１を備えることにより、ＣＰＵ１０は、ＣＰＵ処理が完了すると、バス１１と接続される内部バス３００及びパス３０１を介して、フラグメモリ１４０のフラグを更新することができる。そして、各チャネル２００は、フラグメモリ１４０のフラグを読み込むことで、ＣＰＵ処理の完了確認を行うことができる。
つまり、チャネル２００は、ＣＰＵ処理の完了を、フラグメモリ１４０のフラグの値を読み出すことにより確認できる。チャネルは読み出したフラグの値を判定し、フラグの値がＣＰＵ処理完了状態を示す“１”であれば、ＣＰＵ処理は完了しているとみなし、次のＣＣＷを実行する。一方、フラグの値がＣＰＵ処理完了状態を示す“１”ではなければ、ＣＰＵ処理は完了していないとみなし、値が“１”になるまでフラグの値を繰り返し読み出し、その間は次のＣＣＷを実行しない。
【００５１】
バス１１にＰＣＩｅｘｐｒｅｓｓのようなリードレイテンシが大きいバスを使用している場合に、ＣＰＵ１０からフラグメモリ１４０へのライトレイテンシが小さい場合がある。このような場合には、実施の形態２に係るＤＭＡ転送装置１００の構成とすることで、チャネル２００はリードレイテンシが大きいバス１１を介してフラグの読み出しを行う必要がなくなり、フラグの読み出しを効率的に行うことができる。
【００５２】
実施の形態３．
実施の形態３では、フラグメモリ１４０のリセット処理について説明する。
図１２は、実施の形態３に係るＤＭＡ転送装置１００の構成図である。
図１３は、実施の形態３に係るフラグメモリ１４０とフラグアクセス制御回路１５０とフラグリセット部１６０との構成図である。
【００５３】
実施の形態３に係るＤＭＡ転送装置１００は、図１２に示すように、フラグメモリ１４０のフラグの値を初期化するフラグリセット部１６０を備える。また、図１３に示すように、フラグリセット部１６０は、リセット信号生成部１６１とディセーブル信号生成部１６２とを備える。
【００５４】
実施の形態１では、図８の（Ｓ２２）でＣＰＵ１０がフラグメモリ１４０のフラグをリセットした後、（Ｓ２３）で各チャネル２００が起動されていた。つまり、フラグのリセットと、チャネル２００によるデータ転送処理とは並列に実行されていなかった。これは、フラグのリセット中にチャネル２００からフラグメモリ１４０へアクセスされると、処理に不具合が発生する虞があるためである。
これに対して、実施の形態３では、図８の（Ｓ２２）において、ＣＰＵ１０は、フラグリセット部１６０を起動する。フラグリセット部１６０を起動すると、すぐにＣＰＵ１０は各チャネル２００を起動して、データ転送処理を開始させる。一方、起動されたフラグリセット部１６０のリセット信号生成部１６１は、フラグメモリ１４０に対してフラグリセット起動信号を出力する。フラグメモリ１４０は、フラグリセット部１６０からリセット起動情報が入力されると各フラグの値の初期化（例えば、“０”に更新する）を実行する。つまり、ＤＭＡ転送装置１００は、フラグリセット部１６０によるフラグのリセットと、チャネル２００によるデータ転送処理とを並列に実行する。
【００５５】
上述したように、フラグメモリ１４０がフラグの値を初期化している最中に、各チャネル２００がフラグメモリ１４０に対してアクセスすることを防止する必要がある。そこで、フラグリセット部１６０のディセーブル信号生成部１６２は、フラグアクセスディセーブル信号をフラグアクセス制御回路１５０へ送信する。フラグアクセスディセーブル信号は、チャネル２００からフラグメモリ１４０へのリード要求とライト要求とを無効にする情報である。フラグアクセス制御回路１５０の調停部１５１は、フラグアクセスディセーブル信号が入力されるとアクセス選択部１５２に入力されているリード要求とライト要求の選択を行わない。
これにより、フラグアクセスディセーブル信号の入力が解除されるまで、各チャネル２００からアクセス選択部１５２に入力されたフラグメモリ１４０へのリード要求とライト要求とは待ち状態となる。したがって、フラグメモリ１４０はチャネル２００からアクセスされることがない。
【００５６】
上記説明では、フラグリセット部１６０は、リセット起動情報とフラグアクセスディセーブル信号との２つの信号を用いてリセット処理を実現した。次に、リセット起動情報とフラグアクセスディセーブル信号とを１つの信号で実現する場合について説明する。
図１４は、リセット起動情報とフラグアクセスディセーブル信号とを１つの信号で実現する場合におけるＤＭＡ転送装置１００の構成図である。
図１５は、リセット起動情報とフラグアクセスディセーブル信号とを１つの信号で実現する場合におけるフラグメモリ１４０とフラグアクセス制御回路１５０とフラグリセット部１６０との構成図である。
図１５に示すように、図１３に示すフラグリセット部１６０とは異なり、フラグリセット部１６０は、ディセーブル信号生成部１６２を備えず、リセット信号生成部１６１とリードフラグ出力部１６３とを備える。
【００５７】
フラグリセット部１６０が起動されると、リセット信号生成部１６１がフラグリセット起動信号を出力する。フラグリセット部１６０から出力されたフラグリセット起動信号は、フラグメモリ１４０へ入力されるとともに、フラグアクセス制御回路１５０の調停部１５１へ入力される。
【００５８】
フラグメモリ１４０は、フラグリセット起動信号が入力されている間にフラグの値のリセットを実行する。フラグメモリ１４０のリセットが完了するとリセット信号生成部１６１はリセット起動情報の信号出力を停止する。
【００５９】
一方、調停部１５１は、フラグリセット起動信号が入力されると、ライト要求を選択することが禁止される。つまり、フラグメモリ１４０へのライト要求はフラグリセット起動信号が入力されなくなるまで待ち状態となる。
しかし、調停部１５１は、フラグリセット起動信号が入力されている場合であっても、リード要求を選択することは許される。つまり、フラグメモリ１４０へのリード要求は送信される可能性がある。しかし、図１５に示すように、フラグリセット起動信号が入力されている間は、リード要求に対する応答として、フラグメモリ１４０から読み出したリードフラグ（フラグの値）と、フラグリセット起動信号をＮＯＴ回路１６４で反転させた値とについて、ＡＮＤ回路１６５で論理積を計算した値がフラグ判定回路２４２へ送信される。ここで、フラグリセット起動信号は“１”である。つまり、リード要求に対する応答としてフラグ判定回路２４２へ送信される値は、リードフラグ（フラグの値）と、“０”との論理積をとった値であり、常に“０”となる。すなわち、フラグリセット起動信号が出力されている間に、フラグメモリ１４０から読み取った値は、転送完了状態又はＣＰＵ処理完了状態を示す状態にはならない。つまり、リセット起動情報が出力されている間、リード要求は結果的に無効となる。
【００６０】
以上のように、フラグメモリ１４０の初期化を行っている間、チャネル２００からフラグメモリ１４０へのアクセスを待ち状態又は無効にする。これにより、フラグメモリ１４０の初期化を行っている間に、チャネル２００がＣＣＷを読み込み、フラグメモリ１４０へアクセスしてもリセットの動作には影響がない。つまり、チャネル２００が読み込んだＣＣＷが転送用のコマンドであれば、フラグメモリ１４０の初期化を行っている間に、データ転送処理を実行できる。そのため、初期化をした後に、チャネル２００を起動する場合に比べ、処理の実行時間を短くすることができる。
【００６１】
なお、フラグメモリ１４０の初期化を行っている間に、フラグメモリ１４０へのリード要求とライト要求とを待ち状態又は無効にする方法については、２通りの方法を説明した。しかし、他の方法により実現してもよい。
また、初期化の実行方法については、フラグリセット起動信号が入力されるとフラグメモリ１４０が自身の機能として初期化を実行する方法であってもよい。また、フラグリセット起動信号が入力されている間にフラグメモリ１４０のフラグの値を順に書き換えて初期化を実行する方法であってもよい。
【００６２】
実施の形態４．
図１６は、実施の形態４に係るＤＭＡ転送装置１００の構成図である。
【００６３】
実施の形態４に係るＤＭＡ転送装置１００の各チャネル２００は、フラグリセット部１６０を起動させる初期化指示部２５０を備える。
実施の形態３では、ＣＰＵ１０がフラグリセット部１６０を起動させ、フラグメモリ１４０の初期化を実行させた。実施の形態４では、ＣＰＵ１０は、各チャネル２００の中で最も早く起動されるチャネル２００が実行する最初のＣＣＷに、フラグリセット部１６０を起動するリセットコマンド（初期化指示情報）を設定する。なお、リセットコマンドもフラグコマンドの一種である。
フラグメモリアクセス回路２４１は、コマンド判別回路２２０から送信されたＣＣＷがリセットコマンドであれば、リセットコマンドを初期化指示部２５０へ送る。初期化指示部２５０は、リセットコマンドを受信すると、フラグリセット部１６０を起動させ、フラグリセット部１６０の初期化を実行させる。
【００６４】
つまり、フラグリセット部１６０は、チャネル２００により起動されることになり、ＣＰＵ１０がフラグリセット部１６０の起動をかける必要がない。したがって、ＣＰＵ１０がＤＭＡ転送装置１００にアクセスしフラグリセット部１６０の起動を行う時間を短縮できる。言い換えれば、フラグリセット部１６０の起動をかける分のＣＰＵ１０の負荷を軽くすることができる。
【００６５】
実施の形態５．
実施の形態５では、フラグメモリ１４０として２ポートメモリを使用した場合について説明する。なお、２ポートメモリとは、リード専用とライト専用のポートが１つずつあるメモリのことである。
図１７は、フラグメモリ１４０として２ポートメモリを使用した場合のフラグメモリ１４０とフラグアクセス制御回路１５０との構成図である。
【００６６】
フラグメモリ１４０として２ポートメモリを使用した場合、ライト要求とリード要求とを同時に処理することができる。
このため、調停部１５１は、２つのチャネル２００からリード要求が同時に送信された場合には、どのリード要求をフラグメモリ１４０へ送信するかを決定し、他方のリード要求を待たせる。同様に、調停部１５１は、複数のチャネル２００からライト要求が同時に送信された場合には、どのライト要求をフラグメモリ１４０へ送信するかを決定し、他方のライト要求を待たせる。しかし、２つのチャネル２００からリード要求とライト要求とが同時に送信された場合には、調停部１５１はアクセス選択部１５２に両方を送信させる。
【００６７】
この場合、フラグメモリ１４０の同じアドレスのフラグに対して、読み出しと書き込みとを同時に行ってしまう可能性がある。
そこで、フラグメモリ１４０に対するアクセス制御を行うため、フラグアクセス制御回路１５０はアドレス比較部１５３を備える。アドレス比較部１５３は、調停部１５１によって選択されたリードアドレスとライトアドレスとを比較する。アドレス比較部１５３は、リードアドレスとライトアドレスとが同じアドレスである場合、調停部１５１へアドレス一致信号を出力する。調停部１５１は、アドレス一致信号を受信すると、リード要求に対するアクノリッジ信号の出力をライト要求による書き込みが終わるまで待つ。
実施の形態１で説明したように、アクノリッジ信号が送られてくる前に、フラグメモリ１４０から送られたデータは無視され、読み出しを完了しない。したがって、リード要求を送信したチャネル２００は、他のチャネル２００がライトを実行している間は読み出しを完了することができない。
【００６８】
上述したように、２ポートメモリを用いた場合、異なるアドレスに対しては、ライト要求とリード要求とを同時に処理できる。しかし、ライト要求とリード要求とを同時に処理した場合、処理のモニタリングができなくなる虞がある。そこで、２ポートメモリを用いた場合であっても、あえてライト要求とリード要求との処理タイミングをずらしてもよい。
つまり、２つのチャネル２００からリード要求とライト要求とが同時に送信された場合に、調停部１５１は、リード要求に対するアクノリッジ信号の出力をライト要求による書き込みが終わるまで待たせる。これにより、リード要求を送信したチャネル２００へはアクノリッジ信号が返らず、他のチャネル２００がライトを実行している間は読み出しを完了することができない。
【００６９】
図１８は、ライト要求とリード要求との処理タイミングをずらした場合のタイミングチャートである。なお、図１８において、リード／ライト信号は、Ｈｉｇｈ（“１”）がライトをＬｏｗ（“０”）がリードを示すものとする。
図１８に示すように、タイミングＴ０では、チャネル２００Ａとチャネル２００Ｂとからライト要求が送信される。ここでは、調停部１５１は、チャネル２００Ａからのライト要求を選択して、チャネル２００Ｂからのライト要求を待たせる。したがって、タイミングＴ０では、チャネル２００Ａからのライト要求が処理され、チャネル２００Ａへアクノリッジ信号が送信される。この処理についてはタイミングＴ１でモニタ信号が検出される（モニタリングされる）。
タイミングＴ１では、待たされたチャネル２００Ｂのライト要求が処理され、チャネル２００Ｂへアクノリッジ信号が送信される。この処理についてはタイミングＴ２でモニタ信号が検出される。
タイミングＴ２では、チャネル２００Ａからはリード要求が送信され、チャネル２００Ｂからはライト要求が送信される。これらを同時に処理してしまうと、一方の処理をモニタリングできず、モニタ信号を送信できない。そこで、調停部１５１は、チャネル２００Ａから送信されたリード要求を待たせ、チャネル２００Ｂから送信されたライト要求を処理させる。したがって、チャネル２００Ｂへアクノリッジ信号が送信される。この処理についてはタイミングＴ３でモニタ信号が検出される。
タイミングＴ３では、待たされたチャネル２００Ａのリード要求が処理され、チャネル２００Ａへアクノリッジ信号が送信される。この処理についてはタイミングＴ４でモニタ信号が検出される。
したがって、リード要求とライト要求とが同時に送信された場合であってもすべてのリード要求、ライト要求をモニタリングすることができる。その結果、障害が発生した場合等に、原因の解析を容易に行うことができる。
【００７０】
なお、調停部１５１は、ＣＰＵ１０等から送信されるリクエスト逐次化信号に応じて、ライト要求とリード要求との処理タイミングをずらすか否かを決定する。例えば、リクエスト逐次化信号が“１”であれば、ライト要求とリード要求との処理タイミングをずらし、リクエスト逐次化信号が“０”であれば、ライト要求とリード要求とを同時に実行させる。
【００７１】
以上をまとめると次のようになる。
ＤＭＡ転送装置１００は、
データを読み出す転送元アドレス又はデータを書き込む転送先アドレスと転送長、又はデータを読み出す転送元アドレスとデータを書き込む転送先アドレスの両方と転送長の転送指示情報を用いて転送を行い、転送に先立ちその転送指示情報を一つ又は複数格納し、ＤＭＡ転送装置とメモリ又はＩ／Ｏデバイスが、内部バス又は外部バスと接続され、前記転送を行うチャネルを一つ又は複数備えるＤＭＡ転送装置１００であり、以下の（ａ）、（ｂ）、（ｃ）、（ｄ）を備える事を特徴とする
（ａ）前記チャネルが実行する転送の完了を前記チャネル間で通知する、又は前記チャネルが実行する転送の完了を前記チャネルから前記ＣＰＵへ通知する、“転送完了通知”の手段。
（ｂ）前記ＣＰＵが実行する処理の完了を前記ＣＰＵから前記チャネルへ通知する、“ＣＰＵ処理完了通知”の手段。
（ｃ）前記チャネルと前記ＣＰＵは転送又はＣＰＵ処理が順序通りに完了するように、転送又はＣＰＵ処理の開始を待たせる”実行待機状態”の手段。
（ｄ）開始を待たせている転送を開始して良い条件になると、前記チャネルが能動的に待ち状態を解除して転送を開始する“転送開始”の手段。
【００７２】
さらに、ＤＭＡ転送装置１００は、以下の（ａ）を備え、かつ（ｂ）または（ｃ）であることを特徴とする。
（ａ）ＤＭＡ転送装置内に、転送の完了状態を“転送完了状態”、ＣＰＵ処理の完了状態を“ＣＰＵ処理完了状態”のフラグ情報として記憶するフラグメモリ、又はメインメモリの一部にフラグ情報として転送の完了状態を“転送完了状態”、ＣＰＵ処理の完了状態を“ＣＰＵ処理完了状態”のフラグ情報として記憶するフラグ機能。
（ｂ）前記フラグメモリに前記チャネル又は前記ＣＰＵがアクセスし、読み出し又は書き込み又はその両方を行う事が可能である。
（ｃ）前記メインメモリのフラグ機能を前記チャネルが読み出し又は書き込み又はその両方を行う事が可能である。
【００７３】
また、さらに、ＤＭＡ転送装置１００は、（ａ）または（ｂ）であり、かつ（ｃ）、（ｄ）、（ｅ）であることを特徴とする。
（ａ）前記チャネルは転送が完了したことを前記フラグメモリのフラグ情報又は前記メインメモリのフラグ機能におけるフラグ情報の値を“転送完了状態”にすることにより“転送完了通知”の手段を実行可能にする。
（ｂ）前記ＣＰＵは処理が完了したことを前記フラグメモリのフラグ情報又は前記メインメモリのフラグ機能のフラグ情報の値を“ＣＰＵ処理完了状態”にすることにより“処理完了通知”の手段を実行可能にする。
（ｃ）前記チャネル又は前記ＣＰＵは、前記フラグメモリのフラグ情報又は前記メインメモリのフラグ機能におけるフラグ情報の値が“転送完了状態”又は“ＣＰＵ処理完了状態”であるかを判定し、判定の結果“転送完了状態”又は“ＣＰＵ処理完了状態”でなければ、次の転送又はＣＰＵ処理を待たせることで、“実行待機状態”の手段を実行可能にする。
（ｄ）前記チャネルは前記フラグメモリのフラグ情報又は前記メインメモリのフラグ機能におけるフラグ情報の値が“転送完了状態”又は“ＣＰＵ処理完了状態”であるかを判定し、判定の結果“転送完了状態”又は“ＣＰＵ処理完了状態”であれば、“転送開始”の手段を実行可能にする。
（ｅ）上記の手段により、前記ＣＰＵによる前記チャネルの転送起動、転送停止の指示を行わずに転送を自動的に再開すること可能となる。
【００７４】
また、さらに、ＤＭＡ転送装置１００は、（ａ）、（ｂ）、（ｃ）であることを特徴とする。
（ａ）前記チャネルは、前記フラグメモリの指定するフラグ情報を書き込む指令と、前記フラグメモリの指定するフラグ情報の値を読み込む指令を実行可能である。
（ｂ）前記チャネルは前記フラグメモリの前記フラグ情報の値を読み込み、値が“転送完了状態”であれば、他チャネルの前の転送が完了していると判断し、次の転送指示情報に示された転送を開始する。
（ｃ）前記チャネルは前記フラグメモリの前記フラグ情報の値を読み込み、値が“転送完了状態”でなければ前の転送は完了していないと判断し、値が“転送完了状態になるまでフラグ情報の読み込みを繰り返し、その間は次チャネルの転送の実行は行わない。
【００７５】
また、さらに、ＤＭＡ転送装置１００は、（ａ）、（ｂ）、（ｃ）であることを特徴とする。
（ａ）前記チャネルは前記メインメモリに置かれたフラグ情報の値を読み込む指令を実行可能する。
（ｂ）前記チャネルは前記メインメモリの前期フラグ情報の値を読み込み、値が“ＣＰＵ処理完了状態”であればＣＰＵ処理は完了していると判断し、次の転送指示情報に示された転送を実行する。
（ｃ）前記チャネルは前記メインメモリの前期フラグ情報の値を読み込み、値が“ＣＰＵ処理完了状態”でなければＣＰＵ処理は完了していないと判断し、値が“ＣＰＵ処理完了状態”になるまで、フラグ情報の読み込みを繰り返し、その間は転送の実行は行わない。
【００７６】
また、さらに、ＤＭＡ転送装置１００は、（ａ）、（ｂ）、（ｃ）であることを特徴とする。
（ａ）前記チャネルは、前記フラグメモリの指定するフラグ情報の値を読み込む指令を実行する。
（ｂ）前記チャネルは前記フラグメモリの前記フラグ情報を読み込み、値が“ＣＰＵ処理完了状態”であれば前のＣＰＵ処理は完了していると判断し、次の転送指示情報に示された転送を実行する。
（ｃ）前記チャネルは前記フラグメモリの前記フラグ情報を読み込み、値が“ＣＰＵ処理完了状態”でなければＣＰＵ処理は完了していないと判断し、値が“ＣＰＵ処理完了状態”になるまで、フラグ情報の読み込みを繰り返し、次の指令である転送の実行は行わない。
【００７７】
また、さらに、ＤＭＡ転送装置１００は、（ａ）、（ｂ）、（ｃ）であることを特徴とする。
（ａ）前記フラグメモリの内容を初期化するフラグリセット手段を備える。
（ｂ）前記フラグリセット手段はフラグリセット起動情報の送信又はフラグのアドレスを変えながら全フラグを初期状態の値に書き換える回路を持つ。
（ｃ）前記フラグリセット手段は、前記フラグメモリのフラグ情報を初期化している間には、フラグメモリに対して読み書きすることを不可能とする、フラグアクセスディセーブル状態情報を持つ。
【００７８】
また、さらに、ＤＭＡ転送装置１００は、（ａ）、（ｂ）であることを特徴とする。
（ａ）前記フラグリセット手段は、前記フラグアクセスディセーブル状態情報をフラグアクセスディセーブル信号として、チャネルからのリード又はライトアクセスを制御する回路に送信する。
（ｂ）前記アクセスを制御する回路は、フラグアクセスディセーブル信号が入力されている間は、チャネルからの前記フラグメモリに対するアクセスを待たせる。
【００７９】
また、さらに、ＤＭＡ転送装置１００は、（ａ）であることを特徴とする。
（ａ）前記フラグリセット起動情報と前記フラグアクセスディセーブル状態情報を同一のリセット信号として実現し、前記フラグリセット信号を前記フラグメモリに対して送る間は前記フラグメモリのフラグ情報の値を初期値に戻し、その間の前記フラグメモリに対するアクセス結果は、転送未完了又はＣＰＵ処理未完了に見せる。
【００８０】
また、さらに、ＤＭＡ転送装置１００は、（ａ）であることを特徴とする。
（ａ）前記フラグメモリまたはフラグの値が、“転送完了状態”又は“ＣＰＵ処理完了状態”になるまで繰り返し確認し、“転送完了状態”又は“ＣＰＵ処理完了常態”になった事を確認すると次の転送指示情報を実行する時に、転送指示情報を実行するタイミングが各チャネルで同時にならないように、排他制御する手段を備えることにより、デバッグや外部からの観測よる解析を容易にする事を特徴とする。
【００８１】
以上により、ＤＭＡ転送装置１００は、ＣＰＵによってＤＭＡ転送装置内のメモリに書き込まれた転送元アドレス、転送先アドレス、転送長の転送用のコマンドに従ってデータ転送を実行するチャネルが複数ある場合に、複数のチャネル同士で転送完了の同期を取る手段を備えることで、他のチャネルの転送実行状態を反映して、転送を実行する事ができる。
【００８２】
また、従来技術では、実行の順序関係が決まっている転送を別々のチャネルで並列に実行するためには、ＣＰＵが転送Ａの完了のチェックを行い、転送Ａが完了したことを確認してから、転送Ｂの起動をかけていた。そのため、ＣＰＵは転送Ａの完了確認と、転送Ｂの起動を行うために負荷が高いという課題がある。これに対して、ＤＭＡ転送装置１００は、各チャネル同士がＣＰＵの介在なしに転送完了の同期を取り、チャネルが能動的に実行順序に従った転送を順次実行することができるため、ＤＭＡ転送に係わるＣＰＵの負荷が低い。
【符号の説明】
【００８３】
１０  ＣＰＵ、１１  バス、２０  メモリ、２１  メモリバス、２２  フラグ機能、２３  処理プログラム、１００  ＤＭＡ転送装置、１１０  バス制御回路、１２０  起動レジスタ、１３０  コマンドメモリ、１４０  フラグメモリ、１５０  フラグアクセス制御回路、１５１  調停部、１５２  アクセス選択部、１５３  アドレス比較部、１６０  フラグリセット部、１６１  リセット信号生成部、１６２  ディセーブル信号生成部、１６３  リードフラグ出力部、１６４  ＮＯＴ回路、１６５  ＡＮＤ回路、２００  チャネル、２１０  コマンド読出回路、２２０  コマンド判別回路、２３０  転送実行部、２３１  転送制御回路、２３２  コマンド全体制御部、２３３  コマンド個別制御部、２３４  転送回路、２３５  転送要求部、２３６  バッファ、２４０  順序制御部、２４１  フラグメモリアクセス回路、２４２  フラグ判定回路、２５０  初期化指示部、３００  内部バス、３０１  パス、３１０  バスブリッジ、３２０  外部バス。
【図１】
2011070259.tif 000003
【図２】
2011070259.tif 000004
【図３】
2011070259.tif 000005
【図４】
2011070259.tif 000006
【図５】
2011070259.tif 000007
【図６】
2011070259.tif 000008
【図７】
2011070259.tif 000009
【図８】
2011070259.tif 000010
【図９】
2011070259.tif 000011
【図１０】
2011070259.tif 000012
【図１１】
2011070259.tif 000013
【図１２】
2011070259.tif 000014
【図１３】
2011070259.tif 000015
【図１４】
2011070259.tif 000016
【図１５】
2011070259.tif 000017
【図１６】
2011070259.tif 000018
【図１７】
2011070259.tif 000019
【図１８】
2011070259.tif 000020