(57)【要約】【課題】フラッシュメモリの交換、取り外しに適切に対応する。【解決手段】実施の形態の記憶装置は、識別情報記憶手段と、位置情報記憶手段と、判定手段と、制御手段と、を備える。識別情報記憶手段は、ホストからのアクセスの対象となる不揮発性メモリを識別する識別情報を複数記憶する。位置情報記憶手段は、不揮発性メモリの不良領域を識別する位置情報を記憶する。判定手段は、自装置に接続されている複数の不揮発性メモリに格納されている識別情報のそれぞれが、識別情報記憶手段に記憶されている複数の識別情報のいずれかと一致するか否かを判定する。制御手段は、判定手段により不揮発性メモリの識別情報が識別情報記憶手段に記憶されている複数の識別情報のいずれも一致しないと判定された場合に、一致しない識別情報で識別される不揮発性メモリに対して、位置情報記憶手段に記憶された不良領域の位置情報の利用を抑止するともに、当該不揮発性メモリに対する、ホストからのアクセスを抑止する。【選択図】図１
2012118739.tif 000002
【特許請求の範囲】
【請求項１】
ホストからのアクセスの対象となる不揮発性メモリを識別する識別情報を複数記憶する識別情報記憶手段と、
前記不揮発性メモリの不良領域を識別する位置情報を記憶する位置情報記憶手段と、
接続されている複数の不揮発性メモリに格納されている識別情報のそれぞれが、前記識別情報記憶手段に記憶されている複数の前記識別情報のいずれかと一致するか否かを判定する判定手段と、
前記判定手段により前記不揮発性メモリの前記識別情報が前記識別情報記憶手段に記憶されている前記複数の前記識別情報のいずれも一致しないと判定された場合に、一致しない前記識別情報で識別される前記不揮発性メモリに対して、前記位置情報記憶手段に記憶された不良領域の前記位置情報の利用を抑止すると共に、ホストからのアクセスを抑止する制御を行う制御手段と、
を備えた記憶装置。
【請求項２】
前記判定手段により前記不揮発性メモリの前記識別情報が前記識別情報記憶手段に記憶されている前記複数の前記識別情報のいずれも一致しないと判定された場合、前記不揮発性メモリに対して不良領域の検索を行う検索手段を、
さらに備えた請求項１に記載の記憶装置。
【請求項３】
前記位置情報記憶手段に対して、前記検索手段で検索された前記不良領域の位置情報を登録する登録手段を、
さらに備えた請求項２に記載の記憶装置。
【請求項４】
前記検索手段は、前記識別情報記憶手段に前記不揮発性メモリの前記識別情報が記憶されていない場合、前記不揮発性メモリに対して不良領域の検索を行い、
前記登録手段は、前記識別情報記憶手段に前記メモリの前記識別情報が記憶されていない場合、接続された前記メモリの前記識別情報を前記識別情報記憶手段に登録し、前記検索手段で検索された前記不良領域の位置情報を登録する、
請求項３に記載の記憶装置。
【請求項５】
前記制御部は、さらに、前記判定手段により前記不揮発性メモリの前記識別情報が前記識別情報記憶手段に記憶されている前記複数の前記識別情報のいずれも一致しないと判定された場合、故障時に行われる動作制御を行う、請求項１に記載の記憶装置。
【請求項６】
前記制御部は、さらに、前記判定手段により複数の前記不揮発性メモリの前記識別情報全てが、前記識別情報記憶手段に記憶されている前記識別情報と一致したと判定された場合、通常の動作制御を行う、請求項５に記載の記憶装置。
【請求項７】
記憶装置で実行される制御方法であって、
前記記憶装置は、ホストからのアクセスの対象となる不揮発性メモリを識別する識別情報を複数記憶する識別情報記憶手段と、
前記不揮発性メモリの不良領域を識別する位置情報を記憶する位置情報記憶手段と、を備え、
判定手段が、接続されている複数の不揮発性メモリに格納されている識別情報のそれぞれが、前記識別情報記憶手段に記憶されている複数の前記識別情報のいずれかと一致するか否かを判定する判定ステップと、
制御手段が、前記判定ステップにより前記不揮発性メモリの前記識別情報が前記識別情報記憶手段に記憶されている前記複数の前記識別情報のいずれも一致しないと判定された場合に、一致しない前記識別情報で識別される前記不揮発性メモリに対して、前記位置情報記憶手段に記憶された不良領域の前記位置情報の利用を抑止すると共に、ホストからのアクセスを抑止する制御を行う制御ステップと、
を有する制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、記憶装置、及び制御方法に関する。
【背景技術】
【０００２】
情報処理装置のデータの格納先として、ＮＡＮＤ型フラッシュメモリなどの不揮発性半導体メモリを搭載したＳＳＤ（Solid  State  Drive）が注目されている。
【０００３】
ＳＳＤ内には、データの格納先として、複数のフラッシュメモリチップが搭載されている。このフラッシュメモリチップは、誤りが多いなどの理由によって記憶領域として使用できなくなるブロック（以下、バッドブロックと称す）などが生じる場合がある。
【０００４】
このため、ＳＳＤには、バッドブロックを管理し、バッドブロックに応じてデータの書き込みを制御する技術が提案されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００９−７３４２４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
このようなＳＳＤでは、必要に応じてフラッシュメモリチップ又はフラッシュメモリボードの交換、取り外し等が行われる。しかしながら、従来技術においては、ＳＳＤに搭載されたフラッシュメモリチップ又はフラッシュメモリボードの交換、取り外し等がなされた場合に、管理していたバッドブロックの位置情報と不一致が生じるなど、状況に応じた適切な処理が難しいという問題がある。
【０００７】
本発明は、上記に鑑みてなされたものであって、フラッシュメモリの交換、取り外しに適切に対応する記憶装置、及び制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００８】
実施の形態の記憶装置は、識別情報記憶手段と、位置情報記憶手段と、判定手段と、制御手段と、を備える。識別情報記憶手段は、ホストからのアクセスの対象となる不揮発性メモリを識別する識別情報を複数記憶する。位置情報記憶手段は、不揮発性メモリの不良領域を識別する位置情報を記憶する。判定手段は、自装置に接続されている複数の不揮発性メモリに格納されている識別情報のそれぞれが、識別情報記憶手段に記憶されている複数の識別情報のいずれかと一致するか否かを判定する。制御手段は、判定手段により不揮発性メモリの識別情報が識別情報記憶手段に記憶されている複数の識別情報のいずれも一致しないと判定された場合に、一致しない識別情報で識別される不揮発性メモリに対して、位置情報記憶手段に記憶された不良領域の位置情報の利用を抑止するともに、当該不揮発性メモリに対する、ホストからのアクセスを抑止する制御を行う。
【図面の簡単な説明】
【０００９】
【図１】図１は、第１の実施の形態に係るＳＳＤ装置の構成を示したブロック図である。
【図２】図２は、第１の実施の形態に係るシリアルフラッシュメモリの構造の例を示した図である。
【図３】図３は、第１の実施の形態にかかるＳＳＤ装置におけるバッドブロックの検索処理の手順を示すフローチャートである。
【図４】図４は、第２の実施の形態に係るＳＳＤ装置の構成を示したブロック図である。
【図５】図５は、第２の実施の形態に係る情報処理装置として用いられるＰＣのハードウェア構造を示した図である。
【図６】図６は、第２の実施の形態にかかるＳＳＤ装置における電源投入時の初期動作の手順を示すフローチャートである。
【図７】図７は、第３の実施の形態に係るＳＳＤ装置の構成を示したブロック図である。
【図８】図８は、第３の実施の形態にかかるＳＳＤ装置における電源投入時の初期動作の手順を示すフローチャートである。
【発明を実施するための形態】
【００１０】
（第１の実施の形態）
以下、実施の形態について添付図面を参照して説明する。
【００１１】
なお、以下では、本実施の形態の記憶装置、及び制御方法を、ホスト装置としてのパーソナルコンピュータに接続されるＳＳＤ装置に適用した場合について説明する。
【００１２】
図１は、本実施の形態に係るＳＳＤ装置１００の構成を示したブロック図である。
【００１３】
図１に示すように、このＳＳＤ装置（記憶装置）１００は、パーソナルコンピュータなどの情報処理装置のメモリとして機能するものであり、ＳＳＤコントローラ１０１と、シリアルフラッシュメモリ１０２と、データバッファメモリ１０３と、第１のフラッシュメモリチップ１２１と、第２のフラッシュメモリチップ１２２と、第３のフラッシュメモリチップ１２３と、第４のフラッシュメモリチップ１２４と、を備えている。
【００１４】
本実施の形態にかかるＳＳＤ装置１００では、４個のフラッシュメモリチップを搭載した例とする。なお、ＳＳＤ装置１００は、フラッシュメモリチップの数には多様な構成があり、本実施の形態の構成に限定することなく、いずれの構成にも適用可能とする。
【００１５】
第１のフラッシュメモリチップ１２１、第２のフラッシュメモリチップ１２２、第３のフラッシュメモリチップ１２３、及び第４のフラッシュメモリチップ１２４は、電源供給が遮断された場合でもデータなどの記憶内容を保持し続けることが可能な、ＮＡＮＤ型の不揮発性メモリとする。また、第１のフラッシュメモリチップ１２１〜第４のフラッシュメモリチップ１２４は、ホストからのアクセスの対象となり、ホストからの要求に従ってデータの読み込み又は書き込みが行われる。
【００１６】
第１のフラッシュメモリチップ１２１、第２のフラッシュメモリチップ１２２、第３のフラッシュメモリチップ１２３、及び第４のフラッシュメモリチップ１２４は、ブロック単位で領域が分かれているものとする。本実施の形態では、１ブロックが１６セクタで構成されている例とするが、ブロック構成に制限を設けるものではない。そして、第１のフラッシュメモリチップ１２１〜第４のフラッシュメモリチップ１２４では、ブロック単位でデータの消去および書き込みを行う。各ブロックには、ブロック番号が割り当てられている。このブロック番号は、ブロックに対してアクセスする場合等にブロックの位置情報として使用される。
【００１７】
第１のフラッシュメモリチップ１２１、第２のフラッシュメモリチップ１２２、第３のフラッシュメモリチップ１２３、及び第４のフラッシュメモリチップ１２４は、書き込み又は読み込みなどのアクセスができなくなる不良領域を、ブロック単位で識別、管理する。以下、不良領域となったブロックをバッドブロックと称す。なお、本実施の形態では、ブロック単位で不良領域を管理する例とするが、ブロック単位に制限するものではなく、他の単位で管理しても良い。
【００１８】
これら第１のフラッシュメモリチップ１２１、第２のフラッシュメモリチップ１２２、第３のフラッシュメモリチップ１２３、及び第４のフラッシュメモリチップ１２４は、ＳＳＤ１００の出荷前や故障診断時などに検査が行われる。そして、当該検査で、必要な基準を満たしていないフラッシュメモリチップについては交換される。そして、交換された後、再検査が行われる。従来、交換が行われた後のＳＳＤ装置については、全てのフラッシュメモリチップ又はフラッシュメモリボードに対してバッドブロックを検索するための検査が行われていた。しかしながら、全フラッシュメモリチップ又はフラッシュメモリボードの全てのブロックについて検索を行うと、かなりの時間を要する。そこで、本実施の形態では、交換されたフラッシュメモリチップのみ検索を行うことで、検索時間の短縮を図ることとした。
【００１９】
まず、本実施の形態にかかるＳＳＤ装置１００の製造過程において、それぞれのフラッシュメモリチップの特定の領域にメモリＩＤを予め格納しておく。例えば、第１のフラッシュメモリチップ１２１はメモリＩＤ１３１を記録する。第２のフラッシュメモリチップ１２２はメモリＩＤ１３２を記録する。第３のフラッシュメモリチップ１２３はメモリＩＤ１３３を記録する。第４のフラッシュメモリチップ１２４はメモリＩＤ１３４を記録する。
【００２０】
メモリＩＤ１３１〜１３４は、製造されるフラッシュメモリチップ毎にユニークに割り当てられたＩＤとする。このフラッシュメモリチップのメモリＩＤ１３１〜１３４は、数バイトから数十バイト程度のデータであり、フラッシュメモリチップ毎にユニークな値であるため、同一メモリＩＤを有したフラッシュメモリチップが複数存在することはない。なお、本実施の形態では、メモリＩＤ１３１〜１３４として、それぞれ１６バイトのユニークなシリアル番号が割り当てられるものとする。
【００２１】
このため、フラッシュメモリチップを交換した場合、当該フラッシュメモリチップに対してアクセスすると、ＳＳＤコントローラ１０１から参照できるメモリＩＤが変更されることになる。
【００２２】
データバッファメモリ１０３は、第１のフラッシュメモリチップ１２１〜第４のフラッシュメモリチップ１２４間でのデータ転送用キャッシュ、およびＣＰＵ１１１の作業領域用メモリとして機能する。例えばデータ転送する際に、データバッファメモリ１０３は、図示しないホスト装置から受信し、第１のフラッシュメモリチップ１２１〜第４のフラッシュメモリチップ１２４にライトするデータや、第１のフラッシュメモリチップ１２１〜第４のフラッシュメモリチップ１２４からリードしてホスト装置に送信するデータなどを一時的に記憶する揮発性メモリとする。このデータバッファメモリ１０３としては、例えばＤＲＡＭなどが用いられる。なお、ＤＲＡＭの代わりに、ＦｅＲＡＭを使用しても良い。
【００２３】
シリアルフラッシュメモリ１０２は、フラッシュメモリチップの検査を行うためのデータなどを保持し続けることが可能な不揮発性メモリとする。
【００２４】
図２は、シリアルフラッシュメモリ１０２の構造の例を示した図である。図２に示すように、シリアルフラッシュメモリ１０２は、第１のフラッシュメモリチップのメモリＩＤ２０１＿１と、第２のフラッシュメモリチップのメモリＩＤ２０１＿２と、第３のフラッシュメモリチップのメモリＩＤ２０１＿３と、第４のフラッシュメモリチップのメモリＩＤ２０１＿４と、を記憶する。つまり、本実施の形態にかかるシリアルフラッシュメモリ１０２では、第１のフラッシュメモリチップ１２１〜第４のフラッシュメモリチップ１２４のメモリＩＤ２０１＿１〜２０１＿４をまとめて６４バイト分記録している。このように、シリアルフラッシュメモリ１０２は、接続されているフラッシュメモリチップの数の分だけ（複数の）メモリＩＤを記憶する。
【００２５】
さらに、シリアルフラッシュメモリ１０２は、第１のフラッシュメモリチップ１２１〜第４のフラッシュメモリチップ１２４のバッドブロックを識別する位置情報（第１のバッドブロック２０２＿１、第２のバッドブロック２０２＿２、第３のバッドブロック２０２＿３、……、第ｎのバッドブロック２０２＿ｎ）を記憶する。本実施の形態では、バッドブロックの位置情報として、チップ番号とブロック番号とを記憶する。チップ番号は、ＳＳＤ装置１００の接続先、換言すれば接続されたフラッシュメモリチップを識別する番号とする。なお、接続されたフラッシュメモリチップを識別できればよく、チップを識別する情報として、例えばメモリＩＤを用いても良い。
【００２６】
つまり、フラッシュメモリチップは、出荷される時点でバッドブロックが内在し、バッドブロックであるか否かを示す情報がブロック毎に予め記録されている。このバッドブロックは、データの読み書きが正常に実行できないブロックであるため、ＳＳＤ装置１００は、これらバッドブロックを回避しながら、データのアクセスを行う必要がある。
【００２７】
そこで、ＳＳＤ装置１００の製造過程において、フラッシュメモリチップが接続された後、検索部１５４が、当該フラッシュメモリの出荷時点で記録されているバッドブロックを検索し、登録部１５３が、検索結果であるバッドブロックの位置情報２０２＿１〜２０２＿ｎをシリアルフラッシュメモリ１０２内に登録している。
【００２８】
なお、本実施の形態では、メモリＩＤ及びバッドブロックの位置情報を格納するメモリとしてシリアルフラッシュメモリを用いているが、他の不揮発性メモリを用いても良い。
【００２９】
図１に戻り、ＳＳＤコントローラ１０１は、ＣＰＵ１１１と、ブートＲＯＭ１１２と、ホストインターフェース・コントローラ１１４と、バッファメモリ・コントローラ１１５と、フラッシュメモリ・コントローラ１１６と、を備えている。
【００３０】
ホストインターフェース・コントローラ１１４は、ホスト装置と通信接続する機能を有する回路とする。
【００３１】
バッファメモリ・コントローラ１１５は、データバッファメモリ１０３に対するライト（ＷＲＩＴＥ）やリード（ＲＥＡＤ）などのデータアクセスを制御する機能を有する回路とする。
【００３２】
フラッシュメモリ・コントローラ１１６は、第１のフラッシュメモリチップ１２１〜第４のフラッシュメモリチップ１２４に対するライト（ＷＲＩＴＥ）やリード（ＲＥＡＤ）などのデータアクセスを制御する機能を有する回路とする。
【００３３】
ブートＲＯＭ１１２は、制御プログラム１５０が格納されている。
【００３４】
ＣＰＵ１１１は、ホストインターフェース・コントローラ１１４、バッファメモリ・コントローラ１１５及びフラッシュメモリ・コントローラ１１６を制御するとともに、ホスト装置からの、第１のフラッシュメモリチップ１２１〜第４のフラッシュメモリチップ１２４に対するライト（ＷＲＩＴＥ）やリード（ＲＥＡＤ）などのデータアクセスのコマンド（命令）を処理制御する。
【００３５】
ＣＰＵ１１１は、ＳＳＤ装置１００の起動時に、ブートＲＯＭ１１２に格納されたブート用プログラムを読み込み、データバッファメモリ１０３などに展開することで、ＣＰＵ１１１が、ファームウエアを実行する。また、ＳＳＤ装置１００に対して検査を行う際には、制御プログラム１５０が呼び出される。これにより、制御プログラム１５０内に格納されていた判定部１５１と、制御部１５２と、登録部１５３と、検索部１５４と、がＣＰＵ１１１上にソフトウェア構成として実現する。
【００３６】
判定部１５１は、ＳＳＤ装置１００に接続されている複数のフラッシュメモリチップ１２１〜１２４に格納されているメモリＩＤ１３１〜１３４のそれぞれが、シリアルフラッシュメモリ１０２に記憶されている複数のメモリＩＤ２０１＿１〜２０１＿４のいずれかと一致するか否かを判定する。
【００３７】
制御部１５２は、フラッシュメモリ・コントローラ１１６を介して、各フラッシュメモリチップ１２１〜１２４に対する制御を行う。例えば、判定部１５１よりフラッシュメモリチップ１２１〜１２４のうちのいずれか１つのメモリＩＤが、シリアルフラッシュメモリ１０２に記憶されている複数のメモリＩＤのいずれも一致しないと判定された場合に、一致しなかったメモリＩＤを格納するフラッシュメモリチップのバッドブロックの位置情報は、シリアルフラッシュメモリ１０２に記憶されたバッドブロックの位置情報と異なるため利用できない。そこで、制御部１５２は、一致しなかったメモリＩＤを格納するフラッシュメモリチップに対して、シリアルフラッシュメモリ１０２に記憶されているバッドブロックの位置情報の利用を停止すると共に、当該フラッシュメモリチップに対する、ホストからのアクセスを抑止する制御を行う。
【００３８】
検索部１５４は、判定部１５１によりフラッシュメモリチップ１２１〜１２４に格納されているメモリＩＤ１３１〜１３４が、シリアルフラッシュメモリ１０２に記憶されている複数のメモリＩＤ２０１＿１〜２０２＿４のいずれも一致しないと判定された場合、一致しなかったメモリＩＤが格納されているフラッシュメモリチップに対して、バッドブロックの検索を行う。
【００３９】
登録部１５３は、シリアルフラッシュメモリ１０２のバッドブロックの位置情報を格納する記憶領域に対して、検索部１５４で検索されたバッドブロックの位置情報を登録する。
【００４０】
ＳＳＤ装置１００において、初めて検査を行う場合、シリアルフラッシュメモリ１０２には、メモリＩＤ及びバッドブロックの位置情報が記憶されていないことになる。この場合、検索部１５４が、接続されている第１のフラッシュメモリチップ１２１〜第４のフラッシュメモリチップ１２４に対して、不良ブロックを検索する。そして、登録部１５３が、接続されていたフラッシュメモリチップのメモリＩＤを、シリアルフラッシュメモリ１０２に登録するとともに、検索部１５４により検索されたバッドブロックの位置情報をシリアルフラッシュメモリ１０２に登録する。
【００４１】
次に、本実施の形態にかかるＳＳＤ装置１００における、バッドブロックの検索処理について説明する。図３は、本実施の形態にかかるＳＳＤ装置１００における上述した処理の手順を示すフローチャートである。
【００４２】
まず、ＳＳＤ装置１００は、ホストインターフェース・コントローラ１１４を介して、接続先から、バッドブロックの検索開始を受け付ける（ステップＳ３０１）。これに従い、ＳＳＤ１００のＣＰＵ１１１上で動作している制御プログラム１５０が、バッドブロックを検索するための制御を開始する。
【００４３】
次に、判定部１５１が、シリアルフラッシュメモリ１０２に、メモリＩＤ及びバッドブロックの位置情報が書き込まれているか否かを判定する（ステップＳ３０２）。
【００４４】
そして、判定部１５１が、書き込みが１つもないと判定した場合（ステップＳ３０２：Ｎｏ）、検索部１５４が、ＳＳＤ装置１００に接続されている全てのフラッシュメモリチップ（例えば、第１のフラッシュメモリチップ１２１〜第４のフラッシュメモリチップ１２４）に対してバッドブロックの検索を行う（ステップＳ３１１）。
【００４５】
そして、登録部１５３が、シリアルフラッシュメモリ１０２に対して、ＳＳＤ装置１００に接続されている全てのフラッシュメモリチップ（例えば、第１のフラッシュメモリチップ１２１〜第４のフラッシュメモリチップ１２４）のメモリＩＤを登録すると共に、検索部１５４の検索結果であるバッドブロックの位置情報を登録し（ステップＳ３１２）、処理を終了する。
【００４６】
一方、判定部１５１が、シリアルフラッシュメモリ１０２に、メモリＩＤ及びバッドブロックの位置情報の書き込みが既にあると判定した場合（ステップＳ３０２：Ｙｅｓ）、判定部１５１が、ＳＳＤ装置１００に接続されているフラッシュメモリチップのメモリＩＤが、シリアルフラッシュメモリ１０２に登録されているメモリＩＤと一致するか否かを判定する（ステップＳ３０３）。一致する場合は（ステップＳ３０３：Ｙｅｓ）、ステップＳ３０６に進む。
【００４７】
一方、判定部１５１が、ＳＳＤ装置１００に接続されているフラッシュメモリチップのメモリＩＤが、シリアルフラッシュメモリ１０２に登録されているメモリＩＤと一致しないと判定した場合（ステップＳ３０３：Ｎｏ）、ＳＳＤ装置１００に実装しているフラッシュメモリチップのバッドブロックと、シリアルフラッシュメモリ１０２に記憶されているバッドブロックと、の対応が正しくないものとみなし、バッドブロックを調べる必要がある。そこで、検索部１５４は、一致しなかったメモリＩＤを格納するフラッシュメモリチップに対して、バッドブロックを検索する（ステップＳ３０４）。本実施の形態では、このメモリＩＤが一致しなかったフラッシュメモリチップは、交換されて新たに接続されたものとみなし、検索部１５４は、当該フラッシュメモリチップに対して、フラッシュメモリチップの提供先が予め書き込んだバッドブロックの位置情報を読み出すことで、バッドブロックの位置情報を検出する。
【００４８】
そして、登録部１５３が、検索結果であるバッドブロックの位置情報（チップ番号、ブロック番号）で、シリアルフラッシュメモリ１０２に対して、更新する（ステップＳ３０５）。なお、登録部１５３は、当該更新を行う前に、取り除かれたフラッシュメモリチップの位置情報を削除する。
【００４９】
そして、判定部１５１は、ＳＳＤ装置１００に接続されている全てのフラッシュメモリチップについて、メモリＩＤが一致するか否かの判定が終了したか否か判定する（ステップＳ３０６）。判定が終了していない場合（ステップＳ３０６：Ｎｏ）、再びステップＳ３０３から判定を行う。
【００５０】
そして、全てのフラッシュメモリチップについてメモリＩＤが一致するか否かの判定が終了した場合（ステップＳ３０６：Ｙｅｓ）には、全てのフラッシュメモリチップのバッドブロックの位置情報がシリアルフラッシュメモリ１０２に登録されたものとして、処理を終了する。
【００５１】
これにより、ＳＳＤ装置１００に接続されている複数のフラッシュメモリチップについてバッドブロックの位置情報が、フラッシュメモリチップ１２４に登録されることになる。
【００５２】
このようにＳＳＤ装置１００のバッドブロックの位置情報を特定した後、当該ＳＳＤ装置１００に対する検証が行われる。この検証の過程で、特定のフラッシュメモリチップについて、シリアルフラッシュメモリ１０２に記憶されたバッドブロックが参考にされて、データのリード及びライトが行われる。その際、バッドブロック以外のブロックでもデータのリードやライトができないという状況が生じた場合、必要に応じてフラッシュメモリチップが交換される。このフラッシュメモリチップの交換が行われた場合、再び図３に示す処理を行うことになる。このような工程を経ることで、信頼性の高いＳＳＤ装置１００を提供することが可能になる。
【００５３】
なお、本実施の形態においては、フラッシュメモリチップの場合について説明したが、フラッシュメモリチップに制限するものではなく、交換可能なフラッシュメモリボードに適用しても良い。その場合についても、フラッシュメモリチップが搭載されたフラッシュメモリボードがＳＳＤ装置に搭載された点のみ異なり、他の構成については上述した構成と同様とする。
【００５４】
ところで、従来のＳＳＤ装置においては、交換されたフラッシュメモリチップを検出できないため、全てのフラッシュメモリチップに対してライト・リード・テストによるバッドブロック検出を行う必要があった。この検出は時間がかかる上、場合によっては正確ではないという問題が生じることもあった。
【００５５】
これに対し、本実施の形態においては、ＳＳＤ装置１００の製造過程において、一度試験した装置について、フラッシュメモリチップ又はフラッシュメモリボードを交換して再度試験する場合、交換されていないフラッシュメモリチップ又はバッドブロックの位置情報として、フラッシュメモリの提供元がフラッシュメモリチップの出荷時点で予め書き込んだ位置情報を使用できる。
【００５６】
また、本実施の形態にかかるＳＳＤ装置１００では、検索部１５４による、交換されたフラッシュメモリチップに対するバッドブロックの検索では、提供元が出荷時点で予め書き込んだ位置情報を検索することとした。これにより、バッドブロックを正確に回避できるようになり、信頼性の高いＳＳＤ装置１００を提供することができる。
【００５７】
（第２の実施の形態）
第１の実施の形態にかかるＳＳＤ装置１００では、出荷前等にバッドブロックの位置情報を検索する例について説明した。しかしながら、ＳＳＤ装置においては、出荷した後に、フラッシュメモリチップやフラッシュメモリボードが交換される場合もある。このような交換がなされた場合、適切な動作を行わないこともある。そこで、第２の実施の形態では、ＳＳＤ装置のフラッシュメモリチップやフラッシュメモリボードの交換という異常を検出する例について説明する。
【００５８】
図４は、第２の実施の形態に係るＳＳＤ装置４００の構成を示したブロック図である。図４に示すように、第２の実施の形態にかかるＳＳＤ装置４００は、第１の実施の形態のＳＳＤ装置１００と比べて、ＳＳＤコントローラ１０１と実行する処理が異なるＳＳＤコントローラ４０１に変更され、第１のフラッシュメモリチップ１２１〜第４のフラッシュメモリチップ１２４が各メモリボードに搭載され、第５のフラッシュメモリチップ４２１が追加された構成とする。
【００５９】
第１のメモリボード４４１は、第１のフラッシュメモリチップ１２１を搭載し、第２のメモリボード４４２は、第２のフラッシュメモリチップ１２２を搭載し、第３のメモリボード４４３は、第３のフラッシュメモリチップ１２３を搭載し、第４のメモリボード４４４は、第４のフラッシュメモリチップ１２４を搭載する。これにより、メモリボードを交換することで、フラッシュメモリチップを交換できるが、出荷された後ユーザが交換すると、不具合が生じる可能性がある。本実施の形態ではこのような不具合を抑止する。
【００６０】
第５のフラッシュメモリチップ４２１は、メモリボード上ではなく、ＳＳＤ装置４００に直接搭載されているメモリチップとする。このような第５のフラッシュメモリチップ４２１においても、メモリＩＤ４３１を保持している。
【００６１】
なお、シリアルフラッシュメモリ１０２には、第１の実施の形態と同様、第１のフラッシュメモリチップ１２１〜第５のフラッシュメモリチップ４２１のメモリＩＤと、各フラッシュメモリチップのバッドブロックの位置情報と、を記憶している。
【００６２】
そして、ＳＳＤ装置４００は、情報処理装置の記憶手段として利用される。図５は、情報処理装置として用いられるＰＣのハードウェア構造を示した図である。図５に示すように、情報処理装置５００は、ＣＰＵ５０１と、ＲＡＭ５０２と、ＲＯＭ５０３と、電源ユニット５０４と、入力インターフェース（Ｉ／Ｆ）５０５と、ＳＳＤ装置４００と、を備えている。
【００６３】
本実施の形態の情報処理装置５００では、電源ユニット５０４により電源が投入された場合に、ＲＯＭ５０３に格納されていたＢＩＯＳがＣＰＵ５０１により読み出され、ＲＡＭ５０２を作業領域として用いて、初期動作を開始する。その際、ＳＳＤ装置４００内においても初期動作が行われることになる。
【００６４】
図４に戻り、ＳＳＤコントローラ４０１は、第１の実施の形態のＳＳＤコントローラ１０１と比べて、ブートＲＯＭ１１２に搭載された制御プログラム１５０が、制御プログラム４５０に変更されている点で異なる。
【００６５】
制御プログラム４５０は、判定部４５１と、制御部４５２と、設定部４５３と、を備える。制御プログラム４５０は、電源投入時に呼び出されるものとする。
【００６６】
判定部４５１は、ＳＳＤ装置４００に接続されている複数のフラッシュメモリチップ１２１〜１２４、４２１に格納されているメモリＩＤ１３１〜１３４、４３１のそれぞれと、シリアルフラッシュメモリ１０２に記憶されている複数のメモリＩＤ２０１＿１〜２０１＿４のそれぞれと、が一致するか否かを判定する。
【００６７】
設定部４５３は、判定部４５１の判定結果に従った設定を行う。例えば、判定部４５１が各フラッシュメモリチップのメモリＩＤが、シリアルフラッシュメモリ１０２に登録されたメモリＩＤのいずれもと一致しないと判定した場合、異常状態である旨の設定を行う。また、判定部４５１が全てのフラッシュメモリチップのメモリＩＤが、シリアルフラッシュメモリ１０２に登録されていると判定した場合、通常状態である旨の設定を行う。
【００６８】
制御部４５２は、設定部４５３により行われた設定に従って動作制御を行う。例えば、判定部４５１によりフラッシュメモリチップのメモリＩＤが、シリアルフラッシュメモリ１０２に記憶されている複数のメモリＩＤのいずれも一致しないと判定された場合、制御部４５２は、設定部４５３が行った異常状態である旨の設定に従って、故障時に行われる動作制御を行う。この故障時に行われる動作制御として、制御部４５２は、シリアルフラッシュメモリ１０２に記憶されているバッドブロックの位置情報の利用を停止すると共に、ホストからのアクセスを抑止する制御を行う。また、制御部４５２は、判定部４５１により複数のフラッシュメモリチップのメモリＩＤ全てが、シリアルフラッシュメモリ１０２に記憶されているメモリＩＤと一致したと判定された場合、制御部４５２は、設定部４５３が行った通常状態である旨の設定に従って、通常の動作制御を行う。なお、故障時に行われる他の動作制御や、通常の動作制御は、従来から行われている制御と同様のものとして、説明を省略する。
【００６９】
このように、第２の実施の形態にかかるＳＳＤ装置４００では、第１の実施の形態と同様に、各フラッシュメモリチップ内にメモリＩＤを保持させると共に、シリアルフラッシュメモリ１０２に全フラッシュメモリチップのメモリＩＤに保持させ、電源投入時に各フラッシュメモリのメモリＩＤを比較し、メモリＩＤが一致しない場合は故障状態として通常の応答を行わないこととした。
【００７０】
次に、本実施の形態にかかるＳＳＤ装置４００における電源投入時の初期動作について説明する。図６は、本実施の形態にかかるＳＳＤ装置４００における上述した初期動作の手順を示すフローチャートである。
【００７１】
まず、情報処理装置５００における電源投入時に従って、ＳＳＤ装置４００も電源投入による電力の供給が開始される（ステップＳ６０１）。
【００７２】
次に、判定部４５１は、ＳＳＤ装置４００に接続されているフラッシュメモリチップのメモリＩＤが、シリアルフラッシュメモリ１０２に登録されているメモリＩＤと一致するか否かを判定する（ステップＳ６０２）。一致する場合は（ステップＳ６０２：Ｙｅｓ）、判定部４５１が、全てのフラッシュメモリチップについて、一致したか否かの判定が終了したか否かを判定する（ステップＳ６０３）。全てのフラッシュメモリチップについて判定を行っていない場合（ステップＳ６０３：Ｎｏ）、再びステップＳ６０２から処理を行う。一方、全てのフラッシュメモリチップについてメモリＩＤが一致し、判定が終了した場合（ステップＳ６０３：Ｙｅｓ）、設定部４５３が、通常状態と設定する（ステップＳ６０４）。そして、制御部４５２が、当該設定に従って、通常の動作制御を行う（ステップＳ６０５）。
【００７３】
一方、判定部４５１が、ＳＳＤ装置４００に接続されているフラッシュメモリチップのメモリＩＤが、シリアルフラッシュメモリ１０２に登録されているメモリＩＤと一致しないと判定した場合（ステップＳ６０２：Ｎｏ）、設定部４５３が、異常状態と設定する（ステップＳ６０６）。そして、制御部４５２が、当該設定に従って、故障時の動作制御を行い、処理を終了する（ステップＳ６０７）。故障時の動作制御の例としては、ＳＡＳやＳＡＴＡ等の規格に従ったエラーを、ホストである情報処理装置５００に対して通知するなどがある。
【００７４】
上述した処理手順のように、各フラッシュメモリのメモリＩＤと、シリアルフラッシュメモリ内のメモリＩＤと、が全て一致した場合に限り、実装しているフラッシュメモリのバッドブロックの位置情報が、シリアルフラッシュメモリ１０２に格納されているものであると判断し、正常に動作を継続することとした。
【００７５】
なお、第２の実施の形態においても、制御プログラム４５０内に登録部１５３等を備え、第１の実施の形態と同様に、出荷前の検査を行っても良い。
【００７６】
また、ＳＳＤ装置に搭載するフラッシュメモリボードに、複数のフラッシュメモリチップを搭載しても良い。この場合、フラッシュメモリボード毎にメモリＩＤが一致するか否かの判定をしても良いし、フラッシュメモリボードに搭載されたフラッシュメモリチップ毎にメモリＩＤが一致するか否かの判定を行っても良い。
【００７７】
ところで、従来においては、実装されているフラッシュメモリと、シリアルフラッシュメモリのバッドブロックの位置情報の対応が正しいかどうか確認しなかった。このため、フラッシュメモリ（フラッシュメモリチップ又はフラッシュメモリボード）が交換された場合、誤ったバッドブロックの位置情報を用いることになり、バッドブロックの回避が正しく行われないまま動作するという問題が生じていた。
【００７８】
これに対し、第２の実施の形態にかかるＳＳＤ装置４００では、フラッシュメモリチップやフラッシュメモリボードが交換された場合、あるいはフラッシュメモリチップが故障した場合に、これらの状態を容易に検出し、誤動作を防止することができる。
【００７９】
上述した第１及び第２の実施の形態にかかるＳＳＤ装置１００、４００においては、上述した各構成を備えることで、交換されたフラッシュメモリにおけるバッドブロックの位置情報の不一致を抑止できるので、バッドブロックの位置情報で不整合が生じている場合のアクセスを抑止し、信頼性を確保できる。
【００８０】
（第３の実施の形態）
第１〜第２の形態では、メモリＩＤを用いて、フラッシュメモリチップが交換されたか否かの判定を行っていた。しかしながら、メモリＩＤは、フラッシュメモリチップが交換されたか否かの判定に用いることに制限するものではない。そこで、第３の実施の形態においては、電源投入時にメモリＩＤに基づいて試験を行う試験モードとして設定するか否かを説明した例とする。
【００８１】
図７は、第３の実施の形態に係るＳＳＤ装置７００の構成を示したブロック図である。図７に示すように、第３の実施の形態にかかるＳＳＤ装置７００は、第２の実施の形態のＳＳＤ装置４００と比べて、ＳＳＤコントローラ４０１と実行する処理が異なるＳＳＤコントローラ７１１に変更された構成とする。
【００８２】
ＳＳＤコントローラ７１１は、第２の実施の形態のＳＳＤコントローラ４０１と比べて、ブートＲＯＭ１１２に搭載された制御プログラム４５０が、制御プログラム７５０に変更されている点で異なる。
【００８３】
制御プログラム７５０は、判定部７５１と、制御部７５２と、設定部７５３と、を備える。制御プログラム７５０は、電源投入時に呼び出されるものとする。
【００８４】
判定部７５１は、ＳＳＤ装置７００に接続されている複数のフラッシュメモリチップ１２１〜１２４の内部を参照して、メモリＩＤが格納されているか否かを確認する。そして、判定部７５１が、メモリＩＤが確認できていない場合には、フラッシュメモリチップ又はメモリボードが接続されていないものと判定する。このように、本実施の形態にかかる判定部７５１は、メモリＩＤに基づいて、メモリボードが全て接続されているか否かを判定する。
【００８５】
このように、本実施の形態にかかるＳＳＤ装置７００においては、全てのメモリボードが取り外されている場合には、ＳＳＤ装置７００が試験モードに移行するものとする。これにより、試験者がＳＳＤ装置７００に対してテストを行いたい場合には、ＳＳＤ装置７００からメモリボードを全て取り外して起動するだけで、試験モードに移行することが可能となる。なお、本実施の形態における、試験モードに移行するか否かの判定では、第５のフラッシュメモリチップ４２１のメモリＩＤが存在するか否かの判定は行わない。これは、第５のフラッシュメモリチップ４２１は、ＳＳＤ装置７００の本体のボード上に搭載されており、メモリボードのように容易に取り外すことができないためである。
【００８６】
試験モードは、ＳＳＤコントローラ７１１を含む、ＳＳＤ装置７００本体のボードが正しく機能するか否かを診断するモードとする。試験モードにおいては、通常動作で行うようなフラッシュメモリアクセスは行わないため、電源投入時にＳＳＤ装置７００のブートアップに必要なデータをフラッシュメモリから読み出す処理は行わない。試験モードでは、制御プログラム７５０の制御により、ＣＰＵ１１１が、ＳＳＤコントローラ７１１、シリアルフラッシュメモリ１０２、データバッファメモリ１０３、フラッシュメモリなどの接続確認、動作確認を実施し、試験結果ログを生成してホスト装置（例えば情報処理装置５００）に通知する。
【００８７】
設定部７５３は、判定部７５１の判定結果に従った設定を行う。例えば、判定部７５１がメモリＩＤを１つも参照できず、メモリボード全てが取り外されていると判定した場合、試験モードに移行するための設定を行う。また、判定部７５１がフラッシュメモリボードのメモリＩＤを１つ以上参照できた場合には、接続されているメモリボードが存在すると判定し、設定部７５３は、通常状態に移行するための設定を行う。
【００８８】
制御部７５２は、設定部７５３により行われた設定に従って動作制御を行う。例えば、判定部７５１によりフラッシュメモリボードのメモリＩＤが参照でき、メモリボードが１つ以上接続されていると判定されているため、設定部７５３が通常の動作を行うよう設定した場合、制御部７５２は、通常動作を行う。また、判定部７５１により全てのメモリボードが取り外されていると判定されたため、設定部７５３が試験モードに行うよう設定した場合、制御部７５２は、試験動作を行う。なお、試験モードで行われる動作制御は、従来から行われている制御と同様のものとして、説明を省略する。
【００８９】
次に、本実施の形態にかかるＳＳＤ装置７００における電源投入時の初期動作について説明する。図８は、本実施の形態にかかるＳＳＤ装置７００における上述した初期動作の手順を示すフローチャートである。
【００９０】
まず、試験者の電源投入に従って、ＳＳＤ装置７００も電源投入による電力の供給が開始される（ステップＳ８０１）。
【００９１】
次に、判定部７５１は、シリアルフラッシュメモリ１０２に登録されているメモリＩＤの参照を試み、当該メモリＩＤに対応するメモリボードが存在するか否かを確認する（ステップＳ８０２）。
【００９２】
そして、判定部７５１が、ＳＳＤ装置７００に接続されているメモリボードが１つ以上存在するか否かを判定する（ステップＳ８０３）。メモリボードが１つ以上存在すると判定した場合は（ステップＳ８０３：Ｙｅｓ）、通常動作を行うよう設定する（ステップＳ８０４）。そして、制御部７５２が、当該設定に従って、通常の動作制御を行う（ステップＳ８０５）。
【００９３】
一方、判定部７５１が、ＳＳＤ装置７００に接続されているメモリボードが１つも存在しないと判定した場合（ステップＳ８０３：Ｎｏ）、設定部７５３が、試験モードに移行するよう設定する（ステップＳ８０６）。そして、制御部７５２が、当該設定に従って、試験動作を行い、処理を終了する（ステップＳ８０７）。
【００９４】
このように、本実施の形態にかかるＳＳＤ装置７００では、電源投入時にボード構成の確認を行い、フラッシュメモリを搭載したメモリボード（サブボード）が接続されていないことを検出した場合は、ボード単体の試験を行う試験モードに切り替え、ホスト装置（例えば情報処理装置５００）に対して通常の応答を行わないこととした。
【００９５】
なお、本実施の形態にかかるＳＳＤ装置７００では、全てのメモリボードが取り外された場合に試験モードに移行する例について説明したが、全てのメモリボードを取り外すことに制限するものではない。例えば、過半数のメモリボードが取り外されたなど、所定数のメモリボードが取り外された場合に、試験モードに切り替えても良い。
【００９６】
ところで、従来のＳＳＤ装置においては、フラッシュメモリチップが搭載されたメモリボードが全て接続されていない場合には、故障状態であると判断され、ＳＳＤ装置本体のボード単体で診断することができなかった。このため、Ｘ線を用いた分析装置を使ってはんだ接合チェックを行っていたため、時間とコストがかかる問題があった。
【００９７】
これに対し、本実施の形態にかかるＳＳＤ装置７００では、ＳＳＤ装置７００の製造過程において、ＳＳＤコントローラ７１１を含むボード単体で診断を実施できるようになり、結線異常などの機能不具合を容易に検出できるようになる。
【００９８】
なお、本発明は、上記実施の形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化することができる。また、上記実施の形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成することができる。例えば、実施の形態に示される全構成要素からいくつかの構成要素を削除してもよい。さらに、異なる実施の形態にわたる構成要素を適宜組み合わせても良い。
【符号の説明】
【００９９】
１００、４００、７００…ＳＳＤ装置、１０１、４０１、７１１…ＳＳＤコントローラ、１０２…シリアルフラッシュメモリ、１０３…データバッファメモリ、１１４…ホストインターフェース・コントローラ、１１５…バッファメモリ・コントローラ、１１６…フラッシュメモリ・コントローラ、１２１…第１のフラッシュメモリチップ、１２２…第２のフラッシュメモリチップ、１２３…第３のフラッシュメモリチップ、１２４…第４のフラッシュメモリチップ、１５０、４５０、７５０…制御プログラム、１５１、４５１、７５１…判定部、１５２、４５２、７５２…制御部、１５３…登録部、１５４…検索部、４２１…第５のフラッシュメモリチップ、４４１…第１のメモリボード、４４２…第２のメモリボード、４４３…第３のメモリボード、４４４…第４のメモリボード、４５３、７５３…設定部、５００…情報処理装置
【図１】
2012118739.tif 000003
【図２】
2012118739.tif 000004
【図３】
2012118739.tif 000005
【図４】
2012118739.tif 000006
【図５】
2012118739.tif 000007
【図６】
2012118739.tif 000008
【図７】
2012118739.tif 000009
【図８】
2012118739.tif 000010