(57)【要約】  不揮発性記憶装置はコントローラと不揮発性メモリからなり、コントローラは、ホスト装置から指定される論理アドレスを物理アドレスに変換する論理物理アドレス変換部と、ホスト装置から指定されるブートコードアドレス情報を物理アドレスに変換するブートコードアドレス変換部を備える。電源投入後に論理物理アドレス変換部が使用可能になる前に、ホスト装置から論理アドレスを指定することでアクセス可能な領域の一部分の領域から、外部からブートコードアドレス情報を指定することでブートコードを読み出す。これにより電源投入後に不揮発性記憶システムの起動を早く行うことができる。論理物理アドレス変換部が使用可能な状態では、ホスト装置から論理アドレスを指定することでデータの読み出し・書き込みを行う。
2009016832.tif 000002
【特許請求の範囲】
【請求項１】
コントローラと不揮発性メモリとを有し、外部ホストからアクセス可能なデータを前記不揮発性メモリに記憶する不揮発性記憶装置であって、
前記アクセス可能なデータは、
複数のパーティションに分割され、
前記複数のパーティションは少なくとも1つのブートパーティションを含み、
前記コントローラは、
電源投入後にブートパーティションにアクセス可能な第１の状態と、
前記複数のパーティションの中の任意のパーティションにアクセス可能な第２の状態と、をとり、
前記第１の状態から前記第２の状態に遷移する際に、前記遷移が完了したか否かを外部ホストに通知する手段を有する不揮発性記憶装置。
【請求項２】
外部ホストからの前記ブートパーティションにアクセスを要求するコマンドの発行を受けて、前記不揮発性記憶装置が前記第１の状態であるか否かを外部ホストに通知する請求項１に記載の不揮発性記憶装置。
【請求項３】
外部ホストからの前記ブートパーティション以外のパーティションにアクセスを要求するコマンドの発行を受けて、前記不揮発性記憶装置が前記第２の状態であるか否かを外部ホストに通知する請求項１に記載の不揮発性記憶装置。
【請求項４】
前記ブートパーティションは予め外部ホストより不揮発性記憶装置に対して発行するコマンドによって決定されている請求項１から３のいずれかに記載の不揮発性記憶装置。
【請求項５】
前記ブートパーティションには、外部ホストのためのブートコードが格納されている請求項４に記載の不揮発性記憶装置。
【請求項６】
前記コントローラはさらに、
外部ホストから指定されるアドレス情報を前記不揮発性メモリのアドレスである物理アドレスに変換するブートコードアドレス変換テーブルを備え、
前記第１の状態において、前記外部ホストから指定されるアドレス情報を、前記ブートアドレス変換テーブルを用いて前記不揮発性メモリの物理アドレスに変換することで、前記ブートパーティションにアクセス可能とする請求項２に記載の不揮発性記憶装置。
【請求項７】
前記コントローラは、さらに
不揮発性記憶装置の外部から指定される論理アドレスを前記不揮発性メモリのアドレスである物理アドレスに変換する論理物理アドレス変換テーブルを備え、
前記第２の状態において、前記外部ホストから指定される論理アドレスを、前記論物変換テーブルを用いて前記不揮発性メモリの物理アドレスに変換することで、前記任意のパーティションにアクセスする請求項３に記載の不揮発性記憶装置。
【請求項８】
前記ブートコードアドレス情報は、パーティションを特定する番号である請求項６に記載の不揮発性記憶装置。
【請求項９】
前記ブートコードアドレス変換部は、前記パーティションを特定する番号を対応する前記パーティションの先頭の論理アドレスのデータが格納されている物理アドレスに変換する請求項８に記載の不揮発性記憶装置。
【請求項１０】
不揮発性記憶装置とホスト装置からなる不揮発性記憶システムであって、
前記不揮発性記憶装置は、
請求項１〜９のいずれかに記載の不揮発性記憶装置である不揮発性記憶システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、フラッシュメモリ等の不揮発性メモリを用いた不揮発性記憶装置、および、不揮発性記憶装置と不揮発性記憶装置に対してデータの書き込み・読み出しを行うホスト装置を有する不揮発性記憶システムに関する。
【背景技術】
【０００２】
近年、書き換え可能な不揮発性メモリであるＮＡＮＤタイプのフラッシュメモリを搭載した不揮発性記憶装置としてのメモリーカードは、デジタルカメラや携帯電話の記憶媒体としてその市場を拡大している。メモリーカード市場の拡大は、メモリーカードを取り扱うホスト装置の市場の拡大を意味している、つまり近年メモリーカードを取り扱うインターフェースを持ったホスト装置が増加していることを意味する。【０００３】
また別の観点で、ホスト装置は開発及び製品化サイクルを短縮するために、ホスト装置に搭載しているマイコンのプログラムコードを、従来使用していた書き換え出来ない不揮発性メモリであるＲＯＭから、書き換え可能な不揮発性メモリに格納するようになってきている。書き換え可能な不揮発性メモリにプログラムコードを格納することで、バージョンアップや不具合発生時の修正に対して早期に対応することが可能になるメリットがあるからである。【０００４】
しかし、書き換え可能な不揮発性メモリの中で現在最もビット単価の安価なＮＡＮＤタイプのフラッシュメモリは、従来使用していたＲＯＭでは必要のなかった誤り訂正の技術やウェアレベリング等の新たな技術が必要になる。ウェアレベリングは、ＮＡＮＤタイプのフラッシュメモリ内部のブロックの書き換え回数を均一化する処理である。【０００５】
そこで、ホスト装置に新たにＮＡＮＤタイプのフラッシュメモリを制御するための技術を搭載するのではなく、既に備えているメモリーカードとのインターフェースを利用する手法も用いられるようになってきている。この場合には、既にホスト装置が備えているメモリーカードとのインターフェースを利用して、メモリーカードをホスト装置に直接実装し、ホスト装置に搭載しているマイコンのプログラムコードを直接実装したメモリーカードに格納する。【０００６】
図１７〜１９を用いて不揮発性記憶システムについて説明する。図１７は従来の不揮発性記憶システムのブロック図である。図１７の不揮発性記憶システムでは、電源投入後にホスト装置１７０２は不揮発性記憶装置１７０１から電源投入後の処理のためのプログラムコード（ブートコード）を読み出すことでシステムを起動する。【０００７】
図１７において不揮発性記憶装置１７０１は、ホスト装置１７０２から論理アドレスで指定されるデータを書き込み・読み出し可能なメモリーカードである。不揮発性記憶装置１７０１はコントローラ１７０３とフラッシュメモリ１７０４からなる。フラッシュメモリ１７０４はホスト装置１７０２からの書き込みデータを不揮発で記憶するためのメモリセルアレイを備えた不揮発性メモリである。コントローラ１７０３は不揮発性記憶装置１７０１内部全体の制御を行うとともに、ホスト装置１７０２とのインターフェースとフラッシュメモリ１７０４とのインターフェースを持つ。【０００８】
コントローラ１７０３は、プロセッサ１７０５とホストＩＦ（インターフェース）１７０６とフラッシュメモリＩＦ（インターフェース）１７０７と論理物理アドレス変換テーブル１７０８とバッファメモリ１７０９を有している。【０００９】
プロセッサ１７０５はコントローラ１７０３内部全体の制御を行う。ホストＩＦ１７０６はホスト装置１７０２から書き込み・読み出しされるデータや、書き込み・読み出しの動作を指示に関わるコマンドのインターフェースを制御する。フラッシュメモリＩＦ１７０７はフラッシュメモリ１７０４へのデータの書き込みやフラッシュメモリ１７０４からのデータの読み出しを制御する。論理物理アドレス変換テーブル１７０８は、不揮発性記憶装置１７０１内部においてウェアレベリングの機能を実現するために、不揮発性記憶装置１７０１とホスト装置１７０２とのインターフェースでデータの書き込み・読み出しにおいて使用されるアドレス（以下、論理アドレスという）と、フラッシュメモリ１７０４のアドレス（以下、物理アドレスという）との対応を示すテーブルである。バッファメモリ１７０９はホスト装置１７０２からの書き込みデータをフラッシュメモリ１７０４に書き込む前に一時的にデータを保持し、またホスト装置１７０２への読み出しデータをフラッシュメモリ１７０４から読み出して一時的に保持する揮発性のメモリである。【００１０】
ホスト装置１７０２には少なくともプロセッサ１７１１とメインメモリ１７１２と不揮発性記憶装置ＩＦ（インターフェース）１７１３を備える。プロセッサ１７１１はホスト装置１７０２内部全体の制御を行う。また、プロセッサ１７１１は不揮発性記憶装置１７０１にデータを書き込み、不揮発性記憶装置１７０１からデータを読み出すための、論理アドレスを決定する機能を持つ。メインメモリ１７１２は不揮発性記憶装置１７０１から読み出したプログラムコードや、その他のデータを格納するための揮発性のメモリである。不揮発性記憶装置ＩＦ１７１３は不揮発性記憶装置１７０１へデータの書き込み・読み出しを行うためのデータや、書き込み・読み出し動作を指示するためのインターフェースを制御する。不揮発性記憶装置ＩＦ１７１３は論理アドレスを指定してデータの書き込み・読み出しを行う。【００１１】
図１８を用いて従来の不揮発性記憶システムにおけるプログラムコードのデータの読み出しについて説明する。図１８はホスト装置１７０２と不揮発性記憶装置１７０１間における電源投入後からブートコード読み出しまでのシーケンス図である。【００１２】
最初にホスト装置１７０２が不揮発性記憶装置１７０１に電圧を印加すると、コントローラ１７０３の初期化、及びその後の不揮発性記憶装置の初期化を行う。まずプロセッサ１７０５はコントローラ１７０３の初期化（コントローラ初期化）を行う。このコントローラ初期化とは、コントローラ各部の図示しないレジスタをリセットし、フラッシュメモリ１７０４の種別や個数の認識をして、不揮発性記憶装置１７０１としての容量や特性に関する情報をフラッシュメモリ１７０４の特定領域のデータを読み出すことで認識する処理である。コントローラ初期化に要する時間は数ｍｓ以内の短い時間である。コントローラが初期化を終えることで、不揮発性記憶装置１７０１はホスト装置１７０２と相互に通信を行うことが可能になる。【００１３】
ステップ１８０１でホスト装置１７０２は不揮発性記憶装置ＩＦ１７１３を介して不揮発性記憶装置１７０１に初期化コマンドを発行する。ホスト装置１７０２から送られる初期化コマンドは不揮発性記憶装置１７０１を初期化するためのコマンドである。不揮発性記憶装置１７０１の初期化とは、コントローラ内部のプロセッサ１７０５がフラッシュメモリＩＦ１７０７を介してフラッシュメモリ１７０４から管理情報を読み出して、その読み出した管理情報を基に、論理物理アドレス変換テーブル１７０８を完成させることである。不揮発性記憶装置１７０１の初期化を完了するために要する時間は、実時間で数１００ｍｓ程度を要する。不揮発性記憶装置１７０１の初期化が完了することで、ホスト装置１７０２は不揮発性記憶装置１７０１に対して論理アドレスを指定してデータの書き込み・読み出しを行うことが可能になる。【００１４】
ステップ１８０１でホスト装置１７０２より発行される初期化コマンドを受けて不揮発性記憶装置１７０１では、コントローラ初期化が完了していればホスト装置１７０２に対してレスポンスを返し、まだコントローラ初期化が完了していなければレスポンスを返さない。ステップ１８０１の初期化コマンドに対して不揮発性記憶装置１７０１からレスポンスが返らないことで、ホスト装置１７０２は不揮発性記憶装置１７０１がまだコントローラ初期化を終えていないことを認識することが出来る。【００１５】
ホスト装置１７０２は不揮発性記憶装置１７０１を初期化するために、不揮発性記憶装置１７０１からレスポンスが返ってくるまで不揮発性記憶装置１７０１に対して初期化コマンドを発行する必要がある。ここではステップ１８０２で再度初期化コマンドを発行する。ステップ１８０２の初期化コマンドを受けたときに不揮発性記憶装置１７０１内部のコントローラ１７０３の初期化が終了していれば、プロセッサ１７０５はホストＩＦ１７０６を介して初期化コマンドに対してステップ１８０３でレスポンスを返す。【００１６】
ホスト装置１７０２はステップ１８０３で不揮発性記憶装置１７０１からレスポンスが帰ってくることで、不揮発性記憶装置１７０１内部のコントローラ１７０３の初期化が完了し、不揮発性記憶装置１７０１の初期化が開始されていることを認識することが出来る。【００１７】
コントローラ初期化の完了を認識したホスト装置１７０２は、ステップ１８０４で初期化完了確認のコマンドを発行し、不揮発性記憶装置ＩＦ１７１３から不揮発性記憶装置１７０１に伝送する。これに対して不揮発性記憶装置１７０１の初期化処理が完了していなければ、プロセッサ１７０５はホスト装置１７０２に対してステップ１８０５で初期化未完のレスポンスを返す。不揮発性記憶装置１７０１の初期化処理が完了するまでの期間はステップ１８０４とステップ１８０５のコマンドとレスポンスを複数回繰り返す。【００１８】
不揮発性記憶装置１７０１は数百ｍｓの時間（Ｔ１）を費やして論理物理アドレス変換テーブル１７０８の作成し、初期化処理が完了していれば、ホスト装置１７０２からのステップ１８０６の初期化完了確認コマンドに対してステップ１８０７で初期化完了のレスポンスを返す。【００１９】
ホスト装置１７０２は不揮発性記憶装置１７０１からステップ１８０７で初期化完了のレスポンスを受けることで、不揮発性記憶装置１７０１に論理アドレスを指定したデータの読み出し・書き込みが可能なことを認識する。次にホスト装置１７０２はステップ１８０８で論理アドレスを指定してブートコードの読み出しを行う。不揮発性記憶装置１７０１はステップ１８０９でブートコードをホスト装置１７０２に出力する。【００２０】
ホスト装置１７０２はステップ１８０９で読み出されたブートコードをメインメモリ１７１２にロードすることで不揮発性記憶システムを起動することが出来る。【００２１】
図１９に、図１８のシーケンス図に対応する不揮発性記憶装置１７０１内のホスト装置１７０２に対する処理のフローチャートを示す。電源投入後からコントローラ初期化が完了するまでの状態は、不揮発性記憶装置１７０１内部の処理のみであるので図示していない。ステップ１８０１の初期化コマンドは、このコントローラの初期化前にホスト装置１７０２より不揮発性記憶装置１７０１に発行される。電源投入後に不揮発性記憶装置１７０１内部でコントローラ初期化が完了すると、判定１９０１でのホスト装置１７０２からのコマンド入力待ちの状態になる。不揮発性記憶装置１７０１はホスト装置１７０２から初期化コマンドが入力されるまで判定１９０１で待ち続ける。ステップ１８０２で初期化コマンドが不揮発性記憶装置１７０１に発行されると、判定１９０１で初期化コマンドと判定し状態１９０２へと遷移し、状態１９０２でステップ１８０２の初期化コマンドに対するステップ１８０３のレスポンスを返す。また不揮発性記憶装置１７０１ではホスト装置１７０２の初期化コマンドを受けて不揮発性記憶装置１７０１内部の初期化処理を開始する。不揮発性記憶装置１７０１内部における初期化処理の開始および初期化処理についてはフローチャートに図示していない。【００２２】
次に判定１９０３へと遷移して、初期化完了確認コマンドがあるか、それ以外のコマンドがあるかを判定する。初期化完了確認コマンド以外のコマンドがあれば判定１９０３で、ホスト装置１７０２から初期化完了確認コマンドが発行されるのを待ち続ける。【００２３】
ホスト装置１７０２はステップ１８０４で初期化完了確認コマンドを不揮発性記憶装置１７０１に発行する。それを受けて不揮発性記憶装置１７０１は判定１９０４へと遷移する。【００２４】
判定１９０４で不揮発性記憶装置１７０１の初期化が完了していないときには状態１９０５に遷移する。ステップ１９０５に対応するステップ１８０５で初期化未完を表すレスポンスを返して、判定１９０３へと戻る。ホスト装置１７０２は不揮発性記憶装置１７０１から初期化未完のレスポンスを受けることで不揮発性記憶装置１７０１がまだ論理アドレスを指定した読み出し・書き込みが出来ないことを認識する。【００２５】
不揮発性記憶装置１７０１の初期化を終えているときには、判定１９０４から状態１９０６に遷移する。ステップ１８０６の初期化完了コマンドを受けて、状態１９０６に対応するステップ１８０７で初期化完了のレスポンスを返す。ホスト装置１７０２は不揮発性記憶装置１７０１から初期化完了のレスポンスを受けることで不揮発性記憶装置１０１Ａに論理アドレスを指定したデータの読み出し・書き込みが可能であることを認識する。図１９に示したフローチャートではこれで初期化を完了するが。初期化を完了した後で、ステップ１８０８でホスト装置１７０２はブートコード読み出しコマンドを発行し、ステップ１８０９でブートコードを読み出してシステムを起動する。
【特許文献１】特開昭６２−２２１０３４
【発明の開示】
【発明が解決しようとする課題】
【００２６】
しかし、メモリーカードの不揮発性記憶装置にブートプログラムを格納した従来の不揮発性記憶システムでは、ＲＯＭと比較して、電源投入後にデータ読み出しが可能となるまでの時間、即ち初期化時間が長いという課題がある。初期化時間は主に論理物理アドレス変換テーブルを作成するために必要な時間である。初期化時間が長いとホスト装置の電源投入後からブートコードを読み始めるまでの時間がかかり、起動するまでの時間が長くなるという課題がある。
【課題を解決するための手段】
【００２７】
この課題を解決するために、本発明の不揮発性記憶装置は、コントローラと不揮発性メモリとを有し、外部ホストからアクセス可能なデータを前記不揮発性メモリに記憶する不揮発性記憶装置であって、前記アクセス可能なデータは、複数のパーティションに分割され、前記複数のパーティションは少なくとも1つのブートパーティションを含み、前記コントローラは、電源投入後にブートパーティションにアクセス可能な第１の状態と、前記複数のパーティションの中の任意のパーティションにアクセス可能な第２の状態と、をとり、前記第１の状態から前記第２の状態に遷移する際に、前記遷移が完了したか否かを外部ホストに通知する手段を有するものである。【００２８】
ここで外部ホストからの前記ブートパーティションにアクセスを要求するコマンドの発行を受けて、前記不揮発性記憶装置が前記第１の状態であるか否かを外部ホストに通知するようにしてもよい。【００２９】
ここで外部ホストからの前記ブートパーティション以外のパーティションにアクセスを要求するコマンドの発行を受けて、前記不揮発性記憶装置が前記第２の状態であるか否かを外部ホストに通知するようにしてもよい。【００３０】
ここで前記ブートパーティションは予め外部ホストより不揮発性記憶装置に対して発行するコマンドによって決定されているようにしてもよい。【００３１】
ここで前記ブートパーティションには、外部ホストのためのブートコードが格納されているようにしてもよい。【００３２】
ここで前記コントローラはさらに、外部ホストから指定されるアドレス情報を前記不揮発性メモリのアドレスである物理アドレスに変換するブートコードアドレス変換テーブルを備え、前記第１の状態において、前記外部ホストから指定されるアドレス情報を、前記ブートアドレス変換テーブルを用いて前記不揮発性メモリの物理アドレスに変換することで、前記ブートパーティションにアクセス可能とするようにしてもよい。【００３３】
ここで前記コントローラは、さらに不揮発性記憶装置の外部から指定される論理アドレスを前記不揮発性メモリのアドレスである物理アドレスに変換する論理物理アドレス変換テーブルを備え、前記第２の状態において、前記外部ホストから指定される論理アドレスを、前記論物変換テーブルを用いて前記不揮発性メモリの物理アドレスに変換することで、前記任意のパーティションにアクセスするようにしてもよい。【００３４】
ここで前記ブートコードアドレス情報は、パーティションを特定する番号としてもよい。【００３５】
ここで前記ブートコードアドレス変換部は、前記パーティションを特定する番号を対応する前記パーティションの先頭の論理アドレスのデータが格納されている物理アドレスに変換するようにしてもよい。【００３６】
この課題を解決するために、本発明の不揮発性記憶システムは、不揮発性記憶装置とホスト装置からなる不揮発性記憶システムであって、前記不揮発性記憶装置は、前述に記載の不揮発性記憶装置である。【００３７】
この課題を解決するために、本発明の不揮発性記憶装置は、コントローラと不揮発性メモリからなる不揮発性記憶装置であって、前記不揮発性メモリは、メモリセルアレイを備え、不揮発性記憶装置の外部から読み出し・書き込みを行うデータを前記メモリセルアレイで記憶し、前記コントローラは、不揮発性記憶装置の外部から指定される論理アドレスを前記不揮発性メモリのアドレスである物理アドレスに変換する論理物理アドレス変換部と、外部から指定されるブートコードアドレス情報を前記不揮発性メモリのアドレスである物理アドレスに変換するブートコードアドレス変換部を備え、前記論理物理アドレス変換部が使用可能な状態では、外部から論理アドレスを指定することでデータの読み出し・書き込みが可能であり、外部から論理アドレスを指定することでアクセス可能な領域を第１の領域として、電源投入後に前記論理物理アドレス変換部が使用可能になる前に、前記第１の領域の所定の一部分の領域に対して、外部からブートコードアドレス情報を指定することでデータの読み出しが可能であるものでもよい。【００３８】
ここで、外部から指定される論理アドレスが複数のパーティションに分割されていてもよい。【００３９】
ここで、前記ブートコードアドレス情報が、前記パーティションを特定する番号であってもよい。【００４０】
ここで、前記ブートコードアドレス変換部が前記パーティションを特定する番号を、対応する前記パーティションの先頭の論理アドレスのデータが格納されている物理アドレスに変換してもよい。【００４１】
ここで、前記ブートコードアドレス変換部が、前記ブートコードアドレス情報と前記物理アドレスとを１対１関数で変換してもよい。【００４２】
ここで、前記ブートコードアドレス変換部が、前記物理アドレスを前記ブートコードアドレス情報に変換する逆変換機能を備え、前記逆変換機能で得られる前記ブートコードアドレス情報を外部に通知してもよい。【００４３】
ここで、前記ブートコードアドレス変換部は、前記論理アドレスの０を前記論理物理アドレス変換部で変換して得られる物理アドレスをブートコードアドレス情報に変換してもよい。【００４４】
また、この課題を解決するために、不揮発性記憶装置とホスト装置からなる不揮発性記憶システムであって、前記不揮発性記憶装置は、コントローラと不揮発性メモリからなる不揮発性記憶装置であって、前記不揮発性メモリは、メモリセルアレイを備え、不揮発性記憶装置の外部から読み出し・書き込みを行うデータを前記メモリセルアレイで記憶し、前記コントローラは、不揮発性記憶装置の外部から指定される論理アドレスを前記不揮発性メモリのアドレスである物理アドレスに変換する論理物理アドレス変換部と、外部から指定されるブートコードアドレス情報を前記不揮発性メモリのアドレスである物理アドレスに変換するブートコードアドレス変換部を備え、前記論理物理アドレス変換部が使用可能な状態では、外部から論理アドレスを指定することでデータの読み出し・書き込みが可能であり、外部から論理アドレスを指定することでアクセス可能な領域を第１の領域として、電源投入後に前記論理物理アドレス変換部が使用可能になる前に、前記第１の領域の所定の一部分の領域に対して、外部からブートコードアドレス情報を指定することでデータの読み出しが可能であるものであってもよい。【００４５】
ここで、外部から指定される論理アドレスが複数のパーティションに分割されていてもよい。【００４６】
ここで、前記ブートコードアドレス情報が、前記パーティションを特定する番号であってもよい。【００４７】
ここで、前記ブートコードアドレス変換部が前記パーティションを特定する番号を、対応する前記パーティションの先頭の論理アドレスのデータが格納されている物理アドレスに変換してもよい。【００４８】
ここで、前記ブートコードアドレス変換部が、前記ブートコードアドレス情報と前記物理アドレスとを１対１関数で変換してもよい。【００４９】
ここで、前記ブートコードアドレス変換部が、前記物理アドレスを前記ブートコードアドレス情報に変換する逆変換機能を備え、前記逆変換機能で得られる前記ブートコードアドレス情報を外部に通知してもよい。【００５０】
ここで、前記ブートコードアドレス変換部は、前記論理アドレスの０を前記論理物理アドレス変換部で変換して得られる物理アドレスをブートコードアドレス情報に変換してもよい。
【発明の効果】
【００５１】
本発明によれば、不揮発性記憶装置にデータを読み出し・書き込みが行える第２の状態になる前に、第２の状態で読み出し・書き込みが行える領域の所定の一部分の領域ではあるが、読み出しが可能な状態である第１の状態を取ることによって、ホスト装置が不揮発性記憶装置に対して電源投入後により早くブートコードであるプログラムコードのデータの読み出すことが可能となる。これによって、不揮発性記憶システムの起動を早く行うことが出来る。
【図面の簡単な説明】
【００５２】
【図１】図１は発明の第１の実施の形態である不揮発性記憶システムの構成を示す図である。
【図２】図２は本発明の第１の実施の形態である不揮発性記憶システムのブートコード読み出しシーケンス図である。
【図３】図３は本発明の第１の実施の形態である不揮発性記憶システムの不揮発性記憶装置内のフローチャート図である。
【図４】図４は本発明の第１の実施の形態である不揮発性記憶システムのブートコードアドレス通知のシーケンス図である。
【図５】図５は本発明の第１の実施の形態である不揮発性記憶システムのアドレス変換の概要図である。
【図６】図６は本発明の第２の実施の形態である不揮発性記憶システムのブートコードアドレス通知のシーケンス図である。
【図７】図７は本発明の第３の実施の形態である不揮発性記憶システムの構成を示す図である。
【図８】図８は本発明の第３の実施の形態である不揮発性記憶システムのパーティション管理テーブルの構成を示す図である。
【図９】図９は本発明の第３の実施の形態である不揮発性記憶システムのブートコード読み出しシーケンス図である。
【図１０】図１０は本発明の第３の実施の形態である不揮発性記憶システムのホスト装置内のフローチャート図である。
【図１１】図１１は本発明の第４の実施の形態である不揮発性記憶システムの構成を示す図である。
【図１２】図１２は本発明の第４の実施の形態である不揮発性記憶システムのパーティション領域テーブルの構成を示す図である。
【図１３】図１３は本発明の第４の実施の形態である不揮発性記憶システムのアドレス変換の概要図である。
【図１４】図１４は本発明の第４の実施の形態である不揮発性記憶システムのアドレス変換の概要図である。
【図１５】図１５は本発明の第４の実施の形態である不揮発性記憶システムのブートコード読み出しシーケンス図である。
【図１６】図１６は本発明の第４の実施の形態である不揮発性記憶システムの不揮発性記憶装置内のフローチャート図である。
【図１７】図１７は従来の不揮発性記憶システムの不揮発性記憶装置内の構成を示す図である。
【図１８】図１８は従来の実施の形態である不揮発性記憶システムのブートコード読み出しシーケンス図である。
【図１９】図１９は従来の実施の形態である不揮発性記憶システムの不揮発性記憶装置内のフローチャート図である。
【符号の説明】
【００５３】
１０１Ａ，１０１Ｂ，１０１Ｃ  不揮発性記憶装置
１０２Ａ，１０２Ｂ，１０２Ｃ  ホスト装置
１０３Ａ，１０３Ｂ，１０３Ｃ  コントローラ
１０４  フラッシュメモリ
１０５  プロセッサ
１０６  ホストＩＦ
１０７  フラッシュメモリＩＦ
１０８  論理物理アドレス変換テーブル
１０９  バッファメモリ
１１０  アドレススクランブル部
１１１  プロセッサ
１１２  メインメモリ
１１３  不揮発性記憶装置ＩＦ
１１４  ＬＢＡ指定アクセス部
１１５  ＢＢＡ指定アクセス部
１１６  ブート部アドレス決定部
１１７  ＬＢＡ−ブート部変換テーブル
１２１  パーティション管理テーブル
１２２  モード決定部
１２３  パーティション領域テーブル
１２４  ＰＮ指定アクセス部
１７０１  不揮発性記憶装置
１７０２  ホスト装置
１７０３  コントローラ
１７０４  フラッシュメモリ
１７０５  プロセッサ
１７０６  ホストＩＦ
１７０７  フラッシュメモリＩＦ
１７０８  論理物理アドレス変換テーブル
１７０９  バッファメモリ
１７１１  プロセッサ
１７１２  メインメモリ
１７１３  不揮発性記憶装置ＩＦ
【発明を実施するための最良の形態】
【００５４】
（第１の実施の形態）
以下、添付の図面を参照し、本発明の第１の実施の形態による不揮発性記憶装置システムについて説明する。【００５５】
図１に本実施の形態の不揮発性記憶システムの構成を示す。不揮発性記憶システムは、電源投入後にホスト装置１０２Ａが不揮発性記憶装置１０１Ａから電源投入後の処理のためのプログラムコード（ブートコード）を読み出すことで起動する。【００５６】
１．不揮発性記憶装置の構成
図１において不揮発性記憶装置１０１Ａはホスト装置１０２Ａから論理アドレスで指定されるデータを書き込み・読み出し可能なメモリーカードである。また、不揮発性記憶装置１０１Ａはホスト装置１０２Ａから論理アドレスで指定可能なアドレス領域の、全てでなく一部の領域に対してブートブロックアドレスを指定してのデータの読み出しも可能である。ブートブロックアドレスについては後で詳述する。不揮発性記憶装置１０１Ａはコントローラ１０３Ａとフラッシュメモリ１０４を有している。フラッシュメモリ１０４はホスト装置１０２Ａからの書き込みデータを不揮発で記憶するためのメモリセルアレイを備えた不揮発性メモリである。コントローラ１０３Ａは不揮発性記憶装置１０１Ａ内部全体の制御を行うとともに、ホスト装置１０２Ａとのインターフェースとフラッシュメモリ１０４とのインターフェースを持つ。【００５７】
コントローラ１０３Ａは、プロセッサ１０５とホストＩＦ（インターフェース）１０６とフラッシュメモリＩＦ（インターフェース）１０７と論理物理アドレス変換テーブル１０８とバッファメモリ１０９とアドレススクランブル部１１０を有している。【００５８】
プロセッサ１０５はコントローラ１０３Ａ内部全体の制御を行う。ホストＩＦ１０６はホスト装置１０２Ａに書き込まれ、ホスト装置１０２Ａから読み出されるデータや、書き込み・読み出しの動作指示に関わるコマンドのインターフェースを制御する。フラッシュメモリＩＦ１０７はフラッシュメモリ１０４へのデータの書き込みやフラッシュメモリ１０４からのデータの読み出しを制御する。論理物理アドレス変換テーブル１０８は、ホスト装置１０２Ａが指定する論理アドレスをフラッシュメモリ１０４のアドレスである物理アドレスに変換するテーブルである。バッファメモリ１０９はホスト装置１０２Ａからの書き込みデータをフラッシュメモリ１０４に書き込む前に一時的にデータを保持するため、またホスト装置１０２Ａへの読み出しデータをフラッシュメモリ１０４から読み出して一時的に保持するための揮発性のメモリである。アドレススクランブル部１１０は、所定の１対１関数（逆関数の存在する関数）で物理アドレスをブートブロックアドレスに変換する機能を有するとともに、所定の１対１関数の逆関数でブートブロックアドレスを物理アドレスに変換する機能も有するブートブロックアドレス変換テーブルである。ブートブロックアドレスとはブートコードが格納されたアドレス情報である。アドレススクランブル部１１０はホスト装置１０２Ａがブートブロックアドレスを指定してデータの読み出しを行うときに、ブートブロックアドレスをフラッシュメモリ１０４の物理アドレスに変換する、もしくはホスト装置１０２Ａに通知するためにフラッシュメモリ１０４の物理アドレスをブートブロックアドレスに変換する。【００５９】
なお、ここでは不揮発性記憶装置１０１Ａ外部から指定する論理アドレスとフラッシュメモリ１０４の物理アドレスとの対応を論理物理アドレス変換テーブル１０８で行うが、論理アドレスと物理アドレスの変換の例としてはＷＯ２００５／０２２３９３やＷＯ２００５／１０６６７３で開示されている仕組みを用いても構わない。【００６０】
２．ホスト装置の構成
ホスト装置１０２Ａは少なくともプロセッサ１１１とメインメモリ１１２と不揮発性記憶装置ＩＦ（インターフェース）１１３とブート部アドレス決定部１１６とＬＢＡ−ブート部変換テーブル１１７を有する。上記以外にもユーザが入力を行うためにキーボードやポインティングデバイス、ユーザに対する出力である液晶ディスプレイやスピーカー、（全て図示せず）等の種々のユーザインターフェース部がある。プロセッサ１１１はホスト装置１０２Ａ内部全体の制御を行う。また、制御を行ううえで必要なデータを不揮発性記憶装置１０１Ａに書き込み、読み出しを行うための論理アドレスを決定する機能を持つ。メインメモリ１１２は不揮発性記憶装置１０１Ａから読み出したプログラムコード等を格納するための揮発性のメモリである。不揮発性記憶装置ＩＦ１１３は、ＬＢＡ指定アクセス部１１４とＢＢＡ指定アクセス部１１５を有し、不揮発性記憶装置１０１Ａへ読み出し・書き込みを行うためのデータや、読み出し・書き込み動作を指示するためのインターフェースを制御するものである。また、不揮発性記憶装置ＩＦ１１３のＬＢＡ指定アクセス部１１４は、論理ブロックアドレス（ＬＢＡ）を指定したデータの書き込み・読み出しをするときに使用され、ＢＢＡ指定アクセス部１１５はブートブロックアドレス（ＢＢＡ）を指定したデータの読み出しにおいて使用される。ブート部アドレス決定部１１６はプロセッサ１１１が決定した論理アドレスをブートブロックアドレスに変換する機能を有する、その際にはＬＢＡ−ブート部変換テーブル１１７を使用する。ＬＢＡ−ブート部変換テーブル１１７は不揮発性記憶装置１０１Ａに書き込まれているホスト装置１０２Ａのブートコードの論理アドレスに対応するブートブロックアドレスの対応を示すテーブルであり、不揮発性の記憶素子によって構成される。【００６１】
図２を用いて本実施の形態の不揮発性記憶システムにおけるプログラムコードのデータの読み出しについて説明する。図２はホスト装置１０２Ａと不揮発性記憶装置１０１Ａ間における電源投入後の初期化におけるシーケンス図である。【００６２】
最初にホスト装置１０２Ａが不揮発性記憶装置１０１Ａに電圧を印加すると、プロセッサ１０５はコントローラ１０３Ａの初期化（コントローラ初期化）を行う。このコントローラ初期化とは、コントローラ各部の図示しないレジスタをリセットし、コントローラ１０３Ａに接続されているフラッシュメモリ１０４の種別や個数の認識をして、不揮発性記憶装置１０１Ａとしての容量や特性に関する情報をフラッシュメモリ１０４の特定領域のデータを読み出すことで認識する処理である。コントローラ初期化に要する時間は数ｍｓ以内の短い時間である。コントローラ初期化を終えることで、不揮発性記憶装置１０１Ａはホスト装置１０２Ａと相互に通信を行うことが可能になる。コントローラ１０３Ａの初期化を終えた状態を、不揮発性記憶装置１０１Ａの第１の状態とする。第１の状態ではフラッシュメモリ１０４の特定の領域からデータの読み出しを行うことが可能である。【００６３】
さて、ステップ２０１でホスト装置１０２Ａは不揮発性記憶装置ＩＦ１１３を介して不揮発性記憶装置１０１Ａに初期化コマンドを発行する。ホスト装置１０２Ａから送られる初期化コマンドは不揮発性記憶装置１０１Ａを初期化するためのコマンドである。不揮発性記憶装置１０１Ａの初期化とは、コントローラ内部のプロセッサ１０５がフラッシュメモリＩＦ１０７を介してフラッシュメモリ１０４から管理情報を読み出して、その管理情報を基に、論理物理アドレス変換テーブル１０８を完成させることである。不揮発性記憶装置１０１Ａの初期化を完了するために要する時間は、実時間で数１００ｍｓ程度を要する。不揮発性記憶装置１０１Ａの初期化が完了することで、ホスト装置１０２Ａは不揮発性記憶装置１０１Ａに対して論理アドレスを指定してデータの書き込み・読み出しを行うことが可能になる。不揮発性記憶装置１０１Ａの初期化を終えた状態を、不揮発性記憶装置１０１Ａの第２の状態とする。【００６４】
不揮発性記憶装置１０１Ａは、ステップ２０１でホスト装置１０２Ａより発行される初期化コマンドを受けると、不揮発性記憶装置１０１Ａが第１の状態にあればホスト装置１０２Ａに対してレスポンスを返し、まだ第１の状態になっていなければレスポンスを返さない。初期化コマンドに対して不揮発性記憶装置１０１Ａからレスポンスが返らなければ、ホスト装置１０２Ａは不揮発性記憶装置１０１Ａがまだ第１の状態になっていない、即ちコントローラ１０３Ａの初期化が終わっていないことを認識することが出来る。【００６５】
ホスト装置１０２Ａは不揮発性記憶装置１０１Ａを初期化するために、不揮発性記憶装置１０１Ａからレスポンスが返ってくるまで不揮発性記憶装置１０１Ａに対して初期化コマンドを発行する必要がある。ホスト装置１０２Ａはステップ２０２で再度初期化コマンドを発行する。ステップ２０２の初期化コマンドを受けたときにコントローラ１０３Ａの初期化が終了して第１の状態であれば、プロセッサ１０５は初期化コマンドに対してステップ２０３でホストＩＦ１０６を介してレスポンスを返す。不揮発性記憶装置１０１Ａではホスト装置１７０２の初期化コマンドを受けて不揮発性記憶装置１０１Ａ内部の初期化処理を開始する。【００６６】
ホスト装置１０２Ａはステップ２０３で不揮発性記憶装置１０１Ａからレスポンスが返ってくることで、不揮発性記憶装置１０１Ａ内部のコントローラ１０３Ａの初期化が完了して第１の状態になっていることを認識することが出来る。【００６７】
この第１の状態ではプロセッサ１０５は接続されているフラッシュメモリ１０４の種別や個数を認識できているので、読み出しを行うフラッシュメモリ１０４の物理アドレスが決定できればフラッシュメモリＩＦを介してフラッシュメモリ１０４からデータを読み出すことは可能である。【００６８】
不揮発性記憶装置１０１Ａが第１の状態にあることを認識したホスト装置１０２Ａは、ステップ２０４でブートコード読み出しのためにブートブロックアドレスを指定してデータの読み出しコマンドを発行する。そのために、ホスト装置１０２Ａのプロセッサ１１１は不揮発性記憶装置１０１Ａに書き込んだブートコードのデータに対応する論理アドレス（以下、ブート部論理アドレスという）を決定する。プロセッサ１１１はブート部アドレス決定部１１６にブート部論理アドレスを送る。ブート部アドレス決定部１１６はプロセッサ１１１から送られた論理アドレスであるブート部論理アドレスを、ＬＢＡ−ブート部変換テーブル１１７を用いてブートブロックアドレスに変換する。以降、ブート部論理アドレスに対応するブートブロックアドレスをブート部ブートブロックアドレスという。プロセッサ１１１はブート部アドレス決定部１１６から得られるブート部ブートブロックアドレスを不揮発性記憶装置ＩＦ１１３へと送る。プロセッサ１１１から与えられるブート部ブートブロックアドレスを用いてＢＢＡ指定アクセス部１１５は不揮発性記憶装置１０１Ａに対してブートブロックアドレスを指定して読み出しコマンドを発行する。このブートブロックアドレスはコントローラ１０３Ａの内部でフラッシュメモリ１０４の物理アドレスに変換することができる。このステップ２０４のタイミングでは不揮発性記憶装置１０１Ａ内部において初期化処理が終了している必要はない。【００６９】
ステップ２０４のブートコードの読み出しコマンドを受けて、不揮発性記憶装置１０１Ａのプロセッサ１０５では、まずステップ２０５でレスポンスをホスト装置１０２Ａに返す。そして一旦不揮発性記憶装置１０１Ａの初期化処理である論理物理アドレス変換テーブル１０８の作成を中断して、ステップ２０４の読み出しコマンドで指示されるブート部ブートブロックアドレスをアドレススクランブル部１１０に送る。アドレススクランブル部１１０ではブート部ブートブロックアドレスをフラッシュメモリ１０４の対応する物理アドレス（以下、ブート部物理アドレス）に変換する。プロセッサ１０５はブート部物理アドレスを指定してフラッシュメモリＩＦ１０７を介してフラッシュメモリ１０４からブートコードを読み出してバッファメモリ１０９に一時保持し、その後ステップ２０６でホスト装置１０２Ａに対してブートコードを出力する。【００７０】
ホスト装置１０２Ａのプロセッサ１１１はステップ２０６で読み出されるブートコードを不揮発性記憶装置ＩＦ１１３を介してメインメモリ１１２に転送する。プロセッサ１１１はメインメモリ１１２に転送されたブートコードを使用することでホスト装置１０２Ａを起動する。【００７１】
以上のブートコード読み出しシーケンスによると、電源投入後にコントローラ１０３Ａの初期化が完了した第１の状態であれば、第２の状態になっていなくても、ホスト装置１０２Ａは不揮発性記憶装置１０１Ａからのブートコードを読み出すことが可能となる。これは、ホスト装置１０２Ａはブートコードが書き込まれた論理アドレスに対応する物理アドレスに直接対応付けが可能な情報であるブートブロックアドレスを指定して不揮発性記憶装置１０１Ａに読み出しコマンドを発行することで、不揮発性記憶装置１０１Ａ内部において論理物理アドレス変換テーブル１０８の作成完了を待つことなく、フラッシュメモリ１０４からデータを読み出すことが可能となるからである。アドレススクランブル部１１０でのブートブロックアドレスと物理アドレスとの直接対応付けについては後述する。【００７２】
なお、不揮発性記憶装置１０１Ａのプロセッサ１０５はステップ２０６でホスト装置１０２Ａにブートコードを出力した後は、中断した初期化を再開する。【００７３】
以降、ステップ２０７でホスト装置１０２Ａは不揮発性記憶装置ＩＦ１１３から初期化完了確認のコマンドの発行を行う。不揮発性記憶装置１０１Ａ側の初期化処理が完了しておらず第１の状態であれば、ホスト装置１０２Ａに対してステップ２０８で初期化未完のレスポンスを返す。【００７４】
ホスト装置１０２Ａはステップ２０８で返されるレスポンスが初期化未完の通知であれば、ステップ２０９で再度初期化完了確認のコマンドの発行を行う。不揮発性記憶装置１０１Ａは、初期化処理が完了し、第２の状態にあれば、不揮発性記憶装置１０１Ａはホスト装置１０２Ａからの初期化完了確認のコマンドに対して、ステップ２１０で初期化完了のレスポンスを返す。ホスト装置１０２Ａは初期化完了のレスポンスにより論理アドレスを指定したデータの書き込み・読み出しが可能になったことを認識する。【００７５】
図３に、図２のシーケンス図に対応する不揮発性記憶装置１０１Ａ内のホスト装置１０２Ａに対する処理のフローチャートを示す。ステップ２０１の初期化コマンドは、コントローラ１０３Ａの初期化前にホスト装置１０２Ａより不揮発性記憶装置１０１Ａに発行される。電源投入後からコントローラ１０３Ａの初期化が完了するまでの状態は、不揮発性記憶措置１０１内部の処理のみであるので図示していない。電源投入後に不揮発性記憶装置１０１Ａ内部でコントローラ１０３Ａの初期化が完了すると、第１の状態となり、判定３０１でのホスト装置１０２Ａからのコマンド入力待ちの状態になる。不揮発性記憶装置１０１Ａはホスト装置１０２Ａから初期化コマンドが入力されるまで判定３０１で待ち続ける。ステップ２０２で初期化コマンドが不揮発性記憶装置１０１Ａに発行されると、判定３０１で初期化コマンドと判定し状態３０２へと遷移し、状態３０２で初期化コマンドに対するレスポンス（ステップ２０３）を返す。また不揮発性記憶装置１０１Ａではホスト装置１０２Ａの初期化コマンドを受けて不揮発性記憶装置１０１Ａ内部の初期化処理を開始する。不揮発性記憶装置１０１Ａ内部における初期化処理の開始および初期化処理についてはフローチャートに図示していない。【００７６】
次に判定３０３，３０４へと遷移して、ブートブロックアドレス指定の読み出しコマンドか、初期化完了確認コマンドか、それともそれら以外のコマンドかを判定する。判定３０３でブートブロックアドレス指定の読み出しコマンドであると判定したら状態３０５へと遷移する。判定３０４で初期化完了確認コマンドであると判定したら判定３０７へと遷移する。それら以外のコマンドであればブートブロックアドレス（ＢＢＡ）指定の読み出しコマンドか、初期化完了確認コマンドが発行されるのを待ち続ける。【００７７】
ここでは、まずブートコードを早期に読み出すために、ホスト装置１０２Ａがステップ２０４でブートブロックアドレス指定の読み出しコマンドを発行する場合、即ち判定３０３から状態３０５に遷移した場合について説明する。プロセッサ１０５はホストＩＦ１０６を介して入力されたコマンドがブートブロックアドレス指定の読み出しコマンドであることを認識して、レスポンス（ステップ２０５）を返すとともに、状態３０２以後から開始していた不揮発性記憶装置１０１Ａ内部の初期化処理を一時中断する。そして、指定されたブートブロックアドレスをアドレススクランブル部１１０でフラッシュメモリ１０４の物理アドレスに変換する。プロセッサ１０５は物理アドレスをフラッシュメモリＩＦ１０７に指定することでフラッシュメモリ１０４からブートコードを読み出してバッファメモリ１０９へと転送する。そして中断していた不揮発性記憶装置１０１Ａ内部の初期化処理を再開して状態３０６へと遷移する。【００７８】
状態３０６はステップ２０６に対応し、不揮発性記憶装置１０１Ａは、ホストＩＦ１０６を介してバッファメモリ１０９にあるブートコードをホスト装置１０２Ａへと転送する。このようにホスト装置１０２Ａはブートブロックアドレス指定の読み出しコマンドを実行することで、不揮発性記憶装置１０１Ａ内部の初期化処理が終了していなくても、ブートコードを読み出すことができる。ホスト装置１０２Ａのプロセッサ１１１は読み出したブートコードをメインメモリ１１２へとロードしてホスト装置１０２Ａの起動を行う。不揮発性記憶装置１０１Ａは状態３０６が終了すると判定３０３，３０４へと戻る。【００７９】
ブートコードを読み出した後は、ホスト装置１０２Ａはステップ２０７で初期化完了確認コマンドを不揮発性記憶装置１０１Ａに発行する。それを受けて不揮発性記憶装置１０１Ａは判定３０７へと遷移する。【００８０】
不揮発性記憶装置１０１Ａが第１の状態にあるときには、判定３０７で初期化が完了していないと判断して、状態３０８に遷移する。状態３０８に対応するステップ２０８で初期化未完を表すレスポンスを返して判定３０３へ戻る。ホスト装置１０２Ａは不揮発性記憶装置１０１Ａから初期化未完のレスポンスを受けることで不揮発性記憶装置１０１Ａがまだ第２の状態になっておらず、即ち論理アドレスを指定した読み出し・書き込みが出来ないことを認識する。【００８１】
不揮発性記憶装置１０１Ａの初期化を終えて第２の状態になっているときには、ステップ２０９の初期化完了コマンドを受けて、判定３０７より状態３０９へと遷移して、ステップ２１０で初期化完了のレスポンスを返す。ホスト装置１０２Ａは不揮発性記憶装置１０１Ａから初期化完了のレスポンスを受けることで不揮発性記憶装置１０１Ａが既に第２の状態になっており、論理アドレスを指定したデータの読み出し・書き込みが可能であることを認識する。【００８２】
つまりホスト装置１０２Ａは不揮発性記憶装置１０１Ａの初期化完了を確認するために、複数回の初期化完了確認コマンドを発行する必要とする可能性がある。不揮発性記憶装置１０１Ａ内部では論理物理アドレス変換テーブル１０８の作成を含む初期化処理が完了するまではホスト装置１０２Ａに対して初期化完了を通知しない。従って、ホスト装置１０２Ａは不揮発性記憶装置１０１Ａに対して論理アドレスを指定してデータの読み出しを行うためには、不揮発性記憶装置１０１Ａの初期化の完了を待つ必要があり、読み出しまでに時間がかかる。一方ブートブロックアドレス指定の読み出しであれば、ホスト装置１０２Ａは不揮発性記憶装置１０１Ａの初期化完了を待つことなくデータの読み出しが可能である。【００８３】
ホスト装置１０２Ａは不揮発性記憶装置１０１Ａへの電源投入後に不揮発性記憶装置１０１Ａからブートコードを読み出すが、このブートコードはホスト装置１０２Ａまたは、ホスト装置１０２Ａとは異なる他のホスト装置によって予め不揮発性記憶装置１０１Ａに対して書き込まれたデータである。ここではホスト装置１０２Ａが不揮発性記憶装置１０１Ａにブートコードを書き込む際の処理について説明する。【００８４】
図４はブートコードの書き込みとブートブロックアドレス通知のシーケンス図である。これは前述したブートブロックアドレスを指定しての読み出しの準備に相当する。ブートブロックアドレス通知とは、不揮発性記憶装置１０１Ａがブートコードのデータの存在する物理アドレスを、物理アドレスと直接対応付けできる情報であるブートブロックアドレスに変換して、ホスト装置１０２Ａに通知する処理である。【００８５】
まずステップ４０１で、ホスト装置１０２Ａのプロセッサ１１１は不揮発性記憶装置ＩＦ１１３のＬＢＡ指定アクセス部１１４を介して、不揮発性記憶装置１０１Ａに対して論理アドレスを指定した書き込みコマンドを発行する。不揮発性記憶装置１０１Ａはステップ４０２で書き込みコマンドを認識したことを表すレスポンスをホスト装置１０２Ａに返す。次にステップ４０３でステップ４０１の書き込みコマンドに対応するブートコードのデータを不揮発性記憶装置１０１Ａに転送する。不揮発性記憶装置１０１Ａでは、ステップ４０３で転送されるブートコードのデータをホストＩＦ１０６からバッファメモリ１０９に維持し、更にフラッシュメモリＩＦ１０７を介してフラッシュメモリ１０４に書き込む。詳細説明は省略するが、不揮発性記憶装置１０１Ａへのデータの書き込みに際してプロセッサ１０５は論理物理アドレス変換テーブル１０８の情報を更新するとともに、そのコピーをバックアップデータとなるようフラッシュメモリ１０４にも書き込む。【００８６】
プロセッサ１０５はフラッシュメモリ１０４へのブートコードの書き込みが完了したら、ステップ４０４でホスト装置１０２Ａに書き込みが完了したことを通知する。【００８７】
不揮発性記憶装置１０１Ａへのブートコードのデータの書き込みが完了したら、ホスト装置１０２Ａは転送したブートコードが書き込まれたフラッシュメモリ１０４の物理アドレスに直接関連付けられるブートブロックアドレスを取得するために、ステップ４０５でブートブロックアドレス取得コマンド（ＢＢＡ取得コマンド）を発行する。プロセッサ１０５は、ＢＢＡ取得コマンドを受けると、直前に書き込みを行った論理アドレス（ここではステップ４０１でホスト装置１０２Ａに指定された論理アドレス）を基にして、対応する物理アドレスを論理物理アドレス変換テーブル１０８から取得する。さらにプロセッサ１０５は得られた物理アドレスを基にして対応するブートブロックアドレスをアドレススクランブル部１１０から取得する。【００８８】
そしてステップ４０６でプロセッサ１０５はホストＩＦ１０６を介してブートブロックアドレスをホスト装置１０２Ａに出力する。ホスト装置１０２Ａでは不揮発性記憶装置１０１Ａから得られたブートブロックアドレスと、ステップ４０１で指示した論理アドレスの対応を不揮発性メモリであるＬＢＡ−ブート部変換テーブル１１７に記憶する。【００８９】
こうすることでホスト装置１０２Ａはブートコードのデータを書き込んだ論理アドレスに対応するブートブロックアドレスを取得して、記憶することが出来る。図２のステップ２０４では、このシーケンスで記憶したブートブロックアドレスを使用している。【００９０】
図５はアドレス変換の概略図である。図５において左側の論理マップはホスト装置１０２ＡのＬＢＡ指定アクセス部１１４でアクセス可能な不揮発性記憶装置１０１Ａの論理ブロックアドレスの範囲である。右側のブートブロックアドレスはホスト装置１０２ＡのＬＢＡ−ブート部変換テーブル１１７に記憶され、ＢＢＡ指定アクセス部１１５でアクセス可能な不揮発性記憶装置１０１Ａに対するブートブロックアドレスである。このブートブロックアドレスの個数はホスト装置１０２ＡのＬＢＡ−ブート部変換テーブル１１７に記憶できる個数だけ許容される。中央の物理マップは不揮発性記憶装置１０１Ａのフラッシュメモリ１０４の物理ブロックアドレスのマップである。【００９１】
図５において、左側の論理マップから中央の物理マップへは論理物理アドレス変換テーブル１０８によって対応付けられている。この際に、物理マップの容量よりも論理マップの容量のほうが少ないので、論理物理アドレス変換テーブル１０８では対応付けられない物理アドレスがある。これは例えば、データが消去済みの物理ブロックの物理アドレスが相当する。右側のブートブロックアドレスから物理アドレスへの変換はアドレススクランブル部１１０で行う。【００９２】
以上のように不揮発性記憶装置１０１Ａへのデータのアクセスは、ＬＢＡ指定アクセス部１１４を使用したアクセスと、ＬＢＡ指定アクセス部１１４によってアクセスできる領域の一部分の領域（ＬＢＡ−ブート部変換テーブル１１７で記憶可能な容量）にしかアクセスできないＢＢＡ指定アクセス部１１５を使用したアクセスがある。【００９３】
なお、ＢＢＡ指定アクセス部１１５からのアクセスでは不揮発性記憶装置１０１Ａからデータは読み出せるが、以下の理由によりデータの書き込みは行えない。
（１）不揮発性記憶装置１０１Ａの初期化処理を終えないフラッシュメモリ１０１の全物理ブロックから消去済みの物理アドレスを知ることができない。
（２）データの書き込みは論理物理アドレス変換テーブル１０８の更新を伴うが、この変換テーブルが完成していない状態では更新を行えない。【００９４】
以上のようにして本実施の形態の不揮発性記憶システムにおいては、データを読み出し、書き込みが行える第２の状態になる前に、第２の状態で読み出し・書き込みが行える領域の一部分の領域からデータを読み出せる第１の状態を取ることによって、ホスト装置１０２Ａが不揮発性記憶装置１０１Ａに対して電源投入後により早期にプログラムコードの読み出すことが可能となる。これによって、不揮発性記憶システムの起動を早く行うことが出来る。【００９５】
（第２の実施の形態）
本発明に係る不揮発性記憶システムの第２の実施の形態である不揮発性記憶装置システムについて説明する。第２の実施の形態において不揮発性記憶システムの構成については図１と同じであるので、説明を省略する。また、プログラムコードのデータの読み出し方法についても図２、３と同じであるので説明を省略する。アドレス変換の概略図であるが第１の実施の形態と同様であるので、説明は省略する。【００９６】
第２の実施の形態では第１の実施の形態に比べてブートブロックアドレス指定の読み出しのための準備である、ブートブロックアドレス通知のシーケンスが異なる。図６に、ブートブロックアドレス通知のシーケンス図を示す。【００９７】
ホスト装置１０２Ａは不揮発性記憶装置１０１Ａへの電源投入後に不揮発性記憶装置１０１Ａからブートコードを読み出すが、このブートコードはホスト装置１０２Ａまたは、ホスト装置１０２Ａとは異なる他のホスト装置によって予め不揮発性記憶装置１０１Ａに対して書き込まれたデータである。ここでは不揮発性記憶装置１０１Ａにブートコードが書き込まれた状態で、ホスト装置１０２Ａが読み出すブートブロックアドレス処理について説明する。【００９８】
第１の実施の形態と同様に、初期化処理を早めるためにブートコードが書き込まれたフラッシュメモリ１０４の物理アドレスに直接関連付けられるブートブロックアドレスを取得しておく必要がある。そこでまずステップ６０１で、論理アドレスを指定してブートブロックアドレス取得コマンド（ＢＢＡ取得コマンド）を発行する。ホストＩＦ１０６を介してＢＢＡ取得コマンドを受けたプロセッサ１０５は、指定される論理アドレス（ここではステップ６０１でホスト装置１０２Ａに指定された論理アドレス）を基にして、対応する物理アドレスを論理物理アドレス変換テーブル１０８から取得する。さらにプロセッサ１０５は得られた物理アドレスに対応するブートブロックアドレスをアドレススクランブル部１１０から取得する。【００９９】
そしてステップ６０２でプロセッサ１０５はホストＩＦ１０６を介してブートブロックアドレスをホスト装置１０２Ａに出力する。ホスト装置１０２Ａでは不揮発性記憶装置１０１Ａから得られたブートブロックアドレスと、ステップ６０１で指示した論理アドレスの対応をＬＢＡ−ブート部変換テーブル１１７の不揮発性メモリに記憶する。こうすることでホスト装置１０２Ａはブートコードのデータを書き込んだ論理アドレスに対応するブートブロックアドレスを取得して、記憶することが出来る。【０１００】
以上のようにして本実施の形態の不揮発性記憶システムにおいては、データを読み出し、書き込みが行える第２の状態になる前に、第２の状態で読み出し・書き込みが行える領域の一部分の領域からデータを読み出せる第１の状態を取ることによって、ホスト装置１０２Ａが不揮発性記憶装置１０１Ａに対して電源投入後により早期にプログラムコードの読み出すことが可能となる。これによって、不揮発性記憶システムの起動を早く行うことが出来る。【０１０１】
なお、一般的にブートコードは論理アドレスの先頭である論理アドレスの０に配置されることが多い。従ってホスト装置１０２Ａは、不揮発性記憶装置１０１Ａから得るブートブロックアドレスの情報を論理アドレスの０に固定しても十分に有用である。従って、図６での論理アドレスを指定してのブートブロックアドレス取得コマンドを、論理アドレスを指定出来ず、必ず論理アドレス０に対応するブートブロックアドレスを得ることの出来るコマンドとすると、本実施の形態の効果を大きく損なうことなく、コマンド定義等のシステムの構成を簡略化することが出来る。【０１０２】
（第３の実施の形態）
本発明の第３の実施の形態に係る不揮発性記憶システムについて説明する。図７は本実施の形態の不揮発性記憶システムの構成を示す。なお、図７において図１の不揮発性記憶システムと同じ機能ブロックについては同じ番号を付しており、ここでは説明を省略する。第３の実施の形態においてホスト装置１０２Ｂは不揮発性記憶装置１０１Ｂを複数のパーティションに分割して使用することが可能な不揮発性記憶システムに対応している。【０１０３】
図７において、不揮発性記憶装置１０１Ｂ内部のコントローラ１０３Ｂにはコントローラ１０３Ａの各ブロックに加えて、パーティション管理テーブル１２１が新たに加わっている。【０１０４】
パーティション管理テーブル１２１は論理アドレスとパーティションとの対応を管理するためのテーブルである。【０１０５】
図７において、ホスト装置１０２Ｂ内部に図１のホスト装置１０２Ａからモード決定部１２２が新たに加わっている。モード決定部１２２は、ホスト装置１０２Ｂに備えられた図示しないユーザインターフェース部、又は周辺装置構成確認部からの入力信号によって設定すべきモードを決定するものである。【０１０６】
ユーザインターフェース部は、例えば外部に設けられたスイッチやＧＵＩを使用した選択入力の機能を有する。例えば、不揮発性記憶システムを使用しているユーザが通常行うホスト装置１０２Ｂの起動とは異なる診断モードでの起動を指示している場合には、モード決定部１２２は診断モードで起動することをプロセッサ１１１に通知する。また、例えばホスト装置１０２Ｂに付属する周辺装置の構成が、以前に起動した状態とは異なっているという情報が周辺装置構成確認部を介して入力されている場合には、モード決定部１２２は周辺機器確認モードで動作することをプロセッサ１１１に通知する。【０１０７】
不揮発性記憶システムの不揮発性記憶装置１０１Ｂは、通常行うホスト装置１０２Ｂの起動のためのブートプログラムが格納されているブートパーティションと、例えば診断モードや周辺機器確認モード用のブートプログラムが格納されている複数のブートパーティション、及びその他のパーティションを備える。【０１０８】
パーティション管理テーブル１２１はパーティション番号に対して先頭の論理アドレスの番号を示すテーブルである。図８は不揮発性記憶装置１０１Ｂの論理マップとパーティションの関係と対応するパーティション管理テーブル１２１について示している。論理マップに示されるように、論理物理アドレス変換テーブル１０８で登録されている論理アドレス０から９９９までのアドレスに対応して、論理アドレスの０から１９９までがパーティション０、論理アドレスの２００からがパーティションの１、論理アドレスの９００から９９９までがパーティションのｎであるとする。パーティション管理テーブル１２１はパーティション番号０には先頭論理アドレス０が、パーティション番号１には先頭論理アドレス２００が、パーティション番号ｎには先頭論理アドレス９００がそれぞれ登録される。プロセッサ１０５は論理物理アドレス変換テーブル１０８とパーティション管理テーブル１２１から、不揮発性記憶装置１０１Ｂに複数備える各パーティションがどのように構成されているかを認識することが出来る。【０１０９】
図９を用いて本実施の形態の不揮発性記憶システムにおけるプログラムコードのデータの読み出しについて説明する。図９はホスト装置１０２Ｂと不揮発性記憶装置１０１Ｂ間における電源投入後の初期化におけるシーケンス図であり、図９において図２と同じシーケンスについては図２と同じ番号を付している。ここで初期化コマンドはブートパーティションにアクセスを要求するコマンドとなっっている。【０１１０】
図９においてホスト装置１０２Ｂは不揮発性記憶装置１０１Ｂを初期化するために、不揮発性記憶装置１０１Ｂからレスポンスが返ってくるまで不揮発性記憶装置１０１Ｂに対して初期化コマンドを発行する（ステップ２０１，２０２）。図２の動作と異なるのは、ホスト装置１０２Ｂの初期化コマンド後における不揮発性記憶装置１０１Ｂからの読み出しである。ステップ２０３で、不揮発性記憶装置１０１Ｂからホスト装置１０２Ｂに対してレスポンスがあったときに、ホスト装置１０２Ｂの処理について図１０を用いて説明する。【０１１１】
図１０はホスト装置１０２Ｂのブートブロックアドレス決定フローである。図１０のステップ１００１で、モード決定部１２２は、ユーザインターフェース部や周辺装置構成確認部から入力される情報を基に、起動モードを決定する。次にステップ１００２でプロセッサ１１１は、モード決定部１２２が決定した起動モードに対応するプログラムコードが格納されているパーティションを決定する。次にステップ１００３でプロセッサ１１１は決定したパーティションのプログラムコードであるパーティションブートコードが格納されている論理アドレス、即ちパーティションブートコードの論理アドレス（ＬＢＡ）を決定する。次にステップ１００４でプロセッサ１１１はステップ１００３で決定したこの論理アドレスをブート部アドレス決定部１１６に送る。ブート部アドレス決定部１１６はこの論理アドレスを、ＬＢＡ−ブート部変換テーブル１１７を用いてパーティションブートコードのブートブロックアドレス（ＢＢＡ）に変換する。【０１１２】
ホスト装置１０２Ｂは図９のステップ９０４において、以上のようにして決定されたパーティションのブートブロックアドレスを指定して読み出しコマンドを不揮発性記憶装置１０１Ｂに発行する。【０１１３】
そして、不揮発性記憶装置１０１Ｂはステップ９０６で指定されたパーティションのブートコードを出力する。ステップ９０６で読み出されるパーティションブートコードを用いて、ホスト装置１０２Ｂのプロセッサ１１１は対応する起動モードに応じたホスト装置１０２Ｂの起動処理を行う。【０１１４】
ここでのパーティションブートコードの読み出しはブートブロックアドレスを指定しての読み出しであるので、実施の形態１と同様に不揮発性記憶装置１０１Ｂが第１の状態で読み出すことができる。【０１１５】
なお、不揮発性記憶装置１０１Ｂのプロセッサ１０５はステップ２０６でホスト装置１０２Ｂにブートコードを出力した後は、中断した初期化を再開する。【０１１６】
以降、ステップ２０７でホスト装置１０２Ｂは不揮発性記憶装置ＩＦ１１３から初期化完了確認のコマンドの発行を行う。不揮発性記憶装置１０１Ｂ側の初期化処理が完了しておらず第１の状態であれば、ホスト装置１０２Ｂに対してステップ２０８で初期化未完のレスポンスを返す。ここで初期化確認コマンドはブートパーティション以外のパーティションにアクセスを要求するコマンドとなっている。【０１１７】
ホスト装置１０２Ｂはステップ２０８で返されるレスポンスが初期化未完の通知であれば、ステップ２０９で再度初期化完了確認のコマンドの発行を行う。論理物理変換テーブル１０８の作成を終え、不揮発性記憶装置１０１Ｂの初期化処理が完了し、第２の状態にあれば、不揮発性記憶装置１０１Ｂはホスト装置１０２Ｂからの初期化完了確認のコマンドに対して、ステップ２１０で初期化完了のレスポンスを返す。ホスト装置１０２Ｂは初期化完了のレスポンスにより論理アドレスを指定したデータの書き込み・読み出しが可能になったことを認識する。【０１１８】
図９のシーケンス図に対応する不揮発性記憶装置１０１Ｂ内のホスト装置１０２Ｂに対する処理のフローチャートは図３と同じであり、説明を省略する。また、図９のステップ９０４で行う読み出しコマンドで指定するブートブロックアドレスを不揮発性記憶装置１０１Ｂからホスト装置１０２Ｂに通知する仕組みは図６と同じであり、説明を省略する。その後に第２の状態となれば不揮発性記憶装置１０１Ｂは全てのパーティションの全ての論理アドレスのデータが読み出し・書き込み可能になる。【０１１９】
以上の様に、第３の実施例の不揮発性記憶システムにおいて、不揮発性記憶装置１０１Ｂは複数のパーティションに分割して使用可能であり、またホスト装置１０２Ｂはホスト装置１０２Ｂの起動モードに応じて複数のパーティションからひとつを選択して、選択したパーティションからブートコードを読み出す。第２の状態の前に、パーティションのブートコードの読み出しのみが可能な第１の状態を取ることによって、ホスト装置１０２Ｂが不揮発性記憶装置１０１Ｂに対して電源投入後により早期に起動モードに応じたプログラムコードのデータの読み出しが可能となる。これによって、不揮発性記憶システムを起動モードに応じて早く起動することが出来る。【０１２０】
（第４の実施の形態）
本発明の第４の実施の形態に係る不揮発性記憶システムについて説明する。図１１は、本実施の形態の不揮発性記憶システムの構成を示す。なお、図１１において図１および図７の不揮発性記憶システムと同じ機能ブロックについては同じ番号を付しており、個々では説明を省略する。第４の実施の形態においては第３の実施の形態と同様に、ホスト装置１０２Ｃは不揮発性記憶装置１０１Ｃを複数のパーティションに分割して使用することが可能な不揮発性記憶システムに対応している。【０１２１】
図１１において、不揮発性記憶装置１０１Ｃ内部のコントローラ１０３Ｃにパーティション領域テーブル１２３が、図７のコントローラ１０３Ｃから新たに追加になっている機能ブロックであり、アドレススクランブル部１１０が削除されている。パーティション領域テーブル１２３は、パーティション管理テーブル１２１で登録されている論理アドレスに対応する物理アドレスを、パーティション番号に対応付けて管理しているテーブルである。このテーブルは、ブートコードが格納されている物理アドレスも管理しているので、実施の形態１〜３のアドレススクランブル部１１０と同じく、ブートコードアドレス変換テーブルに相当している。本願発明においてパーティション番号と各パーティションの先頭論理アドレスに対応する物理アドレスの情報は、コントローラの初期化を行ううえで欠かせない情報である。従って、パーティション領域テーブル１２３は不揮発性のメモリで構成されるか、または揮発性のメモリで構成するときには不揮発性記憶であるフラッシュメモリ１０４の特定の物理アドレス位置に書き込んでおくことで、電源投入後に早期に読み出してパーティション領域テーブル１２３を正しい情報に出来ることが望ましい。【０１２２】
ホスト装置１０２Ｃでは不揮発性記憶装置ＩＦ１１３にＰＮ（パーティションナンバー）指定アクセス部１２４が図７から新たに追加になっており、ＢＢＡ指定アクセス部１１５が削除されている。また、ブート部アドレス決定部１１６と不揮発性メモリで構成されていたＬＢＡ−ブート部変換テーブル１１７が削除されている。ＰＮ指定アクセス部１２４は不揮発性記憶装置１０１Ｃに対するパーティション番号を指定してデータを読み出すときに用いられるアクセス部である。【０１２３】
図１２にパーティション領域テーブル１２３の構成を示す。パーティション領域テーブル１２３はパーティション番号と、そのパーティションの先頭論理アドレスが書き込まれている物理アドレスとの対応を示している。ここではパーティション番号０のパーティションの先頭論理アドレスのデータが書き込まれている物理アドレスが４５６で、パーティション番号１のパーティションの先頭論理アドレスのデータが書き込まれている物理アドレスが７８９で、パーティション番号ｎのパーティションの先頭論理アドレスのデータが書き込まれている物理アドレスが１２３である場合について示している。ここで先頭論理アドレスに限定されることなく、先頭からの複数の論理アドレスに対応する物理アドレスを記憶しておいてもよい。【０１２４】
図１３はアドレス変換の概略図である。図１３において左側の論理マップはホスト装置１０２ＣのＬＢＡ指定アクセス部１１４でアクセス可能な不揮発性記憶装置１０１Ｃの論理アドレス範囲である。左側の論理マップから中央の物理マップへは論理物理アドレス変換テーブル１０８で対応付けられている。右側のパーティション番号はホスト装置１０２ＣのＰＮ指定アクセス部１２４で読み出し可能な不揮発性記憶装置１０１Ｃのパーティションの番号である。右側のパーティション番号はパーティション領域テーブル１２３により中央の物理マップに対応付けられている。以上のように、パーティション領域テーブル１２３は論理物理アドレス変換テーブル１０８で管理されている領域の一部分に対してパーティション番号からアクセスできるようにしている。【０１２５】
図１４には図１３に示されるパーティション領域テーブル１２３の対応が、パーティション管理テーブル１２１と論理物理アドレス変換テーブル１０８を使用することでも対応付けられることを示している。図１４において左側のパーティション番号と各パーティションの先頭論理アドレスとの関係はパーティション管理テーブル１２１より与えられる。図８に示したように、パーティション番号０には論理アドレス０が、パーティション番号１には論理アドレス２００が、パーティション番号ｎには論理アドレス９００が対応付けられている。こうして得られる各パーティションの先頭論理アドレスを論理物理アドレス変換テーブル１０８で物理アドレスに変換すると、論理アドレス０には物理アドレス４５６が、論理アドレス２００には物理アドレス７８９が、論理アドレス９００には物理アドレス１２３が対応する。結果パーティション番号０には物理アドレス４５６が、パーティション番号１には物理アドレス７８９が、パーティション番号ｎには物理アドレス１２３が対応する。これは図１２、１３で示されるパーティション領域テーブル１２３での変換に対応する。【０１２６】
図１５を用いて本実施の形態の不揮発性記憶システムにおける起動モードに応じたパーティションのプログラムコードのデータの読み出しについて説明する。図１５はホスト装置１０２Ｃと不揮発性記憶装置１０１Ｃ間における電源投入後の初期化におけるシーケンス図である。【０１２７】
最初にホスト装置１０２Ｃが不揮発性記憶装置１０１Ｃに電圧を印加すると、プロセッサ１０５はコントローラ１０３Ｃの初期化（コントローラ初期化）を行う。このコントローラ初期化とは、コントローラ各部に存在する図示しないレジスタをリセットし、コントローラ１０３Ｃに接続されているフラッシュメモリ１０４の種別や個数の認識をして、不揮発性記憶装置１０１Ｃとしての容量や特性に関する情報をフラッシュメモリ１０４の特定領域のデータを読み出すことで認識する処理である。コントローラ初期化に要する時間は数ｍｓ以内の短い時間である。パーティション領域テーブル１２３を揮発性メモリで構成している時には、このコントローラ初期化の期間にフラッシュメモリ１０４からデータを読み出して正しい状態にする。コントローラの初期化を終えることで、不揮発性記憶装置１０１Ｃはホスト装置１０２Ｃと相互に通信を行うことが可能になる。またこの状態ではフラッシュメモリの特定の領域からデータの読み出しを行うことが可能である。このコントローラ１０３Ｃの初期化を終えた状態を、不揮発性記憶装置１０１Ｃの第１の状態とする。【０１２８】
ステップ１５０１でホスト装置１０２Ｃは不揮発性記憶装置ＩＦ１１３を介して不揮発性記憶装置１０１Ｃに不揮発性記憶装置１０１Ｃを初期化するための初期化コマンドを発行する。不揮発性記憶装置１０１Ｃの初期化とは、コントローラ内部のプロセッサ１０５がフラッシュメモリＩＦ１０７を介してフラッシュメモリ１０４からデータを読み出して、その読み出したデータを基に、論理物理アドレス変換テーブル１０８を完成させることである。不揮発性記憶装置１０１Ｃの初期化を完了するために要する時間は、実時間で数１００ｍｓ程度を要する。不揮発性記憶装置１０１Ｃの初期化が完了することで、ホスト装置１０２Ｃは不揮発性記憶装置１０１Ｃに対して論理アドレスを指定してデータの書き込み、不揮発性記憶装置１０１Ｃからデータの読み出しが可能になる。この不揮発性記憶装置１０１Ｃの初期化を終えた状態を、不揮発性記憶装置１０１Ｃの第２の状態とする。【０１２９】
ステップ１５０１でホスト装置１０２Ｃより発行される初期化コマンドを受けて不揮発性記憶装置１０１Ｃでは、コントローラ初期化が完了して不揮発性記憶装置１０１Ｃが第１の状態にあればホスト装置１０２Ｃに対してレスポンスを返し、まだ第１の状態になっていなければレスポンスを返さない。ステップ１５０１の初期化コマンドに対して不揮発性記憶装置１０１Ｃからレスポンスが返らないことで、ホスト装置１０２Ｃは不揮発性記憶装置１０１Ｃがまだ第１の状態になっていない、即ちコントローラ１０３Ｃの初期化が終わっていないことを認識することが出来る。【０１３０】
ホスト装置１０２Ｃは不揮発性記憶装置１０１Ｃを初期化するために、不揮発性記憶装置１０１Ｃからレスポンスが返ってくるまで不揮発性記憶装置１０１Ｃに対して初期化コマンドを発行する必要がある。ここでは、ステップ１５０２で再度初期化コマンドを発行する。ステップ１５０２の初期化コマンドを受けたときに不揮発性記憶装置１０１Ｃ内部のコントローラ１０３Ｃの初期化が終了していれば、プロセッサ１０５はステップ１５０２の初期化コマンドに対してステップ１５０３でホストＩＦ１０６を介してレスポンスを返す。また不揮発性記憶装置１０１Ｃではホスト装置１０２Ｃの初期化コマンドを受けて不揮発性記憶装置１０１Ｃ内部の初期化処理を開始する。【０１３１】
ホスト装置１０２Ｃはステップ１５０３で不揮発性記憶装置１０１Ｃからレスポンスが返ってくることで、不揮発性記憶装置１０１Ｃ内部のコントローラ１０３Ｃの初期化が完了して第１の状態になっていることを認識することが出来る。この不揮発性記憶装置１０１Ｃの第１の状態では限られた領域からのみデータの読み出しが可能となる。【０１３２】
不揮発性記憶装置が第１の状態にあることを認識したホスト装置１０２Ｃのプロセッサ１１１は、モード決定部１２２より指定される起動モードに対応するプログラムコードが格納されているパーティションを決定する。そしてステップ１５０４で起動モードに応じ、ＰＮ指定アクセス部１２４を介してパーティションナンバー指定での読み出しコマンドを発行する。このステップ１５０４のタイミングでは不揮発性記憶装置１０１Ｃ内部において初期化処理が終了している必要はない。【０１３３】
ステップ１５０４のパーティションナンバー指定での読み出しコマンドを受けて、不揮発性記憶装置１０１Ｃのプロセッサ１０５は、まずステップ１５０５でレスポンスをホスト装置１０２Ｃに返す。そして一旦プロセッサ１０５は論理物理アドレス変換テーブル１０８の作成を中断して、パーティションナンバーを指定しての読み出しコマンドで指示されるパーティション番号からパーティション領域テーブル１２３を参照して対応するフラッシュメモリ１０４のブート部物理アドレスに変換する。プロセッサ１０５はブート部物理アドレスを指定してフラッシュメモリ１０４からブートコードのデータを読み出して一時バッファメモリ１０９に保持し、その後ステップ１５０６でホスト装置１０２Ｃに対してブートコードを出力する。【０１３４】
ホスト装置１０２Ｃのプロセッサ１１１は不揮発性記憶装置ＩＦ１１３を介して読み出されるブートコードをメインメモリ１１２に転送する。プロセッサ１１１はメインメモリ１１２に転送されたブートコードを使用することでホスト装置１０２Ｃを起動する。【０１３５】
以上のブートコードのデータ読み出しシーケンスによると、ホスト装置１０２Ｃは不揮発性記憶装置１０１Ｃからのブートコードの読み出しを電源投入後のコントローラ１０３Ｃの初期化が完了した第１の状態で、第２の状態になることを待つことなく、実行することが可能となっている。これは、ホスト装置１０２Ｃは起動モードに対応するパーティションの番号を指定して不揮発性記憶装置１０１Ｃに読み出しコマンドを発行することで、パーティション領域テーブル１２３を使用して、パーティションの番号をブート部物理アドレスに変換し、フラッシュメモリ１０４からデータを読み出すことができるからである。【０１３６】
なお、ステップ１５０６でホスト装置１０２Ｃにブートコードを出力した後は、不揮発性記憶装置１０１Ｃのプロセッサ１０５は中断した初期化を再開する。【０１３７】
ステップ１５０７以降の処理は従来と同様である。ステップ１５０７でホスト装置１０２Ｃは不揮発性記憶装置ＩＦ１１３から初期化完了確認のコマンドの発行を行う。不揮発性記憶装置１０１Ｃ側の初期化処理が完了しておらず第１の状態であれば、ホスト装置１０２Ｃに対してステップ１５０８で初期化未完のレスポンスを返す。【０１３８】
ホスト装置１０２Ｃはステップ１５０８で初期化未完のレスポンスが返されれば、ステップ１５０９で再度初期化完了確認のコマンドの発行を行う。不揮発性記憶装置１０１Ｃの初期化処理が完了して第２の状態にあれば、ホスト装置１０２Ｃから不揮発性記憶装置１０１Ｃへの初期化完了確認のコマンドに対して、ステップ１５１０で不揮発性記憶装置１０１Ｃはホスト装置１０２Ｃへ初期化完了のレスポンスを返す。不揮発性記憶装置１０１Ｃは初期化完了のレスポンスを返すことで論理アドレスを指定したデータの書き込み・読み出しが可能になったことをホスト装置１０２Ｃに通知する。【０１３９】
図１６に、図１５のシーケンス図に対応する不揮発性記憶装置１０１Ｃ内のホスト装置１０２Ｃに対する処理のフローチャートを示す。図３と同じ判定・処理を行う箇所には図３と同じ番号を付しており、説明を省略する。【０１４０】
ホスト装置１０２Ｃよりステップ１５０４のパーティションナンバー指定の読み出しコマンドが発行された場合に、プロセッサ１０５はステップ１６０３でホストＩＦ１０６を介して入力されたコマンドがパーティションナンバー指定の読み出しコマンドであることを認識する。このとき状態１６０５に進み、ステップ１５０５のレスポンスを返すとともに、状態３０２から開始していた不揮発性記憶装置１０１Ｃ内部の初期化処理を一時中断する。そして、指定されたパーティション番号をパーティション領域テーブル１２３でフラッシュメモリ１０４の物理アドレスに変換する。そしてその物理アドレスをフラッシュメモリＩＦ１０７に指定することでフラッシュメモリ１０４から指定されたパーティションに対応するブートコードを読み出してバッファメモリ１０９へと転送する。更に状態３０６でデータをホスト装置１０２Ｃに出力する。そして中断していた不揮発性記憶装置１０１Ｃ内部の初期化処理を再開して状態１６０３へと遷移する。【０１４１】
以上のようにして本願発明の不揮発性記憶システムの不揮発性記憶装置１０１Ｃにおいては、不揮発性記憶装置１０１Ｃにデータを読み出し・書き込みが行える第２の状態になる前に、第２の状態で読み出し・書き込みが行える領域の一部分の領域ではあるが、読み出しが可能な状態である第１の状態を取ることによって、ホスト装置１０２Ｃが不揮発性記憶装置１０１Ｃに対して電源投入後により早期に起動モードに対応するパーティションのプログラムコードのデータの読み出すことが可能となる。これによって、不揮発性記憶システムの起動を早く行うことが出来る。【０１４２】
なお、本願発明では図１３に示すように、第２の状態で使用可能な論理物理アドレス変換テーブル１０８で対応付けられている領域の一部分の領域について、第１の状態でパーティション領域テーブル１２３を使用して読み出す場合について説明した。第２の状態でアクセス可能な領域であれば、論理物理アドレス変換テーブル１０８で対応付けられていなくとも構わない。第１の状態ではブートコードを読み出すので、第２の状態ではより信頼性・機密性の高い別のアドレス変換手段を用いて読み出し・書き込みをするようにしてもよい。【０１４３】
また、本願発明では図１３で示すように、各パーティションの先頭論理アドレスについて、パーティション領域テーブル１２３を用いて物理アドレスに変換する場合について説明した。本実施の形態では特定のパーティションについて、先頭からの複数の論理アドレスについて物理アドレスに変換するテーブルを有しても構わない。この場合そのパーティションに含まれる全ての論理アドレスについての物理アドレスであってもよい。第２の状態で使用可能な論理物理アドレス変換テーブル１０８を作成するよりも十分早く第１の状態への初期化が行える場合であれば、本願発明の効果を得ることが出来る。
【産業上の利用可能性】
【０１４４】
本発明では、不揮発性記憶装置にシステムを起動するためのプログラムコードを格納した不揮発性記憶システムにおいて、システムの起動を高速に行うことが出来るユーザ利便性の高い不揮発性記憶システムに有用である。
【図１】
2009016832.tif 000003
【図２】
2009016832.tif 000004
【図３】
2009016832.tif 000005
【図４】
2009016832.tif 000006
【図５】
2009016832.tif 000007
【図６】
2009016832.tif 000008
【図７】
2009016832.tif 000009
【図８】
2009016832.tif 000010
【図９】
2009016832.tif 000011
【図１０】
2009016832.tif 000012
【図１１】
2009016832.tif 000013
【図１２】
2009016832.tif 000014
【図１３】
2009016832.tif 000015
【図１４】
2009016832.tif 000016
【図１５】
2009016832.tif 000017
【図１６】
2009016832.tif 000018
【図１７】
2009016832.tif 000019
【図１８】
2009016832.tif 000020
【図１９】
2009016832.tif 000021
【国際調査報告】
2009016832.tif 000022
2009016832.tif 000023
2009016832.tif 000024
2009016832.tif 000025