(57)【要約】【課題】フラッシュメモリを記憶媒体として使用した半導体補助記憶装置の起動時間を短縮する。【解決手段】フラッシュメモリ１５の読み書きの基本単位であるページの管理データとして、対応する論理ページ（チャンク）番号とユーザデータの論理ページ（チャンク）の更新番号に加えて、そのユーザデータが新しいか古いかを示す更新フラグを設け、ユーザデータを書き換えたときには、旧ユーザデータに対応する更新フラグをセットしておく。半導体補助記憶装置１０に対する電源投入等の起動処理において、物理ページ（チャンク）を順次読み出してＲＡＭ１３ｂによるアドレステーブルを作成するときに、更新フラグがセットされている物理ページ（チャンク）を無視する。【選択図】図１
2009276883.tif 000002
【特許請求の範囲】
【請求項１】
物理アドレスが付されたデータ格納用の複数のページで構成されるブロックを複数有し、該ページ単位でのデータの書き込みと読み出しが可能で、該ブロック単位でデータの消去が行われるフラッシュメモリと、主制御装置から指定される論理アドレスを前記物理アドレスに変換するためのアドレステーブルを有し、該主制御装置から与えられるユーザデータを前記フラッシュメモリに書き込むと共に、該フラッシュメモリから読み出したユーザデータを該主制御装置に出力する制御手段とを備えた半導体補助記憶装置において、
前記フラッシュメモリの各ページは、ユーザデータを格納するユーザデータ領域と、対応する論理アドレス、該論理アドレスに対する該ユーザデータの更新回数及び最新のユーザデータであるか否かを示す更新フラグを含む管理データを格納する管理データ領域とを有し、
前記制御手段は、通常処理時において、前記フラッシュメモリに格納されている旧ユーザデータを前記主制御装置から与えられる新ユーザデータで書き換えるときに、前記アドレステーブルを参照及び更新して該新ユーザデータを未使用のページに書き込むと共に該旧ユーザデータが格納されているページの更新フラグをセットし、起動処理時においては、前記フラッシュメモリの各ページの管理データ領域を順次読み出し、前記更新フラブがセットされていないページの管理データに基づいて前記アドレステーブルを生成するように構成したことを特徴とする半導体補助記憶装置。
【請求項２】
前記制御手段は、前記フラッシュメモリの連続する複数のページ単位に前記ユーザデータの読み書きを行うことを特徴とする請求項１記載の半導体補助記憶装置。
【請求項３】
前記更新フラグは、対応する前記ブロックの消去によってリセットされ、消去状態に対して相補的な論理値を書き込むことによってセットされることを特徴とする請求項１または２記載の半導体補助記憶装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、フラッシュメモリを記憶媒体として使用したＵＳＢメモリやコンパクトフラッシュ(登録商標)等の半導体補助記憶装置、特にその起動時間の短縮に関するものである。
【背景技術】
【０００２】
近年の半導体メモリの大容量化及び低コスト化に伴い、フラッシュメモリを使用したＵＳＢメモリやコンパクトフラッシュ（登録商標）等の半導体補助記憶装置が広く使用されるようになった。フラッシュメモリは、浮遊ゲートを有する絶縁ゲート型電界効果トランジスタを記憶素子とするＥＥＰＲＯＭ（電気的に書き替え可能な不揮発性メモリ）の一種で、ページと呼ばれる最小単位（通常、５１２バイト）のユーザデータを読み書きすると共に、連続する複数ページ(例えば、３２ページ)を１ブロックとしてデータの消去を行うように構成されている。なお、音声データのＷＡＶファイル等に特化する場合には、連続する複数ページをチャンク（chunk:ひとかたまり）という単位で扱うこともある。
【０００３】
フラッシュメモリにおけるデータの書き込みは、データ“０”を書き込むべき記憶素子の制御ゲートに書き込み用の高電圧を印加することにより、該当する記憶素子の浮遊ゲートに電荷を蓄積させることで行われる。なお、データ“１”を書き込むべき記憶素子の制御ゲートには書き込み用の高電圧は印加しない。一方、データの消去は、該当するブロックの記憶素子の各制御ゲートに書き込み用とは逆極性の消去用の高電圧を印加することで、ブロック全体の記憶素子の浮遊ゲートに蓄積された電荷を放出することによって行われる。これにより、消去されたブロックのデータはすべて“１”となる。
【０００４】
フラッシュメモリでは、ブロック単位でデータの消去が行われるので、書き換えが１ページだけであっても、そのページを含むブロック全体を消去する必要がある。また、記憶素子の構造上、消去可能な回数が１０万〜１００万回に制約されている。このため、特定のブロックに書き替えが集中することのないように、全ブロックを満遍なく使用するための構成や制御方法が提案されている。
【０００５】
例えば、磁気ディスク装置では、所定の領域にＦＡＴ(File  Allocation  Table)と呼ばれるディスク管理テーブルを設け、ディスク内の各クラスタの使用状況を常時把握できるようにしているが、ディスク管理テーブルは書き換えの頻度が大きいので、フラッシュメモリ内にこのような管理テーブルを設けることはできない。このため、ユーザデータを記録するためのフラッシュメモリとは別に、管理テーブル用のＲＡＭ(Random  Access  Memory)を設けたフラッシュディスク装置が下記特許文献１に記載されている。但し、ＲＡＭは電源が遮断されるとその記憶内容が喪失するため、起動時にはフラッシュメモリに保存されたデータに基づいて管理テーブルを生成する必要がある。
【０００６】
図２は、下記特許文献１に実施例２として記載された従来のフラッシュディスク装置の構成図である。
【０００７】
フラッシュディスク装置は、従来の磁気ディスク装置と同様に、大量のデータを保存するための補助記憶装置であり、図２（ａ）に示すように、ホストマシン１と周辺機器接続用のバス２を介して接続されるもので、ホストインタフェース部(Ｉ／Ｆ部)３、バッファメモリ４、マイクロプロセッサ５、メモリ制御部６、フラッシュメモリ７、内部バス８及びメモリバス９で構成されている。
【０００８】
ホストインタフェース部３は、バス２のプロトコルに従ってホストマシン１との間のデータ転送を制御するものである。バッファメモリ４は、ホストマシン１との間で読み書きするデータを一時的に保存するメモリである。
【０００９】
マイクロプロセッサ５は、ホストマシン１から与えられる論理アドレスと実際のフラッシュメモリ７に割り当てられた物理アドレスとの対応付けを行うと共に、メモリ制御部６に対して、該当する物理アドレスに対する書き込み、読み出し、消去等の指示を行うものである。マイクロプロセッサ５は、処理の手順を示すプログラムが格納されたＲＯＭ(Read  Only  Memory)５ａと、論理アドレスと物理アドレスの対応付けを行うアドレステーブルを格納するためのＲＡＭ５ｂを有している。
【００１０】
メモリ制御部６は、マイクロプロセッサ５の指示に従って、フラッシュメモリ７に対する書き込み、読み出し、消去の処理を行うものである。これらのホストインタフェース部３、バッファメモリ４、マイクロプロセッサ５及びメモリ制御部６は、内部バス８を介して相互に接続され、メモリ制御部６とフラッシュメモリ７の間は、メモリバス９を介して接続されている。
【００１１】
フラッシュメモリ７は、大量のデータを保存するための補助記憶部で、必要とする記憶容量に応じて複数個が並列に接続できるようになっている。フラッシュメモリ７は、連続する複数ページ（例えば、２ページまたは４ページ）を１つにまとめたチャンク単位でデータの書き込みと読み出しを行うと共に、連続する複数のチャンクで構成されるブロック単位で消去動作が行われるように構成されている。
【００１２】
図２（ｂ）は、マイクロプロセッサ５内のＲＡＭ５ｂに設けられたアドレステーブルの構成図である。アドレステーブルは、論理チャンク番号１〜Ｎの順番に構成され、各論理チャンクに対応する実際の物理チャンク番号を記録するようになっている。
【００１３】
図２（ｃ）は、フラッシュメモリ７上の１ページの構成図である。１ページは、５１２バイトのユーザデータと、１６バイトの管理データで構成されている。管理データは、ユーザデータに対する誤り訂正符号、このページに対応する論理チャンク番号、及びこの論理チャンク番号に対応する更新番号を有している。誤り訂正符号は、ユーザデータだけでなく論理チャンク番号と更新番号を含めたデータに対して付加される場合もある。
【００１４】
図３は、図２のフラッシュディスク装置の起動時の動作を示すフローチャートである。
フラッシュディスク装置では、起動時にマイクロプロセッサ５の制御によって次のような処理が行われる。
【００１５】
起動処理が開始されると、ステップＳ１において読み出すべき物理チャンク番号Ｉを０に設定すると共に、ＲＡＭ５ｂ中のアドレステーブル内の情報を消去し、ステップＳ２へ進む。ステップＳ２において、物理チャンク番号Ｉが最後の物理チャンク番号Ｍを越えたか否かを判定する。ＩがＭ以下のときはステップＳ３へ進み、ＩがＭを越えたときには起動処理を終了する。
【００１６】
ステップＳ３では、フラッシュメモリ７における物理チャンク番号Ｉの記憶内容を読み出し、その先頭ページの管理データから論理チャンク番号と更新番号を抽出する。
【００１７】
ステップＳ４において、ステップＳ３で抽出した管理データ中の論理チャンク番号に対応するアドレステーブルを調べ、既に物理チャンク番号が登録されているか否かを調べる。そして、登録済みで且つその更新番号がステップＳ３で抽出した更新番号よりも大きいときはステップＳ６へ進み、そうでない場合はステップＳ５へ進む。即ち、ステップＳ３で抽出した管理データ中の論理チャンク番号に対応するアドレステーブルが未登録の場合と、登録されていても、登録されている物理チャンクの内容が古い（更新番号が小さい）場合に、ステップＳ５の処理が行われる。
【００１８】
ステップＳ５では、ステップＳ３で抽出した管理データでアドレステーブルの該当する論理チャンク番号のデータ（物理チャンク番号）を書き換える。ステップＳ５の後、ステップＳ６へ進む。ステップＳ６では、読み出すべき物理チャンク番号Ｉに１を加算し、ステップＳ２へ戻る。
【００１９】
以上の起動処理により、フラッシュメモリ７内のすべての物理チャンクが順次読み出され、各物理チャンクの最初のページの管理データが抽出され、抽出された管理データに基づいてＲＡＭ５ｂ内のアドレステーブルが生成される。その後のフラッシュメモリ７に対する読み書き及び消去の制御は、このアドレステーブルを使用して行われる。
【００２０】
【特許文献１】特開２００５−２４２８９７号公報
【発明の開示】
【発明が解決しようとする課題】
【００２１】
しかしながら、前記フラッシュディスク装置では、ユーザデータの更新に伴って同一論理チャンク番号のデータが多くなってくると、起動処理において比較のための読み出し処理が多くなり、起動時間が遅くなってしまうという問題点があった。本発明は、フラッシュメモリを記憶媒体として使用した半導体補助記憶装置の起動時間を短縮することを目的としている。
【課題を解決するための手段】
【００２２】
本発明は、物理アドレスが付されたデータ格納用の複数のページで構成されるブロックを複数有し、該ページ単位でのデータの書き込みと読み出しが可能で、該ブロック単位でデータの消去が行われるフラッシュメモリと、主制御装置から指定される論理アドレスを前記物理アドレスに変換するためのアドレステーブルを有し、該主制御装置から与えられるユーザデータを前記フラッシュメモリに書き込むと共に、該フラッシュメモリから読み出したユーザデータを該主制御装置に出力する制御手段とを備えた半導体補助記憶装置において、前記フラッシュメモリの各ページは、ユーザデータを格納するユーザデータ領域と、対応する論理アドレス、該論理アドレスに対する該ユーザデータの更新回数及び最新のユーザデータであるか否かを示す更新フラグを含む管理データを格納する管理データ領域とを有し、前記制御手段は、通常処理時において、前記フラッシュメモリに格納されている旧ユーザデータを前記主制御装置から与えられる新ユーザデータで書き換えるときに、前記アドレステーブルを参照及び更新して該新ユーザデータを未使用のページに書き込むと共に該旧ユーザデータが格納されているページの更新フラグをセットし、起動処理時においては、前記フラッシュメモリの各ページの管理データ領域を順次読み出し、前記更新フラブがセットされていないページの管理データに基づいて前記アドレステーブルを生成するように構成したことを特徴としている。
【発明の効果】
【００２３】
本発明では、フラッシュメモリの読み書きの基本単位であるページの管理データとして、対応する論理アドレスとユーザデータの更新番号に加えて、そのユーザデータが最新のものであるか否かを示す更新フラグを設け、ユーザデータを書き換えたときには、旧ユーザデータの更新フラグをセットするようにしている。更に、半導体補助記憶装置に対する電源投入等の起動処理で、フラッシュメモリの各ページを順次読み出してアドレステーブルを作成するときに、更新フラグがセットされているページを無視し、更新フラグがセットされていないページの管理データに基づいてアドレステーブルを作成するようにしている。これにより、フラッシュメモリを記憶媒体として使用した半導体補助記憶装置において、アドレステーブルの作成にかかる起動時間を短縮することができるという効果がある。
【発明を実施するための最良の形態】
【００２４】
この発明の前記並びにその他の目的と新規な特徴は、次の好ましい実施例の説明を添付図面と照らし合わせて読むと、より完全に明らかになるであろう。但し、図面は、もっぱら解説のためのものであって、この発明の範囲を限定するものではない。
【実施例１】
【００２５】
図１は、本発明の実施例を示す半導体補助記憶装置の構成図である。
この半導体補助記憶装置１０は、従来の磁気ディスク装置等と同様に、大量のデータを保存するための補助記憶装置であり、図１（ａ）に示すように、主制御装置であるホストマシン１との間でＵＳＢ(Universal  serial  Bus)，ＩＤＥ(Integrated  Drive  Electronics)，ＳＡＴＡ(Serial  Advanced  Technology  Attachment)等の周辺機器接続用のバス２を介して接続されるようになっている。
【００２６】
半導体補助記憶装置１０は、ホストインタフェース部(Ｉ／Ｆ部)１１、バッファメモリ１２、制御手段であるマイクロプロセッサ１３、メモリ制御部１４、フラッシュメモリ１５、内部バス１６及びメモリバス１７で構成されている。
【００２７】
ホストインタフェース部１１は、バス２の所定のプロトコルに従ってホストマシン１との間のデータ転送を制御するものであり、バッファメモリ１２は、ホストマシン１との間で読み書きするデータを一時的に保存するメモリである。
【００２８】
マイクロプロセッサ１３は、処理の手順を示すプログラムが格納されたＲＯＭ１３ａと、論理アドレスと物理アドレスの対応付けを行うアドレステーブルを格納するＲＡＭ１３ｂを有している。マイクロプロセッサ１３は、電源投入等の起動時に、ＲＯＭ１３ａに格納された初期設定プログラムに従って、フラッシュメモリ１５を順次読み出してＲＡＭ１３ｂのアドレステーブルを生成する。
【００２９】
その後、マイクロプロセッサ１３は、ＲＯＭ１３ａの通常処理プログラムに従って、このアドレステーブルを使用して、ホストマシン１から与えられる論理アドレスと実際のフラッシュメモリ１５に割り当てられた物理アドレスとの対応付けを行うと共に、メモリ制御部１４に対して、該当する物理アドレスに対する書き込み、読み出し、消去等の指示を行うようになっている。
【００３０】
例えば、フラッシュメモリ１５に格納されているユーザデータを、ホストマシン１から与えられるユーザデータで書き換える場合、アドレステーブルを参照して未使用の物理アドレスを探し、その未使用のページに新しいユーザデータを書き込むと共に、古いユーザデータが格納されているページの管理データの更新フラグをセットし、更に、アドレステーブルの内容を更新するようになっている。
【００３１】
メモリ制御部１４は、マイクロプロセッサ１３からの指示に従って、フラッシュメモリ１５に対する書き込み、読み出し、消去の処理を行うものである。ホストインタフェース部１１、バッファメモリ１２、マイクロプロセッサ１３及びメモリ制御部１４は、内部バス１６を介して相互に接続され、メモリ制御部１４とフラッシュメモリ１５の間は、メモリバス１７を介して接続されている。
【００３２】
フラッシュメモリ１５は、大量のデータを保存するための補助記憶部で、必要とする記憶容量に応じて複数個が並列に接続できるようになっている。フラッシュメモリ１５は、連続する複数ページ（例えば、２ページまたは４ページ）を１つにまとめたチャンク単位でデータの書き込みと読み出しを行うと共に、連続する複数のチャンクで構成されるブロック単位で消去動作が行われるように構成されている。
【００３３】
図１（ｂ）は、マイクロプロセッサ１３内のＲＡＭ１３ｂに設けられたアドレステーブルの構成図である。アドレステーブルは、論理チャンク番号１〜Ｎの順番に構成され、各論理チャンクに対応する実際の物理チャンク番号が記録されるようになっている。
【００３４】
図１（ｃ）は、フラッシュメモリ１５上の１ページの構成図である。１ページは、５１２バイトのユーザデータと、１６バイトの管理データで構成されている。管理データは、ユーザデータに対する誤り訂正符号、このページに対応する論理チャンク番号、この論理チャンク番号に対応する更新番号及び更新フラグを有している。誤り訂正符号は、ユーザデータだけでなく論理チャンク番号と更新番号を含めたデータに対して付加される場合もある。なお、同一論理チャンクに属する２ページ以降の管理データには、論理チャンク番号、更新番号及び更新フラグは含まれない。
【００３５】
図４は、図１の半導体補助記憶装置の起動時の動作を示すフローチャートである。
この半導体補助記憶装置では、起動時にマイクロプロセッサ１３により、ＲＯＭ１３ａに格納された初期設定プログラムに従って次のような処理が行われる。
【００３６】
起動処理が開始されると、ステップＳ１１において、読み出すべき物理チャンク番号Ｉを０に設定すると共に、ＲＡＭ１３ｂ中のアドレステーブル内の情報を消去し、ステップＳ１２へ進む。ステップＳ１２において、物理チャンク番号Ｉが最後の物理チャンク番号Ｍを越えたか否かを判定する。ＩがＭ以下のときはステップＳ１３へ進み、ＩがＭを越えたときには起動処理を終了する。
【００３７】
ステップＳ１３では、フラッシュメモリ１７における物理チャンク番号Ｉの記憶内容を読み出し、その先頭ページの管理データから論理チャンク番号、更新番号及び更新フラグを抽出する。
【００３８】
ステップＳ１４において、ステップＳ１３で抽出した更新フラグが設定されている（データ“０”）か否かを判定し、設定されていればステップＳ１７へ進み、設定されていなければ(データ“１”であれば)ステップＳ１５へ進む。
【００３９】
ステップＳ１５において、ステップＳ１３で抽出した管理データ中の論理チャンク番号に対応するアドレステーブルを調べ、既に物理チャンク番号が登録されているか否かを調べる。そして、登録済みで且つその更新番号がステップＳ１３で抽出した更新番号よりも大きいときはステップＳ１７へ進み、そうでない場合はステップＳ１６へ進む。即ち、ステップＳ１３で抽出した管理データ中の論理チャンク番号に対応するアドレステーブルが未登録の場合と、登録されていても、その登録されている物理チャンクの内容が古い（更新番号が小さい）場合に、ステップＳ１６の処理が行われる。
【００４０】
ステップＳ１６では、ステップＳ１３で抽出した管理データで、アドレステーブルの該当する論理チャンク番号のデータ（物理チャンク番号）を書き換える。ステップＳ１６の後、ステップＳ１７へ進む。ステップＳ１７では、読み出すべき物理チャンク番号Ｉに１を加算し、ステップＳ１２へ戻る。
【００４１】
以上の起動処理により、フラッシュメモリ１５内のすべての物理チャンクが順次読み出され、各物理チャンクの最初のページの管理データが抽出され、抽出された管理データに基づいてＲＡＭ１３ｂ内のアドレステーブルが生成される。
【００４２】
その後の通常処理では、フラッシュメモリ１５に対する読み書き及び消去の制御は、このアドレステーブルを使用して行われる。
【００４３】
例えば、ホストマシン１から指定された論理チャンクにユーザデータを書き込む場合、アドレステーブルを参照して指定された論理チャンクが使用されているか否かを調べる。その論理チャンクが使用されていなければ、新規のユーザデータを書き込むことになる。この場合、未使用の物理チャンクを探し、その物理チャンクにユーザデータと共に、物理チャンク番号と更新番号（この場合は、０）の管理データを書き込む。このとき、更新フラグは書き込まない。即ち、更新フラグのデータは消去状態と同じ“１”となっている。更に、アドレステーブルの指定された論理チャンク番号に、対応する物理チャンク番号と更新番号を登録する。
【００４４】
指定された論理チャンクが既に使用されていれば、フラッシュメモリ１５に格納されているユーザデータを、与えられたユーザデータで書き換えることになる。この場合、アドレステーブルを参照して未使用の物理チャンクを探し、その未使用の物理チャンクに新しいユーザデータを書き込む。一方、古いユーザデータが格納されている物理チャンクの最初のページに更新フラグを書き込む。即ち、古いユーザデータが格納されている物理チャンクの更新フラグには、データ“０”が書き込まれる。更に、アドレステーブルの内容（該当する物理チャンクに対応する新しい物理チャンク番号）を更新する。
【００４５】
以上のように、本実施例の半導体補助記憶装置は、フラッシュメモリ上のユーザデータを更新するときに、古くなったページの管理データに更新フラグを書き込んでおき、起動処理時に更新フラグがセットされているページを、アドレステーブルの生成の対象から除外するようにしている。これにより、アドレステーブル生成にかかる起動時間を短縮することができるという利点がある。
【００４６】
なお、本発明は、上記実施例に限定されず、種々の変形が可能である。この変形例としては、例えば、次のようなものがある。
（ａ）  フラッシュメモリへの読み書きをチャンク単位に行っているが、ページ単位に行うようにしても良い。その場合、各ページに更新フラグ等の管理データを設ける必要がある。
（ｂ）  管理データ中の更新番号は、なくても良い。
（ｃ）  読み出しや消去の動作については特に説明していないが、従来通りの処理を行うことができる。
【図面の簡単な説明】
【００４７】
【図１】本発明の実施例を示す半導体補助記憶装置の構成図である。
【図２】従来のフラッシュディスク装置の構成図である。
【図３】図２のフラッシュディスク装置の起動時の動作を示すフローチャートである。
【図４】図１の半導体補助記憶装置の起動時の動作を示すフローチャートである。
【符号の説明】
【００４８】
１    ホストマシン
２    バス
１０    半導体補助記憶装置
１１    ホストインタフェース部
１２    バッファメモリ
１３    マイクロプロセッサ
１４    フラッシュメモリ制御部
１５    フラッシュメモリ
１６    内部バス
１７    メモリバス
【図１】
2009276883.tif 000003
【図２】
2009276883.tif 000004
【図３】
2009276883.tif 000005
【図４】
2009276883.tif 000006