(57)【要約】【課題】既存の機能を有効に利用し、簡単な方法で、割り込み処理によるオーバヘッドを低減させるようにする。【解決手段】  データの入力または出力を制御する入出力デバイスコントローラ１４１−１および１４１−２が設けられ、データを入力するかまたは出力するデバイスを備えるパーソナルコンピュータ１００において、DMAコントローラ１４２−１および１４２−２により、デバイスによるデータのDMA（Direct Memory Access）転送が制御され、DMACマネージメントコントローラ１５１により、メインプロセッサ１１１から取得したデバイスに対するDMA転送の命令を基に、DMAコントローラ１４２−１および１４２−２にデバイスが制御され、さらにそのデータのDMA転送が制御される。本発明は、AV（Audio Visual）機器に適用することができる。【選択図】図５
2006003981.tif 000002
【特許請求の範囲】
【請求項１】
データの入力または出力を制御するデータ入出力制御手段が設けられているデバイスであって、前記データを入力するかまたは出力するデバイスを備える情報処理装置において、
前記データ入出力制御手段に設けられ、前記デバイスによる前記データのDMA（Direct Memory Access）転送を制御するDMAコントローラと、
プロセッサから取得した前記デバイスに対するDMA転送の命令を基に、前記DMAコントローラに前記デバイスによる前記データのDMA転送を制御させるように前記DMAコントローラを制御するコントローラ制御手段と
を含むことを特徴とする情報処理装置。
【請求項２】
前記コントローラ制御手段は、複数の前記デバイスに対する、複数の前記命令を基に、複数の前記デバイスのそれぞれの前記データ入出力制御手段にそれぞれ設けられている、前記DMAコントローラを制御する
ことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記コントローラ制御手段は、前記DMAコントローラからの割り込み処理の要求を受け付けて、その割り込み処理を実行する
ことを特徴とする請求項１に記載の情報処理装置。
【請求項４】
前記コントローラ制御手段は、前記プロセッサから取得した前記デバイスに対するDMA転送の命令に応じた前記データのDMA転送が完了した場合、前記プロセッサに割り込み処理を要求する
ことを特徴とする請求項３に記載の情報処理装置。
【請求項５】
データの入力または出力を制御し、DMA（Direct Memory Access）転送を制御するDMAコントローラを含むデータ入出力制御手段が設けられているデバイスであって、前記データを入力するかまたは出力するデバイスと、メインプロセッサとは別に前記デバイスを制御する制御手段とを備える情報処理装置の情報処理方法において、
前記メインプロセッサから取得した前記デバイスに対するDMA転送の命令を基に、前記DMAコントローラに前記デバイスによる前記データのDMA転送を制御させるように前記DMAコントローラを制御する、前記制御手段により実行される制御ステップを含む
ことを特徴とする情報処理方法。
【請求項６】
データの入力または出力を制御し、DMA（Direct Memory Access）転送を制御するDMAコントローラを含むデータ入出力制御手段が設けられているデバイスであって、前記データを入力するかまたは出力するデバイスと、メインプロセッサとは別に前記デバイスを制御する制御手段とを備える情報処理装置の情報処理用のプログラムにおいて、
前記メインプロセッサから取得した前記デバイスに対するDMA転送の命令を基に、前記DMAコントローラに前記デバイスによる前記データのDMA転送を制御させるように前記DMAコントローラを制御する、前記制御手段により実行される制御ステップを含む
ことを特徴とするコンピュータが読み取り可能なプログラムが記録されている記録媒体。
【請求項７】
データの入力または出力を制御し、DMA（Direct Memory Access）転送を制御するDMAコントローラを含むデータ入出力制御手段が設けられているデバイスであって、前記データを入力するかまたは出力するデバイスと、メインプロセッサとを備える情報処理装置に設けられている、前記メインプロセッサとは別に前記デバイスを制御するコンピュータに、情報処理を行わせるプログラムにおいて、
前記メインプロセッサから取得した前記デバイスに対するDMA転送の命令を基に、前記DMAコントローラに前記デバイスによる前記データのDMA転送を制御させるように前記DMAコントローラを制御する制御ステップを含む
ことを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置および方法、記録媒体、並びにプログラムに関し、特に、割り込み処理によるオーバーヘッドを低減することができるようにした情報処理装置および方法、記録媒体、並びにプログラムに関する。
【背景技術】
【０００２】
従来、パーソナルコンピュータ（以下、PCと称する）における、CPU（Central Processing Unit）などのプロセッサ（以下、メインプロセッサとも称する）およびドライブやキーボードなどのデータを入力するかまたは出力する入出力デバイス（周辺装置）との間で、データが送受信される場合、データ転送方式としてPIO（Program I/O（Input／Output））転送やDMA（Direct Memory Access）転送が用いられている。
【０００３】
図１は、データ転送方式として、DMA転送方式が適用されている従来のPC１の構成の例を示すブロック図である。PC１の全体を制御するメインプロセッサ１１およびRAM(Random Access Memory)などからなるメインメモリ１２が、バス２１を介して相互に接続されている。また、メインプロセッサ１１は、メインメモリ１２にロードされたプログラムに従って各種の処理を実行する。バス２１は、バス３１とも接続されている。
【０００４】
入出力デバイスコントローラ４１−１および入出力デバイスコントローラ４１−２は、バス３１を介して相互に接続されている。
【０００５】
入出力デバイスコントローラ４１−１および入出力デバイスコントローラ４１−２は、それぞれ、図示せぬハードディスクドライブやDVD（Digital Versatile Disk）ドライブなどのデータを入力するかまたは出力する入出力デバイスを制御する。
【０００６】
また、入出力デバイスコントローラ４１−１には、DMAC（Direct Memory Access Controller）４２−１が含まれ、入出力デバイスコントローラ４１−２にはDMAC４２−２が含まれている。DMAC４２−１は、入出力デバイスコントローラ４１−１に制御される、図示せぬ入出力デバイスによるデータのDMA転送を制御する。DMAC４２−２は、入出力デバイスコントローラ４１−２に制御される、図示せぬ入出力デバイスによるデータのDMA転送を制御する。
【０００７】
以下、入出力デバイスコントローラ４１−１および入出力デバイスコントローラ４１−２を個々に区別する必要がないとき、単に、入出力デバイスコントローラ４１と称する。また、同様に、DMAC４２−１およびDMAC４２−２を個々に区別する必要がないとき、単に、DMAC４２と称する。
【０００８】
図２は、PC１における、ソフトウェアの構成の例を示すブロック図である。図２で示されるように、PC１は、オペレーティングシステム（以下、OSと称する）８１、デバイスドライバ８２−１、およびデバイスドライバ８２−２を実行する。
【０００９】
図２における、OS８１は、OSの中核部分として、OSの基本機能を提供する、カーネルである。
【００１０】
デバイスドライバ８２−１は、入出力デバイスコントローラ４１−１を動作させるためのプログラムである。デバイスドライバ８２−２は、入出力デバイスコントローラ４１−２を動作させるためのプログラムである。OS８１は、デバイスドライバ８２−１を介し、入出力デバイスコントローラ４１−１を制御し、デバイスドライバ８２−２を介し、入出力デバイスコントローラ４１−２を制御する。
【００１１】
以下、デバイスドライバ８２−１およびデバイスドライバ８２−２を、個々に区別する必要がない場合、単にデバイスドライバ８２と称する。
【００１２】
図３および図４は、PC１における、従来のDMA転送の処理を説明するフローチャートである。ステップＳ１において、OS８１およびデバイスドライバ８２−１を実行するメインプロセッサ１１は、入出力デバイスコントローラ４１−１のDMAC４２−１に、データをDMA転送させるための所定のコマンド（以下、DMAコマンドと称する）を書き込む。
【００１３】
ステップＳ６１において、メインプロセッサ１１からのDMAコマンドの書き込みを待機している状態にある、入出力デバイスコントローラ４１−１のDMAC４２−１は、ステップＳ１の処理により書き込まれたDMAコマンドを受け付ける。DMAC４２−１は、DMAコマンドがメインプロセッサ１１により書き込まれることで、起動する。
【００１４】
ステップＳ６２において、DMAC４２−１は、書き込まれたDMAコマンドを基に、入出力デバイスコントローラ４１−１を制御し、所定のデータをDMA転送させる。例えば、入出力デバイスコントローラ４１−１が制御する図示せぬデバイスから、メインメモリ１２に、データがDMA転送される。
【００１５】
ステップＳ６３において、DMAC４２−１は、ステップＳ６２の処理によりデータのDMA転送が完了したか否かを判定する。ステップＳ６３において、DMA転送が完了していないと判定された場合、手続きは、ステップＳ６２に戻り、データのDMA転送が繰り返される。例えば、ステップＳ６２における、デバイスから、メインメモリ１２へのデータのDMA転送が完了するまで繰り返し実行される。
【００１６】
ステップＳ６３において、データのDMA転送が完了したと判定された場合、ステップＳ６４に進み、DMAC４２−１は、メインプロセッサ１１に対して、データのDMA転送の完了に対応した割り込み処理の実行を要求する、割り込み信号を出力する。
【００１７】
ステップＳ６４の処理の後、手続きは、ステップＳ６１に戻り、上述した処理が実行される。
【００１８】
ステップＳ２において、OS８１を実行するメインプロセッサ１１は、メインタスクの処理を行う。すなわち、上述した入出力デバイスコントローラ４１−１のDMAC４２−１による、ステップＳ６１乃至ステップＳ６４の処理が実行される一方で、メインタスクの処理が実行される。
【００１９】
ステップＳ３において、OS８１を実行するメインプロセッサ１１は、DMAC４２−１によるステップＳ６４の処理により出力された割り込み（割り込み信号）を受け付ける。
【００２０】
実際は、ステップＳ６４の処理により割り込み信号がメインプロセッサ１１に供給され、またその割り込み信号が有効である場合、メインプロセッサ１１で現在処理中の命令が終了するのを待って、割り込みが受け付けられる。
【００２１】
ステップＳ４において、OS８１を実行するメインプロセッサ１１は、ステップＳ３の処理により、DMAC４２−１からの割り込み信号を受け付けたので、処理中のメインタスクのデータ（プログラムカウンタやスタックポインタなどに記憶されている内容）を退避させる。すなわち、例えば、メインメモリ１２の所定の領域または図示せぬ外部ストレージに、処理中のメインタスクのデータを退避（記憶（記録））させる。
【００２２】
ステップＳ５において、メインプロセッサ１１は、ステップＳ３の処理により受け付けた割り込みに対応する、割り込み処理を行う。
【００２３】
ステップＳ５の割り込み処理が終了すると、図４のステップＳ６において、OS８１およびデバイスドライバ８２−２を実行するメインプロセッサ１１は、入出力デバイスコントローラ４１−２のDMAC４２−２に所定のDMAコマンドを書き込む。
【００２４】
ステップＳ８１において、メインプロセッサ１１からのDMAコマンドの書き込みを待機している状態にある、入出力デバイスコントローラ４１−２のDMAC４２−２は、ステップＳ６の処理により書き込まれたDMAコマンドを受け付ける。DMAC４２−２は、DMAコマンドがメインプロセッサ１１により書き込まれることで、起動する。
【００２５】
ステップＳ８２において、DMAC４２−２は、書き込まれたDMAコマンドを基に、入出力デバイスコントローラ４１−２を制御し、所定のデータをDMA転送させる。例えば、入出力デバイスコントローラ４１−２が制御する図示せぬデバイスから、メインメモリ１２に対して、データがDMA転送される。
【００２６】
ステップＳ８３において、DMAC４２−２は、ステップＳ８２の処理によりデータのDMA転送が完了したか否かを判定する。ステップＳ８３において、DMA転送が完了していないと判定された場合、手続きは、ステップＳ８２に戻り、データのDMA転送が繰り返される。例えば、ステップＳ８２における、デバイスからメインメモリ１２へのデータのDMA転送が完了するまで繰り返し実行される。
【００２７】
ステップＳ８３において、データのDMA転送が完了したと判定された場合、ステップＳ８４に進み、DMAC４２−２は、メインプロセッサ１１に対して、データのDMA転送の完了に対応した割り込み処理の実行を要求する、割り込み信号を出力する。
【００２８】
ステップＳ８４の処理の後、手続きは、ステップＳ８１に戻り、上述した処理が実行される。
【００２９】
ステップＳ７において、OS８１を実行するメインプロセッサ１１は、ステップＳ４の処理において退避させたデータを読み出す。例えば、メインメモリ１２に、処理中のデータを退避（記憶）させていた場合、メインプロセッサ１１は、メインメモリ１２より、退避させていたデータをメインメモリ１２のプログラムを実行するための領域に読み出す。
【００３０】
ステップＳ８において、OS８１を実行するメインプロセッサ１１は、メインタスクの処理を行う。すなわち、上述した入出力デバイスコントローラ４１−２のDMAC４２−２による、ステップＳ８１乃至ステップＳ８４の処理が実行される一方で、メインタスクの処理が実行される。
【００３１】
ステップＳ９において、OS８１を実行するメインプロセッサ１１は、DMAC４２−２によるステップＳ８４の処理により出力された割り込み（割り込み信号）を受け付ける。
【００３２】
ステップＳ１０において、OS８１を実行するメインプロセッサ１１は、ステップＳ９の処理により、DMAC４２−２からの割り込み信号を受け付けたので、処理中のメインタスクのデータを退避させる。例えば、メインメモリ１２の所定の領域または図示せぬ外部ストレージに、処理中のメインタスクのデータを退避（記憶（記録））させる。
【００３３】
ステップＳ１１において、OS８１を実行するメインプロセッサ１１は、ステップＳ９の処理により受け付けた割り込みに対応する、割り込み処理を行う。
【００３４】
ステップＳ１１の割り込み処理が終了すると、ステップＳ１２において、OS８１を実行するメインプロセッサ１１は、ステップＳ１０の処理において退避させたデータを読み出す。例えば、メインメモリ１２に、処理中のデータを退避（記憶）させていた場合、メインプロセッサ１１は、メインメモリ１２より、退避させていたデータをメインメモリ１２のプログラムを実行するための領域に読み出す。
【００３５】
ステップＳ１３において、メインプロセッサ１１は、メインタスクの処理を行い、処理は終了する。
【００３６】
以上のように、通常、入出力デバイスコントローラ４１のDMAC４２による、データのDMA転送においては、１回のデータのDMA転送が完了する毎に、メインプロセッサ１１において割り込み処理が発生していた。例えば、図１の破線の矢印で示されるように、DMAC４２が２つ存在し、それぞれが制御するデバイスにDMA転送を実行させた場合、２回のデータのDMA転送により、メインプロセッサ１１においては、２回の割り込み処理が発生していた。
【００３７】
また、上述したように、メインプロセッサ１１は、割り込み（割り込み信号）の通知を受け取る毎に現在実行中のメインタスクの処理を中断し、割り込み処理を実行しなければならない。このとき、メインタスクの処理から割込み処理への切り替えは、現在処理中のメインタスクの処理を中断した時点で、処理中のデータを外部メモリ（メインメモリ１２）または外部ストレージに退避、記憶（記録）させるため、大きなオーバーヘッドが発生していた。この場合、オーバーヘッドとして、メインプロセッサ１１の負荷が発生し（メインプロセッサ１１が処理を実行し）、メインメモリ１２の所定の領域が占有される。すなわち、PC１のリソースがオーバーヘッドとして使用されることになる。
【００３８】
さらに、例えば、AV（Audio Visual）機器においては、入出力デバイスコントローラが扱うデータはAVストリームデータであり、通常、複数存在し、それぞれから連続的にDMA転送で、データの転送を行わなければならない。
【００３９】
AV機器におけるメインプロセッサは、入出力デバイスコントローラからのDMA転送が完了した場合、割込み処理において、次のDMACの設定および起動を行う必要がある。このため、AV機器においては、たとえ、メインプロセッサの処理能力が高い場合でも、入出力デバイスコントローラからの割込み処理の頻度、割合が共に高くなると、メインプロセッサにおけるメインタスクの処理能力は低下してしまう。この処理能力の低下は、メインプロセッサ、外部メモリ（メインメモリ）間のデータの転送量の軽減のために、入出力デバイスコントローラの近くにローカルメモリを配置したとしても防ぐことはできない。
【００４０】
メモリへのデータの転送を減らす技術として、例えば、特許文献１には、主プロセッサ、メモリ、および複数の入出力デバイス（入出力コントローラ）間においてデータの転送を行う、主プロセッサとは独立した入出力プロセッサを設ける技術が開示されている。
【特許文献１】特開平２−２８４２５２号公報
【発明の開示】
【発明が解決しようとする課題】
【００４１】
特許文献１に記載の技術における、入出力プロセッサは、入出力デバイス（入出力コントローラ）からの転送の要求を調停し、入出力デバイスコントローラのDMACの代わりに、外部メモリとの間で、DMA転送を行うことを目的としたプロセッサであり、これにより、入出力デバイスのDMACの開発の削減が効果として挙げられている。
【００４２】
しかしながら、現在、入出力デバイスコントローラの多くは、すでにDMACを内蔵している。例えば、一般的には、PCI（Peripheral Component Interconnect）デバイスであれば、バスマスタの機能を有するDMACが内蔵されている。
【００４３】
また、汎用のバス、例えば、PCIバスにおいては、GNT/REQ機構のような、バスアービトレーションの機能も実装されている。
【００４４】
さらに、PCIデバイスにおいては、PCIデバイス側のDMAC（バスマスタ機能）を利用しなければ、PCIデバイス側からのバースト転送をすることはできなくなり、バスの転送帯域は低下してしまう。
【００４５】
また、図２で示されるように、既存の入出力デバイスコントローラ４１に対するデバイスドライバ８２も、すでに存在している。
【００４６】
特許文献１に記載の入出力プロセッサによる方法で、既存の入出力デバイスコントローラ、例えば、PCIデバイスを使用する場合には、ハードウェアおよびソフトウェアの両面での再設計が必要となってしまう。したがって、入出力プロセッサによる方法においては、今までの組み込み技術には有効であるが、汎用のPCや汎用のPCの技術を応用したアーキテクチャ技術、例えば、CELLのアーキテクチャには該当しない。
【００４７】
以上のように、既存の機能を有効に利用せず、未使用とすることは、有益ではないという課題があった。
【００４８】
本発明は、このような状況に鑑みてなされたものであり、既存の機能を有効に利用し、簡単な方法で、割り込み処理によるオーバーヘッドを低減させることができるようにするものである。
【課題を解決するための手段】
【００４９】
本発明の情報処理装置は、データ入出力制御手段に設けられ、デバイスによるデータのDMA（Direct Memory Access）転送を制御するDMAコントローラと、プロセッサから取得したデバイスに対するDMA転送の命令を基に、DMAコントローラにデバイスによるデータのDMA転送を制御させるようにDMAコントローラを制御するコントローラ制御手段とを含むことを特徴とする。
【００５０】
コントローラ制御手段は、複数のデバイスに対する、複数の命令を基に、複数のデバイスのそれぞれのデータ入出力制御手段にそれぞれ設けられている、DMAコントローラを制御するようにすることができる。
【００５１】
コントローラ制御手段は、DMAコントローラからの割り込み処理の要求を受け付けて、その割り込み処理を実行するようにすることができる。
【００５２】
コントローラ制御手段は、プロセッサから取得したデバイスに対するDMA転送の命令に応じたデータのDMA転送が完了した場合、プロセッサに割り込み処理を要求するようにすることができる。
【００５３】
本発明の情報処理方法は、メインプロセッサから取得したデバイスに対するDMA転送の命令を基に、DMAコントローラにデバイスによるデータのDMA転送を制御させるようにDMAコントローラを制御する、制御手段により実行される制御ステップを含むことを特徴とする。
【００５４】
本発明の記録媒体のプログラムは、メインプロセッサから取得したデバイスに対するDMA転送の命令を基に、DMAコントローラにデバイスによるデータのDMA転送を制御させるようにDMAコントローラを制御する、制御手段により実行される制御ステップを含むことを特徴とする。
【００５５】
本発明のプログラムは、メインプロセッサから取得したデバイスに対するDMA転送の命令を基に、DMAコントローラにデバイスによるデータのDMA転送を制御させるようにDMAコントローラを制御する制御ステップをコンピュータに実行させる。
【００５６】
本発明の情報処理装置においては、データ入出力制御手段に設けられ、デバイスによるデータのDMA（Direct Memory Access）転送が制御され、プロセッサから取得したデバイスに対するDMA転送の命令を基に、DMAコントローラにデバイスによるデータのDMA転送を制御させるようにDMAコントローラが制御される。
【００５７】
本発明の情報処理方法、記録媒体、およびプログラムにおいては、メインプロセッサから取得したデバイスに対するDMA転送の命令を基に、DMAコントローラにデバイスによるデータのDMA転送を制御させるようにDMAコントローラが制御される。
【発明の効果】
【００５８】
本発明によれば、データを転送することができる。また、各デバイスの既存の機能を有効に利用し、簡単な方法で、割り込み処理によるオーバーヘッドを低減させることができる。
【発明を実施するための最良の形態】
【００５９】
以下に本発明の実施の形態を説明するが、請求項に記載の構成要件と、発明の実施の形態における具体例との対応関係を例示すると、次のようになる。この記載は、請求項に記載されている発明をサポートする具体例が、発明の実施の形態に記載されていることを確認するためのものである。従って、発明の実施の形態中には記載されているが、構成要件に対応するものとして、ここには記載されていない具体例があったとしても、そのことは、その具体例が、その構成要件に対応するものではないことを意味するものではない。逆に、具体例が構成要件に対応するものとしてここに記載されていたとしても、そのことは、その具体例が、その構成要件以外の構成要件には対応しないものであることを意味するものでもない。
【００６０】
さらに、この記載は、発明の実施の形態に記載されている具体例に対応する発明が、請求項に全て記載されていることを意味するものではない。換言すれば、この記載は、発明の実施の形態に記載されている具体例に対応する発明であって、この出願の請求項には記載されていない発明の存在、すなわち、将来、分割出願されたり、補正により追加される発明の存在を否定するものではない。
【００６１】
請求項１に記載の情報処理装置は、データの入力または出力を制御するデータ入出力制御手段（例えば、図５の入出力デバイスコントローラ１４１−１）が設けられているデバイスであって、データを入力するかまたは出力するデバイスを備える情報処理装置（例えば、図５のパーソナルコンピュータ１００）において、データ入出力制御手段に設けられ、デバイスによるデータのDMA（Direct Memory Access）転送を制御するDMAコントローラ（例えば、図５のDMAC１４２−１）と、プロセッサ（例えば、図５のメインプロセッサ１１１）から取得したデバイスに対するDMA転送の命令を基に、DMAコントローラにデバイスによるデータのDMA転送を制御させるようにDMAコントローラを制御するコントローラ制御手段（例えば、図５のDMACマネジメントコントローラ１５１）とを含むことを特徴とする。
【００６２】
請求項２に記載の情報処理装置は、コントローラ制御手段が、複数のデバイスに対する、複数の命令（例えば、図５のDMAコマンドリスト１５２）を基に、複数のデバイスのそれぞれのデータ入出力制御手段にそれぞれ設けられている、DMAコントローラを制御するようにすることができる。
【００６３】
請求項３に記載の情報処理装置は、コントローラ制御手段が、DMAコントローラからの割り込み処理の要求を受け付けて（例えば、図７のステップＳ１３３）、その割り込み処理を実行する（例えば、図７のステップＳ１３４）ようにすることができる。
【００６４】
請求項４に記載の情報処理装置は、コントローラ制御手段は、プロセッサから取得したデバイスに対するDMA転送の命令（例えば、図５のDMAコマンドリスト１５２）に応じたデータのDMA転送が完了した場合、プロセッサに割り込み処理を要求する（例えば、図８のステップＳ１３８）ようにすることができる。
【００６５】
請求項５に記載の情報処理方法は、データの入力または出力を制御し、DMA（Direct Memory Access）転送を制御するDMAコントローラ（例えば、図５のDMAC１４２−１）を含むデータ入出力制御手段（例えば、図５の入出力デバイスコントローラ１４１−１）が設けられているデバイスであって、データを入力するかまたは出力するデバイスと、メインプロセッサ（例えば、図５のメインプロセッサ１１１）とは別にデバイスを制御する制御手段（例えば、図５のDMACマネジメントコントローラ１５１）とを備える情報処理装置（例えば、図５のパーソナルコンピュータ１００）の情報処理方法であって、メインプロセッサから取得したデバイスに対するDMA転送の命令（例えば、図５のDMAコマンドリスト１５２）を基に、DMAコントローラにデバイスによるデータのDMA転送を制御させるようにDMAコントローラを制御する、制御手段により実行される制御ステップ（例えば、図７のステップＳ１３２）を含むことを特徴とする。
【００６６】
請求項６に記載の記録媒体のプログラムは、データの入力または出力を制御し、DMA（Direct Memory Access）転送を制御するDMAコントローラ（例えば、図５のDMAC１４２−１）を含むデータ入出力制御手段（例えば、図５の入出力デバイスコントローラ１４１−１）が設けられているデバイスであって、データを入力するかまたは出力するデバイスと、メインプロセッサ（例えば、図５のメインプロセッサ１１１）とは別にデバイスを制御する制御手段（例えば、図５のDMACマネジメントコントローラ１５１）とを備える情報処理装置（例えば、図５のパーソナルコンピュータ１００）の情報処理用のプログラムであって、メインプロセッサから取得したデバイスに対するDMA転送の命令（例えば、図５のDMAコマンドリスト１５２）を基に、DMAコントローラにデバイスによるデータのDMA転送を制御させるようにDMAコントローラを制御する、制御手段により実行される制御ステップ（例えば、図７のステップＳ１３２）を含むことを特徴とする。
【００６７】
請求項７に記載のプログラムは、データの入力または出力を制御し、DMA（Direct Memory Access）転送を制御するDMAコントローラ（例えば、図５のDMAC１４２−１）を含むデータ入出力制御手段（例えば、図５の入出力デバイスコントローラ１４１−１）が設けられているデバイスであって、データを入力するかまたは出力するデバイスと、メインプロセッサ（例えば、図５のメインプロセッサ１１１）とを備える情報処理装置（例えば、図５のパーソナルコンピュータ１００）に設けられる、メインプロセッサとは別にデバイスを制御するコンピュータ（例えば、図５のDMACマネジメントコントローラ１５１）に、情報処理を行わせるプログラムであって、メインプロセッサから取得したデバイスに対するDMA転送の命令（例えば、図５のDMAコマンドリスト１５２）を基に、DMAコントローラにデバイスによるデータのDMA転送を制御させるようにDMAコントローラを制御する制御ステップ（例えば、図７のステップＳ１３２）を実行させる。
【００６８】
以下に、本発明の実施の形態について図面を参照して説明する。
【００６９】
図５は、本発明を適用したPC１００の構成の例を示すブロック図である。PC１００の全体を制御するメインプロセッサ１１１およびRAM(Random Access Memory)などからなるメインメモリ１１２は、バス１２１を介して相互に接続されている。メインプロセッサ１１１は、メインメモリ１１２にロードされたプログラムに従って各種の処理を実行する。また、バス１２１は、バス１３１とも接続されている。
【００７０】
入出力デバイスコントローラ１４１−１、入出力デバイスコントローラ１４１−２、DMACマネジメントコントローラ１５１、およびドライブ１５３が、バス１３１を介して相互に接続されている。
【００７１】
入出力デバイスコントローラ１４１−１および入出力デバイスコントローラ１４１−２は、それぞれ、図示せぬハードディスクドライブ、DVDドライブなどの光ディスクドライブ、または半導体メモリカードなどのデータを入力するかまたは出力する入出力デバイスを制御する。
【００７２】
また、入出力デバイスコントローラ１４１−１には、DMAC１４２−１が含まれ、入出力デバイスコントローラ１４１−２には、DMAC１４２−２が含まれている。DMAC１４２−１は、入出力デバイスコントローラ１４１−１に制御される、図示せぬ入出力デバイスによるデータのDMA転送を制御する。DMAC１４２−２は、入出力デバイスコントローラ１４１−２に制御される、図示せぬ入出力デバイスによるデータのDMA転送を制御する。
【００７３】
以下、入出力デバイスコントローラ１４１−１および入出力デバイスコントローラ１４１−２を個々に区別する必要がないとき、単に、入出力デバイスコントローラ１４１と称する。また、同様に、DMAC１４２−１およびDMAC１４２−２を個々に区別する必要がないとき、単に、DMAC１４２と称する。
【００７４】
なお、ドライブは、着脱可能としてもよく、また、ドライブの記録媒体は、着脱可能とすることができる。また、以下、ドライブが２つの場合を例に説明するが、ドライブの数は、本発明を限定するものではなく、任意の数のドライブを設けることができる。
【００７５】
DMACマネジメントコントローラ１５１は、DMAC１４２によるデータのDMA転送を制御する。DMACマネジメントコントローラ１５１には、メインプロセッサ１１１により生成され、DMA転送のためのDMAコマンドが複数含まれるDMAコマンドリスト１５２が登録（設定）される。換言すれば、DMACマネジメントコントローラ１５１は、メインプロセッサ１１１により生成された、DMA転送のための複数のDMAコマンドからなるDMAコマンドリスト１５２を取得する。
【００７６】
DMACマネジメントコントローラ１５１は、登録（設定）されたDMAコマンドリスト１５２を基に、DMAC１４２によるデータのDMA転送を制御する。DMAコマンドリスト１５２の詳細は、図９を参照して後述する。
【００７７】
なお、入出力デバイスコントローラ１４１からの割り込み信号線は、バス１３１を介し、DMACマネジメントコントローラ１５１に接続される。また、DMACマネジメントコントローラ１５１からの割り込み信号線は、バス１２１およびバス１３１を介し、メインプロセッサ１１１に接続される。より具体的には、バス１２１が準拠する規格およびバス１３１が準拠する規格に準じて、割り込み信号線は、DMACマネジメントコントローラ１５１とメインプロセッサ１１１とを接続する。
【００７８】
なお、DMAC１４２は、バス１２１およびバス１３１の固有の機構を用いてアービトレーションを行う。例えば、バス１３１がPCIバスである場合、DMAC１４２は、PCIバスであるバス１３１に直接接続される。この場合、PCIバスコントローラである入出力デバイスコントローラ１４１の割り込み信号線（PCI割り込み通知信号線INT）は、DMACマネジメントコントローラ１５１に接続され、入出力デバイスコントローラ１４１の他の信号線は、PCIバスであるバス１３１に接続される。
【００７９】
言い換えれば、入出力デバイスコントローラ１４１に制御されるデバイス信号線のうち、PCI割り込み通知信号線INT以外の信号線が相互に接続される。アービトレーションに必要なREQおよびGNTの信号線が相互に接続されるので、PCIバスであるバス１３１に接続されるデバイスにおいてPCIバスアービトレーションが実行される。
【００８０】
このようにすると、入出力デバイスコントローラ１４１からの割り込み信号（割り込み要求）は、メインプロセッサ１１１に直接供給されない（入出力デバイスコントローラ１４１が、メインプロセッサ１１１に直接割り込み要求がなされない）。メインプロセッサ１１１への割り込み要求は、DMACマネジメントコントローラ１５１を介してなされる。
【００８１】
ドライブ１５３には、磁気ディスク、光ディスク、光磁気ディスク、或いは半導体メモリなどのリムーバブルメディア１５４が適宜装着され、それらから読み出されたコンピュータプログラムが、必要に応じてメインメモリ１１２に読み出されるか、またはDMACマネジメントコントローラ１５１に供給される。
【００８２】
図６は、PC１００における、ソフトウェアの構成の例を示すブロック図である。PC１００のメインプロセッサ１１１は、OS１８１、デバイスドライバ１８２−１、デバイスドライバ１８２−２、およびDMACマネジメントコントローラドライバ１８３を実行する。
【００８３】
図６における、OS１８１は、OSの中核部分として、例えば、ハードウェア（入出力デバイスコントローラ１４１）の管理、タスクの管理、割り込みの管理、およびメモリ（メインメモリ１１２）の割り当ての管理などのOSの基本機能を提供するカーネルである。
【００８４】
デバイスドライバ１８２−１は、入出力デバイスコントローラ１４１−１により制御されるデバイスを動作させるためのプログラムである。デバイスドライバ１８２−１は、入出力デバイスコントローラ１４１−１にデバイスの動作を指示したり、入出力デバイスコントローラ１４１−１により制御されるデバイスの状態を取得したりする。
【００８５】
デバイスドライバ１８２−２は、入出力デバイスコントローラ１４１−２により制御されるデバイスを動作させるためのプログラムである。デバイスドライバ１８２−２は、入出力デバイスコントローラ１４１−２にデバイスの動作を指示したり、入出力デバイスコントローラ１４１−２により制御されるデバイスの状態を取得したりする。
【００８６】
以下、デバイスドライバ１８２−１およびデバイスドライバ１８２−２を、個々に区別する必要がない場合、単にデバイスドライバ１８２と称する。
【００８７】
DMACマネジメントコントローラドライバ１８３は、DMACマネジメントコントローラ１５１用のデバイスドライバであり、DMACマネジメントコントローラ１５１を制御するためのプログラムである。より具体的には、DMACマネジメントコントローラドライバ１８３は、DMACマネジメントコントローラ１５１に動作を指示したり、DMACマネジメントコントローラ１５１の状態を取得したりする。
【００８８】
また、DMACマネジメントコントローラドライバ１８３は、入出力デバイスコントローラ１４１のデバイスドライバ１８２からの、入出力デバイスコントローラ１４１のDMAC１４２へのアクセス要求を受け取り記録する。DMACマネジメントコントローラドライバ１８３は、所定の期間毎に、記録された入出力デバイスコントローラ１４１のデバイスドライバ１８２からの、入出力デバイスコントローラ１４１のDMAC１４２へのアクセス要求を基に、後述するDMAコマンドリスト１５２を生成する。DMACマネジメントコントローラドライバ１８３は、生成したDMAコマンドリスト１５２をDMACマネジメントコントローラ１５１に設定する。
【００８９】
DMACマネジメントコントローラドライバ１８３は、DMACマネジメントコントローラ１５１に設定したDMAコマンドリスト１５２に基づくDMA転送の処理が終了した場合、DMACマネジメントコントローラ１５１からの割り込み処理の要求を受け付ける。この場合、DMACマネジメントコントローラドライバ１８３は、割り込み処理の要求を受け付けた旨をデバイスドライバ１８２−１またはデバイスドライバ１８２−２に通知する。すると、この通知を受けたデバイスドライバ１８２−１またはデバイスドライバ１８２−２は、割り込み処理の要求に応じた割り込み処理を実行する。
【００９０】
このようにすることで、メインプロセッサ１１１への割り込み処理の要求の回数をより少なくすることができる。その結果、割り込み処理に伴うオーバーヘッドの増加による、メインプロセッサ１１１の実質的な処理能力の低下を軽減することができる。
【００９１】
OS１８１は、デバイスドライバ１８２−１およびDMACマネジメントコントローラドライバ１８３を介し、入出力デバイスコントローラ１４１−１を制御し、デバイスドライバ１８２−２およびDMACマネジメントコントローラドライバ１８３を介し、入出力デバイスコントローラ１４１−２を制御する。
【００９２】
また、OS１８１は、デバイスドライバ１８２−１またはデバイスドライバ１８２−２、およびDMACマネジメントコントローラドライバ１８３を介し、DMACマネジメントコントローラ１５１を制御する。
【００９３】
図７および図８は、PC１００における、DMA転送の処理を説明するフローチャートである。なお、DMACマネジメントコントローラ１５１は、専用のハードウェアから構成するようにしても良く、制御プログラムを実行することにより、以下に説明する処理を実行するようにしても良い。ステップＳ１０１において、OS１８１を実行するメインプロセッサ１１１は、DMAコマンドリスト１５２を生成する。
【００９４】
図９は、DMAコマンドリスト１５２の例を示す図である。DMAコマンドリスト１５２には、DMAC１４２にデータのDMA転送を実行させるためのコマンド（DMAコマンド）が含まれている。DMAコマンドは、DMA転送を実行させるデバイスを特定するデバイス特定情報、DMA転送によるデータの転送元を示す転送元情報、DMA転送によるデータの転送先を示す転送先情報、およびDMA転送されるデータのデータ量を示すデータ量情報を含む。例えば、図９で示されるように、DMAコマンドは、“DID，SRS ADR,DEST ADR,SIZE”と記述される。
【００９５】
図９で示されるDMAコマンドのDID（Device Identification）は、DMA転送を実行させるデバイスを特定するデバイス特定情報の一例であり、入出力デバイスコントローラ１４１−１によって制御される入出力デバイスの識別子（割り込み番号）である。
【００９６】
図９で示されるDMAコマンドのSRS ADR（Source Address）は、DMA転送によるデータの転送元を示す転送元情報の一例である。また、図９で示されるDMAコマンドのDEST ADR（Destination Address）は、DMA転送によるデータの転送先を示す転送先情報の一例である。図９で示されるDMAコマンドのSIZE（Transfer Size）は、DMA転送されるデータのデータ量を示すデータ量情報の一例である。
【００９７】
例えば、DMAC１４２−１が設けられている入出力デバイスコントローラ１４１−１に制御されるデバイスからメインメモリ１１２にデータを転送する場合、DMAコマンドのDIDには、入出力デバイスコントローラ１４１−１に制御されるデバイスの識別子（割り込み番号）が配置され、DMAコマンドのSRS ADRには、データの転送元であるデバイスにおける記録空間のアドレスが配置され、DMAコマンドのDEST ADRには、データの転送先であるメインメモリ１１２の記憶空間のアドレスが配置され、そして、DMAコマンドのSIZEには、DMAC１４２−１が設けられている入出力デバイスコントローラ１４１−１に制御されるデバイスからメインメモリ１１２にDMA転送されるデータのデータ量（サイズ）が配置される。
【００９８】
また、例えば、メインメモリ１１２からDMAC１４２−２が設けられている入出力デバイスコントローラ１４１−２に制御されるデバイスにデータを転送する場合、DMAコマンドのDIDには、入出力デバイスコントローラ１４１−２に制御されるデバイスの識別子（割り込み番号）が配置され、DMAコマンドのSRS ADRには、データの転送元であるメインメモリ１１２の記憶空間のアドレスが配置され、DMAコマンドのDEST ADRには、データの転送先であるデバイスにおける記録空間のアドレスが配置され、そして、DMAコマンドのSIZEには、メインメモリ１１２からDMAC１４２−２が設けられている入出力デバイスコントローラ１４１−２に制御されるデバイスにDMA転送されるデータのデータ量（サイズ）が配置される。
【００９９】
図９で示されるDMAコマンドリスト１５２における“notify”は、DMACマネジメントコントローラ１５１に、メインプロセッサ１１１宛てに、DMAコマンドリスト１５２により指示されたDMA転送の処理が完了したことを通知させるコマンドである。DMA転送の処理が完了したことを通知するDMAコマンドリスト完了通知は、メインプロセッサ１１１に対する割り込み処理の要求でもある。
【０１００】
なお、DMAコマンドリスト１５２に含まれるDMAコマンドの表記方法は、SpecCに準じる。
【０１０１】
ステップＳ１０２において、OS１８１、デバイスドライバ１８２、およびDMACマネジメントコントローラ１５１を実行するメインプロセッサ１１１は、ステップＳ１０１の処理により生成したDMAコマンドリスト１５２をDMACマネジメントコントローラ１５１に登録（設定）する。すなわち、DMACマネジメントコントローラ１５１を実行するメインプロセッサ１１１は、バス１２１およびバス１３１を介して、DMAコマンドリスト１５２をDMACマネジメントコントローラ１５１に供給する。
【０１０２】
ステップＳ１３１において、メインプロセッサ１１１からのDMAコマンドリスト１５２の登録を待機している状態にある、DMACマネジメントコントローラ１５１は、ステップＳ１０２の処理により送信されてきた、DMAコマンドリスト１５２を受け付ける。DMACマネジメントコントローラ１５１は、バス１２１およびバス１３１を介して、メインプロセッサ１１１から送信されてきたDMAコマンドリスト１５２を受信（取得）して、取得したDMAコマンドリスト１５２をその内部に記憶する。
【０１０３】
DMACマネジメントコントローラ１５１は、DMAコマンドリスト１５２を取得すると、取得したDMAコマンドリスト１５２に記述されているDMAコマンドに従って、DMAC１４２−１およびDMAC１４２−２を制御し、DMAC１４２−１またはDMAC１４２−２に、データのDMA転送を制御させる。
【０１０４】
以下、DMAコマンドリスト１５２に入出力デバイスコントローラ１４１−１（に制御されるデバイス）に対するDMAコマンドおよび入出力デバイスコントローラ１４１−２（に制御されるデバイス）に対するDMAコマンドが記述されている場合を例に、説明する。
【０１０５】
ステップＳ１３２において、DMACマネジメントコントローラ１５１は、ステップＳ１３１の処理で受け付けた（登録された）DMAコマンドリスト１５２を基に、入出力デバイスドライバコントローラ１４１−１のDMAC１４２−１に、図９で示される入出力ドライバコントローラ１４１−１のDMAコマンド“DID，SRS ADR,DEST ADR,SIZE”を書き込む。すなわち、例えば、DMACマネジメントコントローラ１５１は、取得して内部に記憶されているDMAコマンドリスト１５２から、先頭から順にDMAコマンドを読み出すので、ステップＳ１３２において、DMACマネジメントコントローラ１５１は、内部に記憶されているDMAコマンドリスト１５２の先頭のDMAコマンドを読み出す。読み出したDMAコマンドのデバイス特定情報が入出力デバイスコントローラ１４１−１によって制御されるデバイスを特定するものである場合、DMACマネジメントコントローラ１５１は、入出力デバイスコントローラ１４１−１のDMAC１４２−１に、読み出したDMAコマンドを書き込む。
【０１０６】
ステップＳ１６１において、DMACマネジメントコントローラ１５１からのDMAコマンドの書き込みを待機している状態にある、入出力デバイスコントローラ１４１−１のDMAC１４２−１は、ステップＳ１３２の処理により書き込まれたDMAコマンドを受け付ける。DMAC１４２−１は、DMAコマンドがDMACマネジメントコントローラ１５１により書き込まれることで、起動する。
【０１０７】
ステップＳ１６２において、DMAC１４２−１は、書き込まれたDMAコマンドを基に、入出力デバイスコントローラ１４１−１を制御することで、入出力デバイスコントローラ１４１−１に制御されるデバイスを制御し、デバイスに所定のデータをDMA転送させる。例えば、入出力デバイスコントローラ１４１−１が制御する図示せぬデバイスから、メインメモリ１１２にデータがDMA転送される。
【０１０８】
例えば、DMAC１４２−１は、DMAコマンドに記述されている、DMA転送によるデータの転送元を示す転送元情報、DMA転送によるデータの転送先を示す転送先情報、およびDMA転送されるデータのデータ量を示すデータ量情報を基に、入出力デバイスコントローラ１４１−１に制御されるデバイスにデータをDMA転送させる。より具体的には、DMAコマンドの転送元情報が、入出力デバイスコントローラ１４１−１に制御されるデバイスにおける記録空間のアドレスを示し、DMAコマンドの転送先情報が、メインメモリ１１２の記憶空間のアドレスを示す場合、DMAC１４２−１は、入出力デバイスコントローラ１４１−１に制御されるデバイスに、そのデバイスからメインメモリ１１２に（デバイスのアドレスで特定されるデータをメインメモリ１１２のアドレスで特定される領域に）DMA転送させる。
【０１０９】
ステップＳ１６３において、DMAC１４２−１は、ステップＳ１６２の処理によりデータのDMA転送が完了したか否かを判定する。すなわち、DMAC１４２−１は、DMAコマンドのデータ量情報に記述されたデータ量のデータがステップＳ１６２の処理によりDMA転送されたか否かを判定する。
【０１１０】
ステップＳ１６３において、DMA転送が完了していないと判定された場合、手続きは、ステップＳ１６２に戻り、データの転送が繰り返される。例えば、ステップＳ１６２における、デバイスからメインメモリ１１２へのデータのDMA転送が完了するまで繰り返し実行される。
【０１１１】
ステップＳ１６３において、DMA転送が完了したと判定された場合、ステップＳ１６４に進み、DMAC１４２−１は、図５の破線の矢印で示されるように、DMACマネジメントコントローラ１５１に割り込み処理を要求する割り込み信号を、DMACマネジメントコントローラ１５１に出力する。
【０１１２】
入出力デバイスコントローラ１４１の割り込み信号線は、上述したように、DMACマネジメントコントローラ１５１に接続されているため、入出力デバイスコントローラ１４１からのDMA転送が完了したことを示す割り込み信号（割り込み通知）は、メインプロセッサ１１１には通知されず、DMACマネジメントコントローラ１５１に通知される。
【０１１３】
ステップＳ１６４の処理の後、手続きは、ステップＳ１６１に戻り、入出力デバイスコントローラ１４１−１のDMAC１４２−１は、DMACマネジメントコントローラ１５１からのDMAコマンドの書き込みを待機している状態に戻り、上述した処理が繰り返される。
【０１１４】
ステップＳ１３３において、DMACマネジメントコントローラ１５１は、ステップＳ１６４の処理により出力された割り込み信号（割り込み）（割り込み処理の要求）を受け付ける。
【０１１５】
ステップＳ１３４において、DMACマネジメントコントローラ１５１は、ステップＳ１３３の処理により受け付けた割り込みに対応する、割り込み処理を行う。例えば、DMACマネジメントコントローラ１５１は、DMAC１４２−１から割り込み処理の要求を受けたことを記憶する。
【０１１６】
図８のステップＳ１３５において、DMACマネジメントコントローラ１５１は、ステップＳ１３１の処理で受け付けた（登録された）DMAコマンドリスト１５２を基に、入出力デバイスドライバコントローラ１４１−２のDMAC１４２−２に、図９で示される入出力ドライバコントローラ１４１−２のDMAコマンド“DID，SRS ADR,DEST ADR,SIZE”を書き込む。
【０１１７】
例えば、ステップＳ１３５において、DMACマネジメントコントローラ１５１は、内部に記憶されているDMAコマンドリスト１５２の先頭から２番目のDMAコマンドを読み出す。読み出したDMAコマンドのデバイス特定情報が入出力デバイスコントローラ１４１−２によって制御されるデバイスを特定するものである場合、DMACマネジメントコントローラ１５１は、入出力デバイスコントローラ１４１−２のDMAC１４２−２に読み出したDMAコマンドを書き込む。
【０１１８】
ステップＳ１８１において、DMACマネジメントコントローラ１５１からのDMAコマンドの書き込みを待機している状態にある、入出力デバイスコントローラ１４１−２のDMAC１４２−２は、ステップＳ１３５の処理により書き込まれたDMAコマンドを受け付ける。DMAC１４２−２は、DMAコマンドがDMACマネジメントコントローラ１５１により書き込まれることで、起動する。
【０１１９】
ステップＳ１８２において、DMAC１４２−２は、書き込まれたDMAコマンドを基に、入出力デバイスコントローラ１４１−２を制御することで、入出力デバイスコントローラ１４１−２に制御されるデバイスを制御し、デバイスに所定のデータをDMA転送させる。例えば、入出力デバイスコントローラ１４１−２が制御する図示せぬデバイスから、メインメモリ１１２にデータがDMA転送される。
【０１２０】
例えば、DMAC１４２−２は、DMAコマンドに記述されている、DMA転送によるデータの転送元を示す転送元情報、DMA転送によるデータの転送先を示す転送先情報、およびDMA転送されるデータのデータ量を示すデータ量情報を基に、入出力デバイスコントローラ１４１−２に制御されるデバイスにデータをDMA転送させる。より具体的には、DMAコマンドの転送元情報が、入出力デバイスコントローラ１４１−２に制御されるデバイスにおける記録空間のアドレスを示し、DMAコマンドの転送先情報が、メインメモリ１１２の記憶空間のアドレスを示す場合、DMAC１４２−２は、入出力デバイスコントローラ１４１−２に制御されるデバイスに、そのデバイスからメインメモリ１１２に（デバイスのアドレスで特定されるデータをメインメモリ１１２のアドレスで特定される領域に）DMA転送させる。
【０１２１】
なお、例えば、DMAコマンドの転送元情報が、メインメモリ１１２の記憶空間のアドレスを示し、DMAコマンドの転送先情報が、入出力デバイスコントローラ１４１−２に制御されるデバイスにおける記録空間のアドレスを示す場合、DMAC１４２−２は、入出力デバイスコントローラ１４１−２に制御されるデバイスに、メインメモリ１１２からそのデバイスに（メインメモリ１１２のアドレスで特定される領域に記憶されているデータをデバイスのアドレスで特定される領域に）DMA転送させる。
【０１２２】
ステップＳ１８３において、DMAC１４２−２は、ステップＳ１８２の処理によりデータのDMA転送が完了したか否かを判定する。すなわち、DMAC１４２−２は、DMAコマンドのデータ量情報に記述されたデータ量のデータがステップＳ１８２の処理によりDMA転送されたか否かを判定する。
【０１２３】
ステップＳ１８３において、DMA転送が完了していないと判定された場合、手続きは、ステップＳ１８２に戻り、データの転送が繰り返される。例えば、ステップＳ１８２における、デバイスからメインメモリ１１２へのデータのDMA転送が完了するまで繰り返し実行される。
【０１２４】
ステップＳ１８３において、DMA転送が完了したと判定された場合、ステップＳ１８４に進み、DMAC１４２−２は、図５の破線の矢印で示されるように、DMACマネジメントコントローラ１５１に割り込み処理を要求する割り込み信号を、DMACマネジメントコントローラ１５１に出力する。
【０１２５】
ステップＳ１８４の処理の後、手続きは、ステップＳ１８１に戻り、入出力デバイスコントローラ１４１−２のDMAC１４２−２は、DMACマネジメントコントローラ１５１からのDMAコマンドの書き込みを待機している状態に戻り、上述した処理が繰り返される。
【０１２６】
ステップＳ１３６において、DMACマネジメントコントローラ１５１は、ステップＳ１８４の処理により出力された割り込み（割り込み信号）（割り込み処理の要求）を受け付ける。
【０１２７】
ステップＳ１３７において、DMACマネジメントコントローラ１５１は、ステップＳ１３６の処理により受け付けた割り込みに応じた、割り込み処理を行う。例えば、DMACマネジメントコントローラ１５１は、DMAC１４２−２から割り込み処理の要求を受けたことを記憶する。
【０１２８】
ステップＳ１３８において、DMACマネジメントコントローラ１５１は、メインプロセッサ１１１により登録（設定）されたDMAコマンドリスト１５２（におけるDMAコマンド）で指示された処理が完了したことを示す割り込み信号をメインプロセッサ１１１に出力する。
【０１２９】
例えば、ステップＳ１３８において、DMACマネジメントコントローラ１５１は、内部に記憶されているDMAコマンドリスト１５２の先頭から３番目のDMAコマンドを読み出す。DMAコマンドが“notify”である場合、DMACマネジメントコントローラ１５１は、メインプロセッサ１１１に、割り込み処理の要求として、DMAコマンドリスト１５２により指示されたDMA転送の処理が完了したことを通知する（割り込み信号を出力する）。
【０１３０】
ここで、上述したように、バス１２１およびバス１３１を介して、DMACマネジメントコントローラ１５１からの割り込みを通知する割り込み信号が、メインプロセッサ１１１に接続されているので、DMACマネジメントコントローラ１５１は、メインプロセッサ１１１に割り込みの発生を通知することができる（割り込みの処理を要求することができる）。
【０１３１】
図７のステップＳ１０３において、OS１８１を実行するメインプロセッサ１１１は、メインタスクの処理を行う。すなわち、上述したDMAマネジメントコントローラ１５１によるステップＳ１３１乃至ステップＳ１３８の処理、入出力デバイスコントローラ１４１−１のDMAC１４２−１によるステップＳ１６１乃至ステップＳ１６４の処理、および入出力デバイスコントローラ１４１−２のDMAC１４２−２によるステップＳ１８１乃至ステップＳ１８４の処理が実行される一方で、メインタスクの処理が実行される。
【０１３２】
ステップＳ１０４において、OS１８１、デバイスドライバ１８２、およびDMACマネジメントコントローラドライバ１８３を実行するメインプロセッサ１１１は、ステップＳ１３８の処理により出力された割り込み（割り込み信号）を受け付ける。
【０１３３】
以上のように、入出力デバイスコントローラ１４１からの割り込み信号は直接メインプロセッサ１１１に通知されず、DMACマネジメントコントローラ１５１を介して行われることになる。
【０１３４】
メインプロセッサ１１１は、複数の入出力デバイスコントローラ１４１のDMAC１４２に対する一連の指示を、バス１２１およびバス１３２を介し、DMACマネジメントコントローラ１５１に対して、DMAコマンドリスト１５２を登録することで、DMACマネジメントコントローラ１５１の起動が行われる。従って、メインプロセッサ１１１にとっては、入出力デバイスコントローラ１４１へのDMA設定、起動と同じ手順を用いて、DMACマネジメントコントローラ１５１に対してDMAコマンドリスト１５２の登録（設定）および起動を行うことができる。
【０１３５】
また、メインプロセッサ１１１は、DMACマネジメントコントローラ１５１に対してDMAコマンドリスト１５２を設定した以降は、メインタスクの処理を実行し続けることができる。
【０１３６】
このとき、DMACマネジメントコントローラ１５１は、DMAコマンドリスト１５２を基に、個々の入出力デバイスコントローラ１４１のDMAC１４２を設定および起動させることになるため、入出力デバイスコントローラ１４１にとっては、あたかもメインプロセッサ１１１からDMAC１４２への設定および起動を行われているかのように、DMACマネジメントコントローラ１５１からDMAC１４２への設定および起動が行われることになる。すなわち、既存の入出力デバイスコントローラ１４１のDMAC１４２を有している機能はそのまま使用されることが可能である。例えば、入出力デバイスコントローラ１４１が対象とする入出力装置用途に特化した固有機能を有していた場合、その固有機能の実行を制限することにはならない。
【０１３７】
既存の技術（例えばPCIバスの仕様）を基に、入出力デバイスコントローラ１４１のDMAC１４２はメインメモリ１１２との間で設定されたDMA転送を行い、DMA転送が終了した時点において、DMA転送が完了したことを示す割り込み信号（割り込み通知）がアサートされる。
【０１３８】
なお、以上の説明においては、DMACマネジメントコントローラ１５１によって、DMAコマンドリスト１５２を基に、DMAC１４２−１およびDMAC１４２−２における、設定および起動が行われるように説明したが、DMAC１４２に対するDMAコマンドの数は、特に限定されず、DMACマネジメントコントローラ１５１は、DMAコマンドリスト１５２に含まれている全て（複数）のDMAコマンドが終了するまで、ステップＳ１６１乃至ステップＳ１６４またはステップＳ１８１乃至ステップＳ１８４の処理と同様の処理が繰り返し実行される。
【０１３９】
ステップＳ１０５において、OS１８１を実行するメインプロセッサ１１１は、ステップＳ１０４の処理により、DMACマネジメントコントローラ１５１からの割り込み信号を受け付けたので、処理中のメインタスクのデータ（プログラムカウンタやスタックポインタなどの記憶されている内容）を退避させる。例えば、メインメモリ１１２の所定の領域または図示せぬ外部ストレージに、処理中のメインタスクのデータを退避（記憶（記録））させる。
【０１４０】
ステップＳ１０６において、OS１８１を実行するメインプロセッサ１１１は、ステップＳ１０４の処理により受け付けた割り込みに対応する、割り込み処理を行う。すなわち、メインプロセッサ１１１は、図７のステップＳ１０１の処理により生成したDMAコマンドリスト１５２に応じた割り込み処理を実行する。
【０１４１】
なお、実際には、DMACマネジメントコントローラ１５１からDMAコマンドリスト１５２のDMAコマンドにより指示された処理が完了したことを示す割り込み信号（割り込みの通知）を受け付けたメインプロセッサ１１１は、現在処理中のメインタスクを一端停止し、停止時の状況情報をメモリメモリ１１２（または図示せぬ外部ストレージ）に退避、記憶させ、割込み処理ルーチンを起動し、DMACマネジメントコントローラ１５１から割り込み信号に対応する割込み処理を行う。
【０１４２】
一般的には割込み要因が確認され、DMACマネジメントコントローラ１５１からのDMAコマンドリスト１５２により指示された処理が完了したことを示す割り込み（割り込み信号）であることが認識されると、次のDMAコマンドリスト１５２がDMACマネジメントコントローラ１５１に対して設定される。
【０１４３】
ステップＳ１０６の割り込み処理が終了すると、ステップＳ１０７において、OS１８１を実行するメインプロセッサ１１１は、ステップＳ１０５の処理において退避させたデータを読み出す。例えば、メインメモリ１１２に、処理中のデータを退避（記憶）させていた場合、メインプロセッサ１１１は、メインメモリ１１２より、退避させていたデータをメインメモリ１１２のプログラムを実行するための領域に読み出す。
【０１４４】
ステップＳ１０８において、メインプロセッサ１１１は、メインタスクの処理を行い、処理は終了する。
【０１４５】
このように、メインプロセッサ１１１は、入出力デバイスコントローラ１４１からのデータの転送が完了する毎に、割込み処理を行う必要がなくなる。したがって、例えば、PC１００がAV機器である場合、複数の入出力デバイスコントローラ１４１のそれぞれが扱う、AVストリームデータが連続的にDMA転送される毎に、割り込み処理を行うことがなくなり、割り込み処理による、処理中のメインタスクのデータをメインメモリ１１２や図示せぬ外部ストレージに退避させることにより、発生するオーバーヘッドを低減することができる。
【０１４６】
DMACマネジメントコントローラ１５１のハードウェアとしての実装方法は、メインプロセッサ１１１ではなく、一般的にサウスブリッジと呼ばれるコンパニオンチップ側に実装することも可能である。サウスブリッジに実装した場合、メインプロセッサ１１１はそのまま使用できる。
【０１４７】
また、汎用のバス(例えば、PCIバス)に接続される複数の入出力デバイスコントローラ１４１のみに対して適用することも可能である。この場合、サウスブリッジの変更も必要とせず、DMACマネジメントコントローラ１５１単体で、または、バスブリッジや入出力デバイスコントローラ１４１に内蔵することも可能である。
【０１４８】
ソフトウェアとしての実装方法として、図６で示されるように、既存の入出力デバイスコントローラ１４１用のデバイスドライバ１８２の下位にDMACマネジメントコントローラ１５１用のデバイスドライバ（DMACマネジメントコントローラドライバ１８３）を用いることを実装方法として説明したが、これにより、既存の入出力デバイスコントローラ１４１用のデバイスドライバ１８２の変更が必要な箇所は下位のDMACマネジメントコントローラ１５１用のデバイスドライバ（DMACマネジメントコントローラドライバ１８３）とのインタフェースに限定されるため、変更作業量は少なくて済む。
【０１４９】
メインプロセッサ１１１は、一定期間毎にDMACマネジメントコントローラ１５１用のデバイスドライバに記録された複数の入出力デバイスコントローラ１４１のDMAC１４２への指示をまとめてDMAコマンドリスト１５２を生成し、DMACマネジメントコントローラ１５１に、DMAコマンドリスト１５２を設定する。例えば、メインプロセッサ１１１の割込み処理による処理能力低下を軽減するためには、DMACマネジメントコントローラ１５１からのDMAコマンドリスト１５２に含まれるDMAコマンドの完了による割込み処理において、それぞれの入出力デバイスコントローラ１４１用のデバイスドライバ１８２の処理をまとめて行うという実装方法も有効である。
【０１５０】
以上のように、処理能力の高いメインプロセッサ１１１において、相対的に処理割合が高くなる入出力デバイスコントローラ１４１による割込み処理による切り替え時間を短縮することができる。
【０１５１】
既存の入出力デバイスコントローラ（例えばPCIデバイス）１４１のDMAC１４２、および汎用のバス（例えばPCIバス）の、例えば、アービトレーション機構などの機構をそのまま使用することができる。また、例えば、各デバイスが固有の機能を有している場合、その固有の機能の実行を制限しない。
【０１５２】
また、メインプロセッサやサウスブリッジなどの既存のデバイス、およびそれに伴うソフトウェアの資産をそのまま使用できる実装の形態を実現することができる。
【０１５３】
既存のデバイスにおいて、大部分を流用したままで、一部のバスに特化した実装の方法も可能である。この場合、例えば、入出力デバイスとのデータ転送が最も多いバスのみに対し、そのバスの仕様に準じたDMACマネジメントコントローラ１５１を実装すればよい。
【０１５４】
次に、図１０乃至図１７を参照して、DMACマネジメントコントローラ１５１へのDMAコマンドリスト１５２の設定例、すなわち、DMAコマンドリスト１５２の処理の型として、“遂次処理”、“並列処理”、“パイプライン処理”、および“パイプライン処理と並列処理とを組み合わせた処理”の例を説明する。
【０１５５】
なお、以下、図１０、図１２、図１４、および図１６で示されるステートマシン（動作Ｘ1、動作Ｘ2、動作Ｘ3、および動作Ｘ4）並びに図１１、図１３、図１５、および図１７のDMAコマンドの表記方法は、SpecCに準じる。
【０１５６】
図１０は、DMAコマンドリスト１５２による逐次処理を説明する図である。図１０で示される動作Ｘ1においては、DMAコマンドＡ1、DMAコマンドＡ2、およびDMAコマンドＡ3により逐次処理が実行される。
【０１５７】
図１１は、DMAコマンドＡ1、DMAコマンドＡ2、およびDMAコマンドＡ3による、逐次処理におけるDMAコマンドリスト１５２の例を示す図である。
【０１５８】
以下、図１１を参照し、図１０で示される動作Ｘ1を説明する。動作Ｘ1においては、DMAコマンドリスト１５２のDMAコマンドＡ1である“DID，SRS ADR,DEST ADR,SIZE”を基に、所定のデバイスのDMAC１４２の設定および起動が行われ、DMAコマンドＡ1に指示されるDMA転送の処理が実行される。そのデバイスによる、データのDMA転送の完了の通知（そのデバイスからの割り込み信号）を待ち、DMAコマンドＡ1に指示されるDMA転送の処理が完了すると、次に、DMAコマンドＡ2である“DID，SRS ADR,DEST ADR,SIZE”を基に、別のデバイスのDMAC１４２の設定および起動を行い、DMAコマンドＡ2に指示されるDMA転送の処理が実行される。
【０１５９】
さらに、そのDMA転送の完了を待ち、DMAコマンドＡ2に指示されるDMA転送の処理が完了すると、さらに、DMAコマンドＡ3である“DID，SRS ADR,DEST ADR,SIZE”を基に、さらに別のデバイスのDMAC１４２の設定および起動を行い、DMAコマンドＡ3に指示されるDMA転送の処理が実行される。
【０１６０】
その後、DMAコマンドＡ3によるDMA転送の完了の通知に受けて、DMACマネジメントコントローラ１５１はメインプロセッサ１１１にDMAコマンドリスト１５２に含まれるDMAコマンドの完了の通知(notify)を送信し、図１１で示されるDMAコマンドリスト１５２の処理を完了する。
【０１６１】
このように、逐次処理においては、DMA転送が順に実行される。すなわち、逐次処理においては、その前に実行されたDMA転送の完了を待って、次のDMA転送が実行される。
【０１６２】
図１２は、DMAコマンドリスト１５２による並列処理を説明する図である。図１２で示される動作Ｘ2においては、DMAコマンドＡ11、DMAコマンドＢ11、およびDMAコマンドＣ11により並列処理が実行される。すなわち、DMAコマンドＡ11、DMAコマンドＢ11、およびDMAコマンドＣ11のコマンドが同時に実行される。
【０１６３】
図１３は、DMAコマンドＡ11、DMAコマンドＢ11、およびDMAコマンドＣ11による、並列処理におけるDMAコマンドリスト１５２の例を示す図である。なお、図１３で示される“par”は、並列処理を示している。
【０１６４】
以下、図１３を参照し、図１２で示される動作Ｘ2を説明する。動作Ｘ2においては、DMAコマンドＡ11である“DID，SRS ADR,DEST ADR,SIZE”、DMAコマンドＢ11である“DID，SRS ADR,DEST ADR,SIZE”、およびDMAコマンドＣ11である“DID，SRS ADR,DEST ADR,SIZE”により並列処理が実行される。すなわち、デバイスのDMAC１４２によるDMA転送の実行が並列に、かつ、それぞれが非同期で実行される。
【０１６５】
なお、図１２で示される例においては、メインプロセッサ１１１に対する、DMAコマンドリスト１５２に含まれるDMAコマンドの完了の通知（notify）は行われない。
【０１６６】
図１４は、DMAコマンドリスト１５２によるパイプライン処理を説明する図である。図１４で示される動作Ｘ3においては、DMAコマンドＡ21、DMAコマンドＢ21、およびDMAコマンドＣ21によりパイプライン処理が実行される。それぞれのDMAコマンドの実行はオーバーラップされ、並列に実行される。
【０１６７】
図１５は、DMAコマンドＡ21、DMAコマンドＢ21、およびDMAコマンドＣ21による、パイプライン処理におけるDMAコマンドリスト１５２の例を示す図である。なお、図１５で示される“pipe”は、パイプライン処理を示している。
【０１６８】
以下、図１５を参照し、図１４で示される動作Ｘ3を説明する。動作Ｘ3においては、最初に、DMAコマンドＡ21である“DID，SRS ADR,DEST ADR,SIZE”を基に、所定のデバイスのDMAC１４２の設定および起動が行われる。そのデバイスからのDMA転送の完了の通知により、DMAコマンドＡ21およびDMAコマンドＢ21である“DID，SRS ADR,DEST ADR,SIZE”を基に、DMAC１４２の設定および起動が実行される。このとき、DMAコマンドＡ21は、繰り返し実行される。
【０１６９】
DMAコマンドＢ21のDMA転送の完了の通知により、この時点で、DMAコマンドＡ21による、DMA転送の完了が通知されている場合、DMAコマンドＢ21およびDMAコマンドＣ21である“DID，SRS ADR,DEST ADR,SIZE”を基に、複数のデバイスのDMAC１４２の設定および起動が実行される。このとき、DMAコマンドＡ21によるDMA転送の完了が通知されていない場合、DMAコマンドＣ21を基に、DMAC１４２の設定および起動が行われ、DMAコマンドＡ21によるDMA転送の完了の通知を待って、DMAコマンドＢ21を基に、DMAC１４２の設定および起動が実行される。
【０１７０】
DMAコマンドＢ21を基に、DMAC１４２の設定および起動が実行されるには、DMAコマンドＡ21によるDMA転送の完了およびDMAコマンドＢ21によるDMA転送の完了の両方が通知されている必要がある。
【０１７１】
なお、動作Ｘ3におけるパイプライン処理の３段目のDMAコマンドＣ21のDMA転送の完了の通知により、DMACマネジメントコントローラ１５１は、メインプロセッサ１１１にDMAコマンドリスト１５２の完了の通知（notify）を行う。パイプライン処理においては、エンドレスループの動作となるため、図１５で示されるDMAコマンドリスト１５２の処理が継続される（繰り返し実行される）。
【０１７２】
図１６は、DMAコマンドリスト１５２によるパイプライン処理と並列処理とを組み合わせた処理を説明する図である。図１６で示される動作Ｘ4においては、DMAコマンドＡ31、DMAコマンドＢ31-1およびDMAコマンドＢ31-2、並びにDMAコマンドＣ31によりパイプライン処理が実行され、動作Ｘ4の２段目でDMAコマンドＢ31-1およびDMAコマンドＢ31-2により並列処理が実行される。
【０１７３】
図１７は、DMAコマンドＡ31、DMAコマンドＢ31-1およびDMAコマンドＢ31-2、DMAコマンドＣ31による、パイプライン処理と並列処理とを組み合わせた処理におけるDMAコマンドリスト１５２の例を示す図である。なお、図１７で示される“pipe”は、パイプライン処理を示し、“par”は、並列処理を示している。
【０１７４】
以下、図１７を参照し、図１６で示される動作Ｘ4を説明する。動作Ｘ4においては、最初に、DMAコマンドＡ31である“DID，SRS ADR,DEST ADR,SIZE”を基に、所定のデバイスのDMAC１４２の設定および起動が行われる。そのデバイスからのDMA転送の完了の通知により、DMAコマンドＡ31、DMAコマンドＢ31-1である“DID，SRS ADR,DEST ADR,SIZE”およびDMAコマンドＢ31-2である“DID，SRS ADR,DEST ADR,SIZE”を基に、DMAC１４２の設定および起動が実行される。このとき、DMAコマンドＡ31は、繰り返し実行される。
【０１７５】
DMAコマンドＢ31-1およびDMAコマンドＢ31-2の両方のDMA転送の完了の通知により、この時点で、DMAコマンドＡ31による、DMA転送の完了が通知されている場合、DMAコマンドＢ31-1およびDMAコマンドＢ31-2、並びにDMAコマンドＣ31である“DID，SRS ADR,DEST ADR,SIZE”を基に、複数のデバイスのDMAC１４２の設定および起動が実行される。このとき、DMAコマンドＡ31によるDMA転送の完了が通知されていない場合、DMAコマンドＣ31を基に、DMAC１４２の設定および起動が行われ、DMAコマンドＡ31によるDMA転送の完了の通知を待って、DMAコマンドＢ31-1およびDMAコマンドＢ31-2を基に、DMAC１４２の設定および起動が実行される。
【０１７６】
DMAコマンドＢ31-1およびDMAコマンドＢ31-2を基に、DMAC１４２の設定および起動が実行されるには、DMAコマンドＡ31によるDMA転送の完了、DMAコマンドＢ31-1およびDMAコマンドＢ31-2によるDMA転送の完了の両方が通知されている必要がある。
【０１７７】
なお、動作Ｘ4におけるパイプライン処理の３段目のDMAコマンドＣ21のDMA転送の完了の通知により、DMACマネジメントコントローラ１５１は、メインプロセッサ１１１にDMAコマンドリスト１５２の完了の通知（notify）を行う。パイプライン処理においては、エンドレスループの動作となるため、図１７で示されるDMAコマンドリスト１５２の処理が継続される（繰り返し実行される）。
【０１７８】
本発明が適用される情報処理装置の実施の形態は、図５に示されるPC１００に限定されず、記録媒体の記録および読み出しの制御が可能な情報処理装置であれば構わない。具体的には、例えば、PDA（Personal Digital Assistants）、携帯電話機、または、デジタル電化製品（例えば、ハードディスク録画装置）等様々な実施の形態が可能である。
【０１７９】
このように、データのDMA転送を行うことができるようにした場合、大量のデータをメモリなどに高速で転送することができる。DMAコントローラデータ入出力制御手段に設けられ、デバイスによるデータのDMA（Direct Memory Access）転送を制御し、コントローラ制御手段が、プロセッサから取得したデバイスに対するDMA転送の命令を基に、DMAコントローラにデバイスによるデータのDMA転送を制御させるようにDMAコントローラを制御するようにした場合には、割り込み処理によるオーバーヘッドを低減することができる。
【０１８０】
この記録媒体は、図５で示されるリムーバブルメディア１５４のように、コンピュータとは別に、ユーザにプログラムを提供するために配布される、プログラムが記録されている磁気ディスク（フレキシブルディスクを含む）、光ディスク（CD-ROM（Compact Disk Read-Only Memory），DVD（Digital Versatile Disc）を含む）、光磁気ディスク（MD（Mini Disc）（商標）を含む）、若しくは半導体メモリなどよりなるパッケージメディアにより構成されるだけでなく、コンピュータに予め組み込まれた状態でユーザに提供される、プログラムが記録されているROM（Read Only Memory）もしくはハードディスクなどで構成される。
【０１８１】
なお、上述した一連の処理を実行させるプログラムは、必要に応じてルータ、モデムなどのインタフェースを介して、ローカルエリアネットワーク、インターネット、デジタル衛星放送といった、有線または無線の通信媒体を介してコンピュータにインストールされるようにしてもよい。
【０１８２】
また、本明細書において、記録媒体に格納されるプログラムを記述するステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくても、並列的あるいは個別に実行される処理を含むものである。
【図面の簡単な説明】
【０１８３】
【図１】従来のパーソナルコンピュータの構成の例を示すブロック図である。
【図２】従来のパーソナルコンピュータのソフトウェアの構成の例を示すブロック図である。
【図３】従来のDMA転送の処理を説明するフローチャートである。
【図４】従来のDMA転送の処理を説明するフローチャートである。
【図５】本発明を適用したパーソナルコンピュータの構成の例を示すブロック図である。
【図６】図５のパーソナルコンピュータのソフトウェアの構成の例を示すブロック図である。
【図７】DMA転送の処理を説明するフローチャートである。
【図８】DMA転送の処理を説明するフローチャートである。
【図９】図５のDMAコマンドリストの例を示す図である。
【図１０】DMAコマンドリストによる逐次処理を説明する図である。
【図１１】逐次処理におけるDMAコマンドリストの例を示す図である。
【図１２】DMAコマンドリストによる並列処理を説明する図である。
【図１３】並列処理におけるDMAコマンドリストの例を示す図である。
【図１４】DMAコマンドリストによるパイプライン処理を説明する図である。
【図１５】パイプライン処理におけるDMAコマンドリストの例を示す図である。
【図１６】DMAコマンドリストによるパイプライン処理と並列処理とを組み合わせた処理を説明する図である。
【図１７】パイプライン処理と並列処理とを組み合わせた処理におけるDMAコマンドリストの例を示す図である。
【符号の説明】
【０１８４】
１００  パーソナルコンピュータ，  １１１  メインプロセッサ，  １１２  メインメモリ，  １４１−１および１４１−２  入出力デバイスコントローラ，  １４２−１および１４２−２  DMAC，  １５１  DMACマネジメントコントローラ，  １５２  DMAコマンドリスト，  １５４  リムーバブルメディア，  １８３  DMACマネジメントコントローラドライバ
【図１】
2006003981.tif 000003
【図２】
2006003981.tif 000004
【図３】
2006003981.tif 000005
【図４】
2006003981.tif 000006
【図５】
2006003981.tif 000007
【図６】
2006003981.tif 000008
【図７】
2006003981.tif 000009
【図８】
2006003981.tif 000010
【図９】
2006003981.tif 000011
【図１０】
2006003981.tif 000012
【図１１】
2006003981.tif 000013
【図１２】
2006003981.tif 000014
【図１３】
2006003981.tif 000015
【図１４】
2006003981.tif 000016
【図１５】
2006003981.tif 000017
【図１６】
2006003981.tif 000018
【図１７】
2006003981.tif 000019