(57)【要約】【課題】複数のＤＭＡチャネルをパラレルに動作するＤＭＡ回路において、回路規模を小さくし、且つ開発工数を削減する。【解決手段】チャネルマネージャ回路（５）が、制御メモリ（４０）の各ＤＭＡチャネルの制御情報を順次読み出し、解析し、分割されたＤＭＡ制御のシーケンスに応じて、ステート処理（ＤＭＡ制御）を行う。更に、チャネルマネージャ回路（５）は、制御情報を更新し、且つ制御メモリ（４０）に書き戻し、複数のＤＭＡチャネルを時分割制御する。このため、回路規模を小さくでき、コストダウンに寄与するとともに、開発工数を削減できる。【選択図】図３
2006268753.tif 000002
【特許請求の範囲】
【請求項１】
外部からの転送指示に応じて、メモリを直接アクセスして、データ転送するＤＭＡチャネルを複数有するＤＭＡ回路において、
一連のＤＭＡ転送処理を分割した処理のステータスを含む制御情報を、複数のＤＭＡチャネルの各々に対し格納する制御メモリと、
前記メモリから読み出された転送データを格納するバッファメモリと、
前記バッファメモリへの転送データの読み出し及び前記バッファメモリから前記転送データの転送先への転送を行うＤＭＡ転送処理を、各ＤＭＡチャネル単位で時分割に行うチャネルマネージャ回路とを有し、
前記チャネルマネージャ回路は、前記制御メモリから前記制御情報を読み出し、前記読み出した制御情報の処理ステータスを解析して、前記一連のＤＭＡ転送処理の一部を実行し、前記制御情報の処理ステータスを前記実行された一部のＤＭＡ転送処理の次の処理を示すステータスに更新し、前記制御メモリに書き戻す
ことを特徴とするＤＭＡ回路。
【請求項２】
前記チャネルマネージャ回路は、前記外部からの転送指示の判断処理と、前記メモリのデイスクリプタの読み出し処理と、前記デイスクリプタに従い、前記メモリの転送データの読み出し処理と、前記読み出した転送データを前記指示された転送先に転送する処理との一連のＤＭＡ転送処理を、前記制御情報の処理ステータスに従い、順次実行する
ことを特徴とする請求項１のＤＭＡ回路。
【請求項３】
前記制御メモリは、前記処理ステータスと、前記メモリの前記デイスクリプタの読み出し制御情報と、前記転送データの読み出し制御情報とを有する制御情報を、前記ＤＭＡチャネル単位に格納する
ことを特徴とする請求項２のＤＭＡ回路。
【請求項４】
転送データを格納するメモリと、
前記メモリを直接アクセスして、データ転送するＤＭＡチャネルを複数有するＤＭＡ回路と、
前記ＤＭＡ回路に転送指示を行うＣＰＵとを有し、
前記ＤＭＡ回路は、
一連のＤＭＡ転送処理を分割した処理のステータスを含む制御情報を、複数のＤＭＡチャネルの各々に対し格納する制御メモリと、
前記メモリから読み出された転送データを格納するバッファメモリと、
前記バッファメモリへの転送データの読み出し及び前記バッファメモリから前記転送データの転送先への転送を行うＤＭＡ転送処理を、各ＤＭＡチャネル単位で時分割に行うチャネルマネージャ回路とを有し、
前記チャネルマネージャ回路は、前記制御メモリから前記制御情報を読み出し、前記読み出した制御情報の処理ステータスを解析して、前記一連のＤＭＡ転送処理の一部を実行し、前記制御情報の処理ステータスを前記実行された一部のＤＭＡ転送処理の次の処理を示すステータスに更新し、前記制御メモリに書き戻す
ことを特徴とするコンピュータシステム。
【請求項５】
前記チャネルマネージャ回路は、前記ＣＰＵからの転送指示の判断処理と、前記メモリのデイスクリプタの読み出し処理と、前記デイスクリプタに従い、前記メモリの転送データの読み出し処理と、前記読み出した転送データを前記指示された転送先に転送する処理との一連のＤＭＡ転送処理を、前記制御情報の処理ステータスに従い、順次実行する
ことを特徴とする請求項４のコンピュータシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリのデータを直接アクセスして、転送するＤＭＡ回路及びコンピュータシステムに関し、特に、多チャンネルのＤＭＡ転送を行うＤＭＡ回路及びコンピュータシステムに関する。
【背景技術】
【０００２】
コンピュータシステムのデータ処理速度の向上のため、ＣＰＵ間のデータ転送に、ＤＭＡ（Direct Memory Access）転送が利用されている。ＤＭＡ転送は、ＣＰＵに指示されたＤＭＡ回路が、メモリを直接アクセスして、データを読み出し、他のＣＰＵに転送するものである。近年、コンピュータシステムは、複雑化しており、多数のＣＰＵ間で、ＤＭＡ転送する必要も生じている。
【０００３】
このようなコンピュータシステムでは、１つのＣＰＵが、同時に、複数のＣＰＵにＤＭＡ転送する要求がある。この場合、多数のＤＭＡチャネルをＤＭＡ回路に実装することにより、ＣＰＵのＤＭＡ転送指示に応じて、パラレルで、ＤＭＡ転送制御を実行でき、ＣＰＵの負荷の軽減が図れる。
【０００４】
図１１は、従来のｎ個（ｎは複数）のＤＭＡチャネルを実装したＤＭＡ回路の構成図である。図１１に示すように、ＤＭＡ送信モジュールは、ＭＰＵ１００と、メモリ１１０と、ＤＭＡ送信回路１２０で構成される。ＤＭＡ送信回路１２０は、メモリ１１０からのデータ受信側アービタ１３０と、転送すべきデータをバッファするデータバッファ１４０と、スイッチモジュール２００へのデータ送出側アービタ１５０と、ｎ個のＤＭＡ送信チャネル回路１６０−１〜１６０−ｎとを有する。
【０００５】
ＭＰＵ１００は、送信用データを、メモリ１１０上に書き込み、次に任意のＤＭＡ送信チャネル（例えば、１６０−１）に送信指示を出す。ＤＭＡ送信チャネル１６０−１は、データ受信側アービタ１３０に、データ受信リクエスト(REQ) を出し、メモリ１１０からデータが取得する。メモリ１１０からのデータは、データバッファ１４０に格納される。
【０００６】
次に、ＤＭＡ送信チャネル１６０−１は、データ受信側アービタ１３０からの完了（バッファ１４０への格納完了）を受けると、データ送出側アービタ１５０に送出リクエスト(REQ) を出す。これにより、データ送出側アービタ１５０からデータバッファ１４０の送信データが、データバス（ここでは、スイッチモジュール２００）に送出される。ＤＭＡ送信チャネル１６０−１は、データ送出側アービタ１５０から完了(CMP) が応答されるのを待ち、データの送出が完了すると、ＭＰＵ１００に完了通知を行う（例えば、特許文献１参照）。
【０００７】
これら一連の動作を、ＭＰＵ１００が、複数チャネル起動する為には、ＤＭＡ送信回路（ＬＳＩ）１２０内に、データ送信チャネル １６０−１〜１６０−ｎを ｎ個実装する必要があった。
【特許文献１】特開平７−０２８４７７号公報（図１、図３）
【発明の開示】
【発明が解決しようとする課題】
【０００８】
このように、ＤＭＡ回路に、複数のＤＭＡチャネルを設けることにより、ＣＰＵ（ＭＰＵ）は、複数のＤＭＡ転送を行うのに、複数のＤＭＡチャネルを起動して、パラレルにＤＭＡ制御することができる。
【０００９】
しかしながら、従来のＤＭＡ回路では、ＤＭＡ送信チャネル回路を複数実装する必要があり、ＬＳＩ（ＤＭＡ送信回路）のゲート数（回路規模）の増大を招いていた。例えば、図１１の構成例では、スイッチモジュール２００に、８つのポートが設けられているため、最大７個のＤＭＡチャネル回路を実装する必要がある。このため、ゲート数に応じて、パッケージを大きくする必要があり、ＬＳＩの単価、開発費が高くなるという問題が生じていた。
【００１０】
従って、本発明の目的は、少ない回路規模で、複数チャネルのＤＭＡ機能を実現するためのＤＭＡ回路及びコンピュータシステムを提供することにある。
【００１１】
又、本発明の他の目的は、ＤＭＡ回路のＬＳＩパッケージを縮小化して、コストダウンを実現するためのＤＭＡ回路及びコンピュータシステムを提供することにある。
【００１２】
更に、本発明の更に他の目的は、複数チャネルのＤＭＡ機能を持つ回路の開発工数を削減するためのＤＭＡ回路及びコンピュータシステムを提供することにある。
【課題を解決するための手段】
【００１３】
この目的の達成のため、本発明のＤＭＡ回路は、一連のＤＭＡ転送処理を分割した処理のステータスを含む制御情報を、複数のＤＭＡチャネルの各々に対し格納する制御メモリと、前記メモリから読み出された転送データを格納するバッファメモリと、前記バッファメモリへの転送データの読み出し及び前記バッファメモリから前記転送データの転送先への転送を行うＤＭＡ転送処理を、各ＤＭＡチャネル単位で時分割に行うチャネルマネージャ回路とを有し、前記チャネルマネージャ回路は、前記制御メモリから前記制御情報を読み出し、前記読み出した制御情報の処理ステータスを解析して、前記一連のＤＭＡ転送処理の一部を実行し、前記制御情報の処理ステータスを前記実行された一部のＤＭＡ転送処理の次の処理を示すステータスに更新し、前記制御メモリに書き戻す。
【００１４】
又、本発明のコンピュータシステムは、転送データを格納するメモリと、前記メモリを直接アクセスして、データ転送するＤＭＡチャネルを複数有するＤＭＡ回路と、前記ＤＭＡ回路に転送指示を行うＣＰＵとを有し、前記ＤＭＡ回路は、一連のＤＭＡ転送処理を分割した処理のステータスを含む制御情報を、複数のＤＭＡチャネルの各々に対し格納する制御メモリと、前記メモリから読み出された転送データを格納するバッファメモリと、前記バッファメモリへの転送データの読み出し及び前記バッファメモリから前記転送データの転送先への転送を行うＤＭＡ転送処理を、各ＤＭＡチャネル単位で時分割に行うチャネルマネージャ回路とを有し、前記チャネルマネージャ回路は、前記制御メモリから前記制御情報を読み出し、前記読み出した制御情報の処理ステータスを解析して、前記一連のＤＭＡ転送処理の一部を実行し、前記制御情報の処理ステータスを前記実行された一部のＤＭＡ転送処理の次の処理を示すステータスに更新し、前記制御メモリに書き戻す。
【００１５】
更に、本発明では、好ましくは、前記チャネルマネージャ回路は、前記外部からの転送指示の判断処理と、前記メモリのデイスクリプタの読み出し処理と、前記デイスクリプタに従い、前記メモリの転送データの読み出し処理と、前記読み出した転送データを前記指示された転送先に転送する処理との一連のＤＭＡ転送処理を、前記制御情報の処理ステータスに従い、順次実行する。
【００１６】
更に、本発明では、好ましくは、前記制御メモリは、前記処理ステータスと、前記メモリの前記デイスクリプタの読み出し制御情報と、前記転送データの読み出し制御情報とを有する制御情報を、前記ＤＭＡチャネル単位に格納する。
【００１７】
更に、本発明では、好ましくは、前記チャネルマネージャ回路は、前記制御メモリの前記デイスクリプタの読み出し制御情報が前記外部から書き込まれたかを判断し、前記書き込まれたＤＭＡチャネルの前記ＤＭＡ転送処理を開始する。
【００１８】
更に、本発明では、好ましくは、前記チャネルマネージャ回路は、前記ＤＭＡ転送処理開始を示す前記デイスクリプタの読み出し処理ステータスに、前記処理ステータスを更新する。
【００１９】
更に、本発明では、好ましくは、前記チャネルマネージャ回路は、前記制御メモリの前記処理ステータスが、前記デイスクリプタの読み出し処理ステータスであることを解析し、前記外部から書き込まれた前記メモリのデイスクリプタの読み出し制御情報により、前記デイスクリプタの読み出し処理を実行する。
【００２０】
更に、本発明では、好ましくは、前記チャネルマネージャ回路は、前記デイスクリプタの読み出し処理の実行により、前記読み出したデイスクリプタを、前記制御情報の前記転送データの読み出し制御情報に書き込み、前記処理ステータスを前記転送データの読み出し処理ステータスに更新する。
【００２１】
更に、本発明では、好ましくは、前記チャネルマネージャ回路は、前記制御メモリの前記処理ステータスが、前記転送データの読み出し処理ステータスであることを解析して、前記転送データの読み出し制御情報により、前記メモリの前記転送データの読み出し処理を実行する。
【００２２】
更に、本発明では、好ましくは、前記チャネルマネージャ回路は、前記転送データの読み出し処理の実行により、前記処理ステータスを前記転送データの前記バッファメモリの読み出し監視ステータスに更新する。
【００２３】
更に、本発明では、好ましくは、前記チャネルマネージャ回路は、前記制御メモリの前記処理ステータスが、前記監視ステータスであることを解析して、前記メモリから前記バッファメモリへの前記転送データの読み出しが開始したかを監視する。
【００２４】
更に、本発明では、好ましくは、前記チャネルマネージャ回路は、前記監視により、前記バッファメモリへの前記転送データの読み出しが開始したことを検出して、前記転送開始を指示する。
【００２５】
更に、本発明では、好ましくは、前記チャネルマネージャ回路は、前記監視により、前記バッファメモリへの前記転送データの読み出しが完了したことを検出して、前記外部へ前記転送完了を通知する。
【発明の効果】
【００２６】
本発明では、チャネルマネージャ回路が、制御メモリの各ＤＭＡチャネルの制御情報を順次読み出し、解析し、分割されたＤＭＡ制御のシーケンスに応じて、ステート処理（ＤＭＡ制御）を行い、制御情報を更新し、且つ制御メモリに書き戻す。これにより、複数のＤＭＡチャネルを時分割制御するため、回路規模を小さくでき、コストダウンに寄与するとともに、開発工数を削減できる。
【発明を実施するための最良の形態】
【００２７】
以下、本発明の実施の形態を、ＤＭＡ回路、ＤＭＡ制御、ＤＭＡ回路を使用したコンピュータシステム、他の実施の形態の順で説明する。
【００２８】
［ＤＭＡ回路］
図１は、本発明の一実施の形態のＤＭＡ回路の構成図、図２は、図１のＲＡＭに格納される各チャネルの制御情報の説明図、図３は、図１のチャネルマネージャ回路の構成図、図４及び図５は、チャネルマネージャ回路の時分割制御処理の説明図である。
【００２９】
図１に示すように、ＤＭＡ回路（ＤＭＡ送信回路）４は、ＣＰＵ１と、メモリ（ＣＰＵ１のローカルメモリ）２に接続されたメモリコントローラ３とに接続される。ＣＰＵ１は、メモリコントローラ３を介しメモリ２に、ＤＭＡ転送のためのデイスクリプタＤＩＳを書き込む。
【００３０】
ＤＭＡ回路４は、ＣＰＵ１とのＣＰＵインタフェース制御部４１，データ受信制御ブロック４２、チャネルコントロールＲＡＭ（Random Access Memory）４０、データバッファ４４、パケット生成ブロック４６、データ送信制御ブロック４８、ライトゲート４３、チャネルマネージャ回路５とを有する。
【００３１】
ＣＰＵインタフェース制御部４１は、ＣＰＵ１のソフトウェアによるチャネルコントロールＲＡＭ４０の書き込み制御とチャネルマネージャ回路５への割込み制御を行う。データ送信制御ブロック４８は、外部バスへのデータ送信制御を行う。データ受信制御ブロック４２は、チャネルマネージャ回路５からの起動により、メモリコントローラ３にリード要求を発行する。
【００３２】
チャネルマネージャ回路５は、チャネルコントロールＲＡＭの制御情報により、後述するように、仮想的に複数のＤＭＡ機能を実行する。メモリコントローラ３は、ＣＰＵ配下のローカルメモリ２のアクセス制御を行う。データバッファ４４は、データ受信制御ブロック４２が、メモリ２から読み出したデータを一次格納するためのバッファである。パケット生成ブロック４６は、チャネルマネージャ回路５からの起動により、送信データをパケットに整形する。
【００３３】
ライトゲート４３は、ＣＰＵ１からのライトアドレス／データ＊１と、チャネルマネージャ回路５からのライトアドレス／データ＊５を選択し、チャネルコントロールＲＡＭ４０をライトアクセスする。
【００３４】
チャネルコントロールＲＡＭ４０は、チャネルマネージャ回路５の各ＤＭＡチャネルの制御情報を格納しておくための内部ＲＡＭである。図２は、ＲＡＭ４０に格納されたＤＭＡチャネルの制御情報の説明図である。図２に示すように、各ＤＭＡチャネルＣｈ．０〜Ｃｈ．ｎに対し、現在のステータスＣＨＳＴ、メモリに展開されているデイスクリプタの数ＤＳＣ＿ＮＵＭ、メモリ２に展開されているデイスクリプタのアドレスＤＡＤＲ，メモリ２に展開されているデータのアドレスＳＡＤＲ，メモリ２に展開されているデータのブロックサイズＢＳＺ、メモリ２に展開されているデータの転送先アドレスＴＡＤＲが、格納される。
【００３５】
即ち、デイスクリプタの数ＤＳＣ＿ＮＵＭ、デイスクリプタのアドレスＤＡＤＲは、ＣＰＵ１により、書き込まれる。データのアドレスＳＡＤＲ，データのブロックサイズＢＳＺ、データの転送先アドレスＴＡＤＲは、メモリ２から読み込んだデイスクリプタの内容である。更に、ステータスＣＨＳＴは、図６以下で説明するＤＭＡ制御のシーケンスに応じて、チャネルマネージャ回路５により更新され、且つチャネルマネージャ回路５は、このステータスを解析して、ＤＭＡ制御を行う。
【００３６】
図３は、チャネルマネージャ回路５の構成図であり、ＣＰＵ１のアクセスがない時は、常時クロックを計数して、アドレス（リードアドレス）を発生するアドレスカウンタ５２と、アドレスカウンタ５２のアドレスを２クロック分遅延させ、ライトアドレスを発生する２段のフリップフロップ回路５３，５４と、データ受信ブロック４２からのデータバリッド信号（メモリ２からデータ受信を示す）をラッチする第１のラッチ回路５５と、データ受信ブロック４２からのデータエンド信号（メモリ２からデータをバッファ４４に格納終了を示す）をラッチする第２のラッチ回路５６と、データ受信ブロック４２からのメモリから読み出したデイスクリプタを格納するレジスタ５８を有する。
【００３７】
更に、チャネルマネージャ回路５は、ステートマシンである解析ロジック回路５０を有する。解析ロジック回路５０は、アドレスカウンタ５２のリードアドレスでＲＡＭ４０から読み出したリードデータ（カウンタ値の示すＤＭＡチャネルの制御情報）を、ラッチ回路５５，５６、レジスタ５８の内容に応じて、解析し、制御情報の処理ステータスＣＨＳＴを更新し、ＲＡＭ４０のライトアドレスの示すチャネル位置（即ち、リードと同じＤＭＡチャネル）に、更新した制御情報を書き込む。
【００３８】
即ち、図４及び図５に示すように、解析ロジック回路５０は、１クロック目で、ＲＡＭ４０から読み出されたチャネルＣｈ．０の制御情報に応じて、２クロック目で、制御情報に応じて、処理を行い、３クロック目で、ＲＡＭ４０に制御情報を書き込む。又、この２クロック目では、ＲＡＭ４０からチャネルＣｈ．１の制御情報が読み出され、解析ロジック回路５０は、３クロック目で、この制御情報に応じて、処理を行い、４クロック目で、ＲＡＭ４０に、チャネルＣｈ．１の制御情報を書き込む。同様にして、チャネルＣｈ．２、Ｃｈ．３…Ｃｈ．ｎを処理し、カウンタ５２は、ｎカウントすると、「０」に戻るため、図４のように、チャネルＣｈ．０の処理に戻る。
【００３９】
このように、チャネルマネージャ回路５は、図４に示すように、チャネルコントロールＲＡＭ４０の各ＤＭＡチャネルの制御情報（ステータスＣＨＳＴ等）を順次読み出し、解析し、図６以下で説明するＤＭＡ制御のシーケンスに応じて、ステート処理（ＤＭＡ制御）を行い、制御情報を更新し、且つＲＡＭ４０に書き戻す。これにより、複数のＤＭＡチャネルを時分割制御する。
【００４０】
［ＤＭＡ制御］
次に、チャネルマネージャ回路５（特に、解析ロジック回路５０）の制御情報の解析及びＤＭＡ制御を説明する。図６は、ＤＭＡ制御のステート処理フロー図、図７は、その各ステップの処理内容の説明図である。
【００４１】
（Ｓ１０）解析ロジック回路５０は、制御情報のステータスＣＨＳＴが、アイドルである、即ち、アイドルステートでは、ＤＭＡ起動判定を行う。図７のように、アイドルでは、制御情報のデイスクリプト数ＤＳＣ＿ＮＵＭが「０」、即ち、図２で説明したように、ＣＰＵ１が、デイスクリプト数を書き込んでいない時は、そのＤＭＡチャネルは起動されていないため、解析ロジック回路５０は、何も処理しない。一方、制御情報のデイスクリプト数ＤＳＣ＿ＮＵＭが「０」でない、即ち、図２で説明したように、ＣＰＵ１が、デイスクリプト数を書き込んでいれば、ＤＭＡを起動と判定し、解析ロジック回路５０は、制御情報のステータスＣＨＳＴを、ステップＳ１２の「ｄｒｅｇ」に書き換え、ＲＡＭ４０に書き戻す。
【００４２】
（Ｓ１２）解析ロジック回路５０は、制御情報のステータスＣＨＳＴが、「ｄｒｅｇ」である、即ち、ｄｒｅｇステートでは、デイスクリプタ要求を行う。図７のように、「ｄｒｅｇ」では、データ受信ブロック４２からのビジー信号＊３（図１参照）がアサートされているかを調べる。ビジー信号＊３がアサートされていれば、データ受信ブロック４２は、他のＤＭＡチャネルからの要求により、メモリ２をアクセス中のため、解析ロジック回路５０は、何も処理しない。一方、ビジー信号＊３がアサートされていない場合は、データ受信ブロック４２は、アイドル中のため、解析ロジック回路５０は、データ受信ブロック４２にデータ受信を要求＊６（図１参照）し、次に、制御情報のＣＰＵ１が書き込んだデイスクリプタアドレスＤＡＤＲを、データ受信ブロック４２に通知し、制御情報のステータスＣＨＳＴを、ステップＳ１４の「ｄｗａｉｔ」に書き換え、ＲＡＭ４０に書き戻す。
【００４３】
（Ｓ１４）次に、解析ロジック回路５０は、制御情報のステータスＣＨＳＴが、「ｄｗａｉｔ」である、即ち、ｄｗａｉｔステートでは、デイスクリプタ書き込みを行う。図７のように、「ｄｗａｉｔ」では、データ受信ブロック４２からデータバリッドｄａｔａ＿ｖを受けたかを第１のラッチ回路５５のラッチ出力で調べる。データバリッドｄａｔａ＿ｖを受けていないと、データ受信ブロック４２は、メモリ２から要求したデイスクリプタを受信していないため、解析ロジック回路５０は、何も処理しない。一方、データバリッドｄａｔａ＿ｖを受けている場合は、データ受信ブロック４２が、メモリ２から要求したデイスクリプタを受けているため、レジスタ５８（図３参照）からデイスクリプタの内容を受け取り、制御情報のデイスクリプタ欄（ＳＡＤＲ／ＤＳＺ／ＴＡＤＲ）に書き込み、且つ制御情報のステータスＣＨＳＴを、ステップＳ１６の「ｂｒｅｑ」に書き換え、制御情報をＲＡＭ４０に書き戻す。
【００４４】
（Ｓ１６）解析ロジック回路５０は、制御情報のステータスＣＨＳＴが、「ｂｒｅｑ」である、即ち、ｂｒｅｑステートでは、送信データ要求を行う。図７のように、「ｂｒｅｑ」では、データ受信ブロック４２からのビジー信号＊３（図１参照）がアサートされているかを調べる。ビジー信号＊３がアサートされていれば、データ受信ブロック４２は、他のＤＭＡチャネルからの要求により、メモリ２をアクセス中のため、解析ロジック回路５０は、何も処理しない。一方、ビジー信号＊３がアサートされていない場合は、データ受信ブロック４２は、アイドル中のため、解析ロジック回路５０は、データ受信ブロック４２にデータ受信を要求＊６（図１参照）し、次に、制御情報のデイスクリプタ中の送信データアドレスＳＡＤＲを、データ受信ブロック４２に通知し、制御情報のデイスクリプタ数ＤＳＣ＿ＮＵＭを「１」デクリメントし、デイスクリプタアドレスＤＡＤＲを「１」インクリメントし、ステータスＣＨＳＴを、ステップＳ１８の「ｂｓｔ」に書き換え、ＲＡＭ４０に書き戻す。
【００４５】
（Ｓ１８）次に、解析ロジック回路５０は、制御情報のステータスＣＨＳＴが、「ｂｓｔ」である、即ち、ｂｓｔステートでは、データ送信を行う。図７のように、「ｂｓｔ」では、データ受信ブロック４２からデータバリッドｄａｔａ＿ｖを受けたかを第１のラッチ回路５５のラッチ出力で、データ終了かを第２のラッチ回路５６のラッチ出力で調べる。データバリッドｄａｔａ＿ｖとデータ終了ｅｎｄ＿ｆとを受けていない（両方とも、‘０’）と、データ受信ブロック４２は、メモリ２から要求した送信データを受信していないため、解析ロジック回路５０は、何も処理しない。一方、データバリッドｄａｔａ＿ｖを受けている（＝‘１’）が、データ終了ｅｎｄ＿ｆを受けていない（＝‘０’）場合は、データ受信ブロック４２が、メモリ２から要求した送信データをバッファ４４に格納中のため、事前に、パケット生成ブロック４６に、制御情報のデータ転送先アドレスＴＡＤＲを通知し、制御情報の書き換えはしない。更に、データバリッドｄａｔａ＿ｖがクリアされている（＝‘０’）が、データ終了ｅｎｄ＿ｆを受けている（＝‘１’）場合は、データ受信ブロック４２が、メモリ２から要求した送信データをバッファ４４に格納完了したため、制御情報のデータブロックサイズＢＳＺを「１」デクリメントし、データアドレスＳＡＤＲと転送先アドレスＴＡＤＲを「１」インクリメントし、ステータスＣＨＳＴを、ステップＳ２０の「ｃｍｐ１」に書き換え、制御情報をＲＡＭ４０に書き戻す。
【００４６】
（Ｓ２０）次に、解析ロジック回路５０は、制御情報のステータスＣＨＳＴが、ｃｍｐ１である、即ち、ｃｍｐ１ステートでは、要求されたデータを送信処理したかの判定を行う。図７のように、制御情報のデータブロックサイズＢＳＺが「０」の時は、ＣＰＵ１から要求されたＤＭＡ転送を終了したと判定し、制御情報のステータスＣＨＳＴを、「ｃｍｐ２」に書き換え、ＲＡＭ４０に書き戻す。一方、制御情報のデータブロックサイズＢＳＺが「０」でない場合には、未だ、要求されたデータを転送していないため、解析ロジック回路５０は、制御情報のステータスＣＨＳＴを、ステップＳ１２の「ｄｒｅｇ」に書き換え、ＲＡＭ４０に書き戻す。これにより、ステップＳ１２に戻る。
【００４７】
（Ｓ２２）次に、解析ロジック回路５０は、制御情報のステータスＣＨＳＴが、ｃｍｐ２である、即ち、ｃｍｐ２ステートでは、ＣＰＵインタフェース制御回路４１に、割り込み（割り込み［ｎ］，チャネル番号ｎ）を発行して、制御情報のステータスＣＨＳＴを、ステップＳ２４の「ｃｍｐ３」に書き換え、ＲＡＭ４０に書き戻す。
【００４８】
（Ｓ２４）次に、ＣＰＵ１のソフトウェアは、ＣＰＵインタフェース制御回路４１を介し通知＊１４を受けると、割り込み番号からチャネル番号を判別し、ＣＰＵインタフェース制御回路４１、ライトゲート４３を介し、チャネルコントロールＲＡＭ４０のチャネル［ｎ］の制御情報のステータスＣＨＳＴを、「ｉｄｌｅ」に書き換える。これにより、ステップＳ１０に復帰する。
【００４９】
図８及び図９は、図５のタイムチャートに、図６、図７の処理を付加したタイムチャートである。図８は、デイスクリタフェッチまでのタイムチャートを、図９は、データフェッチのタイムチャートを示す。尚、図８及び図９では、説明を分りやすくするため、ＤＭＡチャネルが、４つ、即ち、Ｃｈ．０〜Ｃｈ．３で説明する。
【００５０】
図８に示すように、リードアドレスが、Ｃｈ．０から順次進み、ステータスＣＨＳＴが、「ｉｄｌｅ」であったとする。クロックＣ３で、ＣＰＵ１が、アクセスすると、クロックＣ４では、カウンタ５２のカウントアップが抑止され、クロックＣ５で、ＣＰＵ１が、ＲＡＭ４０のＣｈ．０の制御情報のデイスクリプタ数ＤＳＣ＿ＮＵＭと、デイスクリプタアドレスＤＡＤＲに、各々「Ｍ０」、「Ｎ０」を書き込んだものとする。
【００５１】
又、同様に、クロックＣ６で、ＣＰＵ１が、アクセスすると、クロックＣ７では、カウンタ５２のカウントアップが抑止され、クロックＣ８で、ＣＰＵ１が、ＲＡＭ４０のＣｈ．１の制御情報のデイスクリプタ数ＤＳＣ＿ＮＵＭと、デイスクリプタアドレスＤＡＤＲに、各々「Ｍ１」、「Ｎ１」を書き込んだものとする。
【００５２】
このクロックＣ７では、クロックＣ６で、Ｃｈ．０の制御情報がリードされるため、チャネルマネージャ回路５０は、クロックＣ７の処理で、ステップＳ１０を実行し、クロックＣ８で、制御情報のステータスＣＨＳＴを、「ｄｒｅｇ」に書き換える予定である。しかし、ＣＰＵ１が優先されるため、クロックＣ９で、チャネルマネージャ回路５０側が、ライトイネーブルとなり、クロックＣ９で、ＲＡＭ４０のＣｈ．０の制御情報のステータスＣＨＳＴが、「ｄｒｅｇ」に書き換えられる。
【００５３】
そして、Ｃｈ．０のサイクルに注目すると、次のＣｈ．０の処理サイクル、即ち、クロックＣ１２で、ステップＳ１２のメモリリード要求（デイスクリプタフェッチ要求「Ｎ０」）が発せられ、クロックＣ１３で、ＲＡＭ４０のＣｈ．０のステータスＣＨＳＴは、「ｄｗａｉｔ」に書き換えられる。又、同様に、クロックＣ１２のＣｈ．１の制御情報がリードされるため、チャネルマネージャ回路５０は、クロックＣ１３の処理で、ステップＳ１０を実行し、クロックＣ１４で、制御情報のステータスＣＨＳＴを、「ｄｒｅｇ」に書き換える。
【００５４】
クロックＣ１７で，メモリコントローラ３からの応答があると、レジスタ５８に要求されたデイスクリプタは保持される。そして、クロックＣ２０のＣｈ．０の順番で、Ｃｈ．０の制御情報がリードされ、チャネルマネージャ回路５０は、クロックＣ２１の処理で、ステップＳ１４のｄｗａｉｔの処理を実行し、クロックＣ２２で、制御情報のステータスＣＨＳＴを、「ｂｒｅｑ」と、デイスクリプタの内容（ＳＡＤＲ／ＴＡＤＲ）とを書き換える。このようにして、デイスクリプタフェッチを行う。
【００５５】
同様に、図９で、Ｃｈ．０のサイクルに注目すると、次のＣｈ．０の処理サイクル、即ち、クロックＣ５で、ステップＳ１６のメモリリード要求（送信データフェッチ要求「Ｐ０」）が発せられ、クロックＣ６で、ＲＡＭ４０のＣｈ．０のステータスＣＨＳＴは、「ｂｓｔ」に書き換えられる。尚、図９では、説明の簡単のため、クロックの符号を、図８と同様の符号で示してあるが、実際には、図８のクロック番号から連続するクロック番号である。
【００５６】
クロックＣ１１で，メモリコントローラ３からの応答があると、クロックＣ１２のＣｈ．０の順番で、Ｃｈ．０の制御情報がリードされ、チャネルマネージャ回路５０は、クロックＣ１３の処理で、ステップＳ１８のｂｓｔの処理を実行し、クロックＣ１４で、パケット生成ブロック４６に、送信先アドレスＴＡＤＲを通知する。
【００５７】
更に、クロックＣ１５で，メモリコントローラ３からのエンド応答があると、クロックＣ１６のＣｈ．０の順番で、Ｃｈ．０の制御情報がリードされ、チャネルマネージャ回路５０は、クロックＣ１７の処理で、ステップＳ１８のｂｓｔの処理を実行し、クロックＣ１８で、制御情報のステータスＣＨＳＴを、「ｃｍｐ１」に書き換える。このようにして、データフェッチを行う。
【００５８】
このようにして、カウンタにより、順次、ＲＡＭの各チャネルの制御情報のステータスＣＨＳＴを読み出し、ステータスＣＨＳＴを解析し、これに応じたＤＭＡステート制御を行う。このため、内部に、ＲＡＭを追加し、且つ解析ロジック回路５０に、解析機能を付加するだけで、複数のＤＭＡチャネル制御が可能となる。
【００５９】
［ＤＭＡ回路を使用したコンピュータシステム］
図１０は、本発明のＤＭＡ回路を適用したコンピュータシステムの構成図である。図１０に示すように、ＣＰＵ（ＭＰＵ）１とメモリ２とＤＭＡ回路４とを搭載した処理モジュール６−０〜６−７が、８つ設けられ、且つスイッチモジュール８のノードに、各々の処理モジュール６−０〜６−７が接続される。
【００６０】
このようなコンピュータシステムでは、１つの処理モジュール（例えば、６−０）が、スイッチモジュール８を介して、他の複数の処理モジュール（例えば、６−１，６−２，６−７）とＤＭＡ転送する。このような場合に、ＤＭＡ回路４は、複数のＤＭＡチャネルを持つことにより、ＣＰＵ１は、１つの処理モジュールとのＤＭＡ転送を待つことなく、ＤＭＡ回路４に複数の処理モジュールへのＤＭＡ転送を指示することができ、ＣＰＵ１の負荷が軽減する他に、パラレルにＤＭＡ転送制御されるため、転送処理時間も短縮できる。
【００６１】
しかも、本発明の仮想的なパラレルＤＭＡ機能を使用することにより、各ＤＭＡ回路の回路規模を小さくでき、コストダウンに寄与するとともに、開発工数の削減も実現できる。
【００６２】
特に、処理モジュール６−０〜６−７が、多数の記憶デバイス（例えば、ディイスク記憶デバイス）を、ホストからの指示により、アクセス制御するストレージ制御モジュールで構成した場合には、データの冗長化のため、処理モジュール間で、データのコピーが頻繁に行われる。このため、ストレージシステムに適用することは、好適である。
【００６３】
［他の実施の形態］
前述の実施の形態では、パケット転送の例で、説明したが、バースト転送にも適用できる。又、ディスク記憶デバイスは、磁気ディスク装置が好ましいが、光ディスク、光磁気ディスク、他の記憶媒体を使用した記憶装置にも適用できる。更に、ＤＭＡチャネル数は、必要に応じて、増減でき、要するに、２つ以上であれば、良い。
【００６４】
以上、本発明を実施の形態により説明したが、本発明の趣旨の範囲内において、本発明は、種々の変形が可能であり、本発明の範囲からこれらを排除するものではない。
【００６５】
（付記１）外部からの転送指示に応じて、メモリを直接アクセスして、データ転送するＤＭＡチャネルを複数有するＤＭＡ回路において、一連のＤＭＡ転送処理を分割した処理のステータスを含む制御情報を、複数のＤＭＡチャネルの各々に対し格納する制御メモリと、前記メモリから読み出された転送データを格納するバッファメモリと、前記バッファメモリへの転送データの読み出し及び前記バッファメモリから前記転送データの転送先への転送を行うＤＭＡ転送処理を、各ＤＭＡチャネル単位で時分割に行うチャネルマネージャ回路とを有し、前記チャネルマネージャ回路は、前記制御メモリから前記制御情報を読み出し、前記読み出した制御情報の処理ステータスを解析して、前記一連のＤＭＡ転送処理の一部を実行し、前記制御情報の処理ステータスを前記実行された一部のＤＭＡ転送処理の次の処理を示すステータスに更新し、前記制御メモリに書き戻すことを特徴とするＤＭＡ回路。
【００６６】
（付記２）前記チャネルマネージャ回路は、前記外部からの転送指示の判断処理と、前記メモリのデイスクリプタの読み出し処理と、前記デイスクリプタに従い、前記メモリの転送データの読み出し処理と、前記読み出した転送データを前記指示された転送先に転送する処理との一連のＤＭＡ転送処理を、前記制御情報の処理ステータスに従い、順次実行することを特徴とする付記１のＤＭＡ回路。
【００６７】
（付記３）制御メモリは、前記処理ステータスと、前記メモリの前記デイスクリプタの読み出し制御情報と、前記転送データの読み出し制御情報とを有する制御情報を、前記ＤＭＡチャネル単位に格納することを特徴とする付記２のＤＭＡ回路。
【００６８】
（付記４）前記チャネルマネージャ回路は、前記制御メモリの前記デイスクリプタの読み出し制御情報が前記外部から書き込まれたかを判断し、前記書き込まれたＤＭＡチャネルの前記ＤＭＡ転送処理を開始することを特徴とする付記３のＤＭＡ回路。
【００６９】
（付記５）前記チャネルマネージャ回路は、前記ＤＭＡ転送処理開始を示す前記デイスクリプタの読み出し処理ステータスに、前記処理ステータスを更新することを特徴とする付記４のＤＭＡ回路。
【００７０】
（付記６）前記チャネルマネージャ回路は、前記制御メモリの前記処理ステータスが、前記デイスクリプタの読み出し処理ステータスであることを解析し、前記外部から書き込まれた前記メモリのデイスクリプタの読み出し制御情報により、前記デイスクリプタの読み出し処理を実行することを特徴とする付記５のＤＭＡ回路。
【００７１】
（付記７）前記チャネルマネージャ回路は、前記デイスクリプタの読み出し処理の実行により、前記読み出したデイスクリプタを、前記制御情報の前記転送データの読み出し制御情報に書き込み、前記処理ステータスを前記転送データの読み出し処理ステータスに更新することを特徴とする付記６のＤＭＡ回路。
【００７２】
（付記８）前記チャネルマネージャ回路は、前記制御メモリの前記処理ステータスが、前記転送データの読み出し処理ステータスであることを解析して、前記転送データの読み出し制御情報により、前記メモリの前記転送データの読み出し処理を実行することを特徴とする付記７のＤＭＡ回路。
【００７３】
（付記９）前記チャネルマネージャ回路は、前記転送データの読み出し処理の実行により、前記処理ステータスを前記転送データの前記バッファメモリの読み出し監視ステータスに更新することを特徴とする付記８のＤＭＡ回路。
【００７４】
（付記１０）前記チャネルマネージャ回路は、前記制御メモリの前記処理ステータスが、前記監視ステータスであることを解析して、前記メモリから前記バッファメモリへの前記転送データの読み出しが開始したかを監視することを特徴とする付記９のＤＭＡ回路。
【００７５】
（付記１１）前記チャネルマネージャ回路は、前記監視により、前記バッファメモリへの前記転送データの読み出しが開始したことを検出して、前記転送開始を指示することを特徴とする付記１０のＤＭＡ回路。
【００７６】
（付記１２）前記チャネルマネージャ回路は、前記監視により、前記バッファメモリへの前記転送データの読み出しが完了したことを検出して、前記外部へ前記転送完了を通知することを特徴とする付記１１のＤＭＡ回路。
【００７７】
（付記１３）転送データを格納するメモリと、前記メモリを直接アクセスして、データ転送するＤＭＡチャネルを複数有するＤＭＡ回路と、前記ＤＭＡ回路に転送指示を行うＣＰＵとを有し、前記ＤＭＡ回路は、一連のＤＭＡ転送処理を分割した処理のステータスを含む制御情報を、複数のＤＭＡチャネルの各々に対し格納する制御メモリと、前記メモリから読み出された転送データを格納するバッファメモリと、前記バッファメモリへの転送データの読み出し及び前記バッファメモリから前記転送データの転送先への転送を行うＤＭＡ転送処理を、各ＤＭＡチャネル単位で時分割に行うチャネルマネージャ回路とを有し、前記チャネルマネージャ回路は、前記制御メモリから前記制御情報を読み出し、前記読み出した制御情報の処理ステータスを解析して、前記一連のＤＭＡ転送処理の一部を実行し、前記制御情報の処理ステータスを前記実行された一部のＤＭＡ転送処理の次の処理を示すステータスに更新し、前記制御メモリに書き戻すことを特徴とするコンピュータシステム。
【００７８】
（付記１４）前記チャネルマネージャ回路は、前記ＣＰＵからの転送指示の判断処理と、前記メモリのデイスクリプタの読み出し処理と、前記デイスクリプタに従い、前記メモリの転送データの読み出し処理と、前記読み出した転送データを前記指示された転送先に転送する処理との一連のＤＭＡ転送処理を、前記制御情報の処理ステータスに従い、順次実行することを特徴とする付記１３のコンピュータシステム。
【００７９】
（付記１５）制御メモリは、前記処理ステータスと、前記メモリの前記デイスクリプタの読み出し制御情報と、前記転送データの読み出し制御情報とを有する制御情報を、前記ＤＭＡチャネル単位に格納することを特徴とする付記１４のコンピュータシステム。
【００８０】
（付記１６）前記チャネルマネージャ回路は、前記制御メモリの前記デイスクリプタの読み出し制御情報が前記ＣＰＵから書き込まれたかを判断し、前記書き込まれたＤＭＡチャネルの前記ＤＭＡ転送処理を開始することを特徴とする付記１５のコンピュータシステム。
【００８１】
（付記１７）前記チャネルマネージャ回路は、前記ＤＭＡ転送処理開始を示す前記デイスクリプタの読み出し処理ステータスに、前記処理ステータスを更新することを特徴とする付記１６のコンピュータシステム。
【００８２】
（付記１８）前記チャネルマネージャ回路は、前記制御メモリの前記処理ステータスが、前記デイスクリプタの読み出し処理ステータスであることを解析し、前記ＣＰＵから書き込まれた前記メモリのデイスクリプタの読み出し制御情報により、前記デイスクリプタの読み出し処理を実行することを特徴とする付記１７のコンピュータシステム。
【００８３】
（付記１９）前記チャネルマネージャ回路は、前記デイスクリプタの読み出し処理の実行により、前記読み出したデイスクリプタを、前記制御情報の前記転送データの読み出し制御情報に書き込み、前記処理ステータスを前記転送データの読み出し処理ステータスに更新することを特徴とする付記１８のコンピュータシステム。
【００８４】
（付記２０）前記チャネルマネージャ回路は、前記制御メモリの前記処理ステータスが、前記転送データの読み出し処理ステータスであることを解析して、前記転送データの読み出し制御情報により、前記メモリの前記転送データの読み出し処理を実行することを特徴とする付記１９のコンピュータシステム。
【産業上の利用可能性】
【００８５】
チャネルマネージャ回路が、制御メモリの各ＤＭＡチャネルの制御情報を順次読み出し、解析し、分割されたＤＭＡ制御のシーケンスに応じて、ステート処理（ＤＭＡ制御）を行い、制御情報を更新し、且つ制御メモリに書き戻して、複数のＤＭＡチャネルを時分割制御するため、回路規模を小さくでき、開発工数を削減できるので、安価な装置を早期に提供できる。
【図面の簡単な説明】
【００８６】
【図１】本発明の一実施の形態のＤＭＡ回路の構成図である。
【図２】図１の各ＤＭＡチャネルの制御情報の説明図である。
【図３】図１のチャネルマネージャ回路の構成図である。
【図４】図１のＤＭＡ制御の時分割動作の説明図である。
【図５】図１のＤＭＡ制御の時分割動作のタイムチャート図である。
【図６】本発明の一実施の形態のＤＭＡ制御のシーケンス処理フロー図である。
【図７】図７の各シーケンス処理の説明図である。
【図８】本発明の一実施の形態のＤＭＡ制御のデイスクリプタフェッチ動作のタイムチャート図である。
【図９】本発明の一実施の形態のＤＭＡ制御の転送データフェッチ動作のタイムチャート図である。
【図１０】本発明のＤＭＡ回路を適用したコンピュータシステムの構成図である。
【図１１】従来の複数ＤＭＡチャネルを持つＤＭＡ回路の構成図である。
【符号の説明】
【００８７】
１  ＣＰＵ（外部）
２  メモリ
３  メモリコントローラ
４  ＤＭＡ回路
５  チャネルマネージャ回路
４０  制御メモリ（チャネルコントロールＲＡＭ）
４２  データ受信制御ブロック
４４  データバッファ
４６  パケット生成ブロック
４８  データ送信制御ブロック
５０  解析ブロック
５２  アドレスカウンタ
５５，５６  ラッチ回路
５８  デイスクリプタレジスタ
【図１】
2006268753.tif 000003
【図２】
2006268753.tif 000004
【図３】
2006268753.tif 000005
【図４】
2006268753.tif 000006
【図５】
2006268753.tif 000007
【図６】
2006268753.tif 000008
【図７】
2006268753.tif 000009
【図８】
2006268753.tif 000010
【図９】
2006268753.tif 000011
【図１０】
2006268753.tif 000012
【図１１】
2006268753.tif 000013