JP2013222236A - メモリの管理方法、記憶装置およびそれを搭載した計算機 - Google Patents

メモリの管理方法、記憶装置およびそれを搭載した計算機 Download PDF

Info

Publication number
JP2013222236A
JP2013222236A JP2012091671A JP2012091671A JP2013222236A JP 2013222236 A JP2013222236 A JP 2013222236A JP 2012091671 A JP2012091671 A JP 2012091671A JP 2012091671 A JP2012091671 A JP 2012091671A JP 2013222236 A JP2013222236 A JP 2013222236A
Authority
JP
Japan
Prior art keywords
block
data
consumable
management table
threshold value
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.)
Pending
Application number
JP2012091671A
Other languages
English (en)
Inventor
Ryoichi Inada
遼一 稲田
Makoto Fujita
良 藤田
Yuzuru Takahashi
譲 高橋
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.)
Hitachi Ltd
Original Assignee
Hitachi 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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2012091671A priority Critical patent/JP2013222236A/ja
Priority to US13/859,131 priority patent/US9026892B2/en
Priority to CN2013101259080A priority patent/CN103377136A/zh
Publication of JP2013222236A publication Critical patent/JP2013222236A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7211Wear leveling

Abstract

【課題】不揮発性メモリからのデータ読み出し時にエラーが発生した場合でも、記憶装置の稼働時間を延長させる
【解決手段】記憶装置は、不揮発性メモリとRAMとメモリコントローラを有する。RAMは空きブロック管理テーブルと消耗ブロック管理テーブルを有する。メモリコントローラは、空きブロックの数が閾値1以上であり、不揮発性メモリからの読み出しデータに閾値2以上閾値3未満のエラーが含まれていた場合、該当ブロックを消耗ブロックとして消耗ブロック管理テーブルに登録する。メモリコントローラは、空きブロックの数が閾値1未満になったとき、消耗ブロック管理テーブルに登録されている消耗ブロックを空きブロックとして空きブロック管理テーブルに登録する。
【選択図】図1

Description

