(57)【要約】【課題】ＤＭＡ転送の状態を示すステータス情報の確認にかかるＣＰＵのステータス情報の読み込み時間を短縮する。【解決手段】各論理チャネルは、コマンドメモリ４００、４１０に格納されているコマンドに従って、データ転送を行ってステータス情報を生成してステータスレジスタ群５００に格納するとともに、ステータスレジスタ群５００に格納されている複数のステータス情報を読み出し、読み出した複数のステータス情報を加工して、複数のステータス情報に示されている複数の転送状態を集約して示す集約ステータス情報を生成し、生成した集約ステータス情報をステータスレジスタ群５００に書き込み、ＣＰＵ１０は集約ステータスを読み込むことで複数のステータス情報を読み込む必要が無くなる。【選択図】図１
2011060051.tif 000002
【特許請求の範囲】
【請求項１】
各々にデータ転送の状況が表される複数のステータス情報を入力するステータス情報入力部と、
前記ステータス情報入力部により入力された複数のステータス情報を加工し、前記複数のステータス情報にて表わされているデータ転送の状況が集約されて表される集約ステータス情報を生成するステータス情報加工部と、
前記ステータス情報加工部により生成された集約ステータス情報を出力する集約ステータス情報出力部とを有することを特徴とする情報処理装置。
【請求項２】
前記ステータス情報入力部は、
ＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）によるデータ転送の状況が表される複数のステータス情報を入力することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記ステータス情報入力部は、
ステータス情報を蓄積するステータス情報蓄積領域から複数のステータス情報を入力し、
前記集約ステータス情報出力部は、
前記ステータス情報蓄積領域に、集約ステータス情報を出力することを特徴とする請求項１又は２に記載の情報処理装置。
【請求項４】
前記ステータス情報加工部は、
特定のＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）に参照される集約ステータス情報を生成し、
前記集約ステータス情報出力部は、
前記ＣＰＵに接続されているメモリに、集約ステータス情報を出力することを特徴とする請求項１〜３のいずれかに記載の情報処理装置。
【請求項５】
前記情報処理装置は、更に、
データ転送元アドレスからデータ転送先アドレスにデータを転送するデータ転送部と、
前記データ転送部によるデータ転送が行われる度に、前記データ転送部によるデータ転送の状況を表すステータス情報を生成し、生成したステータス情報を所定のステータス情報蓄積領域に出力するステータス情報生成部とを有し、
前記ステータス情報入力部は、
前記データ転送部が所定数のデータ転送を完了し前記ステータス情報生成部が前記所定数のデータ転送のステータス情報を前記データ蓄積領域に出力するのに十分な時間が経過するのを待って、前記ステータス情報蓄積領域から複数のステータス情報を入力することを特徴とする請求項１〜４のいずれかに記載の情報処理装置。
【請求項６】
前記情報処理装置は、更に、
前記ステータス情報加工部が集約ステータス情報を生成した時刻を集約ステータス情報生成時刻として計時し、前記ステータス情報加工部により生成された集約ステータス情報に集約ステータス情報生成時刻を示す情報を付加する時刻計時部を有し、
前記集約ステータス情報出力部は、
前記時刻計時部により集約ステータス情報生成時刻を示す情報が付加された後の集約ステータス情報を出力することを特徴とする請求項１〜５のいずれかに記載の情報処理装置。
【請求項７】
前記情報処理装置は、更に、
データ転送元アドレスからデータ転送先アドレスにデータを転送するデータ転送部と、
前記データ転送部によるデータ転送の状況を表すステータス情報を生成するステータス情報生成部とを有し、
前記時刻計時部は、
前記ステータス情報生成部がステータス情報を生成した時刻をステータス情報生成時刻として計時し、前記ステータス情報生成部により生成されたステータス情報にステータス情報生成時刻を示す情報を付加することを特徴とする請求項６に記載の情報処理装置。
【請求項８】
前記情報処理装置は、更に、
データ転送元アドレスからデータ転送先アドレスにデータを転送するデータ転送部と、
前記データ転送部のデータ転送における異常を検知する転送異常検知部とを有し、
前記ステータス情報加工部は、
前記データ転送部により正常にデータ転送が完了した場合に第１の加工手順に従って複数のステータス情報を加工して前記第１の加工手順に従った集約ステータス情報を生成し、前記異常検知部により前記データ転送部のデータ転送において異常が検知された場合に前記第１の加工手順と異なる第２の加工手順に従って複数のステータス情報を加工して前記第２の加工手順に従った集約ステータス情報を生成することを特徴とする請求項１〜７のいずれかに記載の情報処理装置。
【請求項９】
前記情報処理装置は、
データ転送元アドレスからデータ転送先アドレスにデータを転送し、データ転送の状況を表すステータス情報を生成するデータ転送装置とともにデータ処理システムに含まれ、
前記情報処理装置は、更に、
データ転送元アドレスからデータ転送先アドレスにデータを転送するデータ転送部と、
前記データ転送部によるデータ転送が行われる度に、前記データ転送部によるデータ転送の状況を表すステータス情報を生成するステータス情報生成部とを有し、
前記ステータス情報入力部は、
前記データ転送装置によるデータ転送及びステータス情報の生成が終了し、前記データ転送部によるデータ転送及び前記ステータス情報生成部によるステータス情報の生成が終了した後に、前記データ転送装置によるステータス情報と、前記ステータス情報生成部によるステータス情報を入力することを特徴とする請求項１〜８のいずれかに記載の情報処理装置。
【請求項１０】
前記情報処理装置は、
データ転送元アドレスからデータ転送先アドレスにデータを転送するとともにデータ転送の状況を表すステータス情報を生成するデータ転送装置と、前記データ転送装置により生成されたステータス情報を蓄積するステータス情報蓄積領域とともにデータ処理システムに含まれ、
前記情報処理装置は、更に、
データ転送元アドレスからデータ転送先アドレスにデータを転送するデータ転送部と、
前記データ転送部によるデータ転送の状況を表すステータス情報を生成し、生成したステータス情報を前記ステータス情報蓄積領域に出力するステータス情報生成部と、
前記データ転送部によるデータ転送の完了及び前記ステータス情報生成部によるステータス情報の出力の完了と、前記データ転送装置によるデータ転送の完了及びステータス情報の出力の完了を検知する完了検知部とを有し、
前記ステータス情報入力部は、
前記完了検知部により、前記データ転送部によるデータ転送の完了及び前記ステータス情報生成部によるステータス情報の出力の完了と、前記データ転送装置によるデータ転送の完了及びステータス情報の出力の完了が検知された後に、複数のステータス情報を入力することを特徴とする請求項１〜９のいずれかに記載の情報処理装置。
【請求項１１】
前記情報処理装置は、更に、
特定のＣＰＵの指示に従って、データ転送元アドレスからデータ転送先アドレスにデータを転送するデータ転送部と、
前記ＣＰＵからのコマンドであって前記データ転送部によるデータ転送を指示する転送コマンドと、前記ＣＰＵからのコマンドであって前記ステータス情報入力部による複数のステータス情報の入力を指示するステータス情報入力コマンドと、前記ステータスコマンド加工部によるステータス情報の加工を指示するステータス情報加工コマンドを入力するコマンド入力部とを有し、
前記データ転送部は、
前記コマンド入力部により入力されたコマンドが転送コマンドである場合に、転送コマンドに従ってデータ転送元アドレスからデータ転送先アドレスにデータを転送し、
前記ステータス情報入力部は、
前記コマンド入力部により入力されたコマンドがステータス情報入力コマンドである場合に、ステータス情報入力コマンドに従って、複数のステータス情報を入力し、
前記ステータス情報加工部は、
前記コマンド入力部により入力されたコマンドがステータス情報加工コマンドである場合に、ステータス情報加工コマンドに従って、前記ステータス情報入力部により入力された複数のステータス情報を加工して集約ステータス情報を生成することを特徴とする請求項１〜１０のいずれかに記載の情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）転送等のデータ転送の状況が示されるステータス情報を集約する技術に関する。
【背景技術】
【０００２】
従来のＤＭＡ転送装置に関する技術には、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）からＤＭＡ転送装置に一度に複数の転送の要求を出すことで、ＣＰＵがＤＭＡ転送の起動を行う回数を減らし、転送の起動にかかるＣＰＵの負荷を減らす技術がある。
しかしながら、転送の状態をＣＰＵが確認するには、ＣＰＵが設定した転送の数によって複数存在する転送状態を表すステータス情報を、ＣＰＵによるポーリングやＤＭＡからの割り込みによって確認しなければならず、転送状態の確認を行う時間が大きい。
つまり、ＣＰＵが複数の転送を設定した場合は複数のステータス情報が存在し、ＣＰＵは複数のステータス情報の各々をポーリングやＤＭＡからの割り込みにより読み出さなければならず、転送状態の確認を行う時間が大きい。
【０００３】
例えば特許文献１では、特定のデータ処理に適した専用ユニットと、汎用のデータ処理に適した汎用ユニットを備えたプロセッサについて、専用ユニットからの命令に従って汎用ユニットが処理を行うことで、柔軟性が高く処理速度の速いプロセッサについての技術が開示されている。
しかし、汎用ユニットは専用ユニットからの命令に対する処理結果を全て専用ユニットに返すため、専用ユニットが処理結果を取得する時間が長くなる。
【０００４】
この問題を解決するために特許文献２では、ＤＭＡ転送装置の機能を使用して、ＤＭＡ転送装置がステータス情報をメモリに書き込むことでＣＰＵはメモリからステータス情報を読むことができ、ＣＰＵの転送状態の確認にかかるレイテンシを小さくする技術が開示されている。
しかし、転送を複数実行した場合は、ＣＰＵはステータス情報を確認するためにメモリからステータス情報を複数回リードしなければならない。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００３−５９５７号公報
【特許文献２】特開２００４−３５５５４３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
従来の技術では特許文献１のように、ある処理ユニットから別の処理ユニットに処理の起動をかけ、処理を実行した結果を起動をかけた処理ユニットに返す仕組みはある。
特許文献１の処理ユニットをＤＭＡ転送装置とＣＰＵで考えた場合に、ＣＰＵが複数の転送をＤＭＡ転送装置に要求すると、ＣＰＵは全ての転送のステータス情報を確認しなければならず、ＣＰＵの負荷が高くなるという課題がある。
特にＰＣＩＥｘｐｒｅｓｓなどの読み出しのレイテンシが大きいバスを使用した場合には、この課題は顕著になる。
【０００７】
特許文献２に関しても、複数の転送のステータス情報の確認には、ＣＰＵは複数のステータス情報の各々をメモリから読み出さなければならない。このため、ＣＰＵがステータス情報を確認するためにかかる読み出し時間は大きい。
また近年では、ＬＳＩ実装時にＩＰ（Ｉｎｔｅｌｌｅｃｔｕａｌ  Ｐｒｏｐｅｒｔｙ）を活用して複数のＤＭＡ転送装置を併用する事も多く、転送状態を示すステータス情報の格納位置が統一されていないため、単純な回路でステータス情報を加工することが出来ないことも多い。
【０００８】
この発明は、上記のような課題を解決することを主な目的の一つとしており、上記のステータス情報の確認にかかるＣＰＵのステータス情報の読み込み時間を短縮することを主な目的とする。
【課題を解決するための手段】
【０００９】
本発明に係る情報処理装置は、
各々にデータ転送の状況が表される複数のステータス情報を入力するステータス情報入力部と、
前記ステータス情報入力部により入力された複数のステータス情報を加工し、前記複数のステータス情報にて表わされているデータ転送の状況が集約されて表される集約ステータス情報を生成するステータス情報加工部と、
前記ステータス情報加工部により生成された集約ステータス情報を出力する集約ステータス情報出力部とを有することを特徴とする。
【発明の効果】
【００１０】
本発明によれば、複数のステータス情報にて表わされているデータ転送の状況が集約されて表される集約ステータス情報を生成するので、ＣＰＵがステータス情報を読み込む回数を減らすことができ、ステータス情報の読み込みにかかる時間を短縮することができる。
【図面の簡単な説明】
【００１１】
【図１】実施の形態１に係るＤＭＡ転送装置の構成例を示す図。
【図２】実施の形態１に係る論理チャネルの構成例を示す図。
【図３】実施の形態１に係るコマンドメモリが記憶するコマンドの例を示す図。
【図４】実施の形態２に係るＤＭＡ転送装置の構成例を示す図。
【図５】実施の形態２に係る論理チャネルの構成例を示す図。
【図６】実施の形態２に係るコマンドメモリが記憶するコマンドの例を示す図。
【図７】実施の形態３に係るコマンドメモリが記憶するコマンドの例を示す図。
【図８】実施の形態４に係る論理チャネルの構成例を示す図。
【図９】実施の形態４に係るコマンドメモリが記憶するコマンドの例を示す図。
【図１０】実施の形態５に係るＤＭＡ転送装置の構成例を示す図。
【図１１】実施の形態５に係るコマンドメモリが記憶するコマンドの例を示す図。
【図１２】実施の形態６に係る論理チャネルの構成例を示す図。
【図１３】実施の形態７に係る論理チャネルの構成例を示す図。
【図１４】実施の形態７に係るコマンドメモリが記憶するコマンドの例を示す図。
【図１５】実施の形態１に係る論理チャネルの動作例を示すフローチャート図。
【図１６】実施の形態１に係る論理チャネルの動作例を示すフローチャート図。
【発明を実施するための形態】
【００１２】
実施の形態１．
本実施の形態では、ＤＭＡ転送装置が複数の転送を行う場合にステータス情報を集約する技術を説明する。ステータス情報は、ＤＭＡ転送装置におけるデータ転送が正常に完了したか、転送中であるか、転送時に異常が発生したかといったデータ転送の状況が表される情報である。
前述したように、ＤＭＡ転送装置が複数の転送を行う場合に、転送状態を表すステータス情報も転送の数だけ存在し、ＣＰＵが転送状態の確認をするために複数回ステータス情報を読み込まねばならず、ＣＰＵの負荷が高くなる。
また、ＤＭＡ転送装置がＣＰＵから複数の転送の設定を行われた場合に、転送毎に存在する転送状況を表すステータス情報は、一つのアドレスにまとまっておらず、また転送によってステータス情報内の必要な情報のビット位置や情報のビット数が違う。そのため、ＣＰＵが転送状態を確認するための負荷が高くなる。
本実施の形態では、ＣＰＵの負荷を減らすために、複数あるステータス情報を加工して、必要な情報だけを小さいステータス情報に集約する機能を備え、ＣＰＵが転送状態の確認をする回数を減らし、ステータス情報の確認にかかる時間を短縮する。
より具体的には、ＣＰＵからＤＭＡ転送装置の各チャネルが、転送を行うための情報（転送元アドレス、転送先アドレス、転送長）と、各チャネルの転送状態のステータス情報を加工するためのステータス演算コマンドを格納するコマンドメモリを持ち、コマンドメモリに格納されているコマンドを判別し、判別した結果が転送用の転送コマンドであれば転送を実行し、ステータス情報の演算コマンドであればステータス情報中の必要な情報を加工し集約する。
複数の転送のステータス情報を集約することでＣＰＵがステータス情報の確認行う回数が少なくなり、また、確認に要する時間も短縮することができる。
【００１３】
複数のＩ／Ｏ（Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）装置を管理して処理を実行させる方法として、ＩＢＭ（Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｂｕｓｉｎｅｓｓ  Ｍａｃｈｉｎｅ）（登録商標）社のＳ／３７０のＣＣＷ（チャネルコマンドワード）を使用するチャネル方式がある。
Ｉ／Ｏ装置はチャネルが管理し、チャネルは主記憶に書き込まれたチャネルプログラムと呼ばれる制御用のプログラムにセットされたＣＣＷ（チャネルコマンドワード）を読み込んで、ＣＣＷに従ったＩ／Ｏ装置の操作を行う。
ＣＣＷにはコマンドチェーンフラグがあり、読み込んだＣＣＷのコマンドチェーンフラグがイネーブルである限り、チャネルは次のＣＣＷを読み込んで処理を実行し続ける。この処理にはデータを転送するコマンドも含まれる。この機構により、複数のコマンドや複数の転送をまとめて行うことが出来る。
一方、単純なＤＭＡでは１つの転送しか出来ないが、ＤＭＡ転送装置にもこのチェーニングの概念をとりいれたものが近年実用化されている。
ＤＭＡでチェーニングを行う時は、ＩＢＭ（登録商標）  Ｓ／３７０のＣＣＷに相当するデータがＤＭＡ装置が直接アクセスできるメモリに置かれるのが一般的である。
ＤＭＡ転送には２種類あり、１つはＤＭＡ転送装置内部にあるデータをメモリに書き込んだり、読み込むタイプであり、もう１つはメモリ間の転送を行うものである。
後者では、Ｉ／Ｏ装置のもつ内部メモリも転送の対象となる。
本実施の形態では、一例として、このような概念に基づいたＤＭＡ装置に実装されたチャネルとＣＣＷ（チャネルコマンドワード）を使用する。
【００１４】
図１は、本実施の形態に係るＤＭＡ転送装置を含むシステム構成例を示す図である。
ＣＰＵ１０、メモリ２０、ＤＭＡ転送装置１００は、メモリバス２１、バス１１で接続される。
本実施の形態の対象としているＤＭＡ転送装置１００は、メモリ２０又は内部バス１２００あるいは外部バスによって接続されるＩ／Ｏデバイス（図示せず）のアドレスＡから転送長Ｘのデータを、メモリ２０又は前述のＩ／ＯデバイスのアドレスＢに転送するための装置である。
ＤＭＡ転送装置１００は、データ処理システムの例である。
【００１５】
ＣＰＵ１０は転送元アドレス、転送先アドレス、転送長を１組とした転送コマンドをコマンドメモリ４００、４１０にＣＣＷ（チャネルコマンドワード）として書き込み、ＤＭＡ転送装置１００はＣＣＷに従った転送を実行する。
ＣＰＵ１０は複数のＣＣＷをコマンドメモリ４００、４１０にセットして一度にまとめて起動することができ、ＤＭＡ転送装置１００はセットされた複数のＣＣＷを順次実行する。
このように、転送はＣＣＷ単位で行われ、その単位をチャネルと呼ぶ。
複数のチャネルがある場合には、それぞれのチャネルをＣＰＵが個別に起動し、チャネル間の動作は並行して行われるがステータス情報は別々に生成され、ＣＰＵは各々のステータス情報を確認する必要がある。
複数の転送を順次実行する場合、転送の状態を表すステータス情報が、実行される転送の数によらず１個の場合も複数の場合もありうる。またチャネルが複数ある場合にはステータスは複数存在する。
ＣＰＵ１０は転送の完了を確認するために、全てのステータス情報を取得しなければならないが、複数あるステータス情報を加工して、必要な情報を集約することで、ＣＰＵがステータス情報を取得する回数を減らす方法について示す。
【００１６】
次に、ＤＭＡ転送装置１００の構成例について説明する。
バス制御回路２００は、バス１１、バス２１０及び内部バス１２００のバス制御を行う。
起動レジスタ３００はＤＭＡ転送装置１００の起動指示を行う。
コマンドメモリ４００及びコマンドメモリ４１０は、転送元アドレス、転送先アドレス、転送長からなる転送コマンドと、転送の状態を表すステータス情報をマージするための演算コマンドを格納する。
ステータスレジスタ群５００は、ステータス情報を保持する。
論理チャネル０（６１０）は、コマンドメモリ４００からＣＣＷ（チャネルコマンドワード）を読み出し転送を実行する。論理チャネル１（６２０）は、コマンドメモリ４１０からＣＣＷを読み出し転送を実行する。
バスブリッジ１２５０は内部バス１２００及び外部バス１２６０のバス制御を行う。
内部バス１２００は、バス２１０とバスの制御を行うバス制御回路２００によって、バス１１と接続される。
また、内部バス１２００はバスブリッジ１２５０を介して外部バス１２６０とも接続される。
なお、本実施の形態では、論理チャネルは２つであるが、論理チャネルの数は３つ以上でも良いものとする。
【００１７】
なお、ステータスレジスタ群５００は、ステータス情報蓄積領域の例である。
また、論理チャネル０（６１０）及び論理チャネル１（６２０）は、情報処理装置及びデータ転送装置の例である。
論理チャネル０（６１０）を情報処理装置の例として見た場合には論理チャネル１（６２０）はデータ転送装置の例となり、論理チャネル１（６２０）を情報処理装置の例として見た場合には論理チャネル０（６１０）はデータ転送装置の例となる。
言い換えると、後述する図１６に示すステータス情報の集約等の処理を論理チャネル０（６１０）が行う場合は、論理チャネル０（６１０）が情報処理装置の例となり、論理チャネル１（６２０）がデータ転送装置の例となる。逆に、図１６に示すステータス情報の集約等の処理を論理チャネル１（６２０）が行う場合は、論理チャネル１（６２０）が情報処理装置の例となり、論理チャネル０（６１０）がデータ転送装置の例となる。
本実施の形態及び実施の形態２では、論理チャネル０（６１０）及び論理チャネル１（６２０）の両者がステータス情報の集約等の処理を行う場合もあるので、両者はともに情報処理装置として動作する場合がある。
【００１８】
次に、論理チャネル０（６１０）の構成を図２に示す。論理チャネル１（６２０）も論理チャネル０（６１０）と同じ構成である。
コマンド読み出し回路７００は、コマンドメモリ４００からＣＣＷを読み出す。
コマンド判別回路８１０は、コマンド読み出し回路７００が読み出したＣＣＷが転送コマンドであるか、ステータス情報を加工するための演算コマンドであるかを判別する。
演算コマンド供給回路８２０は、演算コマンドを供給する。
ステータスアクセス回路９００は、ステータスレジスタ群５００に対してリード、ライトを行う。
ステータス演算回路９１０は、ステータス情報の加工を行う。
ワークレジスタ９２０は、加工時のステータス情報を格納する。
転送制御回路１０００は、転送の制御を行う。
転送回路１１００は、転送を実行する。
【００１９】
コマンド読み出し回路７００は、コマンド入力部の例であり、転送コマンドと演算コマンドを入力する。演算コマンドには、複数のステータス情報の入力を指示するステータス情報入力コマンドと、ステータス情報の加工を指示するステータス情報加工コマンドと、加工後のステータス情報（集約ステータス情報）の出力を指示するステータス情報出力コマンドが含まれる。
転送回路１１００は、データ転送部の例であり、コマンド読み出し回路７００により読み出されたコマンドが転送コマンドである場合に、転送コマンドに従ってデータ転送元アドレスからデータ転送先アドレスにデータを転送する。
転送制御回路１０００は、ステータス情報生成部の例であり、転送回路１１００によりデータ転送が行われる度に、転送回路１１００によるデータ転送の状況を表すステータス情報を生成し、生成したステータス情報をステータスレジスタ群５００に出力する。また、転送制御回路１０００は、コマンドのセットも行う。
ステータスアクセス回路９００は、ステータス情報入力部及び集約ステータス情報出力部の例であり、コマンド読み出し回路７００により読み出されたコマンドがステータス情報入力コマンドである場合に、ステータス情報入力コマンドに従って、ステータスレジスタ群５００から複数のステータス情報を入力し、また、コマンド読み出し回路７００により読み出されたコマンドがステータス情報出力コマンドである場合に、ステータス情報出力コマンドに従って、ステータス演算回路９１０により加工・集約されたステータス情報である集約ステータス情報をステータスレジスタ群５００に出力する。
ステータス演算回路９１０は、ステータス情報加工部の例であり、コマンド読み出し回路７００により読み出されたコマンドがステータス情報加工コマンドである場合に、ステータス情報加工コマンドに従って、ステータスアクセス回路９００により入力された複数のステータス情報を加工し、複数のステータス情報にて表わされているデータ転送の状況が集約されて表される集約ステータス情報を生成する。
集約ステータス情報のデータサイズは、加工元の複数のステータス情報のデータサイズの総和よりも小さいことが望ましい。
【００２０】
次に、本実施の形態に係る動作を説明する。
以下では、原則として、２つある論理チャネルの代表として論理チャネル０（６１０）について説明する。また、コマンドメモリについても、同様に、コマンドメモリ４００について説明する。
論理チャネル１（６２０）及びコマンドメモリ４１０についても、以下の説明がそのまま適用可能である。
【００２１】
まず、ＣＰＵ１０はバス１１を介して、ＤＭＡ転送装置１００に対して実行したい転送のコマンドの書き込みを行う。
書き込むコマンドは、論理チャネル０（６１０）にデータ転送を行わせるために必要な、データの読み出し元のアドレスである転送元アドレス、データの書き込み先である転送先アドレス、転送するデータの大きさである転送長がセットになった転送コマンドと、各転送の転送状態を表すステータス情報を加工し、必要な情報を集約するための演算コマンドの２種類があり、コマンドメモリ４００に書き込まれる。
コマンドメモリ４００内にセットされている論理チャネル０（６１０）が実行するＣＣＷ（チャネルコマンドワード）４２０の例を図３に示す。
図３において、ＣＣＷ０（４２１）及びＣＣＷ１（４２２）が転送コマンドであり、ＣＣＷ２（４２３）〜ＣＣＷ６（４２７）が演算コマンドである。
演算コマンドのうち、ＣＣＷ２（４２３）及びＣＣＷ３（４２４）がステータス情報入力コマンドであり、ＣＣＷ４（４２５）及びＣＣＷ５（４２６）がステータス情報加工コマンドであり、ＣＣＷ６（４２７）がステータス情報出力コマンドである。
ステータス情報入力コマンドでは、複数のステータス情報の入力が指示され、ステータス情報加工コマンドでは複数のステータス情報の加工・集約が指示される。ステータス情報出力コマンドでは、加工後の集約ステータス情報の出力が指示される。
論理チャネル０（６１０）はＣＣＷ０（４２１）〜ＣＣＷ６（４２７）の順番に従って、転送とステータス情報の加工を実行する。各ＣＣＷには、コマンドチェーンフラグがセットされている。
コマンド判別回路８１０は、ＣＣＷが転送コマンドであるか、演算コマンドであるかを判別する。コマンドチェーンフラグは、フラグがイネーブルである場合は次のＣＣＷがあることを示し、ＤＭＡ転送装置１００は連続してＣＣＷに従った処理を実行できる。また、図示は省略しているが、コマンドメモリ４１０には、論理チャネル１（６２０）が実行するＣＣＷが存在している。
【００２２】
ＣＰＵ１０はＣＣＷを書き込んだ後、ＤＭＡ転送装置１００に転送の起動をかけるため、起動レジスタ３００の起動フラグをイネーブルにする。
これにより、ＤＭＡ転送装置１００はＣＣＷの内容に従った転送処理を開始する。
【００２３】
以降は、図１５のフローチャートを参照して、論理チャネル０（６１０）の動作を説明する。
【００２４】
起動レジスタ３００は起動フラグがイネーブルになった事を、コマンド読み出し回路７００に通知する。
コマンド読み出し回路７００は起動の通知を受けると（Ｓ１５０１）、コマンドメモリ４００に対して読み出したいＣＣＷが格納されているアドレスを送り、そのアドレスに存在するＣＣＷを読み込み実行を開始する（Ｓ１５０２）。
次にコマンド判別回路８１０は、読み込んだＣＣＷのコマンドから、転送コマンドであるか、ステータス情報を加工するための演算コマンドであるか判別する（Ｓ１５０３）。
また、ＣＣＷにセットされているコマンドチェーンフラグの内容を、転送制御回路１０００のコマンド全体制御部１０１０に送る。
【００２５】
コマンド判別回路８１０は、読み込まれたＣＣＷが転送コマンドであると判別した場合（Ｓ１５０３でＹＥＳ）に、転送コマンドを転送制御回路１０００のコマンド個別制御部１０２０に供給する。
その後、転送制御回路１０００及び転送回路１１００によりデータ転送が行われる（Ｓ１５０４）。
具体的には、コマンド個別制御部１０２０は供給された転送コマンドを構成する、転送元アドレス、転送先アドレス、転送長を転送回路１１００の転送要求部１１１０にセットする。
そして、転送要求部１１１０は、設定された転送元アドレス、転送長に従って、内部バス１２００を経由して、転送元アドレスから転送長分のデータを読み込み、バッファ１１２０に格納する。
バッファ１１２０に読み込んだデータの格納が完了すると、転送要求部１１１０がバッファ１１２０に格納されたデータを設定された転送先アドレスに書き込む。
書き込みが完了すると、データ転送も完了する。
データ転送が完了すると転送要求部１１１０が転送完了の通知を、転送制御回路１０００のコマンド個別制御部１０２０に送る。
コマンド個別制御部１０２０が転送完了通知を受けると、コマンド全体制御部１０１０にセットした転送が完了したことを通知する（Ｓ１５０５でＮＯ）。
コマンド全体制御部１０１０が、データ転送の完了通知を受け、コマンド読み出し回路７００に次のＣＣＷを読み出すように指令を出す。
【００２６】
一方、コマンド判別回路８１０が読み出したＣＣＷのコマンドチェーンフラグがディセーブルである場合（Ｓ１５１１でＹＥＳ）は、論理チャネル０（６１０）が実行する最後のＣＣＷであることを示すため、以降はＣＣＷを読み込まないようにするために、コマンド読み込み回路７００をアイドル状態にする。
また、コマンド全体制御部１０１０は、コマンド判別回路８１０より送られるコマンドチェーンフラグがディセーブルであれば（Ｓ１５１１でＹＥＳ）、完了した転送のステータス情報（未集約のステータス情報）をステータスレジスタ群５００に送り、ステータス情報を書き込む（Ｓ１５１２）。
論理チャネル０（６１０）は、コマンドチェーンフラグがディセーブルであるＣＣＷを実行し終わると、コマンド読み出し回路７００がアイドル状態であるため、動作を停止する。
【００２７】
転送回路１１００において転送実行中に異常が発生した場合（Ｓ１５０５でＹＥＳ）、転送要求部１１１０はコマンド個別制御部１０２０に対して転送完了の通知ではなく、転送異常の通知を行う。
コマンド個別制御部１０２０はコマンド全体制御部１０１０に対して、異常が発生したことを通知する。
コマンド全体制御部１０１０は、ステータスレジスタ群５００に、エラーのステータス情報を書き込む（Ｓ１５０６）。
エラーのステータス情報を書き込んだ後は、ＤＭＡ転送装置１００は後続のＣＣＷ実行を行わず、一定の時間がたつとＣＰＵ１０はタイムアウトを検出してエラーが発生したと判断し、ステータスレジスタ群５００からエラーのステータス情報を取得する。
【００２８】
また、コマンド判別回路８１０の判別において、読み出されたＣＣＷがステータス情報を加工するための演算コマンドであった場合（Ｓ１５０３でＮＯ）は、次の処理を行う。
コマンド判別回路８１０は、演算コマンドを演算コマンド供給回路８２０に送る。
演算コマンド供給回路８２０は、送られた演算コマンドのコマンド種別を確認し（Ｓ１５０７）、ステータスレジスタ群５００からステータス情報をリードするＣＣＷであればステータス情報の読み出しが行われ（Ｓ１５０８）、集約ステータス情報をステータスレジスタ群５００にライトするＣＣＷであれば、集約ステータス情報の書き込みが行われる（Ｓ１５１０）。
演算コマンド供給回路８２０は、演算コマンドをステータスアクセス回路９００に供給する。
図３の演算コマンドの例では、“ｒｅａｄ  ｒ０  ステータス１”、“ｒｅａｄ  ｒ１  ステータス２”がステータス情報をリードする演算コマンド（ステータス情報入力コマンド）であり、“ｗｒｉｔｅ  ｒ０  ステータス１”が集約ステータス情報をライトする演算コマンド（ステータス情報出力コマンド）に相当する。
なお、ステータスアクセス回路９００の動作の詳細は後述する。
一方、ステータス情報を加工する演算コマンドであった場合は、ステータス情報の加工が行われる（Ｓ１５０９）。
具体的には、演算コマンド供給回路８２０は、ステータス演算回路９１０に演算コマンドを供給する。
図３の演算コマンドの例では、“ＡＮＤ  ｒ０［０］  ｒ０［０］  ｒ１［２］”、“ＯＲ  ｒ０［３］  ｒ０［３］  ｒ１［５］”がステータス情報を加工する演算コマンド（ステータス情報加工コマンド）に相当する。
なお、ステータス演算回路９１０の動作の詳細は後述する。
【００２９】
ステータスアクセス回路９００は、ステータス情報をリード又はライトする演算コマンドが供給されると、リード又はライトを行うステータス情報に相当するアドレスをステータスレジスタ群５００に送り、ステータス情報のリード又はライトを実行する。
リードの場合は、ステータスアクセス回路９００は、リードしたステータス情報をワークレジスタ９２０に送る。
ライトの場合は、ステータスアクセス回路９００は、ワークレジスタ９２０から加工されたステータス情報（集約ステータス情報）を読み込み、ステータスレジスタ群５００に書き込む。
リード又はライトが完了すると、ステータスアクセス回路９００は、ステータス情報のリード又はライト完了の通知を演算コマンド供給回路８２０に出す。
演算コマンド供給回路８２０は完了の通知を受けると、コマンド読み出し回路７００に、次のＣＣＷを読み出すように指令を送る。
【００３０】
ステータス演算回路９１０は、演算コマンド供給回路８２０から供給された演算コマンド（ステータス情報加工コマンド）に従い、ステータスアクセス回路９００が読み込み、ワークレジスタ９２０に格納されているステータス情報に対して演算を実行し、ステータス情報の加工を行う。
演算が完了すると、ステータス演算回路９１０は演算コマンド供給回路８２０に、演算完了の通知を行う。
演算コマンド供給回路８２０は、ステータスアクセス回路９００から完了の通知を受けた時と同様に、コマンド読み出し回路７００に、次のＣＣＷを読み出すように指令を送る。
【００３１】
論理チャネル１（６２０）もコマンドメモリ４１０から論理チャネル１（６２０）に対応するＣＣＷ（図示せず）を読み込んで、論理チャネル０（６１０）と同じ動作を行う。
全ての論理チャネルの動作が停止すると、ＤＭＡ転送装置１００は起動レジスタ３００の起動フラグをディセーブルにする。
【００３２】
コマンドチェーンフラグがディセーブルであるＣＣＷの実行を完了する事で転送が完了したとみなし、ステータス情報を生成する論理チャネル（図１５のフローに従って動作する論理チャネル）の場合、演算コマンドによってステータス情報を加工する段階では、ＣＣＷはディセーブルとならないため、その論理チャネルで行われたデータ転送についてのステータス情報は生成されていない。
そのため、Ｓ１５０９での加工の対象となるステータス情報は、ステータス情報を加工をする論理チャネル以外の論理チャネルのステータス情報が対象となる。
つまり、論理チャネル０（６１０）がＳ１５０９で加工するステータス情報は、Ｓ１５０８のステータス情報の読み出し処理時点で論理チャネル１（６２０）によりステータスレジスタ群５００に既に書き込まれているステータス情報であり、論理チャネル０（６１０）がＳ１５１２又はＳ１５０６で書きこむステータス情報ではない。
一方、図１６に示すように、論理チャネルが実行するＣＣＷによるデータ転送毎にステータス情報を生成する場合は、Ｓ１５０９で加工する対象のステータス情報は、全ての論理チャネルで生成したステータス情報となる。
つまり、図１６の場合は、論理チャネル０（６１０）がＳ１５０９で加工するステータス情報は、Ｓ１５０８のステータス情報の読み出し処理時点で論理チャネル０（６１０）及び論理チャネル１（６２０）の双方によりステータスレジスタ群５００に既に書き込まれているステータス情報である。
【００３３】
以上の処理を経て加工されて集約されたステータス情報と、ステータス情報の加工を行った論理チャネルのステータス情報は、ＣＰＵ１０からのポーリングやＤＭＡ転送装置１００からＣＰＵ１０への割り込み通知などによって、ＣＰＵ１０にリードされる。
【００３４】
以上の動作を、図３のコマンドメモリ４００に書き込まれたＣＣＷ（チャネルコマンドワード）の例を使用して具体例を示す。
【００３５】
ＣＰＵ１０によってコマンドメモリ４００にＣＣＷ（チャネルコマンドワード）４２０が図３のように設定され、起動レジスタ３００に起動設定が行われると、コマンド読み出し回路７００はＣＣＷ０（４２１）を読み出す。
ＣＣＷ０（４２１）はコマンド判別回路８１０で転送コマンドであると判別される。
ＣＣＷ０（４２１）は、転送元アドレス（０ｘ１００００）から転送長（１０Ｂｙｔｅ）のデータを、転送先アドレス（０ｘ１１０００）に書き込むコマンドであり、コマンド判別回路８１０によってコマンド個別制御部１０２０に供給される。
コマンド個別制御部１０２０は、供給された転送コマンドである、転送元アドレス（０ｘ１００００）、転送先アドレス（０ｘ１１０００）、転送長（１０Ｂｙｔｅ）を転送要求部１１１０にセットする。
転送要求部１１１０が、内部バス１２００を経由して転送元アドレス（０ｘ１００００）から転送長（１０Ｂｙｔｅ）分のデータリード要求を出し、要求したデータを読み込んでバッファ１１２０に格納する。
バッファ１１２０が要求したデータの格納を完了すると、転送要求部１１１０がコマンド個別制御部１０２０によってセットされた転送先アドレス（０ｘ１１０００）に、バッファ１１２０に格納されたデータを書き込む。
書き込みが完了すると、転送要求部１１１０がコマンド個別制御部１０２０に転送完了の通知を出す。
コマンド個別制御部１０２０は、転送完了の通知をコマンド全体制御部１０１０に送る。コマンド全体制御部１０１０は、転送完了の通知を受け、コマンド読み出し回路７００に、コマンドメモリ４００から次のＣＣＷを読み出すように指令を出す。
【００３６】
コマンド読み出し回路７００が次にコマンドメモリ４００から読み出すＣＣＷ１（４２２）は、アドレス０ｘ２００００から２０Ｂｙｔｅのデータをアドレス０ｘ２１０００に書き込む転送コマンドである。
この転送コマンドも先ほどの転送と同様に、コマンド判別回路８１０によってコマンド内容を判別されて転送制御回路１０００に供給される。
転送制御回路１０００によってセットされた転送設定に従って、転送回路１１００は転送を実行する。
転送が完了すると、コマンド読み出し回路７００は次のＣＣＷ２（４２３）を読み込む。
【００３７】
次にコマンド読み出し回路７００が読み込むＣＣＷ２（４２３）は、ステータス情報を加工し、複数のステータス情報を集約するための演算コマンドである。
コマンド読み出し回路７００によって読み込まれたＣＣＷ２（４２３）は、ステータスレジスタ群５００からステータス情報１をリードするコマンドである。
コマンド判別回路８１０により演算コマンドであると判別される。
コマンド判別回路８１０はＣＣＷ２（４２３）を演算コマンド供給回路８２０に送る。
演算コマンド供給回路８２０は、送られたＣＣＷ２（４２３）のコマンド種別を確認し、ステータスレジスタ群５００からステータス情報１をリードするコマンドであるＣＣＷ２（４２３）“ｒｅａｄ  ｒ０  ステータス１”をステータスアクセス回路９００に供給する。
ステータスアクセス回路９００は、コマンドに従ってステータス情報１のリード要求を出し、ステータスレジスタ群５００からステータス情報１を読み込み、ワークレジスタ９２０の領域“ｒ０”に格納する。
ステータスアクセス回路９００は、読み込みの完了通知を演算コマンド供給回路８２０に出し、演算コマンド供給回路８２０は、コマンド読み出し回路７００に次のＣＣＷ３（４２４）を読み出すように指令をだす。
ＣＣＷ３（４２４）は、ステータス情報２を読み出すコマンドであり、ステータスアクセス回路９００に供給する。
ステータスアクセス回路９００は先ほどと同様に、ステータス情報２のリード要求をステータスレジスタ群５００に出し、ステータスレジスタ群５００からステータス２を読み込み、ワークレジスタ９２０の領域“ｒ１”に格納する。
【００３８】
ステータスアクセス回路９００は、読み込みの完了通知を演算コマンド供給回路８２０に出し、演算コマンド供給回路８２０はコマンド読み出し回路７００に次のＣＣＷ４（４２５）を読み出すように指令を出す。
ここで、ＣＣＷ４（４２５）のコマンドは、“ＡＮＤ  ｒ０［０］  ｒ０［０］  ｒ１［２］”であり、読み込んだステータス情報同士の加工を行うコマンドとして、演算コマンド供給回路８２０はステータス演算回路９１０にコマンドを供給する。
ステータス演算回路９１０は、コマンドに従ってワークレジスタ９２０の“ｒ０”と“ｒ１”に格納されたステータス情報１とステータス情報２を加工する演算（ステータス情報１の０ビット目と、ステータス情報２の２ビット目の論理積をとり、ステータス情報１の０ビット目に保存する）を実行する。
演算が完了するとステータス演算回路９１０は、演算完了の通知を演算コマンド供給回路８２０に出す。
演算コマンド供給回路８２０は、コマンド読み出し回路７００に次のＣＣＷ５（４２６）を読み出すように指令を出す。
【００３９】
ＣＣＷ５（４２６）は“ＯＲ  ｒ０［３］  ｒ０［３］  ｒ１［５］”であり、ＣＣＷ４（４２５）と同様にステータス情報をマージするための演算コマンドであるため、ステータス演算回路９１０に供給される。
ステータス演算回路９１０はコマンドに従った演算（ステータス情報１の３ビット目と、ステータス情報２の５ビット目の論理和をとり、ステータス情報１の３ビット目に保存する）を実行する。
そして、ステータス演算回路９１０は演算が完了したことを演算コマンド供給回路８２０に通知する。
演算コマンド供給回路８２０は、コマンド読み出し回路７００に次のＣＣＷ６（４２７）を読み出すように指令を出す。
【００４０】
コマンド読み出し回路７００が読み出したＣＣＷ６（４２７）は、コマンド判別回路８１０で演算コマンドであると判別されると同時に、コマンドチェーンフラグがディセーブルであるため、最後のＣＣＷである事も判定される。
コマンド判別回路８１０は、コマンド読み出し回路７００に対して次のＣＣＷを読み込まないように、読み込み停止通知を出し、コマンド読み出し回路７００はアイドル状態となる。
コマンド読み出し回路７００は、再び起動レジスタ３００から起動通知を受けるまでアイドル状態のままである。
また、コマンド全体制御部１０１０は、コマンド判別回路８１０から送られるコマンドチェーンフラグがディセーブルであると、転送完了時のステータス情報をステータスレジスタ群５００にライトする。
【００４１】
ＣＣＷ６（４２７）の内容は、“ｗｒｉｔｅ  ｒ０  ステータス１”であり、ＣＣＷ４（４２５）とＣＣＷ５（４２６）で加工されたワークレジスタ９２０の“ｒ０”に格納されている、ステータス情報１をステータスレジスタ群５００にライトするコマンドである。
演算コマンド供給回路８２０によりステータスアクセス回路９００に供給され、ステータスアクセス回路９００は、ワークレジスタ９２０から加工されたステータス情報１を読み出し、ステータスレジスタ群５００にライト要求を出し、ライトを実行する。
ライトが完了すると、ステータスアクセス回路９００は、完了の通知を演算コマンド供給回路８２０に通知し、演算コマンド供給回路８２０はコマンド読み出し回路７００に次のＣＣＷを読み出すように指令を出す。
コマンド読み出し回路７００はアイドル状態であるため、ＣＣＷを読み出す指令を受けても、動作を行わない。
【００４２】
論理チャネル１（６２０）も論理チャネル０（６１０）と同様に、コマンドメモリ４１０から論理チャネル１（６２０）に対応したＣＣＷを読み込んで、ＣＣＷの順番に従った動作を行い、全ての論理チャネルの動作が完了すると、ＤＭＡ転送装置１００は起動レジスタ３００の起動フラグをディセーブルにする。
【００４３】
ＣＰＵ１０は、ポーリングやＤＭＡ転送装置１００からの割り込み通知を受けて、ステータスレジスタ群５００から加工されたステータス情報と、ステータス情報の加工を行った論理チャネルのステータス情報を読み込む。
【００４４】
以上が本実施の形態の動作の具体例である。
【００４５】
従来技術では、ＣＰＵはコマンドメモリに書き込んだ複数の転送の完了を確認するために、複数のステータス情報をステータスレジスタ群から読み込まなければならず、転送完了の確認にかかるレイテンシが大きかった。
しかし、本実施の形態によれば、ステータス情報を集約することで、複数転送の完了確認のために、ＣＰＵがステータス情報をステータスレジスタ群まで読み込みに行く回数が減り、従来技術よりも転送完了の確認にかかる時間が短縮される。
また、本実施の形態では、複数のステータス情報のデータサイズの総計よりも小さいデータサイズのステータス情報に集約されるためデータ読み出しに要する時間を短縮化することができる。
【００４６】
以上、本実施の形態では、
データを読み出す転送元のアドレスとデータを書き込む転送先アドレスと転送長を指定して転送を行い、その転送に先立ち転送元アドレスと転送先アドレスと転送長の情報を転送コマンドとしたチャネルコマンドワードを１つ又は複数格納し、転送完了の状況を表すステータス情報を保持するＤＭＡ転送装置であって、
そのＤＭＡ転送装置と外部バスによりメモリ又はＩ／Ｏデバイスが内部バス又は外部バスと接続され、
前記転送コマンドの他に前記ステータス情報を加工して連続する小さなデータにするための演算コマンドをコマンドメモリに格納し、
前記コマンドメモリから前記転送コマンドあるいは前記複数の転送に係わるステータス情報を加工するための前記演算コマンドを読み出すコマンド読み出し回路が接続され、
読み出したコマンドを前記転送コマンドであるか前記演算コマンドであるかを判別するコマンド判別回路と、
複数の前記ステータス情報が格納されているステータスレジスタ群から前記ステータス情報を読み出すステータス読み出し回路と、
前記ステータス読み出し回路によって読み出された前記ステータス情報を前記演算コマンドに従った加工を実行するステータス演算回路と、を備え
複数の前記転送コマンドと複数の前記演算コマンドは前記ＣＰＵによってコマンドメモリに設定され、
前記コマンド判別回路によって前記転送コマンドであると判別されれば転送を実行し、
前記演算コマンドであると判別された時は演算コマンド供給回路が前記ステータス読み出し回路と前記ステータス演算回路に前記演算コマンドを供給し、前記ステータス情報の加工を実行する事で、正常動作を示すステータス情報を連続した小さなデータに加工することで、ＣＰＵのステータス情報の読み出し回数を減らし、転送時間を短縮するＤＭＡ転送装置を説明した。
【００４７】
実施の形態２．
本実施の形態は、実施の形態１と同様にステータス情報を加工してステータス情報の必要な情報を集約する。
加工されたステータス情報をＤＭＡ転送装置１００のデータ転送を実行する機能を使用して、ＣＰＵ１０と接続されているメモリ２０に転送する方法であり、実施の形態１との差分について示す。
【００４８】
本実施の形態に係る構成例を図４に示す。
図４の論理チャネル０（６１０）の構成例を、図５に示す。
論理チャネル１（６２０）は論理チャネル０（６１０）と同様の構成である。
本実施の形態では、内部バス１２１０を通じて、ステータスレジスタ群５００から転送回路１１００にステータス情報を送ることが可能となることで、転送回路１１００がＣＰＵ１０と接続されたメモリ２０にステータス情報を転送することが出来る。
本実施の形態では、転送回路１１００も集約ステータス情報出力部の例となる。
【００４９】
次に動作について説明する。
図６は本実施の形態におけるコマンドメモリ４００の例である。
図６に示すように、本実施の形態のコマンドメモリ４００には、ＣＰＵ１０がステータス情報を加工する演算コマンドの後に、加工されたステータス情報を転送する転送用のＣＣＷ（ＣＣＷ７）が書き込まれる。
実施の形態１と同様に、ＣＣＷをコマンド読み出し回路７００が読み込み、転送処理とステータス情報を加工する演算を実行する。
ステータス情報の演算が完了すると、ステータス演算回路９１０は演算コマンド供給回路８２０に演算の完了を通知する。
【００５０】
演算コマンド供給回路８２０は、演算完了の通知を受け取ると、コマンド読み出し回路７００に、コマンドメモリ４００から次のＣＣＷを読み出すように指令を出す。
コマンド読み出し回路７００は、次のコマンドである、ＣＣＷ７（４２８）の集約ステータス情報の転送コマンドを読み出す。
読み出したＣＣＷ７（４２８）は、コマンド判別回路８１０で集約ステータスの転送コマンドであると判別され、転送制御回路１０００のコマンド個別制御部１０２０に供給される。
ここで、ＣＣＷ７（４２８）のコマンドチェーンフラグはディセーブルであるため、最後のＣＣＷである事も判定され、コマンド読み出し回路７００はアイドル状態になる。
また、コマンド全体制御部１０１０にコマンドチェーンフラグがディセーブルであることを通知し、コマンド全体制御部１０１０は転送完了のステータス情報をステータスレジスタ群５００にライトする。
【００５１】
コマンド個別制御部１０２０は転送コマンドが供給されると、転送回路１１００の転送要求部１１１０に、転送元アドレス（集約ステータス情報のアドレス）、転送長（集約ステータス情報のサイズ）、転送先アドレス（メモリ２０）を設定する。
転送要求部１１１０は、設定された転送元アドレスと転送長の読み出しの要求を、内部バス１２１０を経由してステータスレジスタ群５００に出し、ステータスレジスタ群５００から集約ステータス情報を読み込んでバッファ１１２０に格納する。
転送要求部１１１０はバッファ１１２０に集約ステータス情報が格納されると、設定された転送先アドレス（メモリ２０）に、格納した集約ステータス情報を書き込む指令を出す。
バッファ１１２０は集約ステータス情報の格納が完了すると、転送要求部１１１０に格納完了の通知をする。
【００５２】
転送が完了すると転送要求部１１１０は、転送完了の通知を転送制御回路１０００のコマンド個別制御部１０２０に送る。
コマンド個別制御部１０２０は転送完了の通知をコマンド全体制御部１０１０に伝える。
コマンド全体制御部１０１０は転送完了の通知を受け、コマンド読み出し回路７００から次のＣＣＷを読み出すように指令を出す。
実施の形態１の場合と同様に、コマンド読み出し回路７００はアイドル状態となっているため、次のＣＣＷは読み込まない。また、コマンドチェーンフラグがディセーブルであるＣＣＷを実行したため、コマンド全体制御部１０１０は、ステータスレジスタ群５００にステータス情報を書き込む。
ステータス情報が書き込まれた後、ＤＭＡ転送装置１００は起動レジスタ３００の起動フラグをディセーブルにし、ＣＰＵ１０が次のＣＣＷを書き込むまで待機する。
【００５３】
このように、本実施の形態によれば、ＣＰＵがステータス情報を確認するためにＣＰＵとＤＭＡ転送装置間のバス読み出しをする必要がなくなり、ステータス情報を読み込むレイテンシを小さくすることが可能となる。
【００５４】
以上、本実施の形態では、
ステータス演算回路によって加工された前記ステータス情報を、ＤＭＡ転送装置のデータ転送を実行する機能を使用してＣＰＵに接続されたメインメモリに転送して、ＣＰＵがＤＭＡ転送装置とＣＰＵ間のバス読み出しをせず、転送時間を短縮するＤＭＡ転送装置を説明した。
【００５５】
実施の形態３．
本実施の形態は、複数の転送を複数のチャネルで並列に実行する場合に、各転送が完了して完了時のステータス情報を生成する前に、ステータス情報の加工を実行しないための方法であり、実施の形態１、２との差分について説明する。
【００５６】
本実施の形態におけるコマンドメモリ４００、４１０の例を図７に示す。
論理チャネル０（６１０）が実行するＣＣＷ４３０には、転送コマンド４３１のみがあり、論理チャネル０（６１０）が実行するＣＣＷ４４０には、転送コマンド４４１、４４２とステータス情報を加工するための演算コマンド４４３〜４４７がある。
【００５７】
次に本実施の形態の動作について説明する。
【００５８】
ＣＰＵ１０は、複数の転送をＤＭＡ転送装置１００に並列に実行させるため、コマンドメモリ４００、４１０に論理チャネル０（６１０）と論理チャネル１（６２０）に実行させるＣＣＷを書き込む。
ＣＰＵ１０は、コマンドメモリ４００、４１０に複数の転送コマンドを書き込む際に、最後に実行される転送を行う論理チャネルに、ステータス情報の加工を行わせるようにＣＣＷを書き込む。
ここで、図７のコマンドメモリ４００、４１０に書き込まれている転送の実行順序は、ＣＣＷ０＿０（４３１）が最初に実行され、次にＣＣＷ１＿０（４４１）が実行され、最後の転送としてＣＣＷ１＿１（４４２）が実行されるものとする。
最後に実行する転送は、ＣＣＷ１＿１（４４２）であり、論理チャネル１（６２０）が実行する。
従って、ＣＰＵ１０は、論理チャネル１（６１０）にステータス情報の加工を行わせるために、演算コマンド４４３〜４４７をコマンドメモリ４４０に書き込む。
【００５９】
つまり、本実施の形態では、論理チャネル０（６１０）をデータ転送装置の例とし、論理チャンネル１（６２０）が情報処理装置の例であり、情報処理装置たる論路チャネル１（６２０）のステータスアクセス回路（ステータス情報入力部）は、演算コマンド４４３〜４４７に従って、論理チャネル０（６１０）（データ転送装置）のデータ転送及びステータス情報の生成が終了し、論理チャネル１（６１０）の転送回路１１００（データ転送部）のデータ転送及び転送制御回路１０００（ステータス情報生成部）のステータス情報の生成が終了した後に、ステータスレジスタ群５００に格納されている複数のステータス情報（論理チャネル０（６１０）で生成されたステータス情報と論路チャネル１（６２０）の転送制御回路１０００で生成されたステータス情報）を入力し、ステータス演算回路９１０が、入力された複数のステータス情報を加工して集約ステータス情報とする。
【００６０】
以上のように、ＣＰＵ１０がコマンドメモリ４００、４１０にＣＣＷを書き込み、実施の形態１又は実施の形態２と同様に各論理チャネルが対応するＣＣＷを読み込むことで、最後に転送コマンドを実行する論理チャネル（図７の例では論理チャネル１（６２０））は、他の論理チャネルが転送を完了しステータス情報を生成した後に、ステータスレジスタ群５００からステータス情報を読み込んで加工を行うことが可能である。
【００６１】
本実施の形態によれば、全ての転送が完了したあとにステータスの加工を実行できるため、転送が完了する前にステータス情報の加工を行う障害が発生する可能性が減る。
【００６２】
以上、本実施の形態では、
転送コマンドに従って転送を実行するチャネルが複数あり、チャネルはチャネルコマンドワードの並びの順序に従って転送を行うものであり、実行する全ての転送の中で一番最後の転送の後に、転送用の一連のチャネルコマンドワードの後にステータス演算用のチャネルコマンドワードを配置することにより、全ての転送が完了した後のステータス情報を加工するチャネルコマンドワードのプログラム記述制御について説明した。
【００６３】
実施の形態４．
本実施の形態は実施の形態３と同様に、各転送が完了して完了時のステータス情報を生成する前に、ステータス情報の加工を実行しないための方法であり、実施の形態１、２との差分について説明する。
【００６４】
本実施の形態における論理チャネルの構成図を図８に示す。
図８の論理チャネルには、タイマ回路１３００が備わっており、コマンド判別回路８１０においてコマンドメモリ４００から読み込んだＣＣＷがタイマ起動のコマンドであると判別されると、タイマ回路１３００は起動する。
タイマ回路１３００が時間をカウントし、カウントしている間は論理チャネルは後続のＣＣＷを読み込めず、指定された時間のカウントが完了すると、コマンド読み出し回路７００に次のＣＣＷを読み出すように指令を出す。
【００６５】
次に本実施の形態の動作について説明する。
【００６６】
まず、ＣＰＵ１０はコマンドメモリ４００、４１０にＤＭＡ転送装置１００に実行させるＣＣＷを書き込む。
本実施の形態のコマンドメモリ４００の例を図９に示す。
ＣＰＵ１０は、論理チャネル０（６１０）が実行するＣＣＷにタイマ起動のコマンド４５２を書き込む。
タイマ起動のコマンド４５２は、論理チャネル内に備わっているタイマ回路１３００を起動するコマンドであり、ＣＰＵ１０がコマンドメモリ４００、４１０に書き込む全ての転送が完了するのに必要な時間を持つ。
ここで、タイマはどの論理チャネルに実行させても良いが、必ずステータスを加工する演算コマンドの直前にＣＣＷをセットし実行する。
【００６７】
論理チャネル０（６１０）は起動レジスタ３００の起動フラグがイネーブルになるとコマンドメモリ４００からＣＣＷ０（４５１）を読み込んで転送を実行する。
次のＣＣＷ１（４５２）は、コマンド判別回路８１０によりタイマ起動のコマンドであると判別され、タイマ回路１３００が起動する。
タイマ回路１３００は、タイマ起動のコマンドが持つ時間をセットされる。
タイマにセットされた時間が経過すると、タイマ回路１３００はコマンド読み出し回路７００に次のＣＣＷを読み出しように指令を出し、論理チャネル０（６１０）は、次のＣＣＷ２（４５３）を読み込み、ステータス情報の加工する演算コマンドを実行する。
タイマ回路１３００にセットされる時間は、コマンドメモリ４００に書き込まれている全ての転送が完了するのに必要な時間であるため、タイマのカウントが完了する時には、全ての転送が完了している。
そのため、転送が完了する前にステータス情報を加工する障害が発生することがない。
【００６８】
このように、本実施の形態では、タイマ回路１３００によるタイマ計時により、転送回路１１００（データ転送部）が所定数のデータ転送を完了し転送制御回路１０００（ステータス情報生成部）が当該所定数のデータ転送のステータス情報をステータスレジスタ群５００（データ蓄積領域）に出力するのに十分な時間が経過するのを待って、ステータスレジスタ群５００から複数のステータス情報を入力し、ステータス演算回路９１０が、入力された複数のステータス情報を加工して集約ステータス情報とする。
【００６９】
本実施の形態によれば、全ての転送が完了したあとにステータスの加工を実行できるため、転送が完了する前にステータス情報の加工を行う障害が発生する可能性が減る。
【００７０】
以上、本実施の形態では、
ＣＰＵによってコマンドメモリ内のチャネルコマンドワードによりタイマの起動を行うか、または他の要因により起動されるタイマを利用して、前記タイマに予め全ての転送に必要な時間を設定しその時間のカウントを終えると、ステータスを加工する演算コマンドを実行することが可能となり、全ての転送が完了した後にステータス情報を加工することが可能となることで、正確なステータス情報を提供するＤＭＡ転送装置を説明した。
【００７１】
実施の形態５．
本実施の形態は実施の形態３、４と同様に、各転送が完了して完了時のステータス情報を生成する前に、ステータス情報の加工を実行しないための方法であり、実施の形態１、２との差分について説明する。
【００７２】
本実施の形態の構成図を図１０に示す。
図１０のＤＭＡ転送装置１００には、チャネル動作確認回路１４００が備わっている。
チャネル動作確認回路１４００は、各論理チャネルからの動作中を示す信号を監視し、全ての論理チャネルの転送が非動作状態になったことを各論理チャネルに伝え、ステータス情報を加工する演算コマンドを実行させる。
つまり、チャネル動作確認回路１４００は各論理チャネルのデータ転送の完了及びステータス情報の出力の完了を検知する機能を有し、完了検知部の例に相当する。
なお、本実施の形態では、論理チャネル０（６１０）とチャネル動作確認回路１４００とを組み合わせたものが情報処理装置の例に相当し、論理チャネル１（６２０）がデータ転送装置の例に相当する。
また、逆に、論理チャネル１（６２０）とチャネル動作確認回路１４００とを組み合わせたものが情報処理装置の例に相当し、論理チャネル０（６１０）がデータ転送装置の例に相当する。
【００７３】
次に本実施の形態の動作について説明する。
【００７４】
起動レジスタ３００の起動フラグがイネーブルになると、論理チャネル０（６２０）はコマンドメモリ４００から対応するＣＣＷを読み込み、転送を開始する。本実施の形態におけるコマンドメモリ４００の例を図１１に示す。
図１１において、ＣＣＷ１（４６２）はチャネル動作確認回路１４００の起動を指示するコマンドである。
論理チャネル０（６１０）は、ＣＣＷ０（４６１）を読み込んで、転送を開始する。
転送が完了すると、次にＣＣＷ１（４６２）を読み込む。
コマンド判別回路８１０は、ＣＣＷ１（４６２）をチャネル動作確認回路起動のコマンドであると判別し、チャネル動作確認回路１４００を起動する。
チャネル動作確認回路１４００は、起動すると全てのチャネルの動作状態を監視し、全てのチャネルの転送が非動作状態になった事を確認すると、コマンド読み出し回路７００に次のＣＣＷを読み出す指令を出す。
各論理チャネルは、動作中は転送動作中であることを示す信号を出力している。
【００７５】
チャネル動作確認回路１４００が動作中を示す信号を監視することにより、非動作状態であること（各論理チャネルでデータ転送が完了し、ステータス情報の出力が完了したこと）を確認すると、各論理チャネルのチャネル動作確認回路１４００にセットされている、論理チャネル停止フラグを解除する。
論理チャネル停止フラグがセットされている間は、チャネル動作確認回路１４００は、コマンド読み出し回路７００に次のＣＣＷを読み出すように指示を出せない。
論理チャネル停止フラグが解除された際、つまり、各論理チャネルでデータ転送が完了し、ステータス情報の出力が完了したことが検知された場合に、コマンド読み出し回路７００は次のＣＣＷを読み込む。この結果、コマンド読み出し回路７００は、演算コマンド４６３以降を読み込み、ステータスアクセス回路９００がステータスレジスタ群５００から複数のステータス情報を入力し、ステータス演算回路９１０が集約ステータス情報を生成する。
このように、各論理チャネルの転送が非動作であること確認しているため、転送が完了する前にステータス情報を加工する障害が発生することがない。
ここで、論理チャネル停止フラグの解除は、必ず演算コマンドの直前に実行する事とする。
論理チャネル停止フラグの解除の後に転送コマンドを実行した場合、転送が完了する前にステータス情報を加工する可能性がある。
【００７６】
本実施の形態では、実施の形態３、４と同様に、全ての転送が完了した後にステータス情報の加工を実行できるため、転送が完了する前にステータス情報の加工を行う障害が発生する可能性が減る。
【００７７】
以上、本実施の形態では、
複数のチャネルは転送動作中を示す信号を出力し、それらの信号を常に監視するチャネル動作確認回路を備え、
全てのチャネルからの転送動作中を示す信号が非動作状態になった後に、演算コマンドに従ってステータス情報の加工を実行することで、必ず全ての転送が終了した事を確認してからステータス情報の加工を行えることで、正確なステータス情報を提供するＤＭＡ転送装置を説明した。
【００７８】
実施の形態６．
本実施の形態における論理チャネル０（６１０）の構成図を図１２に示す。
本実施の形態の論理チャネルは、完了時刻記憶機構１０３０と演算時刻記憶機構９３０を設けることで、転送が完了しステータス情報を書き込む時刻と、ステータス情報の加工が実行された時刻をステータス情報に追加することが出来、障害発生時に原因の解析を容易にする。
完了時刻記憶機構１０３０は、転送回路１１００によりデータ転送が行われ、コマンド全体制御部１０１０が当該データ転送のステータス情報を生成した時刻をステータス情報生成時刻として計時し、コマンド全体制御部１０１０により生成されたステータス情報にステータス情報生成時刻を示す情報を付加する。
演算時刻記憶機構９３０は、ステータス演算回路９１０が集約ステータス情報を生成した時刻を集約ステータス情報生成時刻として計時し、ステータス演算回路９１０により生成された集約ステータス情報に集約ステータス情報生成時刻を示す情報を付加する。
完了時刻記憶機構１０３０及び演算時刻記憶機構９３０は、時刻計時部の例である。
なお、論理チャネル１（６２０）も図１２と同様の構成とする。
【００７９】
次に本実施の形態の動作例について説明する。
コマンド判別回路８１０は、コマンド読み出し回路７００が読み込んだＣＣＷのコマンドチェーンフラグを転送制御回路１０００のコマンド全体制御部１０１０に対して通知する。
コマンド全体制御部１０１０は、通知されたコマンドチェーンフラグがディセーブルであれば、コマンドメモリ４００に書き込まれている論理チャネル０（６１０）が実行する転送完了のステータス情報を生成し、ステータスレジスタ群５００に書き込む。
その際に、コマンド全体制御部１０１０は完了時刻記憶機構１０３０に、転送が完了しステータス情報を生成することを通知し、完了時刻記憶機構１０３０はステータス情報が生成され書き込みが行われる時刻（ステータス情報生成時刻）を記憶する。
完了時刻記憶機構１０３０は、ステータスレジスタ群５００に書き込まれるステータス情報にステータス情報が生成された時刻（ステータス情報生成時刻）を示す情報を追加する。
また、演算コマンドに従って、ステータス演算回路９１０がステータス情報の加工が完了したことを、演算時刻記憶機構９３０に通知する。
演算時刻記憶機構９３０は、通知を受けた時刻（集約ステータス情報生成時刻）を記憶し、ステータスアクセス回路９００がステータスレジスタ群５００に加工したステータス情報を書き込む際に、ステータス情報の加工が完了した時刻（集約ステータス情報生成時刻）を示す情報を追加する。
【００８０】
このように本実施の形態では、ステータス情報の生成時刻及び集約ステータス情報の生成時刻を管理するので、ＤＭＡ転送装置１００の異常動作時などに、ステータス情報の時刻を比較して確認することで、障害発生時の原因解析を容易に行うことが可能となる。
【００８１】
以上、本実施の形態では、
チャネルに演算コマンドに従ってステータス情報の加工を実行した時刻情報をステータス情報に付け加える演算時刻記憶機構と、
転送完了時に更新した時間をステータス情報に付け加える完了時刻記憶機構の一方又は両方を備えることにより、複数の転送の並列動作時に時刻情報を比較することにより障害解析を容易にする手段を提供するＤＭＡ転送装置を説明した。
【００８２】
実施の形態７．
本実施の形態における論理チャネル０（６１０）の構成図を図１３に示す。
本実施の形態は、論理チャネルに転送異常確認回路１５００を備え、転送が正常に転送が完了しなかった場合に異常を検出し、コマンドメモリ４００内にセットされているエラー時の動作コマンドを実行するための方法である。
転送異常確認回路１５００は、転送回路１１００のデータ転送における異常を検知する。転送異常確認回路１５００は、転送異常検知部の例である。
なお、論理チャネル１（６２０）も図１３と同様の構成とする。
【００８３】
次に、本実施の形態におけるコマンドメモリ４００の例を、図１４に示す。
コマンドメモリ４００内の論理チャネル０（６１０）が実行するＣＣＷには、転送コマンドとステータスを加工するための演算コマンドがあり、演算コマンドは、転送が正常に完了している場合に実行するコマンド（ＣＣＷ１（４７２）〜ＣＣＷ５（４７６））と、転送に異常が発生した場合に実行するコマンド（ＣＣＷ６（４７７）〜ＣＣＷ９（４８０））に分かれる。
転送が正常に完了している場合に実行するコマンドであるＣＣＷ１（４７２）〜ＣＣＷ５（４７６）は第１の加工手順の例であり、転送に異常が発生した場合に実行するコマンドであるＣＣＷ６（４７７）〜ＣＣＷ９（４８０）は第２の加工手順の例である。
本実施の形態では、ステータス演算回路９１０は、転送異常確認回路１５００により正常にデータ転送が完了した場合に第１の加工手順に従って複数のステータス情報を加工して第１の加工手順に従った集約ステータス情報を生成し、転送異常確認回路１５００により転送回路１１００のデータ転送において異常が検知された場合に第１の加工手順と異なる第２の加工手順に従って複数のステータス情報を加工して第２の加工手順に従った集約ステータス情報を生成する。
【００８４】
次に本実施の形態の動作例について説明する。
ＤＭＡ転送装置１００は転送の実行途中に異常が発生しなければ、ＣＣＷ０（４７１）から順にＣＣＷを読み込み、コマンドチェーンフラグがディセーブルであるＣＣＷ５（４７６）の実行を完了した段階でアイドル状態となり、ＣＰＵ１０から次のＣＣＷのセットと起動されるのを待つ。
転送の実行途中に異常が発生した場合、転送要求部１１１０がコマンド個別制御部１０２０に対して、転送異常の通知を出す。
コマンド個別制御部１０２０は、転送異常の通知を受けると、転送異常確認回路１５００に対して異常が発生したことを通知する。
転送異常確認回路１５００は、転送異常発生の通知を受け、異常動作時に実行するＣＣＷに分岐する。分岐の方法には、予め決められているアドレスに分岐する、ＣＣＷに分岐先のアドレスを記述しておきそのアドレスに分岐するなどが考えられるが、これに限定されない。
【００８５】
図１４の例では、コマンド読み出し回路７００に予め決められたエラー時用のコマンドである、ＣＣＷ６（４７７）を読み出すように指令を出し、ステータス演算回路９１０はＣＣＷ６（４７７）からコマンドチェーンフラグがディセーブルであるコマンドのＣＣＷ９（４８０）までを順次実行する。ＣＣＷ９（４８０）のコマンドチェーンフラグはディセーブルであるため、ＣＣＷ９（４８０）を実行した論理チャネルは動作を終了する。
ＣＣＷ６（４７７）〜ＣＣＷ９（４８０）はエラー発生時に、エラーのステータス情報（ステータス３、ステータス４）を加工し、集約するための演算コマンドである。
【００８６】
このように本実施の形態では、コマンドメモリのＣＣＷにエラーのステータス情報を加工して集約する演算コマンドをセットしておくことで、転送が正常に終了しなかった場合にＣＰＵが行う処理を代行して行うことにより、ＣＰＵの処理時間を減らしＣＰＵ動作を高速にすることが出来る。
【００８７】
以上、本実施の形態では、
チャネルコマンドワード内には、転送コマンドと演算用のコマンドの他に、チャネルが正常に転送を完了出来なかった場合に実行するエラー発生時用のコマンドが格納されており、
チャネルが正常に転送を完了出来なかった場合には、正常動作時と異なるチャネルコマンドワードを実行するコマンドワードに分岐を行いエラー発生時用のコマンドの実行を開始することで、
異常発生時にＣＰＵが行うべき処理をＤＭＡ転送装置が代行することを説明した。
【００８８】
なお、上記の説明では、データ転送部の例として転送回路１１００を、ステータス情報生成部の例として転送制御回路１０００を、コマンド入力部の例としてコマンド読み出し回路７００を、ステータス情報入力部及び集約ステータス情報出力部の例としてステータスアクセス回路９００を、ステータス情報加工部の例としてステータス演算回路９１０を説明したが、これら「〜部」は「〜回路」に限定されず、「〜装置」、「〜機器」であってもよく、また、「〜ステップ」、「〜手順」、「〜処理」であってもよい。
【符号の説明】
【００８９】
１０  ＣＰＵ、２０  メモリ、１００  ＤＭＡ転送装置、２００  バス制御回路、３００  起動レジスタ、４００  コマンドメモリ、４１０  コマンドメモリ、５００  ステータスレジスタ群、６１０  論理チャネル０、６２０  論理チャネル１、７００  コマンド読み出し回路、８１０  コマンド判別回路、８２０  演算コマンド供給回路、９００  ステータスアクセス回路、９１０  ステータス演算回路、９２０  ワークレジスタ、９３０  演算時刻記憶機構、１０００  転送制御回路、１０１０  コマンド全体制御部、１０２０  コマンド個別制御部、１０３０  完了時刻記憶機構、１１００  転送回路、１１１０  転送要求部、１１２０  バッファ、１２００  内部バス、１２５０  バスブリッジ、１２６０  外部バス、１３００  タイマ回路、１４００  チャネル動作確認回路、１５００  転送異常確認回路。
【図１】
2011060051.tif 000003
【図２】
2011060051.tif 000004
【図３】
2011060051.tif 000005
【図４】
2011060051.tif 000006
【図５】
2011060051.tif 000007
【図６】
2011060051.tif 000008
【図７】
2011060051.tif 000009
【図８】
2011060051.tif 000010
【図９】
2011060051.tif 000011
【図１０】
2011060051.tif 000012
【図１１】
2011060051.tif 000013
【図１２】
2011060051.tif 000014
【図１３】
2011060051.tif 000015
【図１４】
2011060051.tif 000016
【図１５】
2011060051.tif 000017
【図１６】
2011060051.tif 000018