(57)【要約】【課題】ログを少ない記憶領域を用いて効率良く蓄積記憶するとともに、不正な電源断が発生してもデータ部とポインタ部に不整合を発生させずにログを管理し、起動時間の短縮を可能とする。【解決手段】管理情報のログデータがログ番号に対応するページ内バッファ領域に夫々最大Ｎ個記録される複数のページによってログデータが最大Ｍ（Ｍ＞Ｎ）個、サイクリックに記録されるリングバッファを前記不揮発性半導体メモリに形成し、ログデータを記録すべき事象が発生する度に、リングバッファのログ番号に対応するページ内バッファ領域にログデータを記録する。リングバッファ内のページ内バッファ領域とは別の領域に設けられて最新のログデータが記録される第１の領域と、最新のログ番号を示すポインタ情報が記録される第２の領域とを同じページ内に定義し、第１の領域への最新のログデータの記録と、第２の領域へのポインタ情報の記録を同時に行う。【選択図】図１
2013222435.tif 000002
【特許請求の範囲】
【請求項１】
ページ単位で書き込みが行われ、前記ページより大きなブロック単位で消去が行われる不揮発性半導体メモリと、
ホスト装置と前記不揮発性半導体メモリとの間でデータ転送を行なうコントローラと、
を備え、
前記コントローラは、
管理情報のログデータがログ番号に対応するページ内バッファ領域に夫々最大Ｎ個記録される複数のページによってログデータが最大Ｍ（Ｍ＞Ｎ）個、サイクリックに記録されるリングバッファを前記不揮発性半導体メモリに形成し、前記ログデータを記録すべき事象が発生する度に、前記リングバッファのログ番号に対応するページ内バッファ領域にログデータを記録するログ管理部を備え、
前記ログ管理部は、リングバッファ内のページ内バッファ領域とは別の領域に設けられて最新のログデータが記録される第１の領域と、最新のログ番号を示すポインタ情報が記録される第２の領域とを同じページ内に定義し、前記第１の領域への最新のログデータの記録と、第２の領域へのポインタ情報の記録を同時に行うことを特徴とする半導体記憶装置。
【請求項２】
前記ログ管理部は、前記ログデータを記録すべき事象が発生した場合、第１の領域に記録されている前回のログデータを、リングバッファ内の対応するページ内バッファ領域にコピーし、この後、今回のログデータ及び今回のログデータに対応するログ番号によって前記第１の領域のログデータ及び第２の領域のポインタ情報を更新することを特徴とする請求項１に記載の半導体記憶装置。
【請求項３】
前記ログ管理部は、前記ログデータを記録すべき事象が発生した場合、今回のログデータ及び今回のログデータに対応するログ番号によって前記第１の領域のログデータ及び第２の領域のポインタ情報を更新し、この後、第１の領域に記録されている今回のログデータを、リングバッファ内の対応するページ内バッファ領域にコピーすることを特徴とする請求項１に記載の半導体記憶装置。
【請求項４】
前記ログ番号とログ番号に対応するログデータが記録されるページアドレスとの対応、前記第１の領域及び第２の領域が定義されるページアドレスを管理するためのエラーログ管理情報が記憶される記憶部を更に備え、
前記ログ管理部は、前記エラーログ管理情報に基づき前記リングバッファへのログデータ記録と、前記第１の領域への最新のログデータの記録と、前記第２の領域へのポインタ情報の記録を行い、これらの記録動作に伴いエラーログ管理情報を更新することを特徴とする請求項１に記載の半導体記憶装置。
【請求項５】
前記ログ番号とログ番号に対応するログデータが記録されるページアドレスとの対応、前記第１の領域及び第２の領域が定義されるページアドレスを管理するためのエラーログ管理情報が記憶される記憶部を更に備え、
前記ログ管理部は、前記エラーログ管理情報に基づき前記リングバッファへのログデータ記録と、前記第１の領域への最新のログデータの記録と、前記第２の領域へのポインタ情報の記録を行い、これらの記録動作に伴いエラーログ管理情報を更新することを特徴とする請求項２に記載の半導体記憶装置。
【請求項６】
前記ログ番号とログ番号に対応するログデータが記録されるページアドレスとの対応、前記第１の領域及び第２の領域が定義されるページアドレスを管理するためのエラーログ管理情報が記憶される記憶部を更に備え、
前記ログ管理部は、前記エラーログ管理情報に基づき前記リングバッファへのログデータ記録と、前記第１の領域への最新のログデータの記録と、前記第２の領域へのポインタ情報の記録を行い、これらの記録動作に伴いエラーログ管理情報を更新することを特徴とする請求項３に記載の半導体記憶装置。
【請求項７】
前記ログ管理部は、前記第１の領域及び第２の領域を、リングバッファを構成する最後端のページの余剰領域に定義することを特徴とする請求項１に記載の半導体記憶装置。
【請求項８】
前記ログ管理部は、前記第１の領域及び第２の領域を、リングバッファを構成するページとは別のページに定義することを特徴とする請求項１に記載の半導体記憶装置。
【請求項９】
前記管理情報は、エラー情報であることを特徴とする請求項１に記載の半導体記憶装置。
【請求項１０】
ページ単位で書き込みが行われ、前記ページより大きなブロック単位で消去が行われる不揮発性半導体メモリを備える半導体記憶装置の制御方法であって、
管理情報のログデータがログ番号に対応するページ内バッファ領域に夫々最大Ｎ個記録される複数のページによってログデータが最大Ｍ（Ｍ＞Ｎ）個、サイクリックに記録されるリングバッファを前記不揮発性半導体メモリに形成し、前記ログデータを記録すべき事象が発生する度に、前記リングバッファのログ番号に対応するページ内バッファ領域にログデータを記録し、
リングバッファ内のページ内バッファ領域とは別の領域に設けられて最新のログデータが記録される第１の領域と、最新のログ番号を示すポインタ情報が記録される第２の領域とを同じページ内に定義し、前記第１の領域への最新のログデータの記録と、第２の領域へのポインタ情報の記録を同時に行う
ことを特徴とする半導体記憶装置の制御方法。
【請求項１１】
前記ログデータを記録すべき事象が発生した場合、第１の領域に記録されている前回のログデータを、リングバッファ内の対応するページ内バッファ領域にコピーし、この後、今回のログデータ及び今回のログデータに対応するログ番号によって前記第１の領域のログデータ及び第２の領域のポインタ情報を更新することを特徴とする請求項１０に記載の半導体記憶装置の制御方法。
【請求項１２】
前記ログデータを記録すべき事象が発生した場合、今回のログデータ及び今回のログデータに対応するログ番号によって前記第１の領域のログデータ及び第２の領域のポインタ情報を更新し、この後、第１の領域に記録されている今回のログデータを、リングバッファ内の対応するページ内バッファ領域にコピーすることを特徴とする請求項１０に記載の半導体記憶装置の制御方法。
【請求項１３】
前記ログ番号とログ番号に対応するログデータが記録されるページアドレスとの対応、前記第１の領域及び第２の領域が定義されるページアドレスを管理するためのエラーログ管理情報を用意し、
前記エラーログ管理情報に基づき前記リングバッファへのログデータ記録と、前記第１の領域への最新のログデータの記録と、前記第２の領域へのポインタ情報の記録を行い、これらの記録動作に伴いエラーログ管理情報を更新することを特徴とする請求項１０に記載の半導体記憶装置の制御方法。
【請求項１４】
前記ログ番号とログ番号に対応するログデータが記録されるページアドレスとの対応、前記第１の領域及び第２の領域が定義されるページアドレスを管理するためのエラーログ管理情報を用意し、
前記エラーログ管理情報に基づき前記リングバッファへのログデータ記録と、前記第１の領域への最新のログデータの記録と、前記第２の領域へのポインタ情報の記録を行い、これらの記録動作に伴いエラーログ管理情報を更新することを特徴とする請求項１１に記載の半導体記憶装置の制御方法。
【請求項１５】
前記ログ番号とログ番号に対応するログデータが記録されるページアドレスとの対応、前記第１の領域及び第２の領域が定義されるページアドレスを管理するためのエラーログ管理情報を用意し、
前記エラーログ管理情報に基づき前記リングバッファへのログデータ記録と、前記第１の領域への最新のログデータの記録と、前記第２の領域へのポインタ情報の記録を行い、これらの記録動作に伴いエラーログ管理情報を更新することを特徴とする請求項１２に記載の半導体記憶装置の制御方法。
【請求項１６】
前記第１の領域及び第２の領域を、リングバッファを構成する最後端のページの余剰領域に定義することを特徴とする請求項１０に記載の半導体記憶装置の制御方法。
【請求項１７】
前記第１の領域及び第２の領域を、リングバッファを構成するページとは別のページに定義することを特徴とする請求項１０に記載の半導体記憶装置の制御方法。
【請求項１８】
前記管理情報は、エラー情報であることを特徴とする請求項１０に記載の半導体記憶装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、不揮発性半導体メモリを備えた半導体記憶装置及びその制御方法に関する。
【背景技術】
【０００２】
ＳＳＤ（solid state drive）などのストレージ装置においては、管理情報の履歴データであるログを、不揮発性半導体メモリであるフラッシュメモリに記憶し、管理情報を更新すべき事象が発生する度にログを記録するように構成されることが多い。通常、ログはデータ部と最新のデータを識別するためのポインタ部とで構成される。データ部とポインタ部とは、不正な電源断が発生した場合でも、互いに不整合が生じないようにすることが必要である。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００１−１２５８０９号公報
【特許文献２】特開２００６−１７８５３７号公報
【特許文献３】特開平１１−２８２７５８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明の一つの実施形態は、ログを少ない記憶領域を用いて効率良く不揮発性半導体メモリに記憶するとともに、不正な電源断が発生してもデータ部とポインタ部とに不整合を発生させずにログを管理可能であり、起動時間の短縮化が可能な半導体記憶装置及びその制御方法を提供する。
【課題を解決するための手段】
【０００５】
本発明の一つの実施形態によれば、半導体記憶装置は、ページ単位で書き込みが行われ、前記ページより大きなブロック単位で消去が行われる不揮発性半導体メモリと、ホスト装置と前記不揮発性半導体メモリとの間でデータ転送を行なうコントローラとを備える。前記コントローラは、管理情報のログデータがログ番号に対応するページ内バッファ領域に夫々最大Ｎ個記録される複数のページによってログデータが最大Ｍ（Ｍ＞Ｎ）個、サイクリックに記録されるリングバッファを前記不揮発性半導体メモリに形成し、前記ログデータを記録すべき事象が発生する度に、前記リングバッファのログ番号に対応するページ内バッファ領域にログデータを記録するログ管理部を備える。前記ログ管理部は、リングバッファ内のページ内バッファ領域とは別の領域に設けられて最新のログデータが記録される第１の領域と、最新のログ番号を示すポインタ情報が記録される第２の領域とを同じページ内に定義し、前記第１の領域への最新のログデータの記録と、第２の領域へのポインタ情報の記録を同時に行う。
【図面の簡単な説明】
【０００６】
【図１】図１は、ＳＳＤの構成例を示すブロック図。
【図２】図２は、エラーログを記録するためのリングバッファの論理的な構成を示す図。
【図３】図３は、比較例におけるエラーログの物理的な記憶配置を示す図。
【図４】図４は、第１の実施形態において、エラーログを記録するためのリングバッファの論理的な構成を示す図。
【図５】図５は、図４に示すリングバッファの初期状態を示す図。
【図６】図６は、図４に示すリングバッファの１個目のエラー発生時の状態を示す図。
【図７】図７は、図４に示すリングバッファの２個目のエラー発生時の状態を示す図。
【図８】図８は、図４に示すリングバッファの２５１個目のエラー発生時の状態を示す図。
【図９】図９は、第１の実施形態において、エラーログを蓄積記録するためのリングバッファの物理的な記憶配置を示す図。
【図１０】図１０は、図９に示すリングバッファの初期状態を示す図。
【図１１】図１１は、図９に示すリングバッファの１個目のエラー発生時の状態を示す図。
【図１２】図１２は、図９に示すリングバッファの２個目のエラー発生時の状態を示す図。
【図１３】図１３は、図９に示すリングバッファの２１個目のエラー発生時の状態を示す図。
【図１４】図１４は、図９に示すリングバッファの２４２個目のエラー発生時の状態を示す図。
【図１５】図１５は、図９に示すリングバッファの２５１個目のエラー発生時の状態を示す図。
【図１６】図１６は、図９に示すリングバッファの２５２個目のエラー発生時の前半処理後の状態を示す図。
【図１７】図１７は、図９に示すリングバッファの２５２個目のエラー発生時の後半処理後の状態を示す図。
【図１８】図１８は、他のリングバッファの構成例を示す図。
【図１９】図１９は、第２の実施形態によるログ記録動作を示す図。
【発明を実施するための形態】
【０００７】
以下に添付図面を参照して、実施形態にかかる半導体記憶装置及びその制御方法を詳細に説明する。なお、これらの実施形態により本発明が限定されるものではない。
【０００８】
（第１の実施形態）
図１は、半導体記憶装置の一例としてのＳＳＤ（Solid  State  Drive）１００の構成例を示すブロック図である。ＳＳＤ１００は、ＡＴＡインタフェース（ＡＴＡ  Ｉ／Ｆ）などのホストインタフェース２を介してパーソナルコンピュータあるいはＣＰＵなどのホスト装置（以下、ホストと略す）１と接続され、ホスト１の外部記憶装置として機能する。ホスト１は、例えば、パーソナルコンピュータ、スチルカメラ、ビデオカメラなどの撮像装置のＣＰＵである。ＳＳＤ１００は、ホストインタフェース２と、不揮発性半導体メモリとしてのＮＡＮＤ型フラッシュメモリ（以下、ＮＡＮＤフラッシュと略す）１０と、ＮＡＮＤフラッシュ１０よりも高速アクセスが可能な揮発性の半導体メモリであるＲＡＭ２０と、コントローラ３０とを備える。
【０００９】
ＲＡＭ２０は、ホスト１からのデータをＮＡＮＤフラッシュ１０にライトする際に一時的にデータを保存するためのライトバッファ２１としての記憶領域と、ＳＳＤ１００を管理するための管理情報を記憶、更新するための記憶領域と、ＮＡＮＤフラッシュ１０からリードされたデータを一時記憶するなどのための作業領域を有する。ＳＳＤ１００を管理するための管理情報としては、ＳＳＤ１００を管理するための管理テーブルである揮発管理テーブル２２と、エラーログ管理情報２３とを含む。揮発管理テーブル２２では、エラーログ管理情報２３以外の各種管理情報が管理されている。揮発管理テーブル２２で管理される管理情報としては、ホスト１で使用される論理アドレスとデータが記憶されているＮＡＮＤフラッシュ１０上の記憶位置（物理アドレス）との関係を示す論物変換情報、ＮＡＮＤフラッシュ１０の各ブロックが使用中であるか未使用であるかを示すブロック使用／未使用情報や、エラーが多いなど記憶領域として使用できないバッドブロックを識別するバッドブロック情報などを含む。揮発管理テーブル２２及びエラーログ管理情報２３は、ＮＡＮＤフラッシュ１０に記憶されている不揮発管理情報１２が起動時などに展開された（ロードされた）ものである。ＲＡＭ２０としては、揮発性のＤＲＡＭ、ＳＲＡＭなどが採用される。エラーログ管理情報２３については、後で詳述する。
【００１０】
ＮＡＮＤフラッシュ１０は、複数のメモリセルがマトリクス状に配列されたメモリセルアレイを有し、個々のメモリセルは上位ページ及び下位ページを使用して多値記憶が可能である。ＮＡＮＤフラッシュ１０は、複数のメモリチップによって構成され、各メモリチップは、データ消去の単位であるブロックを複数配列して構成される。また、ＮＡＮＤフラッシュ１０では、ページごとにデータの書き込み及びデータの読み出しが行われる。すなわち、ＮＡＮＤフラッシュ１０でのデータの書き込み単位及び読み出し単位は、ページである。ブロックは、複数のページによって構成されている。
【００１１】
ＮＡＮＤフラッシュ１０には、ホスト１から入力されたユーザデータを記憶するユーザデータ記憶部１１と、ＳＳＤ１００を管理するための各種管理情報が記憶されている。ＮＡＮＤフラッシュ１０に記憶される管理情報としては、揮発管理テーブル２２及びエラーログ管理情報２３のバックアップとしての不揮発管理情報１２と、エラーログ１３などを含む。エラーログ１３については、後で詳述する。
【００１２】
コントローラ３０は、読み書き制御部３１、テーブル管理部３２、エラーログ管理部３３を有する。読み書き制御部３１は、ホスト１からリードコマンド及びリードアドレスが入力されると、揮発管理テーブル２２を参照してリードアドレスに対応するデータをライトバッファ２１あるいはＮＡＮＤフラッシュ１０から読み出し、読み出したデータをホスト１に送信する。読み書き制御部３１は、ホスト１からライトコマンド、ライトアドレス、ライトデータが入力されると、ライトデータをライトバッファ２１に書き込む。ライトバッファ２１に空き領域がない場合は、揮発管理テーブル２２を参照してライトバッファ２１からデータを追い出して、ＮＡＮＤフラッシュ１０に書き込む。その後、データの追い出しにより生じたライトバッファ２１の空き領域に、ライトデータを書き込む。テーブル管理部３２は、ライトバッファ２１へのデータ書込み、ＮＡＮＤフラッシュ１０へのデータ書込みに応じて、揮発管理テーブル２２を更新する。
【００１３】
ＳＳＤ１００では、例えば、同じＬＢＡのデータを上書きする場合、読み書き制御部３１は、つぎのような処理を実行する。論理アドレスＡ１にブロックサイズの有効なデータが保存されており、記憶領域としてはブロックＢ１が使用されていたとする。ホスト１から論理アドレスＡ１のブロックサイズの更新データを上書きするコマンドを受信した場合、内部に有効データを含まない用途未割り当てのブロックであるフリーブロック（ブロックＢ２とする）を１個確保し、そのフリーブロックにホスト１から受信したデータを書き込む。その後、論理アドレスＡ１とブロックＢ２を関係付ける管理情報の更新を行う。その結果、ブロックＢ２は、内部に有効データを含み、用途が割り当てられたブロックであるアクティブブロックになり、ブロックＢ１に保存されたデータは無効になるためブロックＢ１はフリーブロックとなる。
【００１４】
このように、ＳＳＤ１００では、同じ論理アドレスＡ１のデータであっても、実際の記録領域として使用されるブロックは書込みの度に変化する。なお、ブロックサイズの更新データ書き込みでは、必ず書き込み先ブロックが変化するが、ブロックサイズ未満の更新データ書き込みでは、同じブロックに更新データが書き込まれることもある。例えばブロックサイズ未満のページデータが更新される場合、当該ブロック内において同じ論理アドレスの旧ページデータが無効化され、新たに書き込まれた最新のページデータが有効ページとして管理される。ブロック内の全データが無効化されると、当該ブロックはフリーブロックとして解放される。
【００１５】
テーブル管理部３２は、ＮＡＮＤフラッシュ１０に保存された不揮発管理情報１２を起動時に揮発管理テーブル２２、エラーログ管理情報２３としＲＡＭ２０に転送する処理、定期的にあるいは正常な電源断シーケンスが発生したときなどに、ＲＡＭ２０の揮発管理テーブル２２及びエラーログ管理情報２３をＮＡＮＤフラッシュ１０に不揮発管理情報１２として保存するなどの処理を実行する。
【００１６】
エラーログ管理部３３は、書き込みエラー、消去エラー、読み出しエラーなどのエラーが発生した場合、ＲＡＭ２０上のエラーログ管理情報２３を参照してＮＡＮＤフラッシュ１０にエラーログ１３を書き込み、このエラーログの書き込みに伴ってＲＡＭ２０上のエラーログ管理情報２３を更新する。エラーログ１３は、所定個数Ｍのエラーログデータを蓄積記憶可能なリングバッファで構成される。リングバッファは、所定個数のエラーログデータを蓄積記録するためのデータ部と、最新のエラーログデータを識別するためのポインタ部とを含む。エラーログ管理部３３の動作については、後で詳述する。
【００１７】
図２は、ＮＡＮＤフラッシュ１０においてエラーログ１３を蓄積記録するためのリングバッファ４０の論理的な構成を示すものである。このリングバッファ４０では、最大Ｍ個（この実施形態では２５０個）のログデータを記録可能であり、Ｍ（＝２５０）個のバッファ領域（以下、単にバッファという：バッファＢＦ０〜バッファＢＦ２４９）を有する。バッファＢＦ０〜バッファＢＦ２４９に対し、エラーが発生した時間順に、ログデータが記録される。このリングバッファ４０では、ポインタ４１によって最新のログ番号ｎを管理している。ポインタ４１で管理されるログ番号は、「１」から「２５０」までの範囲内で管理される相対値としてではなく、「２５０」を越えても値がそのままカウントアップされる絶対値として管理される。
【００１８】
ログ番号「Ｘ」のログデータをデータ＃Ｘと標記する。データ＃１はバッファＢＦ０に書き込まれ、データ＃２はバッファＢＦ１に書き込まれ、…、データ＃２５０はバッファＢＦ２４９に書き込まれ、さらにデータ＃２５１は、バッファＢＦ０に書き込まれ、…、さらにデータ＃５０１は、バッファＢＦ０に書き込まれる。すなわち、データ＃ｎは、バッファＢＦｍに書き込まれる。ｍ＝（ｎ−１）ｍｏｄ ２５０である。ｍｏｄは剰余を表しており、ｍはｎ−１をバッファ個数（＝２５０）で割った剰余となる。
【００１９】
図３は、比較例におけるエラーログの物理的な記憶配置を示すものである。図３においても、最大２５０個のログデータを記録可能である。前述したように、ＮＡＮＤフラッシュ１０の書き込み単位はページである。ここでは、１ページは２０個のログデータまたはポインタ情報を記録できる容量をもつものとしている。比較例では、バッファＢＦ０〜ＢＦ２４９に記録されるログデータと、最新のログ番号ｎを管理するためのポインタ情報４２を同一のページに記録することで、ログ記録時に不正な電源断が発生した場合でも、データとポインタとの不整合を防止している。すなわち、ログデータとポインタとを別のページに記録する方式では、一方を書き込んだ後に不正に電源が切られた場合にデータとポインタとに不整合が発生する可能性がある。
【００２０】
比較例では、各ページの先頭にポインタ情報４２を記録するために、本来は２０個のログデータを記録できる容量をもつにもかかわらず、各ページには１９個のログデータしか記録できなくなる。比較例では、ＲＡＭ２３で管理されるエラーログ管理情報２５によって、ログデータ及びポインタが記録された各ページアドレス（ブロック番号＋ページ番号）を管理する。ＮＡＮＤフラッシュ１０においては、同一ページに対する複数回の書き込みができないので、常に新たなページに対し、新たなログデータ及びポインタ情報を記録する必要がある。
【００２１】
例えば、ログ番号「１」のログデータをバッファＢＦ０に記録する際には、あるページ（例えば、ブロックＡ１のページＢ１）の先頭にポインタ情報４２としてログ番号「１」を記録し、このポインタ情報４２に続くバッファＢＦ０にログ番号「１」のログデータを記録する。また、エラーログ管理情報２５のＢＦ０−１８の配置情報を、「ブロックＡ１のページＢ１」に更新する。
【００２２】
つぎのログ番号「２」のログデータをバッファＢＦ１に記録する際には、先に使用したページ（ブロックＡ１のページＢ１）とは異なるページ（例えば、ブロックＡ１のページＢ２）を用意し、このページの先頭にポインタ情報４２としてログ番号「２」を記録し、このポインタ情報に続くバッファＢＦ０にログ番号「１」のログデータを記録し、さらにバッファＢＦ１にログ番号「２」のログデータを記録する。また、エラーログ管理情報２５のＢＦ０−１８の配置情報を「ブロックＡ１のページＢ２」に更新する。ログ番号「１」のログデータとポインタ情報が記録されていたページ（ブロックＡ１のページＢ１）は、エラーログ管理情報２５による管理から外れるので、無効ページとして扱われる。
【００２３】
このような処理が繰り返されことにより、あるページ（例えば、ブロックＡ２のページＢ１０とする）の先頭にポインタ情報４２としてログ番号「１９」が記録され、このポインタ情報４２に続くバッファＢＦ０〜バッファＢＦ１８にログ番号「１」〜ログ番号「１９」のログデータが記録される。この状態では、エラーログ管理情報２５のＢＦ０−１８の配置情報のエントリには、ブロックＡ２のページＢ１０が記録されている。このページは、１９個のログデータと、１つのポインタ情報４２で、記憶領域が満杯となったので、このままログ番号「１」〜ログ番号「１９」のログデータの保存ページとして、この後、ログ番号「２５１」のログデータを記録するときまで、保存される。
【００２４】
この後、同様の処理が繰り返されることにより、１４個のページに対し、１９個のログデータと１つのポインタ情報４２が夫々記録されることで、２５０個のログが蓄積される。ログ番号「２５１」のログデータを記録するときには、新たなページ（ブロックＡ３のページＢ９とする）を用意し、このページの先頭にポインタ情報４２としてログ番号「２５１」を記録し、このポインタ情報４２に続くバッファＢＦ０にログ番号「２５１」のログデータを記録し、さらに、バッファＢＦ１〜バッファＢＦ１８にログ番号「２」〜ログ番号「１９」のログデータを記録する。また、エラーログ管理情報２５のＢＦ０−１８の配置情報のエントリを、「ブロックＡ３のページＢ９」に更新する。
【００２５】
比較例では、リングバッファのログデータとポインタとの不整合を避けるために、ログデータが記録される全てのページに、ポインタ情報４２が配置されている。この構成ではリングバッファのログデータとポインタ４２とを同時に書き込むことができるため、不正な電源断時においても不整合は発生しない。しかし、各ページにポインタ４２の領域が必要となるため、２５０個のログデータを記録可能なリングバッファを構成する場合、１ページに２０個のログデータまたはポインタを記録可能とすると、２５０／（２０−１）＝１３．１５となり、１４個のページが必要となる。ポインタ情報を各ページに配置しない場合は、２５０／２０＝１２．５となり、１３個のページでリングバッファを構成することができる。このように、比較例では、ポインタ情報を各ページに配置しない場合と比べ、リングバッファを構成するために、ページが１つ以上余分に必要になる可能性がある。
【００２６】
また、前述したように、ポインタ情報はカウンタ形式を用いて絶対値としておき、ポインタ情報をバッファ個数（＝２５０）で割った剰余がリングバッファのオフセット位置（バッファ位置）を表すという形態で管理される。比較例では、電源投入後、エラーログ管理情報２５をＮＡＮＤフラッシュ１０から読み出してＲＡＭ２０に書き込み、ＲＡＭ２０のエラーログ管理情報２５を用いて、リングバッファを構成しているＮＡＮＤフラッシュ１０上の各ページを判別し、各ページからポインタ情報を読み出す。さらに、比較例では、各ページから読み出したポインタ情報を比較し、ポインタ値として最大値を持つ最新のポインタがどれであるかを探し出す処理が必要であり、ストレージ装置の電源投入後の初期化処理時間が長くなるという問題がある。
【００２７】
そこで、本実施形態においては、リングバッファを構成する最後端のページの余剰領域に、ポインタ情報を記録し、リングバッファを構成する他のページには、ログデータのみを記録し、ポインタ情報は記録しないこととする。すなわち、本実施形態では、ポインタ情報は、リングバッファを構成する最後端のページにのみ記録される。これにより、リングバッファを構成するページ数を比較例より少なくすることができ、ログデータを少ない記憶領域を用いて効率よくＮＡＮＤフラッシュ１０に記憶することが可能となる。また、最新データを把握するためには、１つのポインタ情報のみを読み出せばよいので、電源投入後の初期化の処理時間（起動時間）の短縮化が可能となる。
【００２８】
さらに本実施形態においては、リングバッファを構成する最後端のページの余剰領域に、最新のログデータＬＤ（Latest data）を記録する領域及び最新のポインタ５１を記録する領域を設ける。そして、エラーが発生した際のエラーログの記録動作を前半処理と後半処理に分け、前半処理では、前回エラー発生時のログデータＬＤを最後端のページの余剰領域から、リングバッファ内のログ番号に対応する所定のバッファにコピーし、後半処理では、最後端のページの余剰領域にあるポインタ５１及び最新ログデータ領域ＬＤを今回のログにしたがって同時に更新する。このように、最新のポインタ情報５１及び最新ログデータＬＤを同一ページに同時に記録することで、不正な電源断が発生した場合でもログデータとポインタに不整合を発生させずにログを管理することが可能となる。
【００２９】
図４は、本実施形態において、ＮＡＮＤフラッシュ１０がエラーログ１３を記録するためのリングバッファ５０の論理的な構成を示すものである。このリングバッファ５０では、バッファＢＦ０〜バッファＢＦ２４９によって最大２５０個のログデータを記録可能であり、ポインタ５１によって最新のログ番号ｎを管理している。ポインタ５１で管理されるログ番号は、「２５０」を越えても値がそのままカウントアップされる絶対値として管理される。本実施形態では、最新ログデータＬＤを管理する領域を、リングバッファ５０を構成するバッファＢＦ０〜バッファＢＦ２４９を管理する領域とは別に設ける。別言すれば、最新ログデータが記録される領域が、バッファＢＦ０〜バッファＢＦ２４９内と、最新ログデータ領域ＬＤとで、二重管理される。また、ポインタ５１が記憶される領域は、最新ログデータＬＤと同時に書き込みが可能な領域、すなわち同一のページに設けられ、ポインタ５１と最新ログデータＬＤとは同時に更新される。
【００３０】
図５は、論理的構成のエラーログ１３の初期状態を示すものである。ポインタ５１のログ番号は初期値（＝０）であり、リングバッファ５０を構成するバッファＢＦ０〜バッファＢＦ２４９及び最新ログデータ領域ＬＤには、ログデータは記録されていない。図６は、１個目のエラーが発生した際の１個目のログデータの記録動作を示すもので、ポインタ５１のログ番号は「１」に更新され、最新ログデータ領域ＬＤに、バッファ領域ＢＦ０に記録すべきログ番号「１」のログデータ（データ＃１）が記録される。この状態では、最新ログデータ領域ＬＤのデータ＃１とバッファ領域ＢＦ０のデータは、一致していない。
【００３１】
図７は、２個目のエラーが発生した際の２個目のログデータの記録動作を示すもので、２個目のログデータの記録動作は、図７（ａ）に示す前半処理と、図７（ｂ）に示す後半処理とに分割されている。図７（ａ）に示すように、前半処理では、最新ログデータ領域ＬＤに記録されたデータ＃１が、リングバッファ５０のバッファ領域ＢＦ０にコピーされる。このコピー後、ログ番号「１」が記録されたポインタ情報５１と、リングバッファ５０のバッファ領域ＢＦ０のログデータと、最新ログデータ領域ＬＤのログデータとが整合された状態となる。
【００３２】
図７（ｂ）に示す後半処理では、ポインタ５１及び最新ログデータＬＤが２個目のログによって同時に更新される。すなわち、ポインタ５１のログ番号は「２」に更新され、最新ログデータ領域ＬＤに、バッファ領域ＢＦ１に記録すべきログ番号「２」のログデータ（データ＃２）が記録される。
【００３３】
図８は、２５１個目のエラーが発生した際の２５１個目のログデータの記録動作を示すもので、このログデータの記録動作も、図８（ａ）に示す前半処理と、図８（ｂ）に示す後半処理とに分割されている。図８（ａ）に示すように、前半処理では、最新ログデータ領域ＬＤに記録されたログ番号「２５０」のログデータ（データ＃２５０）が、リングバッファ５０のバッファ領域ＢＦ２４９にコピーされる。このコピー後、ログ番号「２５０」が記録されたポインタ情報５１と、リングバッファ５０のバッファＢＦ２４９のログデータと、最新ログデータ領域ＬＤのログデータとが、整合された状態となる。
【００３４】
図８（ｂ）に示す後半処理では、ポインタ５１及び最新ログデータＬＤが２５１個目のログによって同時に更新される。すなわち、ポインタ５１のログ番号は「２５１」に更新され、最新ログデータ領域ＬＤに、バッファＢＦ０に記録すべきログ番号「２５１」のログデータが記録される。このようなログデータの記録動作が繰り返される。
【００３５】
図９は、本実施形態のエラーログを記録するためのリングバッファ５０の物理的な記憶配置を示すものである。図９は、図４に示した論理的構成のエラーログに対応し、バッファＢＦ０〜ＢＦ２４９によって最大Ｍ（＝２５０）個のログデータを記録可能である。本実施形態でも、１ページはＮ（＝２０）個のログデータまたはポインタを記録できる容量を持つものとしている。各ページには２０個のログデータを記録するので、１３個のページによって２５０個のログデータをサイクリック（循環的または巡回的）に記録可能なリングバッファを構成することが可能となる。因みに、図３に示した比較例では１４個のページによって２５０個のログデータを記録可能なリングバッファが構成されている。リングバッファ５０を構成する最後端のページには、１０個のログデータ（バッファＢＦ２４０〜バッファＢＦ２４９）を記録すればよいので、１０個分のログデータに対応する余剰領域が発生する。そこで、本実施形態では、この余剰領域に、ポインタ５１と最新ログデータＬＤとを記録することとする。
【００３６】
また、本実施形態においては、図１に示したＲＡＭ２３のエラーログ管理情報２３によってログデータが記録された各ページアドレス（ブロック番号＋ページ番号）と、ポインタ５１と最新ログデータＬＤが記録されたページアドレスを管理する。本実施形態では、リングバッファ５０を構成する最後端のページの余剰領域に、ポインタ５１と最新ログデータＬＤとを記録することにしているので、バッファＢＦ２４０〜バッファＢＦ２４９と、ポインタ５１と、最新のログデータＬＤとが記録されるページアドレスを同一の配置情報２３ｄ（以下、最後端ページ配置情報という）で管理している。
【００３７】
図１０は、物理的構成のリングバッファ５０の初期状態（エラーが全く発生していない状態）を示すものである。初期状態では、エラーログ管理情報２３は、最後端ページ配置情報２３ｄにのみ、ページアドレス（例えば、ページアドレス＝０）が登録されている。エラーログ管理情報２３の他の配置情報は、無効状態にある。また、ページアドレス＝０のページでは、ポインタ５１が初期値（＝０）となっているが、その他の領域は空の状態にある。
【００３８】
図１１は、１個目のエラーの発生による１個目のログデータの記録動作を示すものである。以下、ページアドレスＹのページをページ＃Ｙと標記する。エラーログ管理部３３は、１個目のエラーが発生すると、別のページ（例えば、ページアドレス＝１）を用意し、このページ＃１に対し、ログ番号「１」を示すポインタ５１を記録し、また最新ログデータ領域ＬＤに対し、バッファＢＦ０に記録すべきログ番号「１」のログデータ（データ＃１）を記録する。エラーログ管理部３３は、この記録動作に伴いエラーログ管理情報２３の最後端ページ配置情報２３ｄをページアドレス＝１に更新する。最後端ページ用として使用されていたページ＃０は、エラーログ管理情報２３の管理から外れるので、無効化される。
【００３９】
図１２は、２個目のエラーの発生による２個目のログデータの記録動作を示すものである。この記録動作は、図１２（ａ）に示す前半処理と、図１２（ｂ）に示す後半処理とに分割されている。前半処理では、エラーログ管理部３３は、別のページ（例えば、ページアドレス＝２）を用意し、このページ＃２のバッファＢＦ０に対し、ページ＃１の最新ログデータ領域ＬＤに記録されていたログ番号「１」のログデータをコピーする。エラーログ管理部３３は、このコピー動作に伴って、エラーログ管理情報２３のＢＦ０−１９の配置情報をページアドレス＝２に更新する。
【００４０】
図１２（ｂ）に示す後半処理では、エラーログ管理部３３は、別のページ（例えば、ページアドレス＝３）を用意し、このページ＃３に対し、ログ番号「２」を示すポインタ５１を記録し、また最新ログデータ領域ＬＤに対しバッファＢＦ１に記録すべきログ番号「２」のログデータ（データ＃２）を記録する。この記録動作に伴って、エラーログ管理部３３は、最後端ページ配置情報２３ｄをページアドレス＝３に更新する。
【００４１】
図１３は、２１個目のエラーの発生による２１個目のログデータの記録動作を示すものである。この記録動作も、図１３（ａ）に示す前半処理と、図１３（ｂ）に示す後半処理とに分割されている。図１３（ａ）に示すように、前半処理では、エラーログ管理部３３は、ページ＃３８のバッファＢＦ０〜バッファＢＦ１８に記録されていたデータ＃１〜データ＃１９を別のページ（例えば、ページアドレス＝４０）のバッファＢＦ０〜バッファＢＦ１８にコピーするとともに、ページ＃３９の最新ログデータ領域ＬＤに記録されていたログ番号「２０」のログデータ（データ＃２０）を、ページ＃４０のバッファＢＦ１９にコピーする。このコピー動作に伴って、エラーログ管理部３３は、エラーログ管理情報２３のＢＦ０−１９の配置情報をページアドレス＝４０に更新する。
【００４２】
図１３（ｂ）に示す後半処理では、エラーログ管理部３３は、別のページ（例えば、ページアドレス＝４１）を用意し、ページ＃４１に対し、ログ番号「２１」を示すポインタ５１を記録し、また最新ログデータ領域ＬＤに対しバッファＢＦ２０に記録すべきログ番号「２１」のログデータを記録する。この記録動作に伴って、エラーログ管理部３３は、エラーログ管理情報２３の最後端ページ配置情報２３ｄをページアドレス３９からページアドレス４１に更新する。
【００４３】
図１４は、２４２個目のエラーの発生による２４２個目のログデータの記録動作を示すものである。この記録動作は、前半処理と後半処理とに分割されず、同時に行われる。図１４に示すように、２４２個目のエラーが発生する前は、ページ＃４８１には、ログ番号「２４１」を示すポインタ５１が記録され、また最新ログデータ領域ＬＤに対しバッファＢＦ２４０に記録すべきログ番号「２４１」のログデータ（データ＃２４１）が記録されている。この実施形態では、図９に示したように、バッファＢＦ２４０〜ＢＦ２４９に記録すべきデータ＃２４１〜データ＃２５０は、最新ログデータ領域ＬＤとポインタ５１が配されるページと同じページに記録するようにしている。
【００４４】
このため、２４２個目のエラーが発生すると、エラーログ管理部３３は、別のページ（例えば、ページアドレス＝４８２）を用意し、ページ＃４８１の最新ログデータ領域ＬＤに記録されていたログデータを、ページ＃４８２のバッファＢＦ２４０にコピーし、さらにページ＃４８２に対し、ログ番号「２４２」を示すポインタ５１を記録し、また最新ログデータ領域ＬＤに対しバッファＢＦ２４１に記録すべきログ番号「２４２」のログデータ（データ＃２４２）を記録する。この記録動作に伴って、エラーログ管理部３３は、エラーログ管理情報２３の最後端ページ配置情報２３ｄをページアドレス４８１からページアドレス４８２に更新する。この結果、ページ＃４８１は無効化される。
【００４５】
図１５は、２５１個目のエラーの発生による２５１個目のログデータの記録動作を示すものである。この記録動作は、前半処理と後半処理とに分割されず、同時に行われる。図１５に示すように、２５１個目のエラーが発生する前は、バッファＢＦ０〜ＢＦ２３９には、データ＃１〜データ＃２４０が記録され、ページ＃４８９のバッファＢＦ２４０〜ＢＦ２４８には、データ＃２４１〜データ＃２４９が記録され、バッファＢＦ２４９のみが空である。さらに、ページ＃４８９のポインタ５１にはログ番号「２５０」が記録され、最新ログデータ領域ＬＤには、バッファＢＦ２４９に記録すべきログ番号「２５０」のログデータ（＃２５０）が記録されている。
【００４６】
２５１個目のエラーが発生すると、エラーログ管理部３３は、別のページ（例えば、ページアドレス＝４９０）を用意し、ページ＃４８９のバッファＢＦ２４０〜ＢＦ２４８に記録されていたログ番号「２４１」〜「２４９」のログデータを、ページ＃４９０のバッファＢＦ２４０〜ＢＦ２４８にコピーし、さらにページ＃４８９の最新ログデータ領域ＬＤに記録されていたデータ＃２５０を、ページ＃４９０のバッファＢＦ２４９にコピーする。さらに、エラーログ管理部３３は、ページ＃４９０に対し、ログ番号「２５１」を示すポインタ５１を記録し、また最新ログデータ領域ＬＤに対しバッファＢＦ０に記録すべきログ番号「２５１」のログデータ（データ＃２５１）を記録する。この記録動作に伴って、エラーログ管理部３３は、エラーログ管理情報２３の最後端ページ配置情報２３ｄをページアドレス４８９からページアドレス４９０に更新する。この結果、ページ＃４８９は無効化される。また、バッファＢＦ０に記録されていたデータ＃１は、バッファＢＦ０に記録されるべきデータ＃２５１によって無効扱いされる。
【００４７】
図１６は、２５２個目のエラーの発生による２５２個目のログデータの記録動作を示すものである。この記録動作は、図１６に示す前半処理と、図１７に示す後半処理とに分割されている。図１６に示すように、前半処理では、エラーログ管理部３３は、ページ＃４９０の最新ログデータ領域ＬＤに記録されていたデータ＃２５１を、別のページ（例えば、ページアドレス＝４９１）のバッファＢＦ０にコピーする。また、エラーログ管理部３３は、ページ＃４０のバッファＢＦ１〜ＢＦ１９に記録されていたデータ＃２〜データ＃２０を、ページ＃４９１のバッファＢＦ１〜ＢＦ１９にコピーする。このコピー動作に伴って、エラーログ管理部３３は、エラーログ管理情報２３のＢＦ０−１９の配置情報をページアドレス＝４０からページアドレス＝４９１に更新する。
【００４８】
図１７に示す後半処理では、エラーログ管理部３３は、別のページ（例えば、ページ＃４９２）を用意し、このページ＃４９２に対し、ログ番号「２５２」を示すポインタ５１を記録し、また最新ログデータ領域ＬＤに対しバッファＢＦ１に記録すべきデータ＃２５２を記録する。また、ページ＃４９０のバッファＢＦ２４０〜ＢＦ２４９に記録されていたデータ＃２４１〜データ＃２５０を、ページ＃４９２のバッファＢＦ２４０〜ＢＦ２４９にコピーする。この記録動作に伴って、エラーログ管理部３３は、エラーログ管理情報２３の最後端ページ配置情報２３ｄをページアドレス４９０からページアドレス４９２に更新する。エラーが発生する度に、このようなログ記録動作が繰り返し実行される。
【００４９】
このようにこの実施形態では、リングバッファ５０を構成する最後端のページの余剰領域に、ポインタ情報を記録し、リングバッファ５０を構成する他のページには、ログデータのみを記録し、ポインタ情報は記録しないこととしたので、リングバッファ５０を構成するページ数を少なくすることができ、少ない記憶領域を用いてログデータを効率よくＮＡＮＤ１０に蓄積記憶することが可能となる。また、最新データを把握するためには、１つのポインタ情報５１のみを読み出せばよいので、電源投入後の初期化の処理時間（起動時間）の短縮化が可能となる。
【００５０】
さらにこの実施形態では、リングバッファを構成する最後端のページの余剰領域に、最新のログデータＬＤ（Latest data）及び最新のポインタ情報５１を記録する領域を設け、前半処理では、前回のログデータＬＤを最後端のページの余剰領域から、リングバッファ内のログ番号に対応する所定のバッファにコピーし、後半処理では、最後端のページの余剰領域にあるポインタ情報及び最新のログデータＬＤを今回のログにしたがって同時に更新する。このように、最新のポインタ情報及び最新のログデータＬＤを同一ページに同時に記録することとしたので、どの時点で不正な電源断が発生しても、余剰領域の領域ＬＤ及びポインタ５１には、最新または最新より１つ前のログデータ及びログ番号が整合状態で記録されていることになり、不正な電源断が発生した場合でもログデータ部とポインタ部に不整合を発生させずにログを管理することが可能となる。
【００５１】
なお、上記実施形態では、最新のログデータＬＤ及び最新のポインタ情報５１を、リングバッファを構成する最後端のページの余剰領域に記録するようにしたが、ログデータの最大記録数とページ容量との関係によっては、最後端ページに余剰領域が存在しない場合がある。このような場合は、図１８に示すように、最新のログデータＬＤ及び最新のポインタ情報５１のみを記録する専用のページを設けるようにしてもよい。図１８においては、リングバッファ５０をバッファＢＦ０〜ＢＦ２５９の２６０個のバッファで構成し、別の専用ページに、最新のログデータＬＤ及び最新のポインタ情報５１を記録するようにしている。この場合でも、専用のページに対する最新のログデータＬＤ及び最新のポインタ情報５１の更新は、常に同時に行われる。また、先の実施形態と同様、ログ記録動作は、最新のログデータＬＤをリングバッファ領域にコピーする処理と、最新のログデータＬＤ及び最新のポインタ情報５１を更新する処理とに分離される。勿論、専用のページと言っても、最新のログデータＬＤ及び最新のポインタ情報５１が更新される度に、最新のログデータＬＤ及び最新のポインタ情報５１を記録するページは、変更される。
【００５２】
（第２の実施形態）
第２の実施形態では、エラーが発生した際、前半処理で、最新のログデータＬＤ及び最新のポインタ情報５１の更新を行い、後半処理で、最新のログデータＬＤをリングバッファ内のログ番号に対応する所定のバッファにコピーするようにする。図１９は、第２の実施形態のエラーログの記録動作を示すものである。
【００５３】
最新のログデータＬＤ及び最新のポインタ情報５１は、前述したように、最後端ページの余剰領域に配置するようにしてもよいし、専用のページに配するようにしてもよい。１個目のエラーが発生した際、前半処理では、エラーログ管理部３３は、図１９（ａ）に示すように、まず最新ログデータ領域ＬＤをデータ＃１で更新し、ポインタ５１のログ番号を「０」から「１」に更新する。この前半処理が終了すると、エラーログ管理部３３は、最新ログデータ領域ＬＤに記録されたデータ＃１を、リングバッファのバッファ領域ＢＦ０にコピーする。このコピー後、ログ番号「１」が記録されたポインタ情報５１と、リングバッファ５０のバッファ領域ＢＦ０のログデータと、最新ログデータ領域ＬＤのログデータとが整合された状態となる。
【００５４】
２個目のエラーが発生した際、前半処理では、エラーログ管理部３３は、図１９（ｂ）に示すように、最新ログデータ領域ＬＤをデータ＃２で更新し、ポインタ５１のログ番号を「１」から「２」に更新する。この前半処理が終了すると、エラーログ管理部３３は、最新ログデータ領域ＬＤに記録されたデータ＃２を、リングバッファのバッファ領域ＢＦ１にコピーする。このコピー後、ログ番号「２」が記録されたポインタ情報５１と、リングバッファ５０のバッファ領域ＢＦ１のログデータと、最新ログデータ領域ＬＤのログデータとが整合された状態となる。このような処理が、繰り返し実行される。
【００５５】
第２の実施形態においても、第１の実施形態と同様、どの時点で不正な電源断が発生しても、最新ログデータ領域ＬＤ及びポインタ５１には、最新のログデータ及びログ番号が整合状態で記録されていることになり、不正な電源断が発生した場合でもログデータ部とポインタ部に不整合を発生させずにログを管理することが可能となる。但し、この第２の実施形態では、前半処理開始から後半処理終了までの間に不正な電源断が発生した場合、最新ログデータ領域ＬＤにあるデータが、リングバッファ内のポインタ情報５１で指定されるログ番号に対応するバッファ領域にコピーされたか否かを保証できなくなるため、電源投入時に最新ログデータ領域ＬＤにあるログデータと、ポインタ情報５１で指定されるログ番号に対応するバッファ領域のデータとが同じであるか否かをチェックし、同一データでない場合には、後半の処理を再実行することにする。
【００５６】
なお、本実施形態のリングバッファで管理する管理情報としては、不揮発化して記録することが必要な管理情報であれば、エラー情報以外の管理情報を採用してもよい。例えば、ＳＳＤ１００の統計情報（温度情報、通電時間、読み出しまたは書き込みなどのアクセス回数）を管理情報として採用してもよい。
【００５７】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００５８】
１  ホスト、２  ホストインタフェース、１０  ＮＡＮＤフラッシュ、１３  エラーログ、２１  ライトバッファ、２３  エラーログ管理情報、３０  コントローラ、３２  テーブル管理部、３３  エラーログ管理部、５０  リングバッファ、５１  ポインタ（ポインタ情報）、ＬＤ  最新ログデータ（最新ログデータ領域）。
【図１】
2013222435.tif 000003
【図２】
2013222435.tif 000004
【図３】
2013222435.tif 000005
【図４】
2013222435.tif 000006
【図５】
2013222435.tif 000007
【図６】
2013222435.tif 000008
【図７】
2013222435.tif 000009
【図８】
2013222435.tif 000010
【図９】
2013222435.tif 000011
【図１０】
2013222435.tif 000012
【図１１】
2013222435.tif 000013
【図１２】
2013222435.tif 000014
【図１３】
2013222435.tif 000015
【図１４】
2013222435.tif 000016
【図１５】
2013222435.tif 000017
【図１６】
2013222435.tif 000018
【図１７】
2013222435.tif 000019
【図１８】
2013222435.tif 000020
【図１９】
2013222435.tif 000021