(57)【要約】【課題】  マルチスレッドプロセッサにおいて、割込み処理が重ねて発生した場合に、高速かつ効率的な処理を行うことができるマルチスレッドプロセッサを提供する。【解決手段】  一つのスレッドの実行に割り当てられるハードウェアの単位であるハードウェアスレッドを複数備えるマルチスレッドプロセッサに対し、ハードウェアスレッドのうちの一のハードウェアスレッドが、第１の割込命令によって割込まれた処理を実行している間にさらに第２の割込み命令を受けたとき、第２の割込命令によって実行される処理を他のハードウェアスレッドに実行させる割込み管理部１０５を設ける。【選択図】  図１
2006146641.tif 000002
【特許請求の範囲】
【請求項１】
複数のスレッドを並行して実行可能なマルチスレッドプロセッサであって、
第１の割込みにより実行される割込み処理を実行している間にさらに第２の割込みを受けたとき、前記第２の割込によって実行される割込み処理を並行して実行させる割込み制御手段を備えることを特徴とするマルチスレッドプロセッサ。
【請求項２】
前記第１の割込及び第２の割込によって実行される処理が処理の内容に応じて各々複数の段階に分割され、
前記割込み制御手段は、
並行して実行できない段階の処理同士を時間差を設けて実行させ、かつ、並行して実行可能な段階の処理同士を同時に実行させることを特徴とする請求項１に記載のマルチスレッドプロセッサ。
【請求項３】
処理の内容に応じて複数の段階に分割された処理の各々にレベルが付され、
前記割込み制御手段は、前記レベルに応じて処理が並行して実行可能であるか否かを判断することを特徴とする請求項１または２に記載のマルチスレッドプロセッサ
【請求項４】
複数のスレッドを並行して実行可能なマルチスレッドプロセッサの割込み方法であって、
第１の割込みにより実行される割込み処理を実行している間にさらに第２の割込みを受けたとき、前記第２の割込みによって実行される処理を並行して実行させる割込み制御工程を含むことを特徴とするマルチスレッドプロセッサの割込み処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のスレッドを並行に実行できるマルチスレッドプロセッサに及びマルチスレッドプロセッサの割込み処理方法に関する。
【背景技術】
【０００２】
プロセッサは、コンピュータにおける基本的な演算処理を実行する装置である。従来のプロセッサにおいては、割込み処理の実行中に重ねて割込みが発生した場合、一般に、図６（ａ）、（ｂ）のような方法による対応が行われている。
図６（ａ）に示した方法は、最初の割込みの処理が終了するまで、次に発生した割込みの処理開始を待つものであり、このような方法においては、割込みが発生順に処理される。
【０００３】
また、図６（ｂ）に示した方法は、割込みに優先度を設定しておき、割込み処理の実行中に、より優先度が高い割込みが発生した場合、先に実行されていた割込み処理を中断して、優先度の高い割込みの処理を実行するものである。このような方法においては、優先度の高い割込みの処理開始が、先行する割込み処理のために待たされる事態を防ぐことができる。
【０００４】
ただし、図６（ａ）に示した方法においては、最初の割込みの処理が終了するまで、次に発生した割込みの処理が開始されないため、後に発生した割込みの処理の応答が遅くなるという問題があった。
また、図６（ｂ）に示した方法においては、より優先度が高い割込みが発生した場合、先に実行されていた割込み処理が中断されるため、先に発生した割込み処理の終了が遅れると共に、後に発生した割込みの処理に切り換える場合に、コンテキストスイッチが発生し、処理効率が低下するという問題があった。
【０００５】
なお、割込み処理の実行中に重ねて割込みが発生した場合の対応に関する技術は、例えば、特許文献１あるいは特許文献２に開示されている。
【特許文献１】特開平４−２６７４３８号公報
【特許文献２】特開平４−１９５３４０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
ところで、近年、複数のスレッドを並列的に処理可能なマルチスレッドプロセッサが用いられるようになっている。マルチスレッドプロセッサは、スレッド単位で処理を並列化することによりハードウェア資源を有効に活用し、全体として処理を効率的に行うことが可能なプロセッサである。
しかしながら、上述の公報にあるように、従来技術は、シングルスレッドプロセッサに関するものであり、マルチスレッドプロセッサの場合に、その特徴を有効に活用できるものではなかった。このため、マルチスレッドプロセッサにおいて、割込みが重ねて発生した場合に、マルチスレッドプロセッサの特性を生かして高速かつ効率的な処理を行うことは困難であった。
【０００７】
本発明の課題は、マルチスレッドプロセッサにおいて、割込みが重ねて発生した場合に、高速かつ効率的な処理を行うことができるマルチスレッドプロセッサ及びマルチスレッドプロセッサの割込み処理方法を提供することを目的とする。
【課題を解決するための手段】
【０００８】
以上の課題を解決するため、本発明のマルチスレッドプロセッサは、複数のスレッドを並行して実行可能なマルチスレッドプロセッサであって、第１の割込みにより実行される割込み処理を実行している間にさらに第２の割込みを受けたとき、前記第２の割込によって実行される割込み処理を並行して実行させる割込み制御手段を備えることを特徴とする。
【０００９】
このような発明によれば、第１の割込みにより実行される割込み処理を実行している間にさらに第２の割込みを受けたとき、第２の割込によって実行される処理を並行して実行させることができる。
このため、本発明は、マルチスレッドプロセッサにおいて、割込みが重ねて発生した場合に、マルチスレッドプロセッサの特性を生かし。高速かつ効率的な処理を行うことができるマルチスレッドプロセッサを提供することができる。
【００１０】
また、本発明のマルチスレッドプロセッサは、前記第１の割込及び第２の割込によって実行される割込み処理が処理の内容に応じて各々複数の段階に分割され、前記割込み制御手段は、並行して実行できない段階の処理同士を時間差を設けて実行させ、かつ、並行して実行可能な段階の処理同士を同時に実行させることを特徴とする。
このような発明によれば、割込みによって実行される割込み処理を複数に分割し、このうち並行して動作できない処理については時間差を設けて実行させ、同時に処理可能な処理については並行して動作させることができる。このため、割込み処理を行いながら重ねて発生する割込みによって起こる不具合を自動的に防ぐことができる。
【００１１】
また、本発明のマルチスレッドプロセッサは、処理の内容に応じて複数の段階に分割された割込み処理の各々にレベルが付され、前記割込み制御手段は、前記レベルに応じて処理が並行して実行可能であるか否かを判断することを特徴とする。
このような発明によれば、処理が同時に可能か否かを割込み制御手段が比較的簡易に判断することができる。また、処理の段階が変わったことをも比較的簡易に判断することができる。
【００１２】
また、本発明のマルチスレッドプロセッサの割込み処理方法は、複数のスレッドを並行して実行可能なマルチスレッドプロセッサの割込み処理方法であって、第１の割込みにより実行される割込み処理を実行している間にさらに第２の割込みを受けたとき、前記第２の割込によって実行される割込み処理を並行して実行させる割込み制御工程を含むことを特徴とする。
【００１３】
このような発明によれば、第１の割込みにより実行される割込み処理を実行している間にさらに第２の割込みを受けたとき、第２の割込によって実行される割込み処理を並行して実行させることができる。
このため、本発明は、マルチスレッドプロセッサにおいて、割込みが重ねて発生した場合に、マルチスレッドプロセッサの特性を生かし。高速かつ効率的な処理を行うことができるマルチスレッドプロセッサの割込み処理方法を提供することができる。
【発明を実施するための最良の形態】
【００１４】
以下、図を参照して本発明に係るマルチスレッドプロセッサ及びマルチスレッドプロセッサの割込み方法の実施の形態を説明する。
図１は、本発明の一実施形態のマルチスレッドプロセッサのブロック図である。図示したマルチスレッドプロセッサは、複数のスレッドを並行して実行することができる。そして、第１割込（割込みＡ）によって実行される割込み処理を実行している間、さらに第２割込（割込みＢ）を受けたとき、割込Ｂによって実行される割込み処理を並行して実行させる割込み制御手段を備えている。
【００１５】
すなわち、マルチスレッドプロセッサ１は、外部デバイス１１１と接続している。外部デバイス１１１は、マルチスレッドプロセッサ１に対して割込みを発生し得る機器である。外部デバイス１１１が発生した割込は、割込みコントローラ１０９を通じてマルチスレッドプロセッサ１に伝えられる。割込みコントローラ１０９は、マルチスレッドプロセッサ１の指示によって特定の割込みを制御している。
【００１６】
また、マルチスレッドプロセッサ１は、マルチスレッドプロセッサ1全体を管理する実行管理部１０３の他、割込みに関する動作を制御する割込み管理部１０５を備えている。さらに、マルチスレッドプロセッサ１は、各スレッドで実行されている処理の割込みレベルを保持する処理中割込みレベル保持部１０１を備えている。処理中割込みレベル保持部１０１は、さらに、保持されている割込みレベルのうち、現在実行されている処理の割込みレベルのうち、最も高い割込みレベルも保持している。
【００１７】
図１に示した処理中割込みレベル保持部１０１は、スレッド０、スレッド１、…スレッドｎの割込みレベルを保持しており、さらに、このうちの最も高い割込みレベルを割込み最高レベル（ｍａｘＬＶ）として別途保持している。
さらに、マルチスレッドプロセッサ１は、ＰＳＲ（Processor Status Register）１０７を備えている。ＰＳＲ１０７は、マルチスレッドプロセッサ１が現在実行している実行ステータスを示すレジスタである。ＰＳＲ１０７は、スレッドごとの実行ステータスを示す複数のレジスタと、マルチスレッドプロセッサ全体の実行ステータスを示す唯一のレジスタとが含まれている。ＰＳＲ１０７によれば、マルチスレッドプロセッサ１が現在通常処理を行っているものか、あるいは割込み処理を行っているものかもわかる。
【００１８】
また、本実施形態では、プロセッサ全体の状態を示すＰＳＲ１０７に単に処理が割込み処理であるか否かだけでなく、マルチスレッドプロセッサ１全体の割込み処理のレベルを示す情報をも保持させるようにした。このように構成すれば、ＰＳＲ１０７に保持されている割込み処理のレベルを書き換えることによってマルチスレッドプロセッサ１の割込みのレベルをも変更することができる。この点については後述する。
【００１９】
割込み管理部１０５は、処理中割込みレベル保持部１０１に保持されている割込みレベルを認識し、この結果に基づいて発生した割込みが処理可能であるか否かを判断する。また、処理中割込みレベル保持部１０１に対しては割込みレベルの変更があったときに割込みレベルの遷移を通知する。また、ＰＳＲ１０７に対しては、保持されている割込みレベルにかかる情報を更新する。
【００２０】
以上の構成において、本実施形態では、割込み管理部１０５が割込み制御手段として機能する。すなわち、割込み管理部１０５は、外部デバイス１１１が発生した割込みを割込みコントローラ１０９から受け取る。そして、割込みが発生した時に、すでに割込みを受けて処理を実行しているか否かを判断する。判断の結果、割込みによって処理を実行している場合、現在行われている割込み処理の割込みレベルと後に発生した割込みの割込みレベルとを比較して割込み処理開始の可否を判断している。さらに、割込み管理部１０５は、割込み処理開始が可能であると判断すると、後に発生した割込みによってなされる処理を開始する。
【００２１】
また、図２は、図１に示したマルチスレッドプロセッサ１においてなされる割込み処理を説明するための図である。本実施形態のマルチスレッドプロセッサは、４つのスレッドを並列に実行可能な４つのハードウェアスレッドでなる。本実施形態では、４つのハードウェアスレッドの各々をＨＷスレッド１、ＨＷスレッド２、ＨＷスレッド３、ＨＷスレッド４と特定する。
【００２２】
なお、ハードウェアスレッドとは、マルチスレッドプロセッサが備える複数のハードウェアリソースの全部もしくは一部を区分し、実行されるスレッドごとに割り当てた仮想的な単位をいう。また、本実施形態では、ハードウェアスレッドには、レジスタファイルやＰＳＲが含まれる。
図２に示した割込み処理では、割込みＡの発生前、マルチスレッドプロセッサでは、ＨＷスレッド１〜ＨＷスレッド４の全てが各々異なるスレッドの処理を行っている。このとき、マルチスレッドプロセッサ１に対して割込みＡが発生し、続いて割込みＢが発生する。
【００２３】
本実施形態では、割込みによってなされる処理（割込み処理）を処理の内容に応じて３つの段階に分割している。処理の内容とは、割込みコントローラ１０９にする処理（第１段階処理）、割込が要求されたＨＷスレッドにアクセスする割込みのメイン処理第２段階処理）、割込みが終了したときのＯＳによるタスク起動、イベント通知といった処理（第３段階処理）である。
【００２４】
以上の第１段階処理、第２段階処理、第３段階処理において、第１段階処理同士は割込みコントローラ１０９が１つであるために並行して実行できない。また、第２段階処理同士は、互いに異なるハードウェアスレッドに対してアクセスするので並列に実行可能である。さらに、第３段階処理同士は、ＯＳによって排他的に順次行われる処理であるから並列に実行できない。
【００２５】
上記した規制により、割込み管理部１０５は、マルチスレッドプロセッサ１に対してなされた割込Ｂの割込み処理をＨＷスレッド２に実行させる。このとき、ＨＷスレッド１とＨＷスレッド２との間で並行して実行できない段階の処理同士を時間差を設けて実行させ、かつ、並行して実行可能な段階の処理同士を同時に実行させている。なお、割込み管理部１０５によるハードウェアスレッド上の処理の実行は、実行管理部１０３に対して割込み処理の実行を指示する制御信号を出力することによって行われる。
【００２６】
この結果、図２に示したように、割込みＡによってＨＷスレッド１の通常処理が中断され、割込みＡによって行われる割込み処理Ａが実行される。割込みＡの割込み処理Ａは、前述した３つの第１段階処理、第２段階処理、第３段階処理に分割されていて、図中、割込み処理Ａの第１段階処理を処理Ａ１、割込み処理Ａの第２段階処理を処理Ａ２、割込み処理Ａの第３段階処理を処理Ａ３と記す。
【００２７】
次に、割込みＢが発生すると、割込み管理部１０５は、ＨＷスレッド２に割込みＢによってなされる割込み処理Ｂを実行させる。割込みＢの割込み処理Ｂも３つの第１段階処理、第２段階処理、第３段階処理に分割されていて、図中、割込み処理Ｂの第１段階処理を処理Ｂ１、割込み処理Ｂの第２段階処理を処理Ｂ２、割込み処理Ｂの第３段階処理を処理Ｂ３と記す。
【００２８】
このとき、割込み管理部１０５は、処理Ａ１と処理Ｂ１とが並行して実行できないことから処理Ａ１の終了を待って処理Ｂ１を実行させる。また、処理Ｂ１の実行中、処理Ｂ１と処理Ａ２とは並行して実行可能であるから同時に処理させる。さらに、処理Ａ３の実行中に処理Ｂ２が完了した場合にも、処理Ａ３と処理Ｂ３とが並行して実行できない。このことから、割込み管理部１０５は、処理Ａ３の完了を待って処理Ｂ３を実行させる。
【００２９】
図３は、以上述べた動作を実現するための具体的なマルチスレッドプロセッサ１の動作を説明するための図である。図３にあっても、マルチスレッドプロセッサ１では、図３に示した状態と同様に、ＨＷスレッド１に対して命令Ａ、命令Ｂが続いて発行されている。
また、図３中、ＨＷスレッド１、ＨＷスレッド２には各ＨＷスレッドで実行される処理が処理Ａ１、処理Ａ２…のレベルで記されている。さらに、図３のＨＷ１ＴレベルにはＨＷスレッド１で実行されている処理の割込みレベルが記されていて、ＨＷ２ＴレベルにはＨＷスレッド２で実行されている処理の割込みレベルが記されている。割込み最高レベルには、ＨＷ１Ｔレベル、ＨＷ２Ｔレベルのうち、実行されている処理の最も高い割込みレベルが記されている。
【００３０】
割込み最高レベルは、処理中割込みレベル保持部１０１に保持されている。また、本実施形態では、実行中の処理の割込みレベルのうち最も高いもの、すなわち割込み最高レベルがマルチスレッドプロセッサ１全体の割込みレベルとしてプロセッサ全体の状態を表すＰＳＲ１０７に書き込まれている。
本実施形態では、第１段階処理の割込みレベルを１〜３２のいずれかの値とし、第２段階処理、第３段階処理の割込みレベルを３２以上の値とする。図３に示した例では、第２段階処理の割込みレベルを３３、第３段階処理の割込みレベルを３３とした。割込みレベルは、数値の小さいものほど高レベルであることを示す。
【００３１】
図３によれば、ＨＷスレッド１で割込みレベル２の処理Ａ１の実行中に割込みレベル３の処理Ｂ１の割込みが要求されている。このような場合、割込み管理部１０５は、先ず、処理Ｂ１の割込みレベルとして３を取得する。また、現在の割込み最高レベルが２であることを検出し、現在行われている処理が並行して実行できない第１段階処理であることを検出する。このとき、割込み管理部１０５は、処理Ａ１が完了するまで割込み処理の開始を待って処理Ｂ１をＨＷスレッド２で実行させる。
【００３２】
処理Ａ１の終了後、ＨＷスレッド１の割込みレベルは３３に変更される。このとき、割込み管理部１０５は、ＨＷスレッド１で行われる処理の割込みレベルが３３になったことによってＨＷスレッド１で行われる処理が第２段階処理になったことを検出する。そして、割込みレベル３の処理Ｂ１をＨＷスレッド２で実行する。
なお、割込みレベルの変更方法としては、当該スレッドのＰＳＲ１０７の内容を割込み管理部１０５が書き換えるものと、実行管理部１０３等が割込みレベルを変化させる特殊命令を発生し、この命令を受けて割込み管理部１０５が当該スレッドのＰＳＲ１０７の内容を書き換えるものとが考えられる。
【００３３】
図４は、以上述べた割込み処理発生時のマルチスレッドプロセッサ１の割込み発生時の動作を説明するためのフローチャートである。図示したフローチャートは、割込みが発生した時点でスタートする。割込みＡの後、さらに割込みＢが発生した場合で説明すると、割込み管理部１０５は、割込みＢの割込みレベルｎｅｗＬＶを処理中割込みレベル保持部１０１から取得し（Ｓ５０１）、処理中の割込み最高レベルｍａｘＬＶが３２より大きいか否かを判断する（Ｓ５０２）。この結果、ｍａｘＬＶが３２より小さかった場合（Ｓ５０２：Ｎｏ）、現在実行されている処理が並行して動作できない処理１であると判断して割込み処理開始を１サイクル待つ（Ｓ５０８）。
【００３４】
一方、ステップＳ５０２においてｍａｘＬＶが３２より大きいと判断された場合（Ｓ５０２：Ｙｅｓ）、さらにｎｅｗＬＶがｍａｘＬＶよりも小さいか否かを判断する（Ｓ５０３）。この判断の結果、ｍａｘＬＶがｎｅｗＬＶよりも小さい場合（Ｓ５０３：Ｎｏ）、現在行われている処理の方が高い優先度を持つものとして割込み処理開始を１サイクル待つ（Ｓ５０８）。
【００３５】
また、ステップＳ５０３において、ｎｅｗＬＶがｍａｘＬＶよりも小さいと判断された場合（Ｓ５０３：Ｙｅｓ）、割込み管理部１０５は、割込みに使用できるＨＷスレッドがあるか否かを判断する（Ｓ５０４）。検索の結果、使用可能なＨＷスレッドがなかった場合（Ｓ５０５：Ｎｏ）、割込みの処理開始を１サイクル待った後に再び検索する（Ｓ５０９）。また、割込み可能なＨＷスレッドがあった場合（Ｓ５０５：Ｙｅｓ）、ＰＳＲ１０７にｎｅｗＬＶをマルチスレッドプロセッサ１の割込みレベルとして設定し（Ｓ５０６）、割込みＢによる割込み処理を開始する（Ｓ５０７）。
【００３６】
図５は、本実施形態の割込みレベルを変更するための処理を説明するためのフローチャートである。図示したフローチャートは、割込み処理の割込みレベルＬＶを変更する際にスタートする。割込み管理部１０５は、実行管理部１０３等からの割込みレベル変更命令の発行により（Ｓ６０１）、現在行っている割込み処理の割込みレベルｃｕｒＬＶを取得する（Ｓ６０２）。また、割込み管理部１０５は、割込みレベルがｎｅｗＬＶの処理に対してさらに割込みを行った場合に実行される処理の割込みレベルｎｅｘｔＬＶを計算によって取得する（Ｓ６０３）。そして、両者を比較し、同一レベルの処理間で割込みが実行されるか否か検索する（Ｓ６０４）。
【００３７】
ステップＳ６０４の検索の結果、同一レベルの処理同士の割込みが発生する場合（Ｓ６０５：Ｙｅｓ）、割込み処理開始を１サイクル待ち（Ｓ６０９）、再び同一レベルの処理間で割込み処理が実行されるか否か検索する（Ｓ６０４）。
また、ステップＳ６０５の判断の結果、同一レベルの処理間での割込みは実行されないと判断された場合（Ｓ６０５：Ｎｏ）、割込む処理と割込まれる処理とが並列処理可能なものであるか否かを判断する（Ｓ６０６）。この結果、並列処理が不可能である場合（Ｓ６０６：Ｎｏ）、割込み処理開始を１サイクル待ち（Ｓ６０９）、再び並列処理が可能な処理間で割込み処理が実行されるのか否かを判断する（Ｓ６０６）。
【００３８】
また、ステップＳ６０６において、並列処理が可能であると判断された場合（Ｓ６０６：Ｙｅｓ）、ＰＳＲ１０７にｎｅｘｔＬＶを設定する（Ｓ６０７）。そして、次の割込みを開始させ、処理を終了する。
以上述べた本実施形態によれば、第１段階処理の実行中に割込みを行うことがなく、第１段階処理を並行して実行させようとしたために起こる不具合を未然に防ぐことができる。また、このような処理によれば、本実施形態は、第２段階処理の実行中には他のハードウェアスレッドによって実行される他の処理を開始（割込み）させることができる。
【００３９】
さらに、本実施形態では、第２段階処理から第３段階処理への移行時に割込みレベルの変更処理が実行される。このため、競合する割込みのうち一方の割込みによる割込み処理開始を待たせることができる。このような処理により、本実施形態は、割込みＢの処理Ｂ３中に割込みＡが処理Ａ３に切り替わったことによって起こる不具合を未然に防ぐことができる。
【００４０】
なお、本実施形態は、以上述べた構成に限定されるものではない。例えば、本実施形態では、第１段階に１〜３２、第２段階に３３、第３段階に３４のレベルを付している。しかし、このようなレベルの付与の仕方以外にも、以下のようにレベルを付与することが考えられる。
（１）第１段階：１〜３２、第２段階：第１段階＋３２、第３段階：第２段階＋３２
（２）第１段階：１〜１６、第２段階以降：１７以上の任意の数値
以上の例によれば、（１）の例では割込みレベルの変更の際に変更後のレベルを明確に指示する必要がある。ただし、割込み処理の種別ごとに割込み処理の段階の分割数を変えることができるという利点がある。また、第２段階よりも第３段階以降に高いレベルを付与することもでき、より柔軟な対応が可能になる。
【００４１】
また、本実施形態では、割込み処理を３段階に分割しているが、これに限定されることなく、処理の内容に応じて任意の段階に分割することができる。
さらに、本実施形態は、数値の低い方が高位のレベルを示すものに限定されるものではなく、各レベルを示す数値としては、任意の値を選択することができる。このような場合にも、各処理が並列に実行可能であるか否かは同一のレベル同士で比較すればよく、本実施形態で説明したフローチャートの手順で割込み処理を実行することができる。
【図面の簡単な説明】
【００４２】
【図１】本発明の一実施形態のマルチスレッドプロセッサのブロック図である。
【図２】図１に示したマルチスレッドプロセッサにおいてなされる割込み処理を説明するための図である。
【図３】図２に示した動作を実現するための具体的なマルチスレッドプロセッサの動作を説明するための図である。
【図４】本発明の一実施形態のマルチスレッドプロセッサの動作を説明するためのフローチャートである。
【図５】本発明の一実施形態のマルチスレッドプロセッサの割込みレベルを変更するための処理を説明するためのフローチャートである。
【図６】従来のシングルスレッドの割込み処理を説明するための図である。
【符号の説明】
【００４３】
1  マルチスレッドプロセッサ、１０１  レベル保持部、１０３  実行管理部
１０５  管理部、１０９  コントローラ、１１１  外部デバイス
【図１】
2006146641.tif 000003
【図２】
2006146641.tif 000004
【図３】
2006146641.tif 000005
【図４】
2006146641.tif 000006
【図５】
2006146641.tif 000007
【図６】
2006146641.tif 000008