(57)【要約】【課題】フラッシュメモリ（ＦＭ）を用いた外部記憶装置において、書込処理性能を落とさずに、書込セクタを管理する。【解決手段】ＦＭ３と制御部１０とを有し、上位装置６からのデータを記憶し、記憶したデータを読み出して装置６に転送する記憶装置１において、制御部１０は、装置６からの命令を受信しデータの送受信を行うＳＣＳＩ処理部１２と、データを一時的に蓄積するバッファメモリ（ＢＭ）１６，１７と、ＢＭ１６，１７とＦＭ３の間で転送指示によってデータ転送を行うメモリ処理部１３と、ＳＣＳＩ処理部１２が受信した命令を解読し転送指示を与えるＣＰＵ１１と、ＲＯＭ１８と、ＣＰＵ１１がプログラムを実行するときにワークエリアとしてデータを格納するＲＡＭ１９とを備え、ＦＭ３の書替回数をＲＡＭ１９とＦＭ３によって管理し、書替回数が規格値を超える場合に、ＦＭ３内の代替セクタに再割付けする。【選択図】　　　　図２
2004102539.tif 000002
【特許請求の範囲】
【請求項１】
消去可能なメモリと制御部とを有し、上位装置からの命令に基づいて、上位装置から転送されるデータを記憶し、かつ、記憶したデータを読み出して上位装置に転送する記憶装置において、
前記記憶装置の制御部は、
前記上位装置からの命令を受信し前記データの送受信を行う上位装置処理部と、前記データを一時的に蓄積するバッファメモリと、
前記バッファメモリと記憶手段としての消去可能なメモリの間で所定の転送指示によってデータ転送を行うメモリ処理部と、
前記上位装置処理部が受信した前記命令を解読し転送指示を与える中央処理装置と、
前記中央処理装置のプログラムを格納する第１のメモリと、
前記中央処理装置が前記プログラムを実行するときにワークエリアとしてデータを格納する第２のメモリとを備え、
前記消去可能なメモリの書替回数を前記第２のメモリと前記消去可能なメモリによって管理し、前記消去可能なメモリの書替回数の規格値を超える場合には、前記消去可能なメモリ内の代替セクタに再割付けする
ことを特徴とする記憶装置。
【請求項２】
前記記憶装置の制御部における前記バッファメモリは、第１のバッファメモリと第２のバッファメモリの２つのメモリから構成されると共に、
前記第１のバッファメモリと第２のバッファメモリに一時的に蓄積されたデータを比較するデータ比較処理部を備え、
前記上位装置から転送されたデータを消去可能なメモリに記憶する動作においては、前記データを一時的に蓄積する前記第１のバッファメモリに記憶された前記データと、前記消去可能なメモリに記憶された後読み出され前記第２のバッファメモリに一時的に蓄積されたデータを、前記データ比較処理部で比較し、
前記消去可能なメモリに記憶されたデータを前記上位装置へ転送する動作においては、消去可能なメモリに記憶されたデータとエラーコレクションコードによって、前記メモリ処理部においてデータ誤りを検出し、データ誤りを訂正することを特徴とする請求項１に記載の記憶装置。
【請求項３】
上位装置のインタフェースとしてスモールコンピュータシステムインタフェースを採用し、下位装置としてフラッシュメモリを採用したことを特徴とする請求項２に記載の記憶装置。
【請求項４】
上位装置のインタフェースとしてスモールコンピュータシステムインタフェースを採用し、下位装置としてフラッシュメモリを採用し、前記フラッシュメモリに書き込むデータのエラーコレクションコードと前記フラッシュメモリに書き込む書替回数データのエラーコレクションコードを分離したことを特徴とする請求項２に記載の記憶装置。
【請求項５】
上位装置のインタフェースとしてスモールコンピュータシステムインタフェースを採用し、下位装置としてフラッシュメモリを採用し、前記フラッシュメモリに書き込むデータと当該データを書き込むセクタの書替回数とを同一セクタに書き込むと共に、前記フラッシュメモリに書き込むデータのエラーコレクションコードと書替回数データのエラーコレクションコードを分離したことを特徴とする請求項２に記載の記憶装置。
【請求項６】
上位装置のインタフェースとしてスモールコンピュータシステムインタフェースを採用し、下位装置としてフラッシュメモリを採用し、前記フラッシュメモリの同一アクセス単位に書替回数データを含めたことを特徴とする請求項２に記載の記憶装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、制御システムにおける上位装置からの命令に従って上位装置から転送されてくるデータをフラッシュメモリに記憶したり、フラッシュメモリへ記憶したデータを読み出して上位装置に転送する外部億装置に関する。
【０００２】
【従来の技術】
データの記憶媒体としての不揮発性メモリとして、フラッシュタイプのフローティングゲートトランジスタを含む電気的消去可能なプログラマブルメモリが使われている。このフラッシュメモリは、メーカ出荷時に既に不良セクタとして存在している初期欠陥セクタ、書替えにより発生する不良セクタである後発不良セクタを有しており、さらに、書替を繰り返すことによるアクセス時間の増加に対応する書替回数寿命を有している。このため、フラッシュメモリの使用に当たっては、初期欠陥セクタ、後発不良セクタ、書替寿命となったセクタに対して、代替セクタへの再割付け処理が必要となる。
【０００３】
したがって、フラッシュメモリを使用して外部記憶装置を構成する場合には、書替回数が書替許容回数に達した場合を検出して、代替セクタに再割付けすることにより対処していた（例えば、特許文献１参照）。
【０００４】
【特許文献１】
特開平５‐２３４３９１号公報（図１、図２）
【０００５】
【発明が解決しようとする課題】
しかしながら、フラッシュメモリは、書替回数が増加するにつれにアクセス時間が増加する特性をもっていることから、上記のような従来の方式では、チップの書替回数の規格値を超えて同一セクタを使用していると、アクセス時間（セクタの消去時間および書き込み時間）が大きくなる。したがって、フラッシュメモリの書き込み処理性能が劣るという問題点があった。
【０００６】
本発明は、フラッシュメモリを用いた外部記憶装置において、書き込み処理性能を落とさずに、書き込みセクタを管理することを課題とする。
【０００７】
【課題を解決するための手段】
上記課題を解決するために、本発明は、フラッシュメモリを用いた記憶装置において、代替セクタへの再割付け処理を効率よく実施するために、以下のような対応を取る。
【０００８】
Ａ．各チップ内で発生した不良セクタなどの再割付け先を同一チップ内に設定すると共に管理テーブルも同一チップ内に設けることによって、管理テーブルの容量を小さくして、欠陥セクタ情報、不良セクタ情報および書替回数情報を管理する管理テーブルの検索を高速にする。
【０００９】
Ｂ．欠陥セクタと交替先アドレスを同一の管理テーブルで監視すると、検索論理が複雑となるので、欠陥セクタテーブルと交替先アドレステーブルを別々に設け、欠陥セクタに対応する交替先セクタを欠陥セクタテーブルに記述されたオフセット値で検索できるようにすることによって、交替先セクタの管理を単純化することができる。
【００１０】
Ｃ．管理テーブルにも欠陥セクタが発生するおそれがある。この場合、さらに上位の管理テーブルを設けて管理すると処理が複雑となる。このため、フラッシュメモリ常に同一の管理テーブルを４多重書きしておき、仮に４つのうち３つが欠陥セクタ発生により使用不可となったとしても、残り１つの管理テーブルにより動作継続できるようにすることによって、管理テーブルの欠陥発生に対処できるようにする。
【００１１】
Ｄ．通常の動作で参照する管理テーブルは、ＲＡＭ上に置き、電源投入時にフラッシュメモリの管理情報を読み出しＲＡＭ上に格納する。また、交替処理が発生した場合に、ＲＡＭ上の管理情報を書きかえるにあたって、４多重に書き込むようにする。このようにすることによって、通常のリード／ライトコマンドで、フラッシュメモリからその都度管理テーブルをリードして動作するときに要する処理時間を短縮することができる。
【００１２】
Ｅ．フラッシュメモリを書き替える場合には、当該セクタの書替回数を管理し、設定回数を超えた場合に交替セクタへ再書込みする。すなわち、電源投入時にフラッシュメモリの各セクタのコントロール領域に書き込んである当該セクタの書替回数を読み出し、ＲＡＭの書替回数情報テーブルに格納する。フラッシュメモリのデータと共にコントロール領域に更新した書替回数を書き込む。
【００１３】
上記課題を解決するために、この出願の第１の発明にかかる記憶装置は、上位装置からの命令に基づいて、上位装置から転送されるデータを記憶し、かつ、記憶したデータを読み出して上位装置に転送する記憶装置において、前記記憶装置の制御部は、前記上位装置からの命令を受信し前記データの送受信を行う上位装置処理部と、前記データを一時的に蓄積するバッファメモリと、前記バッファメモリと記憶手段としての消去可能なメモリの間で所定の転送指示によってデータ転送を行うメモリ処理部と、前記上位装置処理部が受信した前記命令を解読し転送指示を与える中央処理装置と、前記中央処理装置のプログラムを格納する第１のメモリと、前記中央処理装置が前記プログラムを実行するときにワークエリアとしてデータを格納する第２のメモリと前記消去可能なメモリによって管理し、前記消去可能なメモリ内の代替セクタに再割付することを特徴とする。
【００１４】
本発明によれば、消去可能なメモリの書替回数を管理し、メモリの書替回数の規格値を超える場合に代替エリアに再割付することによって消去可能なメモリのアクセス時間が大きくなる前に代替エリアに再割付することが可能となる。このことにより、消去可能なメモリの書き込み処理性能が劣ることを防止できる。
【００１５】
こ出願の第２の発明にかかる記憶装置は、第１の発明において、前記記憶装置の制御部における前記バッファメモリは、第１のバッファメモリと第２のバッファメモリの２つのメモリから構成されると共に、前記第１のバッファメモリと第２のバッファメモリに一時的に蓄積されたデータを比較するデータ比較処理部を備え、前記上位装置から転送されたデータを消去可能なメモリに記憶する動作においては、前記データを一時的に蓄積する前記第１のバッファメモリに記憶された前記データと、前記消去可能なメモリに記憶された後読み出され前記第２のバッファメモリに一時的に蓄積されたデータを、前記データ比較処理部で比較し、前記消去可能なメモリに記憶されたデータを前記上位装置へ転送する動作においては、消去可能なメモリに記憶されたデータとエラーコレクションコードによって、前記メモリ処理部においてデータ誤りを訂正したり、データ誤りを検出することを特徴とする。
【００１６】
本発明によれば、２つのバッファメモリに蓄積されたデータを比較し、またエラーコレクションコードによって、データ誤りを訂正したり、データ誤りを検出することによって、データの信頼性を向上することができる。
【００１７】
この出願の第３の発明にかかる記憶装置は、第２の発明において、上位装置のインタフェースとしてスモールコンピューターシステムインタフェースを採用し、下位装置としてフラッシュメモリを採用したことを特徴とする。
【００１８】
本発明によれば、上位装置に対してはスモールコンピュータシステムインタフェースをもった、フラッシュメモリによる記憶装置を得ることができる。
【００１９】
この出願の第４の発明にかかる記憶装置は、第２の発明において、上位装置のインタフェースとしてスモールコンピュータシステムインタフェースを採用し、下位装置としてフラッシュメモリを採用し、前記フラッシュメモリに書き込むデータのエラーコレクションコードと前記フラッシュメモリに書き込む書替回数データのエラーコレクションコードを分離したことを特徴とする。
【００２０】
本発明によれば、上位装置に対してはスモールコンピュータシステムインタフェースをもち、記憶装置の電源投入時に第２のメモリに書替回数データのテーブルを制作するため、フラッシュメモリより書替回数データを読み出す必要があるが、フラッシュメモリに書き込むデータのエラーコレクションコードと前記フラッシュメモリに書き込む書替回数データのエラーコレクションコードを分離したことにより高速に読み出すことができる。
【００２１】
この出願の第５の発明にかかる記憶装置は、第２の発明において、上位装置のインタフェースとしてスモールコンピュータシステムインタフェースを採用し、下位装置としてフラッシュメモリを採用し、前記フラッシュメモリの同一アクセス単位に書替回数データを含めたことを特徴とする。
【００２２】
本発明によれば、上位装置に対してはスモールコンピュータシステムインタフェースをもち、同一アクセス単位に書替回数を含めることにより、データおよびそのセクタの書替回数データの書替回数を同一にできる。
【００２３】
【発明の実施の形態】
以下、図を用いて、本発明にかかる記憶装置の構成の概要を説明する。図１は、本発明の実施形態を示すシステムの構成図である。図示するように、本実施形態にかかる外部記憶装置１は、システム７配下の外部記憶装置として上位装置６とスモールコンピュータシステムインタフェース（以下ＳＣＳＩと表記する）バス８で接続されている。この外部記憶装置１の内部には、ＳＣＳＩバス８に接続している制御手段である制御部１０と、メモリバス５を介して接続される記憶部（フラッシュメモリ部）３を備えて構成される。
【００２４】
ここで、外部記憶装置１として、セル構造がＮＡＮＤ形およびＡＮＤ形のフラッシュメモリを使用することによって、ハードディスクや光磁気ディスクと同様な機能を持たせることができる。
【００２５】
このＮＡＮＤ形およびＡＮＤ形のフラッシュメモリは、ハードディスクまたは光磁気ディスクに比較して、読み取り誤り率が低いという特性を有しているので、書き込み時に、データの他に誤り訂正符号（以下ＥＣＣと表記する）を付加して、フラッシュメモリのセクタに書き込むことができる。また、読み出し時には、データとＥＣＣを読み出し、演算して、データの誤りの有無を確認することができる。データが誤っていた場合には、データを訂正する機能が必須となる。
【００２６】
本発明においては、制御部１０が、読み出しデータの誤り検出機能および誤り訂正機能を構成している。さらに、制御部１０は、フラッシュメモリの各セクタの書替回数を管理し、書替回数が規定値を超えたときに、代替セクタへ書き替える機能を有している。
【００２７】
図２は、本発明の実施の形態にかかる記憶装置１の内部構成を示すブロック図である。図２を用いて、記憶装置１のより詳細な構成を説明する。
【００２８】
記憶装置１の制御部１０は、ＳＣＳＩバス８を介して上位装置６へ接続され、さらに記憶装置１の内部では、下位装置である記憶部３がメモリバス５を介して制御部１０へ接続されている。
【００２９】
制御部１０は、中央処理装置（以下ＣＰＵと略称する）１１と、ＳＣＳＩ処理部（上位装置処理部）１２と、メモリ処理部（下位装置処理部）１３と、ダイレクトメモリアクセス（以下ＤＭＡと略称する）処理部１４と、データ比較処理部１５と、バッファメモリＡ１６と，バッファメモリＢ１７と、第１のメモリ１８と、第２のメモリ１９と、ファーストインファーストアウト（以下ＦＩＦＯと略称する）メモリ部２０とから構成される。
【００３０】
ＰＵ１１と、ＳＣＳＩ処理部１２と、メモリ処理部１３と、ＤＭＡ処理部１４と、データ比較処理部１５と、第１のメモリ１８と、第２のメモリ１９は、ＣＰＵバスＢ１１を介して互いに接続される。また、ＳＣＳＩ処理部１２と、メモリ処理部１３と、ＤＭＡ処理部１４と、データ比較処理部１５と、バッファメモリＡ１６と，バッファメモリＢ１７とは、ＤＭＡバスＢ１２を介して互いに接続される。
【００３１】
ＣＰＵ１１は、記憶装置１を制御する手段であり、各種処理部によって後述する各種処理を実行する。
【００３２】
ＳＣＳＩ処理部１２は、ＣＰＵバスＢ１１を介してＣＰＵ１１と接続され、上位装置６からの命令を受信すると共に、上位装置６との間でデータの送受信を行う手段である。
【００３３】
メモリ処理部１３は、下位装置である記憶部３に対する命令を送信すると共に、記憶部３との間でデータの送受信を行う手段である。また、メモリ処理部１３は、記憶部３へのデータ書き込みをする際のＥＣＣデータ作成のための符号器と記憶部３からデータを読み出しする際のＥＣＣデータの復号器を有する。
【００３４】
ＤＭＡ処理部１４は、ＳＣＳＩ処理部１２とバッファメモリＡ１６またはバッファメモリＢ１７との間、あるいはメモリ処理部１３とバッファメモリＡ１６またはバッファメモリＢ１７との間で、ＤＭＡバスＢ１２を介してＣＰＵ１１の転送指示によりデータのＤＭＡ転送を行う手段である。
【００３５】
データ比較処理部１５は、バッファメモリＡ１６に蓄積されたデータとバッファメモリＢ１７に蓄積されたデータを比較し、両データの一致を見る手段である。
【００３６】
バッファメモリＡ１６またはバッファメモリＢ１７は、上位装置６と下位装置である記憶部３の間の転送データを一時的に蓄積する手段である。
【００３７】
第１のメモリ１８は、リードオンリーメモリ（以下ＲＯＭと略称する）から構成され、ＣＰＵ１１のプログラムや、フラッシュメモリのセクタの書替回数の限度を示す規格値などを格納する手段である。
【００３８】
第２のメモリ１９は、ランダムアクセスメモリ（以下ＲＡＭと略称する）から構成され、ワークエリア、記憶部３の欠陥（初期欠陥および、後発欠陥）情報テーブル、交替先セクタ情報テーブル、書替回数情報テーブルとして使用する。
【００３９】
ＦＩＦＯメモリ部２０は、ＥＣＣによる誤り訂正をする場合に訂正前のデータを一時格納する手段である。
【００４０】
図３は、記憶部３へデータを書き込む際のライトデータにＥＣＣ付加するライトデータ書込機能を説明する図であり、メモリ処理部１３の内部構成のデータ書込機能の一部を説明するブロック図である。
【００４１】
メモリ処理部１３のライトデータを処理するための機能は、書替回数を格納するレジスタＷ１３１と、データ／書替回数切替信号生成回路Ｗ１３２と、セレクタＷ１３３と、ＥＣＣ符号器Ｗ１３４と、ＥＣＣタイミング信号生成回路Ｗ１３５と、セレクタＷ１３６とを有して構成される。
【００４２】
書替回数を格納するレジスタＷ１３１は、フラッシュメモリ３におけるライトしようとするセクタの書替回数を格納する手段である。
【００４３】
データ／書替回数切替信号生成回路Ｗ１３２は、セレクタＷ１３３がライトデータまたは書替回数データを選択するデータ／書替回数切替信号ＳＷ１３２を生成する手段である。
【００４４】
セレクタＷ１３３は、ライトデータ（入力）Ｄ１６または書替回数レジスタＷ１３１からの書替回数データＤＷ１３１を、データ／書替回数切替信号ＳＷ１３２によって選択して出力する手段である。
【００４５】
ＥＣＣ符号器Ｗ１３４は、ライトデータＤ１６または書替回数データＤＷ１３１をＥＣＣ符号化する手段である。
【００４６】
ＥＣＣタイミング信号生成回路Ｗ１３５は、セレクタＷ１３６を制御するＥＣＣタイミング信号ＳＷ１３５を生成する手段である。
【００４７】
セレクタＷ１３６は、ＥＣＣ符号器Ｗ１３４またはセレクタＷ１３３からの出力データをＥＣＣタイミングＳＷ１３５によって切り替え、フラッシュメモリ３へのライトデータ（出力）Ｄ３１として出力する手段である。
【００４８】
この構成により、ライトデータまたは書替回数データは、ＥＣＣ符号化され、フラッシュメモリ３の所定のセクタに書き込まれる。
【００４９】
ここで、図３は、１ビットのみのライト機能構成を示しており、本実施例の場合には、８ビットのメモリバス５であるため、実際には８回路構成となる。
【００５０】
図４を用いて、ＥＣＣ符号器Ｗ１３４の構成の一例を説明する。本実施例におけるＥＣＣ符号器Ｗ１３４は、符号誤り訂正方式として、単一誤り訂正２重誤り検出（以下ＳＥＣ−ＤＥＤと略称する）ハミング符号を用いており、生成多項式は、下記（１）式を使用している。
【００５１】
【数１】
2004102539.tif 000003
【００５２】
ＥＣＣ符号器Ｗ１３４は、データのレジスタＷ１３４１−１〜Ｗ１３４１−１３と、エクスクルーシブオアＷ１３４２−１〜Ｗ１３４２‐７とを図示のように接続して構成される。
【００５３】
データ入力端子Ｗ１３４４からデータＩ（Ｘ）を入力することにより、エクスクルーシブオアＷ１３４１−７から、入力データに続きＥＣＣデータが出力される。
【００５４】
図５を用いて、メモリ処理部１３内部の記憶部３からデータを読み出す際にＥＣＣにより誤り訂正または誤り検出をするための機能構成を説明する。
【００５５】
メモリ処理部１３のリードデータを処理するための機能は、ＥＣＣタイミング生成回路Ｒ１３０と、ＡＮＤ回路Ｒ１３１と、ＦＩＦＯメモリ部２０と、ＥＣＣ復号器Ｒ１３２と、パリティ演算回路Ｒ１３３と、パターン検出回路Ｒ１３４と、エクスクルーシブオア回路Ｒ１３５と、セレクタＲ１３６と、ＡＮＤ回路Ｒ１３７‐１，Ｒ１３７‐２Ｒ１３７‐３と，ラッチ回路１３８‐１，１３８‐２，１３８‐３によって構成される。
【００５６】
ＥＣＣタイミング生成回路Ｒ１３０は、ＡＮＤ回路Ｒ１３１を制御するＥＣＣタイミング信号ＳＲ１３０を生成する手段である。
【００５７】
ＡＮＤ回路Ｒ１３１は、フレッシュメモリ３からのリードデータ（入力）Ｄ３２をＥＣＣタイミング信号ＳＲ１３０で有効にするか無効にするかを切り替える手段である。
【００５８】
ＦＩＦＯメモリ部２０は、ＥＣＣによる誤り訂正をする場合に訂正前のデータを一時格納する手段である。
【００５９】
ＥＣＣ復号器Ｒ１３２は、フラッシュメモリからのリードデータ（入力）Ｄ３２を復号化して出力する手段であり、ゼロ検出信号ＳＲ１３２を出力する手段である。
【００６０】
パリティ演算回路Ｒ１３３は、パリティエラーの検出を行う手段であり、ゼロ検出信号ＳＲ１３３を出力する手段である。
【００６１】
パターン検出回路Ｒ１３４は、データを訂正するための位置検出を行う手段である。
【００６２】
エクスクルーシブオア回路Ｒ１３５は、パターン検出回路Ｒ１３４の出力に基づいてＦＩＦＯ２０に格納されたデータの誤り訂正を行う手段である。
【００６３】
セレクタＲ１３６は、リードデータ（入力）Ｄ３２または、エクスクルーシブオア回路Ｒ１３５の出力データをエラー訂正指示ＳＲ１３６によって切り替え、リードデータ（出力）Ｄ１３６としてバッファメモリＡ１６またはバッファメモリＢ１７へ出力する手段である。
【００６４】
ＡＮＤ回路Ｒ１３７‐１およびラッチ回路１３８‐１は、ＥＣＣ復号器Ｒ１３２のゼロ検出有り信号［ＳＲ１３２］とパリティ演算回路Ｒ１３３のゼロ検出有り信号［ＳＲ１３３］のＡＮＤ条件により、ラッチ回路Ｒ１３８−１へＥＣＣエンドタイミングＳ１３８−１によりラッチし、エラー発生有無の判定を行い、エラー発生信号ＳＥ１３８−１を出力する手段である。
【００６５】
ＡＮＤ回路Ｒ１３７‐２およびラッチ回路Ｒ１３８−２は、ＥＣＣ復号器Ｒ１３２のゼロ検出無し信号ＳＲ１３２とパリティ演算回路Ｒ１３３のゼロ検出無し信号ＳＲ１３３のＡＮＤ条件により、ラッチ回路Ｒ１３８−２へＥＣＣエンドタイミングＳ１３８−２によりラッチし、１ビットエラー発生有無の判定を行い、１ビットエラー発生信号ＳＥ１３８‐２を出力する手段である。
【００６６】
ＡＮＤ回路Ｒ１３７‐３およびラッチ回路１３８−３は、ＥＣＣ復号器Ｒ１３２のゼロ検出無し信号ＳＲ１３２とパリティ演算回路Ｒ１３３のゼロ検出有り信号［ＳＲ１３３］のＡＮＤ条件により、ラッチ回路１３８−３へＥＣＣエンドタイミングＳ１３８−３によりラッチし、２ビットエラー発生有無の判定を行い、２ビットエラー発生信号ＳＥ１３８‐３を出力する手段である。
【００６７】
なお、図５は１ビットのみの構成を示しており、本実施例の場合には、８ビットのメモリバス５であるため、８回路構成となる。
【００６８】
図６を用いて、ＥＣＣ復号器Ｒ１３２に関連するＥＣＣ復号手段の構成の一例を説明する。ＥＣＣ復号器Ｒ１３２は、符号誤り訂正方式として、ＥＣＣ符号器Ｗ１３４と同様にＳＥＣ−ＤＥＤハミング符号を用いている。ＥＣＣ復号手段は、シンドローム計算レジスタＲ１３２と、シンドロームパターン検出回路Ｒ１３４と、バッファレジスタ（ＦＩＦＯ）２０と、誤り訂正回路Ｒ１３５とを有して構成される。
【００６９】
メモリバス５からのデータＹ（Ｘ）は、ＥＣＣ復号器（シンドローム計算レジスタ）Ｒ１３２で演算され、バッファレジスタ（ＦＩＦＯ）２０に一時蓄積されたリードデータ（入力）（Ｙ（Ｘ））Ｄ３２に対し、シンドロームパターン検出回路Ｒ１３４によってデータの誤り位置が検出され、誤り訂正回路Ｒ１３５にて訂正され、データＣ（Ｘ）が出力される。
【００７０】
図７を用いて、フラッシュメモリ３の物理フォーマットの例を説明する。フラッシュメモリ３は、チップアドレス単位に、第１の管理領域３５、ユーザ領域３６、交替領域３７、第２の管理領域３８が設けられる。第１の管理領域３５は、欠陥情報テーブルおよび交替先セクタ情報テーブルが格納される。ユーザー領域３６は、図８に示すデータ割付けでライトデータ、ライトデータのＥＣＣデータ、書替回数データ、書替回数データのＥＣＣデータが格納される。交替領域３７は、欠陥セクタに対応して設定される交替セクタ領域である。管理領域３８は、管理領域３５と同じテーブルが格納され、管理領域の二重化を図っているものである。管理領域３５に障害があった場合、管理領域３８を利用する。
【００７１】
図８を用いて、記憶部３に使用するフラッシュメモリチップのデータ割付構成の一例を説明する。図８は、フラッシュメモリチップ３のチップ構成３０は、１セクタあたり２０４８バイトのデータ領域３１と６４バイトのコントロール領域３２に分かれており、セクタアドレス００００Ｈから３ＦＦＦＨまでの１６３８４セクタのチップ容量がある。
【００７２】
また、コントロール領域６２は、カラムアドレス８００Ｈ〜８３ＦＨを分割することによって、データ領域３１の２０４８バイトのＥＣＣデータ３２１（１３バイト）、空き３２２（３４バイト）、該当セクタの書替回数３２３（４バイト）、および書き換え回数３２３のＥＣＣデータ３２４（１３バイト）で構成される。
【００７３】
データ領域３１のＥＣＣデータ３２１と書替回数のＥＣＣデータ３２４を分離させているのは、本実施例における記憶装置の電源投入時に、ＲＡＭ１９上に書き換え回数情報テーブルを作り直す必要があり、そのためには、記憶部３の全フラッシュメモリチップの全セクタアドレスの書替回数を読み出さなければならないからである。
【００７４】
すなわち、ＥＣＣデータ数がデータ領域と書替回数の双方を
含んで１個で記述されることを想定した場合、データ領域の２０４８バイトおよび書替回数の４バイトならびにＥＣＣデータの１３バイトの合計２０６５バイトを読み出す必要がある。
【００７５】
一方、ＥＣＣデータを、データ領域３１に格納されるライトデータとコントロール領域３２に格納される書替回数に対応して分離することにより、ライトデータのＥＣＣデータ３２４の１３バイトと書替回数３２３の４バイトとの合計１７バイトを読み出すだけでよく、１７／２０６５＝１／１２１となり、電源投入時の処理時間の大幅な短縮になる。また、同一セクタのコントロール領域３２に書替回数を含めることにより、データ領域３１とコン音ロール領域３２の書替回数３２３の書替回数を同一にできる。
【００７６】
しかしながら、フラッシュメモリ内に専用の管理テーブルを設けこの管理テーブルによる書替回数を管理する場合には、データ領域３１の書替回数に対し、管理テーブルの書替回数が非常に多くなり、管理テーブルの書き替えによる寿命が極端に早くなってしまう。本発明によればこのような問題を回避できる。
【００７７】
上記のようにフラッシュメモリの書替回数を管理し、チップの書替回数の規格値を超える場合には、代替セクタに再割付することによって、フラッシュメモリのアクセス時間が大きくなる前に代替セクタに再割付が可能となる。このことにより、フラッシュメモリの書き込み処理性能が時間を経るにしたがって劣化することを防止できる。
【００７８】
上位装置６とＳＣＳＩ処理部１２とを接続しているＳＣＳＩバス８のインタフェースは、８ビットのデータ線と１ビットのパリティビットおよび、ＢＳＹ、ＡＴＮ等の制御線を持ち、動作フェーズとしては、バスフリー、セレクション、メッセージアウト、コマンド、データインまたはデータアウト、ステータス、メッセージイン、バスフリーの７段階で遷移する。
【００７９】
図９と図１０は、リード転送処理のシーケンスチャートであり、図９と図１０に従って、フラッシュメモリ部３から上位装置６へデータを読み出す、リード転送処理を説明する。
【００８０】
上位装置６には複数の記憶装置１が接続されている場合があるので、セレクション動作が必要になる。即ち、上位装置６は、バスフリーフェーズにおいて所望の記憶装置１と接続するために上位装置６のＳＣＳＩ−ＩＤ番号（例えば２の７乗ビット＝１）と記憶装置１のＳＣＳＩ−ＩＤ番号（例えば２の０乗ビット＝１）をＳＣＳＩバス８に乗せ、セレクション動作を実行する（ステップＳ１）。
【００８１】
これに対し、ＳＣＳＩ処理部１２は、ＳＣＳＩバス８の制御線のうち、ＢＳＹ＝１として応答するとともに、割込信号としてＣＰＵ１１に通知する（ステップＳ２）。
【００８２】
ＣＰＵ１１は、ＳＣＳＩ処理部１２に対し、メッセージアウト行動を行う（ステップＳ３）。ＳＣＳＩ処理部１２は、上位装置６へメッセージアウトを通知する（ステップＳ４）。
【００８３】
上位装置６は、上記のセレクションフェーズ完了後に記憶装置１のロジカルユニット番号０と接続を設定するため、ステップＳ１において、ＳＣＳＩバス８の制御線のうち、ＡＴＮ＝１としてＳＣＳＩ処理部１２に対しメッセージアウトフェーズへの遷移を要求する。
【００８４】
ＳＣＳＩ処理部１２が、メッセージアウトフェーズに遷移する（ステップＳ４）と、上位装置６は、ＳＣＳＩバス８にメッセージを乗せて送信する（ステップＳ５）。ＳＣＳＩ処理部１２は、メッセージを受信すると、割込信号としてＣＰＵ１１に知らせる（ステップＳ６）。送信したメッセージデータをＳＣＳＩ処理部１２で受信し、ＣＰＵ１１はメッセージを受け取る。
【００８５】
ＣＰＵ１１は、ＳＣＳＩ処理部１２に対し、コマンド起動を行う（ステップＳ７）。メッセージアウトフェーズは終了し、ＳＣＳＩ処理部１２は次のコマンドフェーズに遷移させる（ステップＳ８）。
【００８６】
コマンドフェーズになると、上位装置６は、フラッシュメモリ部３からデータを読み出すために、オペレーションコードとしてＲｅａｄ　Ｅｘｔｅｎｄｅｄコマンドを含むコマンドバイトをＳＣＳＩ処理部１２に送信する（ステップＳ９）。
【００８７】
ＳＣＳＩ処理部１２でのコマンドバイトの受信完了を、割込信号でＣＰＵ１１へ知らせ（ステップＳ１０）、ＣＰＵ１１は、ＳＣＳＩ処理部１２からコマンドを読み出す（ステップＳ１１）。
【００８８】
この受信したコマンドバイトの中には、前記オペレーションコード、先頭ロジカルブロックアドレス（以下ＬＢＡと略称する）、および転送ＬＢＡ数が含まれる。
【００８９】
ここで、受信したコマンドバイトはＳＣＳＩインタフェースに基づいているので、ＣＰＵ１１は、予め第１のメモリであるＲＯＭ１８上に作成してある計算結果（データテーブル）を元に、受信した先頭ＬＢＡと転送ＬＢＡ数を、下位装置であるフラッシュメモリ部３の先頭セクタと転送セクタ数に変換し、フラッシュメモリ部３に対するコマンド群として、第２のメモリであるＲＡＭ１９上にコマンドテーブルとして登録する。
【００９０】
ＣＰＵ１１は、前記コマンドテーブルを元に、メモリ処理部１３に対し、リード起動を行う（ステップＳ１２）。メモリ処理部１３は、フラッシュメモリ部３に対し、リードコマンド、先頭セクタ、および転送バイト数をライトする（ステップＳ１３）。
【００９１】
これによって、フラッシュメモリ部３がリード動作を開始する。フラッシュメモリ部３のデータ転送の準備が整うと、フラッシュメモリ部３は、ＲＤＹ／−ＢＳＹ信号の変化をメモリ処理部１３に知らせる（ステップＳ１４）。また、ＣＰＵ１１へは、割込信号で知らせる（ステップＳ１５）。
【００９２】
フラッシュメモリ部３のデータ転送の準備が整うと、ＣＰＵ１１は、データ転送を開始するため、ＤＭＡ処理部１４に対してはＤＭＡ設定と起動を行い（ステップＳ１６）、メモリ処理部１３に対してもＤＭＡ設定と起動を行う（ステップＳ１７）。
【００９３】
フラッシュメモリ部３のリードデータは、メモリバス５、メモリ処理部１３、およびＤＭＡ処理部１４を経てバッファメモリＡ１６へＤＭＡデータ転送（リード）される（ステップＳ１８）。データ転送後の動作終了確認は、ＤＭＡ処理部１４が割込信号によりＣＰＵ１１に知らせる（ステップＳ１９）。
【００９４】
次に、ステップＳ１２からステップＳ１９と同じ処理を、転送量に合わせてＮ回実施し、Ｎセクタ分のデータをバッファメモリＡ１６に読み出す。
【００９５】
次に、ＣＰＵ１１は、データインフェーズでのデータ転送に備え、ＳＣＳＩ処理部１２に対し、ＤＭＡ設定と起動を行い（ステップＳ２０）、ＳＣＳＩ処理部１２にデータイン起動を指示することにより（ステップＳ２１）、ＳＣＳＩ処理部１２は次のデータインフェーズに遷移する（ステップＳ２２）。
【００９６】
ＣＰＵ１１は、データインフェーズでのデータ転送に備え、ＤＭＡ処理部１４に対しＤＭＡ設定と起動を行う（ステップＳ２３）。
【００９７】
バッファメモリＡ１６に一時蓄積されたリードデータは、ＤＭＡ処理部１４、ＳＣＳＩ処理部１２、およびＳＣＳＩバス８を経て上位装置６へＤＭＡデータ転送（リード）される（ステップＳ２４）。
【００９８】
データ転送後の動作終了確認は、ＳＣＳＩ処理部１２が割込信号でＣＰＵ１１へ知らせる（ステップＳ２５）。
【００９９】
データ転送（リード）終了後、ＣＰＵ１１がＳＣＳＩ処理部１２に対してステータス起動を行う（ステップ２６）と、ＳＣＳＩ処理部１２は、ステータスフェーズに遷移する（ステップＳ２７）。
【０１００】
ステータスフェーズになると、上位装置６は、ＳＣＳＩ処理部１２よりステータス（ＧＯＯＤ）をリードする（ステップＳ２８）。上位装置６がステータスをリードすると、ＳＣＳＩ処理部１２は割込信号でステータスのリード処理の完了をＣＰＵ１１へ知らせる（ステップＳ２９）。
【０１０１】
上記ステータスフェーズ処理が終了後、ＣＰＵ１１がＳＣＳＩ処理部１２に対しメッセージイン起動を行う（ステップＳ３０）と、ＳＣＳＩ処理部１２は、メッセージインフェーズに遷移する（ステップＳ３１）。
【０１０２】
メッセージインフェーズになると、上位装置６がＳＣＳＩ処理部１２より前記リードコマンドの完了メッセージをリードすると（ステップＳ３２）、ＳＣＳＩ処理部１２は、ＳＣＳＩバス８の信号線を開放し、バスフリーフェーズになる。
【０１０３】
メッセージインフェーズの動作終了確認は、ＳＣＳＩ処理部１２が割込信号でＣＰＵ１１へ知らせることにより行い（ステップＳ３３）、リード動作が終了する。
【０１０４】
次に、ライト転送処理部のシーケンスチャートである図１１と図１２を用いて、上位装置６からフラッシュメモリ部３へデータを書き込む、ライト転送処理動作を説明する。
【０１０５】
リード動作と同様に、上位装置６は、バスフリーフェーズにおいて記憶装置１と接続するために、上位装置６のＳＣＳＩ−ＩＤ番号（例えば２の７乗ビット＝１）と記憶装置１のＳＣＳＩ−ＩＤ番号（たとえば２の０乗ビット＝１）をＳＣＳＩバス８に乗せ、セレクション動作を実行する（ステップＳ４１）。
【０１０６】
これに対し、ＳＣＳＩ処理部１２は、ＳＣＳＩバス８の制御線のうち、ＢＳＹ＝１として応答し、割込信号としてＣＰＵ１１に知らせる（ステップＳ４２）。
【０１０７】
ＣＰＵ１１は、ＳＣＳＩ処理部１２に対し、メッセージアウト起動を行う（ステップＳ４３）。
【０１０８】
上記のセレクションフェーズ完了後、上位装置６は、記憶装置１のロジカルユニット番号０と接続を設定するために、ステップＳ４１において、ＳＣＳＩバス８制御線のうち、ＡＴＮ＝１としてＳＣＳＩ処理部１２に対しメッセージアウトフェーズへの遷移を要求する。
【０１０９】
ＳＣＳＩ処理部１２がメッセージアウトフェーズに遷移する（ステップＳ４４）と、上位装置６は、ＳＣＳＩバス８にメッセージを乗せて送信する（ステップＳ４５）。ＳＣＳＩ処理部１２は、メッセージ受信を割込信号としてＣＰＵ１１に知らせる（ステップＳ４６）。送信したメッセージデータをＳＣＳＩ処理部１２で受信し、ＣＰＵ１１はメッセージを受け取る。
【０１１０】
ＣＰＵ１１は、ＳＣＳＩ処理部１２に対し、コマンド起動を行う（ステップＳ４７）。メッセージアウトフェーズは終了し、ＳＣＳＩ処理部１２は次のコマンドフェーズに遷移させる（ステップＳ４８）。
【０１１１】
コマンドフェーズになると、フラッシュメモリ部３へデータを書き込むために、上位装置６は、オペレーションコードとしてＷｒｉｔｅ　Ｅｘｔｅｎｄｅｄコマンドを含むコマンドバイトをＳＣＳＩ処理部１２に送信する（ステップＳ４９）。
【０１１２】
ＳＣＳＩ処理部１２でのコマンドバイトの受信完了を、割込信号でＣＰＵ１１へ知らせ（ステップＳ５０）、コマンドバイとの受信完了を知ったＣＰＵ１１は、ＳＣＳＩ処理部１２からコマンドを読み出す（ステップＳ５１）。
【０１１３】
受信したコマンドバイトの中には、前記オペレーションコード、先頭ＬＢＡ、および転送ＬＢＡ数が含まれる。ここで受信したコマンドバイトは、ＳＣＳＩインターフェースに基づいているので、ＣＰＵ１１は予め第１のメモリであるＲＯＭ１８上に作成してある計算結果（データテーブル）を元に、受信した先頭ＬＢＡと転送ＬＢＡ数を、下位装置であるフラッシュメモリ部３の先頭セクタと転送セクタ数に変換し、フラッシュメモリ部３に対するコマンド群として、第２のメモリであるＲＡＭ１９上にコマンドテーブルとして登録する（処理Ａ）。
【０１１４】
ＣＰＵ１１におけるこの処理Ａを、図１３を用いて説明する。ＣＰＵ１１は、上位装置６からの指定ＬＢＡからチップアドレス、セクタアドレス、カラムアドレスを算出する（ステップＡ１）。ＣＰＵ１１は、指定ＬＢＡから対応する欠陥情報テーブル（図１４（Ａ））を検索する（ステップＡ２）。
【０１１５】
図１４（Ａ）に示すように、欠陥情報テーブルは、チップアドレス単位でセクタアドレス０〜ＦＦＦ用として形成され、ＲＡＭアドレスとＲＡＭアドレスに対応するデータから構成される。例えばチップアドレス０の欠陥情報テーブルは、ＲＡＭアドレス１００００００にフラグとこの欠陥情報テーブル内の欠陥セクタ数が記述され、ＲＡＭアドレス１０００００２、１０００００４…に、それぞれ摘出した欠陥セクタアドレスが記述されている。
【０１１６】
ＣＰＵ１１は、該当する欠陥情報テーブルに欠陥セクタ数が記述されているか否かを判断する（ステップＡ３）。欠陥セクタ数が記述されているときには、ステップＡ１で算出したセクタアドレスと欠陥情報テーブルに記述された摘出した欠陥セクタアドレスとを比較する（ステップＡ４）。算出したセクタアドレスが欠陥セクタアドレスに該当するか否かを判断し（ステップＡ５）、該当するときには、欠陥情報テーブルの摘出した欠陥セクタアドレスに対応する索引番号から、図１４（Ｂ）に示す交替先アドレス情報テーブルを索引して、テーブルに設定されている交替セクタアドレスをアクセス（ライト）するセクタアドレスに設定する（ステップＡ６）。
【０１１７】
図１４（Ｂ）に示すように、交替先セクタ情報テーブルは、チップアドレス単位でセクタアドレス０〜ＦＦＦ用として形成され、ＲＡＭアドレスとＲＡＭアドレスに対応するデータから構成される。例えばチップアドレス０の欠陥情報テーブルは、ＲＡＭアドレス１０６４０００にフラグとこの交替先セクタ情報テーブル内の交替セクタ数が記述され、ＲＡＭアドレス１０６４００２、１０６４００４…に、それぞれ交替セクタアドレスが記述されている。
【０１１８】
次に、ＣＰＵ１１は、チップアドレスによって図１４（Ｃ）に示す書替回数情報テーブルから該当するセクタの書替回数を抽出して更新した後、メモリ処理部１３のレジスタＷ１３１の書替回数に設定する（ステップＡ７）。
【０１１９】
図１４（Ｃ）に示すように、書替回数情報テーブルは、チップアドレス単位でセクタアドレス０〜ＦＦＦ用として形成され、ＲＡＭアドレスとＲＡＭアドレスに対応するデータから構成される。例えばチップアドレス０の欠陥情報テーブルは、ＲＡＭアドレス１０Ｄ００００および１０Ｄ０００２、１０Ｄ０００４および１０Ｄ０００６、…に、それぞれセクタアドレス毎の書替回数が記述されている。
【０１２０】
その後該当するセクタアドレスにアクセスしてライトデータをライトする（ステップＡ８）。
【０１２１】
ＣＰＵ１１は、前記コマンドテーブルを元に、メモリ処理部１３に対し、フラッシュメモリ部３にデータを書き込むために、予め該当エリアをイレーズしておく。即ち、メモリ処理部１３に対してイレーズ起動を行う（ステップＳ５２）。
【０１２２】
メモリ処理部１３は、フラッシュメモリ部３に対し、イレーズコマンド、イレーズ先頭セクタをライトする（ステップＳ５３）。
【０１２３】
これによって、フラッシュメモリ部３はイレーズ動作を開始する。
【０１２４】
ここで、ＣＰＵ１１は、イレーズ処理時間の短縮のため、次の該当エリアをイレーズする。
【０１２５】
即ち、ＣＰＵ１１は、メモリ処理部１３に対してイレーズ起動を行う（ステップＳ２１４）。
【０１２６】
メモリ処理部１３は、フラッシュメモリ部３に対し、イレーズコマンド、イレーズ先頭セクタをライトする（ステップＳ５５）。
【０１２７】
これによって、フラッシュメモリ部３は次の該当セクタイレーズ動作を開始する。
【０１２８】
この様にして、ステップＳ５２からステップＳ５５の処理について、最大８チップ分のイレーズ動作回数である８回実施して、該当エリアをイレーズする。
【０１２９】
この間、ＣＰＵ１１は、データアウトフェーズでのデータ転送に備えて、ＤＭＡ処理部１４に対してはＤＭＡ設定と起動を行い（ステップＳ５６）、ＳＣＳＩ処理部１２に対してもＤＭＡ設定と起動を行い（ステップＳ５７）、ＳＣＳＩ処理部１２にデータアウト起動を指示することにより（ステップＳ５８）、ＳＣＳＩ処理部１２は次のデータアウトフェーズに遷移する（ステップＳ５９）。
【０１３０】
イレーズコマンドの動作終了確認は、次のように行われる。即ち、フラッシュメモリ部３が、ＲＤＹ／−ＢＳＹ信号の状態をメモリ処理部１３に知らせた（ステップＳ６０）内容が、ＣＰＵ１１がメモリ処理部１３にステータス確認動作をすることによって（ステップＳ６１）、ステータスとしてリードされ（ステップＳ６２）、動作完了のステータスが確認される。
【０１３１】
上記の確認動作について、イレーズ起動したフラッシュメモリ部３の全セクタの動作確認のステータスを確認する（ステップＳ６３、ステップＳ６５）。上位装置６からのデータ転送の準備が整うと、上位装置６のライトデータは、ＳＣＳＩバス８、ＳＣＳＩ処理部１２、およびＤＭＡ処理部１４を経てバッファメモリＡ１６へＤＭＡデータ転送（ライト）される（ステップＳ６２）。
【０１３２】
データ転送後の動作終了確認は、ＳＣＳＩ処理部１２が割込信号でＣＰＵ１１へ知らせることにより行う（ステップＳ６４）。
【０１３３】
ＣＰＵ１１は、前記コマンドテーブルを元に、メモリ処理部１３に対し、ライト起動を行う（ステップＳ６６）。メモリ処理部１３は、フラッシュメモリ部３に対し、プログラムコマンド、先頭セクタ、および転送バイト数をライトする（ステップＳ６７）。
【０１３４】
これによって、フラッシュメモリ部３はライト動作を開始する。
【０１３５】
ＣＰＵ１１は、データ転送を開始するため、メモリ処理部１３に対してＤＭＡ設定と起動を行い（ステップＳ６８）、ＤＭＡ処理部１４に対してもＤＭＡ設定と起動を行う（ステップＳ６９）。
【０１３６】
バッファメモリＡ１６に一時蓄積されたライトデータは、ＤＭＡ処理部１４、メモリ処理部１３、およびメモリバス５を経てフラッシュメモリ部３へＤＭＡデータ転送（ライト）される（ステップＳ７０）。
【０１３７】
データ転送後の動作終了確認は次のように行われる。即ち、フラッシュメモリ部３のライト動作終了は、ＲＤＹ／−ＢＳＹ信号の変化をメモリ処理部１３に知らせる。また、ＣＰＵ１１へは、割込み信号で知らせる（ステップＳ７１）。
【０１３８】
ＣＰＵ１１１は、上位セクタ書き込み終了後、書替回数を情報テーブルの書替回数を更新する（処理Ｂ：図１３ステップＢ１）。
【０１３９】
ＣＰＵ１１は、前記コマンドテーブルを元に、メモリ処理部１３に対し、リード起動を行う（ステップＳ７２）。メモリ処理部１３は、フラッシュメモリ部３に対し、リードコマンド、先頭セクタ、および転送バイト数をライトする（ステップＳ７３）。
【０１４０】
これによって、フラッシュメモリ部３はリード動作を開始する。フラッシュメモリ部３のデータ転送の準備が整うと、フラッシュメモリ部３は、ＲＤＹ／−ＢＳＹ信号の変化をメモリ処理部１３に知らせる。また、ＣＰＵ１１へは、割込信号で知らせる（ステップＳ７４）。
【０１４１】
フラッシュメモリ部３のデータ転送の準備が整うと、ＣＰＵ１１は、データ転送を開始するため、ＤＭＡ処理部１４に対してＤＭＡ設定と起動を行い（ステップＳ７５）、メモリ処理部１３に対してもＤＭＡ設定と起動を行う（ステップＳ７６）。
【０１４２】
フラッシュメモリ部３のリードデータは、メモリバス５、メモリ処理部１３、およびＤＭＡ処理部１４を経てバッファメモリＢ１７へＤＭＡデータ転送（リード）される（ステップＳ７７）。データ転送後の動作終了確認は、ＤＭＡ処理部１４が割込信号によりＣＰＵ１１に知らせる（ステップＳ７８）。
【０１４３】
ここで、フラッシュメモリ部３に書き込んだライトデータ保証をするため、上位装置６より書き込まれたバッファメモリＡ１６のデータとフラッシュメモリ部３に書き込まれ、バッファメモリＢ１７に再度読み出されたデータをコンペアする。
【０１４４】
すなわち、ＣＰＵ１１は、データ比較処理部１５にコンペア設定と起動の指示をすることにより（ステップＳ７９）、データ比較処理部１５がバッファメモリＡ１６とバッファメモリＢ１７から同時にデータを読み出し、データをコンペアする（ステップＳ８０、ステップＳ８１）。
【０１４５】
データ比較処理部１５は、コンペア処理の完了を割込信号でＣＰＵ１１へ知らせ（ステップＳ８２）、ＣＰＵ１１がステータス確認を行うことによって、正常性を判断しコンペア処理が終了する。
【０１４６】
次に、ステップＳ６６からステップＳ８２と同じ処理を、転送量に合わせてＮ回実施し、Ｎセクタ分のデータをバッファメモリＡ１６からフラッシュメモリ部３に書き込む。
【０１４７】
コンペア終了後、ＣＰＵ１１がＳＣＳＩ処理部１２に対しステータス起動を行う（ステップＳ８３）と、ＳＣＳＩ処理部１２はステータスフェーズに遷移する（ステップＳ８４）。
【０１４８】
ステータスフェーズになると、上位装置６は、ＳＣＳＩ処理部１２からステータス（ＧＯＯＤ）をリードする（ステップＳ８５）。上位装置６がステータスをリードすると、ＳＣＳＩ処理部１２は、割込信号でステータスのリード処理の完了をＣＰＵ１１へ知らせる（ステップＳ８６）。
【０１４９】
上記ステータスフェーズ処理が終了後、ＣＰＵ１１がＳＣＳＩ処理部１２に対しメッセージイン起動を行う（ステップＳ８７）と、ＳＣＳＩ処理部１２は、メッセージインフェーズに遷移する（ステップＳ８８）。
【０１５０】
メッセージインフェーズになると、上位装置６がＳＣＳＩ処理部１２から前記ライトコマンドの完了メッセージをリードすると（ステップＳ８９）、ＳＣＳＩ処理部１２は、ＳＣＳＩバス８の信号線を開放し、バスフリーフェーズになる。
【０１５１】
メッセージインフェーズの動作終了確認は、ＳＣＳＩ処理部１２が割込信号でＣＰＵ１１へ知らせることにより行い（ステップＳ９０）、リード動作が終了する。以上、本発明の一実施形態について説明した。
【０１５２】
本実施の形態においては、上位装置とのインタフェースにＳＣＳＩインタフェースを、下位装置とのインタフェースにフラッシュメモリのインタフェースを仮定したが、本発明はこの様なインタフェースに限定されるものではなく、どのようなインタフェースの組み合わせであってもよい。
【０１５３】
また、本実施の形態においては、下位装置として専用のフラッシュメモリボードを用いたが、標準のＰＣ−ＡＴＡカードにすることもできる。
【発明の効果】
本発明によれば、フラッシュメモリの書替回数を管理し、チップの書替回数の規格値を超える場合に代替セクタに再び割り付けすることによってフラッシュメモリのアクセス時間が大きくなる前に代替セクタに再割り付けることが可能となる。このことにより、フラッシュメモリの書き込み処理性能が劣ることを防止できる。
【図面の簡単な説明】
【図１】本発明の実施の形態におけるシステムの構成図。
【図２】本発明にかかる記憶装置の制御部のブロック構成図。
【図３】データの書き込み時のライトデータ（データ＋ＥＣＣ）を作成するためのメモリ処理部の内部ブロック構成図。
【図４】ＥＣＣ符号器のブロック構成図。
【図５】データの読み出し時にＥＣＣにより誤り検出または誤り訂正をするためのメモリ処理部のブロック構成図。
【図６】ＥＣＣ復号器のブロック構成図。
【図７】フラッシュメモリの物理フォーマットを説明する図。
【図８】フラッシュメモリチップのデータ割付構成図。
【図９】リード転送処理におけるシーケンスチャート（その１）。
【図１０】リード転送処理におけるシーケンスチャート（その２）。
【図１１】ライト転送処理におけるシーケンスチャート（その１）。
【図１２】ライト転送処理におけるシーケンスチャート（その２）。
【図１３】ライト転送処理におけるＣＰＵの処理Ａおよび処理Ｂのフローチャート。
【図１４】欠陥情報テーブル、交替先セクタ情報テーブル、書替回数情報テーブルの構成を説明する図。
【符号の説明】
１　記憶装置
１０　制御部
１１　ＣＰＵ
１２　ＳＣＳＩ処理部
１３　メモリ処理部
Ｒ１３０　ＥＣＣタイミング生成回路
Ｒ１３１　アンド回路
Ｒ１３２　ＥＣＣ復号器
Ｒ１３３　パリティ演算回路
Ｒ１３４　パターン検出回路
Ｒ１３５　エクスクルージブオア回路
Ｒ１３６　切替回路
Ｒ１３７　アンド回路
Ｒ１３８　ラッチ回路
Ｗ１３１　レジスタ
Ｗ１３２　データ／書替回数切替信号発生回路
Ｗ１３３　データ／書替回数切替回路
Ｗ１３４　ＥＣＣ符号器
Ｗ１３５　ＥＣＣタイミング生成回路
Ｗ１３６　切替回路
１４　ＤＭＡ処理部
１５　データ比較処理部
１６　バッファメモリＡ
１７　バッファメモリＢ
１８　ＲＯＭ
１９　ＲＡＭ
２０　ＦＩＦＯメモリ部
Ｂ１１　ＣＰＵバス
Ｂ１２　ＤＭＡバス
３　記憶部（フラッシュメモリ部）
５　メモリバス
６　上位装置
７　システム
８　ＳＣＳＩバス
【図１】
2004102539.tif 000004
【図２】
2004102539.tif 000005
【図３】
2004102539.tif 000006
【図４】
2004102539.tif 000007
【図５】
2004102539.tif 000008
【図６】
2004102539.tif 000009
【図７】
2004102539.tif 000010
【図８】
2004102539.tif 000011
【図９】
2004102539.tif 000012
【図１０】
2004102539.tif 000013
【図１１】
2004102539.tif 000014
【図１２】
2004102539.tif 000015
【図１３】
2004102539.tif 000016
【図１４】
2004102539.tif 000017