[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

JP7219397B2 - 情報処理装置、記憶制御装置および記憶制御プログラム - Google Patents

情報処理装置、記憶制御装置および記憶制御プログラム Download PDF

Info

Publication number
JP7219397B2
JP7219397B2 JP2019006936A JP2019006936A JP7219397B2 JP 7219397 B2 JP7219397 B2 JP 7219397B2 JP 2019006936 A JP2019006936 A JP 2019006936A JP 2019006936 A JP2019006936 A JP 2019006936A JP 7219397 B2 JP7219397 B2 JP 7219397B2
Authority
JP
Japan
Prior art keywords
data
scrubbing
processing
rewriting
execution
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.)
Active
Application number
JP2019006936A
Other languages
English (en)
Other versions
JP2020119007A (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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2019006936A priority Critical patent/JP7219397B2/ja
Priority to US16/739,344 priority patent/US20200233604A1/en
Publication of JP2020119007A publication Critical patent/JP2020119007A/ja
Application granted granted Critical
Publication of JP7219397B2 publication Critical patent/JP7219397B2/ja
Active 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/0653Monitoring storage devices or 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/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • G06F11/106Correcting systematically all correctable errors, i.e. scrubbing
    • 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/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • G06F11/0754Error or fault detection not based on redundancy by exceeding limits
    • G06F11/076Error or fault detection not based on redundancy by exceeding limits by exceeding a count or rate limit, e.g. word- or bit count limit
    • 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
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • 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

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)
  • Computer Security & Cryptography (AREA)
  • Detection And Correction Of Errors (AREA)
  • For Increasing The Reliability Of Semiconductor Memories (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Description

本発明は、情報処理装置、記憶制御装置および記憶制御プログラムに関する。
近年、フラッシュメモリよりアクセス速度が高速な不揮発性記憶装置として、ストレージクラスメモリ(Storage Class Memory:SCM)が注目されている。SCMとしては、例えば、磁気抵抗メモリ(Magnetoresistive Random Access Memory:MRAM)抵抗可変メモリ(Resistive RAM:ReRAM)、相変化メモリ(Phase Change Memory:PCM)などがある。このようなSCMは、例えば、フラッシュメモリを用いたSSD(Solid State Drive)を置き換える記憶装置として注目されている。
一方、DRAM(Dynamic RAM)では、宇宙線などの影響によってメモリ素子のビット反転が生じ得ることが知られている。そして、このような現象から記憶データを守るために、スクラビング(Scrubbing)が実行される。スクラビングでは、例えばDRAMへのアクセスが低負荷の期間に、DRAMからデータが読み出され、ECC(Error Checking and Correction)により、反転したビット数が検出されるとともにそのビット値が訂正される。反転したビット数が所定数以上の場合、読み出されて訂正されたデータがDRAMに書き直される。
また、メモリの制御に関して次のような技術が提案されている。例えば、書き込み回数および読み出し回数の合計が所定回数に達した場合に、メモリセルアレイに含まれる全メモリセルについて再書き込みが行われる強誘電体メモリが提案されている。また、車両用電子制御装置に搭載されるフラッシュメモリにおいて、マイコンの動作が停止していても、最終書き込み時刻からの経過時間がメモリによるデータ保持時間に達する前に、メモリ内のデータを更新する技術が提案されている。
特開2003-007051号公報 特開2014-225210号公報
ところで、本願の発明者により、SCMのような不揮発性記憶装置において、時間経過に伴ってデータの保持能力が低下する場合があることがわかった。データを保持可能な時間が短い場合、データを頻繁に書き直す必要が生じてしまう。
1つの側面では、本発明は、不揮発性記憶装置においてデータを保持できる時間を長期化することが可能な情報処理装置、記憶制御装置および記憶制御プログラムを提供することを目的とする。
1つの案では、不揮発性の記憶装置と、次のようなスクラビング処理を実行する制御部とを有する情報処理装置が提供される。スクラビング処理は、記憶装置からデータを読み出す処理と、データを読み出した結果に応じてデータの書き直しの要否を判定する処理と、書き直しが必要と判定した場合、読み出したデータを記憶装置の同一位置に複数回連続的に書き直す処理とを含む。
また、1つの案では、上記の情報処理装置の制御部と同様の処理を実行する記憶制御装置が提供される。
さらに、1つの案では、上記の情報処理装置の制御部と同様の処理をコンピュータに実行させる記憶制御プログラムが提供される。
1つの側面では、不揮発性記憶装置においてデータを保持できる時間を長期化できる。
第1の実施の形態に係る情報処理装置の構成例および処理例を示す図である。 第2の実施の形態に係るストレージシステムの構成例を示す図である。 CMのハードウェア構成例を示す図である。 CMが備える処理機能の構成例を示す図である。 処理例1で利用されるスクラビング制御テーブルのデータ構成例を示す図である。 処理例1における通常書き込み処理の手順を示すフローチャートの例である。 処理例1におけるスクラビング制御処理の手順を示すフローチャートの例(その1)である。 処理例1におけるスクラビング制御処理の手順を示すフローチャートの例(その2)である。 処理例1~3におけるスクラビングの実行例を示す図である。 処理例4で利用されるスクラビング制御テーブルのデータ構成例を示す図である。 処理例4におけるスクラビング制御処理の手順を示すフローチャートの例(その1)である。 処理例4におけるスクラビング制御処理の手順を示すフローチャートの例(その2)である。 処理例5における通常書き込み処理の手順を示すフローチャートの例である。 処理例6で利用されるデータ特性テーブルのデータ構成例を示す図である。 処理例6における通常書き込み処理の手順を示すフローチャートの例である。 第3の実施の形態におけるCMが備える処理機能の構成例を示す図である。
以下、本発明の実施の形態について図面を参照して説明する。
〔第1の実施の形態〕
図1は、第1の実施の形態に係る情報処理装置の構成例および処理例を示す図である。図1に示す情報処理装置1は、記憶装置1aと制御部1bを有する。
記憶装置1aは、不揮発性の記憶装置であり、例えばSCMである。記憶装置1aとして適用されるSCMとしては、例えば、MRAM、ReRAM、PCMがある。記憶装置1aは、データを書き込んでからの時間経過に伴って、データ保持能力が低下し、ビット反転が発生しやすくなるという特性を有する。本願の発明者は、このような記憶装置1aにおいて、同一の記憶領域に対して同一のデータを複数回連続的に書き込んだ場合に、その連続的な書き込み回数が多いほど、ビット反転が発生しにくくなり、データを保持可能な期間が長くなることを実験により発見した。
制御部1bは、例えば、プロセッサである。制御部1bは、記憶装置1aの上記特性を利用して、記憶装置1aに記憶されたデータについて、以下のようなスクラビング処理2を実行する。ここでは例として、記憶装置1aにデータ3が記憶されており、このデータ3についてのスクラビング処理が実行されるものとする。
スクラビング処理2は、記憶装置1aからデータ3を読み出す処理(ステップS1)と、データ3を読み出した結果に応じてデータ3の書き直しの要否を判定する処理(ステップS2)と、書き直しが必要と判定した場合、読み出したデータ3を記憶装置1aの同一位置に複数回連続的に書き直す処理(ステップS3)とを含む。ステップS3においてデータ3が複数回連続的に書き直されることで、1回だけ書き直される場合と比較して、記憶装置1aがデータ3を保持可能な時間を長期化することができる。
また、このようなスクラビング処理2は、周期的に繰り返し実行されてもよい。この場合、一度ステップS3が実行されて、データ3が複数回連続的に書き直されると、その後のスクラビング処理2の実行時にはデータ3の書き直しが不要と判定される確率が高くなる。これにより、ステップS3による複数回の書き直しの実行頻度が低くなる。その結果、スクラビング処理が、記憶装置1aに対するスクラビング処理2以外のアクセスの性能に与える影響が低減され、そのアクセス性能を向上させることができる。
〔第2の実施の形態〕
次に、図1の情報処理装置1を含む情報処理システムとして、ストレージシステムを例示して説明する。
図2は、第2の実施の形態に係るストレージシステムの構成例を示す図である。図2に示すストレージシステムは、CM(Controller Module)101およびドライブ部102を備えたストレージ装置100と、ホスト装置200を含む。なお、CM101は、図1の情報処理装置1の一例である。
CM101は、例えばSAN(Storage Area Network)を介して、ホスト装置200と接続されている。CM101は、ホスト装置200からの要求に応じて、ドライブ部102に搭載された記憶装置102a,102b,102c,・・・に対するアクセスを制御するストレージ制御装置である。例えば、CM101は、記憶装置102a,102b,102c,・・・の記憶領域を用いた論理ボリュームを生成し、ホスト装置200から論理ボリュームに対するアクセスを受け付ける。
ドライブ部102には、ホスト装置200からのアクセス対象となる複数台の記憶装置102a,102b,102c,・・・が搭載されている。このような記憶装置102a,102b,102c,・・・としては、HDD(Hard Disk Drive)、SSDなどの不揮発性記憶装置が用いられる。
ホスト装置200は、例えば、種々の業務処理を実行するサーバコンピュータである。ホスト装置200は、論理ボリュームに対するアクセス要求をCM101に送信することで、論理ボリュームにアクセスする。なお、CM101にはホスト装置200が複数台接続されていてもよい。
図3は、CMのハードウェア構成例を示す図である。CM101は、プロセッサ111、RAM112、MRAM113、SSD114、ホストインタフェース(I/F)115およびドライブインタフェース(I/F)116を備える。なお、プロセッサ111は、図1の制御部1bの一例であり、MRAM113は、図1の記憶装置1aの一例である。
プロセッサ111は、CM101全体を統括的に制御する。プロセッサ111は、例えば、CPU(Central Processing Unit)、MPU(Micro Processing Unit)、DSP(Digital Signal Processor)、ASIC(Application Specific Integrated Circuit)、またはPLD(Programmable Logic Device)である。また、プロセッサ111は、CPU、MPU、DSP、ASIC、PLDのうちの2以上の要素の組み合わせであってもよい。
RAM112は、CM101の主記憶装置として使用される。RAM112には、プロセッサ111に実行させるOS(Operating System)プログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、RAM112には、プロセッサ111による処理に必要な各種データが格納される。例えば、RAM112には、ホスト装置200から論理ボリュームに対して書き込みが要求されたデータに対応するキャッシュデータが格納される。RAM112内のキャッシュデータの格納領域は、例えば、一次キャッシュとして利用される。
MRAM113には、プロセッサ111による処理に必要な各種データが格納される。MRAM113は、RAM112と、ドライブ部102内の記憶装置102a,102b,102c,・・・との間における中間的なアクセス速度性能を有している。このため、例えば、上記のようにRAM112の一部の領域が一次キャッシュとして利用される場合、MRAM113は二次キャッシュとして利用される。なお、CM101には、MRAM113の代わりに、ReRAM、PCMなど、データの連続書き込み回数に応じてそのデータの保持時間が変動する他の種類のSCMが搭載されてもよい。
SSD114は、CM101の補助記憶装置として使用される。SSD114には、OSプログラム、アプリケーションプログラムおよび各種データが格納される。なお、補助記憶装置としては、HDDなどの他の種類の不揮発性記憶装置を使用することもできる。
ホストインタフェース115は、ホスト装置200と通信するための通信インタフェースである。ドライブインタフェース116は、ドライブ部102に搭載された記憶装置102a,102b,102c,・・・と通信するための通信インタフェースである。
なお、CM101においては、SSD114が搭載されず、SSD114の代わりにMRAM113が補助記憶装置として使用されてもよい。逆に、MRAM113は、RAM112とともに主記憶装置として使用されてもよい。例えば、主記憶装置に格納されるデータのうち、電源遮断時に維持される必要のないデータがRAM112に格納され、維持される必要があるデータがMRAM113に格納されてもよい。
以上のハードウェア構成によって、CM101の処理機能を実現できる。なお、図示しないが、ホスト装置200も、プロセッサや主記憶装置、補助記憶装置などを備えるコンピュータとして実現可能である。
ところで、本願の発明者は、MRAMについて、データを書き込んでからの時間経過に伴って、データ保持能力が低下し、ビット反転が発生しやすくなることを実験により発見した。また、発明者は、MRAMにおけるデータ保持時間を回復するために、データを書き直す(リライトする)ことが有効であることを実験により発見した。さらに、発明者は、MRAMの同一記憶領域に対して同一データを複数回連続的に書き込んだ場合に、その連続的な書き込み回数が多いほど、ビット反転が発生しにくくなり、データを保持可能な期間が長くなることを実験により発見した。
このような特性は、MRAMだけでなく、少なくともReRAM、PCMについても確認された。これらの不揮発性メモリは、物質の状態変化によってデータを記憶するが、同一データが複数回書き込まれることによって物質の状態が安定することから、データ保持時間が長くなると考えられる。
本実施の形態のCM101は、このような特性を利用して、MRAMに対する初回のデータ書き込み時や、その後のスクラビングでのリライト時において、データを1回または複数回連続的に書き込むようにする。そして、CM101は、その書き込み回数を制御することで、データを保持可能な時間を調整するとともに、スクラビングやリライトの実行間隔を変更する。これにより、スクラビングによるデータ読み出しやリライトのためのデータ書き込みの実行頻度を低下させ、これらの実行がホスト装置200からの要求に応じた論理ボリュームに対するアクセス性能に対してできるだけ悪影響を与えないようにする。
図4は、CMが備える処理機能の構成例を示す図である。なお、図4には、MRAM113のハードウェア構成についても例示している。
CM101は、I/O(Input/Output)制御部120を備える。I/O制御部120による処理は、例えば、プロセッサ111が所定のアプリケーションプログラムを実行することで実現される。
I/O制御部120は、ドライブ部102内の記憶装置102a,102b,102c,・・・の記憶領域を用いた論理ボリュームに対する、ホスト装置200からのアクセスを制御する。I/O制御部120は、そのアクセス制御の際にMRAM113にアクセスする。例えば、I/O制御部120は、MRAM113の記憶領域を、ホスト装置200から書き込みが要求されたデータに対応するキャッシュデータを保持する二次キャッシュとして利用する。
なお、I/O制御部120は、MRAM113にアクセスする処理機能(アプリケーション)の一例であり、これ以外の処理機能がMRAM113にアクセスしてもよい。
MRAM113は、ハードウェアとして、メモリセルアレイ130、記憶部140およびコントローラ150を備える。
メモリセルアレイ130には、データが保持されるメモリセルが多数配列されている。また、メモリセルアレイ130は、一定サイズのデータがそれぞれ保持されるブロック131に分割されている。ブロック131のサイズは、例えば、512バイトである。ブロック131は、書き込みデータの管理単位であり、本実施の形態では、ブロック131を単位としてスクラビングが実行される。
記憶部140は、コントローラ150の処理で利用される各種のデータが格納される記憶装置であり、例えば、DRAMなどの不揮発性記憶装置として実現される。記憶部140には、スクラビングの実行制御のために参照されるスクラビング制御テーブル141が記憶される。スクラビング制御テーブル141は、メモリセルアレイ130内のブロック131ごとのレコードを備えている。各レコードには、例えば、対応するブロック131に対するデータの書き込み回数などが記録される。
コントローラ150は、メモリセルアレイ130に対するデータの読み書きを制御する制御回路である。コントローラ150は、書き込み要求受信部151、書き込み処理部152、ECCエンコーダ153、読み出し要求受信部154、読み出し処理部155、ECCデコーダ156およびスクラビング処理部157を備える。これらの処理機能による処理の少なくとも一部は、例えば、コントローラ150が備えるプロセッサが所定のファームウェアプログラムを実行することで実現される。また、これらの処理機能による処理の少なくとも一部は、例えば、コントローラ150が備える専用のハードウェア回路によって実行されてもよい。
書き込み要求受信部151は、I/O制御部120またはスクラビング処理部157から、データの書き込み要求と書き込みデータを受信する。書き込み要求受信部151は、書き込み要求に応じて、書き込みデータを書き込み処理部152に出力し、要求に応じた書き込み処理を実行させる。また、書き込み要求受信部151は、I/O制御部120からの書き込み要求に応じた書き込み処理が完了すると、スクラビング制御テーブル141に記録された、書き込み先ブロックに対応する書き込み回数を更新する。
書き込み処理部152は、書き込み要求受信部151からの要求に応じて、書き込みデータをECCエンコーダ153を介してメモリセルアレイ130に書き込む。ECCエンコーダ153は、書き込みデータに基づいてエラーチェックコードを算出し、書き込みデータをエラーチェックコードとともにメモリセルアレイ130に書き込む。なお、メモリセルアレイ130においては、少なくとも異なるブロック131の間では、書き込まれるデータに対して異なるエラーチェックコードが付与される。
読み出し要求受信部154は、I/O制御部120またはスクラビング処理部157から、データの読み出し要求を受信する。読み出し要求受信部154は、読み出し要求に応じて、読み出し処理部155にメモリセルアレイ130からのデータの読み出し処理を実行させ、読み出されたデータを取得して読み出し要求の出力元に返信する。
読み出し処理部155は、読み出し要求受信部154からの要求に応じて、データをメモリセルアレイ130からECCデコーダ156を介して読み出し、読み出されたデータを読み出し要求受信部154に出力する。
ECCデコーダ156は、読み出しが要求されたデータをエラーチェックコードとともにメモリセルアレイ130から読み出し、エラーチェックコードに基づいて読み出されたデータの誤り訂正処理を実行する。誤り訂正単位のデータ長における訂正可能なビット数をnとすると、ECCデコーダ156は、反転ビット(誤りが検出されたビット)のビット数がn以下の場合、読み出されたデータを訂正して読み出し処理部155に出力する。また、スクラビング処理部157からの要求に応じた読み出し処理の場合、ECCデコーダ156は、検出された反転ビットのビット数をスクラビング処理部157に通知する。
スクラビング処理部157は、所定の間隔でスクラビングを周期的に実行する。スクラビングは、ブロック131を単位として実行される。スクラビングとは、ブロック131からデータを読み出し、そのデータ読み出し時に検出された反転ビット数が所定の閾値以上である場合に、読み出されたデータをブロック131にリライトする処理である。
あるブロック131のスクラビング実行時刻になると、スクラビング処理部157は、読み出し要求受信部154に対して、そのブロック131からのデータの読み出しを要求する。スクラビング処理部157は、この要求に応じてブロック131から読み出されたデータを読み出し要求受信部154から受信するとともに、検出された反転ビットのビット数をECCデコーダ156から受信する。
スクラビング処理部157は、反転ビットのビット数に基づいて、データのリライトが必要かを判定する。反転ビットのビット数が所定の閾値n1以上である場合に、リライトが必要と判定される。その場合、スクラビング処理部157は、読み出されたデータをブロック131にリライトするように書き込み要求受信部151に要求する。このとき、スクラビング処理部157は、スクラビング制御テーブル141に記録された、そのブロック131に対応する書き込み回数に基づいて、連続書き込み回数を特定する。そして、スクラビング処理部157は、読み出された同一のデータを特定された連続書き込み回数の分だけ連続的にブロック131に書き込むように要求する。また、スクラビング処理部157は、スクラビング制御テーブル141に記録された書き込み回数を、連続的に書き込んだ回数によって更新する。
なお、閾値n1は、ECCデコーダ156によって訂正可能なビット数nより小さい値(かつ、0より大きい値)に設定される。
また、スクラビング処理部157は、各ブロック131のスクラビングの実行周期(実行頻度)を、スクラビング制御テーブル141に記録された、各ブロック131に対応する書き込み回数に応じて調整することができる。
次に、コントローラ150によるデータの書き込み処理およびスクラビング制御処理の具体例として、複数の処理例(処理例1~6)を示す。
<処理例1>
処理例1では、I/O制御部120からの書き込み要求に応じてあるブロック131にデータが書き込まれた後、そのブロック131についてのスクラビングが一定周期で実行される。また、スクラビングによりデータのリライトが必要と判定されると、そのリライトの際にデータが複数回連続してリライトされる。このような連続リライトの実行により、ブロック131においてデータを保持可能な時間が長くなることから、連続リライトの実行後にはスクラビングの実行周期が延長され、スクラビングの実行頻度が低減される。
図5は、処理例1で利用されるスクラビング制御テーブルのデータ構成例を示す図である。処理例1において、スクラビング制御テーブル141には、ブロック131ごとのレコード142が含まれる。各レコード142には、書き込み回数Cw、到達回数Csc、回数設定値Nおよび周期設定値Mが記録される。
書き込み回数Cwは、ブロック131に対する直近の書き込み処理時におけるデータの連続書き込み回数を示す。この「書き込み処理」とは、I/O制御部120からの書き込み要求に応じた書き込み処理と、スクラビングでのリライト処理とを含む。到達回数Cscは、ブロック131について前回スクラビングが実行されてから、一定のスクラビング実行周期で現れるスクラビング実行時刻に到達した回数を示す。なお、書き込み回数Cwと到達回数Cscの値は、時間経過に伴って可変される。
回数設定値Nは、ブロック131にデータを複数回連続的に書き込む場合の書き込み回数を示す。この処理例1では、データをブロック131に書き込む際、そのデータを1回だけ書き込む処理と、N回連続的に書き込む処理のいずれかが実行される。周期設定値Mは、スクラビングの実行頻度を通常より低下させる場合のスクラビングの実行周期を示す設定値である。この周期設定値Mは、通常のスクラビング実行周期の何回分かを示す値であり、2以上の整数が設定される。なお、回数設定値Nと周期設定値Mは、あらかじめ設定される固定的な値である。
図6は、処理例1における通常書き込み処理の手順を示すフローチャートの例である。なお、「通常書き込み処理」とは、I/O制御部120からの書き込み要求に応じて実行される書き込み処理である。また、MRAM113に対してI/O制御部120以外のアプリケーションからアクセス可能である場合、これらのアプリケーションからの書き込み要求に応じた書き込み処理も、通常書き込み処理に含まれる。
[ステップS11]書き込み要求受信部151は、I/O制御部120からの書き込み要求を監視し、書き込み要求と書き込みデータを受信すると、ステップS12の処理を実行する。
[ステップS12]書き込み要求受信部151は、書き込みデータを書き込み先のブロック131に1回書き込むように書き込み処理部152に要求する。書き込み処理部152は、書き込みデータをECCエンコーダ153を介して書き込み先のブロック131に1回書き込む。書き込みが完了すると、書き込み要求受信部151は、スクラビング制御テーブル141に含まれる、書き込み先のブロック131に対応するレコード142の書き込み回数Cwに、「1」を設定する。
なお、ステップS12では、ブロック131内の一部だけにデータが書き込まれた場合でも、書き込み回数Cwは強制的に「1」に設定され、そのブロック131の全体について、直近の書き込み時に複数回の連続書き込みが行われていない扱いになる。これにより、ブロック131内の一部だけにデータが書き込まれた場合でも、そのブロックについては次のスクラビング実行時刻において必ずスクラビングが実行されるようになる(後述する図7のステップS23,S24に対応)。
[ステップS13]書き込み要求受信部151は、書き込み先のブロック131に対応するレコード142の到達回数Cscを、「0」にリセットする。
以上のように、I/O制御部120からの要求に応じてブロック131にデータが書き込まれたとき、そのブロック131に対応する書き込み回数Cwには「1」が設定される。この設定値は、ブロック131に対する直近の書き込み処理時における連続書き込み回数が「1」である(すなわち、連続書き込みが行われていない)ことを示す。
図7、図8は、処理例1におけるスクラビング制御処理の手順を示すフローチャートの例である。図7、図8の処理は、ブロック131ごとに個別に実行される。
[ステップS21]スクラビング処理部157は、対応するブロック131についてのスクラビング実行時刻になったかを判定する。このブロック131についての前回のスクラビング実行時刻から、スクラビング実行周期を示す所定時間が経過した場合、スクラビング実行時刻になったと判定される。その場合、スクラビング処理部157はステップS22の処理を実行する。これにより、ステップS22以降の処理は、一定のスクラビング実行周期で実行される。
[ステップS22]スクラビング処理部157は、スクラビング制御テーブル141の対応するレコード142から書き込み回数Cwを読み出す。スクラビング処理部157は、書き込み回数Cwが「1」の場合、ステップS23の処理を実行し、書き込み回数Cwが「1」より大きい場合、図8のステップS31の処理を実行する。
なお、前者の場合、通常のスクラビング実行周期でスクラビングを実行すべきと判定されて、ステップS23~S26のスクラビングが実行される。一方、後者の場合、スクラビングの実行頻度を低減させるように設定されていると判定されて、ステップS31以降において現時刻でスクラビングを実行すべきかが判定される。このように、処理例1では、書き込み回数Cwは、「1」か否かによって、スクラビングを通常の頻度で実行するか、あるいは頻度を低減させて実行するかを判定するために使用されている。このため、例えば、書き込み回数Cwの代わりにフラグ情報が使用されてもよい。
[ステップS23]スクラビング処理部157は、対応するブロック131からのデータの読み出しを読み出し要求受信部154に要求する。この要求に応じてブロック131からデータが読み出され、スクラビング処理部157は、読み出されたデータを読み出し要求受信部154から取得する。このとき、データに許容ビット数以下の反転ビットがある場合には、ECCデコーダ156によって反転ビットが訂正された訂正後のデータが、読み出し要求受信部154からスクラビング処理部157に出力される。これとともに、スクラビング処理部157は、反転ビット数の検出値をECCデコーダ156から取得する。
[ステップS24]スクラビング処理部157は、取得した反転ビット数が所定値(前述の閾値n1)以上かを判定する。スクラビング処理部157は、反転ビット数が閾値n1以上の場合、ステップS25の処理を実行する。この場合、前回の書き込み処理からの時間が長くなるなどの原因によってブロック131内のデータにおけるビット反転がある程度進行し、データを正しく読めなくなる状態に近づいていると考えられる。このため、データを正しく保持可能な時間を延長するために、データのリライトが実行される。一方、スクラビング処理部157は、反転ビット数が閾値n1未満の場合、処理をステップS21に進める。この場合、データを正しく読める状態が今後しばらくの間続くと考えられるため、リライトの実行がスキップされる。
なお、ステップS24の判定では、ブロックから読み出された、誤り訂正単位のデータ長をそれぞれ有するデータの中に、反転ビット数が閾値n1以上のデータが1つでもあった場合に、「Yes」、すなわちリライトを実行すると判定される。
また、図示しないが、検出された反転ビット数が、データを訂正可能な上限ビット数(前述の閾値n、n>n1)を超えていた場合には、読み出しエラーとなり、図7の処理が終了する。
[ステップS25]スクラビング処理部157は、スクラビング制御テーブル141の対応するレコード142に記録された回数設定値Nに基づき、ステップS23で読み出された、反転ビット訂正後のデータを、ブロック131に対してN回連続的にリライトする。また、スクラビング処理部157は、スクラビング制御テーブル141の対応するレコード142内の書き込み回数Cwを、「N」に更新する。これにより、ブロック131に対する直近の書き込み時に複数回の連続書き込みが行われたことが記録される。
[ステップS26]スクラビング処理部157は、スクラビング制御テーブル141の対応するレコード142内の到達回数Cscを、「0」にリセットする。この後、処理はステップS21に進められる。
以下、図8を用いて説明を続ける。
[ステップS31]スクラビング処理部157は、スクラビング制御テーブル141の対応するレコード142内の到達回数Cscを、「1」だけカウントアップする。
[ステップS32]スクラビング処理部157は、スクラビング制御テーブル141の対応するレコード142に記録された周期設定値Mを読み出し、カウントアップされた到達回数Cscが周期設定値Mと等しいか、すなわち周期設定値Mに達したかを判定する。スクラビング処理部157は、到達回数Cscが周期設定値Mに達した場合、スクラビング処理の実行頻度が低下された状態において、スクラビング処理をスキップせずに実行すべき時刻になったと判定して、処理をステップS33に進める。一方、スクラビング処理部157は、到達回数Cscが周期設定値Mに達していない場合、スクラビング処理の実行をスキップすべきと判定して、処理を図7のステップS21に進める。
[ステップS33]スクラビング処理部157は、対応するブロック131からのデータの読み出しを読み出し要求受信部154に要求する。この要求に応じてブロック131からデータが読み出され、スクラビング処理部157は、読み出されたデータを読み出し要求受信部154から取得する。これとともに、スクラビング処理部157は、反転ビット数の検出値をECCデコーダ156から取得する。
[ステップS34]スクラビング処理部157は、取得した反転ビット数が閾値n1以上かを判定する。スクラビング処理部157は、反転ビット数が閾値n1以上の場合、データのリライトが必要と判定して、ステップS35の処理を実行する。一方、スクラビング処理部157は、反転ビット数が閾値n1未満の場合、データのリライトが不要と判定して、ステップS36の処理を実行する。
[ステップS35]スクラビング処理部157は、スクラビング制御テーブル141の対応するレコード142に記録された回数設定値Nに基づき、ステップS33で読み出された、反転ビット訂正後のデータを、ブロック131に対してN回連続的にリライトする。また、スクラビング処理部157は、スクラビング制御テーブル141の対応するレコード142内の書き込み回数Cwを、「N」に更新する。これにより、ブロック131に対する直近の書き込み時に複数回の連続書き込みが行われたことが記録される。
なお、図示しないが、図7のステップS24と同様に、検出された反転ビット数が、データを訂正可能な上限のビット数n(n>n1)を超えていた場合には、読み出しエラーとなり、図8の処理が終了する。
[ステップS36]スクラビング処理部157は、スクラビング制御テーブル141の対応するレコード142内の到達回数Cscを、「0」にリセットする。この後、処理は図7のステップS21に進められる。
以上の図7、図8に示した処理例1では、スクラビングでのリライト時にデータが複数回連続してブロック131に書き込まれる。これにより、データが1回だけ書き込まれる場合と比較して、データを保持可能な時間が長期化される。したがって、この後に同じブロック131についてのスクラビングが実行されたときに、リライトが必要となる確率が低下し、リライトの実行頻度(正確には、ステップS35での複数回の連続書き込みの実行頻度)を低減できる。リライトの実行頻度の低減により、リライトの実行がI/O制御部120からMRAM113へのアクセス性能に与える影響を低減でき、その結果として、ホスト装置200から論理ボリュームに対するアクセス性能を向上させることができる。
また、処理例1では、ブロック131に対する通常書き込み時には、データはメモリセルアレイ130に対して1回だけ書き込まれる。これにより、データを複数回連続的に書き込む場合と比較して、I/O制御部120からの書き込み要求に対する応答速度を高めることができ、その結果として、ホスト装置200から論理ボリュームに対するアクセス性能を向上させることができる。また、ブロック131に対する複数回の連続的な書き込みは、I/O制御部120からの書き込み要求とは非同期で実行されるスクラビングでのリライト時に限定して実行される。これにより、複数回の連続的な書き込み動作が、I/O制御部120からの書き込み要求に対する応答性能に与える影響を軽減できる。
さらに、処理例1では、ブロック131に対する通常書き込みの直後では、通常のスクラビング実行周期でスクラビングが実行される。そして、スクラビングによりデータのリライトが必要と判定されると、そのリライトの際にデータが複数回連続して書き込まれ、その後におけるスクラビングの実行周期がM倍に延長される。リライトの際に複数回の連続書き込みが行われることで、データ保持時間が長期化されるので、スクラビングの実行周期を長くしても、データの安全性を維持できる。
このように、処理例1では、スクラビングによるリライトが実行された後にはスクラビングの実行頻度が低減される。このため、スクラビングの実行に伴うデータ読み出し処理がI/O制御部120からMRAM113へのアクセス性能に与える影響を低減でき、その結果として、ホスト装置200から論理ボリュームに対するアクセス性能を向上させることができる。
次に、処理例1の具体例とともに、処理例1の一部の処理を変更した処理例2,3について説明する。
まず、図9は、処理例1~3におけるスクラビングの実行例を示す図である。図9は、ある1つのブロック131についてのスクラビングやリライトの実行例を示している。また、図9に示すスクラビング実行時刻(以下、「実行時刻」と略称する)T1~T11は、通常のスクラビング周期で現れる時刻である。仮に、図9の実行時刻T1~T11のすべてにおいてスクラビングを実行した場合、スクラビングが最も高頻度に実行されることになる。さらに、図9では、処理例1~3のいずれの場合にも、対応するブロック131に対して通常書き込みが行われた後、最初に実行時刻T1に到達したとする。
図9において、処理例1では、通常書き込みの実行後の最初の実行時刻T1において、スクラビングが実行される。このとき、エラーチェックコードに基づく反転ビット数が閾値n1未満であり、データのリライトが実行されなかったとすると、次の実行時刻T2において再度スクラビングが実行される。
図9では例として、実行時刻T2におけるスクラビングによりデータのリライトが行われたとする。このとき、複数回(N回)の連続的なリライトが行われる(図7のステップS25に対応)。これとともに、スクラビング制御テーブル141の対応するレコード142に、書き込み回数Cwとして「N」が記録される。
その結果、実行時刻T2以降、このブロック131についてのスクラビングの実行周期がM倍に延長される。図9では例としてM=3となっており、実行時刻T3,T4ではスクラビングの実行がスキップされ、実行時刻T5でスクラビングが実行される。さらに、実行時刻T6,T7ではスクラビングの実行がスキップされ、実行時刻T8でスクラビングが実行され、実行時刻T9,T10ではスクラビングの実行がスキップされ、実行時刻T11でスクラビングが実行される。なお、実行時刻T5,T8,T11では、反転ビット数の検出結果によってはN回の連続的なリライトが行われる場合もある。
このように、処理例1では、ブロック131に対する通常書き込みの直後では、通常の実行周期でスクラビングが行われる。そして、最初にリライトが必要になってからは、リライトのたびに常に複数回の書き込みが行われるとともに、スクラビングの実行頻度が通常より低減される。
次に、処理例2,3について図9を用いて説明する。
<処理例2>
処理例2では、通常書き込みの後の初回のリライトで複数回の連続書き込みが行われるとともに、その後のスクラビングの実行頻度が低減される点では、処理例1と同様である。ただし、処理例2では、スクラビングの実行頻度が低減された状態でスクラビングが一定回数だけ実行されると、その後にスクラビングの実行頻度が増加される。これにより、例えば、低い頻度でスクラビングが何度か実行されても反転ビット数が閾値n1まで上昇せず、リライトが行われなかったが、次のスクラビングの実行までにビット反転が進んでデータを訂正できなくなる、という事態の発生可能性を低減できる。
図9では、処理例1と同様に、実行時刻T2でのスクラビングにより、データがN回連続的にリライトされるとともに、スクラビングの実行周期がM倍に延長される。この後、処理例1と同様に、実行時刻T3,T4ではスクラビングの実行がスキップされ、実行時刻T5でスクラビングが実行され、実行時刻T6,T7ではスクラビングの実行がスキップされ、実行時刻T8でスクラビングが実行される。
ただし、図9の例では、スクラビングが3回実行されるとスクラビングの実行周期が1/M倍の周期に、すなわち通常の周期に短縮されている。したがって、実行時刻T8以降、通常の実行周期ごとの時刻T9,T10,T11においてスクラビングが実行される。
<処理例3>
処理例3では、通常書き込みの後の初回のリライトで複数回の連続書き込みが行われるとともに、その後のスクラビングの実行頻度が低減される点では、処理例1,2と同様である。ただし、処理例3では、実行頻度が低減された状態において、スクラビングを実行すべき時刻に一定回数到達するたびに、強制的に複数回の連続的なリライトが行われる。これにより、例えば、処理例2と同様に、低い頻度でスクラビングが何度か実行されてもリライトが行われなかったが、次のスクラビングの実行までにビット反転が進んでデータを訂正できなくなる、という事態の発生可能性を低減できる。
図9では、処理例1と同様に、実行時刻T2でのスクラビングにより、データがN回連続的にリライトされるとともに、スクラビングの実行周期がM倍に延長される。この後、処理例1と同様に、実行時刻T3,T4ではスクラビングの実行がスキップされ、実行時刻T5でスクラビングが実行され、実行時刻T6,T7ではスクラビングの実行がスキップされ、実行時刻T8でスクラビングが実行される。
ただし、図9の例では、実行時刻T2の後、スクラビングを実行すべき時刻に2回到達するたびに、N回の連続的なリライトが強制的に行われる。すなわち、実行時刻T8において、スクラビングを実行すべき時刻に2回(実行時刻T5,T8に対応)到達し、N回の連続的なリライトが行われる。具体的には、実行時刻T8では、データ読み出しと反転ビット数の取得(図8のステップS33)が行われるが、反転ビット数が閾値n1に達していなくてもデータのN回の連続的なリライト(ステップS35)が行われる。
実行時刻T8の後では、延長された周期(M)でスクラビングを実行すべき時刻が現れ、そのような時刻が2回現れるたびにN回の連続的なリライトが強制的に行われる。図9の例では、実行時刻T9,T10でスクラビングの実行がスキップされ、実行時刻T11でスクラビングが実行されている。
<処理例4>
次に、処理例4について説明する。なお、以下の処理例4の説明では、処理例1と同じ構成要素または同じ内容の処理ステップには同じ符号を付して示し、それらの説明を省略する。
処理例4では、通常書き込み時にはデータが1回書き込まれる点では、処理例1~3と同様である。ただし、その後のスクラビングの実行時には、リライトが実行されるたびに連続的な書き込み回数が増加される。さらに、連続書き込み回数の増加に応じて、スクラビングの実行頻度が低減される。
スクラビングの実行回数が多いブロック131に存在するデータは、I/O制御部120からの書き替え頻度が少ないデータであり、長期間保存されたままになる可能性が高い。このようなデータについては、リライト時の連続書き込み回数を多くしてデータの保持時間を長くしておくことで、リライトの実行頻度を低くしておくことが好ましい。処理例4では、リライトが実行されるたびに連続書き込み回数を増加させることで、保存期間が長いデータほど保持可能な時間を長くして、リライトの実行頻度を低減できる。さらに、連続書き込み回数の増加に応じてスクラビングの実行頻度も低減することで、保存期間が長いデータほどスクラビング自体の実行頻度も低減できる。
図10は、処理例4で利用されるスクラビング制御テーブルのデータ構成例を示す図である。処理例4では、図5に示したスクラビング制御テーブル141の代わりに、図10に示すスクラビング制御テーブル141aが利用される。
スクラビング制御テーブル141aには、ブロック131ごとのレコード142aが含まれる。各レコード142aには、図5と同様の書き込み回数Cw、到達回数Csc、回数設定値Nおよび周期設定値Mに加えて、周期加算値mが記録される。周期加算値mは、スクラビングでのリライトが実行されるごとに、スクラビングの実行周期に加算される値を示す。なお、処理例4では、回数設定値Nは、リライトの実行ごとに前回の連続書き込み回数に加算される加算値として利用される。
次に、処理例4の処理内容についてフローチャートを用いて説明する。なお、処理例4では、通常書き込み時においては、スクラビング制御テーブル141の代わりにスクラビング制御テーブル141aを用いて、図6と同様の処理が実行される。
図11、図12は、処理例4におけるスクラビング制御処理の手順を示すフローチャートの例である。図11、図12の処理は、ブロック131ごとに個別に実行される。また、図11、図12では、処理内容が図7、図8と同様の処理ステップには同じステップ番号を付して示し、それらの説明を省略する。
処理例4におけるスクラビング制御処理では、図7のステップS24で反転ビット数が閾値n1以上と判定された場合に、図7のステップS25の代わりに図11に示すステップS25a,S25bが実行される。
[ステップS25a]スクラビング処理部157は、スクラビング制御テーブル141の対応するレコード142aに記録された書き込み回数Cwおよび回数設定値Nに基づき、連続リライト回数を(Cw+N)と計算する。スクラビング処理部157は、ステップS23で読み出された、反転ビット訂正後のデータを、ブロック131に対して(Cw+N)回連続的にリライトする。また、スクラビング処理部157は、スクラビング制御テーブル141の対応するレコード142内の書き込み回数Cwを、「Cw+N」に更新する。これにより、ブロック131に対する直近のリライト時における連続リライト回数が記録される。
[ステップS25b]スクラビング処理部157は、スクラビング制御テーブル141aの対応するレコード142aに記録された周期加算値mに基づき、このレコード142aに記録された周期設定値Mを「M+m」に更新する。これにより、スクラビングの実行周期がmだけ延長される。
また、処理例4におけるスクラビング制御処理では、図8のステップS34で反転ビット数が閾値n1以上と判定された場合に、図8のステップS35の代わりに図12に示すステップS35a,S35bが実行される。
[ステップS35a]スクラビング処理部157は、スクラビング制御テーブル141の対応するレコード142aに記録された書き込み回数Cwおよび回数設定値Nに基づき、連続リライト回数を(Cw+N)と計算する。スクラビング処理部157は、ステップS32で読み出された、反転ビット訂正後のデータを、ブロック131に対して(Cw+N)回連続的にリライトする。また、スクラビング処理部157は、スクラビング制御テーブル141の対応するレコード142内の書き込み回数Cwを、「Cw+N」に更新する。
[ステップS35b]スクラビング処理部157は、スクラビング制御テーブル141aの対応するレコード142aに記録された周期加算値mに基づき、このレコード142aに記録された周期設定値Mを「M+m」に更新する。
<処理例5>
次に、処理例5について説明する。なお、以下の処理例5の説明では、処理例1と同じ構成要素または同じ内容の処理ステップには同じ符号を付して示し、それらの説明を省略する。
処理例5では、通常書き込み時において、書き込みデータの特性に応じて書き込み回数を決定する。例として、書き込みデータが、短時間で書き替えられる可能性の高い「一時データ」の場合、そのデータは1回だけ書き込まれる。一方、書き込みデータが、短期間で書き替えられる可能性が低い、長期間の保存が目的とされた「長期保存データ」の場合、そのデータは複数回(以下の例ではN回)連続的に書き込まれる。
このように、処理例5では、処理例1~4とは異なり、書き込みデータの特性によっては、通常書き込み時でも複数回の連続書き込みの実行が許容される。長期保存データの場合、書き込み後にスクラビングが多くの回数実行される可能性が高いので、スクラビングの実行頻度の低減によるMRAM113のアクセス性能の向上効果が大きい。そのため、処理例5によれば、このようなデータについては、I/O制御部120からの書き込み要求に対する応答性能より、スクラビング実行頻度の低減による効果を優先して、通常書き込みの段階からデータの保持時間が長期化される。これにより、全体としてMRAM113のアクセス性能を向上させることができる。
一方、一時データについては、その後の短期間で書き替えられる可能性が高いので、スクラビングが繰り返し実行される可能性は低く、スクラビングの実行頻度の低減によるMRAM113のアクセス性能の向上効果は低い。そのため、処理例5によれば、このようなデータについては、スクラビング実行頻度の低減による効果より、I/O制御部120からの書き込み要求に対する応答性能を優先して、通常書き込み時における書き込み回数が1回に制限される。これにより、全体としてMRAM113のアクセス性能を向上させることができる。
以下、処理例5の内容についてフローチャートを用いて説明する。なお、処理例5では、処理例1と同様のスクラビング制御テーブル141(図5参照)が用いられる。また、I/O制御部120から書き込みが要求されるデータには、データが一時データか、長期保存データかを示す属性情報が付加されているものとする。あるいは、他の例として、I/O制御部120からデータの書き込みが要求される際に、そのデータの属性がI/O制御部120からコントローラ150に通知されてもよい。
図13は、処理例5における通常書き込み処理の手順を示すフローチャートの例である。なお、図13では、処理内容が図6と同様の処理ステップには同じステップ番号を付して示し、それらの説明を省略する。
処理例5における通常書き込み処理では、図6のステップS11とステップS12との間に、図13に示すステップS41の判定処理が実行される。また、ステップS41で「Yes」と判定された場合、ステップS42が実行され、その後ステップS13が実行される。
[ステップS41]書き込み要求受信部151は、書き込みデータに付加された属性情報に基づいて、書き込みデータが長期保存データかを判定する。書き込み要求受信部151は、書き込みデータが長期保存データである場合、ステップS42の処理を実行し、書き込みデータが長期保存データでなく、一時データである場合、ステップS12の処理を実行する。なお、後者の場合、ステップS12において書き込みデータが書き込み先のブロック131に1回だけ書き込まれるようになる。
[ステップS42]書き込み要求受信部151は、スクラビング制御テーブル141の対応するレコード142に記録された回数設定値Nに基づき、書き込みデータをブロック131に対してN回連続的に書き込む。また、書き込み要求受信部151は、スクラビング制御テーブル141の対応するレコード142内の書き込み回数Cwを、「N」に更新する。
なお、処理例5では、スクラビング制御処理については、図7、図8と同様の処理が実行される。ここで、ステップS42で書き込み回数Cwを「N」に更新することで、通常書き込み後の初回のスクラビング制御処理の実行時から、図7のステップS22では「Yes」と判定されるようになる。これにより、初回のリライト実行後におけるスクラビング実行周期だけでなく、通常書き込み後に初回のスクラビングが実行されるまでの周期も、通常の実行周期のN倍に延長され、スクラビングの実行周期の実行頻度をより低減できる。
<処理例6>
次に、処理例6について説明する。なお、以下の処理例6の説明では、処理例1と同じ構成要素または同じ内容の処理ステップには同じ符号を付して示し、それらの説明を省略する。
処理例6では、処理例5と同様に、通常書き込み時において、書き込みデータの特性に応じて書き込み回数を決定する。処理例6では、書き込みデータの特性に応じた書き込み回数を、処理例5より多くの段階で変化させる。さらに、通常書き込み時における書き込み回数に応じて、スクラビングの実行頻度も変化させる。
図14は、処理例6で利用されるデータ特性テーブルのデータ構成例を示す図である。処理例6では、MRAM140の記憶部140には、図5に示したスクラビング制御テーブル141に加えて、図14に示すデータ特性テーブル143が記憶される。
データ特性テーブル143は、書き込みデータのデータ特性ごとに、通常書き込み時におけるデータの書き込み回数を示す連続書き込み回数と、通常書き込み後のスクラビング実行周期とを保持する。図14では例として、データ特性は、書き込みデータの書き替え頻度の推定値に応じてP1~P5の5段階に分類されている。データ特性P1の書き込みデータは書き替え頻度が最も高く、論理ボリュームにおいて書き替えられずに保存される期間(保存期間)が最も短い。一方、データ特性P5の書き込みデータは書き替え頻度が最も低く、より長期間の保存が目的とされている。一例として、データ特性P1,P2,P3,P4,P5の書き込みデータについては、それぞれ8時間、1週間、2週間、1ヶ月、2ヶ月という保存期間が想定される。
連続書き込み回数は、書き替え頻度が低く、保存期間が長いデータ特性ほど、多い回数が設定される。また、スクラビング実行周期についても、書き替え頻度が低く、保存期間が長いデータ特性ほど、長い時間が設定される。図14の例では、データ特性P1~P5に対して、それぞれスクラビング実行周期M1~M5(ただし、M1<M2<M3<M4<M5)が設定されている。
以下、処理例6の内容についてフローチャートを用いて説明する。なお、I/O制御部120から書き込みが要求されるデータには、データ特性を示す属性情報が付加されているものとする。あるいは、他の例として、I/O制御部120からデータの書き込みが要求される際に、そのデータのデータ特性がI/O制御部120からコントローラ150に通知されてもよい。
図15は、処理例6における通常書き込み処理の手順を示すフローチャートの例である。なお、図15では、処理内容が図6と同様の処理ステップには同じステップ番号を付して示し、それらの説明を省略する。
処理例6における通常書き込み処理では、図6のステップS12の代わりに図15に示すステップS12a~12cが実行される。
[ステップS12a]書き込み要求受信部151は、データ特性テーブル143を参照し、書き込みデータのデータ特性に対応する連続書き込み回数を特定する。
[ステップS12b]書き込み要求受信部151は、書き込みデータを書き込み先のブロック131に対して、ステップS12aで特定された連続書き込み回数だけ連続的に書き込む。なお、特定された連続書き込み回数が「1」の場合、書き込みは1回だけ行われる。また、書き込み要求受信部151は、スクラビング制御テーブル141の対応するレコード142内の書き込み回数Cwを、特性された連続書き込み回数、すなわちデータを書き込んだ回数によって更新する。
[ステップS12c]書き込み要求受信部151は、データ特性テーブル143を参照し、書き込みデータのデータ特性に対応するスクラビング実行周期を特定する。書き込み要求受信部151は、スクラビング制御テーブル141の対応するレコード142に対して、周期設定値Mとして、特定されたスクラビング実行周期の値を設定する。これにより、書き込みデータのデータ特性に対応する周期設定値Mが設定される。
以上の図15の処理では、ステップS12bにおいて、書き替え頻度が低く、保存期間が長いデータ特性を有する書き込みデータほど、多くの回数だけ連続して書き込み先のブロック131に書き込まれる。これにより、保存期間が長いデータ特性を有する書き込みデータほど、I/O制御部120からの書き込み要求に対する応答性能より、スクラビング実行頻度の低減による効果を優先して、通常書き込みの段階からデータを保持可能な時間が長期化される。これにより、全体としてMRAM113のアクセス性能を向上させることができる。
なお、処理例6では、スクラビング制御処理については、図7、図8と同様の処理が実行される。ここで、ステップS12bでは、書き込み回数Cwとして書き込んだ回数が設定される。これにより、例えば、通常書き込み時に1回だけ書き込まれた場合、通常書き込み後の初回のスクラビング制御処理の実行時には、図7のステップS22で「No」と判定され、スクラビングが実行される。この場合、通常書き込み後には通常の実行周期でスクラビングが実行される。
一方、通常書き込み時に複数回連続して書き込まれた場合、通常書き込み後の初回のスクラビング制御処理の実行時には、図7のステップS22で「Yes」と判定され、周期設定値Mに基づき、通常より長い周期でスクラビングが実行される。ここで、ステップS12cの処理により、通常書き込み時に多くの回数だけ連続して書き込まれた書き込みデータほど、通常書き込み後におけるスクラビングの実行周期が長く設定される。このため、書き替え頻度が低く、保存期間が長いデータ特性を有する書き込みデータほど、通常書き込みの直後からスクラビングの実行頻度を低減できる。その結果、全体としてMRAM113のアクセス性能を向上させることができる。
〔第3の実施の形態〕
上記の第2の実施の形態では、通常書き込み時における連続書き込み回数の制御や、スクラビングの実行周期の制御、スクラビングでのリライト時の連続書き込み回数の制御が、MRAM113の内部のコントローラ150によって実行された。しかし、これらの制御は、CM101のプロセッサ111が所定のプログラムを実行することで実現されてもよい。この場合、CM101の外部に接続されたMRAMについても同様な制御を実行できる。
以下、第3の実施の形態として、このような制御が行われるCMを例示する。
図16は、第3の実施の形態におけるCMが備える処理機能の構成例を示す図である。なお、図16では、図4と同一の処理を実行する構成要素には同じ符号を付して示し、その説明を省略する。
図16に示すCM101aは、図4のMRAM113の代わりにMRAM113aを備える。MRAM113aは、図4のコントローラ150の代わりにコントローラ150aを備える。コントローラ150aは、図4の書き込み要求受信部151の代わりに書き込み要求受信部151aを備える。また、コントローラ150aは、図4のスクラビング処理部157を備えない。
また、CM101aは、記憶部160、書き込み制御部171、読み出し制御部172およびスクラビング処理部173を備える。記憶部160は、例えばRAM112など、CM101aが備える記憶装置によって実現される。書き込み制御部171、読み出し制御部172およびスクラビング処理部173の処理は、例えば、CM101aが備えるプロセッサ111が所定のプログラムを実行することで実現される。
記憶部160には、図4と同様のスクラビング制御テーブル141が記憶される。すなわち、スクラビング制御テーブル141は、MRAM113aの内部ではなく、その外部に記憶される点で第2の実施の形態とは異なる。
書き込み制御部171、読み出し制御部172は、それぞれ図4の書き込み要求受信部151、読み出し要求受信部154とほぼ同様の処理を実行する。書き込み制御部171は、メモリセルアレイ130に対するデータの書き込みやリライトを実行する場合、書き込み要求を書き込み要求受信部151aに出力する。書き込み要求受信部151aは、書き込み要求に応じて、書き込み処理部152に書き込み処理を実行させる。また、読み出し制御部172は、メモリセルアレイ130からデータを読み出す場合、読み出し要求を読み出し要求受信部154に出力する。読み出し要求受信部154は、読み出し要求をI/O制御部120やスクラビング処理部157からでなく、読み出し制御部172から受信する点のみ、図4の場合と異なる。
I/O制御部120およびスクラビング処理部173からの書き込み要求は、書き込み制御部171に出力される。また、I/O制御部120およびスクラビング処理部173からの読み出し要求は、読み出し制御部172に出力される。スクラビング処理部173は、図4のスクラビング処理部157と同様の処理を実行する。
このような構成により、第2の実施の形態におけるCM101と同様の処理を、第3の実施の形態におけるCM101aでも実行できる。なお、第3の実施の形態でも、処理例4と同様の処理が実行される場合、スクラビング制御テーブル141の代わりに図10に示すスクラビング制御テーブル141aが利用される。また、処理例6と同様の処理が実行される場合、記憶部160には図14に示すデータ特性テーブル143が記憶される。
なお、上記の各実施の形態に示した装置(例えば、情報処理装置1、CM101,101a)の処理機能は、コンピュータによって実現することができる。その場合、各装置が有すべき機能の処理内容を記述したプログラムが提供され、そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記憶装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記憶装置には、ハードディスク装置(HDD)、磁気テープなどがある。光ディスクには、CD(Compact Disc)、DVD(Digital Versatile Disc)、ブルーレイディスク(Blu-ray Disc:BD、登録商標)などがある。光磁気記録媒体には、MO(Magneto-Optical disk)などがある。
プログラムを流通させる場合には、例えば、そのプログラムが記録されたDVD、CDなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムまたはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムにしたがった処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムにしたがった処理を実行することもできる。また、コンピュータは、ネットワークを介して接続されたサーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムにしたがった処理を実行することもできる。
以上の各実施の形態に関し、さらに以下の付記を開示する。
(付記1) 不揮発性の記憶装置と、
前記記憶装置からデータを読み出す処理と、前記データを読み出した結果に応じて前記データの書き直しの要否を判定する処理と、書き直しが必要と判定した場合、読み出した前記データを前記記憶装置の同一位置に複数回連続的に書き直す処理とを含むスクラビング処理を実行する制御部と、
を有する情報処理装置。
(付記2) 前記制御部は、さらに、前記記憶装置に対する書き込み要求に応じて前記データを書き込む際には、前記データを前記記憶装置に1回書き込み、
前記制御部は、前記書き込み要求に応じた前記データの書き込み後、前記データについての前記スクラビング処理を第1の周期で実行し、実行された前記スクラビング処理において前記書き直しを最初に実行した後、前記スクラビング処理を前記第1の周期より長い第2の周期で実行する、
付記1記載の情報処理装置。
(付記3) 前記制御部は、前記第2の周期で前記スクラビング処理を所定回数実行すると、前記スクラビング処理の実行周期を前記第2の周期より短縮する、
付記2記載の情報処理装置。
(付記4) 前記制御部は、前記第2の周期で現れる前記スクラビング処理の実行時刻のうち、所定の複数回数ごとに、前記書き直す処理を前記判定の結果に関係なく実行する、
付記2記載の情報処理装置。
(付記5) 前記制御部は、前記書き直す処理を実行するたびに、前記データを連続的に書き直す回数を増加させる、
付記1乃至4のいずれか1つに記載の情報処理装置。
(付記6) 前記制御部は、前記書き直す処理を実行するたびに、前記データを連続的に書き直す回数を増加させるとともに、前記スクラビング処理の実行周期を延長する、
付記1記載の情報処理装置。
(付記7) 前記制御部は、さらに、前記記憶装置に対する書き込み要求に応じて前記データを書き込む際には、前記データを前記同一位置に1回または複数回連続的に書き込むとともに、前記データの特性に応じて前記データを書き込む回数を決定する、
付記1または6記載の情報処理装置。
(付記8) 前記制御部は、さらに、決定された前記データの書き込み回数に応じて、前記データについての前記スクラビング処理の実行周期を決定する、
付記7記載の情報処理装置。
(付記9) 前記判定では、読み出した前記データにおける反転したビット数が所定数以上の場合に書き直しが必要と判定し、
前記書き直す処理では、読み出した前記データにおける反転したビットを訂正した訂正後のデータを、前記記憶装置に書き直す、
付記1乃至8のいずれか1つに記載の情報処理装置。
(付記10) 不揮発性の記憶装置からデータを読み出す処理と、前記データを読み出した結果に応じて前記データの書き直しの要否を判定する処理と、書き直しが必要と判定した場合、読み出した前記データを前記記憶装置の同一位置に複数回連続的に書き直す処理とを含むスクラビング処理を実行する制御部、
を有する記憶制御装置。
(付記11) コンピュータに、
不揮発性の記憶装置からデータを読み出す処理と、前記データを読み出した結果に応じて前記データの書き直しの要否を判定する処理と、書き直しが必要と判定した場合、読み出した前記データを前記記憶装置の同一位置に複数回連続的に書き直す処理とを含むスクラビング処理を実行する、
処理を実行させる記憶制御プログラム。
(付記12) 前記コンピュータに、前記記憶装置に対する書き込み要求に応じて前記データを書き込む際には、前記データを前記記憶装置に1回書き込む処理をさらに実行させ、
前記書き込み要求に応じた前記データの書き込み後、前記データについての前記スクラビング処理は第1の周期で実行され、実行された前記スクラビング処理において前記書き直しを最初に実行した後、前記スクラビング処理は前記第1の周期より長い第2の周期で実行される、
付記11記載の記憶制御プログラム。
(付記13) 前記第2の周期で前記スクラビング処理が所定回数実行されると、前記スクラビング処理の実行周期は前記第2の周期より短縮される、
付記12記載の記憶制御プログラム。
(付記14) 前記第2の周期で現れる前記スクラビング処理の実行時刻のうち、所定の複数回数ごとに、前記書き直す処理が前記判定の結果に関係なく実行される、
付記12記載の記憶制御プログラム。
(付記15) 前記書き直す処理が実行されるたびに、前記データを連続的に書き直す回数が増加するとともに、前記スクラビング処理の実行周期が延長される、
付記11記載の記憶制御プログラム。
1 情報処理装置
1a 記憶装置
1b 制御部
2 スクラビング処理
3 データ
S1~S3 ステップ

Claims (8)

  1. 不揮発性の記憶装置と、
    前記記憶装置に対する書き込み要求に応じてデータを書き込む際に、前記データを前記記憶装置に1回書き込み、
    前記記憶装置から前記データを読み出す処理と、前記データを読み出した結果に応じて前記データの書き直しの要否を判定する処理と、書き直しが必要と判定した場合、読み出した前記データを前記記憶装置の同一位置に複数回連続的に書き直す処理とを含むスクラビング処理を実行する制御部と、
    を有し、
    前記制御部は、前記書き込み要求に応じた前記データの書き込み後、前記データについての前記スクラビング処理を第1の周期で実行し、実行された前記スクラビング処理において前記書き直しを最初に実行した後、前記スクラビング処理を前記第1の周期より長い第2の周期で実行する、
    情報処理装置。
  2. 前記制御部は、前記第2の周期で前記スクラビング処理を所定回数実行すると、前記スクラビング処理の実行周期を前記第2の周期より短縮する、
    請求項記載の情報処理装置。
  3. 前記制御部は、前記第2の周期で現れる前記スクラビング処理の実行時刻のうち、所定の複数回数ごとに、前記書き直す処理を前記判定の結果に関係なく実行する、
    請求項記載の情報処理装置。
  4. 前記制御部は、前記書き直す処理を実行するたびに、前記データを連続的に書き直す回数を増加させる、
    請求項1乃至のいずれか1項に記載の情報処理装置。
  5. 前記制御部は、前記書き直す処理を実行するたびに、前記データを連続的に書き直す回数を増加させるとともに、前記スクラビング処理の実行周期を延長する、
    請求項1記載の情報処理装置。
  6. 前記判定では、読み出した前記データにおける反転したビット数が所定数以上の場合に書き直しが必要と判定し、
    前記書き直す処理では、読み出した前記データにおける反転したビットを訂正した訂正後のデータを、前記記憶装置に書き直す、
    請求項1乃至のいずれか1項に記載の情報処理装置。
  7. 不揮発性の記憶装置に対する書き込み要求に応じてデータを書き込む際に、前記データを前記記憶装置に1回書き込み、
    前記記憶装置から前記データを読み出す処理と、前記データを読み出した結果に応じて前記データの書き直しの要否を判定する処理と、書き直しが必要と判定した場合、読み出した前記データを前記記憶装置の同一位置に複数回連続的に書き直す処理とを含むスクラビング処理を実行する制御部、
    を有し、
    前記制御部は、前記書き込み要求に応じた前記データの書き込み後、前記データについての前記スクラビング処理を第1の周期で実行し、実行された前記スクラビング処理において前記書き直しを最初に実行した後、前記スクラビング処理を前記第1の周期より長い第2の周期で実行する、
    記憶制御装置。
  8. コンピュータに、
    不揮発性の記憶装置に対する書き込み要求に応じてデータを書き込む際に、前記データを前記記憶装置に1回書き込み、
    前記記憶装置から前記データを読み出す処理と、前記データを読み出した結果に応じて前記データの書き直しの要否を判定する処理と、書き直しが必要と判定した場合、読み出した前記データを前記記憶装置の同一位置に複数回連続的に書き直す処理とを含むスクラビング処理を実行する、
    処理を実行させ
    前記スクラビング処理の実行では、前記書き込み要求に応じた前記データの書き込み後、前記データについての前記スクラビング処理を第1の周期で実行し、実行された前記スクラビング処理において前記書き直しを最初に実行した後、前記スクラビング処理を前記第1の周期より長い第2の周期で実行する、
    記憶制御プログラム。
JP2019006936A 2019-01-18 2019-01-18 情報処理装置、記憶制御装置および記憶制御プログラム Active JP7219397B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2019006936A JP7219397B2 (ja) 2019-01-18 2019-01-18 情報処理装置、記憶制御装置および記憶制御プログラム
US16/739,344 US20200233604A1 (en) 2019-01-18 2020-01-10 Information processing apparatus, storage control apparatus, and recording medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2019006936A JP7219397B2 (ja) 2019-01-18 2019-01-18 情報処理装置、記憶制御装置および記憶制御プログラム

Publications (2)

Publication Number Publication Date
JP2020119007A JP2020119007A (ja) 2020-08-06
JP7219397B2 true JP7219397B2 (ja) 2023-02-08

Family

ID=71609925

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019006936A Active JP7219397B2 (ja) 2019-01-18 2019-01-18 情報処理装置、記憶制御装置および記憶制御プログラム

Country Status (2)

Country Link
US (1) US20200233604A1 (ja)
JP (1) JP7219397B2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102670661B1 (ko) 2019-06-19 2024-05-31 삼성전자주식회사 반도체 메모리 장치 및 이를 포함하는 메모리 시스템
US11561729B2 (en) * 2020-08-19 2023-01-24 Micron Technology, Inc. Write determination counter
US20240302972A1 (en) * 2023-03-07 2024-09-12 Western Digital Technologies, Inc. Data Storage Device and Method for Read Scrub with Reduced Read Amplification

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006527447A (ja) 2003-06-12 2006-11-30 インフィネオン テクノロジーズ アクチエンゲゼルシャフト 磁気抵抗ランダムアクセスメモリの誤り検出訂正方法、および、その装置
JP2008299621A (ja) 2007-05-31 2008-12-11 Toshiba Corp データリフレッシュ装置、及びデータリフレッシュ方法
JP2010146654A (ja) 2008-12-19 2010-07-01 Toshiba Corp メモリ装置
US20120191900A1 (en) 2009-07-17 2012-07-26 Atsushi Kunimatsu Memory management device
US20150293896A1 (en) 2014-04-09 2015-10-15 Bitspray Corporation Secure storage and accelerated transmission of information over communication networks
JP2017059017A (ja) 2015-09-17 2017-03-23 株式会社東芝 メモリアクセス部を備える制御装置
US20170109232A1 (en) 2015-10-20 2017-04-20 Samsung Electronics Co., Ltd. Methods operating semiconductor memory devices with selective write-back of data for error scrubbing and related devices
US20170139761A1 (en) 2015-11-12 2017-05-18 Sandisk Technologies Llc Variable-Term Error Metrics Adjustment
US20180081570A1 (en) 2016-09-20 2018-03-22 Kabushiki Kaisha Toshiba Memory system and processor system

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130191833A1 (en) * 2012-01-23 2013-07-25 Dell Products L.P. System and method for assuring performance of data scrubbing operations
US8918699B2 (en) * 2012-07-31 2014-12-23 Kabushiki Kaisha Toshiba Non-volatile semiconductor storage apparatus
US10452315B2 (en) * 2014-09-24 2019-10-22 Hewlett Packard Enterprise Development Lp Block priority information
KR102507302B1 (ko) * 2018-01-22 2023-03-07 삼성전자주식회사 스토리지 장치 및 상기 스토리지 장치의 동작 방법

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006527447A (ja) 2003-06-12 2006-11-30 インフィネオン テクノロジーズ アクチエンゲゼルシャフト 磁気抵抗ランダムアクセスメモリの誤り検出訂正方法、および、その装置
JP2008299621A (ja) 2007-05-31 2008-12-11 Toshiba Corp データリフレッシュ装置、及びデータリフレッシュ方法
JP2010146654A (ja) 2008-12-19 2010-07-01 Toshiba Corp メモリ装置
US20120191900A1 (en) 2009-07-17 2012-07-26 Atsushi Kunimatsu Memory management device
US20150293896A1 (en) 2014-04-09 2015-10-15 Bitspray Corporation Secure storage and accelerated transmission of information over communication networks
JP2017059017A (ja) 2015-09-17 2017-03-23 株式会社東芝 メモリアクセス部を備える制御装置
US20170109232A1 (en) 2015-10-20 2017-04-20 Samsung Electronics Co., Ltd. Methods operating semiconductor memory devices with selective write-back of data for error scrubbing and related devices
US20170139761A1 (en) 2015-11-12 2017-05-18 Sandisk Technologies Llc Variable-Term Error Metrics Adjustment
US20180081570A1 (en) 2016-09-20 2018-03-22 Kabushiki Kaisha Toshiba Memory system and processor system
JP2018049671A (ja) 2016-09-20 2018-03-29 株式会社東芝 メモリシステムおよびプロセッサシステム

Also Published As

Publication number Publication date
JP2020119007A (ja) 2020-08-06
US20200233604A1 (en) 2020-07-23

Similar Documents

Publication Publication Date Title
JP7224689B2 (ja) 誤り訂正及びデータスクラビング回路を備えたメモリシステム
US9916087B2 (en) Method and system for throttling bandwidth based on temperature
US10672497B2 (en) Memory system and method for bad block management
US9063844B2 (en) Non-volatile memory management system with time measure mechanism and method of operation thereof
KR102677592B1 (ko) 연장된 제품 수명을 갖는 메모리장치 및 그 동작방법
US9146850B2 (en) Data storage system with dynamic read threshold mechanism and method of operation thereof
US9183137B2 (en) Storage control system with data management mechanism and method of operation thereof
US8719491B2 (en) Encoding flash memory data with a randomizer using different seeds for different sectors
US8631310B2 (en) Method for reducing uncorrectable errors of a memory device regarding error correction code, and associated memory device and controller thereof
KR101343262B1 (ko) 동시 판독 및 기록 메모리 동작을 수행하는 방법 및 장치
US10795827B2 (en) Adaptive management of intermediate storage
US9256526B2 (en) Flash memory storage system and access method
JP7219397B2 (ja) 情報処理装置、記憶制御装置および記憶制御プログラム
JP2012022422A (ja) 半導体記録再生装置
US9898201B2 (en) Non-volatile memory device, and storage apparatus to reduce a read retry occurrence frequency and prevent read performance from lowering
US20090024787A1 (en) Data writing method and apparatus
KR20170078592A (ko) 메모리 컨트롤러, 기억 장치, 정보 처리 시스템 및 메모리의 제어 방법
JP5592478B2 (ja) 不揮発性記憶装置及びメモリコントローラ
US20070041234A1 (en) Storage device, file storage device, and computer system
JP6342013B2 (ja) 不揮発性メモリ・アレイを含むデータ・ストレージ・システムを動作させるための方法、システム及びコンピュータ・プログラム
JP2011059907A (ja) 端末装置及びそれに用いる不揮発メモリ管理方法並びにそのプログラム
JP5363460B2 (ja) 誤り訂正機能付きコントローラ、誤り訂正機能付き記憶装置、及び誤り訂正機能付きシステム
JP2011227802A (ja) データ記録装置
US10922025B2 (en) Nonvolatile memory bad row management
TWI823649B (zh) 快閃記憶體控制器的控制方法、快閃記憶體控制器以及電子裝置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210810

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20210820

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20210820

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20220616

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220712

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220906

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: 20221227

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230109

R150 Certificate of patent or registration of utility model

Ref document number: 7219397

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150