(57)【要約】【課題】ＳＷがメモリのステータス領域を確認する時には未だ正しいステータスがメモリに書き込まれてない可能性がある。【解決手段】ＩＯデバイス４，９は、ＤＭＡ転送結果をメモリ５に書き込むためのステータスライトコマンドを発行しＣＰＵ２へ割込みを通知する。ＣＰＵは、割込みの通知を受けると、ＩＯデバイスの割込みレジスタ１３を読み出すためのレジスタリードコマンドを発行する。バスブリッジ１０は、ステータスライトコマンドおよびレジスタリードコマンドに対するレジスタリードレスポンスをＤＭＡ転送データと共にポストする。バスブリッジは、レジスタリードレスポンスの実行に先立ってステータスライトコマンドを実行することでライトとリードの順番を保証する。【選択図】図１
2010072888.tif 000002
【特許請求の範囲】
【請求項１】
ＣＰＵおよびメモリとＩＯデバイスがバスブリッジを介して接続されたＤＭＡ転送制御システムにおいて、
前記ＣＰＵは、前記ＩＯデバイスから割込み発行の有無を読み出すためのコマンドを前記バスブリッジ経由で発行することにより、ＤＭＡ転送結果が前記ＩＯデバイスから前記メモリに書き込まれたことを確認した後に該ＤＭＡ転送結果を前記メモリから読み出すことを特徴とするＤＭＡ転送制御システム。
【請求項２】
ＣＰＵおよびメモリとＩＯデバイスがバスブリッジを介して接続されたＤＭＡ転送制御システムにおいて、
前記ＩＯデバイスは、割込み発行の有無を示す割込みレジスタを備え、ＤＭＡ転送結果を前記メモリに書き込むためのステータスライトコマンドを発行し、
前記ＣＰＵは、前記割込みの通知を受けると、前記割込みレジスタを読み出すためのレジスタリードコマンドを発行し、
前記バスブリッジは、前記ステータスライトコマンドおよび前記レジスタリードコマンドに対するレジスタリードレスポンスをＤＭＡ転送データと共にポストし、前記レジスタリードレスポンスの実行に先立って前記ステータスライトコマンドを実行し、
前記ＣＰＵは、前記レジスタリードレスポンスを受けると、前記ＤＭＡ転送結果を前記メモリから読み出すためのステータスリードコマンドを発行し、読み出されたＤＭＡ転送結果により前記ＤＭＡ転送データを前記メモリから読み出して処理することを特徴とするＤＭＡ転送制御システム。
【請求項３】
複数のＤＭＡ転送情報（ディスクリプタ）が連結されたディスクリプタチェーンの場合、前記割込みレジスタは処理が終了したディスクリプタ数も保持して前記レジスタリードレスポンスに含めることを特徴とする請求項２記載のＤＭＡ転送制御システム。
【請求項４】
少なくとも１つのＤＭＡ転送情報（ディスクリプタ）が連結されたディスクリプタチェーンが複数存在する場合、前記ＩＯデバイスは、前記ディスクリプタチェーンの処理が終了した時のみ前記割込みを発行することを特徴とする請求項２記載のＤＭＡ転送制御システム。
【請求項５】
メモリとＩＯデバイスがバスブリッジで接続されたＤＭＡ転送制御方法において、
前記ＩＯデバイスは、ＤＭＡ転送終了時に、該ＤＭＡ転送結果を前記メモリに書き込むためのステータスライトコマンドを発行する段階と、
前記ＩＯデバイスは、ＤＭＡ転送終了時にＣＰＵへ割込みを通知する段階と、
ＣＰＵは、前記割込みの通知を受けると、前記ＩＯデバイスの割込みレジスタを読み出すためのレジスタリードコマンドを発行する段階と、
前記バスブリッジは、前記ステータスライトコマンドおよび前記レジスタリードコマンドに対するレジスタリードレスポンスをＤＭＡ転送データと共にポストする段階と、
前記バスブリッジは、前記レジスタリードレスポンスの実行に先立って前記ステータスライトコマンドを実行する段階と、
前記ＣＰＵは、前記レジスタリードレスポンスを受けると、前記ＤＭＡ転送結果を前記メモリから読み出すためのステータスリードコマンドを発行する段階と、
前記ＣＰＵは、読み出されたＤＭＡ転送結果により前記ＤＭＡ転送データを前記メモリから読み出して処理することを特徴とするＤＭＡ転送制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＤＭＡ転送制御システムに関し、特に、メモリに書き込まれたＤＭＡ転送データと、ＣＰＵで使用されるＤＭＡ転送データとの一貫性を担保するＤＭＡ転送制御システムに関する。
【背景技術】
【０００２】
高速なインターフェースを持つＩＯデバイスや、大容量データの転送を必要とするＩＯデバイスに対しては、ＣＰＵを介さずにＩＯデバイスとメインメモリ間で直接データ転送を行うＤＭＡ転送方式がよく採用される。これにより、ＣＰＵの負荷を軽減し、データ転送や他の処理への影響も含めシステム全体の性能低下を阻止する。
【０００３】
このＤＭＡ転送制御方式に関し、転送情報（ディスクリプタという）を用いた方法が周知である。図１１と図１２はこの種のＤＭＡ転送制御方式の構成例とデータフローを示し、図１３はＤＭＡ制御フローを示す（文献公知発明に係るものではない）。
【０００４】
先ず、ＣＰＵ２で実行されるソフトウェア（ＳＷ）１はメモリ５のディスクリプタ領域６へディスクリプタ Des を書き込み（図１３のステップＢ１）、ディスクリプタ Des を書き込んだメモリ５のディスクリプタ領域６の該当アドレスをＩＯデバイス４，９へ通知する（ステップＢ２）。次に、ＩＯデバイス４，９のＤＭＡエンジンは、通知されたメモリ５のディスクリプタ領域６の該当アドレスからディスクリプタ Des を読み込み（ステップＢ３）、内容に応じてメモリ５のデータ領域８との間でＤＭＡ転送を開始する（ステップＢ４）。この時に転送されるＤＭＡ転送データ Dat は、バスブリッジ１０にバッファリングされる。
【０００５】
そして、ＩＯデバイス４，９はＤＭＡ転送が終了すると（ステップＢ５）、ステータスライトコマンド Stw によりメモリ５のステータス領域７へＤＭＡ転送結果ステータス Sts（成功 or 失敗 or 完了ＤＭＡ数等）を書き込み（ステップＢ６、図１１）、ＩＯデバイスは、ディスクリプタの終了（ＤＭＡの終了）を割込み信号で割込みコントローラ１２へ通知する（ステップＢ７、図１２）。ＳＷ１は、割込み処理の中で、ＨＷによって処理が終了したディスクリプタ Des とその結果をステータスリードコマンド Str によりメモリ５のステータス領域７から読み出して確認して（ステップＢ８）、一連のＤＭＡ動作を完了する。
【０００６】
しかし、この方式では、ＳＷ１がメモリ５のステータス領域７を確認する時には未だ正しいステータスがメモリ５に書き込まれてない可能性がある。図１４を用いてその理由を説明する。
【０００７】
ＩＯデバイス４からＤＭＡ転送結果ステータス Sts がメモリ５のステータス領域７へ書き込まれる流れとして、先ず、ＩＯデバイス４からステータスライトコマンド Stw がバスブリッジ１０へポストされる。バスブリッジ１０内では、ＩＯデバイス４からのＤＭＡ転送データ Dat やＩＯデバイス９のＤＭＡ転送データ Dat 等も滞留しており、直にメモリ５への書込みがされるとは限らない。
【０００８】
一方、ステータスライトコマンド Stw をバスブリッジ１０にポストしたＩＯデバイス４はＤＭＡ終了通知を割込み線経由で行い、ＳＷ１は割込み処理の中でＤＭＡのステータスを読み込む為に、ＣＰＵ２を通じてメモリ５のステータス領域７をリードする為のステータスリードコマンド Str を発行する。このステータスリードコマンド Str とステータスライトコマンド Stw の順番保証がなされていない為に、ステータスリードコマンド Str がステータスライトコマンド Stw より早くメモリ５に受け付けられた場合、ＤＭＡ転送結果のステータスは不正になってしまう。
【０００９】
そして、ステータス不正により、ＤＭＡ転送異常終了をＤＭＡ転送正常終了と認識してしまう場合が考えられ、その場合には、ＳＷ１がＤＭＡ成功と誤認し、次処理へ移行してしまうため、結果としてデータ化けを引き起こす。
【００１０】
また、同じ理由により、ＳＷ１がメモリ５のステータス領域７を確認する時に、ＤＭＡデータ自体がメモリ５に書き込まれていない可能性もあり、この場合にも結果としてデータ化けを引き起こす。
【００１１】
このような問題を解決するための技術が公知である（例えば、特許文献１参照）。この従来技術は、入出力デバイスから送られてくるデータを、ＣＰＵを介さずメモリ上の所定の領域へ書き込むための転送を開始し、最後の書込み転送後に入出力デバイスからデータの入出力に関する割込みを受けると、ＣＰＵに対する割込みを発生せずに、メモリに書き込んだデータを読み出すためのリードコマンドを発行する入出力コントローラを設ける。
【００１２】
入出力コントローラは、リードコマンドに対する応答を受け、メモリでのデータ書込みが完了したことを確認した上で、割込みコントローラに対してデータ転送が完了したことを示す割込みを発生する。割込みコントローラは、入出力コントローラから発生される割込みを受けて、当該割込みをＣＰＵに伝える。
【００１３】
【特許文献１】特開２００３−２７１５４１号公報（第４頁−第５頁、図６）
【発明の開示】
【発明が解決しようとする課題】
【００１４】
しかしながら、上述した従来技術では、入出力コントローラというハードウェアを設ける必要があるため、コスト、スペース、電力等の点で問題がある。
【００１５】
そこで、本発明の目的は、簡便な構成によって、ＤＭＡ転送結果ステータスのリードとライトの順番を保障でき、これにより、データ化け等の不正動作を防ぎ、メモリに書き込まれたＤＭＡ転送データと、ＣＰＵで使用されるデータとの一貫性を担保することが可能なＤＭＡ転送制御システムを提供することを目的とする。
【課題を解決するための手段】
【００１６】
本発明のＤＭＡ転送制御システムは、ＣＰＵおよびメモリとＩＯデバイスがバスブリッジを介して接続されたＤＭＡ転送制御システムにおいて、ＣＰＵは、ＩＯデバイスから割込み発行の有無を読み出すためのコマンドをバスブリッジ経由で発行することにより、ＤＭＡ転送結果がＩＯデバイスから前記メモリに書き込まれたことを確認した後に該ＤＭＡ転送結果をメモリから読み出すことを特徴とする。
【００１７】
更に詳しくは、本発明のＤＭＡ転送制御システムは、ＣＰＵおよびメモリとＩＯデバイスがバスブリッジを介して接続されたＤＭＡ転送制御システムにおいて、ＩＯデバイスは、割込み発行の有無を示す割込みレジスタを備え、ＤＭＡ転送結果をメモリに書き込むためのステータスライトコマンドを発行し、ＣＰＵは、割込みの通知を受けると、割込みレジスタを読み出すためのレジスタリードコマンドを発行し、バスブリッジは、ステータスライトコマンドおよびレジスタリードコマンドに対するレジスタリードレスポンスをＤＭＡ転送データと共にポストし、レジスタリードレスポンスの実行に先立ってステータスライトコマンドを実行し、ＣＰＵは、レジスタリードレスポンスを受けると、ＤＭＡ転送結果をメモリから読み出すためのステータスリードコマンドを発行し、読み出されたＤＭＡ転送結果によりＤＭＡ転送データをメモリから読み出して処理することを特徴とする。
【００１８】
本発明では、ＩＯデバイスは、ＤＭＡ転送終了時に、該ＤＭＡ転送結果をメモリに書き込むためのステータスライトコマンドを発行し、ＤＭＡ転送終了時にＣＰＵへ割込みを通知する。ＣＰＵは、割込みの通知を受けると、ＩＯデバイスの割込みレジスタを読み出すためのレジスタリードコマンドを発行する。
【００１９】
バスブリッジは、ステータスライトコマンドおよびレジスタリードコマンドに対するレジスタリードレスポンスをＤＭＡ転送データと共にポストする。バスブリッジは、レジスタリードレスポンスの実行に先立ってステータスライトコマンドを実行する。
【００２０】
ＣＰＵは、レジスタリードレスポンスを受けると、ＤＭＡ転送結果をメモリから読み出すためのステータスリードコマンドを発行し、読み出されたＤＭＡ転送結果によりＤＭＡ転送データをメモリから読み出して処理する。
【００２１】
このように、本発明は、バスブリッジの一般的仕様としてリードがライトを追い越すことはないという特性を利用し、割り込み通知を受けたＳＷがメモリ上にあるＤＭＡ転送結果のステータスをリードする前に、ＩＯデバイスに対して必ずリード動作を行うことで、ＤＭＡ転送結果のステータスに対するライトとリードの順番を保証することにより本発明の目的を達成する。
【００２２】
即ち、ＩＯデバイスに対するリードのレスポンスを確認してからメモリ上のＤＭＡ転送結果のステータスをリードすることで、上記特性により、ＩＯデバイスのリードレスポンスが、その時点でのバスブリッジ内滞留コマンドの最後になり、該当リードレスポンスがＳＷに届くときには、それ以前にバスブリッジ内に滞留していたコマンドは全て実行されているため、メモリ上へ正しいＤＭＡ転送結果ステータスが書き込まれていることになるのである。
【発明の効果】
【００２３】
本発明の第１の効果は、ステータス不正によるデータ化けを防止できるということである。その理由は、割込み通知を受けたＳＷはメモリ上のＤＭＡ転送結果ステータスを読む前に、ＩＯデバイスに対して必ずリード動作を行うことで、ステータスライトコマンドとステータスリードコマンドの順番を保証することができる為である。
【００２４】
また、第２の効果は、同じ理由により、ＤＭＡ転送データのメモリ書込み前にメモリデータを使用することを防止できるというである。
【００２５】
更に、ＩＯデバイスに割込みイネーブル自動無効機能を持たせ、かつ割込みステータスレジスタにＤＭＡ転送終了ディスクリプタ数を追加することによって、ＳＷとＩＯデバイス間での処理終了ディスクリプタ数と割込みとの関係を一対一に対応させ、処理数の不一致や不正割り込み等を防ぐことができるという第３の効果を得ることも可能である。
【発明を実施するための最良の形態】
【００２６】
次に、本発明の実施の形態について図面を参照して詳細に説明する。
【００２７】
［構成の説明］
図１は本発明のＤＭＡ転送制御システムの一実施形態の構成を示すブロック図である。このＤＭＡ転送制御システムのブロック構成自体は、２つのＩＯデバイス４，９それぞれに割込みレジスタ１３を設けたこと以外、図１１等に示した従来技術の構成と変わりがないが、ＳＷ１およびＩＯデバイス４，９の処理内容が異なっている。
【００２８】
図１において、ＳＷ１はＣＰＵ２で実行され、ディスクリプタを生成してメモリ５のディスクリプタ領域６へ書き込み、書き込んだディスクリプタ領域のアドレスをＩＯデバイス４，９へ通知する。ディスクリプタとは、コマンド種、転送元アドレス、転送先アドレス、転送長等のＤＭＡ転送に必要な転送情報である。
【００２９】
そして、ＤＭＡ終了時に割込みコントローラ１２から割り込みを受けると、割り込み処理の中で、ＩＯデバイス４，９に対して割込みレジスタ１３を読み出すためのレジスタリードコマンドを発行する。その後に、ＣＰＵ２は、レジスタリードコマンドに対するリードレスポンスを受けると、ＨＷによって処理が完了したディスクリプタとその結果をステータスリードコマンドによりメモリ５のステータス領域７から読み出して確認する。そして、ＣＰＵ２は、メモリ５のデータ領域８から転送済みデータを読み出して必要な処理を進める。
【００３０】
２つのＩＯデバイス４，９それぞれはＤＭＡエンジン１４を有しており、外部バス３を介してバスブリッジ１０と接続されている。ＤＭＡエンジン１４はディスクリプタを基にＤＭＡを実行する機能を有する。ＩＯデバイス４，９それぞれのＤＭＡエンジン１４は、ＳＷ１から通知されたメモリ５のディスクリプタ領域６の該当アドレスからディスクリプタを読み込み、その内容に応じてメモリ５のデータ領域８との間でＤＭＡ転送を行なう。
【００３１】
また、２つのＩＯデバイス４，９それぞれは割込み発行の有無を示すリードオンリーの割込みレジスタ１３を有する。ＤＭＡ終了時には、ステータスライトコマンドによりメモリ５のステータス領域７へＤＭＡ転送結果ステータスを書き込み、ＤＭＡの終了を割込み信号で割込みコントローラ１２へ通知する。また、ＳＷ１からのレジスタリードコマンドに対するリードレスポンスを発行する。このとき、割込みレジスタ１３はクリアされ、これによりＳＷ処理を低減させる。
【００３２】
バスブリッジ１０はＣＰＵ２およびメモリ５と外部バス３との間のブリッジ処理などを行い、双方向にデータを転送することができる。また、データ転送の際に使用するバッファを備え、ＤＭＡ転送データ，ステータスライトコマンドおよびＩＯデバイス４，９の割り込みレジスタのリードレスポンスをバッファリングする。バスブリッジ１０は、リードがライトを追い越すことはないという特性を一般的な仕様として有しており、本発明はこの特性を利用する。
【００３３】
割込みコントローラ１２は、ＩＯデバイス４，９およびＣＰＵ２とバス接続されることなく直結され、ＩＯデバイス４，９からの割込み信号をアービトレーションしてＣＰＵ２に通知する。メモリ５は、ディスクリプタ領域６，ステータス領域７およびデータ領域８を有しており、内部バス１１を介してＣＰＵ２とバスブリッジ１０に接続されている。
【００３４】
本発明は、ＩＯバイスに割込みレジスタ１３を設けて、このレジスタに対するリード動作を追加し、バスブリッジ１０におけるリードがライトを追い越すことはないという特性を利用することで、ＤＭＡ転送結果ステータスに対するライトとリードの順番を保障することが可能になり、これによりメモリ５とＣＰＵ２におけるデータの一貫性を担保するものである。
【００３５】
［動作の説明］
以下、図２〜図８に示すＤＭＡ制御フローと、図９に示すフローチャートを用いて本発明のＤＭＡ転送制御システムの動作について説明する。
【００３６】
先ず、ＳＷ１はメモリ５のディスクリプタ領域６へディスクリプタ Des を書き込み（図１０のステップＡ１、図２）、ディスクリプタ Des を書き込んだメモリ５のディスクリプタ領域６の該当アドレスをＩＯデバイス４，９へ通知する（ステップＡ２）。図２に示した３つのディスクリプタ Des は、例えば、その内の１つはＩＯデバイス４用、残りの２つはチェーンされたＩＯデバイス９用のものである。ディスクリプタのチェーンは、より多くのデータの転送やメモリ資源の有効活用の為にデータ格納領域を分散させるために行なわれる。しかし、ここでの説明では簡略化の為、ディスクリプタ Des の処理は一つだけとしている。
【００３７】
次に、ＩＯデバイス４，９のＤＭＡエンジンは、通知されたメモリ５のディスクリプタ領域６の該当アドレスからディスクリプタ Des を読み込み（ステップＡ３、図３）、内容に応じてメモリ５のデータ領域８との間でＤＭＡ転送を開始する（ステップＡ４、図４）。この時に転送されるＤＭＡ転送データ Dat は、バスブリッジ１０にポストされる。
【００３８】
そして、ＩＯデバイス４，９はＤＭＡ転送が完了すると（ステップＡ５）、メモリ５のステータス領域７へＤＭＡ転送結果ステータス Sts（成功 or 失敗 or 完了ＤＭＡ数等）を書き込む（ステップＡ６）ためのステータスライトコマンド Stw を発行する。このステータスライトコマンド Stw はバスブリッジ１０にポストされる（図５）。また、ディスクリプタの終了（ＤＭＡの終了）を割込み信号で割込みコントローラ１２へ通知する（ステップＡ７、図５）。割込みコントローラ１２は割込み信号をアービトレーションしてＣＰＵ２に通知する。
【００３９】
ＳＷ１は、割込み処理の中で、先ず、ＩＯデバイス４，９に対して割り込みステータスレジスタを読み出す（ステップＡ８）ためのレジスタリードコマンドを発行する。ＩＯデバイス４，９は、そのレスポンスとしてリードレスポンス Isr を発行するが、このリードレスポンス Isr もバスブリッジ１０にポストされる（図６）。
【００４０】
以上の処理において、バスブリッジ１０には、ＤＭＡ転送データ Dat ，およびリードレスポンス Isr が滞留していることになる。バスブリッジ１０は、ＤＭＡ転送データ Datはデータ領域８、ステータスライトコマンド Stw によるＤＭＡ転送結果ステータス Sts はステータス領域７、リードレスポンス Isr はＣＰＵ２へ振り分けて転送する（図７）。
【００４１】
このとき、バスブリッジ１０の前述の一般的な仕様に従い、リードレスポンス Isr の転送がステータスライトコマンド Stw の転送を追い越すことはない。従って、リードレスポンス Isr が、その時点でのバスブリッジ内滞留コマンドの最後になり、該当リードレスポンス Isr がＳＷ１に届くときには、それ以前にバスブリッジ１０内に滞留していたコマンドは全て実行されていることになる。
【００４２】
ＳＷ１はリードレスポンス Isr を認識した後にステータスリードコマンド Str を発行する。その結果、ステータスライトコマンド Stw とステータスリードコマンド Str の順番制御が可能になり、ステータスライトコマンド Stw がメモリ５へ送られて実行され、ＤＭＡ転送結果ステータス Sts がステータス領域７に書き込まれてから、ステータスリードコマンド Str を発行する。ＳＷ１は、ステータスリードコマンド Str によりメモリ５のステータス領域７から正しいＤＭＡ転送結果ステータス Sts を読み出して確認し（ステップＡ９、図８）一連のＤＭＡ動作を終了する。そして、ＣＰＵ２は、メモリ５のデータ領域８から転送済みデータを読み出して必要な処理を進める。
［発明の他の実施の形態］
【００４３】
本発明の他の実施の形態として、その基本的構成は上記の通りであるが、ディスクリプタのチェーンが複数存在する場合のディスクリプタの終了通知と、それに基づく処理について更に工夫した例について説明する。図２において、ディスクリプタ領域６にはＩＯデバイス９用に２つのディスクリプタ Des がチェーンされているとしたが、この実施の形態は、このようなチェーンが複数存在する場合の処理を取り扱う。
【００４４】
ＳＷ１に対し、割込み通知タイミングと割込みレジスタ１３の更新、ＤＭＡ転送結果ステータス Sts の見せ方を図９に示すようにする仕組みをＩＯデバイス４，９それぞれに持たせる。これにより、ＳＷ１が必要な場合のみ割込みを通知させ、ＳＷ１とＩＯデバイス４，９間での処理終了したチェーンと割込みとの関係を一対一に対応させ、処理が終了した（１チェーンの）ディスクリプタ数の不一致や不正割込み等を防ぐことを可能とする。このため、割込みレジスタ１３は、割込み発行の有無だけでなく、処理が終了した（１チェーンの）ディスクリプタ数も保持する。
【００４５】
当初、ＩＯデバイス４，９の割込みスレジスタ１３はクリア状態であり、ＩＯデバイス４，９において一番目のディスクリプタ・チェーンのＤＭＡ処理が開始されると、ＳＷ１は割込みイネーブル IntEnable をＩＯデバイス４，９中の割込みイネーブルレジスタ（不図示）に書き込む（図９のＳ１）。図９に示す割込みイネーブル信号の波形で高レベルが有効、低レベルが無効を示す。割込みイネーブルレジスタはディスクリプタ・チェーンのＤＭＡ処理完了を確認するために使用される。
【００４６】
ＩＯデバイス４，９は一番目のディスクリプタ・チェーンのディスクリプタ処理の終了毎にＤＭＡ転送結果ステータス Sts をメモリ５に書き込み（図７）、割込みジスタ１３のＤＭＡ転送終了ディスクリプタ数がカウントアップされる。一番目のディスクリプタ・チェーンのＤＭＡ処理が完了すると、ＩＯデバイス４，９は割込みレジスタ１３を割込み発行「有」と更新して、割込み信号 Interrupt を有効にする（図５）。
【００４７】
割込み信号 Interrupt は割込みコントローラ１２を経由してＣＰＵ１に入力する。図９に示す割込み信号 Interrupt の波形で高レベルが有効、低レベルが無効を示す。また、ＩＯデバイス４，９は、割込み信号 Interrupt の有効化と同時に割込みイネーブル信号を自動的に無効にする。（以上、図９のＳ２）。
【００４８】
ＳＷ１は二番目のディスクリプタ・チェーンのディスクリプタを設定し（図２）、ＤＭＡ転送データに係わらない他の処理を行っているが、有効化された割込み信号 Interrupt が入力すると、リードレスポンス Isr （図７）とＤＭＡ転送終了ディスクリプタ数を割込みレジスタ１３からリードする。これにより、ＣＰＵ２は、メモリ５のデータ領域８から転送済みデータを読み出して必要な処理を進めるに当たり、予め設定した（図２）ディスクリプタ数とＤＭＡ転送終了ディスクリプタ数との一致をチェックし、処理数の不一致や不正割込みを防ぐことができる。
【００４９】
ＩＯデバイス４，９は、リードレスポンス Isr のリードで割込みレジスタ１３を自動的にクリアする。これにより割込み信号 Interrupt は無効となる。ＩＯデバイス４，９は、二番目のディスクリプタ・チェーンの処理を開始しており、ディスクリプタ処理の終了毎にＤＭＡ転送結果ステータス Sts を更新していく（図７）が、割込みレジスタ１３は、割込みイネーブル信号が有効時のみ更新される。割込みイネーブル信号は上述のように無効とされているから、割込みレジスタ１３はクリア状態を維持する。割込みイネーブル信号が無効時に処理完了したディスクリプタの数は割込みイネーブル信号が有効時に更新される（以上、図９のＳ３）。
【００５０】
二番目のディスクリプタ・チェーンのＤＭＡ処理が完了すると、ＳＷ１は三番目のディスクリプタ・チェーンのディスクリプタを設定する（図２）。ＩＯデバイス４，９は割込みレジスタを割込み発行「有」と更新して、割込み信号 Interrupt を有効化する（図５）。ＩＯデバイス４，９は、割込み信号 Interrupt の有効化と同時に割込みイネーブル信号を自動的に無効にする（以上、図９のＳ４）。
【００５１】
以下、同様にして処理が進行していく。ＳＷ１には、１つのディスクリプタ・チェーンに対する処理が完了した時のみ割込みの通知がくる。ＳＷ１は、これを受けて、ＩＯデバイス４，９の割込みレジスタ１３を読み出し、ＳＷ１とＩＯデバイス４，９間での処理終了したディスクリプタ数の一致を確認する。その結果、一致を確認できれば、メモリ５のデータ領域８から転送済みデータを読み出して必要な処理を進める。
【図面の簡単な説明】
【００５２】
【図１】本発明のＤＭＡ転送制御システムの一実施形態の構成を示すブロック図
【図２】本発明のＤＭＡ転送制御システムにおけるディスクリプタライトのデータフローチャート
【図３】本発明のＤＭＡ転送制御システムにおけるディスクリプタリードのデータフローチャート
【図４】本発明のＤＭＡ転送制御システムにおけるＤＭＡ実行のデータフローチャート
【図５】本発明のＤＭＡ転送制御システムにおけるステータスライトのデータフローチャート
【図６】本発明のＤＭＡ転送制御システムにおけるＩＯデバイスリードのデータフローチャート。
【図７】本発明のＤＭＡ転送制御システムにおけるステータスリードコマンド発行のデータフローチャート
【図８】本発明のＤＭＡ転送制御システムにおけるステータスリードのデータフローチャート
【図９】本発明のＤＭＡ転送制御システムの他の実施形態を説明するための図
【図１０】本発明のＤＭＡ転送制御システムの動作を示すフローチャート
【図１１】従来のＤＭＡ転送制御方式におけるステータスライトのデータフローチャート
【図１２】従来のＤＭＡ転送制御方式におけるステータスリードのデータフローチャート
【図１３】従来のＤＭＡ転送制御方式の動作を示すフローチャート
【図１４】従来のＤＭＡ転送制御方式における問題点を説明するための図
【符号の説明】
【００５３】
１    ソフトウェア（ＳＷ）
２    ＣＰＵ
３    外部バス
４    ＩＯデバイス
５    メモリ
６    ディスクリプタ領域
７    ステータス領域
８    データ領域
９    ＩＯデバイス
１０  バスブリッジ
１１  内部バス
１２  割込みコントローラ
１３  割込みレジスタ
１４  ＤＭＡエンジン
Des  ディスクリプタ
Dat  ＤＭＡ転送データ
Stw  ステータスライトコマンド
Str  ステータスリードコマンド
Sts  ＤＭＡ転送結果ステータス
Isr  リードレスポンス
【図１】
2010072888.tif 000003
【図２】
2010072888.tif 000004
【図３】
2010072888.tif 000005
【図４】
2010072888.tif 000006
【図５】
2010072888.tif 000007
【図６】
2010072888.tif 000008
【図７】
2010072888.tif 000009
【図８】
2010072888.tif 000010
【図９】
2010072888.tif 000011
【図１０】
2010072888.tif 000012
【図１１】
2010072888.tif 000013
【図１２】
2010072888.tif 000014
【図１３】
2010072888.tif 000015
【図１４】
2010072888.tif 000016