JP4700562B2 - データ記憶装置およびデータ記憶方法 - Google Patents

データ記憶装置およびデータ記憶方法 Download PDF

Info

Publication number
JP4700562B2
JP4700562B2 JP2006138780A JP2006138780A JP4700562B2 JP 4700562 B2 JP4700562 B2 JP 4700562B2 JP 2006138780 A JP2006138780 A JP 2006138780A JP 2006138780 A JP2006138780 A JP 2006138780A JP 4700562 B2 JP4700562 B2 JP 4700562B2
Authority
JP
Japan
Prior art keywords
data
storage unit
address
storage
storage device
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2006138780A
Other languages
English (en)
Other versions
JP2007310636A (ja
Inventor
昇 河合
忠史 荒川
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Buffalo Inc
Original Assignee
Buffalo Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority to JP2006138780A priority Critical patent/JP4700562B2/ja
Application filed by Buffalo Inc filed Critical Buffalo Inc
Priority to CN2007800181467A priority patent/CN101449234B/zh
Priority to EP07743724A priority patent/EP2031492B1/en
Priority to PCT/JP2007/060289 priority patent/WO2007136018A1/ja
Priority to US12/300,906 priority patent/US8136015B2/en
Priority to AT07743724T priority patent/ATE521030T1/de
Priority to TW096117402A priority patent/TW200821909A/zh
Publication of JP2007310636A publication Critical patent/JP2007310636A/ja
Application granted granted Critical
Publication of JP4700562B2 publication Critical patent/JP4700562B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Quality & Reliability (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)
  • Communication Control (AREA)
  • Read Only Memory (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、コンピュータ等のホスト装置から転送されるデータを記憶する技術に関する。
近年、ハードディスクドライブやフラッシュメモリといった記憶デバイスを複数組み合わせてデータを記録することにより、記録したデータの信頼性を高める技術が種々提案されている(下記特許文献1参照)。例えば、ミラーリングと呼ばれる技術では、物理的あるいは論理的に分離された2つの記憶領域に対して同一内容のデータの書き込みを行うことにより、1つの記憶領域に障害が発生しても、もう1つの記憶領域によってシステムを稼働し続けることが可能となる。
特開2000−207137号公報
しかし、ミラーリングでは、2つの記憶領域に同一内容のデータを書き込むため、実質的な記憶容量が半減してしまうという問題があった。
このような問題を考慮し、本発明が解決しようとする課題は、複数の記憶領域を用いてデータを記憶するにあたり、データの信頼性を向上させつつ、本来の記憶容量を有効に利用可能とすることにある。
上記課題を踏まえ、本発明を次のように構成した。すなわち、
ホスト装置から転送されたデータを記憶するデータ記憶装置であって、
所定の記憶領域を有する第1の記憶部と、
所定の記憶領域を有する第2の記憶部と、
少なくとも前記第1の記憶部の使用領域を監視する監視手段と、
前記ホスト装置から前記データが転送された場合において、前記監視手段を用いて前記第1の記憶部の記憶領域が残存していると判断した場合に、前記転送されたデータを前記第1の記憶部に書き込むとともに、前記転送されたデータを補正するための補正用データを前記第2の記憶部に書き込み、前記第1の記憶部の記憶領域が残存していないと判断した場合に、前記第2の記憶部に既に記憶された前記補正用データを前記第2の記憶部の最終アドレスから逆行して消去しつつ、該消去された領域に前記最終アドレスから逆行して前記転送されたデータを書き込む書込制御手段と
を備えることを要旨とする。
本発明のデータ記憶装置によれば、第1の記憶部の記憶領域が残存していれば、ホスト装置から転送されたデータを第1の記憶部に書き込み、そのデータを補正するためのデータを第2の記憶部に書き込む。そのため、仮に、第1の記憶部に記憶されたデータが何らかの原因で損傷したとしても、第2の記憶部に書き込まれた補正用データを用いることで、これを補正することができる。
更に、本発明のデータ記憶装置では、第1の記憶部の記憶領域が残存していなければ、第2の記憶部に書き込まれていた補正用データを消去しつつ、この第2の記憶部にもホスト装置から転送されたデータを書き込む。そのため、第1の記憶部と第2の記憶部の記憶容量を有効に利用することが可能になる。すなわち、本発明によれば、データの信頼性向上と記憶容量の有効利用との調整を図り、機能的なデータ記憶装置を提供することが可能になる。なお、第1の記憶部と第2の記憶部とは、物理的に分離された記憶デバイスであるものとしてもよいし、1つの記憶デバイス内の記憶領域が論理的に分離されて形成されているものとしてもよい。
上記構成のデータ記憶装置において、
前記書込制御手段は、前記補正用データとして、前記ホスト装置から転送されたデータに基づき誤り訂正符号を生成する符号化手段を備えるものとしてもよい。
このような構成によれば、第2の記憶部に記憶された誤り訂正符号を用いて、第1の記憶部に記憶されたデータを容易に訂正することが可能になる。誤り訂正符号は、例えば、ハミング符号化やサイクリック符号化、リードソロモン符号化などの種々の符号化技術を利用して生成することができる。誤り訂正符号は、一般的に、ECCデータと呼ばれる。
上記構成のデータ記憶装置において、
前記符号化手段は、前記ホスト装置から転送されたデータと同じビット数、またはそれよりも少ないビット数の誤り訂正符号を生成するものとしてもよい。
このような構成において、ホスト装置から転送されたデータと同じビット数の誤り訂正符号を生成するものとすれば、ホストから転送されたデータと、このデータから生成された補正用データとが同じデータ長となるため、これらを第1の記憶部と第2の記憶部の同一アドレスに記憶させることができ、アドレス管理を容易に行うことが可能になる。また、ホスト装置から転送されたデータよりも少ないビット数の誤り訂正符号を生成するものとすれば、第2の記憶部に記憶させる補正用データの容量を削減することができる。
上記構成のデータ記憶装置において、
前記書込制御手段は、前記補正用データとして、前記ホスト装置から転送されたデータと同一のデータ、または、前記ホスト装置から転送されたデータを構成する各ビットを反転させたデータを生成する手段を備えるものとしてもよい。
このような構成によれば、補正用データとして、ホスト装置から転送されたデータと同一のデータ、または、ホスト装置から転送されたデータを構成する各ビットを反転させたデータを生成するため、補正用データの生成が容易となり処理負担が軽減される。また、データの読み出し時にエラーのチェックを行う際にも、単純に、両データを比較すればよいため、処理の負担が軽減され、処理速度の低下を防ぐことができる。
上記構成のデータ記憶装置において、
前記書込制御手段は、前記ホスト装置から転送されたデータを前記第2の記憶部に書き込む際に、前記第1の記憶部の物理的な最終アドレスと、前記第2の記憶部の物理的な最終アドレスとを結合した仮想的なアドレス空間に従って、前記第2の記憶部へデータの書き込みを行うものとしてもよい。
このような構成によれば、第2の記憶部に通常のデータを書き込む動作状態において、第1の記憶部と第2の記憶部の記憶領域をそれぞれ区別することなくシームレスにアドレスを指定することが可能になる。
上記構成のデータ記憶装置において、
更に、前記ホスト装置からデータの読み出し要求を受けた場合において、該読み出し要求を受けたデータの記憶先が、前記第1の記憶部であり、かつ、該データから生成された補正用データが前記第2の記憶部に存在する場合に、該データを前記第1の記憶部から読み込むとともに、該補正用データを前記第2の記憶部から読み込み、該補正用データに基づき該データを補正して前記ホスト装置に該データを転送する読込制御手段を備えるものとしてもよい。
このような構成によれば、第1の記憶部に記憶されたデータと、第2の記憶部に記憶された補正用データに基づき、ホスト装置から読み込み要求を受けたデータについてエラーのチェックや訂正を行うことができるので、データの信頼性を向上させることができる。
上記構成のデータ記憶装置において、
前記読込制御手段は、前記読み出し要求を受けたデータの記憶先が、前記第1の記憶部であり、かつ、該データから生成された補正用データが前記第2の記憶部に存在しない場合に、該データを前記第1の記憶部から読み込み、該データをそのまま前記ホスト装置に転送する手段を備えるものとしてもよい。
このような構成によれば、第2の記憶部に記憶されていた補正用データが既に消去されてしまっている場合においても、第1の記憶部から適切にデータを読み出して、ホスト装置に転送することができる。
上記構成のデータ記憶装置において、
前記読込制御手段は、前記読み出し要求を受けたデータの記憶先が、前記第2の記憶部であり、かつ、該第2の記憶部の通常のデータが記録されている領域である場合に、該データを該第2の記憶部から読み込み、該データをそのまま前記ホスト装置に転送する手段を備えるものとしてもよい。
このような構成によれば、第2の記憶部に通常のデータを記憶する動作状態において、第2の記憶部から適切にデータを読み出して、ホスト装置に転送することができる。
上記構成のデータ記憶装置において、
前記読込制御手段は、前記読み出し要求を受けたデータの記憶先が、前記第2の記憶部の前記補正用データが記憶されている領域である場合に、前記第2の記憶部からデータの読み込みを行うことなく、所定のデータをダミーデータとして前記ホスト装置に転送する手段を備えるものとしてもよい。
第2の記憶部に通常のデータを書き込む動作状態では、第2の記憶部の補正用データが記憶されている領域は、本来、ホスト装置からは空領域であると認識される領域である。従って、上記構成により、このような領域からデータを読み込む場合に所定のデータをダミーデータとしてホスト装置に転送したとしても、ホスト装置は、その領域が無効データであると認識しているはずである。ダミーデータとしては、例えば、16進数で、「00」や「FF」、「55」、「AA」などを表すデータとすることができる。
上記構成のデータ記憶装置において、
前記書込制御手段は、前記ホストから転送されたデータを、前記第2の記憶部に書き込んだ場合に、該データの書き込まれた最大アドレスを示すアドレスポインタを記憶し、
前記読込制御手段は、前記アドレスポインタに基づき、前記読み出し要求を受けたデータに対応する補正用データが前記第2の記憶部に記憶されているか否か、または、前記読み出し要求を受けたデータの記憶先が、前記第2の記憶部の前記補正用データが記憶されている領域であるか否かを判断するものとしてもよい。
このような構成によれば、第2の記憶部内の通常のデータが記憶されている領域と補正用データが記憶されている領域とを、上述したアドレスポインタによって明確に判別することが可能になる。従って、このアドレスポインタを用いれば、読み出し要求を受けたデータに対応する補正用データが第2の記憶部に記憶されている否か、あるいは、読み出し要求を受けたデータの記憶先が、第2の記憶部の補正用データが記憶されている領域であるか否か、といった判断を容易に行うことが可能になる。
また、上記構成のデータ記憶装置において、
前記書込制御手段は、前記ホストから転送されたデータを、前記第2の記憶部に書き込んだ場合に、該第2の記憶部の個々のアドレスについて、データを書き込んだか否かを示す所定のテーブルを記憶し、
前記読込制御手段は、前記テーブルに基づき、前記読み出し要求を受けたデータに対応する補正用データが前記第2の記憶部に記憶されているか否か、または、前記読み出し要求を受けたデータの記憶先が、前記第2の記憶部の前記補正用データが記憶されている領域であるか否かを判断するものとしてもよい。
かかる構成のように、第2の記憶部の個々のアドレスについて、データを書き込んだか否かを示す所定のテーブルを用いることによっても、上述した種々の判断を容易に行うことが可能になる。
上記構成のデータ記憶装置において、
前記第1の記憶部の記憶領域が残存していない場合であっても、所定の設定操作に応じて、前記書込制御手段に対して前記第2の記憶部への通常のデータの書き込みを制限する設定手段を備えるものとしてもよい。
このような構成によれば、第2の記憶部への通常のデータの書き込みを任意に制限することができるので、ユーザの利便性を向上させることができる。このような設定操作は、データ記憶装置に設けた物理的なスイッチや、データ記憶装置と接続されたホスト上で稼働するアプリケーションによって行うものとすることができる。
上記構成のデータ記憶装置において、
前記第1の記憶部と前記第2の記憶部とは、同一の記憶容量を有するものとしてもよい。
このような構成によれば、第1の記憶部と第2の記憶部とのアドレスを一対一に対応させてデータと補正用データとを記憶させることができるので、アドレス管理を容易に行うことができる。また、このような構成では、第1および第2の記憶部として、同一種類のデバイスを採用することができるので、製造コストを軽減することが可能になる。なお、第1の記憶部と第2の記憶部とは、必ずしも同一容量とする必要はなく、第2の記憶部を第1の記憶部よりも大きな記憶容量としてもよい。また、補正用データのデータ長が、ホストから転送されたデータのデータ長よりも短ければ、第2の記憶部の容量を第1の記憶部より少なくすることが可能である。
上記構成のデータ記憶装置において、
前記データは、前記ホスト装置からUSBインタフェースを介して転送されるものとしてもよい。
このような構成であれば、コンピュータ等のホスト装置に用意されたUSBポートに本発明のデータ記憶装置を接続するだけで、容易に本発明のデータ記憶装置を利用することができる。そのため、ユーザの利便性を向上させることができる。
上記構成のデータ記憶装置において、
前記第1の記憶部および前記第2の記憶部は、不揮発性の半導体メモリであるものとすることができる。不揮発性の半導体メモリとしては、例えば、NAND型やNOR型の各種フラッシュメモリ、EEPROM、バッテリバックアップされたDRAM等を利用することができる。
このような構成によれば、携帯性に優れた小型のデータ記憶装置を提供することができる。なお、第1および第2の記憶部としては、半導体メモリ以外にも、例えば、ハードディスクドライブや、書き換え可能な光ディスクなどを採用することができる。また、第1の記憶部と第2の記憶部とで、全く異なる種類のデバイスを採用することも可能である。
なお、本発明は、上述したデータ記憶装置としての構成のほか、次のようなデータ記憶方法としても構成することができる。すなわち、
所定の記憶領域を有する第1の記憶部と第2の記憶部とを備えるデータ記憶装置がホスト装置から転送されたデータを記憶する方法であって、
前記第1の記憶部の使用領域を監視し、
前記ホスト装置から前記データが転送された場合において、前記監視の結果、前記第1の記憶部の記憶領域が残存していると判断した場合に、該データを前記第1の記憶部に書き込むとともに、該データを補正するための補正用データを前記第2の記憶部に書き込み、
前記第1の記憶部の記憶領域が残存していないと判断した場合に、前記第2の記憶部に既に記憶された前記補正用データを消去しつつ該データを、該第2の記憶部に書き込むデータ記憶方法である。
このようなデータ記憶方法によっても、上述した種々の効果と同様の効果を奏することができる。
以下、上述した本発明の作用・効果を一層明らかにするため、本発明の実施の形態を実施例に基づき次の順序で説明する。
A.データ記憶装置の概略構成:
B.データ記憶装置の動作の概要:
C.各種処理:
(C1)メイン処理:
(C2)ポインタ設定処理:
(C3)ライト処理:
(C4)リード処理:
D.効果:
E.変形例:
A.データ記憶装置の概略構成:
図1は、実施例としてのデータ記憶装置10の概略構成を示す説明図である。図示するように、本実施例のデータ記憶装置10は、内部にフラッシュメモリを2つ備えている(第1フラッシュメモリFL1と第2フラッシュメモリFL2)。フラッシュメモリの種別としては、例えば、NAND型のフラッシュメモリやNOR型のフラッシュメモリを利用することができる。
データ記憶装置10は、通常の動作時には、第1フラッシュメモリFL1に対してデータを書き込み、第2フラッシュメモリFL2に対しては、第1フラッシュメモリFL1に書き込んだデータを補正するためのECCデータを書き込む機能を備えている。このような動作状態のことを、以下では、「データ保障モード」という。また、データ記憶装置10は、第1フラッシュメモリFL1の残容量がゼロになると、第2フラッシュメモリFL2に対して既に書き込まれたECCデータを消去しながら、この第2フラッシュメモリFL2にも通常のデータを書き込む機能を備えている。以下では、このような動作状態のことを「容量優先モード」という。
図1に示すように、本実施例のデータ記憶装置10は、USBコネクタ110とUSB制御回路120とフラッシュコントローラ130と第1フラッシュメモリFL1と第2フラッシュメモリFL2とによって構成されている。
USBコネクタ110は、データ記憶装置10の筐体(図中の破線部分)から露出して設けられており、パーソナルコンピュータやプリンタ等のホスト機器(以下、単に「ホスト」と呼ぶ)に備えられたUSBインタフェースに接続される。
USB制御回路120は、USBコネクタ110とフラッシュコントローラ130とに接続されている。USB制御回路120は、当該データ記憶装置10をUSBマスストレージクラスのデバイスとして動作させる回路であり、USBプロトコルに基づきホストとの通信を制御する回路である。このUSB制御回路120は、更に、ホストから受信したUSBコマンドをATAコマンドやSCSIコマンドに変換したり、フラッシュコントローラ130から受信したステータス信号やデータをUSBコマンドに変換する機能を備える。ATAコマンドとは、ANSI(American National Standard Institute)によって標準化されたコマンドであり、本実施例のデータ記憶装置10の他、ハードディスクやPCカード型メモリ等の種々のデータ記憶装置に対してデータの読み書きを制御するための汎用的なコマンドである。SCSIコマンドは、ATAコマンドよりも汎用性が高く、ハードディスク等の記憶装置のほか、スキャナ等も制御可能なコマンドである。
フラッシュコントローラ130は、USB制御回路120から転送されたATAコマンド(あるいはSCSIコマンド)を解釈し、バススイッチ150を介して接続された第1フラッシュメモリFL1や第2フラッシュメモリFL2に対するデータの読み書きを制御する集積回路である。フラッシュコントローラ130は、かかる制御を行うために、内部にCPUやROM、RAM等を備えている。このROMには、データ記憶装置10の動作を制御するためのプログラムが記録されている。CPUは、RAMをワークエリアとして用いつつ、このプログラムを実行することで、データ記憶装置10の全般的な動作を制御する。
フラッシュコントローラ130は、アドレス変換回路140とバススイッチ150とを備えている。アドレス変換回路140は、2つのフラッシュメモリのデータ記憶領域を連続的にアクセス可能な仮想的なアドレスを、第1フラッシュメモリFL1もしくは第2フラッシュメモリFL2の実アドレスに変換する回路である。かかるアドレス変換には、レジスタ145に記憶されたアドレスポインタの値が用いられる。上述したように、本実施例のデータ記憶装置10は、データ保障モードと容量優先モードという2種類の動作状態があり、このうち、容量優先モードでは、第2フラッシュメモリFL2に対しても通常のデータを書き込む。そこで、フラッシュコントローラ130は、2つのフラッシュメモリのデータ記憶領域を連続的にアクセス可能な仮想的なアドレスを使用し、アドレス変換回路140が、この仮想的なアドレスを各フラッシュメモリの実アドレスに変換する。こうすることで、フラッシュコントローラ130は、フラッシュメモリの種別を考慮することなく、データの読み書きを行うことが可能となる。
バススイッチ150は、フラッシュコントローラ130と第1フラッシュメモリFL1と第2フラッシュメモリFL2とに接続されている。バススイッチ150は、フラッシュコントローラ130から出力されたコマンド(ライトコマンドやリードコマンド)やアクセス先のフラッシュメモリのアドレスに基づき、データの入出力先となるフラッシュメモリの切り換えを行う。このバススイッチ150は、内部にECCエンコーダ160とECCデコーダ170と、ダミーデータ出力回路180とを備えている。
ECCエンコーダ160は、データ保障モード時において、ホストから書き込み指示のあったデータをハミング符号化してECCデータを生成する回路である。生成されたECCデータは、第2フラッシュメモリFL2に書き込まれる。本実施例では、1バイトのデータに対して、1バイトのECCデータを生成する。なお、ECCデータは、ハミング符号化以外にも、サイクリック符号化やリードソロモン符号化などの他の符号化技術によって生成するものとしてもよい
一方、ECCデコーダ170は、データ保障モードあるいは容量優先モード時において、第2フラッシュメモリFL2から読み出したECCデータを、第1フラッシュメモリFL1から読み出した通常のデータに基づきデコードし、読み出したデータのエラーチェックと補正を行うための回路である。
ダミーデータ出力回路180は、容量優先モード時において、ホストが、第2フラッシュメモリFL2内のECCデータ(正確には、第1フラッシュメモリFL1内のデータを補正するためのECCデータ)が記録されている領域からデータを読み出そうとした場合に、ダミーデータ(例えば、「00」)を出力する回路である。このダミーデータ出力回路180の動作の詳細については後述する。
バススイッチ150は、データ記憶装置10の動作状態に応じて、上述したECCエンコーダ160とECCデコーダ170とダミーデータ出力回路180と第1フラッシュメモリFL1と第2フラッシュメモリFL2との接続状態を変更する。かかる変更の態様は後述する種々の処理の説明の中で併せて説明する。
B.データ記憶装置の動作の概要:
図2は、データ保障モード時のデータ記憶装置10の内部メモリマップを示す説明図である。図の左側には、第1フラッシュメモリFL1がFAT形式によりフォーマットされ、1つのパーティションが形成されている例を示している。
FAT形式のフォーマットでは、第1フラッシュメモリFL1の記憶領域は、管理領域MAとユーザデータ領域DAとに分離される。管理領域MAは、マスタブートレコード(以下、「MBR領域」という)や、バイオスパラメータブロック(以下、「BPB領域」という)、FAT1、FAT2、ルートディレクトリなどと呼ばれる領域によって構成される。FATのデータ構造は周知のため、以下ではこれらの各領域について簡単に説明する。
MBR領域は、ホストが接続された場合に、最初に読み込まれる領域である。このマスタブートレコードには、ブートストラップコードやパーティションテーブルなどが記録されている。パーティションテーブルには、生成されているパーティションの数や、各パーティションの開始セクタおよび終了セクタ、オフセット、総セクタ数などの情報が記録されている。
BPB領域は、各パーティションの先頭セクタに記録されており、そのパーティションのフォーマット形式やセクタ数、FATの数などが記録されている。
FAT1およびFAT2には、ユーザデータ領域DAに記録された各ファイルを構成するクラスタチェーンの情報が記録されている。FAT1とFAT2には、同一の情報が記録される。
ルートディレクトリには、ルートにあるファイルのファイル名や拡張子、属性、そのファイルを構成する最初のクラスタ番号等が記録されている。
図2の右側に示すように、データ保障モード時には、第2フラッシュメモリFL2には、第1フラッシュメモリFL1に書き込まれたデータからECCエンコーダ160によって生成されたECCデータが記録される。上述したように、本実施例では、1バイトのデータに対して、1バイトのECCデータを生成するものとしたため、第1フラッシュメモリFL1と第2フラッシュメモリFL2のアドレスは1対1で対応している。つまり、第1フラッシュメモリFL1のあるアドレスに記録されたデータに対応するECCデータは、第2フラッシュメモリFL2の同一のアドレスに記録される。
データ保障モード時において、データ記憶装置10は、ホストからデータの書き込み指示があれば、第1フラッシュメモリFL1のユーザデータ領域DAが残存する限り、そのデータを、第1フラッシュメモリFL1のユーザデータ領域DAの下位アドレスに向かって書き込む。そして、そのデータから生成されたECCデータが、第2フラッシュメモリFL2の同一のアドレスに書き込まれる。一方、ホストからデータの読み出し指示があれば、第1フラッシュメモリFL1の指定されたアドレスからデータを読み出すとともに、第2フラッシュメモリFL2の同一アドレスからECCデータを読み出し、ECCデコーダ170によってエラーのチェックやデータの補正を行う。
図3は、容量優先モード時のデータ記憶装置10の内部メモリマップを示す説明図である。図示するように、第1フラッシュメモリFL1のユーザデータ領域DAの残領域がゼロになり、データ記憶装置10の動作状態が、データ保障モードから容量優先モードに切り替わると、データ記憶装置10は、ホストから書き込み指示のあったデータを、第2フラッシュメモリFL2のユーザデータ領域DAに、最終アドレスBnから逆行して書き込む。このとき、書き込み先にECCデータが存在していた場合には、そのECCデータを消去した上で、データの書き込みを行う。この容量優先モード時においては、データ記憶装置10は、ECCデータの生成は行わない。
データ記憶装置10が容量優先モードで動作している場合、第2フラッシュメモリFL2のユーザデータ領域DAには、データ保障モード時に書き込まれたECCデータを記憶する領域と、動作状態が容量優先モードに切り替わった後に書き込まれた通常のデータを記憶する領域との2種類の領域が存在する。そこで、データ記憶装置10は、この2種類の領域の境界を弁別するために、その境界のアドレスを示すアドレスポインタAP3を用意して、これをレジスタ145に記憶している。このアドレスポインタAP3は、第2フラッシュメモリFL2に順次データが書き込まれると、第2フラッシュメモリFL2の最終アドレスBnから、そのユーザデータ領域DAの先頭アドレスB5に向けて移動することになる。
データ記憶装置10は、容量優先モード時であっても、第2フラッシュメモリFL2のECCデータが残存している領域に対応するデータを第1フラッシュメモリFL1から読み込む場合には、データ保障モード時と同様に、ECCデータを用いたデータの補正やエラーチェックを行うことができる。そこで、データ記憶装置10は、第1フラッシュメモリFL1内のかかる領域を弁別するため、第2フラッシュメモリFL2のアドレスポインタAP3に対応する第1フラッシュメモリFL1のアドレスを、アドレスポインタAP2としてレジスタ145に記憶している。このアドレスポインタAP2は、第2フラッシュメモリFL2に順次データが書き込まれると、第1フラッシュメモリFL1の最終アドレスAnから、ユーザデータ領域DAの先頭アドレスA5に向けて移動することになる。
このアドレスポインタAP2は、フラッシュコントローラ130が、第1フラッシュメモリFL1の記憶領域が残存しているか否かを判断する際にも用いられる。つまり、フラッシュコントローラ130は、このアドレスポインタAP2を監視し、アドレスポインタAP2が第1フラッシュメモリFL1の最終アドレスAnを示していれば、第1フラッシュメモリFL1の記憶容量が残存していると判断することができる。そのため、この場合には、第1フラッシュメモリFL1に対してデータの書き込みを行う。一方、最終アドレスAnよりも低いアドレスを示していれば、第1フラッシュメモリFL1の記憶容量が残存していないと判断することができる。この場合、フラッシュコントローラ130は、第2フラッシュメモリFL2に対してデータの書き込みを行うことになる。
更に、データ記憶装置10は、第1フラッシュメモリFL1の管理領域MAとユーザデータ領域DAの境界を弁別するため、その境界のアドレスを示すアドレスポインタAP1を用意して、これをレジスタ145に記憶している。後述するライト処理やリード処理では、上述したアドレスポインタAP1〜AP3を用いることで、データの読み書き先となるフラッシュメモリの判別やECCデータの生成の有無の判断等が行われる。
図4は、フラッシュコントローラ130が用いる仮想アドレスと、ホストから認識可能なアドレス空間とを示す説明図である。図示するように、データ記憶装置10は、動作状態が容量優先モードに切り替わると、第1フラッシュメモリFL1の最終実アドレスAnと第2フラッシュメモリFL2の最終実アドレスBnとが接続されて1つの記憶領域を有するものとして動作する。この場合、第1フラッシュメモリFL1の最終実アドレスは、「An」であるため、第2フラッシュメモリFL2の最終実アドレスBnは、仮想アドレスとして「An+1」となる。また、第1フラッシュメモリFL1と第2フラッシュメモリFL2とは同一容量であるため、第2フラッシュメモリFL2のユーザデータ領域DAの先頭実アドレスB5は、仮想アドレスとして「2An−AP1」となる。つまり、容量優先モードにおいては、アドレス変換回路140の働きにより、ホストからはデータ記憶装置10の実アドレスとして、仮想アドレスA0から仮想アドレス(2An−AP1)までが認識され、この連続した領域がシームレスにアクセス可能となる。なお、仮想アドレスA0〜Anのアドレス値は、第1フラッシュメモリFL1の実アドレスと同一のアドレス値(A0〜An)である。
C.各種処理:
(C1)メイン処理:
図5は、データ記憶装置10が実行するメイン処理のフローチャートである。この処理は、データ記憶装置10がホストに接続されて電源が供給されたと同時にフラッシュコントローラ130が実行を開始する処理である。
この処理が開始されると、まず、フラッシュコントローラ130は、2つのフラッシュメモリに既に記憶されたデータの位置に基づいて、アドレスポインタAP1〜AP3の値を設定するためのポインタ設定処理を行う(ステップS10)。このポインタ設定処理の詳細については後述する。
続いて、フラッシュコントローラ130は、USBコネクタ110およびUSB制御回路120を介して、ホストから何らかのコマンドを受信したか否かを判断する(ステップS20)。コマンドを受信していない場合には(ステップS20:No)、この処理をループすることでコマンドを受信するまで待機する。一方、コマンドを受信した場合には(ステップS20:Yes)、そのコマンドの種類を判別する(ステップS30)。
上記ステップS30において、受信したコマンドが、データの書き込みを行うライトコマンドであると判断されれば(ステップS30:「ライト」)、フラッシュコントローラ130は、後述するライト処理を行う(ステップS40)。一方、受信したコマンドが、データの読み込みを行うリードコマンドであると判断されれば(ステップS30:「リード」)、後述するリード処理を行う(ステップS50)。そして、これらの処理が完了すれば、処理を上記ステップS20に戻す。以上で説明したメイン処理によれば、電源供給がストップされるまで、ホストから受信したコマンドに応じた処理がなされることになる。
(C2)ポインタ設定処理:
図6は、上述したメイン処理のステップS10で実行されるポインタ設定処理のフローチャートである。このポインタ設定処理は、2つのフラッシュメモリに既に記憶されたデータの位置に基づいて、アドレスポインタの初期値を求めるための処理である。以下の説明において「アドレス」とは、特に明記のない限り図4に示した仮想アドレスのことをいうものとする。
この処理が実行されると、まず、フラッシュコントローラ130は、第1フラッシュメモリFL1のMBR領域とBPB領域とを読み込む(ステップS100)。そして、これらの領域に既にMBR情報とBPB情報とが書き込まれているかを判断する(ステップS110)。
上記ステップS110において、MBR情報とBPB情報とが書き込まれていないと判断した場合には(ステップS110:No)、データ記憶装置10は、未だフォーマットされていない状態であるため、フラッシュコントローラ130は、アドレスポインタAP1〜AP3の値を次のように設定する。すなわち、アドレスポインタAP1およびAP2の値を、第1フラッシュメモリFL1の物理的な最終アドレスに相当するアドレスAnとし、アドレスポインタAP3の値を、第2フラッシュメモリFL2の物理的な最終アドレスに相当するアドレス(An+1)とする。データ記憶装置10が未フォーマットの場合には、かかる処理によって当該ポインタ設定処理は終了する。
上記ステップS110において、MBR領域とBPB領域とにそれぞれ、MBR情報とBPB情報とが記録されていると判断した場合には(ステップS110:Yes)、フラッシュコントローラ130は、MBR領域やBPB領域に記録されたパーティションテーブルやセクタ数等の情報に基づきユーザデータ領域DAの先頭アドレスA5を算出する(ステップS130)。こうしてアドレスA5を算出すると、フラッシュコントローラ130は、アドレスポインタAP1の値を、このアドレス「A5」に設定する(ステップS140)。
次に、フラッシュコントローラ130は、FAT領域に記録された情報を解析して、ユーザデータ領域DAに既に書き込まれているデータの最大アドレス(以下、「最大書込アドレスEA」という)を求める(ステップS150)。FAT領域には、ユーザデータ領域DAに記録されたファイルのクラスタチェーンに関する情報が記録されているため、全ファイルのクラスタチェーンを辿っていくことで、最大書込アドレスEAを求めることができる。なお、FAT1とFAT2には同一の情報が記録されているため、どちらの情報を解析してもよい。
最大書込アドレスEAを求めると、フラッシュコントローラ130は、この最大書込アドレスEAと第1フラッシュメモリFL1の最終アドレスであるアドレスAnとを比較して、最大書込アドレスEAがアドレスAnを超えているかを判断する(ステップS160)。この判断の結果、最大書込アドレスEAがアドレスAnを超えていれば(ステップS160:Yes)、既に、ユーザデータが第2フラッシュメモリFL2にも書き込まれており、動作モードは容量優先モードであると判断できるため(図4参照)、次のようにアドレスポインタAP2,AP3の値を設定する。すなわち、アドレスポインタAP3の値を、最大書込アドレスEAに設定し、アドレスポインタAP2の値を、アドレスAnの2倍のアドレス値から最大書込アドレスEAを差し引いたアドレス(2An−EA)とする(ステップS170)。こうして求められたアドレスポインタAP2とアドレスポインタAP3とは、第1フラッシュメモリFL1と第2フラッシュメモリFL2との実アドレスにおいて、同一のアドレスを示すことになる(図3,図4参照)。
上記ステップS160において、最大書込アドレスEAが、アドレスAn以下であると判断された場合には(ステップS160:No)、未だ、第1フラッシュメモリFL1にユーザデータ領域DAが残存しており、動作モードはデータ保障モードであると判断できる。そのため、フラッシュコントローラ130は、アドレスポインタAP2の値をアドレスAnとし、アドレスポインタAP3の値をアドレス(An+1)とする(ステップS180)(図2参照)。
以上の処理により、アドレスポインタAP1〜AP3の値を設定すると、フラッシュコントローラ130は、これらの値をレジスタ145に記録し(ステップS190)、一連のポインタ設定処理を終了して、メイン処理に処理を戻す。
(C3)ライト処理:
図7は、上述したメイン処理のステップS40で実行されるライト処理のフローチャートである。このライト処理は、ホストから受信したライトデータをフラッシュメモリに書き込むための処理である。
この処理が実行されると、まず、フラッシュコントローラ130は、ホストからUSB制御回路120を介して受信したライトコマンドを解析して、書き込み先のアドレス(以下、「ライトアドレスWA」という)を求める(ステップS200)。
続いて、フラッシュコントローラ130は、レジスタ145を参照して、ライトアドレスWAが、アドレスポインタAP1が示すアドレスよりも低いアドレスであるかを判断する(ステップS210)。この判断の結果、ライトアドレスWAが、アドレスポインタAP1が示すアドレスよりも低いアドレスであれば(ステップS210:Yes)、第1フラッシュメモリFL1の管理領域MAに対する書き込みであると判断できる(図3,4参照)。そのため、フラッシュコントローラ130は、第1フラッシュメモリFL1のライトアドレスWAに、ライトデータを書き込み、更に、第2フラッシュメモリFL2の実アドレスWA(図3の実アドレスB0〜B5のいずれか)に、ライトデータから生成したECCデータを書き込む(ステップS220)。
図8は、上記ステップS220において、データの書き込みを行う際のバススイッチ150の内部構成を示す説明図である。図示するように、この場合には、バススイッチ150は、フラッシュコントローラ130を内部のバッファBF1とECCエンコーダ160とに分岐して接続するとともに、バッファBF1と第1フラッシュメモリFL1とを接続し、さらに、ECCエンコーダ160と第2フラッシュメモリFL2とを接続する。このようなバススイッチ150の構成によれば、第1フラッシュメモリFL1にライトデータを出力し、第2フラッシュメモリFL2に、そのデータから生成されたECCデータを出力することができる。
上記ステップS220によって管理領域MAに対するライトデータの書き込み、およびECCデータの書き込みが終了すると、フラッシュコントローラ130は、図6で説明したポインタ設定処理を実行する(ステップS230)。こうすることで、データ記憶装置10の電源投入直後でなくても、データ記憶装置10のフォーマット完了時に、アドレスポインタAP1〜AP3の値を適切に設定することができる。
上記ステップS210において、ライトアドレスWAが、アドレスポインタAP1が示すアドレスよりも高いアドレスであると判断された場合には(ステップS210:No)、フラッシュコントローラ130は、次に、レジスタ145を参照して、ライトアドレスWAが、アドレスポインタAP2が示すアドレスよりも低いアドレスであるかを判断する(ステップS240)。この判断の結果、ライトアドレスWAが、アドレスポインタAP2が示すアドレスよりも低いアドレスであると判断されれば(ステップS240:Yes)、ライトアドレスWAが、アドレスポインタAP1が示すアドレスとアドレスポインタAP2が示すアドレスとの間の領域に存在することになるため、データ記憶装置10の動作状態がデータ保障モードであっても容量優先モードであっても、第2フラッシュメモリFL2のライトアドレスWAに対応するアドレスには、ECCデータが書き込まれていることになる(図2,3参照)。従って、フラッシュコントローラ130は、第1フラッシュメモリFL1のライトアドレスWAにライトデータを書き込み、第2フラッシュメモリFL2の同一アドレスWA(実アドレス)に、ライトデータから生成されたECCデータを書き込む(ステップS250)。このときのバススイッチの内部構成は、図8に示した構成と同一である。
上記ステップS240において、ライトアドレスWAが、アドレスポインタAP2よりも高いアドレスであると判断された場合には(ステップS240:No)、フラッシュコントローラ130は、次に、ライトアドレスWAが、第1フラッシュメモリFL1の最終アドレスAnよりも低いアドレスであるかを判断する(ステップS260)。この判断の結果、ライトアドレスWAが、アドレスAnよりも低いアドレスであると判断されれば(ステップS260:Yes)、ライトアドレスWAが、アドレスポインタAP2が示すアドレスとアドレスAnとの間に存在することになる。つまり、この場合には、アドレスポインタAP2がアドレスAnよりも低いアドレスとなっているため、現在の動作状態が容量優先モードであると判断でき、また、ライトアドレスWAに対応する第2フラッシュメモリFL2のアドレスにはECCデータが存在しないと判断することができる(図3参照)。従って、フラッシュコントローラ130は、第2フラッシュメモリFL2に対して、ECCデータの書き込みを行うことなく、第1フラッシュメモリFL1のライトアドレスWAにライトデータを書き込む(ステップS270)。
図9は、上記ステップS270においてライトデータを書き込む際のバススイッチ150の内部構成を示す説明図である。図示するように、この場合には、バススイッチ150は、フラッシュコントローラ130と内部のバッファBF1とを接続するとともに、このバッファBF1を第1フラッシュメモリFL1に接続する。一方、バススイッチ150は、フラッシュコントローラ130と第2フラッシュメモリFL2との接続は行わない。このようなバススイッチ150の構成によれば、第1フラッシュメモリFL1に対してのみライトデータを書き込むことができる。
上記ステップS260において、ライトアドレスWAが、第1フラッシュメモリFL1の最終アドレスAnよりも高いアドレス、すなわち、第2フラッシュメモリFL2内のアドレスであると判断された場合には(ステップS260:No)、フラッシュコントローラ130は、次に、ライトアドレスWAが、アドレスポインタAP3が示すアドレスよりも高いアドレスであるかを判断する(ステップS280)。この判断の結果、ライトアドレスWAが、アドレスポインタAP3よりも高いアドレスであると判断されれば(ステップS280:Yes)、第2フラッシュメモリFL2のECCデータが記録されている領域に対する書き込みであると判断できるため(図4参照)、フラッシュコントローラ130は、まず、アドレスポインタAP3が示すアドレスからライトアドレスWAまでのデータを消去する(ステップS290)。そして、アドレスポインタAP3の値をライトアドレスWAが示すアドレスに再設定し、アドレスポインタAP2の値を「2An−WA」に再設定した上で(ステップS300)、第2フラッシュメモリFL2内のライトアドレスWAに、ライトデータを書き込む(ステップS310)。上記ステップS300において、アドレスポインタAP3の値が初めてアドレス(An+1)を超えた場合に、データ記憶装置10の動作状態は、データ保障モードから容量優先モードに移行することになる。
図10は、上記ステップS310においてライトデータを書き込む際のバススイッチ150の内部構成を示す説明図である。図示するように、この場合には、バススイッチ150は、フラッシュコントローラ130を内部のバッファBF2に接続するとともに、このバッファBF2を第2フラッシュメモリFL2に接続する。一方、バススイッチ150は、フラッシュコントローラ130と第1フラッシュメモリFL1との接続は行わない。このようなバススイッチ150の構成によれば、第2フラッシュメモリFL2に対してのみライトデータを書き込むことができる。
上記ステップS280において、ライトアドレスWAが、アドレスポインタAP3よりも低いアドレスであると判断されれば(ステップS280:No)、ライトアドレスWAは、第2フラッシュメモリFL2内の通常のデータを書き込む領域内のアドレスであると判断できるため、フラッシュコントローラ130は、ECCデータの消去を行うことなく、第2フラッシュメモリFL2のライトアドレスWA(図3のアドレスB5〜Bnの範囲で、実アドレス(2Bn−WA))にライトデータの書き込みを行う(ステップS310)。この時のバススイッチ150の内部構成は、図10に示した構成と同一である。
以上で説明したライト処理によれば、ライトアドレスWAと、アドレスポインタAP1〜AP3等を適宜比較することで、現在のデータ記憶装置10の動作モードに応じたデータの書き込みを適切に処理することが可能になる。
(C4)リード処理:
図11は、上述したメイン処理のステップS50で実行されるリード処理のフローチャートである。このリード処理は、ホストからの要求に応じてフラッシュメモリからデータを読み出すための処理である。
この処理が実行されると、まず、フラッシュコントローラ130は、ホストからUSB制御回路120を介して受信したリードコマンドを解析して、読み込み先のアドレス(以下、「リードアドレスRA」という)を求める(ステップS400)。
続いて、フラッシュコントローラ130は、レジスタ145を参照して、リードアドレスRAが、アドレスポインタAP2が示すアドレスよりも低いアドレスであるかを判断する(ステップS410)。この判断の結果、リードアドレスRAが、アドレスポインタAP2が示すアドレスよりも低いアドレスであれば(ステップS410:Yes)、リードアドレスRAに対応する第2フラッシュメモリFL2のアドレスには、ECCデータが存在することになるので(図3参照)、第1フラッシュメモリFL1のリードアドレスRAからデータを読み込むとともに、第2フラッシュメモリFL2のリードアドレスRA(実アドレス)からECCデータを読み込む(ステップS420)。フラッシュコントローラ130がこれらのデータを読み込む時に、バススイッチ150内では、ECCデコーダ170によって、エラーチェックおよびエラー補正が行われる(ステップS430)。エラーチェックおよびエラー補正がなされると、フラッシュコントローラ130は、読み込んだデータをUSB制御回路120を通じてホストに転送する(ステップS440)。
図12は、上記ステップS420において、データを読み込む際のバススイッチ150の内部構成を示す説明図である。図示するように、この場合には、バススイッチ150は、フラッシュコントローラ130と内部のECCデコーダ170とを接続するとともに、第1フラッシュメモリFL1と第2フラッシュメモリFL2とをECCデコーダ170に接続する。このようなバススイッチ150の構成によれば、第1フラッシュメモリFL1から読み込まれたデータと第2フラッシュメモリFL2から読み込まれたECCデータとに基づきECCデコーダ170によってエラーのチェックやデータ補正を行うことができる。エラーが発生しなかった場合や、データが補正された場合には、そのデータが、フラッシュコントローラ130を通じてホストに出力される。これに対して、エラーが発生してデータが補正できなかった場合には、その旨がフラッシュコントローラ130を通じてホストに通知される。
上記ステップS410において、リードアドレスRAが、アドレスポインタAP2が示すアドレスよりも高いアドレスであると判断された場合には(ステップS410:No)、フラッシュコントローラ130は、次に、リードアドレスRAが、第1フラッシュメモリFL1の最終アドレスAnよりも低いアドレスであるかを判断する(ステップS450)。この判断の結果、リードアドレスRAが、アドレスAnよりも低いアドレスであると判断されれば(ステップS450:Yes)、リードアドレスRAが、アドレスポインタAP2が示すアドレスとアドレスAnとの間に存在することになる。つまり、この場合には、アドレスポインタAP2がアドレスAnよりも低いアドレスとなっているため、現在の動作状態が容量優先モードであると判断でき、また、リードアドレスRAに対応する第2フラッシュメモリFL2のアドレスにはECCデータが存在しないと判断することができる(図3参照)。従って、フラッシュコントローラ130は、第1フラッシュメモリFL1のリードアドレスRAからのみデータを読み込み(ステップS460)、これをホストに転送する(ステップS440)。
図13は、上記ステップS460においてデータを読み込む際のバススイッチ150の内部構成を示す説明図である。図示するように、この場合には、バススイッチ150は、フラッシュコントローラ130と内部のバッファBF3とを接続するとともに、このバッファBF3を第1フラッシュメモリFL1に接続する。一方、バススイッチ150は、フラッシュコントローラ130と第2フラッシュメモリFL2との接続は行わない。このようなバススイッチ150の構成によれば、第1フラッシュメモリFL1からのみデータを読み込むことができる。
上記ステップS450において、リードアドレスRAが、第1フラッシュメモリFL1の最終アドレスAnよりも高いアドレス、すなわち、第2フラッシュメモリFL2内のアドレスであると判断された場合には(ステップS450:No)、フラッシュコントローラ130は、次に、リードアドレスRAが、アドレスポインタAP3が示すアドレスよりも低いアドレスであるかを判断する(ステップS470)。この判断の結果、リードアドレスRAが、アドレスポインタAP3よりも低いアドレスであると判断されれば(ステップS470:Yes)、第2フラッシュメモリFL2内の通常のデータが記録されている領域から読み込みを行うと判断できるため(図3,4参照)、フラッシュコントローラ130は、第2フラッシュメモリFL2内のリードアドレスRAからデータを読み込み(ステップS480)、これをホストに転送する(ステップS440)。
図14は、上記ステップS480においてデータを読み込む際のバススイッチ150の内部構成を示す説明図である。図示するように、この場合には、バススイッチ150は、フラッシュコントローラ130を内部のバッファBF4に接続するとともに、このバッファBF4を第2フラッシュメモリFL2に接続する。一方、バススイッチ150は、フラッシュコントローラ130と第1フラッシュメモリFL1との接続は行わない。このようなバススイッチ150の構成によれば、第2フラッシュメモリFL2からのみデータを読み込むことができる。
上記ステップS470において、リードアドレスRAが、アドレスポインタAP3よりも高いアドレスであると判断されれば(ステップS470:No)、第2フラッシュメモリFL2のECCデータが書き込まれている領域に対してリードが行われることになる(図4参照)。容量優先モードでは、この領域は、ホストからは未使用領域であると認識される必要があるため、フラッシュコントローラ130は、バススイッチ150内のダミーデータ出力回路180を用いてダミーデータ「00」を生成し(ステップS490)、これをホストに転送する(ステップS440)。こうすることで、ホストからは、かかる領域に何もデータが記録されていないと認識されることになる。なお、ダミーデータとしては、「00」以外にも、例えば、「FF」や「AA」、「55」などのデータを生成するものとしてもよい。
図15は、上記ステップS490において、ダミーデータを読み込む際のバススイッチ150の内部構成を示す説明図である。図示するように、この場合には、バススイッチ150は、内部のダミーデータ出力回路180をフラッシュコントローラ130に接続し、第1フラッシュメモリFL1や第2フラッシュメモリFL2とフラッシュコントローラ130との接続は行わない。このようなバススイッチ150の構成によれば、ダミーデータ出力回路180からダミーデータのみを読み込むことができる。
以上で説明したリード処理によれば、リードアドレスRAと、アドレスポインタAP2,AP3等を適宜比較することで、現在のデータ記憶装置10の動作モードに応じて、適切な領域から通常のデータやECCデータを読み出すことが可能になる。
D.効果:
以上、本実施例のデータ記憶装置10の詳細な構成およびその処理について説明した。本実施例のデータ記憶装置10によれば、第1フラッシュメモリFL1の記憶領域が残存していれば、ホストから書き込み指示のあったデータを、第1フラッシュメモリFL1に書き込み、さらに、そのデータを補正するためのECCデータを第2フラッシュメモリFL2に書き込む。そのため、仮に、第1フラッシュメモリFL1に記録されたデータが何らかの原因で損傷したとしても、第2フラッシュメモリFL2に書き込まれたECCデータを用いることで、これを補正することができる。
更に、本実施例のデータ記憶装置10は、第1フラッシュメモリFL1の残容量がゼロとなれば、第2フラッシュメモリFL2に既に書き込まれていたECCデータを消去しつつ、この第2フラッシュメモリFL2にもホストから転送されたデータを書き込む。そのため、2つのフラッシュメモリを備えたデータ記憶装置10の記憶容量を有効に利用することが可能になる。以上より、本実施例によれば、データの信頼性と記憶容量の有効利用との調整を図り、機能的なデータ記憶装置を提供することが可能になる。
E.変形例:
以上、本発明の実施例について説明したが、本発明はこのような実施例に限定されず、その趣旨を逸脱しない範囲で種々の構成を採ることができることはいうまでもない。例えば、ハードウェアによって実現した機能は、ソフトウェアによって実現するものとしてもよい。そのほか、以下のような変形が可能である。
(E1)変形例1:
上記実施例では、データ保障モードにおいて、第2フラッシュメモリFL2に対して、ECCデータを記録するものとした。これに対して、第2フラッシュメモリFL2には、第1フラッシュメモリFL1に書き込む内容と同一のデータを書き込むものとしてもよい。このような構成によれば、データの冗長性を高めることができるため、耐障害性を向上させることができる。また、このような構成によれば、両者のデータを対比するだけでエラーのチェックを行うことができるのでデータ記憶装置10の処理負担を軽減することができる。
かかる構成を採用する場合において、第1フラッシュメモリFL1に記録されたデータと、第2フラッシュメモリFL2に記録されたデータとのどちらが正常なデータであるかは、フラッシュメモリに標準的に記録されるECCデータを利用することで判別することができる。汎用的なフラッシュコントローラとNAND型フラッシュメモリとを備えるデータ記憶装置では、一つのフラッシュメモリの中で、2048バイトのデータにつき、64バイトのECCデータが標準的に記録される。従って、このECCデータを用いて、フラッシュメモリ内に記録されたデータのエラーチェックを行い、エラーの発生していない方のフラッシュメモリから出力されたデータをホストに転送することで、正常なデータを出力することが可能になる。
なお、本変形例では、第2フラッシュメモリFL2に対して、第1フラッシュメモリFL1と同一内容のデータを書き込むものとしたが、その他にも、例えば、第2フラッシュメモリFL2に対して、第1フラッシュメモリFL1に書き込むデータの各ビットを反転させたデータを書き込むものとしてもよい。
(E2)変形例2:
上記実施例では、アドレスポインタを用いることで、フラッシュメモリ内の管理領域MAとユーザデータ領域DAとの判別や、通常のデータが書き込まれている領域とECCデータが書き込まれている領域との判別を行うものとした。これに対して、例えば、フラッシュメモリ内の個々のアドレスにデータが記憶されているか否かを管理するテーブルを用いることによっても上記実施例と同様の処理を行うことができる。
図16は、第2フラッシュメモリFL2内のデータの記憶状態を表すテーブルの一例を示す説明図である。このテーブルTBLには、図4に示した第2フラッシュメモリFL2内の仮想アドレス(An+1)から仮想アドレス(2An−AP1)までの個々のアドレスについて、それぞれ1ビットの領域が割り当てられている。この各ビットのビット状態は、そのビットに対応するアドレスにデータが記憶されているか否かを表している。つまり、「1」の場合には、データが記憶されており、「0」の場合にはデータが記憶されていないことを表す。
フラッシュコントローラ130は、第2フラッシュメモリFL2にECCデータを書き込むデータ保障モード時には、このテーブルTBLには、何も書き込みを行わないものとする。つまり、データ保障モード時には、テーブルTBLの各ビットは、「0」のままとなる。
これに対して、第2フラッシュメモリFL2に通常のデータを書き込む容量優先モードでは、第2フラッシュメモリFL2にデータを書き込むと、そのライトアドレスに対応するテーブルTBL内のビットを「1」にセットする。こうすることで、第2フラッシュメモリFL2内のどのアドレスにデータの書き込みが行われたかを容易に判別することができる。
以降、フラッシュコントローラ130は、このテーブルのビット状態を参照することで、第2フラッシュメモリFL2にECCデータを書き込むべきか否か、あるいは、第2フラッシュメモリFL2からECCデータを読み込むべきか否かを容易に判別することができる。例えば、第1フラッシュメモリFL1にデータを書き込む際に、第1フラッシュメモリFL1内のライトアドレスに対応する第2フラッシュメモリFL2のアドレスのテーブルTBL上のビットが「1」であれば、第2フラッシュメモリFL2のそのアドレスには既に通常のデータが記録されていると判断することができる。従って、この場合には、第1フラッシュメモリFL1に対してのみデータを書き込む。また、第1フラッシュメモリFL1にデータを書き込む際に、第1フラッシュメモリFL1内のライトアドレスに対応する第2フラッシュメモリFL2のアドレスのテーブル上のビットが「0」であれば、未だ、第2フラッシュメモリFL2には通常のデータが書き込まれていないと判断できる。従って、この場合には、第1フラッシュメモリFL1にデータを書き込むとともに、第2フラッシュメモリFL2にECCデータを書き込むことができる。
以上で説明した変形例によれば、テーブルTBLを用いることで、第2フラッシュメモリFL2内の書き込み状態を詳細に管理することができる。従って、容量の小さなデータをランダムなアドレスに書き込むような使用状態においても、通常のデータやECCデータの読み書きを適切に行うことが可能になる。
(E3)変形例3:
上記実施例では、第1フラッシュメモリFL1のデータ容量がゼロとなった場合に、データ記憶装置10の動作状態が、自動的に、データ保障モードから容量優先モードに移行するものとして説明した。これに対して、データ記憶装置10にモード切換スイッチを設け、このスイッチの設定によって動作状態が変化するものとしてもよい。こうすることで、ユーザはデータ記憶装置10の利用形態に応じて柔軟に動作モードを設定することができる。例えば、重要なデータを保存する目的では、第2フラッシュメモリFL2に対するデータの書き込みを制限することで、データ保障モードにデータ記憶装置10を強制的に設定し、容量の大きなデータを保存する目的では、容量優先モードにデータ記憶装置10を強制的に設定することができる。データ記憶装置10は、デフォルトの状態では、データの信頼性を向上させるため、データ保障モードに設定されているものとすることができる。
このような動作モードの設定は、物理的なスイッチの操作ではなく、ソフトウェア的に行うものとしてもよい。ソフトウェア的に実現する方法としては、例えば、モード切替のための専用のアプリケーションをホストにインストールし、このアプリケーションが、データ記憶装置10にモード切替コマンドを発行することでフラッシュコントローラ130あるいはUSB制御回路120がそのコマンドを解析し、動作モードを切り換えるといった方法がある。
(E4)変形例4:
上記実施例では、第1フラッシュメモリFL1に書き込むデータと、第2フラッシュメモリFL2に書き込むECCデータとは、同一のデータ容量を有するものとした。そのため、第1フラッシュメモリFL1と第2フラッシュメモリFL2とは同一の容量を有するものとして説明した。しかし、第2フラッシュメモリFL2に必要な記憶容量は、ECCデータのサイズに応じて変化するため、第1フラッシュメモリFL1と第2フラッシュメモリFL2とは、異なるデータ容量であっても構わない。例えば、第1フラッシュメモリFL1に書き込むデータよりも第2フラッシュメモリFL2に書き込むECCデータのデータ長が短ければ、第2フラッシュメモリFL2のデータ容量を、第1フラッシュメモリFL1のデータ容量よりも少なくすることができる。
また、第1フラッシュメモリFL1に書き込むデータと、第2フラッシュメモリFL2に書き込むECCデータのデータ長が同一であっても、第2フラッシュメモリFL2の方が大きいデータ容量を有していてもよい。この場合、データ記憶装置10がデータ保障モードで動作している場合には、第2フラッシュメモリFL2のデータ容量を活かすことができないが、容量優先モードに移行した場合には、第2フラッシュメモリFL2のデータ容量が多ければ、それだけ、全体のデータ容量が増加することになる。
(E5)変形例5:
上記実施例では、図4に示したように、容量優先モード時には、第1フラッシュメモリFL1の最終実アドレスと、第2フラッシュメモリFL2の最終実アドレスが結合するようにアドレスの管理を行うものとした。これに対して、第1フラッシュメモリFL1の最終実アドレスと、第2フラッシュメモリFL2内のユーザデータ領域の先頭実アドレスとが結合するようにアドレス管理を行うものとしてもよい。このような構成では、容量優先モードに動作状態が移行した場合に、第2フラッシュメモリFL2内の古いECCデータから順に消去を行うものとする。
(E6)変形例6:
上記実施例では、データ記憶装置10の動作状態が、データ保障モードから容量優先モードに移行した後に、再度、データ保障モードに移行することについては言及していない。しかし、以下の方法をとることにより、再度、データ保障モードに移行することは可能である。すなわち、容量優先モードに移行した後に、第1フラッシュメモリFL1あるいは第2フラッシュメモリFL2からデータが消去され、記憶されているデータの全容量が第1フラッシュメモリFL1のユーザデータ領域DA以下となった場合に、デフラグメンテーションを実行し、全てのデータを、第1フラッシュメモリFL1のユーザデータ領域に移動させる。その上で、第1フラッシュメモリFL1に移動された個々のデータからECCデータを生成し、これを第2フラッシュメモリFL2に記録する。以上の処理を実行することで、容量優先モードから、再度、データ保障モードに動作状態を移行させることが可能である。かかる処理は、記憶されているデータの全容量が第1フラッシュメモリFL1のユーザデータ領域以下となった場合に自動的に実行するものとしてもよいし、データ記憶装置10に設けた物理的なスイッチの操作や、ホストにインストールした専用のアプリケーションによる操作によって実行するものとしてもよい。
(E7)変形例7:
上記実施例では、データ記憶装置10の動作状態が容量優先モードであっても、第2フラッシュメモリFL2にECCデータが残存している限りは、このECCデータを用いてエラー補正等を行うものとした。これに対して、動作状態が容量優先モードに切り替わった場合には、ECCデータをすべて消去、もしくは、ないものとして扱うものとしてもよい。このような構成であれば、容量優先モードにおいて第2フラッシュメモリFL2にECCデータが存在するか否かの判断を行う必要がなくなるため、処理負担が軽減され、読み書きスピードを向上させることが可能になる。
(E8)変形例8:
上記実施例では、データ記憶装置10は、記憶デバイスとしてフラッシュメモリを備えるものとした。これに対して、例えば、ハードディスクドライブや書き換え可能な光ディスクなどを記憶デバイスとして備えるものとしてもよい。また、上記実施例では、フラッシュメモリを2つ備えるものとしたが、その数はこれに限られず、偶数個のフラッシュメモリを備えるものとすることができる。この場合、2つのフラッシュメモリを1組として、各組のフラッシュメモリに対して実施例と同様の処理を行うものとすることができる。また、上記実施例では、物理的に異なる2つのフラッシュメモリを備えるものとしたが、1つのフラッシュメモリ内の記憶領域を論理的に2つの領域に分割し、分割した一方の領域を、上記実施例の第1フラッシュメモリFL1と同様に扱い、他方を上記実施例の第2フラッシュメモリFL2と同様に扱うものとしてもよい。
(E9)変形例9:
上記実施例では、データ記憶装置10はFAT形式によってフォーマットされるものとして説明したが、フォーマットの形式はこれに限られない。例えば、NTFSやHPFS、Linux(登録商標)EXT等、様々な形式に応用することが可能である。
また、上記実施例では、第1フラッシュメモリFL1や第2フラッシュメモリFL2のデータの記憶場所のことを、「アドレス」として説明したが、かかる用語は、フォーマットの種類やオペレーティングシステム、記憶デバイスの種類に応じて、「セクタ」や「クラスタ」、「ブロック」、「ブロックアドレス」などと適宜読み替えることができる。
データ記憶装置10の概略構成を示す説明図である。 データ保障モード時のデータ記憶装置の内部メモリマップを示す説明図である。 容量優先モード時のデータ記憶装置の内部メモリマップを示す説明図である。 フラッシュコントローラ130が用いる仮想アドレスと、ホストから認識可能なアドレス空間とを示す説明図である メイン処理のフローチャートである。 ポインタ設定処理のフローチャートである。 ライト処理のフローチャートである。 バススイッチ150の内部構成を示す説明図である。 バススイッチ150の内部構成を示す説明図である。 バススイッチ150の内部構成を示す説明図である。 リード処理のフローチャートである。 バススイッチ150の内部構成を示す説明図である。 バススイッチ150の内部構成を示す説明図である。 バススイッチ150の内部構成を示す説明図である。 バススイッチ150の内部構成を示す説明図である。 第2フラッシュメモリFL2内のデータの記憶状態を表すテーブルの一例を示す説明図である。
符号の説明
10...データ記憶装置
110...USBコネクタ
120...USB制御回路
130...フラッシュコントローラ
140...アドレス変換回路
145...レジスタ
150...バススイッチ
160...ECCエンコーダ
170...ECCデコーダ
180...ダミーデータ出力回路

Claims (17)

  1. ホスト装置から転送されたデータを記憶するデータ記憶装置であって、
    所定の記憶領域を有する第1の記憶部と、
    所定の記憶領域を有する第2の記憶部と、
    少なくとも前記第1の記憶部の使用領域を監視する監視手段と、
    前記ホスト装置から前記データが転送された場合において、前記監視手段を用いて前記第1の記憶部の記憶領域が残存していると判断した場合に、前記転送されたデータを前記第1の記憶部に書き込むとともに、前記転送されたデータを補正するための補正用データを前記第2の記憶部に書き込み、前記第1の記憶部の記憶領域が残存していないと判断した場合に、前記第2の記憶部に既に記憶された前記補正用データを前記第2の記憶部の最終アドレスから逆行して消去しつつ、該消去された領域に前記最終アドレスから逆行して前記転送されたデータを書き込む書込制御手段と
    を備えるデータ記憶装置。
  2. 請求項1に記載のデータ記憶装置であって、
    前記書込制御手段は、前記補正用データとして、前記ホスト装置から転送されたデータに基づき誤り訂正符号を生成する符号化手段を備える
    データ記憶装置。
  3. 請求項2に記載のデータ記憶装置であって、
    前記符号化手段は、前記ホスト装置から転送されたデータと同じビット数、またはそれよりも少ないビット数の誤り訂正符号を生成する
    データ記憶装置。
  4. 請求項1に記載のデータ記憶装置であって、
    前記書込制御手段は、前記補正用データとして、前記ホスト装置から転送されたデータと同一のデータ、または、前記ホスト装置から転送されたデータを構成する各ビットを反転させたデータを生成する手段を備える
    データ記憶装置。
  5. 請求項1に記載のデータ記憶装置であって、
    前記書込制御手段は、前記ホスト装置から転送されたデータを前記第2の記憶部に書き込む際に、前記第1の記憶部の物理的な最終アドレスと、前記第2の記憶部の物理的な最終アドレスとを結合した仮想的なアドレス空間に従って、前記第2の記憶部へデータの書き込みを行う
    データ記憶装置。
  6. 請求項1に記載のデータ記憶装置であって、更に、
    前記ホスト装置からデータの読み出し要求を受けた場合において、該読み出し要求を受けたデータの記憶先が、前記第1の記憶部であり、かつ、該データから生成された補正用データが前記第2の記憶部に存在する場合に、該データを前記第1の記憶部から読み込むとともに、該補正用データを前記第2の記憶部から読み込み、該補正用データに基づき該データを補正して前記ホスト装置に該データを転送する読込制御手段を備える
    データ記憶装置。
  7. 請求項6に記載のデータ記憶装置であって、
    前記読込制御手段は、前記読み出し要求を受けたデータの記憶先が、前記第1の記憶部であり、かつ、該データから生成された補正用データが前記第2の記憶部に存在しない場合に、該データを前記第1の記憶部から読み込み、該データをそのまま前記ホスト装置に転送する手段を備える
    データ記憶装置。
  8. 請求項6または請求項7のいずれかに記載のデータ記憶装置であって、
    前記読込制御手段は、前記読み出し要求を受けたデータの記憶先が、前記第2の記憶部であり、かつ、該第2の記憶部の通常のデータが記録されている領域である場合に、該データを該第2の記憶部から読み込み、該データをそのまま前記ホスト装置に転送する手段を備える
    データ記憶装置。
  9. 請求項6ないし請求項8のいずれかに記載のデータ記憶装置であって、
    前記読込制御手段は、前記読み出し要求を受けたデータの記憶先が、前記第2の記憶部の前記補正用データが記憶されている領域である場合に、前記第2の記憶部からデータの読み込みを行うことなく、所定のデータをダミーデータとして前記ホスト装置に転送する手段を備える
    データ記憶装置。
  10. 請求項6ないし請求項9のいずれかに記載のデータ記憶装置であって、
    前記書込制御手段は、前記ホストから転送されたデータを、前記第2の記憶部に書き込んだ場合に、該データの書き込まれた最大アドレスを示すアドレスポインタを記憶し、
    前記読込制御手段は、前記アドレスポインタに基づき、前記読み出し要求を受けたデータに対応する補正用データが前記第2の記憶部に記憶されているか否か、または、前記読み出し要求を受けたデータの記憶先が、前記第2の記憶部の前記補正用データが記憶されている領域であるか否かを判断する
    データ記憶装置。
  11. 請求項6ないし請求項9のいずれかに記載のデータ記憶装置であって、
    前記書込制御手段は、前記ホストから転送されたデータを、前記第2の記憶部に書き込んだ場合に、該第2の記憶部の個々のアドレスについて、データを書き込んだか否かを示す所定のテーブルを記憶し、
    前記読込制御手段は、前記テーブルに基づき、前記読み出し要求を受けたデータに対応する補正用データが前記第2の記憶部に記憶されているか否か、または、前記読み出し要求を受けたデータの記憶先が、前記第2の記憶部の前記補正用データが記憶されている領域であるか否かを判断する
    データ記憶装置。
  12. 請求項1ないし請求項11のいずれかに記載のデータ記憶装置であって、
    前記第1の記憶部の記憶領域が残存していない場合であっても、所定の設定操作に応じて、前記書込制御手段に対して前記第2の記憶部への通常のデータの書き込みを制限する設定手段を備える
    データ記憶装置。
  13. 請求項1ないし請求項12のいずれかに記載のデータ記憶装置であって、
    前記第1の記憶部と前記第2の記憶部とは、同一の記憶容量を有する
    データ記憶装置。
  14. 請求項1ないし請求項13のいずれかに記載のデータ記憶装置であって、
    前記データは、前記ホスト装置からUSBインタフェースを介して転送される
    データ記憶装置。
  15. 請求項1ないし請求項14のいずれかに記載のデータ記憶装置であって、
    前記第1の記憶部および前記第2の記憶部は、不揮発性の半導体メモリである
    データ記憶装置。
  16. 請求項15に記載のデータ記憶装置であって、
    前記不揮発性の半導体メモリとは、フラッシュメモリである
    データ記憶装置。
  17. 所定の記憶領域を有する第1の記憶部と第2の記憶部とを備えるデータ記憶装置がホスト装置から転送されたデータを記憶する方法であって、
    前記第1の記憶部の使用領域を監視し、
    前記ホスト装置から前記データが転送された場合において、前記監視の結果、前記第1の記憶部の記憶領域が残存していると判断した場合に、前記転送されたデータを前記第1の記憶部に書き込むとともに、前記転送されたデータを補正するための補正用データを前記第2の記憶部に書き込み、
    前記第1の記憶部の記憶領域が残存していないと判断した場合に、前記第2の記憶部に既に記憶された前記補正用データを前記第2の記憶部の最終アドレスから逆行して消去しつつ、該消去された領域に前記最終アドレスから逆行して前記転送されたデータを書き込む
    データ記憶方法。
JP2006138780A 2006-05-18 2006-05-18 データ記憶装置およびデータ記憶方法 Expired - Fee Related JP4700562B2 (ja)

Priority Applications (7)

Application Number Priority Date Filing Date Title
JP2006138780A JP4700562B2 (ja) 2006-05-18 2006-05-18 データ記憶装置およびデータ記憶方法
EP07743724A EP2031492B1 (en) 2006-05-18 2007-05-14 Data storage device and data storage method
PCT/JP2007/060289 WO2007136018A1 (ja) 2006-05-18 2007-05-14 データ記憶装置およびデータ記憶方法
US12/300,906 US8136015B2 (en) 2006-05-18 2007-05-14 Data storage apparatus and data storage method
CN2007800181467A CN101449234B (zh) 2006-05-18 2007-05-14 数据存储装置以及数据存储方法
AT07743724T ATE521030T1 (de) 2006-05-18 2007-05-14 Datenspeicheranordnung und datenspeicherverfahren
TW096117402A TW200821909A (en) 2006-05-18 2007-05-16 Data storage device and data storage method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006138780A JP4700562B2 (ja) 2006-05-18 2006-05-18 データ記憶装置およびデータ記憶方法

Publications (2)

Publication Number Publication Date
JP2007310636A JP2007310636A (ja) 2007-11-29
JP4700562B2 true JP4700562B2 (ja) 2011-06-15

Family

ID=38723330

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006138780A Expired - Fee Related JP4700562B2 (ja) 2006-05-18 2006-05-18 データ記憶装置およびデータ記憶方法

Country Status (7)

Country Link
US (1) US8136015B2 (ja)
EP (1) EP2031492B1 (ja)
JP (1) JP4700562B2 (ja)
CN (1) CN101449234B (ja)
AT (1) ATE521030T1 (ja)
TW (1) TW200821909A (ja)
WO (1) WO2007136018A1 (ja)

Families Citing this family (57)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8103936B2 (en) * 2007-10-17 2012-01-24 Micron Technology, Inc. System and method for data read of a synchronous serial interface NAND
JP2009211234A (ja) * 2008-03-01 2009-09-17 Toshiba Corp メモリシステム
TWI389127B (zh) * 2008-08-01 2013-03-11 Jmicron Technology Corp 快閃記憶體的配置方法
TWI406175B (zh) * 2008-08-20 2013-08-21 Nuvoton Technology Corp 記憶卡以及用於記憶卡之方法
US8555143B2 (en) * 2008-12-22 2013-10-08 Industrial Technology Research Institute Flash memory controller and the method thereof
US8595593B2 (en) * 2008-12-24 2013-11-26 Hynix Semiconductor Inc. Nonvolatile memory device having a copy back operation and method of operating the same
TWI383399B (zh) * 2009-03-03 2013-01-21 Wistron Corp 嵌入式電子裝置及資料儲存方法
WO2010116538A1 (en) * 2009-04-06 2010-10-14 Hitachi, Ltd. Storage apparatus and data transfer method
TWI472945B (zh) * 2009-04-14 2015-02-11 Fineart Technology Co Ltd 外接式儲存裝置及其製造方法與資訊安全管理方法
US8688894B2 (en) * 2009-09-03 2014-04-01 Pioneer Chip Technology Ltd. Page based management of flash storage
US8381077B2 (en) * 2009-09-08 2013-02-19 Lsi Corporation Systems and methods for implementing error correction in relation to a flash memory
US8352839B2 (en) 2010-06-11 2013-01-08 International Business Machines Corporation Encoding data into constrained memory
US8972821B2 (en) * 2010-12-23 2015-03-03 Texas Instruments Incorporated Encode and multiplex, register, and decode and error correction circuitry
US8886990B2 (en) 2011-01-27 2014-11-11 Apple Inc. Block management schemes in hybrid SLC/MLC memory
US20120226949A1 (en) * 2011-03-02 2012-09-06 Texas Instruments Incorporated Multi-Channel Bus Protection
JP5458064B2 (ja) * 2011-07-14 2014-04-02 株式会社東芝 不揮発性半導体メモリ
CN102915207A (zh) * 2011-08-01 2013-02-06 建兴电子科技股份有限公司 固态储存装置及其数据储存方法
US8700834B2 (en) * 2011-09-06 2014-04-15 Western Digital Technologies, Inc. Systems and methods for an enhanced controller architecture in data storage systems
US9195530B1 (en) 2011-09-06 2015-11-24 Western Digital Technologies, Inc. Systems and methods for improved data management in data storage systems
US8713357B1 (en) * 2011-09-06 2014-04-29 Western Digital Technologies, Inc. Systems and methods for detailed error reporting in data storage systems
US8707104B1 (en) 2011-09-06 2014-04-22 Western Digital Technologies, Inc. Systems and methods for error injection in data storage systems
EP2761465B1 (en) 2011-09-30 2022-02-09 Intel Corporation Autonomous initialization of non-volatile random access memory in a computer system
CN104115136B (zh) 2011-09-30 2017-12-08 英特尔公司 非易失性随机访问存储器中存储bios的装置、方法和系统
EP2761469B1 (en) 2011-09-30 2019-11-13 Intel Corporation Non-volatile random access memory (nvram) as a replacement for traditional mass storage
CN107608910B (zh) 2011-09-30 2021-07-02 英特尔公司 用于实现具有不同操作模式的多级存储器分级结构的设备和方法
WO2013048483A1 (en) * 2011-09-30 2013-04-04 Intel Corporation Platform storage hierarchy with non-volatile random access memory having configurable partitions
US10359949B2 (en) * 2011-10-31 2019-07-23 Apple Inc. Systems and methods for obtaining and using nonvolatile memory health information
CN103164351B (zh) * 2011-12-16 2016-04-27 宏碁股份有限公司 数据存取方法
US9015519B2 (en) * 2012-01-31 2015-04-21 Symantec Corporation Method and system for cluster wide adaptive I/O scheduling by a multipathing driver
US9053008B1 (en) 2012-03-26 2015-06-09 Western Digital Technologies, Inc. Systems and methods for providing inline parameter service in data storage devices
US9135097B2 (en) * 2012-03-27 2015-09-15 Oracle International Corporation Node death detection by querying
US9146856B2 (en) 2012-04-10 2015-09-29 Micron Technology, Inc. Remapping and compacting in a memory device
US9116792B2 (en) * 2012-05-18 2015-08-25 Silicon Motion, Inc. Data storage device and method for flash block management
TWI475387B (zh) * 2012-07-19 2015-03-01 Jmicron Technology Corp 記憶體控制方法及記憶體控制電路
US9098445B2 (en) * 2013-03-14 2015-08-04 Apple Inc. Selection of redundant storage configuration based on available memory space
US9337873B2 (en) 2013-05-24 2016-05-10 SK Hynix Inc. Miscorrection detection for error correcting codes using bit reliabilities
TWI497280B (zh) * 2013-07-08 2015-08-21 Phison Electronics Corp 資料保護方法、記憶體儲存裝置與記憶體控制器
CN104346561B (zh) * 2013-07-29 2017-12-29 联想(北京)有限公司 一种保护存储单元的方法及装置
JP2015176309A (ja) * 2014-03-14 2015-10-05 株式会社東芝 半導体記憶装置
US10296429B2 (en) * 2014-07-25 2019-05-21 Hitachi, Ltd. Storage device
KR20160073834A (ko) * 2014-12-17 2016-06-27 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템 동작 방법
CN104503705B (zh) * 2014-12-22 2017-08-08 吴剀劼 利用闪存设备构建可信存储系统的方法及构建的可信存储系统
JP6901831B2 (ja) * 2015-05-26 2021-07-14 株式会社半導体エネルギー研究所 メモリシステム、及び情報処理システム
US10108559B2 (en) * 2015-06-17 2018-10-23 Xitron LLC Apparatus for transmitting data through the universal serial bus, converting to SCSI protocols for computer peripherals
TWI575530B (zh) * 2015-08-06 2017-03-21 慧榮科技股份有限公司 存取快閃記憶體模組的方法及相關的快閃記憶體控制器與記憶裝置
JP6527054B2 (ja) 2015-08-28 2019-06-05 東芝メモリ株式会社 メモリシステム
WO2017131776A1 (en) * 2016-01-29 2017-08-03 Hewlett Packard Enterprise Development Lp System state information monitoring
US10515006B2 (en) 2016-07-29 2019-12-24 Samsung Electronics Co., Ltd. Pseudo main memory system
TWI710903B (zh) * 2016-09-30 2020-11-21 南韓商三星電子股份有限公司 偽主記憶體系統及操作該系統的方法
US10360104B2 (en) 2017-05-08 2019-07-23 Silicon Laboratories Inc. ECC memory controller to detect dangling pointers
US10218387B2 (en) * 2017-05-08 2019-02-26 Silicon Laboratories Inc. ECC memory controller supporting secure and non-secure regions
US10387139B2 (en) 2017-07-25 2019-08-20 Aurora Labs Ltd. Opportunistic software updates during select operational modes
TWI658361B (zh) * 2017-09-05 2019-05-01 群聯電子股份有限公司 記憶體管理方法、記憶體控制電路單元與記憶體儲存裝置
TWI644215B (zh) * 2017-11-02 2018-12-11 慧榮科技股份有限公司 用來控制一資料儲存裝置的運作之方法以及資料儲存裝置及其控制器
TWI643066B (zh) 2018-01-15 2018-12-01 慧榮科技股份有限公司 用來於一記憶裝置中重新使用關於垃圾收集的一目的地區塊之方法、記憶裝置及其控制器以及電子裝置
CN111324554B (zh) * 2020-02-18 2022-03-18 日立楼宇技术(广州)有限公司 闪存数据的管理方法及装置、电梯控制器
US11314427B2 (en) 2020-08-21 2022-04-26 Micron Technology, Inc. Memory device with enhanced data reliability capabilities

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004139503A (ja) * 2002-10-21 2004-05-13 Matsushita Electric Ind Co Ltd 記憶装置及びその制御方法

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2785068B2 (ja) * 1990-06-25 1998-08-13 株式会社ゼクセル 車輌用データの記憶方法
JPH04349593A (ja) * 1991-05-27 1992-12-04 Tokyo Electric Co Ltd 商品登録処理装置
JPH0816327A (ja) * 1994-06-27 1996-01-19 Shikoku Nippon Denki Software Kk ディスクアレイ装置
JP2000207137A (ja) 1999-01-12 2000-07-28 Kowa Co 情報記憶装置
GB0123416D0 (en) 2001-09-28 2001-11-21 Memquest Ltd Non-volatile memory control
US6925541B2 (en) * 2002-06-12 2005-08-02 Hitachi, Ltd. Method and apparatus for managing replication volumes
US7130229B2 (en) 2002-11-08 2006-10-31 Intel Corporation Interleaved mirrored memory systems
TW591393B (en) * 2003-01-22 2004-06-11 Fujitsu Ltd Memory controller
CN1722096A (zh) * 2004-07-13 2006-01-18 鸿富锦精密工业(深圳)有限公司 多磁盘容错系统及方法
EP2286343A4 (en) * 2008-05-19 2012-02-15 Axxana Israel Ltd ROBUST DATA STORAGE IN THE EVENT OF REPLICATION ERRORS AND ROLLING DISASTERS

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004139503A (ja) * 2002-10-21 2004-05-13 Matsushita Electric Ind Co Ltd 記憶装置及びその制御方法

Also Published As

Publication number Publication date
EP2031492B1 (en) 2011-08-17
CN101449234A (zh) 2009-06-03
TW200821909A (en) 2008-05-16
WO2007136018A1 (ja) 2007-11-29
TWI355605B (ja) 2012-01-01
CN101449234B (zh) 2012-05-30
EP2031492A4 (en) 2010-07-21
US8136015B2 (en) 2012-03-13
ATE521030T1 (de) 2011-09-15
EP2031492A1 (en) 2009-03-04
JP2007310636A (ja) 2007-11-29
US20090158124A1 (en) 2009-06-18

Similar Documents

Publication Publication Date Title
JP4700562B2 (ja) データ記憶装置およびデータ記憶方法
JP4676378B2 (ja) データ記憶装置およびデータ記憶方法
JP4524309B2 (ja) フラッシュメモリ用のメモリコントローラ
JP4829365B1 (ja) データ記憶装置及びデータ書き込み方法
JP4560408B2 (ja) 不揮発性記憶装置の制御方法
US9128618B2 (en) Non-volatile memory controller processing new request before completing current operation, system including same, and method
JP4842719B2 (ja) ストレージシステム及びそのデータ保護方法
US8312554B2 (en) Method of hiding file at data protecting mode for non-volatile memory module, memory controller and portable memory storage apparatus
US8621139B2 (en) Data writing method for writing data into block of multi-level cell NAND flash memory by skipping a portion of upper page addresses and storage system and controller using the same
US20110231597A1 (en) Data access method, memory controller and memory storage system
US9176865B2 (en) Data writing method, memory controller, and memory storage device
TWI531963B (zh) Data storage systems and their specific instruction enforcement methods
US20100169556A1 (en) Nonvolatile storage device, information recording system, and information recording method
TWI459198B (zh) 記憶體儲存裝置、其記憶體控制器與有效資料識別方法
US8037236B2 (en) Flash memory writing method and storage system and controller using the same
US20110066818A1 (en) Storage device, memory controller, and data protection method
TWI651650B (zh) 記憶體管理方法及使用所述方法的儲存控制器
JP4663577B2 (ja) データ記憶装置およびこの初期化方法
JP2011065313A (ja) ストレージデバイス
CN106326131B (zh) 存储器管理方法、存储器控制电路单元及存储器存储装置
CN116225993A (zh) 存储器操作管控方法、存储装置及存储器控制电路单元
CN116149569A (zh) 基于文件系统的数据整理方法、存储装置及控制电路
CN116893783A (zh) 操作系统数据管理方法、装置、固态硬盘和存储介质
CN113571121A (zh) 嵌入式设备NAND Flash的ECC码存储方法
TW202001568A (zh) 資料儲存裝置、系統資訊編程方法及系統資訊重建方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080702

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20101130

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110119

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20110222

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110304

R150 Certificate of patent or registration of utility model

Ref document number: 4700562

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees