(57)【要約】【課題】転送情報を複数連ねて構成された転送情報群に基づいて転送対象のデータのＤＭＡ転送を行なう際に、転送情報群を構成する転送情報の数を常に一定とする場合に比べて、ＤＭＡ転送を高速且つ効率よく行なう情報処理装置およびプログラムを提供する。【解決手段】ＣＰＵ２４を介在させないダイレクトメモリアクセス（ＤＭＡ）転送に必要な情報を含む単位転送量毎の転送情報を複数連ねて構成した転送情報群に基づいて転送対象のデータを単位転送量毎にＤＭＡ転送するＤＭＡコントローラ４２が設けられた情報処理部１３において、データ量が予め定められた基準データを転送情報群を構成する転送情報の個数を変化させながらＤＭＡコントローラ４２によって転送したときの転送速度に基づいて転送情報群を構成する転送情報の数を決定し、転送対象のデータをＤＭＡ転送するときには、該決定された数の転送情報を連ねて構成した転送情報群を作成する。【選択図】図１
2009059276.tif 000002
【特許請求の範囲】
【請求項１】
中央演算処理装置（ＣＰＵ）を介在させないダイレクトメモリアクセス（ＤＭＡ）転送に必要な情報を含む単位転送量毎の転送情報を複数連ねて構成した転送情報群に基づいて転送対象のデータを前記単位転送量毎にＤＭＡ転送する転送手段と、
データ量が予め定められた基準データを前記転送情報群を構成する転送情報の個数を変化させながら前記転送手段によってＤＭＡ転送したときの転送速度に基づいて前記転送情報群を構成する転送情報の数を決定する決定手段と、
転送対象のデータをＤＭＡ転送するときに、前記決定手段で決定された数の転送情報を連ねて構成した転送情報群を作成する作成手段と、
を含む情報処理装置。
【請求項２】
前記決定手段で決定された転送情報の数を基準データのデータ量に対応付けて記憶した記憶手段を更に備え、
前記作成手段は、転送対象のデータをＤＭＡ転送するときに、該転送対象のデータ量に応じて前記記憶手段に記憶された数を読み出し、該読み出した数の転送情報を連ねて構成した転送情報群を作成する請求項１に記載の情報処理装置。
【請求項３】
前記作成手段は、前記転送対象のデータをＤＭＡ転送するために複数の転送情報群を作成する場合に、先頭の転送情報群または先頭から所定数までの転送情報群については、前記決定手段で決定された数よりも少ない数の転送情報で構成された転送情報群を作成し、それ以降の転送情報群については、前記決定手段で決定された数の転送情報を構成した転送情報群を作成する請求項１または２に記載の情報処理装置。
【請求項４】
前記作成手段は、前記転送対象のデータをＤＭＡ転送するために複数の転送情報群を作成する場合に、前記転送手段で実行中のＤＭＡ転送が終了するまでに該実行中のＤＭＡ転送以降に行なわれるＤＭＡ転送のための転送情報群を作成して作成順に転送情報用記憶手段に記憶し、
前記転送手段は、前記転送情報用記憶手段から前記作成順に転送情報群を読み出してＤＭＡ転送を行なう請求項１〜３の何れか１項に記載の情報処理装置。
【請求項５】
前記作成手段は、前記転送情報群の作成をＣＰＵ使用率またはＣＰＵ占有時間が所定値を超えていない場合に行なう請求項４に記載の情報処理装置。
【請求項６】
前記作成手段は、前記転送情報用記憶手段に未読の転送情報群が１つも記憶されていない場合には、前記ＣＰＵ使用率またはＣＰＵ占有時間が所定値を超えている場合であっても実行中のＤＭＡ転送以降に行なわれるＤＭＡ転送のための転送情報群を作成する請求項５に記載の情報処理装置。
【請求項７】
中央演算処理装置（ＣＰＵ）を介在させないダイレクトメモリアクセス（ＤＭＡ）転送に必要な情報を含む単位転送量毎の転送情報を複数連ねて構成した転送情報群に基づいて転送対象のデータを前記単位転送量毎にＤＭＡ転送する転送手段が設けられたコンピュータを、
データ量が予め定められた基準データを前記転送情報群を構成する転送情報の個数を変化させながら前記転送手段によってＤＭＡ転送したときの転送速度に基づいて前記転送情報群を構成する転送情報の数を決定する決定手段、および
転送対象のデータをＤＭＡ転送するときに、前記決定手段で決定された数の転送情報を連ねて構成した転送情報群を作成する作成手段、
として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置およびプログラムに関する。
【背景技術】
【０００２】
近年、データの転送を高速に行なうため、中央演算処理装置（ＣＰＵ）を介さずにデータの転送を行なうダイレクトメモリアクセス（ＤＭＡ）転送の技術が様々な情報処理装置に広く採用されている。
【０００３】
ＤＭＡ転送を効率的に行なうために、画像形成装置において、メモリ上のイメージデータをＤＭＡにより高速に印刷エンジンに転送するために、各ページのイメージデータを複数バンドに分割し、各バンドデータを１回のＤＭＡで転送すると共に、ＣＰＵがＤＭＡ転送毎に連続ＤＭＡ転送を行なうか否かを示す転送フラグを設定して連続転送を制御し、連続転送する場合には、ＤＭＡ動作中に次のバンドのＤＭＡパラメータ（アドレス、サイズ等）を設定することで、複数バンドのＤＭＡがインターバルなく連続的に実行されるような技術が提案されている（例えば、特許文献１参照）。
【０００４】
また、画像データを複数に分割し、それぞれの分割部分ごとのディスクリプタを作成し、そのディスクリプタにＤＭＡコントローラの行う動作を指示する指示ビットを含めることで、ＣＰＵの介在なしで、分割ＤＭＡ転送を連続的に行なうことができる装置も提案されている（例えば、特許文献２参照）。
【特許文献１】特開２０００−１４８６６３公報
【特許文献２】特開２００２−１４０２８６公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
本発明は、転送情報を複数連ねて構成された転送情報群に基づいて転送対象のデータのＤＭＡ転送を行なうための情報処理装置およびプログラムであって、転送情報群を構成する転送情報の数を常に一定とする場合に比べて、ＤＭＡ転送を高速且つ効率よく行なうことができる情報処理装置およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
請求項１の発明の情報処理装置は、中央演算処理装置（ＣＰＵ）を介在させないダイレクトメモリアクセス（ＤＭＡ）転送に必要な情報を含む単位転送量毎の転送情報を複数連ねて構成した転送情報群に基づいて転送対象のデータを前記単位転送量毎にＤＭＡ転送する転送手段と、データ量が予め定められた基準データを前記転送情報群を構成する転送情報の個数を変化させながら前記転送手段によってＤＭＡ転送したときの転送速度に基づいて前記転送情報群を構成する転送情報の数を決定する決定手段と、転送対象のデータをＤＭＡ転送するときに、前記決定手段で決定された数の転送情報を連ねて構成した転送情報群を作成する作成手段と、を含んで構成されている。
【０００７】
請求項２の発明は、請求項１に記載の情報処理装置において、前記決定手段で決定された転送情報の数を基準データのデータ量に対応付けて記憶した記憶手段を更に備え、前記作成手段は、転送対象のデータをＤＭＡ転送するときに、該転送対象のデータ量に応じて前記記憶手段に記憶された数を読み出し、該読み出した数の転送情報を連ねて構成した転送情報群を作成する。
【０００８】
請求項３の発明は、請求項１または２に記載の情報処理装置において、前記作成手段は、前記転送対象のデータをＤＭＡ転送するために複数の転送情報群を作成する場合に、先頭の転送情報群または先頭から所定数までの転送情報群については、前記決定手段で決定された数よりも少ない数の転送情報で構成された転送情報群を作成し、それ以降の転送情報群については、前記決定手段で決定された数の転送情報を構成した転送情報群を作成する。
【０００９】
請求項４の発明は、請求項１〜３の何れか１項に記載の情報処理装置において、前記作成手段は、前記転送対象のデータをＤＭＡ転送するために複数の転送情報群を作成する場合に、前記転送手段で実行中のＤＭＡ転送が終了するまでに該実行中のＤＭＡ転送以降に行なわれるＤＭＡ転送のための転送情報群を作成して作成順に転送情報用記憶手段に記憶し、前記転送手段は、前記転送情報用記憶手段から前記作成順に転送情報群を読み出してＤＭＡ転送を行なう。
【００１０】
請求項５の発明は、請求項４に記載の情報処理装置において、前記作成手段は、前記転送情報群の作成をＣＰＵ使用率またはＣＰＵ占有時間が所定値を超えていない場合に行なう。
【００１１】
請求項６の発明は、請求項５に記載の情報処理装置において、前記作成手段は、前記転送情報用記憶手段に未読の転送情報群が１つも記憶されていない場合には、前記ＣＰＵ使用率またはＣＰＵ占有時間が所定値を超えている場合であっても実行中のＤＭＡ転送以降に行なわれるＤＭＡ転送のための転送情報群を作成する。
【００１２】
請求項７の発明のプログラムは、中央演算処理装置（ＣＰＵ）を介在させないダイレクトメモリアクセス（ＤＭＡ）転送に必要な情報を含む単位転送量毎の転送情報を複数連ねて構成した転送情報群に基づいて転送対象のデータを前記単位転送量毎にＤＭＡ転送する転送手段が設けられたコンピュータを、データ量が予め定められた基準データを前記転送情報群を構成する転送情報の個数を変化させながら前記転送手段によってＤＭＡ転送したときの転送速度に基づいて前記転送情報群を構成する転送情報の数を決定する決定手段、および転送対象のデータをＤＭＡ転送するときに、前記決定手段で決定された数の転送情報を連ねて構成した転送情報群を作成する作成手段、として機能させるためのプログラムである。
【発明の効果】
【００１３】
請求項１記載の発明によれば、転送情報群を構成する転送情報の数を常に一定とする場合に比べて、ＤＭＡ転送を高速且つ効率よく行なうことができる、という効果が得られる。
【００１４】
請求項２記載の発明によれば、迅速に転送情報群を作成することができる、という効果が得られる。
【００１５】
請求項３記載の発明によれば、転送手段のＤＭＡ転送開始を早めることができる、という効果が得られる。
【００１６】
請求項４記載の発明によれば、ＤＭＡの転送開始前に全ての転送情報群を作成する場合に比べてＤＭＡ転送にかかる時間を短縮することができる、という効果が得られる。
【００１７】
請求項５記載の発明によれば、ＣＰＵの負荷がシステム全体でみた場合に集中しないよう効率よくＣＰＵを使用することができ、これにより他のモジュールの性能低下を招くことなくＤＭＡ転送できる、という効果が得られる。
【００１８】
請求項６記載の発明によれば、ＤＭＡ転送が途切れることを防止することができる、という効果が得られる。
【００１９】
請求項７記載の発明によれば、転送情報群を構成する転送情報の数を常に一定とする場合に比べて、ＤＭＡ転送を高速且つ効率よく行なうことができる、という効果が得られる。
【発明を実施するための最良の形態】
【００２０】
以下、図面を参照して本発明の実施の形態を詳細に説明する。
【００２１】
図１は、本発明の情報処理装置に係る実施の形態としての情報処理部を含む画像処理システム１０の構成例を示す図である。
【００２２】
画像処理システム１０は、マザーボード１２及びコントローラボード１４を備えた情報処理部１３、画像入力部１６、画像出力部１８、コントローラ２０、及びＬＣＤ（液晶ディスプレイ）２２を備えている。
【００２３】
マザーボード１２は、ＣＰＵ（中央演算処理装置）２４および主記憶としてのメモリ２８を備えている。ＣＰＵ２４及びメモリ２８はハブ２６を介して専用のバスにより接続されている。このメモリ２８には、画像出力部１８で出力（印刷）する画像データや画像入力部１６で読み取った画像データを格納するための領域があり、該画像データは後述するコントローラボード１４に設けられたメモリ４４との間でＣＰＵ２４の介在無しにＤＭＡ（ダイレクトメモリアクセス）転送される。
【００２４】
また、ハブ２６には、マザーボード１２の外部に設けられたＬＣＤ２２が接続されている。ＬＣＤ２２は、表示面にタッチパネルを有する液晶表示装置であり、ユーザインタフェースとして機能する。
【００２５】
また、専用のバスを接続するためのハブ２６は、汎用バスを接続するためのハブ３０と接続されている。ハブ３０にはＨＤＤ（ハードディスク装置）３２とＩ／Ｏポート３４とが汎用バスを介して接続されている。ＨＤＤ３２には、ＣＰＵ２４が実行するプログラムや各種データが記憶されている。Ｉ／Ｏポート３４は、入出力インタフェースとして機能し、画像処理システム１０の周辺機器などが接続される。
【００２６】
なお、ＣＰＵ２４が実行するプログラムや各種データを記録する記録媒体は、ＨＤＤに限定されず、不図示のＣＤ−ＲＯＭやＤＶＤディスク、光磁気ディスクやＩＣカード、あるいはＲＯＭ等であってもよいし、電気通信回線上の搬送波のような伝送媒体であってもよく、特に限定されない。
【００２７】
マザーボード１２には汎用バスのインタフェース３６が設けられ、同じくコントローラボード１４に設けられた汎用バスのインタフェース３８と接続されている。
【００２８】
コントローラボード１４は、バスブリッジ４０、メモリ４４、論理回路４６、ＣＰＵ４８、及び画像処理回路５０を備えている。バスブリッジ４０、メモリ４４、ＣＰＵ４８、及び画像処理回路５０は、論理回路４６に接続され、論理回路４６を介して互いにデータのやりとりを行なう。論理回路４６は、データ転送回路としてプログラムされた回路であるが、単にデータを受け渡すのみでありデータ転送の制御を行なうわけではない。画像処理回路５０は、入力された画像データに所定の画像処理を施す回路である。
【００２９】
バスブリッジ４０は、汎用バスを介してインタフェース３８に接続されると共に、論理回路４６に接続されている。バスブリッジ４０は、汎用バス同士のブリッジ機能やバスマスタ機能を備えている。このバスマスタ機能は、コントローラボード１４上のＣＰＵ４８を介さずにメモリ４４と画像処理回路５０との間でデータのやりとりを行なうための機能である。具体的には、コントローラボード１４では、画像出力部１８による画像出力時には、画像データがメモリ４４から論理回路４６を介して画像処理回路５０へＤＭＡ転送され、画像入力部１６によって画像が読み込まれた場合には、該読み込まれて得られた画像データが画像処理回路５０から論理回路４６を介してメモリ４４へＤＭＡ転送される。
【００３０】
一方、マザーボード１２上のＣＰＵ２４を介さずに、マザーボード１２上のメモリ２８とコントローラボード１４上のメモリ４４との間でデータの転送を行なうＤＭＡ機能は、上記バスブリッジ４０のバスマスタ機能とは別に、バスブリッジ４０に設けられたＤＭＡＣ（ＤＭＡコントローラ）４２により実現される。ＤＭＡＣ４２は、飛び飛びのアドレスに対して、連続してデータを転送できるスキャッタギャザー機能が搭載された回路である。ＤＭＡＣ４２の詳細な動作については後述する。
【００３１】
コントローラボード１４に設けられているコネクタ５２は、画像入力部１６及び画像出力部１８を制御する制御機構を備えたコントローラ２０に設けられているコネクタ５６に接続されている。また、コントローラボード１４のコネクタ５２は、前述の画像処理回路５０に接続されている。画像処理回路５０で画像処理が施される画像データは、コネクタ５２及びコネクタ５６を介して送受信される。
【００３２】
また、コントローラボード１４にはコネクタ５２とは別のコネクタ５４が設けられている。このコネクタ５４は、論理回路４６に直接接続されると共に、コントローラ２０に設けられているコネクタ５８と接続されている。コントローラ２０とコントローラボード１４との間で制御データやメッセージの送受信は、これらコネクタ５４、コネクタ５８を介して行なわれる。
【００３３】
ここで、ＤＭＡＣ４２の機能について説明する。画像処理システム１０では、データ量の多い画像データを取り扱う。従って、システム内で画像データを転送する場合には、ＣＰＵ２４を介在させないＤＭＡ転送が用いられる。ＤＭＡＣ４２は、ＣＰＵ２４により作成されたディスクリプタに基づいてＤＭＡ転送を行なう。
【００３４】
なお、ディスクリプタとは、ＤＭＡ転送のために必要な情報を含む転送情報をいう。ＣＰＵ２４は、ディスクリプタを予め定められた単位転送量毎に作成し、該作成したディスクリプタを複数連ねてディスクリプタリストを作成する。本実施の形態では、ディスクリプタリストはメモリ２８に設けられたディスクリプタ格納領域に格納されると共にその格納アドレスはＦＩＦＯ方式のディスクリプタリスト管理キューに登録される。なお、ディスクリプタリストの格納領域は、メモリ２８に限定されず、コントローラボード１４のメモリ４４であってもよいし特に限定されない。
【００３５】
ＣＰＵ２４は、ディスクリプタリスト管理キューに登録されたアドレスをＤＭＡＣ４２にセットしＤＭＡＣ４２を起動する、これによりＤＭＡＣ４２は、該セットされたアドレスに格納されているディスクリプタリストから１つ１つ順次ディスクリプタを読み込み、読み込んだディスクリプタに従って連続的にＤＭＡ転送を実行する。
【００３６】
１つのディスクリプタリストに連ねられたディスクリプタの全てについてＤＭＡ転送が完了すると、ＣＰＵ２４の割り込みが発生する。このとき、ＣＰＵ２４はディスクリプタリスト管理キューから次のディスクリプタリストのアドレスを読み出してＤＭＡＣ４２にセットする。そして、該セットされたアドレスのディスクリプタリストに連ねられたディスクリプタが順次読み込まれて連続的にＤＭＡ転送が行なわれる。この繰り返しにより、最終的に転送対象の画像データの全てがＤＭＡ転送される。
【００３７】
図２は、仮想記憶方式を採用したシステムにおいてＤＭＡＣ４２により読み込まれるディスクリプタリストの一例を示す図である。
【００３８】
マザーボード１２のメモリ２８は仮想記憶方式によりメモリ管理されている。図２（Ａ）に示すように、物理的には不連続な物理アドレス領域が、連続する仮想アドレス領域にマッピングされて管理される。実際に記憶されているデータにアクセスする場合には、仮想アドレス領域の連続したアドレス範囲が、アドレス変換テーブル等に従って対応する物理アドレス範囲に変換されてアクセスされる。仮想アドレスにマッピングできる物理メモリの最小単位をページというが、ＣＰＵ２４は、このページ単位で物理的に分散しているデータのアドレスを調べ、各々についてディスクリプタを作成する。
【００３９】
図２（Ｂ）に示すように、本実施の形態のディスクリプタは、次ディスクリプタアドレス、転送データ量、転送元アドレス、及び転送先アドレスの情報を含んで構成されている。
【００４０】
「次ディスクリプタアドレス」は、ディスクリプタリストに連ねられた複数のディスクリプタの中で、そのディスクリプタの次にＤＭＡＣ４２により読み込まれるべきディスクリプタのアドレスを示すデータである。なお、そのディスクリプタがディスクリプタリストの一番最後に読み込まれるディスクリプタである場合には、次ディスクリプタアドレスの領域には、ディスクリプタリストの最後のディスクリプタであることを示すデータが格納される。この次ディスクリプタアドレスにより、物理的に不連続な領域に格納されたディスクリプタが連続的に読み出されてＤＭＡ転送される。
【００４１】
また、「転送データ量」は、そのディスクリプタによってＤＭＡ転送するデータのサイズを示すデータである。「転送元アドレス」は、転送対象のデータが格納されているメモリのアドレスを示すデータである。「転送先アドレス」は、転送元アドレスから転送データ量だけ読み出したデータを書き込むアドレスを示すデータである。
【００４２】
なお、本実施の形態において、個々のディスクリプタで転送可能なデータ量は、ページサイズを最大とし、各ディスクリプタの「転送データ量」はページサイズ以下の固定値（単位転送量）とする。これにより、ディスクリプタリストを構成するディスクリプタの数と転送時間とが比例関係になる。以下、各ディスクリプタリストを構成するディスクリプタの数を「ブロック数」と呼称する。
【００４３】
図３は、ディスクリプタリストを管理するディスクリプタリスト管理キューの構造を説明する説明図である。ディスクリプタリスト管理キューは、ディスクリプタリストが格納されたアドレス（より詳述すると、ディスクリプタリストを構成する複数のディスクリプタのうち先頭のディスクリプタが格納されたアドレス。）を示すディスクリプタリストポインタをリスト構造にして連ねて構成したバッファである。また、ＣＰＵ２４の所定のレジスタ（あるいはメモリの所定領域等）には、ディスクリプタリスト管理キューにおける先頭のディスクリプタリストポインタを指すディスクリプタリスト管理キューポインタが格納される。ディスクリプタリスト管理キューはＦＩＦＯ方式であるため、ＣＰＵ２４が先頭のディスクリプタリストポインタを読み出したときには、ディスクリプタリスト管理キューポインタが次のディスクリプタリストポインタを指すように書き変えられる。
【００４４】
また、ＣＰＵ２４は、新たにディスクリプタリストを作成して所定の格納領域に格納すると、ディスクリプタリスト管理キューの最後尾に該作成したディスクリプタリストのアドレスを示すディスクリプタリストポインタを追加する。これにより、各ディスクリプタリストのアドレスが作成順に登録される。
【００４５】
なお、ディスクリプタリスト管理キューにディスクリプタリストが１つも登録されていない場合には、ディスクリプタリスト管理キューポインタはＮＵＬＬとなる。
【００４６】
ＤＭＡ転送を実行する場合には、ＣＰＵ２４は、ディスクリプタリスト管理キューポインタが指す先頭のディスクリプタリストポインタをＤＭＡＣ４２にセットしてＤＭＡＣ４２にＤＭＡ転送を開始させ、該ディスクリプタリストポインタが示すディスクリプタリストに基づいてＤＭＡ転送を行なわせる。ＤＭＡ転送は、１つのディスクリプタリストのＤＭＡ転送が終了するまでＣＰＵ２４の割り込み無しで連続的に行なわれる。一方、ＣＰＵ２４は、ＤＭＡＣ４２によるＤＭＡ転送中、所定の作成条件を満たす範囲内で、次のディスクリプタリストやそれ以降のディスクリプタリストを先行して作成してディスクリプタリスト管理キューに登録する。
【００４７】
１つのディスクリプタリストによるＤＭＡ転送が終了すると、その時点でＣＰＵ２４の割り込みが発生する。ＣＰＵ２４は、ディスクリプタリスト管理キューポインタが指す次のディスクリプタリストポインタをＤＭＡＣ４２にセットしてＤＭＡ転送させる。これにより、ディスクリプタリスト管理キューに登録された順にディスクリプタリストが読み出されてＤＭＡ転送が行なわれる。
【００４８】
本実施の形態では、データ量が予め定められたテスト用の基準データをＤＭＡ転送してＤＭＡ転送レートを測定し、該測定結果からディスクリプタリストの最適なブロック数を決定する。
【００４９】
図４は、ブロック数を決定するためのプログラムのフローを示すフローチャートである。このプログラムは、ＣＰＵ２４により所定のタイミングで実行される。
【００５０】
ステップ１００では、ｊ及びｋに０をセットする。ここで、ｊは、基本データのデータ量を複数種類定義する配列size_tableの添字を示す。すなわち、配列size_tableの各要素には、異なるデータ量を示すデータが格納されている。また、ｋは、ブロック数を複数種類定義する配列block_tableの添字を示す。すなわち、配列block_tableの各要素には、異なるブロック数を示すデータが格納されている。
【００５１】
ステップ１０２では、配列size_tableの添字ｊをカウントアップし、該カウントアップした添字の要素に格納されている基準データのデータ量を変数data_sizeにセットする。
【００５２】
ステップ１０４では、配列block_tableの添字ｋをカウントアップし、該カウントアップした添字の要素に格納されているブロック数を変数block_countにセットする。なお、本実施の形態では、添字ｋが大きくなるほど配列block_tableに格納されているブロック数も大きくなる。
【００５３】
ステップ１０６では、変数block_countの値が各ディスクリプタリストのブロック数となるように設定する。
【００５４】
ステップ１０８では、ＤＭＡ転送レートの測定を開始する。
【００５５】
ステップ１１０では、ＣＰＵ２４が変数block_countの数だけディスクリプタが連ねられたディスクリプタリストを作成し、ＤＭＡＣ４２に変数data_sizeが示すデータ量の基準データをＤＭＡ転送させ、ＤＭＡ転送レートの測定処理を行う。ここでは、DMA Write（書き込み）及びDMA read（読み出し）のいずれか一方を行なうようにしてもよいし、双方を行なうようにしてもよい。
【００５６】
ステップ１１２では、測定終了後に、ＤＭＡ転送にかかった時間と変数data_sizeが示すデータ量とに基づいてＤＭＡ転送レートを求め、該求めたＤＭＡ転送レートを変数block_countの値（ブロック数）及び変数data_sizeの値（データ量）を対応付けて測定データとして保存する。
【００５７】
ステップ１１４では、所定ブロック数全ての測定を終了したか、すなわち、設定可能なブロック数は変数data_sizeに応じて当然上限があるため、変数data_sizeに応じて設定可能なブロック数の全てについて測定を終了したかを判定する。ここで、否定判定された場合には、ステップ１０４に戻ってｋをカウントアップし、配列block_tableの次の要素に格納されているブロック数を変数block_countにセットして、上記と同様に再度測定を行なう。
【００５８】
一方、ステップ１１４で肯定判定された場合には、ステップ１１６に移行し、測定結果より、データ量が変数data_sizeの場合の最適なブロック数を決定し、変数data_sizeに対応付けて所定のテーブルに登録する。ここで、ブロック数の決定方法の具体例を説明する。
【００５９】
図５は、４Ｍバイトの基準データをＤＭＡ転送した場合のＤＭＡ転送レートの測定結果を示すグラフの一例であり、図６は、３２Ｍバイトの基準データをＤＭＡ転送した場合のＤＭＡ転送レートの測定結果を示すグラフの一例であり、図７は、６３Ｍバイトの基準データをＤＭＡ転送した場合のＤＭＡ転送レートの測定結果を示すグラフの一例である。
【００６０】
ここで、グラフ中のダブルディスクリプタ方式とは、ＣＰＵの割り込み時とＤＭＡ転送中の双方でディスクリプタリストを作成する方式であり、シングルディスクリプタ方式とは、ＣＰＵの割り込み時のみでディスクリプタリストを作成する方式をいう。また、グラフ中、「目安」として示しているのは、通常、ページ単位でディスクリプタが作成されＤＭＡ転送されるが、データの先頭部分や最後尾の部分がメモリ２８上、物理的にページ単位の境界に無い場合には、ＣＰＵ２４の割り込み回数や１回のＤＭＡ転送サイズに若干の変動が生じる場合がある。従って、ここでは目安と記載している。しかしながら、この変動は大きなものではなく、無視できる程度であるため、ここでは測定結果をそのまま用いて最適なブロック数を決定する。
【００６１】
各グラフから明らかなように、どの方式の場合でもブロック数が少なすぎると転送レートが低く、ブロック数を多くするにつれて転送レートがだんだんと上がっていくが、ある程度転送レートが上がるとそこで安定し、ブロック数をいくら多くしてもあまり転送レートが上がらなくなる。従って、ステップ１１６では、ＣＰＵ２４は、転送レートが安定したときのブロック数を、そのデータ量における最適なブロック数として決定する。なお、安定したときのブロック数を、例えば、ブロック数の変化に対する転送レートの変化率が所定範囲内に収まったときのブロック数としてもよい。図５〜図７に示す例では、○で囲ったブロック数を最適なブロック数として決定している。
【００６２】
ところで、各グラフから明らかなように、転送レートが高いブロック数は、○で囲ったブロック数以外にもあるが、本実施の形態でこれらのブロック数を最適なブロック数としないのは、以下の理由による。
【００６３】
ブロック数が多すぎると、１つのディスクリプタリストを作成する時間が長くなる。これにより、最初のＤＭＡ転送開始時間が遅れるだけでなく、ＤＭＡ転送期間中だけでは次のディスクリプタリストの作成が間に合わずに、待ち時間が発生して次のディスクリプタリストによるＤＭＡ転送の実行が遅れることもある。そこで、本実施の形態では、上記のように１つのディスクリプタリストを構成する最適なブロック数を求めるようにしている。
【００６４】
こうしてブロック数を決定した後、前述したように、そのブロック数を変数data_sizeに対応付けて所定のテーブルに登録する。図８は、基準データのデータ量（転送サイズ）に対応付けて最適なブロック数を登録したテーブルの一例である。このようなテーブルを、後述するＤＭＡ転送時にＣＰＵ２４が参照できるよう、メモリ２８やＨＤＤ３２に格納しておく。以下、このように最適なブロック数を登録したテーブルをブロック数テーブルと呼称する。
【００６５】
ステップ１１８では、配列size_tableの全ての要素に格納されたデータ量についてＤＭＡ転送測定が終了したか否かを判定する。ここで否定判定した場合には、ｋをリセットしてステップ１０２に戻り、ｊをカウントアップして、配列size_tableの次の要素に格納されているデータ量を変数data_sizeにセットして、上記と同様に測定を行なう。
【００６６】
このように、基準データ毎にブロック数を変動させながらＤＭＡ転送して転送レートを測定し、該転送レートに基づいて転送データ量毎に最適なブロック数を決定する。
【００６７】
なお、最適なブロック数を測定して決定するタイミングであるが、転送レートは、ＤＭＡ転送を行なうシステム（ここでは情報処理部１３）の転送性能によって変化するため、システム開発段階でこうした測定を行なって、最適なブロック数を決定するようにしてもよい。
【００６８】
また、同じシステムであっても、例えば、システム上で動作するモジュールの種類や数等が異なればＣＰＵ２４の負荷も変動して転送レートが変動することもあるため、システムの開発段階だけでなく、システム起動時や所定時間毎にこうした測定を行なって、最適なブロック数を決定しておき、ブロック数テーブルを更新するようにしてもよい。
【００６９】
また、ＬＣＤ２２を介してユーザが任意のタイミングで上記ブロック数の決定のためのプログラムを起動して、ブロック数テーブルを更新するようにしてもよい。
【００７０】
ＣＰＵ２４は、このように決定されテーブルに格納されたブロック数に従ってディスクリプタリストを作成してＤＭＡＣ４２にＤＭＡ転送を行なわせる。
【００７１】
図９は、ＤＭＡ転送時に実行されるプログラムのフローを示すフローチャートである。このプログラムは、ＣＰＵ２４により実行される。
【００７２】
ステップ２００では、変数remain_sizeに転送対象のデータの量を示すdata_sizeをセットする。変数remain_sizeは未転送のデータ量を示す変数であり、後述するように、１つのディスクリプタリストによるデータ転送が終了する毎に変数remain_sizeから転送済データ量（TransferSize）が減算される。また、ステップ２００では、転送対象のデータを転送するためのディスクリプタリストが全て作成されたか否かを示すフラグDL_end_flagに０をセットする。
【００７３】
ステップ２０２では、転送対象のデータ全てが転送終了したか否かを判定する。ここでは、変数remain_sizeが０になり且つフラグDL_end_flagが１になった場合に全データの転送が終了したと判定し、それ以外の場合には、転送は終了していないと判定する。
【００７４】
ステップ２０２で否定判定された場合には、ステップ２０４で、最初のディスクリプタリストを作成するか否かを判定する。
【００７５】
ステップ２０４で肯定判定した場合には、ステップ２０６に移行する。
【００７６】
ステップ２０６では、ブロック数テーブルからdata_sizeに応じたブロック数を読み出し、該ブロック数を２で除算した数を最初のディスクリプタリストのブロック数として設定する。
【００７７】
なお、ここで、ブロック数テーブルから読み出したブロック数を２で除算して最初のディスクリプタリストのブロック数としたのは、最初のディスクリプタリストの作成時間を短縮し、ＤＭＡＣ４２を起動するまでの時間を早くして、最初のＤＭＡ転送の開始タイミングを早めるためである。なお、逆に最初のディスクリプタリストのブロック数が少なすぎると、最初のディスクリプタリストによるＤＭＡ転送期間中に次のディスクリプタリストの作成が間に合わなくなる可能性があるため、ここでは２で除算して最初のディスクリプタリストのブロック数を求めている。なお、転送対象のデータの量（data_size）が極端に小さい場合には、ディスクリプタリストを構成する最適なブロック数も小さくなるため、読み出したブロック数をそのまま用いてもＤＭＡ転送の開始にあまり影響しないことが多い。従って、そのような場合には、読み出したブロック数を２で除算せずにそのまま用いるようにしてもよい。
【００７８】
また、ここでは２で除算して最初のディスクリプタリストのブロック数を求めたが、これに限定されず、データ量によっては３で除算してもよいし、所定数を減算する等、他の求め方で求めてもよい。
【００７９】
ステップ２０８では、ステップ２０６で設定したブロック数で最初のディスクリプタリストを作成してディスクリプタリスト管理キューに登録し、ディスクリプタ管理キューポインタが該作成したディスクリプタリストのアドレスを示す先頭のディスクリプタリストポインタを指すように設定する。そして、該ディスクリプタリスト管理キューポインタが指す先頭のディスクリプタリストポインタをＤＭＡＣ４２にセットした後、ＤＭＡＣ４２を起動する。これにより、ＤＭＡＣ４２がＤＭＡ転送を開始する。
【００８０】
一方、ステップ２０４で否定判定した場合には、ステップ２１０に移行し、ブロック数テーブルからdata_sizeに応じた最適なブロック数を読み出し、該ブロック数をこれから作成するディスクリプタリストのブロック数として設定する。
【００８１】
ステップ２０８またはステップ２１０の処理後は、ステップ２１２で、現在のＣＰＵ２４の使用率またはＣＰＵ２４の占有時間を取得する。本システムでは、このプログラムの実行中は、常にバックグラウンドでＣＰＵ２４の使用率またはＣＰＵ２４の占有時間をモニタしている。なお、ＣＰＵ２４の占有時間は、個々のディスクリプタリストによるＤＭＡ転送開始から累積的に計時され、ＤＭＡ転送終了時（ＣＰＵ２４割り込み時）にリセットされる。
【００８２】
ステップ２１４では、ディスクリプタリスト作成条件を満たしているか否かを判定する。ディスクリプタリスト作成条件は、予め本プログラム実行中に参照可能なＨＤＤ３２などの記憶装置に記憶され設定されている。本実施の形態では、
１，ＣＰＵ２４の使用率または占有時間が所定値を超えておらず、且つ直前のＣＰＵ２４の割り込みから現時点までに作成したディスクリプタリストの数が、次の割り込みまで（実行中のＤＭＡ転送が終了するまで）に作成可能なディスクリプタリストの数を超えていないこと、
２，ディスクリプタリスト管理キューにディスクリプタリストが１つも登録されていないこと（すなわち、ディスクリプタリスト管理キューポインタがＮＵＬＬであること）、
の２つの条件がディスクリプタリスト作成条件として設定されている。
【００８３】
本実施の形態では、この２つの作成条件うち、少なくとも一方が満たされれば、ＣＰＵ２４はステップ２１４で肯定判定する。
【００８４】
なお、実行中のＤＭＡ転送に係るディスクリプタリストのブロック数によって、ＣＰＵ２４の割り込みが発生するまでの時間が変動するため、その時間内で作成可能なディスクリプタリストの数も変動する。そこで、本実施の形態では、ディスクリプタリストのブロック数に応じて、ＤＭＡ転送中に作成可能なディスクリプタリストの数を予めＨＤＤ３２などの記憶装置に記憶して設定しておき、ＣＰＵ２４はこれを参照することにより（或いは、予め記憶しておくことはせずその都度演算することにより、）、次の割り込みまでに作成可能なディスクリプタリストの数を取得し、該作成可能なディスクリプタの数を上限としてディスクリプタリストを作成するようにしている（上記作成条件の１を参照）。
【００８５】
ステップ２１４で肯定判定した場合には、ステップ２１６で、ＣＰＵ２４は、上記ステップ２１０で読み出したブロック数のディスクリプタリストを１つ作成し、ディスクリプタリスト管理キューに登録する。
【００８６】
ステップ２１８では、転送対象のデータを転送するためのディスクリプタリストを全て作成したか否かを判定する。ここで否定判定した場合には、ステップ２０２に戻って、上記処理を繰り返す。一方、ステップ２１８で肯定判定した場合には、ステップ２２０でフラグDL_end_flagに１をセットしてステップ２０２に戻る。
【００８７】
また、ステップ２１４で、ディスクリプタリスト作成条件を満たしていないと判定した場合には、ＣＰＵ２４はディスクリプタリストの作成をこれ以上行なわずにステップ２２２に移行し、現在実行中のＤＭＡ転送が終了するのを待つ。ＤＭＡＣ４２においてＤＭＡ転送が終了して割り込みハンドラからシグナルが来ると、ステップ２２４に移行し、変数remain_sizeから今回のＤＭＡ転送により転送されたデータ量（TransferSize）を減算する。
【００８８】
ステップ２２６では、ＣＰＵ２４は、ディスクリプタリスト管理キューポインタに基づいてディスクリプタリスト管理キューから次のディスクリプタリストポインタを取り出す。
【００８９】
ステップ２２８では、上記取り出したディスクリプタリストポインタをＤＭＡＣ４２にセットした後、ＤＭＡＣ４２を起動する。これにより、ＤＭＡＣ４２が次のディスクリプタリストによるＤＭＡ転送を開始する。ステップ２２８の後は、ステップ２０２に戻り、上記と同様に処理を行なう。
【００９０】
ステップ２２４で変数remain_sizeから転送済データ量が徐徐に減算されて０になり、且つステップ２２０でフラグDL_end_flagが１になると、ステップ２０２で転送対象のデータが全て転送終了したと判定し、本プログラムを終了する。
【００９１】
次に、ディスクリプタリストの作成方法をタイミングチャートを参照しながら更に具体的に説明する。
【００９２】
図１０は、ディスクリプタリストのブロック数を最初のディスクリプタリストとそれ以外のディスクリプタリストとで異ならせる場合のタイミングチャートの一例を示す図である。
【００９３】
図１０において、「全画像データ転送区間」で示される期間は、転送対象のデータの全てをＤＭＡ転送するための期間であって、具体的には、ＤＭＡ転送機能（上記説明したＤＭＡ転送のプログラム）をコールしてから該プログラムが終了するまでの期間を示す。
【００９４】
また、図１０において、ＤＭＡ転送区間Ｔ１〜Ｔｎで示される複数の期間の各々は、１つのディスクリプタリストに基づくＤＭＡ転送の開始から終了までの期間（すなわち、ＣＰＵ２４の割り込みが終了してから次の割り込みが発生するまでの期間）をいう。
【００９５】
また、ディスクリプタリスト構築区間Ｄ１〜Ｄｎで示される複数の期間の各々は、１つのディスクリプタリストを作成する期間を示す（１つの構築区間で１つのディスクリプタリストが作成される）。なお、この例では、ＤＭＡ転送区間Ｔ１に対応するディスクリプタリストは、該ＤＭＡ転送区間Ｔ１の開始前の構築区間Ｄ１で作成され、ＤＭＡ転送区間Ｔ２に対応するディスクリプタリストは、その１つ前のＤＭＡ転送区間Ｔ１内の構築区間Ｄ２で作成され、ＤＭＡ転送区間Ｔ３に対応するディスクリプタリストは、その１つ前のＤＭＡ転送区間Ｔ２内の構築区間Ｄ３で作成され、、、、というように、１番目のディスクリプタリストを除く各ディスクリプタリストは、１つ前のＤＭＡ転送区間で作成される。
【００９６】
また、前述したように、本実施の形態では、１番目のディスクリプタリストのブロック数は、２番目以降のディスクリプタリストのブロック数よりも少なく設定される。従って、図１０に示すように構築区間Ｄ１は、構築区間Ｄ２〜Ｄｎに比べて短くなる。従って、１番目のディスクリプタリストに基づいて行なわれるＤＭＡ転送の開始タイミングが早まる。なお、２番目以降のディスクリプタリストは、前述したように、ブロック数決定プログラムで決定された最適なブロック数（ここでは、ブロック数テーブルに登録されているブロック数）で作成される。
【００９７】
次に、上述の実施の形態のＤＭＡ転送プログラムと同様に、ＤＭＡ転送実行中に（ＤＭＡ転送区間内で）ディスクリプタリスト作成条件を満たした場合に、該実行中のＤＭＡ転送以降に行なわれるＤＭＡ転送のためのディスクリプタリストを作成可能な範囲内で作成する場合についての具体例を、図９，図１０を参照して説明する。
【００９８】
図１１は、ＣＰＵ２４の使用率をモニタしながらディスクリプタリストを作成する場合のタイミングチャートの一例を示す図である。
【００９９】
図１１では、図１０に示す「全画像データ転送区間」、「ＤＭＡ転送区間」、及び「ディスクリプタリスト構築区間」に加えて、「システムのＣＰＵ使用率」が示されている。ＣＰＵ使用率は、モジュール等がＣＰＵ２４を占有する時間の割合を％で示したものである。
【０１００】
この例では、ディスクリプタリスト管理キューにディスクリプタリストが１つも登録されていなければ、ＣＰＵ使用率に拘わらずディスクリプタリストを作成するが、そうでなければ、ＣＰＵ使用率を参照し、ＣＰＵ使用率が予め定められた上限値を超えていなければ、そのＤＭＡ転送区間で作成可能な数以内で先行してディスクリプタリストを作成する。一方、ＣＰＵ使用率の上限値を超えた、或いはそのＤＭＡ転送区間で作成したディスクリプタリストの数がそのＤＭＡ転送区間で作成可能な数に到達した場合には、ディスクリプタリストの作成は行なわずに、次のＤＭＡ転送区間に作成処理を繰り越す。
【０１０１】
図１１に示すように、ＤＭＡ転送区間Ｔ１の前の構築区間Ｄ１でブロック数の少ないディスクリプタリストを１つ作成した後、ＤＭＡ転送区間Ｔ１において、最適なブロック数のディスクリプタリストを２つ作成している（構築区間Ｄ２、Ｄ３で合計２つ）。また、次のＤＭＡ転送区間Ｔ２では、３つの構築区間Ｄ４、Ｄ５、Ｄ６で３つのディスクリプタリストを作成している。ＤＭＡ転送区間Ｔ１，Ｔ２では、ＣＰＵ使用率が上限値よりも低いため、ＤＭＡ転送区間の長さに応じて作成可能な数だけディスクリプタリストが作成されている。
【０１０２】
ところが、ＤＭＡ転送区間Ｔ３ではＣＰＵ使用率は上限値を超えている。また、既にＤＭＡ転送区間Ｔ１，Ｔ２で、ＤＭＡ転送区間Ｔ６に対応するディスクリプタリストまで先行して作成済みである。従って、ＤＭＡ転送区間Ｔ３ではディスクリプタリスト作成条件を満たさないため、ディスクリプタリストが１つも作成されない。また、ＤＭＡ転送区間Ｔ４では、途中からＣＰＵ使用率が上限値以下となるため、その時点でディスクリプタリストが作成されている（構築区間Ｄ７）。
【０１０３】
このようにＣＰＵ使用率をモニタしながらディスクリプタリストを作成する方法は、例えば、実行モジュールの切替えが強制的に行なわれるプリエンプティブなモジュールでディスクリプタリストを作成するシステム等、様々なシステムに好適である。
【０１０４】
図１２は、ＣＰＵ２４の占有時間をモニタしながらディスクリプタリストを作成する場合のタイミングチャートの一例を示す図である。
【０１０５】
図１２では、図８に示す「全画像データ転送区間」、「ＤＭＡ転送区間」、及び「ディスクリプタリスト構築区間」に加えて、「ＣＰＵ占有時間」が示されている。ＣＰＵ占有時間は、ディスクリプタリストを作成するモジュールがＣＰＵ２４を占有する時間の累計を示したものであり、予め画像処理システム１０に組み込まれたＣＰＵ２４の占有時間を計時するモジュールによって得られる。なお、このＣＰＵ占有時間は、ＣＰＵ２４の割り込みが発生する度に、０にリセットされる。
【０１０６】
この例では、ディスクリプタリスト管理キューにディスクリプタリストが１つも登録されていなければ、ＣＰＵ占有時間に拘わらずディスクリプタリストを作成するが、そうでなければ、ＣＰＵ占有時間を参照し、ＣＰＵ占有時間が予め定められた上限値を超えていなければ、そのＤＭＡ転送区間で作成可能な数以内で先行してディスクリプタリストを作成する。一方、ＣＰＵ占有時間の上限値を超えた、或いはそのＤＭＡ転送区間で作成したディスクリプタリストの数がそのＤＭＡ転送区間で作成可能な数に到達した場合には、ディスクリプタリストの作成は行なわずに、次のＤＭＡ転送区間に作成処理を繰り越す。
【０１０７】
図１２に示すように、ＤＭＡ転送区間Ｔ１の前の構築区間Ｄ１でブロック数の少ないディスクリプタリストを１つ作成した後、ＤＭＡ転送区間Ｔ１において、最適なブロック数のディスクリプタリストを２つ作成している（構築区間Ｄ２、Ｄ３）。構築区間Ｄ３でディスクリプタリスト作成が終了した時点でＣＰＵ占有時間が上限値に到達しているため、このＤＭＡ転送区間Ｔ１ではこれ以上のディスクリプタリストの作成は行なわれていない。
【０１０８】
次のＤＭＡ転送区間Ｔ２でも、ディスクリプタリストを２つ作成した時点でＣＰＵ占有時間が上限値に到達しているため、それ以上のディスクリプタリストの作成は行なわれていない。続くＤＭＡ転送区間Ｔ３、Ｔ４でも同様である。
【０１０９】
このようにＣＰＵ占有時間をモニタしながらディスクリプタリストを作成する方法は、例えば、実行モジュールの切替えが強制的に行なわれないノンプリエンプティブな組込型モジュールでディスクリプタリストを作成するシステム等、様々なシステムに好適である。
【０１１０】
以上、様々な例について説明したが、本発明は、上述した実施の形態に限定されるものではなく、特許請求の範囲に記載された発明の範囲内で様々な設計上の変更を行うようにしてもよい。
【０１１１】
例えば、上記実施の形態では、ＤＭＡ転送の開始時に最初のディスクリプタリストのブロック数を演算で求めたが、これに限定されず、予め最初のディスクリプタリストのブロック数を求めておき、図１３に示すように、ブロック数テーブルに予め登録しておくようにしてもよい。
【０１１２】
また、本実施の形態では最初のディスクリプタリストのブロック数のみを少なくする例について説明したが、これに限定されず、例えば、最初のディスクリプタリストを最も少ないブロック数にして、２番目、３番目と段階的にブロック数を増やすようにしてもよい。このように段階的にブロック数を増やす場合であっても、なるべく早い段階で最適なブロック数のディスクリプタリストが作成されるようにして、転送効率が下がらないようにするとよい。
【図面の簡単な説明】
【０１１３】
【図１】本発明の情報処理装置に係る実施の形態としての情報処理部を含む画像処理システムの構成例を示す図である。
【図２】仮想記憶方式を採用したシステムにおいてＤＭＡＣにより読み込まれるディスクリプタリストの一例を示す図である。
【図３】ディスクリプタリストを管理するディスクリプタリスト管理キューの構造を説明する説明図である。
【図４】ブロック数を決定するためのプログラムのフローを示すフローチャートである。
【図５】あるシステムでのＤＭＡ転送レートを、４Ｍバイトの基準データをブロック数を変えて測定した場合の測定結果の具体例を示すグラフである。
【図６】あるシステムでのＤＭＡ転送レートを、３２Ｍバイトの基準データをブロック数を変えて測定した場合の測定結果の具体例を示すグラフである。
【図７】あるシステムでのＤＭＡ転送レートを、６３Ｍバイトの基準データをブロック数を変えて測定した場合の測定結果の具体例を示すグラフである。
【図８】転送データ量（転送サイズ）に対応付けて最適なブロック数を登録したブロック数テーブルの一例である。
【図９】ＤＭＡ転送時に実行されるプログラムのフローを示すフローチャートである。
【図１０】ディスクリプタリストのブロック数を最初のディスクリプタリストとそれ以外のディスクリプタリストとで異ならせる場合のタイミングチャートの一例を示す図である。
【図１１】ＣＰＵの使用率をモニタしながらディスクリプタリストを作成する場合のタイミングチャートの一例を示す図である。
【図１２】ＣＰＵの占有時間をモニタしながらディスクリプタリストを作成する場合のタイミングチャートの一例を示す図である。
【図１３】ブロック数テーブルの変形例である。
【符号の説明】
【０１１４】
１０  画像処理システム
１２  マザーボード
１３  情報処理部
１４  コントローラボード
２４  ＣＰＵ
２６  ハブ
２８  メモリ
３０  ハブ
３２  ＨＤＤ
４０  バスブリッジ
４２  ＤＭＡコントローラ
４４  メモリ
【図１】
2009059276.tif 000003
【図２】
2009059276.tif 000004
【図３】
2009059276.tif 000005
【図４】
2009059276.tif 000006
【図５】
2009059276.tif 000007
【図６】
2009059276.tif 000008
【図７】
2009059276.tif 000009
【図８】
2009059276.tif 000010
【図９】
2009059276.tif 000011
【図１０】
2009059276.tif 000012
【図１１】
2009059276.tif 000013
【図１２】
2009059276.tif 000014
【図１３】
2009059276.tif 000015