(57)【要約】【課題】バッファの空きアドレスを格納するアドレス記憶部から読み出す値に異常が生じたときに発生するバッファのリソースの低減を防止する。【解決手段】フレーム処理装置１は、バッファ２の空きアドレスを記憶するアドレス記憶部３と、巡回アドレスによって読出アドレスを指定することによりアドレス記憶部３から読み出した空きアドレスへフレームを書き込むフレーム書込部４と、バッファ２の各アドレスの使用状態を記憶する第１記憶部１０と、バッファ２にフレームを書き込むときフレームが書き込まれるアドレスについて第１記憶部１０に記憶される使用状態を変更する状態変更部１１と、巡回アドレスが一巡する期間に亘って書込処理が行われず、かつ未使用であると第１記憶部１０に記憶されるアドレスを検出するアドレス検出部２０を備える。【選択図】図１
2011234114.tif 000002
【特許請求の範囲】
【請求項１】
バッファと、
前記バッファの空きアドレスを記憶するアドレス記憶部と、
巡回的順序で生成される巡回アドレスによって読出アドレスを指定することにより前記アドレス記憶部から読み出される前記空きアドレスへ、フレームを書き込むフレーム書込部と、
前記バッファの各アドレスの使用状態を記憶する第１記憶部と、
前記バッファにフレームが書き込まれる場合に、フレームが書き込まれるアドレスについて前記第１記憶部に記憶される使用状態を未使用から使用中へ変更する状態変更部と、
前記巡回アドレスが一巡する期間に亘って前記フレーム書込部による書込処理が行われず、かつ未使用であると前記第１記憶部に記憶されるアドレスを検出するアドレス検出部を備えるフレーム処理装置。
【請求項２】
前記アドレス検出部により検出されたアドレスを、前記アドレス記憶部へ入力するアドレス入力部を備える請求項１に記載のフレーム処理装置。
【請求項３】
前記アドレス検出部が、
前記バッファのアドレス毎に変数を記憶する第２記憶部と、
未使用であると前記第１記憶部に記憶されるアドレスに対する前記変数に、第１所定値を入れる第１入力部と、
前記バッファにフレームが書き込まれる場合に、フレームが書き込まれるアドレスに対する前記変数に第２所定値を入れる第２入力部と、
前記巡回アドレスが一巡する期間に亘り前記変数が前記第１所定値を有するアドレスを検出する検出部と、
を備える請求項１又は２に記載のフレーム処理装置。
【請求項４】
バッファの空きアドレスをアドレス記憶部に記憶し、
巡回的順序で生成される巡回アドレスによって読出アドレスを指定することにより、前記アドレス記憶部から前記空きアドレスを読み出し、
前記空きアドレスにフレームが書き込まれる場合に、前記バッファの各アドレスの使用状態を記憶する第１記憶部に記憶される、前記空きアドレスの使用状態を未使用から使用中へ変更し、
前記巡回アドレスが一巡する期間に亘って前記フレームの書込処理が行われず、かつ未使用であると前記第１記憶部に記憶されるアドレスを検出するフレーム処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書で論じられる実施態様は、フレームをバッファに記憶するフレーム処理装置及びフレーム処理方法に関する。
【背景技術】
【０００２】
通信伝送路上で伝送されるフレームを処理するフレーム処理装置には、フレームを記憶するバッファが設けられる。フレーム処理装置は、バッファ内の空きアドレスを記憶するアドレス記憶部を備える。バッファへフレームを格納する場合には、アドレス記憶部に記憶された空きアドレスを読み出して、読み出された空きアドレスにフレームを書き込む。バッファからフレームが読み出されるとき、空になったアドレスが再びアドレス記憶部に戻される。
【０００３】
なお、各種情報を格納するためのメモリの空きアドレスを管理するメモリの空き管理装置であって、メモリのアドレス数と同じ数のアドレスを持ち、該当アドレスが空きか使用中であるかを記憶する空きアドレス管理テーブルを具備するものが提案されている。この空き管理装置は、メモリのあるアドレスが空きか使用中であるかを示す情報を、そのアドレスと同じアドレス値を持つ空きアドレス管理テーブルの領域に保持する。
【０００４】
また、交換装置内に存在する全てのバッファアドレスの使用状況を登録できるアドレス使用状況テーブルを使用状況記憶部内に備える交換装置が提案されている。アドレス使用状況テーブルを備えることにより、交換装置の共有バッファメモリ内にはどのようなバッファアドレスが現実に存在していて、現在どの待ち行列内に存在しているかを把握できる。
【０００５】
また、バッファメモリ、空きポインタ管理部、バッファメモリ管理部、ＱｏＳスケジューラ、ＱｏＳ管理用コンテンツメモリ、バッファメモリにデータを書込む書込部、バッファメモリからデータを読出す読出部を備えるバッファメモリ装置が提案されている。
【０００６】
また、書き込みアドレスを記憶するアドレスメモリとバッファメモリの空きアドレスを記憶する空きアドレスメモリとバッファメモリの使用中のアドレスについての情報をもつ誤りアドレス検出回路を備えるバッファメモリ回路が提案されている。誤り検出回路は、バッファメモリの使用中のアドレスと空きアドレスメモリから読み出されたアドレスとの重複を検出し、重複するときにエラー信号を制御回路に送出する。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０００−１０５７２３号公報
【特許文献２】特開平７−３２１７９５号公報
【特許文献３】特開２００４−２４０７１１号公報
【特許文献４】特開平９−３０５４９３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
アドレス記憶部から読み出される空きアドレスの値に異常が生じると、本来の格納先と異なるアドレスにフレームが格納される。このため、本来の格納先のアドレスがアドレス記憶部に返却される機会がなくなりこのアドレスにフレームが格納されなくなるため、利用可能なバッファのリソースが低減する。
【０００９】
実施態様に係る装置及び方法は、アドレス記憶部から読み出されるバッファの空きアドレスの値に異常が生じた場合における、利用可能なバッファのリソースの低減を防止する。
【課題を解決するための手段】
【００１０】
他の実施形態によるフレーム処理装置は、バッファと、バッファの空きアドレスを記憶するアドレス記憶部と、巡回的順序で生成される巡回アドレスによって読出アドレスを指定することによりアドレス記憶部から読み出される空きアドレスへ、フレームを書き込むフレーム書込部と、バッファの各アドレスの使用状態を記憶する第１記憶部と、バッファにフレームが書き込まれる場合に、フレームが書き込まれるアドレスについて第１記憶部に記憶される使用状態を未使用から使用中へ変更する状態変更部と、巡回アドレスが一巡する期間に亘ってフレーム書込部による書込処理が行われず、かつ未使用であると第１記憶部に記憶されるアドレスを検出するアドレス検出部を備える。
【００１１】
他の実施形態によるフレーム処理方法では、バッファの空きアドレスをアドレス記憶部に記憶し、巡回的順序で生成される巡回アドレスによって読出アドレスを指定することにより、アドレス記憶部から空きアドレスを読み出し、空きアドレスにフレームが書き込まれる場合に、バッファの各アドレスの使用状態を記憶する第１記憶部に記憶される、空きアドレスの使用状態を未使用から使用中へ変更し、巡回アドレスが一巡する期間に亘って前記フレームの書込処理が行われず、かつ未使用であると第１記憶部に記憶されるアドレスを検出する。
【発明の効果】
【００１２】
本件開示の装置又は方法によれば、アドレス記憶部から読み出されるバッファの空きアドレスの値に異常が生じた場合における、利用可能なバッファのリソースの低減を防止される。
【図面の簡単な説明】
【００１３】
【図１】フレーム処理装置の第１構成例を示す図である。
【図２】図１に示すフレーム処理装置におけるフレーム書込処理の説明図である。
【図３】フレーム処理装置の第２構成例を示す図である。
【図４】図３に示すフレーム処理装置におけるフレーム書込処理の説明図である。
【図５】フレーム処理装置の第３構成例を示す図である。
【図６】図５に示すフレーム処理装置におけるフレーム読出処理の説明図である。
【図７】フレーム処理装置の第４構成例を示す図である。
【図８】フレーム処理装置の第５構成例を示す図である。
【図９】図８に示すフレーム処理装置におけるフレーム書込処理の説明図である。
【図１０】図８に示すフレーム処理装置におけるアドレス異常の検出処理の説明図である。
【図１１】図８に示すアドレス記憶部、第１記憶部、第２記憶部及びバッファの初期状態の説明図である。
【図１２】図８に示すアドレス記憶部、第１記憶部、第２記憶部及びバッファに記憶されるデータの説明図（その１）である。
【図１３】図８に示すアドレス記憶部、第１記憶部、第２記憶部及びバッファに記憶されるデータの説明図（その２）である。
【図１４】図８に示すアドレス記憶部、第１記憶部、第２記憶部及びバッファに記憶されるデータの説明図（その３）である。
【図１５】図８に示すアドレス記憶部、第１記憶部、第２記憶部及びバッファに記憶されるデータの説明図（その４）である。
【図１６】図８に示すアドレス記憶部、第１記憶部、第２記憶部及びバッファに記憶されるデータの説明図（その５）である。
【図１７】図８に示すアドレス記憶部、第１記憶部、第２記憶部及びバッファに記憶されるデータの説明図（その６）である。
【図１８】図８に示すアドレス記憶部、第１記憶部、第２記憶部及びバッファに記憶されるデータの説明図（その７）である。
【図１９】図８に示すアドレス記憶部、第１記憶部、第２記憶部及びバッファに記憶されるデータの説明図（その８）である。
【図２０】図８に示すアドレス記憶部、第１記憶部、第２記憶部及びバッファに記憶されるデータの説明図（その９）である。
【図２１】図８に示すアドレス記憶部、第１記憶部、第２記憶部及びバッファに記憶されるデータの説明図（その１０）である。
【図２２】図８に示すアドレス記憶部、第１記憶部、第２記憶部及びバッファに記憶されるデータの説明図（その１１）である。
【図２３】図８に示すアドレス記憶部、第１記憶部、第２記憶部及びバッファに記憶されるデータの説明図（その１２）である。
【発明を実施するための形態】
【００１４】
以下、添付する図面を参照して本発明の実施例について説明する。図１は、フレーム処理装置の第１構成例を示す図である。例えば、フレーム処理装置１は、通信伝送路上で伝送されるフレームを伝送するフレーム伝送装置であってよい。このようなフレーム伝送装置には、例えばスイッチ装置やルータ装置などがある。フレーム処理装置１は、バッファ２と、アドレス記憶部３と、フレーム書込部４と、フレーム読出部５と、第１記憶部１０と、状態変更部１１と、アドレス検出部２０を備える。
【００１５】
バッファ２は、入力されるフレームを格納する。本実施例のバッファ２は、Ｎ個のフレームを格納する記憶容量を有する。Ｎ個のフレームを格納するそれぞれの格納先は、Ｎ値のアドレスによって指定される。各格納先のアドレスは、例えば「０」〜「Ｎ−１」であってよい。以下の説明において、バッファ２の各格納先を表すアドレスを「バッファアドレス」と表記することがある。
【００１６】
アドレス記憶部３は、バッファ２の空きアドレスを記憶する。アドレス記憶部３は、Ｎ個分のバッファアドレスを記憶する記憶容量を有する。Ｎ個分のバッファアドレスを格納するそれぞれの格納先は、Ｎ値のアドレスによって指定される。各格納先のアドレスは、例えば「０」〜「Ｎ−１」であってよい。
【００１７】
フレーム書込部４は、アドレス記憶部３からバッファ２の空きアドレスを読み出して、取得された空きアドレスにフレームを書き込む。フレーム書込部４がアドレス記憶部３からバッファ２の空きアドレスを読み出す際に使用する読出アドレスは、巡回的順序で生成される巡回アドレスである。以下の説明において、アドレス記憶部３から空きアドレスを読み出す際に使用する読出アドレスを、「第１読出アドレス」と表記することがある。
【００１８】
巡回アドレスである第１読出アドレスは、Ｎ個のアドレスの中から１つずつ所定の順序で選択された値に順次変化する。Ｎ個のアドレスが全て使用されると、第１読出アドレスは、再び最初に選択されたアドレスに戻る。例えば、第１読出アドレスは「０」から順に１つずつ増加するアドレスであってよい。第１読出アドレスが「１５」になった後、再び第１読出アドレスは「０」に戻る。
【００１９】
フレームがバッファ２に書き込まれるとき、フレーム読出部５は、フレームが書き込まれる書込アドレスを受信する。フレーム読出部５は、受信されたこのアドレスを読出アドレスとして使用してバッファ２からフレームを読み出す。以下の説明において、フレーム読出部５が、バッファ２からフレームを読み出す際に使用する読出アドレスを、「第２読出アドレス」と表記することがある。フレーム読出部５は、第２読出アドレスをアドレス記憶部３へ返却する。第２読出アドレスは、アドレス記憶部３の未使用領域のうち最も読み出し順序が早いアドレスに格納される。
【００２０】
第１記憶部１０は、各バッファアドレスの使用状態を記憶する。第１記憶部１０は、Ｎ個のバッファアドレスのそれぞれについて使用状態を記憶する記憶容量を有する。例えば、第１記憶部１０はＮビットの記憶容量を有していてよい。Ｎ個のバッファアドレスそれぞれの使用状態を記憶する格納先は、Ｎ値のアドレスによって指定される。各格納先のアドレスは、例えば「０」〜「Ｎ−１」であってよい。
【００２１】
以下に説明する各実施例では、バッファアドレス「０」〜「Ｎ−１」の各使用状態が、第１記憶部１０のアドレス「０」〜「Ｎ−１」にそれぞれ記憶される。しかし、第１記憶部１０は、各バッファアドレスの使用状態を記憶できれば足りる。第１記憶部１０として、各バッファアドレスの使用状態を記憶できる様々な構成を採用可能である。
【００２２】
バッファアドレスが使用中であるか又は未使用であるかを表す値として、様々な値を使用してよい。例えば本実施例では、バッファアドレスが使用中であるとき使用状態を表す値として「１」が第１記憶部１０に記憶され、バッファアドレスが未使用であるとき使用状態を表す値として「０」が記憶される。
【００２３】
状態変更部１１は、バッファ２にフレームが書き込まれる場合に、フレームが書き込まれるバッファアドレスについて第１記憶部１０に記憶される使用状態を未使用（０）から使用中（１）へ変更する。
【００２４】
アドレス検出部２０は、巡回アドレスである第１読出アドレスが一巡する期間に亘ってフレーム書込部４による書込処理が行われず、かつ未使用であると第１記憶部１０に記憶されるアドレスを検出する。
【００２５】
図２は、図１に示すフレーム処理装置１におけるフレーム書込処理の説明図である。なお、他の実施態様においては、下記のオペレーションＡＡ〜ＡＩの各オペレーションはステップであってもよい。
【００２６】
オペレーションＡＡにおいてフレーム書込部４は、フレームの受信を試みる。フレームが受信されたとき（オペレーションＡＡ：Ｙ）、処理はオペレーションＡＢへ進む。フレームが受信されないとき（オペレーションＡＡ：Ｎ）、オペレーションＡＡが繰り返される。
【００２７】
オペレーションＡＢにおいてフレーム書込部４は、第１読出アドレスを巡回的順序で生成する。第１読出アドレスを生成するのは、フレーム書込部４でなくともよい。他の図示しない構成要素によって第１読出アドレスが生成されてもよい。オペレーションＡＣにおいてフレーム書込部４は、生成された第１読出アドレスを読出アドレスとして使用してアドレス記憶部３からバッファ２の空きアドレスを読み出す。
【００２８】
オペレーションＡＤにおいて、状態変更部１１は、読み出された空きアドレスについて第１記憶部１０に記憶される使用状態を、未使用を表す値「０」から使用中を表す値「１」へ変更する。このとき例えば、第１記憶部１０の読出アドレスは、アドレス記憶部３から読み出された空きアドレスによって指定されてよい。状態変更部１１は、第１記憶部１０から読み出される使用状態が「未使用（０）」を表すか否かをチェックしてよい。使用状態が「未使用（０）」を表すとき、状態変更部１１は、アドレス記憶部３から読み出された空きアドレスによって書込アドレスが指定された第１記憶部１０へ、「使用中」を表す値「１」を入力してよい。
【００２９】
オペレーションＡＥにおいてフレーム書込部４は、アドレス記憶部３から読み出された空きアドレスにフレームを格納する。オペレーションＡＦにおいてフレーム読出部５は、アドレス記憶部３から読み出された空きアドレスを記憶する。なお、オペレーションＡＤ〜ＡＦはどの順序で実行されてもよい。
【００３０】
オペレーションＡＧにおいてアドレス検出部２０は、第１読出アドレスを読出アドレスとして指定された第１記憶部１０から使用状態を読み出す。すなわちアドレス検出部２０は、第１読出アドレスと同じ値を持つバッファアドレスの使用状態を読み出す。アドレス検出部２０は、第１読出アドレスと同じ値を持つバッファアドレスが未使用であるか否かを判定する。
【００３１】
第１読出アドレスと同じ値を持つバッファアドレスが未使用でないとき（オペレーションＡＧ：Ｎ）、処理は終了する。第１読出アドレスと同じ値を持つバッファアドレスが未使用であるとき（オペレーションＡＧ：Ｙ）、処理はオペレーションＡＨへ進む。
【００３２】
オペレーションＡＨにおいてアドレス検出部２０は、現在の第１読出アドレスと同じ値を持つバッファアドレスに対して、第１読出アドレスが一巡する期間に亘ってフレーム書込部４による書込処理が行われたことがあるか否かを判定する。
【００３３】
例えばアドレス検出部２０は、各バッファアドレスについて、バッファアドレスにフレームが書き込まれたときに書込処理が実行されたことを記憶してよい。そして、アドレス検出部２０は、第１読出アドレスが現在のアドレス値と同じアドレスから以前スタートし一巡して再び現在のアドレス値に戻ってくるまでの期間内に、現在の第１読出アドレスと同じ値のバッファアドレスに書込処理が実行されたか否かを判定してよい。
【００３４】
書込処理が行われたことがない場合（オペレーションＡＨ：Ｙ）には、処理はオペレーションＡＩに進む。書込処理が行われたことがある場合（オペレーションＡＨ：Ｎ）には、処理は終了する。
【００３５】
オペレーションＡＩにおいてアドレス検出部２０は、現時点の第１読出アドレスを異常アドレスとして検出する。
【００３６】
あるバッファアドレスが未使用である場合、もし異常によりこのバッファアドレスが消失していなければこのバッファアドレスはアドレス記憶部３に格納される。このため、第１読出アドレスが一巡する間に、このバッファアドレスは、少なくとも一度はフレーム書込部４によって読み出され、このバッファアドレスにフレームが書き込まれる。したがって、第１読出アドレスが一巡する期間に亘ってフレームの書込処理が行われず、かつ未使用であるバッファアドレスは、アドレス記憶部３の記憶から消失したバッファアドレスであると考えることができる。
【００３７】
本実施例によれば、アドレス記憶部３の記憶から消失したバッファアドレスを検出することができる。このため、アドレス記憶部３から読み出されるバッファアドレスの値に異常が生じることによりアドレス記憶部３の記憶から消失するアドレスが発生しても、このアドレスを特定することが可能となる。
【００３８】
なお、上述の実施例では、オペレーションＡＧにおいて判定されるバッファアドレスの値は、第１読出アドレスによって指定される。その代わりに、第１読出アドレスと同期して変化するように巡回的順序で生成され、且つアドレス記憶部３の各アドレスを指定可能な他の巡回アドレスによって、バッファアドレスの値が指定されてもよい。このような他の巡回アドレスの例は、第１読出アドレスより所定数のアドレス分だけ進んだアドレスや、第１読出アドレスより所定数のアドレス分だけ遅れたアドレスである。
【００３９】
このときオペレーションＡＨにおいてアドレス検出部２０は、上記他の巡回アドレスと同じ値を持つバッファアドレスに対して、上記他の巡回アドレスが一巡する期間に亘ってフレーム書込部４による書込処理が行われたことがあるか否かを判定する。
【００４０】
図３は、フレーム処理装置の第２構成例を示す図である。フレーム処理装置１は、図１に示す構成に加えて第１判定部１２を備える。第１判定部１２は、アドレス記憶部３から読み出される空きアドレスが、第１記憶部１０おいて未使用だと記憶されているか否かを判定する。アドレス記憶部３から読み出される空きアドレスが未使用でないとき、第１判定部１２は、アドレス記憶部３から読み出される空きアドレスの異常を知らせる第１異常検出信号をフレーム書込部４に出力する。第１異常検出信号を受信したとき、フレーム書込部４は、アドレス記憶部３から読み出した空きアドレスを破棄し、空きアドレスの読み出し処理をやり直す。
【００４１】
図４は、図３に示すフレーム処理装置１におけるフレーム書込処理の説明図である。なお、他の実施態様においては、下記のオペレーションＢＡ〜ＢＧの各オペレーションはステップであってもよい。
【００４２】
オペレーションＢＡ〜ＢＣの処理は、それぞれ図２に示すオペレーションＡＡ〜ＡＣと同様である。オペレーションＢＤにおいて第１判定部１２は、アドレス記憶部３から読み出される空きアドレスが、第１記憶部１０おいて未使用だと記憶されているか否かを判定する。このとき例えば、第１記憶部１０の読出アドレスは、アドレス記憶部３から読み出された空きアドレスによって指定されてよい。第１判定部１２は、第１記憶部１０から読み出される使用状態が「未使用（０）」を表すか否かをチェックしてよい。
【００４３】
読み出された空きアドレスが未使用であるとき（オペレーションＢＤ：Ｙ）、処理はオペレーションＢＥへ進む。読み出された空きアドレスが未使用でない（オペレーションＢＤ：Ｎ）、処理はオペレーションＢＢに戻る。その結果フレーム書込部４は、取得した空きアドレスを破棄し、アドレス記憶部３から空きアドレスを読み出す処理をやり直す。
【００４４】
オペレーションＢＥ〜ＢＧの処理は、図２に示すオペレーションＡＤ〜ＡＦの処理と同様である。また、アドレス検出部２０は、オペレーションＢＤにて空きアドレスが破棄された場合と破棄されなかった場合の両方において、図２に示すオペレーションＡＧ〜ＡＩを実行する。
【００４５】
本実施例によれば、アドレス記憶部３から読み出される空きアドレスが既に使用中であるとき、フレーム書込部４がこのアドレスにフレームを上書きすることが防止される。したがって、アドレス記憶部３から読み出されるバッファアドレスの値に異常が生じても、すでにバッファ２に格納済みのフレームに他のフレームが上書きされる不都合を解消することができる。なお、以下に示すいずれの実施例においても、第１判定部１２を設けてよい。
【００４６】
図５は、フレーム処理装置の第３構成例を示す図である。フレーム読出部５は、読出部３０と、読出制御部３１を備える。図１に示す構成要素と同じ構成要素には同じ参照番号を付する。
【００４７】
読出部３０は、読出制御部３１から第２読出アドレスを受信する。読出部３０は、受信した第２読出アドレスを読出アドレスとして使用してバッファ２からフレームを読み出す。読出制御部３１は、読出アドレス決定部３２と第２判定部３３を備える。
【００４８】
読出アドレス決定部３２は、フレームがバッファ２に書き込まれるとき、フレーム書込部４から、フレームが書き込まれる書込アドレスを受信する。読出アドレス決定部３２は、受信したアドレスを記憶する。読出アドレス決定部３２は、記憶されたアドレスの中から第２読出アドレスを選択して第２判定部３３に出力する。
【００４９】
例えば読出アドレス決定部３２は、バッファ２に格納される各フレームの優先度に応じてアドレスを記憶する優先度別アドレス記憶部を備えてもよい。このとき、フレーム書込部４は、フレームから優先度情報を抽出して読出アドレス決定部３２に与えてもよい。優先度情報は、例えばクオリティ・オブ・サービス（ＱｏＳ: Quality of Service）であってよい。
【００５０】
読出アドレス決定部３２は、優先度情報に応じて優先度別アドレス記憶部にフレームを格納してよい。読出アドレス決定部３２は、優先度別アドレス記憶部に割り当てられた優先度にしたがってアドレスの出力順序を決定してよい。
【００５１】
第２判定部３３は、読出アドレス決定部３２から出力された第２読出アドレスが、未使用だと第１記憶部１０に記憶されているか否かを判定する。例えば、第２判定部３３は、第２読出アドレスによって読出アドレスが指定された第１記憶部から使用状態を読み出す。第２判定部３３は、読み出された使用状態が「未使用（０）」を表すか否かを判定する。読み出された使用状態が「未使用（０）」を表すとき、第２判定部３３は、第２読出アドレスを破棄する。
【００５２】
図６は、図５に示すフレーム処理装置１におけるフレーム読出処理の説明図である。なお、他の実施態様においては、下記のオペレーションＣＡ〜ＣＥの各オペレーションはステップであってもよい。
【００５３】
オペレーションＣＡにおいて読出アドレス決定部３２は、第２読出アドレスを決定する。オペレーションＣＢにおいて第２判定部３３は、第２読出アドレスが、未使用だと第１記憶部１０に記憶されているか否かを判定する。第２読出アドレスが未使用だと第１記憶部１０に記憶されているとき（オペレーションＣＢ：Ｙ）、処理は終了する。このため、第２読出アドレスは使用されない。すなわち第２読出アドレスは破棄される。第２読出アドレスが未使用だと第１記憶部１０に記憶されていないとき（オペレーションＣＢ：Ｎ）、処理はオペレーションＣＣへ進む。
【００５４】
オペレーションＣＣにおいてフレーム読出部５は、第２読出アドレスについて第１記憶部１０に記憶されている使用状態を表す値を、「未使用」を表す値「０」に変更する。オペレーションＣＤにおいてフレーム読出部５は、第２読出アドレスをアドレス記憶部３に格納する。オペレーションＣＥにおいて読出部３０は、バッファ２からフレームを読み出す。なお、オペレーションＣＣ〜ＣＥはどの順序で実行されてもよい。
【００５５】
本実施例によれば、バッファ２からフレームを読み出すために使用する第２読出アドレスに、有効なフレームが格納されているか否かを判断することができる。このため、第２読出アドレスに異常が生じても、すでに読み出されたフレームが重複して読み出されてしまう不都合が解消される。なお、図５に示すフレーム読出部５を、本明細書において説明される他の実施例に設けてもよい。
【００５６】
図７は、フレーム処理装置の第４構成例を示す図である。フレーム処理装置１は、図１に示す構成に加えてアドレス入力部２１を備える。アドレス入力部２１は、アドレス検出部２０により検出されたアドレスをアドレス記憶部３に格納する。
【００５７】
アドレス検出部２０は、アドレス記憶部３の記憶から消失したバッファアドレスを検出する。したがってアドレス入力部２１によってアドレス記憶部３に格納されるアドレスは、アドレス記憶部３の記憶から消失したバッファアドレスである。本実施例によれば、アドレス記憶部３から読み出したバッファアドレスの値の異常によりアドレス記憶部３の記憶からアドレスが消失しても、消失したアドレスを復活させバッファ２のリソースの低減を防止することが可能となる。
【００５８】
図８は、フレーム処理装置の第５構成例を示す図である。アドレス検出部２０は、第２記憶部４０と、第１入力部４１と、第２入力部４２と、検出部４３を備える。図７に示す構成要素と同じ構成要素には同じ参照番号を付する。
【００５９】
第２記憶部４０は、バッファアドレス毎に変数を記憶する。第２記憶部４０は、Ｎ個のバッファアドレスのそれぞれについて変数を記憶する記憶容量を有する。例えば、第２記憶部４０はＮビットの記憶容量を有していてよい。Ｎ個のバッファアドレスそれぞれについて上記変数を記憶する格納先は、Ｎ値のアドレスによって指定される。各格納先のアドレスは、例えば「０」〜「Ｎ−１」であってよい。以下の説明において、バッファアドレスについて第２記憶部４０に記憶される変数のことを、「バッファアドレスに関する変数」と表記することがある。
【００６０】
バッファアドレス毎に記憶される変数は、少なくとも第１所定値と第２所定値を持つことができる。例えば第１所定値は「１」であってよく第２所定値は「０」であってよい。
【００６１】
以下の各実施例では、バッファアドレス「０」〜「Ｎ−１」に関する各変数が、第２記憶部４０のアドレス「０」〜「Ｎ−１」にそれぞれ記憶される。しかし、第２記憶部４０は、各バッファアドレス毎に変数を記憶できれば足りる。第２記憶部４０として、各バッファアドレス毎に変数を記憶できる様々な構成を採用可能である。
【００６２】
第１入力部４１は、あるバッファアドレスについて第１記憶部１０に記憶される使用状態が「未使用」であると判定されたとき、このバッファアドレスに関する変数に第１所定値「１」を入力する。第２入力部４２は、あるバッファアドレスにフレームが書き込まれる場合に、このバッファアドレスに関する変数に第２所定値「０」を入力する。
【００６３】
検出部４３は、第１読出アドレスが一巡する期間に亘って変数が第１所定値を持ち続けるバッファアドレスを検出する。
【００６４】
あるバッファアドレスに関する変数の値が第１所定値「１」であるということは、このバッファアドレスについて以前に未使用と判定されてから、このバッファアドレスにまだフレームが書き込まれたことがないことを意味する。また、あるバッファアドレスに関する変数の値が第２所定値「０」であるということは、このバッファアドレスについて以前に未使用と判定されてから、このバッファアドレスにフレームが書き込まれたことがあることを意味する。
【００６５】
例えば第１入力部４１は、現在の第１読出アドレスと同じ値のバッファアドレスについて第１記憶部１０に記憶される使用状態が「未使用（０）」であるか否かを判定してよい。このバッファアドレスについて第１記憶部１０に記憶される使用状態が「未使用（０）」であるとき、第１入力部４１は、このバッファアドレスに関する変数の値が第２所定値「０」であるか否かを判定する。このバッファアドレスに関する変数の値が第２所定値「０」であるとき、第１入力部４１は、この変数の値に第１所定値「１」を入力する。
【００６６】
一方で、現在の第１読出アドレスと同じ値のバッファアドレスについて記憶される使用状態が「未使用（０）」であるとき、検出部４３は、このバッファアドレスに関する変数の値が第１所定値「１」であるか否かを判定する。このバッファアドレスに関する変数の値が第１所定値「１」のままであるということは、以前に変数に第１所定値「１」が入力された後に第１読出アドレスが一巡する間に、一度も変数に第２所定値「０」が入力されなかったことを意味する。これは、第１読出アドレスが一巡する間に亘って、このバッファアドレスに一度もフレームが書込まれなかったことを意味する。
【００６７】
このようにして、検出部４３は、第１読出アドレスが一巡する期間に亘って変数が第１所定値を持ち続けるバッファアドレスを検出し、アドレス記憶部３の記憶から消失したバッファアドレスを検出する。なお、図１及び図２を参照して説明した第１構成例と同様に、第１読出アドレスと同期して変化するように巡回的順序で生成され、且つアドレス記憶部３の各アドレスを指定可能な他の巡回アドレスが、第１読出アドレスの代わりに使用されてもよい。
【００６８】
図９は、図８に示すフレーム処理装置１におけるフレーム書込処理の説明図である。なお、他の実施態様においては、下記のオペレーションＤＡ〜ＤＨの各オペレーションはステップであってもよい。オペレーションＤＡ〜ＤＥの処理は、それぞれ図４に示すオペレーションＢＡ〜ＢＥと同様である。
【００６９】
オペレーションＤＦにおいて第２入力部４２は、読み出された空きアドレスに関する変数に第２所定値「０」を入力する。オペレーションＤＧ及びＤＨの処理は、それぞれ図４に示すオペレーションＢＦ及びＢＧと同様である。なお、オペレーションＤＥ〜ＤＨはどの順序で実行されてもよい。
【００７０】
図１０は、図８に示すフレーム処理装置１におけるアドレス異常の検出処理の説明図である。なお、他の実施態様においては、下記のオペレーションＤＩ〜ＤＭの各オペレーションはステップであってもよい。オペレーションＤＩにおいて、第１入力部４１及び検出部４３は、第１読出アドレスを読出アドレスとして指定された第１記憶部１０から使用状態を読み出し、第１読出アドレスと同じ値を持つバッファアドレスが未使用であるか否かを判定する。第１読出アドレスと同じ値を持つバッファアドレスが未使用でないとき（オペレーションＤＩ：Ｎ）、処理は終了する。第１読出アドレスと同じ値を持つバッファアドレスが未使用であるとき（オペレーションＤＩ：Ｙ）、処理はオペレーションＤＪへ進む。
【００７１】
オペレーションＤＪにおいて第１入力部４１及び検出部４３は、第１読出アドレスを読出アドレスとして指定された第２記憶部４０から変数を読み出す。すなわち第１入力部４１及び検出部４３は、第１読出アドレスと同じ値を持つバッファアドレスに関する変数を読み出す。オペレーションＤＫにおいて第１入力部４１及び検出部４３は、読み出された変数の値が第２所定値「０」であるか否かを判定する。
【００７２】
変数の値が第２所定値「０」であるとき（オペレーションＤＫ：Ｙ）、処理はオペレーションＤＬへ進む。変数の値が第２所定値「０」でないとき（オペレーションＤＫ：Ｎ）、処理はオペレーションＤＭへ進む。
【００７３】
オペレーションＤＬにおいて第１入力部４１は、第１読出アドレスと同じ値を持つバッファアドレスに関する変数に第１所定値「１」を入力する。オペレーションＤＭにおいて検出部４３は、第１読出アドレスと同じ値を持つバッファアドレスを、アドレス記憶部３の記憶から消失した異常アドレスとして検出する。
【００７４】
続いて、アドレス記憶部３、第１記憶部１０、第２記憶部４０及びバッファ２の経時変化を参照することにより、図８に示すフレーム処理装置１におけるフレーム書込処理を説明する。図１１は、図８に示すアドレス記憶部３、第１記憶部１０、第２記憶部４０及びバッファ２の初期状態の説明図である。以下の説明では、バッファ２が１６個のフレームを格納することができる場合を想定する。
【００７５】
初期状態において、バッファ２の全てのアドレスが空きアドレスである。したがって、バッファ２の全てのアドレスが、アドレス記憶部３内に記憶されている。本例では、アドレス記憶部３の各アドレス「０」〜「１５」には、バッファアドレス値「０」〜「１５」がそれぞれ格納されている。第１記憶部１０に記憶される使用状態は、全て「未使用（０）」である。また、第２記憶部４０に格納される変数の値は、全て第２所定値（０）である。
【００７６】
図１１に示す状態の後、６個目のフレームをバッファに格納する状態を図１２に示す。アドレス記憶部３の読出アドレスである第１読出アドレスの位置は「５」まで進んでいる。アドレス記憶部３のアドレス「５」に格納されるバッファアドレスは「５」であるため、フレームはバッファアドレス「５」に書き込まれる。
【００７７】
図９に示すオペレーションＤＥによって、バッファアドレス「５」について第１記憶部１０に記憶される使用状態は、「使用中（１）」へ変更される。フレームが書き込まれたバッファアドレス「５」は第１読出アドレス「５」の値が等しい。このため、図１０に示すオペレーションＤＩの判定において、第１読出アドレスと同じ値のバッファアドレスについて第１記憶部１０に記憶される使用状態は「使用中（１）」になる。このため第２記憶部４０の変数の変更は生じない。
【００７８】
図１２に示す状態の後、１１個目のフレームをバッファに格納する状態を図１３に示す。第１読出アドレスの位置は「１１」まで進む。アドレス記憶部３のアドレス「１１」に格納されるバッファアドレスは「１１」であるため、フレームはバッファアドレス「１１」に書き込まれる。図９に示すオペレーションＤＥによって、バッファアドレス「１１」について第１記憶部１０に記憶される使用状態は、「使用中（１）」へ変更される。
【００７９】
図１３に示す状態では、フレーム読出部５がバッファアドレス「３」に格納されたフレームを読み出す。フレーム読出部５は、バッファアドレス「３」をアドレス記憶部３に格納する。バッファアドレス「３」は、アドレス記憶部３の現在の未使用領域「０」〜「１０」のうち最も読み出し順序が早いアドレス「０」に格納される。また図６に示すオペレーションＣＣと同様に、バッファアドレス「３」について第１記憶部１０に記憶される使用状態は、「未使用（０）」へ変更される。
【００８０】
続いて、初期状態からある程度時間が経過した後の正常状態におけるフレーム処理装置１のフレーム書込処理を説明する。図１４は、初期状態からある程度時間が経過した状態を示す。アドレス記憶部３のアドレス「０」〜「１５」には、バッファアドレス値「３」、「１４」、「１」、「８」、「５」、「７」、「１５」、「９」、「１３」、「１１」、「２」、「６」、「１２」、「４」、「１０」及び「０」がそれぞれ格納されている。第１読出アドレスの位置は現在「０」である。
【００８１】
アドレス記憶部３のアドレス「０」に格納されるバッファアドレスは「３」であるため、フレームはバッファアドレス「３」に書き込まれる。図９に示すオペレーションＤＥによって、バッファアドレス「３」について第１記憶部１０に記憶される使用状態は、「使用中（１）」へ変更される。また図９に示すオペレーションＤＦによって、バッファアドレス「３」に関する変数には第２所定値「０」が入力される。
【００８２】
図１０に示すオペレーションＤＩの判定において、第１読出アドレスと同じ値のバッファアドレス「０」について第１記憶部１０に記憶される使用状態は「未使用（０）」になる。また、図１０に示すオペレーションＤＫの判定において、バッファアドレス「０」に関する変数の値は第２所定値（０）である。
【００８３】
バッファアドレス「０」に関する変数の値が第２所定値（０）であるということは、この変数に第１所定値（１）が入力された後に第１読出アドレスが一巡するまでの間に、バッファアドレス「０」に書込処理が実行されたことを意味する。したがって、バッファアドレス「０」は、アドレス記憶部３の記憶から消失した異常アドレスではないと判断される。図１０に示すオペレーションＤＬでは、次に第１読出アドレスが一巡する間における書込処理の実行を検出するために、バッファアドレス「０」に関する変数に第１所定値（１）が入力される。
【００８４】
図１４に示す状態の後、第１読出アドレスの位置が「７」まで進んだ状態を図１５に示す。アドレス記憶部３のアドレス「７」に格納されるバッファアドレスは「９」であるため、フレームはバッファアドレス「９」に書き込まれる。図９に示すオペレーションＤＥによって、バッファアドレス「９」について第１記憶部１０に記憶される使用状態は、「使用中（１）」へ変更される。
【００８５】
また、第１読出アドレスと同じ値のバッファアドレス「７」について第１記憶部１０に記憶される使用状態は「使用中（１）」である。このためバッファアドレス「７」に関する変数の変更は生じない。
【００８６】
フレーム読出部５は、バッファアドレス「１４」に格納されたフレームを読み出す。フレーム読出部５は、バッファアドレス「１４」をアドレス記憶部３に格納する。バッファアドレス「１４」は、アドレス記憶部３の現在の未使用領域「０」〜「６」のうち最も読み出し順序が早いアドレス「０」に格納される。また図６に示すオペレーションＣＣと同様に、バッファアドレス「１４」について第１記憶部１０に記憶される使用状態は、「未使用（０）」へ変更される。
【００８７】
図１５に示す状態の後、第１読出アドレスの位置が「１０」まで進んだ状態を図１６に示す。アドレス記憶部３のアドレス「１０」に格納されるバッファアドレスは「２」であるため、フレームはバッファアドレス「２」に書き込まれる。図９に示すオペレーションＤＥによって、バッファアドレス「２」について第１記憶部１０に記憶される使用状態は、「使用中（１）」へ変更される。また図９に示すオペレーションＤＦによって、バッファアドレス「２」に関する変数には第２所定値「０」が入力される。
【００８８】
図１０に示すオペレーションＤＩの判定において、第１読出アドレスと同じ値のバッファアドレス「１０」について第１記憶部１０に記憶される使用状態は「未使用（０）」になる。また、図１０に示すオペレーションＤＫの判定において、バッファアドレス「１０」に関する変数の値は第２所定値（０）である。このため、バッファアドレス「１０」は、アドレス記憶部３の記憶から消失した異常アドレスではないと判断される。図１０に示すオペレーションＤＬでは、次に第１読出アドレスが一巡する間における書込処理の実行を検出するために、バッファアドレス「１０」に関する変数に第１所定値（１）が入力される。
【００８９】
図１６に示す状態の後、第１読出アドレスの位置が「１４」まで進んだ状態を図１７に示す。アドレス記憶部３のアドレス「１４」に格納されるバッファアドレスは「１０」であるため、フレームはバッファアドレス「１０」に書き込まれる。図９に示すオペレーションＤＥによって、バッファアドレス「１０」について第１記憶部１０に記憶される使用状態は、「使用中（１）」へ変更される。
【００９０】
また、図１６に示す状態においてバッファアドレス「１０」に関する変数には第１所定値「１」が入力された。図１７に示す状態では、図９に示すオペレーションＤＦによってこの変数の値が第２所定値「０」にリセットされる。このようにして、バッファアドレス「１０」に関する変数には、図１６の状態の後に第１読出アドレスが一巡する間に書込処理が起きた事実が反映される。
【００９１】
また、図１５に示す状態において、バッファアドレス「１４」がアドレス記憶部３に返却されたため、バッファアドレス「１４」について第１記憶部１０に記憶される使用状態が「未使用（０）」へ変更された。図１７に示す状態では、次に第１読出アドレスが一巡する間における書込処理の実行を検出するために、図１０に示すオペレーションＤＬによってバッファアドレス「１４」に関する変数に第１所定値（１）が入力される。
【００９２】
図１７に示す状態の後、第１読出アドレスの位置が「１５」まで進んだ状態を図１８に示す。アドレス記憶部３のアドレス「１５」に格納されるバッファアドレスは「０」であるため、フレームはバッファアドレス「０」に書き込まれる。図９に示すオペレーションＤＥによって、バッファアドレス「０」について第１記憶部１０に記憶される使用状態は、「使用中（１）」へ変更される。また、図９に示すオペレーションＤＦによってバッファアドレス「０」に関する変数の値が第２所定値「０」にリセットされる。
【００９３】
フレーム読出部５は、バッファアドレス「９」、「７」及び「１１」に格納されたフレームを読み出す。フレーム読出部５は、バッファアドレス「９」、「７」及び「１１」をアドレス記憶部３に格納する。また図６に示すオペレーションＣＣと同様に、バッファアドレス「９」、「７」及び「１１」について第１記憶部１０に記憶される使用状態は、「未使用（０）」へ変更される。
【００９４】
図１８に示す状態の後、第１読出アドレスの位置が「０」へ戻った状態を図１９に示す。アドレス記憶部３のアドレス「０」に格納されるバッファアドレスは「１４」であるため、フレームはバッファアドレス「１４」に書き込まれる。図９に示すオペレーションＤＥによって、バッファアドレス「１４」について第１記憶部１０に記憶される使用状態は、「使用中（１）」へ変更される。
【００９５】
また、図１７に示す状態においてバッファアドレス「１４」に関する変数には第１所定値「１」が入力された。図１９に示す状態では、図９に示すオペレーションＤＦによってこの変数の値が第２所定値「０」にリセットされ、図１７の状態の後に第１読出アドレスが一巡する間に書込処理が起きた事実がバッファアドレス「１４」に関する変数に反映される。
【００９６】
このように、バッファアドレスの消失が生じない正常な状態では、図１０に示すオペレーションＤＭにおける異常アドレスの検出処理は実行されない。すなわち、「第１読出アドレスと同じ値を持つバッファアドレスが未使用であり且つこのアドレスに関する変数の値が第１所定値（１）である」状態が検出されない。
【００９７】
続いて、初期状態からある程度時間が経過した後の異常状態におけるフレーム処理装置１のフレーム書込処理を説明する。図２０は、初期状態からある程度時間が経過した状態を示す。アドレス記憶部３のアドレス「０」〜「１５」には、バッファアドレス値「３」、「１４」、「３」、「８」、「５」、「７」、「１５」、「９」、「１３」、「１１」、「２」、「６」、「１２」、「４」、「１０」及び「０」がそれぞれ格納されている。
【００９８】
アドレス記憶部３のアドレス「２」には、本来バッファアドレス「１」が格納されることが予定されていたところ、異常によりバッファアドレスが「３」に変化している。第１読出アドレスの位置は現在「０」である。
【００９９】
アドレス記憶部３のアドレス「０」に格納されるバッファアドレスは「３」であるため、フレームはバッファアドレス「３」に書き込まれる。図９に示すオペレーションＤＥによって、バッファアドレス「３」について第１記憶部１０に記憶される使用状態は、「使用中（１）」へ変更される。また図９に示すオペレーションＤＦによって、バッファアドレス「３」に関する変数には第２所定値「０」が入力される。
【０１００】
図１０に示すオペレーションＤＩの判定において、第１読出アドレスと同じ値のバッファアドレス「０」について第１記憶部１０に記憶される使用状態は「未使用（０）」になる。また、図１０に示すオペレーションＤＫの判定において、バッファアドレス「０」に関する変数の値は第２所定値（０）である。図１０に示すオペレーションＤＬによって、バッファアドレス「０」に関する変数に第１所定値（１）が入力される。
【０１０１】
図２０に示す状態の後、第１読出アドレスの位置が「２」まで進んだ状態を図２１に示す。アドレス記憶部３のアドレス「２」に格納されるバッファアドレスは「３」である。図９に示すオペレーションＤＤの判定においてバッファアドレス「３」について第１記憶部１０に記憶される使用状態は「使用中（１）」である。このため、フレーム書込部４は、アドレス記憶部３のアドレス「２」から読み出されたバッファアドレスの異常を検出し、このバッファアドレスを破棄する。
【０１０２】
図１０に示すオペレーションＤＩの判定において、第１読出アドレスと同じ値のバッファアドレス「２」について第１記憶部１０に記憶される使用状態は「未使用（０）」になる。また、図１０に示すオペレーションＤＫの判定において、バッファアドレス「２」に関する変数の値は第２所定値（０）である。図１０に示すオペレーションＤＬによって、バッファアドレス「２」に関する変数に第１所定値（１）が入力される。
【０１０３】
図２１に示す状態の後、第１読出アドレスの位置が「１５」まで進んだ状態を図２２に示す。アドレス記憶部３のアドレス「１５」に格納されるバッファアドレスは「０」であるため、フレームはバッファアドレス「０」に書き込まれる。図９に示すオペレーションＤＥによって、バッファアドレス「０」について第１記憶部１０に記憶される使用状態は、「使用中（１）」へ変更される。また、バッファアドレス「０」に関する変数の値が第２所定値「０」にリセットされる。
【０１０４】
また、第１読出アドレスと同じ値のバッファアドレス「１５」について第１記憶部１０に記憶される使用状態は「使用中（１）」である。このためバッファアドレス「１５」に関する変数の変更は生じない。
【０１０５】
フレーム読出部５は、バッファアドレス「１４」、「９」、「７」及び「１１」に格納されたフレームを読み出す。フレーム読出部５は、バッファアドレス「１４」、「９」、「７」及び「１１」をアドレス記憶部３に格納する。また図６に示すオペレーションＣＣと同様に、バッファアドレス「１４」、「９」、「７」及び「１１」について第１記憶部１０に記憶される使用状態は、「未使用（０）」へ変更される。
【０１０６】
図２２に示す状態の後、第１読出アドレスの位置が「０」へ戻り、そして第１読出アドレスの位置が「１」まで進んだ状態を図２３に示す。アドレス記憶部３のアドレス「１」に格納されるバッファアドレスは「９」であるため、フレームはバッファアドレス「９」に書き込まれる。図９に示すオペレーションＤＥによって、バッファアドレス「９」について第１記憶部１０に記憶される使用状態は、「使用中（１）」へ変更される。
【０１０７】
図１０に示すオペレーションＤＩの判定において、第１読出アドレスと同じ値のバッファアドレス「１」について第１記憶部１０に記憶される使用状態は「未使用（０）」になる。また、図１０に示すオペレーションＤＫの判定において、バッファアドレス「１」に関する変数の値は第１所定値（１）である。この結果、図１０に示すオペレーションＤＭにおいて、バッファアドレス「１」に異常が生じたことが検出される。そしてアドレス入力部２１は、バッファアドレス「１」をアドレス記憶部３に格納する。
【０１０８】
本実施例によれば、アドレス記憶部３の記憶から消失したバッファアドレスを検出し、消失したアドレスを復活させることが可能なフレーム処理装置を実現することができる。また本実施例によれば、アドレス記憶部３から読み出されるバッファアドレスの値に異常が生じても、格納済みのフレームへの他のフレームの上書きを防止するフレーム処理装置を実現することができる。
【符号の説明】
【０１０９】
１    フレーム処理装置
２    バッファ
３    アドレス記憶部
４    フレーム書込部
１０    第１記憶部
１１    状態変更部
２０    アドレス検出部
【図１】
2011234114.tif 000003
【図２】
2011234114.tif 000004
【図３】
2011234114.tif 000005
【図４】
2011234114.tif 000006
【図５】
2011234114.tif 000007
【図６】
2011234114.tif 000008
【図７】
2011234114.tif 000009
【図８】
2011234114.tif 000010
【図９】
2011234114.tif 000011
【図１０】
2011234114.tif 000012
【図１１】
2011234114.tif 000013
【図１２】
2011234114.tif 000014
【図１３】
2011234114.tif 000015
【図１４】
2011234114.tif 000016
【図１５】
2011234114.tif 000017
【図１６】
2011234114.tif 000018
【図１７】
2011234114.tif 000019
【図１８】
2011234114.tif 000020
【図１９】
2011234114.tif 000021
【図２０】
2011234114.tif 000022
【図２１】
2011234114.tif 000023
【図２２】
2011234114.tif 000024
【図２３】
2011234114.tif 000025