本発明は、メモリの管理方法、記憶装置およびそれを搭載した計算機に関する。
情報機器の補助記憶装置として、一般的には磁気ディスク記憶装置が広く使用されている。しかし、近年ではこの磁気ディスク記憶装置に代わり、半導体メモリを記憶媒体とする記憶装置が増えてきている。その中でも、電気的に消去可能かつ再書き込み可能な不揮発性メモリ(EEPROM:Electrically Erasable Programmable Read Only Memory)の一種であるフラッシュメモリを用いた記憶装置が主流となってきている。
このフラッシュメモリは、磁気ディスクと比べて読み出し及び書き込み速度に優れる。一方で、書き込み回数や読み出し回数が増加すると内部に保存しているデータが変化し、エラーが発生するなどの問題もある。
そのため、フラッシュメモリを用いた記憶装置では、制御コントローラ内部にエラー訂正回路を設け、一定数までのエラーは許容できるようにすることが多い。また、信頼性を確保するため、データ保持領域とは別に予備領域を設け、エラーが一定数以上の場合には該当のデータ保持領域を破棄し、予備領域を代わりに使用する場合もある。しかし、この方法を用いた場合、エラーが多発すると予備領域が急速に失われ、記憶装置の稼働時間が短くなる虞がある。
このフラッシュメモリを用いた記憶装置の背景技術として、特許文献1がある。特許文献1では、エラーによって予備領域が急激に減少することを防止するために、「フラッシュメモリデバイスにエラー訂正回路とブロック管理手段とを設け、予備ブロックの残数がブロック管理手段に設定された閾値に至った後は、bitエラーのあったデータをエラー訂正してホストに送出するとともに、該エラーを生起したブロックをリフレッシュする。リフレッシュは当該ブロックのエラー訂正されたデータを含む全データを空きブロック若しくは予備ブロックに書き写し、元のブロックのデータを消去することにより実行する。又は、空きブロック若しくは予備ブロックに書き写してから元のブロックに書き戻すことにより実行する。」と記載されている。
特開2010−86404号公報
特許文献1では、予備ブロックが一定数未満になった場合に、エラー数が閾値2(6ビット)未満のブロックをリフレッシュし、空きブロックもしくは予備ブロックと入れ替えている。しかしこの方法では、予備ブロックが一定数以上の場合はブロックのリフレッシュを行わず、エラー数が閾値1(4ビット)以上閾値2未満のブロックを不良ブロックとして破棄している。そのため、リフレッシュできるブロック数が少なく、稼働時間の延長効果が小さい。
稼働時間の延長効果を図るには、不良ブロックとして破棄している領域の取り扱いを見直す必要がある。具体的には、予備ブロックが一定数以上、エラー数が閾値1(4ビット)以上閾値2未満のときの取り扱いを見直す必要がある。
そこで、本発明は、稼働時間をより延長することができるメモリの管理方法、記憶装置およびそれを搭載した計算機を提供する。
上記課題を解決するために、例えば特許請求の範囲に記載の構成を採用する。
本願は上記課題を解決する手段を複数含んでいるが、その一例を挙げるならば、「ある所定の書き込み単位であるページ40bと前記書き込み単位よりも大きい消去単位であるブロック40aを持つ不揮発性メモリ40とデータの読み出し及び書き込みができるRAM50と前記不揮発性メモリ40および前記RAM50への読み出し及び書き込み処理を行うメモリコントローラ30を有する記憶装置10であって、前記RAM50は、空きブロック61を管理する空きブロック管理テーブル52と、消耗ブロック62を管理する消耗ブロック管理テーブル53を有し、前記メモリコントローラ30は、前記空きブロック管理テーブル52に登録されている空きブロック61の数が閾値1以上であり、前記不揮発性メモリ40から読み出したデータに閾値2以上閾値3未満のエラーが含まれていた場合、該データを保持しているデータブロック60を前記消耗ブロック管理テーブル53に消耗ブロック62として登録し、前記空きブロック管理テーブル52に登録されている空きブロック61の数が前記閾値1未満である場合、前記消耗ブロック管理テーブル53に登録されている消耗ブロック62を前記空きブロック管理テーブル52に空きブロック61として登録すること」を特徴とする。
本発明によれば、空きブロックが一定数以上の状態でも消耗ブロックを確保し、空きブロックが一定数未満となった際に、確保した消耗ブロックを空きブロックとして補充することで、記憶装置の稼働時間をより延長することができる。
上記した以外の課題、構成及び効果は、以下の実施形態の説明により明らかにされる。
本発明の実施例1を説明するためのハードウェア構成図。 不揮発性メモリの内部構成図。 不揮発性メモリの各ブロック40aの使用状態を表した図。 実施例1における論理/物理アドレス変換テーブルの内容を表した図。 実施例1における空きブロック管理テーブルの内容を表した図。 実施例1における消耗ブロック管理テーブルの内容を表した図。 実施例1におけるデータ読み出し処理のフローチャート。 実施例1におけるブロック交替処理のフローチャート。 実施例1における空きブロックへのデータ移動処理のフローチャート。 実施例1における空きブロック補充処理のフローチャート。 実施例1におけるブロック管理方法をマップとして表した図。 実施例2におけるハードウェア構成図。 実施例3におけるハードウェア構成図。 実施例3における消耗ブロック管理テーブルの内容を表した図。 実施例3におけるブロック交替処理のフローチャート。 実施例3における空きブロック補充処理のフローチャート。 実施例4におけるハードウェア構成図。 実施例4におけるエラーカウント情報の内容を表した図。 実施例4におけるブロック交替処理のフローチャート。 実施例5におけるハードウェア構成図。 実施例5における論理/物理アドレス変換テーブルの内容を表した図。 実施例5におけるデータ読み出し処理のフローチャート。 実施例5における物理アドレスBからのデータ読み出し処理のフローチャート。 実施例5におけるブロック交替処理Aのフローチャート。 実施例5におけるブロック交替処理Bのフローチャート。 実施例5における空きブロックAへのデータ移動処理のフローチャート。 実施例5における空きブロックBへのデータ移動処理のフローチャート。 実施例6におけるハードウェア構成図である。 実施例6におけるブロック交替処理Aのフローチャート。 実施例6におけるブロック交替処理Bのフローチャート。 実施例6における消耗ブロックAへのデータ移動処理のフローチャート。 実施例6における消耗ブロックBへのデータ移動処理のフローチャート。
以下、図面を用いて実施例を説明する。
実施例1では、稼働時間をより延長できる記憶装置の例を説明する。
図1は、実施例1におけるハードウェア構成図の例である。
計算機1は、記憶装置10と、命令処理装置3と、主記憶メモリ4と、入出力制御装置5と、ネットワーク制御装置6と、表示装置7と、データバス2とを備えている。記憶装置10と、命令処理装置3と、主記憶メモリ4と、入出力制御装置5と、ネットワーク制御装置6と、表示装置7の間は、相互にデータバス2を介して接続されている。
このうち命令処理装置3は、記憶装置10または主記憶メモリ4に格納されている命令に基いてデータを処理し、入出力制御装置5と、ネットワーク制御装置6と、表示装置7とを制御する。
記憶装置10と主記憶メモリ4は、命令処理装置3からの処理に従い、データの書き込みと、書き込んだデータの読み出しとを行う。
入出力制御装置5は、命令処理装置3がデータバス2を介して外部機器(不図示)とのデータの入出力を制御する装置である。入出力制御装置5を介してデータを入出力する外部機器は、例えば、キーボード、マウス、外付けの記憶装置10などである。
ネットワーク制御装置6は、命令処理装置3がデータバス2を介してネットワーク(不図示)とのデータの入出力を制御する装置である。
表示装置7は、命令処理装置3の制御によってデータの表示を行う装置である。
記憶装置10は、I/F(インターフェース)制御部20と、メモリコントローラ30と、RAM50と、1つ以上の不揮発性メモリ40とを有している。
I/F制御部20は、命令処理装置3とメモリコントローラ30との間におけるデータの入出力制御を行う。
メモリコントローラ30は、RAM50と、不揮発性メモリ40とを制御するものである。メモリコントローラ30は、ブロック管理部31とエラー訂正回路32と不揮発性メモリ制御部33とを有している。
ブロック管理部31は、命令処理装置3からの命令に従い、不揮発性メモリ40に対するデータ入出力を制御する。また、図3を用いて後述するデータブロック60、空きブロック61、消耗ブロック62を管理し、RAM50内の論理/物理アドレス変換テーブル51、空きブロック管理テーブル52、消耗ブロック管理テーブル53の更新を行う。
エラー訂正回路32は、不揮発性メモリ40から読み出されたデータにエラーが含まれているか判断し、エラーが含まれている場合にはエラー訂正を実施する。また、ブロック管理部31に対して、エラー数の通知も行う。
不揮発性メモリ制御部33は、ブロック管理部31からの指示に従い、不揮発性メモリ40に対するデータの書き込みおよび読み出しを行う。
不揮発性メモリ40は、不揮発性メモリ制御部33によって書き込み指示されたデータを格納する。本実施例で記載の不揮発性メモリ40は、所定の書き込み単位と書き込み単位より大きい消去単位を持ち、データを書き換える場合には、書き込みの前に消去動作を必要とする。不揮発性メモリ40の構成は、後記の図2において詳細に説明する。
RAM50は、論理/物理アドレス変換テーブル51、空きブロック管理テーブル52、消耗ブロック管理テーブル53を格納する。論理/物理アドレス変換テーブル51は、不揮発性メモリ40内に格納しているデータの格納場所を示すものであり、後記の図4にて詳細に説明する。空きブロック管理テーブルは、空きブロック情報の管理を行うものであり、後記の図5にて詳細に説明する。消耗ブロック管理テーブル53は、消耗ブロック情報の管理を行うものであり、後記の図6にて詳細に説明する。
このRAM50は、SRAM(Static RAM)やDRAM(Dynamic RAM)のような揮発性メモリであっても、MRAM(Magnetic RAM)やReRAM(Resistance RAM)、PRAM(Phase change RAM)のような不揮発性メモリであってもよい。ただし、不揮発性メモリを用いる場合には、データ書き換えの際に消去動作を必要としない不揮発性メモリである必要がある。また、RAM50はメモリコントローラ30の内部にあってもよい。
図2は、不揮発性メモリ40の構成を示した図である。不揮発性メモリ40は1つ以上の消去単位から構成され、この消去単位をブロック40aと呼ぶ。また、このブロック40aは1つ以上の書き込み単位から構成されており、この書き込み単位をページ40bと呼ぶ。本実施例では、不揮発性メモリ40のブロック数をMブロック、1ブロック当たりのページ数をNページとする。
図3は、不揮発性メモリ40における各ブロック40aの使用状態を表した図である。本実施例では、ブロック40aをデータブロック60、空きブロック61、消耗ブロック62の3つの役割に分けて使用する。データブロック60は、命令処理装置3から書き込み命令を受けたデータを保持するブロックである。空きブロック61は、各ページ40bともデータを保持していないブロックである。
消耗ブロック62も、空きブロック61と同様に各ページ40bともデータを保持していないブロックである。空きブロック61と消耗ブロック62の違いはエラー発生の有無であり、これは図9のブロック交替処理フローチャートにて詳しく説明する。
図4は、実施例1における論理/物理アドレス変換テーブル51の構成図である。論理/物理アドレス変換テーブル51は、論理ページアドレス51aに対応する物理アドレス51bを管理するテーブルである。論理/物理アドレス変換テーブル51は、論理ページアドレス51a、物理アドレス51bを有しており、物理アドレス51bは物理ブロック番号51cと物理ページ番号51dの組み合わせによって表わされる。論理ページアドレス51aは、命令処理装置3が指定する論理アドレスをページ40b単位にまとめたものである。
図5は、実施例1における空きブロック管理テーブル52の構成図である。空きブロック管理テーブル52は、空きブロック61の管理情報を格納するテーブルであり、空きブロックエントリ番号52a、有効フラグ52b、物理ブロック番号52cを有する。
空きブロックエントリ番号52aは、空きブロック61の登録番号であり、本実施例では最大C個の空きブロック61が登録可能である。
有効フラグ52bは、対象の空きブロックエントリ番号52aに登録されている物理ブロック番号52cのブロックが、空きブロック61として使用可能かを表す情報である。有効フラグ52bには、該当のブロックが空きブロック61として使用可能ならば「1」、使用不可能ならば「0」が格納される。
図6は、実施例1における消耗ブロック管理テーブル53の構成図である。消耗ブロック管理テーブル53は、消耗ブロック62の管理情報を格納するテーブルであり、消耗ブロックエントリ番号53a、有効フラグ53b、物理ブロック番号53cを有する。
消耗ブロックエントリ番号53aは、消耗ブロック62の登録番号であり、本実施例では最大W個の消耗ブロック62が登録可能である。
有効フラグ53bは、対象の消耗ブロックエントリ番号53aに登録されている物理ブロック番号53cのブロックが、消耗ブロック62として使用可能かを表す情報である。有効フラグ53bには、該当のブロックが消耗ブロック62として使用可能ならば「1」、使用不可能ならば「0」が格納される。
図7は、実施例1におけるデータ読み出し処理のフローチャートである。なお、フローチャートに登場する処理において、ステップ番号が同じものはすべて同じ処理を行う。そのため、以前に説明済みの処理については、再度の説明はせずに省略する。
図1において、命令処理装置4から記憶装置10に対してデータ読み出しが要求されると、記憶装置10はデータ読み出し処理を開始する。
なお、図7を含めて以後に説明するフローチャートでの処理は、基本的には記憶装置10内のメモリコントローラ30において実行される。具体的にメモリコントローラ30のどの機能(ブロック管理部31、エラー訂正回路32、不揮発性メモリ制御部33)が実行するかについては、各フローチャートブロックの左側に、これらの記号で表示している。
まず、ステップS10において、メモリコントローラ30内のブロック管理部31は、I/F制御部20を介して命令処理装置3から読み出し対象の論理アドレスとデータサイズを受け取る。
次にステップS11において、ブロック管理部31は、受け付けた論理アドレスを論理ページアドレス51aに変換する。その後、ブロック管理部31は、図4の論理/物理アドレス変換テーブル51を用いて、論理ページアドレス51aに対応する物理アドレス51bを読み出す。
ステップS12において、ブロック管理部31は、ステップS11で読み出した物理アドレス51bからデータを読み出すように、不揮発性メモリ制御部33に指示する。不揮発性メモリ制御部33は、ブロック管理部31からの指示に従い、図1の不揮発性メモリ40からデータを読み出す。
ステップS13において、不揮発性メモリ制御部33は、ステップS12で不揮発性メモリ40から読み出したデータをエラー訂正回路32に受け渡す。エラー訂正回路32は、不揮発性メモリ制御部33から受け取ったデータにエラーが含まれているかを判断する。
このとき、データにエラーが含まれていればステップS14の処理に移る。データにエラーが含まれていなければ、データをブロック管理部31に転送した後、ステップS19の処理に移る。
ステップS14において、エラー訂正回路32は、データに含まれているエラーが訂正可能か判断する。訂正可能な場合にはステップS15の処理に移り、訂正不可能な場合にはステップS18の処理に移る。
ステップS15において、エラー訂正回路32は、データ内のエラー訂正を行う。このとき、エラー訂正回路32は、訂正後のデータをブロック管理部31に転送すると共に、訂正したエラー数をブロック管理部31に通知する。
ステップS16において、ブロック管理部31は、I/F制御部20を介して訂正後のデータを命令処理装置3に転送する。
ステップS17において、ブロック管理部31は、ブロック交替処理を実施する。このブロック交替処理については、後記の図8において詳しく説明する。
ステップS18において、エラー訂正回路32は、エラー訂正が不可能であることをブロック管理部31に通知する。ブロック管理部31は、エラー訂正回路32からの通知を受けて、I/F制御部20を介して命令処理装置3にデータ読み出しエラーを通知する。
ステップS19において、ブロック管理部31は、エラー訂正回路32から受け取ったデータをI/F制御部20を介して、命令処理装置3に転送する。
記憶装置10は、ステップS17、ステップS18、ステップS19のいずれかの処理が完了すると、図7のデータ読み出し処理を終了する。
図7の処理により、記憶装置10Eがデータバス2に送出するデータの取り扱いを整理すると以下のようである。まず不揮発性メモリ40から取り出したデータにエラーがないときにはそのまま転送する。エラーがありかつ訂正可能であるときには、訂正データを転送するとともに訂正エラー数の情報を与える。エラーがありかつ訂正不可能であるときには、データ読み出しエラーを与える。
図8は、実施例1におけるブロック交替処理のフローチャートである。
ステップS20において、ブロック管理部31は、空きブロック管理テーブル52に登録されている空きブロック数が閾値1以上であるか判断する。空きブロック数が閾値1以上であればステップS21の処理に移り、空きブロック数が閾値1未満であればステップS25の処理に移る。
なお図5に示したように、空きブロック管理テーブル52の空きブロックエントリ番号52aに登録されている空きブロック61は最大C個である。ここでは、このうち有効フラグ52bの情報を参照して使用可能(データ「1」)な個数を抽出して、これを閾値1と比較している。
ステップS21において、ブロック管理部31は、エラー訂正回路32から通知されたエラー数が閾値2以上であるか判断する。エラー数が閾値2以上であればステップS22の処理に移り、閾値2未満であればブロック交替処理を終了する。
ステップS22において、ブロック管理部31および不揮発性メモリ制御部33は、空きブロックへのデータ移動を実施する。この空きブロックへのデータ移動は、後記の図9にて詳細に説明する。
空きブロックへのデータ移動後のステップS23において、ブロック管理部31は、エラー訂正回路32から通知されたエラー数が閾値3以上であるか判断する。エラー数が閾値3以上であればブロック交替処理を終了し、閾値3未満であればステップS24の処理に移る。なお、閾値3は閾値2よりも大きい値である。
ステップS24において、ブロック管理部31は、RAM50から消耗ブロック管理テーブル53(図6)を読み出し、有効フラグ53bが「0:消耗フラグとして使用不可」となっている消耗ブロックエントリ番号53aを検索する。そして、該当する消耗ブロックエントリ番号53aの物理ブロック番号53cにエラーが発生したブロック番号を登録し、有効フラグ53bを「1:消耗フラグとして使用可」に変更する。ステップS24の処理完了後、ブロック管理部31はブロック交替処理を終了する。
ステップS25において、ブロック管理部31は、エラー訂正回路32から通知されたエラー数が閾値3以上であるか判断する。エラー数が閾値3以上であればステップS22の処理(空きブロックへのデータ移動処理)に移り、閾値3未満であればブロック交替処理を終了する。
ステップS26において、ブロック管理部31は、空きブロック補充処理を実施する。この空きブロック補充処理は、後記の図10で詳しく説明する。ステップS26の処理完了後、ブロック管理部31はブロック交替処理を終了する。
以上の図8の処理により、エラー数の個数に応じて以下のように処理されたことになる。まず、エラー個数が少ない(閾値2未満)ときにはデータ移動処理は行わない。エラー個数が多い(閾値3以上)ときには、空きブロックへのデータ移動処理を行い、かつこの処理により空きブロックの個数が減少したので、空きブロックの個数を補充する。エラー個数が中間(閾値2以上、閾値3未満)であるときには、消耗ブロック管理テーブル53に登録することで、以降は消耗ブロックとして管理する。
図9は、実施例1における空きブロックへのデータ移動処理(図8のステップS22)のフローチャートである。
ステップS30において、ブロック管理部31は、RAM50から空きブロック管理テーブル52(図5)を読み出し、有効フラグ52bが「1:空きブロックとして使用可能」となっている空きブロックエントリ番号52aを1つ選択し、その物理ブロック番号52cを取得する。ここで、空きブロックエントリ番号52aの選択方式は特に限定せず、例えばFIFO(First In First Out)のように登録が古いエントリから順に選択してもよい。
ステップS31において、ブロック管理部31は、エラーが発生したデータブロック60が保持するデータを、ステップS30で選択した物理ブロック番号52cにコピーするように、不揮発性メモリ制御部33に指示する。不揮発性メモリ制御部33は、ブロック管理部31の指示に従い、選択したブロックへのデータコピーを実施する。また、データコピー完了後、ブロック管理部31はエラーが発生したデータブロック60のデータを消去するように、不揮発性メモリ制御部33に指示を出す。不揮発性メモリ制御部33は、ブロック管理部31からの指示に従って該当ブロック内のデータを消去する。
ステップS32において、ブロック管理部31は、論理/物理アドレス変換テーブル51(図4)において、コピーしたデータの論理ページアドレス51aに対応する物理アドレス51bを、コピー先である空きブロック61に更新する。
ステップS33において、ブロック管理部31は、空きブロック管理テーブル52(図5)において、ステップS30で選択した空きブロックエントリ番号52aの有効フラグ52bを「0:空きブロックとして使用不可能」に変更する。
このように、空きブロックへのデータ移動処理(図8のステップS22)によれば、エラーが発生したデータブロック60が保持するデータを、新たな空きブロックにコピーし、以後このコピーされた空きブロックをデータブロックとして取り扱う。
なお、空きブロックへのデータ移動処理(図8のステップS22)は、その後のステップS24と組み合わせて実施される(閾値2以上閾値3未満のエラーのとき)ことで、元のエラー発生したデータブロック60を消耗ブロック62として以後管理することになる。
図10は、実施例1における空きブロック補充処理のフローチャートである。
ステップS40において、ブロック管理部31は、RAM50から消耗ブロック管理テーブル53(図6)を読み出し、有効フラグ53bが「1:消耗ブロックとして使用可能」となっている消耗ブロックエントリ番号53aを1つ選択し、その物理ブロック番号53cを取得する。ここで、消耗ブロックエントリ番号53aの選択方式は特に限定せず、例えばFIFO(First In First Out)のように登録が古いエントリから順に選択してもよい。
ステップS41において、ブロック管理部31は、RAM50から空きブロック管理テーブル52(図5)を読み出し、有効フラグ52bが「0:空きブロックとして使用不可能」となっている空きブロックエントリ番号52aを検索する。そして、該当する空きブロックエントリ番号52aの物理ブロック番号52cにステップS26で取得した物理ブロック番号53cを登録し、有効フラグ52bを「1:空きブロックとして使用可能」に変更する。その後、消耗ブロック管理テーブル53において、ステップS26で選択した消耗ブロックエントリ番号53aの有効フラグ53bを「0:消耗ブロックとして使用不可能」に変更する。ステップS41の処理完了後、ブロック管理部31は空きブロック補充処理を終了する。
図10の一連の処理により、消耗ブロック内の選択したブロックを以後空きブロックとして使用することになる。つまり、空きブロックの個数を補充したことになる。なお、閾値3以上のエラーのとき、元のエラー発生したデータブロック60の取り扱いであるが、このブロックは図9によるデータの移動が完了した後、消耗ブロック62として登録されないため、事実上は不良ブロックとして以後使用しないように取り扱うことになる。
図11は、実施例1におけるブロック管理方法をマップ状に表した図である。
本図では、縦軸に空きブロック管理テーブル52に登録されている空きブロック数を記述し、横軸にデータ読み出し時のエラー発生数を記述している。ここでは、縦横の条件に応じてA1からA6の6領域に分けて処理対応を定めている。
実施例1の処理事例では、データ読み出し時のエラー発生数が少ない(エラー数が閾値2未満)ときは、領域A1,A2に示すように空きブロック管理テーブルに登録されている空きブロック数に関わりなくエラー訂正処理のみを行う。
また、実施例1の処理事例では、データ読み出し時のエラー発生数が多い(エラー数が閾値3以上)ときは、領域A5,A6に示すように空きブロック管理テーブルに登録されている空きブロック数に関わりなくブロック破棄処理を行う。
また、データ読み出し時のエラー発生数が中間(エラー数が閾値2以上で閾値3未満)で、かつ空きブロック管理テーブルに登録されている空きブロック数が少ない(空きブロック数が閾値1未満)ときも、領域A3に示すようにエラー訂正処理のみを行う。
これに対し、本発明では領域A4の取り扱いを工夫している。つまり予備ブロック(空きブロック)が一定数以上、エラー数が閾値2以上閾値3未満のときの取り扱いを見直した点に特徴を有する。
空きブロック数が閾値1(縦軸)以上であり、データ読み出し時のエラー数が閾値2以上閾値3未満(横軸)である場合には、領域A4に該当する。このときには、エラー訂正を実施後、エラーが発生したブロックのデータを空きブロック61へコピーする。そして、エラーが発生したブロックを消耗ブロック管理テーブル53に登録し、データコピー先の空きブロック61をデータブロック60とする。空きブロック61からデータブロック60への変更は、論理/物理アドレス変換テーブル51の更新によって実施している。
空きブロック数が閾値1以上(縦軸)であり、データ読み出し時のエラー数が閾値3以上(横軸)である場合には、領域A6に該当する。このときには、エラー訂正を実施後、エラーが発生したブロックのデータを空きブロック61へコピーする。そして、エラーが発生したブロックを破棄すると共に、データコピー先の空きブロック61をデータブロック60とする。ブロックの破棄は、論理/物理アドレス変換テーブル51を更新し、物理アドレス51bからエラーが発生したブロックを消すことで実施している。
空きブロック数が閾値1未満(縦軸)であり、データ読み出し時のエラー数が閾値3以上(横軸)である場合には、領域A5に該当する。このときには、エラー訂正を実施後、エラーが発生したブロックのデータを空きブロック61へコピーする。そして、エラーが発生したブロックを破棄すると共に、データコピー先の空きブロック61をデータブロック60に変更し、消耗ブロック62の1つを空きブロック61に変更する処理を行う。
以上の考え方を整理すると、実施例1は、メモリを消去単位である複数のブロックにより構成し、メモリの複数のブロックを、複数のデータブロックと、複数の空きブロックと、消耗ブロックに分けて使用するメモリの管理方法であって、メモリからのデータ読み出し時にデータチェックを行い、読み出したデータのエラー数が閾値2未満であるときに当該データを保持しているデータブロックをデータブロックとして使用継続し、読み出したデータのエラー数が閾値3未満であるときに当該データを保持しているデータブロックを破棄し、空きブロックの数が閾値1以上であり、読み出したデータに閾値2以上閾値3未満のエラーが含まれる場合に、当該データを保持しているデータブロックを消耗ブロックとし、空きブロックの数が閾値1未満であり、読み出したデータに閾値3以上のエラーが含まれる場合に、消耗ブロックを空きブロックとして使用するものである。
以上で説明した実施例1では、次のような効果がある。
ブロック管理部31は、空きブロック管理テーブル52に登録されている空きブロック数が閾値1以上の場合にも、エラーが発生したデータブロック60を消耗ブロック管理テーブル53に消耗ブロック62として登録している。これにより、空きブロック管理テーブル52に登録されている空きブロック数が閾値1未満になった場合に、補充できる消耗ブロック62を多数確保でき、記憶装置10の稼働時間をより延長させることができる。
本発明の以下の実施例においても、領域A4の使用に工夫がされている。
本実施例では、稼働時間をより延長できると共に、閾値を任意に変更できる記憶装置の例を説明する。
図12は、実施例2におけるハードウェア構成図の例を示している。なお、実施例1におけるハードウェア構成図と同一の要素には、同一の符号を付与している。また、実施例1の図面と比較して変更、追加部分があるときには、二重枠表示により主たる変更箇所を明示している。この表示の約束は、以下の図面に踏襲する。図12の場合には、図1と比較して追加された閾値設定レジスタ34が二重枠表示されている。
実施例2における記憶装置10Aは、実施例1における記憶装置10のメモリコントローラ30とは異なるメモリコントローラ30Aを有している。それ以外は、実施例1の記憶装置10と同様の構成となっている。
実施例2のメモリコントローラ30Aは、実施例1のメモリコントローラ30に加えて、閾値設定レジスタ34を有している。この閾値設定レジスタ34は、ブロック管理に使用している閾値1、閾値2、閾値3を任意に変更できるものである。
閾値設定レジスタ34の値は、製造時にのみ設定が可能なようにしてもよく、任意に外部から変更できるようにしてもよい。外部からの変更方法としては、例えば命令処理装置3から変更指示を与えてもよく、記憶装置10に搭載しているスイッチによって切り替えるようにしてもよい。
図12において、閾値設定レジスタ34は、メモリコントローラ30の内部に設けられている。しかし、これに限られず、閾値設定レジスタ34は、メモリコントローラ30の外部であってもよく、更に、スイッチやピンなどであってもよい。
実施例2における記憶装置10Aの動作は、実施例1における記憶装置10と同様である。つまり、実施例2におけるデータ読み出し処理、ブロック交替処理、空きブロックへのデータ移動処理、空きブロック補充処理はすべて実施例1と同様である。
以上で説明した実施例2では、次のような効果がある。
記憶装置10Aにおけるメモリコントローラ30Aは、閾値設定レジスタ34を有することで、ブロック管理に使用する閾値1、閾値2、閾値3を任意に変更することができる。
本実施例では、稼働時間をより延長できると共に、信頼性を向上できる記憶装置の例を説明する。
図13は、実施例3におけるハードウェア構成図の例を示している。なお、実施例1におけるハードウェア構成図と同一の要素には、同一の符号を付与している。
実施例3における記憶装置10Bは、実施例1における記憶装置10のメモリコントローラ30とは異なるメモリコントローラ30Bを有している。また、実施例3における記憶装置10Bは、実施例1における記憶装置10のRAM50とは異なるRAM50Bを有している。それ以外は、実施例3の記憶装置10Bと実施例1の記憶装置10は同様の構成となっている。
実施例3のメモリコントローラ30Bは、実施例1のメモリコントローラ30におけるブロック管理部31とは異なるブロック管理部31Bを有している。それ以外は、実施例3のメモリコントローラ30Bと実施例1のメモリコントローラ30は同様の構成となっている。
実施例3のRAM50Bは、実施例1のRAM50における消耗ブロック管理テーブル53とは異なる消耗ブロック管理テーブル53Bを有している。それ以外は、実施例3のRAM50Bと実施例1のRAM50は同様の構成となっている。
図14は、実施例3における消耗ブロック管理テーブル53Bの構成図である。実施例3の消耗ブロック管理テーブル53Bは、実施例1の消耗ブロック管理テーブル53に加えて、発生エラー数53dを有している。この発生エラー数53dは、消耗ブロック管理テーブル53Bに消耗ブロック62を登録する際、データ読み出しで発生したエラー数を格納するものである。
実施例3における記憶装置10Bのデータ読み出し動作は、実施例1における記憶装置10と同様である。
図15は、実施例3におけるブロック交替処理のフローチャートである。従って、実施例1における図8のブロック交替処理のフローチャートが図15に置き換えられて処理されている。なお実施例1と同一の要素には、同一の符号を記している。
実施例3におけるステップS20からステップS23の処理は、実施例1と同様である。
ステップS24Bにおいて、メモリコントローラ30B内のブロック管理部31Bは、RAM50Bから消耗ブロック管理テーブル53Bを読み出し、有効フラグ53bが「0:消耗ブロックとして使用不可能」となっている消耗ブロックエントリ番号53aを検索する。そして、該当する消耗ブロックエントリ番号53aの物理ブロック番号53cにエラーが発生したブロック番号を登録し、有効フラグ53bを「1:消耗ブロックとして使用可能」に変更する。また、ブロック管理部31Bは、エラー訂正回路32から通知されたエラー数を該当する消耗ブロックエントリ番号53aのエラー発生数53dに格納する。
実施例3におけるステップS25の処理は、実施例1と同様である。
ステップS26Bにおいて、ブロック管理部31Bは空きブロック補充処理を実施する。この空きブロック補充処理は、後記の図16で詳しく説明する。
実施例3における記憶装置10Bの空きブロックへのデータ移動処理は、実施例1と同様に図9のフローチャートで実行される。
図16は、実施例3における空きブロック補充処理のフローチャートである。従って、実施例1における図10のブロック交替処理のフローチャートが図16に置き換えられて処理されている。
ステップS40Bにおいて、ブロック管理部31Bは、RAM50Bから消耗ブロック管理テーブル53Bを読み出し、有効フラグ53bが「1:消耗ブロックとして使用可能」となっている消耗ブロックエントリ番号53aを1つ選択し、その物理ブロック番号53cを取得する。ここで、消耗ブロックエントリ番号53aを選択する際に、エラー発生数53dが少ないものを優先的に選択する。エラー発生数53dが同一である消耗ブロックエントリ番号53aが複数ある場合には、その中で登録が古い消耗ブロックエントリ番号53aを選択する。
実施例3におけるステップS41の処理は、実施例1と同様である。
以上で説明した実施例3では、要するに実施例1において消耗ブロックを空きブロックとして使用する際、発生エラー数が小さい消耗ブロックを優先的に使用するものであり、次のような効果がある。
記憶装置10Bにおけるメモリコントローラ30B内のブロック管理部31Bは、消耗ブロック管理テーブル53Bから空きブロック管理テーブル52へ移動させる消耗ブロック62を選択する際に、エラー発生数53dが少ない消耗ブロック62を優先的に選択する。これにより、エラー数の少ない消耗ブロック62を空きブロック61として使用でき、記憶装置10Bの信頼性を向上できる。
本実施例では、稼働時間をより延長できると共に、信頼性を向上できる記憶装置の例を説明する。この実施例ではエラーカウント数を新たな管理項目とする。
図17は、実施例4におけるハードウェア構成図の例を示している。なお、実施例1におけるハードウェア構成図と同一の要素には、同一の符号を付与している。
実施例4における記憶装置10Cは、実施例1における記憶装置10のメモリコントローラ30とは異なるメモリコントローラ30Cを有している。また、実施例4における記憶装置10Cは、実施例1における記憶装置10のRAM50とは異なるRAM50Cを有している。それ以外は、実施例4の記憶装置10Cと実施例1の記憶装置10は同様の構成となっている。
実施例4のメモリコントローラ30Cは、実施例1のメモリコントローラ30におけるブロック管理部31とは異なるブロック管理部31Cを有している。それ以外は、実施例4のメモリコントローラ30Cと実施例1のメモリコントローラ30は同様の構成となっている。
実施例4のRAM50Cは、実施例1のRAM50に加えてエラーカウント情報54を有している。このエラーカウント情報54は、後記の図18で詳しく説明する。
図18は、実施例4におけるエラーカウント情報54の構成図である。エラーカウント情報54は、物理ブロック番号54aに対応するエラーカウント値54bを格納している。このエラーカウント値54bは、データ読み出し時にエラーが発生した場合、ブロック管理部31Cによって加算される。
実施例4における記憶装置10Cのデータ読み出し動作は、実施例1における記憶装置10と同様である。
図19は、実施例4におけるブロック交替処理のフローチャートである。従って、実施例1における図10のブロック交替処理のフローチャート、あるいは実施例3における図15のブロック交替処理のフローチャートが図16に置き換えられて処理されている。なお、実施例1におけるブロック交替処理のフローチャートと同一の要素には、同一の符号を記している。
図19において、ステップS20からステップS26の処理は、実施例1と同様である。図19を実施例1の図8と比較した場合に、判断ステップS21とS23の判断順序が相違しているが、要するにエラー数が閾値2以上閾値3未満であるときの処理として、ステップS50、S51が追加された点でのみ相違する。
これにより、エラー数が閾値2以上閾値3未満であるときの処理としてステップS50において、メモリコントローラ30C内のブロック管理部31Cは、RAM50Cからエラーカウント情報54を読み出し、エラーが発生したブロックと一致する物理ブロック番号54aのエラーカウント値54bを1つ加算する。
ステップS51において、ブロック管理部31CはステップS50で加算したエラーカウント値54bが閾値4以上であるか判断する。エラーカウント値54bが閾値4以上であればステップS22の処理に移り、閾値4未満であればブロック交替処理を終了する。
実施例4における記憶装置10Cの空きブロックへのデータ移動処理は、実施例1における記憶装置10と同様である。
以上で説明した実施例4では、要するに実施例1において空きブロックの数が閾値1以上であり、読み出したデータに閾値2以上閾値3未満のエラーが含まれる場合に、当該データのエラー回数をカウントし、エラーカウント値が閾値4以上となった場合に消耗ブロック62として使用するものであり、これにより次のような効果がある。
記憶装置10Cにおけるメモリコントローラ30C内のブロック管理部31Cは、データ読み出し時に閾値2以上閾値3未満のエラーが発生した場合には、該当ブロックのエラーカウント値54bを加算する。そして、エラーカウント値54bが閾値4以上のブロックを消耗ブロック管理テーブル53に登録する。これにより、突発的なエラーのみが発生するデータブロック60は継続して使用され、慢性的にエラーが発生するデータブロック60は消耗ブロック62となる。このため、1回のエラー発生数で判定する場合よりも判定精度が良くなり、記憶装置10Cの稼働時間と信頼性の向上を両立できる。
本実施例では、稼働時間をより延長できると共に、信頼性を向上できる記憶装置の例を説明する。
図20は、実施例5におけるハードウェア構成図の例を示している。なお、実施例1におけるハードウェア構成図と同一の要素には、同一の符号を付与している。
実施例5における記憶装置10Dは、実施例1における記憶装置10のメモリコントローラ30とは異なるメモリコントローラ30Dを有している。また、実施例5における記憶装置10Dは、実施例1における記憶装置10のRAM50とは異なるRAM50Dを有している。それ以外は、実施例5の記憶装置10Dと実施例1の記憶装置10は同様の構成となっている。
実施例5のメモリコントローラ30Dは、実施例1のメモリコントローラ30におけるブロック管理部31とは異なるブロック管理部31Dを有している。それ以外は、実施例5のメモリコントローラ30Dと実施例1のメモリコントローラ30は同様の構成となっている。
実施例5のRAM50Dは、実施例1のRAM50における論理/物理アドレス変換テーブル51とは異なる論理/物理アドレス変換テーブル51Dを有している。それ以外は、実施例5のRAM50Dと実施例1のRAM50は同様の構成となっている。
図21は、実施例5における論理/物理アドレス変換テーブル51Dの構成図である。実施例5の論理/物理アドレス変換テーブル51Dは、2つの物理アドレスと、有効フラグで構成される。物理アドレスA(51e)は、実施例1の論理/物理アドレス変換テーブル51における物理アドレス51bの代わりとなるものであり、他に物理アドレスB(51i)を有している。
有効フラグB(51h)は、論理ページアドレス51aに対応する物理アドレスB(51i)が有効であるか表すものであり、有効である場合は「1」、無効である場合は「0」となる。
物理アドレスB(51i)は、論理ページアドレス51aに対応する不揮発性メモリ40の物理アドレスであり、物理アドレスA(51e)とは異なる物理アドレスを格納する。また、この物理アドレスB(51i)は、物理ブロック番号B(51j)と物理ページ番号B(51k)の組み合わせで構成される。
図22は、実施例5におけるデータ読み出し処理のフローチャートである。従って、実施例1における図7のデータ読み出し処理のフローチャートが図22に置き換えられて処理されている。なお、実施例1におけるデータ読み出し処理のフローチャートと同一の要素には、同一の符号を記している。
ステップS10、ステップS13からステップS16、ステップS18からステップS19は、実施例1と同様の処理を行う。以下、図22の処理に流れについて、順を追って説明する。
まず、ステップS10において、メモリコントローラ30内のブロック管理部31Dは、I/F制御部20を介して命令処理装置3から読み出し対象の論理アドレスとデータサイズを受け取る。
ステップS11Dにおいて、メモリコントローラ30D内のブロック管理部31Dは、ステップS10で命令処理装置3から受け付けた論理アドレスを論理ページアドレス51aに変換する。その後、ブロック管理部31Dは、論理/物理アドレス変換テーブル51Dを用いて、論理ページアドレス51aに対応する物理アドレスA(51e)を読み出す。
ステップS12Dにおいて、ブロック管理部31Dは、ステップS11Dで読み出した物理アドレスA(51e)からデータを読み出すように、不揮発性メモリ制御部33に指示する。不揮発性メモリ制御部33は、ブロック管理部31Dからの指示に従い、不揮発性メモリ40からデータを読み出す。
ステップS13において、不揮発性メモリ制御部33は、ステップS12Dで不揮発性メモリ40から読み出したデータをエラー訂正回路32に受け渡す。エラー訂正回路32は、不揮発性メモリ制御部33から受け取ったデータにエラーが含まれているかを判断する。
このとき、データにエラーが含まれていればステップS14の処理に移る。データにエラーが含まれていなければ、データをブロック管理部31Dに転送した後、ステップS19の処理に移る。
ステップS14において、エラー訂正回路32は、データに含まれているエラーが訂正可能か判断する。訂正可能な場合にはステップS15の処理に移り、訂正不可能な場合にはステップS60の処理に移る。
ステップS15において、エラー訂正回路32は、データ内のエラー訂正を行う。このとき、エラー訂正回路32は、訂正後のデータをブロック管理部31Dに転送すると共に、訂正したエラー数をブロック管理部31Dに通知する。
ステップS16において、ブロック管理部31Dは、I/F制御部20を介して訂正後のデータを命令処理装置3に転送する。
ステップS17Dにおいて、ブロック管理部31Dは、ブロック交替処理Aを実施する。このブロック交替処理Aについては、後記の図24で詳しく説明する。
他方ステップS14において、訂正不可能とされたステップS60の処理においては、ブロック管理部31Dは、論理/物理アドレス変換テーブル51Dの論理ページアドレス51aに対応する有効フラグB(51h)が「1:物理アドレスBが有効」であるか判定する。有効フラグB(51h)が「1:物理アドレスBが有効」であればステップS61の処理を行い、「0:物理アドレスBが無効」であればステップS18の処理を行う。
ステップS18では、エラー訂正回路32は、エラー訂正が不可能であることをブロック管理部31Dに通知する。ブロック管理部31Dは、エラー訂正回路32からの通知を受けて、I/F制御部20を介して命令処理装置3にデータ読み出しエラーを通知する。
ステップS61において、ブロック管理部31Dは、物理アドレスBからのデータ読み出しを実施する。この物理アドレスBからのデータ読み出しは、後記の図23で詳しく説明する。
図23は、実施例5における物理アドレスBからのデータ読み出し処理のフローチャートである。なお、図23における物理アドレスBからのデータ読み出し処理は、実施例1における図7のデータ読み出し処理のフローチャートと基本的には同じ処理を実行することになる。実施例1におけるデータ読み出し処理のフローチャートと同一の要素には、同一の符号を記している。
図23の最初の処理であるステップS11Eにおいて、メモリコントローラ30D内のブロック管理部31Dは、論理/物理アドレス変換テーブル51Dを用いて、論理ページアドレス51aに対応する物理アドレスB(51i)を読み出す。
ステップS12Eにおいて、ブロック管理部31Dは、ステップS11Eで読み出した物理アドレスB(51i)からデータを読み出すように、不揮発性メモリ制御部33に指示する。不揮発性メモリ制御部33は、ブロック管理部31Dの指示に従い、不揮発性メモリ40からデータを読み出す。
ステップS13からステップS16、ステップS18からステップS19は実施例1と同様の処理を行う。図23のデータ読み出し処理のフローチャートが図7と相違する本質の点は、ブロック交替処理Bを採用した点である。
ステップS17Eにおいて、ブロック管理部31Dは、ブロック交替処理Bを実施する。このブロック交替処理Bについては、後記の図25で詳しく説明する。このように、実施例5では、2つのブロック交替処理を実行する。まず、図24のブロック交替処理Aを説明し、その後図25のブロック交替処理Bを説明する。
図24は、実施例5、ステップS17Dにおけるブロック交替処理Aのフローチャートを示している。なお、実施例1、図8におけるブロック交替処理のフローチャートと同一の要素には、同一の符号を記している。
ステップS20からステップS26の処理は、実施例1と同様である。
まずステップS20において、ブロック管理部31Dは、空きブロック管理テーブル52に登録されている空きブロック数が閾値1以上であるか判断する。空きブロック数が閾値1以上であればステップS21の処理に移り、空きブロック数が閾値1未満であればステップS25の処理に移る。
なお図5に示したように、空きブロック管理テーブル52の空きブロックエントリ番号52aに登録されている空きブロック61は最大C個である。ここでは、このうち有効フラグ52bの情報を参照して使用可能(データ「1」)な個数を抽出して、これを閾値1と比較している。
ステップS21において、ブロック管理部31Dは、エラー訂正回路32から通知されたエラー数が閾値2以上であるか判断する。エラー数が閾値2以上であればステップS70の処理に移り、閾値2未満であればブロック交替処理Aを終了する。
ステップS70では、ブロック管理部31Dは、空きブロックAへのデータ移動処理を実施する。この空きブロックAへのデータ移動処理は、後記の図26で詳しく説明する。
空きブロックへのデータ移動後のステップS23において、ブロック管理部31Dは、エラー訂正回路32から通知されたエラー数が閾値3以上であるか判断する。エラー数が閾値3以上であればブロック交替処理Aを終了し、閾値3未満であればステップS24の処理に移る。なお、閾値3は閾値2よりも大きい値である。
ステップS24において、ブロック管理部31Dは、RAM50から消耗ブロック管理テーブル53(図6)を読み出し、有効フラグ53bが「0:消耗フラグとして使用不可」となっている消耗ブロックエントリ番号53aを検索する。そして、該当する消耗ブロックエントリ番号53aの物理ブロック番号53cにエラーが発生したブロック番号を登録し、有効フラグ53bを「1:消耗フラグとして使用可」に変更する。ステップS24の処理完了後、ブロック管理部31Dはブロック交替処理Aを終了する。
他方、ステップS25において、ブロック管理部31Dは、エラー訂正回路32から通知されたエラー数が閾値3以上であるか判断する。エラー数が閾値3以上であればステップS70の処理(空きブロックAへのデータ移動処理)に移り、閾値3未満であればブロック交替処理を終了する。
ステップS70の空きブロックAへのデータ移動処理は、前述したと同じ処理の実行であり、ここでの説明を省略する。
続くステップS71において、ブロック管理部31Dは、論理/物理アドレス変換テーブル51Dの論理ページアドレス51aに対応する有効フラグB(51h)が「0:物理アドレスBが無効」か判定する。有効フラグB(51h)が「0:物理アドレスBが無効」であればステップS72の処理に移り、有効フラグB(51h)が「1:物理アドレスBが有効」であればブロック交替処理Aを終了する。
ステップS72において、ブロック管理部31Dは、空きブロックBへのデータ移動処理を実施する。この空きブロックBへのデータ移動処理は、後記の図27で詳しく説明する。
ステップS26では、ブロック管理部31Dは、空きブロック補充処理を実施する。この空きブロック補充処理は、図10で詳しく説明したとおりであり、ここでの説明を省略する。ステップS26の処理完了後、ブロック管理部31Dはブロック交替処理Aを終了する。
図25は、実施例5におけるブロック交替処理Bのフローチャートである。なお、ブロック交替処理Aと同一の要素には、同一の符号を記している。
ステップS25において、ブロック管理部31Dは、エラー訂正回路32から通知されたエラー数が閾値3以上であるか判断する。エラー数が閾値3以上であればステップS72の処理に移り、閾値3未満であればステップS70の処理に移る。
ここでステップS70およびステップS72の処理は、実施例5のブロック交替処理Aと同様である。要するに、エラー数が閾値3以上であれば空きブロックBへのデータ移動処理、空きブロックAへのデータ移動処理、空きブロックの補充を実行し、エラー数が閾値3未満であれば空きブロックAへのデータ移動処理と空きブロックの補充を実行することになる。
なおステップS26の処理では、ブロック管理部31Dは、空きブロック補充処理を実施する。この空きブロック補充処理は、図10で詳しく説明したとおりである。
図26は、実施例5における空きブロックAへのデータ移動処理のフローチャートである。なお、実施例1、図9における空きブロックへのデータ移動処理と同一の要素には、同一の符号を記している。
まずステップS30において、ブロック管理部31Dは、RAM50から空きブロック管理テーブル52(図5)を読み出し、有効フラグ52bが「1:空きブロックとして使用可能」となっている空きブロックエントリ番号52aを1つ選択し、その物理ブロック番号52cを取得する。ここで、空きブロックエントリ番号52aの選択方式は特に限定せず、例えばFIFO(First In First Out)のように登録が古いエントリから順に選択してもよい。
ステップS31において、ブロック管理部31Dは、エラーが発生したデータブロック60が保持するデータを、ステップS30で選択した物理ブロック番号52cにコピーするように、不揮発性メモリ制御部33に指示する。不揮発性メモリ制御部33は、ブロック管理部31Dの指示に従い、選択したブロックへのデータコピーを実施する。また、データコピー完了後、ブロック管理部31Dはエラーが発生したデータブロック60のデータを消去するように、不揮発性メモリ制御部33に指示を出す。不揮発性メモリ制御部33は、ブロック管理部31Dからの指示に従って該当ブロック内のデータを消去する。
続いてステップS32Dにおいて、ブロック管理部31Dは、論理/物理アドレス変換テーブル51Dにおいて、コピーしたデータの論理ページアドレス51aに対応する物理アドレスA(51e)を、コピー先である空きブロック61の番号に更新する。
最後にステップS33において、ブロック管理部31Dは、空きブロック管理テーブル52(図5)において、ステップS30で選択した空きブロックエントリ番号52aの有効フラグ52bを「0:空きブロックとして使用不可能」に変更する。
図27は、実施例5における空きブロックBへのデータ移動処理のフローチャートである。なお、実施例1における空きブロックへのデータ移動処理と同一の要素には、同一の符号を記している。
この図でステップS30からステップS31、ステップS33の処理は、図25と同様であるので、ここではステップS32Eのみ説明する。
ステップS32Eでは、ブロック管理部31Dは、論理/物理アドレス変換テーブル51Dにおいて、コピーしたデータの論理ページアドレス51aに対応する物理アドレスB(51i)を、コピー先である空きブロック61の番号に更新する。また、論理ページアドレス51aに対応する有効フラグB(51h)を「1:物理アドレスBが有効」に変更する。
以上で説明した実施例5では、次のような効果がある。
空きブロック管理テーブル52内の空きブロック数が閾値1未満になった場合、消耗ブロック62が空きブロック61として補充される。そのため、空きブロック管理テーブル52内には、元から空きブロック61であった信頼性の高いブロックと元々が消耗ブロック62である信頼性が低いブロックが混ざった状態となる。
実施例5では、この状態になった場合、エラーが発生したデータブロック60から空きブロック61へデータを移動させる際に、2つの空きブロック61に対して同じデータを保存している。このようにデータを二重化することで、信頼性の低いブロックをデータ移動先の空きブロック61として選択した場合にも、移動したデータが失われる可能性を低減でき、記憶装置10Dの信頼性を向上できる。
本実施例は、実施例5の変形例である。
図28は、実施例6におけるハードウェア構成図の例を示している。なお、実施例5におけるハードウェア構成図と同一の要素には、同一の符号を付与している。
実施例6における記憶装置10Eは、実施例5における記憶装置10Dのメモリコントローラ30Dとは異なるメモリコントローラ30Eを有している。それ以外は、実施例6の記憶装置10Eと実施例5の記憶装置10Dは同様の構成となっている。
実施例6のメモリコントローラ30Eは、実施例5のメモリコントローラ30Dにおけるブロック管理部31Dとは異なるブロック管理部31Eを有している。それ以外は、実施例6のメモリコントローラ30Eと実施例5のメモリコントローラ30Dは同様の構成となっている。
実施例6におけるデータ読み出し動作は、実施例5と同様である。
実施例6における物理アドレスBからのデータ読み出し動作は、実施例5と同様である。
図29は、実施例6におけるブロック交替処理Aのフローチャートを示している。なお、実施例5におけるブロック交替処理Aのフローチャートと同一の要素には、同一の符号を記している。
ステップS20Dにおいて、ブロック管理部31Eは、空きブロック管理テーブル52に空きブロック61が1つ以上登録されているか判定する。空きブロック61が1つ以上登録されている場合にはステップS21の処理を行い、登録されている空きブロック61が無ければステップS25の処理に移る。
ステップS21、ステップS23からステップS25、ステップS70からステップS71の処理は、実施例5と同様である。
ステップS21において、ブロック管理部31Eは、エラー訂正回路32から通知されたエラー数が閾値2以上であるか判断する。エラー数が閾値2以上であればステップS70の処理に移り、閾値2未満であればブロック交替処理Aを終了する。
ステップS70では、ブロック管理部31Eは、空きブロックAへのデータ移動処理を実施する。この空きブロックAへのデータ移動処理は、図26で説明したとおりである。
空きブロックへのデータ移動後のステップS23において、ブロック管理部31Eは、エラー訂正回路32から通知されたエラー数が閾値3以上であるか判断する。エラー数が閾値3以上であればブロック交替処理Aを終了し、閾値3未満であればステップS24の処理に移る。なお、閾値3は閾値2よりも大きい値である。
ステップS24において、ブロック管理部31Eは、RAM50から消耗ブロック管理テーブル53(図6)を読み出し、有効フラグ53bが「0:消耗フラグとして使用不可」となっている消耗ブロックエントリ番号53aを検索する。そして、該当する消耗ブロックエントリ番号53aの物理ブロック番号53cにエラーが発生したブロック番号を登録し、有効フラグ53bを「1:消耗フラグとして使用可」に変更する。ステップS24の処理完了後、ブロック管理部31Eはブロック交替処理Aを終了する。
他方、ステップS25において、ブロック管理部31Eは、エラー訂正回路32から通知されたエラー数が閾値3以上であるか判断する。エラー数が閾値3以上であればステップS80の処理(空きブロックへのデータ移動処理)に移り、閾値3未満であればブロック交替処理Aを終了する。
ステップS80において、ブロック管理部31Eは、消耗ブロックAへのデータ移動処理を実施する。この消耗ブロックAへのデータ移動処理は、後記の図31で詳しく説明する。
続くステップS71において、ブロック管理部31Eは、論理/物理アドレス変換テーブル51Dの論理ページアドレス51aに対応する有効フラグB(51h)が「0:物理アドレスBが無効」か判定する。有効フラグB(51h)が「0:物理アドレスBが無効」であればステップS81の処理に移り、有効フラグB(51h)が「1:物理アドレスBが有効」であればブロック交替処理Aを終了する。
ステップS81において、ブロック管理部31Eは、消耗ブロックBへのデータ移動処理を実施する。この消耗ブロックBへのデータ移動処理は、後記の図32で詳しく説明する。ステップS81処理の完了後、ブロック管理部31Eはブロック交替処理Aを終了する。
図30は、実施例6におけるブロック交替処理Bのフローチャートである。なお、実施例6におけるブロック交替処理Aと同一の要素には、同一の符号を記している。
まずステップS25において、ブロック管理部31Eは、エラー訂正回路32から通知されたエラー数が閾値3以上であるか判断する。エラー数が閾値3以上であればステップS81の処理に移り、閾値3未満であればステップS80の処理に移る。要するに、エラー数が閾値3以上であれば消耗ブロックBと消耗ブロックAにデータ移動し、エラー数が閾値3未満であれば消耗ブロックAのみにデータ移動している。
ステップS80およびステップS81の処理は、実施例6におけるブロック交替処理Aと同様である。
図31は、実施例6における消耗ブロックAへのデータ移動処理のフローチャートである。
ステップS90において、ブロック管理部31Eは、RAM50Dから消耗ブロック管理テーブル53を読み出し、有効フラグ53Bが「1:物理アドレスBが有効」となっている消耗ブロックエントリ番号53aを1つ選択し、その物理ブロック番号53cを取得する。
ステップS91において、ブロック管理部31Eは、エラーが発生したデータブロック60が保持するデータを、ステップS90で選択した物理ブロック番号53cにコピーするように、不揮発性メモリ制御部33に指示する。不揮発性メモリ制御部33は、ブロック管理部31Eの指示に従い、選択したブロックへのデータコピーを実施する。また、データコピー完了後、ブロック管理部31Eはエラーが発生したデータブロック60のデータを消去するように、不揮発性メモリ制御部33に指示を出す。不揮発性メモリ制御部33は、ブロック管理部31Eからの指示に従って該当ブロック内のデータを消去する。
ステップS92において、ブロック管理部31Eは、論理/物理アドレス変換テーブル51Dにおいて、コピーしたデータの論理ページアドレス51aに対応する物理アドレスA(51e)を、コピー先である消耗ブロック62の番号に更新する。
ステップS93において、ブロック管理部31Eは、消耗ブロック管理テーブル53において、ステップS80で選択した消耗ブロックエントリ番号53aの有効フラグ53Bを「0:物理アドレスBが無効」に変更する。ステップS93の処理が完了後、ブロック管理部31Eは消耗ブロックAへのデータ移動処理を完了する。
図32は、実施例6における消耗ブロックBへのデータ移動処理のフローチャートである。なお、実施例6における消耗ブロックAへのデータ移動処理のフローチャートと同一の要素には、同一の符号を付与している。
ステップS90、ステップS91、ステップS93の処理は、実施例6における消耗ブロックAへのデータ移動処理と同様である。
ステップS94において、ブロック管理部31Eは、論理/物理アドレス変換テーブル51Dにおいて、コピーしたデータの論理ページアドレス51aに対応する物理アドレスB(51i)を、コピー先である消耗ブロック62の番号に更新する。また、論理ページアドレス51aに対応する有効フラグB(51h)を「1:物理アドレスBが有効」に変更する。
以上で説明した実施例6では、次のような効果がある。
ブロック管理に使用する閾値1の値を1に設定することで、ブロック管理部31Eは、空きブロック61が無くなるまでは消耗ブロック62を使用しなくなる。消耗ブロック62は、すでに閾値2以上のエラーが発生したブロックであるため、空きブロック61よりも信頼性が低い。信頼性が低い消耗ブロック62よりも空きブロック61を先に使用することで、記憶装置10Eの信頼性を高めることができる。
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に説明しているものであり、必ずしも説明したすべての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、またある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の一部について、他の構成の追加、削除、置換をすることが可能である。
また、上記の各構成、機能、処理部、処理手段などは、それらの一部または全部を、例えば集積回路で設計するなどによりハードウェアで実現してもよい。また、上記の各構成、機能などは、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイルなどの情報は、メモリやハードディスク、SSD(Solid State Drive)などの記録装置、またはICカード、SDカード、DVDなどの記録媒体に置くことができる。
また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしもすべての制御線や情報線を示しているとは限らない。実際にはほとんどすべての構成が相互に接続されていると考えてもよい。
1:計算機
3:命令処理装置
10、10A、10B、10C、10D、10E:記憶装置
30、30A、30B、30C、30D、30E:メモリコントローラ
34:閾値設定レジスタ
40:不揮発性メモリ
50、50B、50C、50D:RAM
51、51D:論理/物理アドレス変換テーブル
52:空きブロック管理テーブル
53、53B:消耗ブロック管理テーブル
54:エラーカウント情報
54b:エラーカウント値
60:データブロック
61:空きブロック
62:消耗ブロック

Claims (18)

  1. メモリを消去単位である複数のブロックにより構成し、該メモリの複数のブロックを、複数のデータブロックと、複数の空きブロックと、消耗ブロックに分けて使用するメモリの管理方法であって、
    前記メモリからのデータ読み出し時にデータチェックを行い、読み出したデータのエラー数が閾値2未満であるときに当該データを保持しているデータブロックをデータブロックとして使用継続し、読み出したデータのエラー数が閾値3以上であるときに当該データを保持しているデータブロックを破棄し、
    前記空きブロックの数が閾値1以上であり、読み出したデータに閾値2以上閾値3未満のエラーが含まれる場合に、当該データを保持しているデータブロックを消耗ブロックとし、
    前記空きブロックの数が前記閾値1未満であり、読み出したデータに閾値3以上のエラーが含まれる場合に、前記消耗ブロックを前記空きブロックとして使用することを特徴とするメモリの管理方法。
  2. 請求項1に記載のメモリの管理方法であって、
    前記消耗ブロックを前記空きブロックとして使用する際、前記発生エラー数が小さい消耗ブロックを優先的に使用することを特徴とするメモリの管理方法。
  3. 請求項1に記載のメモリの管理方法であって、
    前記空きブロックの数が閾値1以上であり、読み出したデータに閾値2以上閾値3未満のエラーが含まれる場合に、当該データのエラー回数をカウントし、エラーカウント値が閾値4以上となった場合に消耗ブロックとして使用することを特徴とするメモリの管理方法。
  4. 請求項1に記載のメモリの管理方法であって、
    前記空きブロックの数が閾値1以上であり、読み出したデータに閾値2以上閾値3未満のエラーが含まれる場合に、エラーが発生したデータブロック内のデータを前記空きブロックに移動させると共に、当該データブロックを前記消耗ブロックとし、
    前記空きブロックの数が前記閾値1未満であり、読み出したデータに閾値3以上のエラーが含まれる場合に、エラーが発生したデータブロック内のデータを前記消耗ブロックに移動させ、前記当該消耗ブロックを前記空きブロックとして使用することを特徴とするメモリの管理方法。
  5. ある所定の書き込み単位であるページと前記書き込み単位よりも大きい消去単位であるブロックを持つ不揮発性メモリとデータの読み出し及び書き込みができるRAMと前記不揮発性メモリおよび前記RAMへの読み出し及び書き込み処理を行うメモリコントローラを有する記憶装置であって、
    前記RAMは、空きブロックを管理する空きブロック管理テーブルと、消耗ブロックを管理する消耗ブロック管理テーブルを有し、
    前記メモリコントローラは、前記空きブロック管理テーブルに登録されている空きブロックの数が閾値1以上であり、前記不揮発性メモリから読み出したデータに閾値2以上閾値3未満のエラーが含まれていた場合、該データを保持しているデータブロックを前記消耗ブロック管理テーブルに消耗ブロックとして登録し、前記空きブロック管理テーブルに登録されている空きブロックの数が前記閾値1未満である場合、前記消耗ブロック管理テーブルに登録されている消耗ブロックを前記空きブロック管理テーブルに空きブロックとして登録することを特徴とする記憶装置。
  6. 請求項5に記載の記憶装置であって、
    読み出したデータのエラー数が閾値2未満であるときに当該データを保持しているデータブロックをデータブロックとして使用継続し、読み出したデータのエラー数が閾値3以上であるときに当該データを保持しているデータブロックを破棄することを特徴とする記憶装置。
  7. 請求項5または請求項6に記載の記憶装置であって、
    前記メモリコントローラは、閾値設定レジスタを有し、
    前記閾値設定レジスタの値によって、前記閾値1、前記閾値2、前記閾値3の値を変更することを特徴とする記憶装置。
  8. 請求項5から請求項7のいずれか1項に記載の記憶装置であって、
    前記消耗ブロック管理テーブルは、発生エラー数を有し、
    前記メモリコントローラは、前記消耗ブロック管理テーブルに登録されている消耗ブロックを前記空きブロック管理テーブルに空きブロックとして登録する際、前記発生エラー数が小さい消耗ブロックを優先的に登録することを特徴とする記憶装置。
  9. 請求項5から請求項8のいずれか1項に記載の記憶装置であって、
    前記メモリコントローラは、前記空きブロック管理テーブルに登録されている空きブロックの数が閾値1未満であり、前記不揮発性メモリから読み出したデータに閾値3以上のエラーが含まれていた場合、エラーが発生したデータブロック内のデータを前記空きブロック管理テーブルに登録されている複数の空きブロックに移動させることを特徴とする記憶装置。
  10. ある所定の書き込み単位であるページと前記書き込み単位よりも大きい消去単位であるブロックを持つ不揮発性メモリとデータの読み出し及び書き込みができるRAMと前記不揮発性メモリおよび前記RAMへの読み出し及び書き込み処理を行うメモリコントローラを有する記憶装置であって、
    前記RAMは、空きブロックを管理する空きブロック管理テーブルと、消耗ブロックを管理する消耗ブロック管理テーブルを有し、
    前記メモリコントローラは、前記空きブロック管理テーブルに登録されている空きブロックの数が閾値1以上であり、前記不揮発性メモリから読み出したデータに閾値2以上閾値3未満のエラーが含まれていた場合、該データを保持しているデータブロックのエラーカウント値を1つ加算し、前記エラーカウント値が閾値4以上となった場合には、前記データブロックを前記消耗ブロック管理テーブルに消耗ブロックとして登録し、前記空きブロック管理テーブルに登録されている空きブロックの数が前記閾値1未満である場合、前記消耗ブロック管理テーブルに登録されている消耗ブロックを前記空きブロック管理テーブルに空きブロックとして登録することを特徴とする記憶装置。
  11. 請求項10に記載の記憶装置であって、
    前記メモリコントローラは、閾値設定レジスタを有し、
    前記閾値設定レジスタの値によって、前記閾値1、前記閾値2、前記閾値3、前記閾値4の値を変更することを特徴とする記憶装置。
  12. 請求項10または請求項11に記載の記憶装置であって、
    前記消耗ブロック管理テーブルは、発生エラー数を有し、
    前記メモリコントローラは、前記消耗ブロック管理テーブルに登録されている消耗ブロックを前記空きブロック管理テーブルに空きブロックとして登録する際、前記発生エラー数が小さい消耗ブロックを優先的に登録することを特徴とする記憶装置。
  13. 請求項10から請求項12のいずれかに記載の記憶装置であって、
    前記メモリコントローラは、前記空きブロック管理テーブルに登録されている空きブロックの数が閾値1未満であり、前記不揮発性メモリから読み出したデータに閾値3以上のエラーが含まれていた場合、エラーが発生したデータブロック内のデータを前記空きブロック管理テーブルに登録されている複数の空きブロックに移動させることを特徴とする記憶装置。
  14. ある所定の書き込み単位であるページと前記書き込み単位よりも大きいデータ消去単位であるブロックを持つ不揮発性メモリとデータの読み出し及び書き込みができるRAMと前記不揮発性メモリおよび前記RAMへの読み出し及び書き込み処理を行うメモリコントローラを有する記憶装置であって、
    前記RAMは、空きブロックを管理する空きブロック管理テーブルと、消耗ブロックを管理する消耗ブロック管理テーブルを有し、
    前記メモリコントローラは、前記空きブロック管理テーブルに空きブロックが登録されており、前記不揮発性メモリから読み出したデータに閾値2以上閾値3未満のエラーが含まれていた場合、エラーが発生したデータブロック内のデータを前記空きブロック管理テーブルに登録されている空きブロックに移動させると共に、前記データブロックを前記消耗ブロック管理テーブルに消耗ブロックとして登録し、前記空きブロック管理テーブルに空きブロックが登録されておらず、前記不揮発性メモリから読み出したデータに閾値3以上のエラーが含まれていた場合、エラーが発生したデータブロック内のデータを前記消耗ブロック管理テーブルに登録されている消耗ブロックに移動させることを特徴とする記憶装置。
  15. 請求項14に記載の記憶装置であって、
    前記メモリコントローラは、閾値設定レジスタを有し、
    前記閾値設定レジスタの値によって、前記閾値1、前記閾値2、前記閾値3の値を変更することを特徴とする記憶装置。
  16. 請求項14または請求項15に記載の記憶装置であって、
    前記消耗ブロック管理テーブルは、発生エラー数を有し、
    前記メモリコントローラは、エラーが発生したデータブロック内のデータを前記消耗ブロック管理テーブルに登録されている消耗ブロックに移動させる際、前記発生エラー数が小さい消耗ブロックを優先的に選択することを特徴とする記憶装置。
  17. 請求項14から請求項16のいずれか1項に記載の記憶装置であって、
    前記メモリコントローラは、前記データブロック内のデータを前記消耗ブロックに対して移動させる際、複数の消耗ブロックに対して前記データを移動させることを特徴とする記憶装置
  18. 命令処理装置と記憶装置を有する計算機において、
    前記記憶装置として、請求項5から請求項17のいずれか1項に記載の記憶装置を有することを特徴とする計算機。
JP2012091671A 2012-04-13 2012-04-13 メモリの管理方法、記憶装置およびそれを搭載した計算機 Pending JP2013222236A (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2012091671A JP2013222236A (ja) 2012-04-13 2012-04-13 メモリの管理方法、記憶装置およびそれを搭載した計算機
US13/859,131 US9026892B2 (en) 2012-04-13 2013-04-09 Memory management method, storage device, and computer with the same
CN2013101259080A CN103377136A (zh) 2012-04-13 2013-04-12 存储器的管理方法、存储装置及搭载了该存储装置的计算机

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012091671A JP2013222236A (ja) 2012-04-13 2012-04-13 メモリの管理方法、記憶装置およびそれを搭載した計算機

Publications (1)

Publication Number Publication Date
JP2013222236A true JP2013222236A (ja) 2013-10-28

Family

ID=49326201

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012091671A Pending JP2013222236A (ja) 2012-04-13 2012-04-13 メモリの管理方法、記憶装置およびそれを搭載した計算機

Country Status (3)

Country Link
US (1) US9026892B2 (ja)
JP (1) JP2013222236A (ja)
CN (1) CN103377136A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018120522A (ja) * 2017-01-27 2018-08-02 日本電気株式会社 情報処理システムおよび情報処理システムの制御方法

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10372551B2 (en) * 2013-03-15 2019-08-06 Netlist, Inc. Hybrid memory system with configurable error thresholds and failure analysis capability
US9536577B2 (en) * 2013-09-26 2017-01-03 Intel Corporation Data movement in memory devices
US9372750B2 (en) * 2013-11-01 2016-06-21 Qualcomm Incorporated Method and apparatus for non-volatile RAM error re-mapping
US9378081B2 (en) 2014-01-02 2016-06-28 Qualcomm Incorporated Bit remapping system
US9299457B2 (en) 2014-02-23 2016-03-29 Qualcomm Incorporated Kernel masking of DRAM defects
KR20180012009A (ko) * 2016-07-26 2018-02-05 에스케이하이닉스 주식회사 데이터 맵핑을 수행하는 반도체 장치 및 시스템
KR20180106494A (ko) * 2017-03-20 2018-10-01 에스케이하이닉스 주식회사 반도체장치
CN108153681A (zh) * 2017-11-29 2018-06-12 深圳忆联信息系统有限公司 一种大容量固态硬盘映射表压缩方法
CN113074053B (zh) * 2021-05-07 2023-07-18 潍柴动力股份有限公司 V型发动机两排气缸运行的优先级方法、装置以及系统

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4956922B2 (ja) * 2004-10-27 2012-06-20 ソニー株式会社 記憶装置
WO2007132456A2 (en) * 2006-05-12 2007-11-22 Anobit Technologies Ltd. Memory device with adaptive capacity
JP4908083B2 (ja) * 2006-06-30 2012-04-04 株式会社東芝 メモリコントローラ
JP2010086404A (ja) 2008-10-01 2010-04-15 Hagiwara Sys-Com:Kk メモリの管理方法及びフラッシュメモリデバイス
DE112010004667T5 (de) 2009-12-03 2013-01-17 Hitachi, Ltd. Speichervorrichtung und Speichersteuerung
US8799747B2 (en) * 2010-06-03 2014-08-05 Seagate Technology Llc Data hardening to compensate for loss of data retention characteristics in a non-volatile memory
JP5295286B2 (ja) 2011-02-23 2013-09-18 株式会社日立製作所 記憶装置およびそれを搭載した計算機

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018120522A (ja) * 2017-01-27 2018-08-02 日本電気株式会社 情報処理システムおよび情報処理システムの制御方法

Also Published As

Publication number Publication date
US20130275836A1 (en) 2013-10-17
CN103377136A (zh) 2013-10-30
US9026892B2 (en) 2015-05-05

Similar Documents

Publication Publication Date Title
JP2013222236A (ja) メモリの管理方法、記憶装置およびそれを搭載した計算機
US8037232B2 (en) Data protection method for power failure and controller using the same
CN109213441B (zh) 能够管理工作而无需处理器干预的存储装置
US9195579B2 (en) Page replacement method and memory system using the same
JP4836647B2 (ja) 不揮発性キャッシュメモリを用いる記憶装置とその制御方法
US8825946B2 (en) Memory system and data writing method
US8909870B2 (en) Cache evictions from data cache based on content of address translation table cache and address translation table
US9058256B2 (en) Data writing method, memory controller and memory storage apparatus
JP5374075B2 (ja) ディスク装置及びその制御方法
TW201346553A (zh) 邏輯區塊位址位元映射之使用
JP2007199905A (ja) 半導体記憶装置の制御方法
JP2013222435A (ja) 半導体記憶装置及びその制御方法
US11194711B2 (en) Storage device
US8527733B2 (en) Memory system
JP2009116465A (ja) 記憶装置及びメモリ制御方法
US20170115925A1 (en) Valid data merging method, memory controller and memory storage apparatus
JP2012068765A (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
TW202328924A (zh) 借助額外實體位址資訊來進行記憶體裝置之存取控制的方法、記憶體裝置以及記憶體裝置的控制器
KR102058739B1 (ko) 비휘발성 메모리의 데이터 스와핑 방법 및 장치
CN112306401A (zh) 存储装置和数据存储方法
JP5535113B2 (ja) メモリシステム
JP2014112419A (ja) 携帯端末装置、ソフトウェア更新方法、動作制御方法及びプログラム
JP2013109404A (ja) 情報処理装置
US7996598B2 (en) Memory management module
JP2017167658A (ja) 記録装置