JP6102800B2 - メモリコントローラ、記憶装置、情報処理システム、および、それらにおける制御方法。 - Google Patents

メモリコントローラ、記憶装置、情報処理システム、および、それらにおける制御方法。 Download PDF

Info

Publication number
JP6102800B2
JP6102800B2 JP2014041749A JP2014041749A JP6102800B2 JP 6102800 B2 JP6102800 B2 JP 6102800B2 JP 2014041749 A JP2014041749 A JP 2014041749A JP 2014041749 A JP2014041749 A JP 2014041749A JP 6102800 B2 JP6102800 B2 JP 6102800B2
Authority
JP
Japan
Prior art keywords
page
block
management information
error
substitution
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
JP2014041749A
Other languages
English (en)
Other versions
JP2015166993A (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.)
Sony Corp
Original Assignee
Sony Corp
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 Sony Corp filed Critical Sony Corp
Priority to JP2014041749A priority Critical patent/JP6102800B2/ja
Priority to US14/620,939 priority patent/US9582411B2/en
Publication of JP2015166993A publication Critical patent/JP2015166993A/ja
Application granted granted Critical
Publication of JP6102800B2 publication Critical patent/JP6102800B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • 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/1044Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices with specific ECC/EDC distribution
    • 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
    • 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/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/108Parity data distribution in semiconductor storages, e.g. in SSD
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C2029/0409Online test

Description

本技術は、メモリコントローラに関する。詳しくは、エラーを生じたメモリの代替を行うメモリコントローラ、記憶装置、情報処理システム、および、これらにおける制御方法に関する。
複数バイトからなるページ単位でアクセスを行う不揮発性メモリ(nonvolatile memory)とこれを制御するメモリコントローラとからなる記憶装置は、これまで広く使用されている。従来、このような記憶装置として、メモリアクセスに伴うエラーを生じたページ(エラーページ)を代替する際、メモリコントローラがページ単位で代替を行う記憶装置が知られている。
しかし、不揮発性メモリの容量増大に伴い、これに含まれるページ数も増加するため、代替処理に必要となる代替管理情報のエントリ数も同様に増加してしまい、代替管理情報サイズが増大していた。そのため、代替処理の負担も大きくなるという問題があった。
そこで、例えば、メモリを複数個のアクセス単位(上の例では、ページ)からなるセグメントで管理し、代替処理をセグメント単位で行う記憶装置が提案されている(例えば、特許文献1参照。)。
特開2003−323352号公報
上述の従来技術では、代替処理をセグメント単位で行うため、代替管理情報のエントリ数が減少し、代替管理情報も縮小される。一方、エラーが発生した際に代替されるメモリ容量が大きくなってしまい、代替処理にともなって消費されるメモリの容量も増加してしまうという問題があった。
本技術はこのような状況に鑑みて生み出されたものであり、不揮発性メモリのアクセス単位であるページ単位の代替処理を行いながら、代替管理情報を縮小することを目的とする。
本技術は、上述の問題点を解消するためになされたものであり、その第1の側面は、不揮発性メモリの複数のページからなるブロックにおいてエラーページを代替する際には上記エラーページの属するブロックに割り当てられた代替ページによって上記エラーページを代替し、上記エラーページの属するブロックにおいて上記代替ページが不足したときには上記エラーページの属するブロックとは異なる代替ブロックを新たに確保して当該代替ブロックに属するページによって上記エラーページを代替するメモリコントローラである。これにより、ブロック内におけるページ単位の代替処理を行いながら、ブロック単位の代替処理も行うという作用をもたらす。
また、この第1の側面において、上記エラーページと上記代替ページとの対応関係を示す第1の管理情報を保持する第1の管理情報バッファと、上記代替ページが不足したブロックと上記代替ブロックとの対応関係を示す第2の管理情報を保持する第2の管理情報バッファとを具備してもよい。これにより、第1および第2のバッファに夫々保持された第1および第2の管理情報に基づいて代替処理を行うという作用をもたらす。
また、この第1の側面において、上記エラーページが最初に発生したときに上記第1の管理情報を作成し、上記代替ページが不足するブロックが最初に発生したときに上記第2の管理情報を作成してもよい。これにより、エラーページまたは代替ページが不足するブロックが発生するまでは、第1および第2の管理情報の検索を不要にできるという作用をもたらす。
また、この第1の側面において、指定されたページの論理アドレスをページの物理アドレスに変換し、上記エラーページを代替する際には上記エラーページの物理アドレスに代えて上記代替ページの物理アドレスに論理アドレスを変換し、上記代替ページが不足したときには上記代替ブロックに属するページの物理アドレスに論理アドレスを変換するアドレス変換部を具備してもよい。これにより、ブロック内におけるページ単位の代替処理とブロック単位の代替処理を行いながら、アドレス変換機能も備えるという作用をもたらす。
また、この第1の側面において、上記ページはさらに複数のバンクからなり、上記エラーページを代替する際には上記代替ページに属するバンクによって当該エラーページに属するエラーバンクをバンク単位で代替し、上記エラーページの属するブロックにおいて上記代替ページに属するバンクが不足したときには上記エラーページの属するブロックとは異なる代替ブロックを新たに確保して当該代替ブロックに属するページに属するバンクによって上記エラーバンクを代替してもよい。これにより、ページが複数のバンクよりなる不揮発性メモリであっても、ブロック内におけるページ単位の代替処理を行いながら、ブロック単位の代替処理を行うという作用をもたらす。
また、本技術の第2の側面は、不揮発性メモリと、上記不揮発性メモリの複数のページからなるブロックにおいてエラーページを代替する際には上記エラーページの属するブロックに割り当てられた代替ページによって上記エラーページを代替し、上記エラーページの属するブロックにおいて上記代替ページが不足したときには上記エラーページの属するブロックとは異なる代替ブロックを新たに確保して当該代替ブロックに属するページによって上記エラーページを代替するメモリコントローラとを具備する記憶装置である。これにより、不揮発性メモリにおいて、ブロック内におけるページ単位の代替処理を行いながら、ブロック単位の代替処理も行うという作用をもたらす。
また、この第2の側面において、上記不揮発性メモリは、上記ブロックに割り当てられた上記代替ページ数が上記ブロックに含まれるページ数におけるエラーページの発生数の期待値と略一致するよう構成され、上記代替ブロック数が全ブロック数に対する上記代替ページが不足したブロックの発生数の期待値と略一致するよう構成しても良い。これにより、使用する不揮発性メモリに合った代替ページおよび代替ブロック数にできるという作用をもたらす。
また、この第2の側面において、上記不揮発性メモリは、上記エラーページと上記代替ページとの対応関係を示す第1の管理情報と上記代替ページが不足したブロックと上記代替ブロックとの対応関係を示す第2の管理情報とを記憶し、上記メモリコントローラは、上記第1の管理情報を保持する第1の管理情報バッファと、上記第2の管理情報を保持する第2の管理情報バッファとを備えても良い。これにより、記憶装置において、第1および第2のバッファに夫々保持された第1および第2の管理情報に基づいて代替処理を行う
という作用をもたらす。
また、本技術の第3の側面は、不揮発性メモリと、上記不揮発性メモリの複数のページからなるブロックにおいてエラーページを代替する際には上記エラーページの属するブロックに割り当てられた代替ページによって上記エラーページを代替し、上記エラーページの属するブロックにおいて上記代替ページが不足したときには上記エラーページの属するブロックとは異なる代替ブロックを新たに確保して当該代替ブロックに属するページによって上記エラーページを代替するメモリコントローラと、上記メモリコントローラを介して上記不揮発性メモリにアクセスするホストコンピュータとを具備する情報処理システムである。これにより、不揮発性メモリにおいて、ブロック内におけるページ単位の代替処理を行いながら、ブロック単位の代替処理も行うという作用をもたらす。
また、本技術の第4の側面は、不揮発性メモリと、上記不揮発性メモリの複数のページからなるブロックにおいてエラーページを代替する際には上記エラーページの属するブロックに割り当てられた代替ページによって上記エラーページを代替するメモリコントローラと、上記メモリコントローラを介して上記不揮発性メモリにアクセスするホストコンピュータとを具備し、上記ホストコンピュータは、上記エラーページの属するブロックにおいて上記代替ページが不足したときには上記エラーページの属するブロックとは異なる代替ブロックにアクセス先を変更して当該代替ブロックに属するページによって上記エラーページを代替する情報処理システムである。これにより、不揮発性メモリにおいて、ブロック内におけるページ単位の代替処理を行いながら、ブロック単位の代替処理も行うという作用をもたらす。
また、本技術の第5の側面は、不揮発性メモリの複数のページからなるブロックにおいてエラーページを代替する際には上記エラーページの属するブロックに割り当てられた代替ページによって上記エラーページを代替する手順と、上記エラーページの属するブロックにおいて上記代替ページが不足したときには上記エラーページの属するブロックとは異なる代替ブロックを新たに確保して当該代替ブロックに属するページによって上記エラーページを代替する手順とを具備する不揮発性メモリの制御方法である。これにより、ブロック内におけるページ単位の代替処理を行いながら、ブロック単位の代替処理も行うという作用をもたらす。
本技術によれば、第1の代替処理としてブロック内におけるページ単位の代替処理を行い、第2の代替処理としてブロック単位の代替処理も併用することができる。これにより、代替処理によって消費されるメモリの容量を削減し、また、これらに必要となる代替管理情報を縮小することができるという優れた効果を奏し得る。なお、ここに記載された効果は必ずしも限定されるものではなく、本開示中に記載されたいずれかの効果であってもよい。
本技術の実施の形態における機能構成例を示す図である。 第1の実施の形態におけるメモリコントローラの構成例を示す図である。 第1の実施の形態におけるメモリの構成例を示す図である。 第1の実施の形態における不揮発性メモリの領域構成例を示す図である。 第1の実施の形態における第1代替管理情報例を示す図である。 第1の実施の形態における第2代替管理情報例を示す図である。 第1の実施の形態におけるライト処理の処理手順の一例を示す図である。 第1の実施の形態におけるブロック選択処理(ステップS910)の処理手順の一例を示す図である。 第1の実施の形態におけるページ書込み処理の処理手順(ステップS920)の一例を示す図である。 第1の実施の形態における代替ブロック処理の処理手順(ステップS940)の一例を示す図である。 第1の実施の形態におけるリード処理手順の一例を示す図である。 第1の実施の形態におけるブロック選択処理(ステップS960)の処理手順の一例を示す図である。 本技術の第1の実施の形態におけるページ読出し処理の処理手順(ステップS970)の一例を示す図である。 本技術の第2の実施の形態における第1代替管理情報の一例を示す図である。 本技術の第2の実施の形態における第2代替管理情報の一例を示す図である。 本技術の第2の実施の形態におけるライト処理の処理手順の一例を示す図である。 本技術の第2の実施の形態におけるページ書込み処理の処理手順(ステップS820)の一例を示す図である。 本技術の第2の実施の形態における代替ブロック処理の処理手順(ステップS840)の一例を示す図である。 本技術の第2の実施の形態におけるリード処理手順の一例を示す図である。 本技術の第2の実施の形態におけるページ読出し処理の処理手順(ステップS870)の一例を示す図である。 本技術の第3の実施の形態におけるライト処理の処理手順の一例を示す図である。 本技術の第3の実施の形態におけるブロック選択処理(ステップS710)の処理手順の一例を示す図である。 本技術の第3の実施の形態におけるページ書込み処理の処理手順(ステップS720)の一例を示す図である。 本技術の第3の実施の形態における代替ブロック処理の処理手順(ステップS740)の一例を示す図である。 本技術の第3の実施の形態におけるリード処理手順の一例を示す図である。 本技術の第3の実施の形態におけるブロック選択処理(ステップS760)の処理手順の一例を示す図である。 本技術の第3の実施の形態におけるページ読出し処理の処理手順(ステップS770)の一例を示す図である。 本技術の第4の実施の形態における不揮発性メモリの領域構成例を示す図である。 本技術の第4の実施の形態における第1代替管理情報例を示す図である。 本技術の第4の実施の形態におけるライト処理の処理手順の一例を示す図である。 本技術の第4の実施の形態におけるブロック選択処理(ステップS610)の処理手順の一例を示す図である。 本技術の第4の実施の形態におけるページ書込み処理の処理手順(ステップS620)の一例を示す図である。 本技術の第4の実施の形態における代替ブロック処理の処理手順(ステップS640)の一例を示す図である。 本技術の第4の実施の形態におけるリード処理手順の一例を示す図である。 本技術の第4の実施の形態におけるブロック選択処理(ステップS660)の処理手順の一例を示す図である。 本技術の第4の実施の形態におけるページ読出し処理の処理手順(ステップS670)の一例を示す図である。 本技術の第5の実施の形態における第1代替管理情報例を示す図である。 本技術の第5の実施の形態におけるライト処理の処理手順の一例を示す図である。 本技術の第5の実施の形態におけるページ書込み処理の処理手順(ステップS520)の一例を示す図である。 本技術の第5の実施の形態における代替ブロック処理の処理手順(ステップS540)の一例を示す図である。 本技術の第5の実施の形態におけるリード処理手順の一例を示す図である。 本技術の第5の実施の形態におけるページ読出し処理の処理手順(ステップS570)の一例を示す図である。 本技術の第6の実施の形態におけるメモリコントローラの構成例を示す図である。 本技術の第6の実施の形態におけるホストコンピュータによるライト処理手順の一例を示す図である。 本技術の第6の実施の形態におけるホストコンピュータによる代替ブロック処理の処理手順(ステップS440)の一例を示す図である。 本技術の第6の実施の形態におけるメモリコントローラによるライト処理手順の一例を示す図である。 本技術の第6の実施の形態におけるメモリコントローラによるページ書込み処理の処理手順(ステップS420)の一例を示す図である。 本技術の第6の実施の形態におけるホストコンピュータによるリード処理手順の一例を示す図である。 本技術の第6の実施の形態におけるメモリコントローラによるリード処理手順の一例を示す図である。 本技術の第6の実施の形態におけるメモリコントローラによるページ読出し処理の処理手順(ステップS470)の一例を示す図である。
以下、本技術を実施するための形態(以下、実施の形態と称する)について説明する。説明は以下の順序により行う。
1.第1の実施の形態(メモリコントローラの例)
2.第2の実施の形態(アドレス変換機能を備えるメモリコントローラの例)
3.第3の実施の形態(代替処理の発生に伴い、代替管理情報が生成される例)
4.第4の実施の形態(不揮発性メモリのページが複数のバンクよりなる場合の例)
5.第5の実施の形態(不揮発性メモリのページが複数のバンクよりなる、アドレス変換機能を備えるメモリコントローラの例)
6.第6の実施の形態(第1の代替処理をメモリコントローラで行い、第2の代替処理をホストコンピュータが行う場合の例)
7.変形例
<1.第1の実施の形態>
[情報処理システムの構成]
図1は、本技術の実施の形態における機能構成例を示す図である。ホストコンピュータ100は、プロセッサ110と、メモリコントローラインターフェース109とを備える。プロセッサ110は、ホストコンピュータ100の全体の動作を制御する。メモリコントローラインターフェース109は、メモリコントローラ200とのやり取りを行うインターフェースである。ホストコンピュータ100は、メモリコントローラ200との間で、メモリコントローラインターフェース109を介して、データのリードまたはライトを要求するコマンドを発行する。ホストコンピュータ100とメモリコントローラ200を接続するインターフェースとしては、SATA、PCI Express、eMMC、USBなどを利用することができる。なお、ホストコンピュータ100は、図示しないROM、RAM等のメモリなども備える。
メモリコントローラ200は、ホストインターフェース208とメモリインターフェース209とを備える。ホストインターフェース208は、ホストコンピュータ100とのやり取りを行うインターフェースである。メモリインターフェース209は、メモリ300とのやり取りを行うインターフェースである。メモリコントローラ200は、ホストインターフェース208を介して、ホストコンピュータ100より、リードコマンドまたはライトコマンドを受けとる。その後、メモリコントローラ200は、これらのコマンドに基づき、メモリインターフェース209を介して、メモリ300に対しリクエストを要求してデータの書込みまたは読出しを行う。
メモリ300は、不揮発性メモリとその周辺回路により構成されており、メモリコントローラ200とのやり取りを行うメモリコントローラインターフェース309を含んでいる。メモリ300に含まれる不揮発性メモリはページ単位でデータの読出し、書込みが可能であり、ホストコンピュータ100の動作に必要なデータを保存する。ここで、ページの大きさは任意のバイト数とすることができる。後述するとおり、メモリ300に含まれる不揮発性メモリは複数のページを含むブロック単位でも管理される。不揮発性メモリの例としては、NAND型フラッシュメモリ、PCRAM(Phase-Change RAM)、MRAM(Magnetoresistive RAM)、ReRAM(Resistance RAM)が挙げられる。
図2は、本技術の実施の形態におけるメモリコントローラの構成例を示す図である。メモリコントローラ200は、前述したホストインターフェース208とメモリインターフェース209のほか、制御部210と、データバッファ220と、代替管理情報バッファ230と、第1代替処理部250と、第2代替処理部260とを備える。
メモリコントローラ200は、メモリ300に含まれる不揮発性メモリの管理を、第1代替管理情報と第2代替管理情報とに基づいて処理し、前記不揮発性メモリの制御を行う。第1代替管理情報は、エラーページと代替ページとの対応関係を示す管理情報であり、第2代替管理情報は、代替ページが不足したブロックと代替ブロックとの対応関係を示す管理情報である。これらの詳細については後述する。なお、第1代替管理情報は、特許請求の範囲に記載の第1の代替管理情報である。同様に、第2代替管理情報は、特許請求の範囲に記載の第2の代替管理情報である。
制御部210は、ホストコンピュータ100から発行されたコマンドの解釈を行う。その後、メモリ300との間で、制御コマンドおよびデータの入出力を行う。また、制御部210は、データバッファ220、代替管理情報バッファ230、第1代替処理部250、第2代替処理部260の制御も行う。
データバッファ220は、ホストコンピュータ100とメモリ300との間でデータの転送を行う際に、データを一時的に保管するバッファである。代替管理情報バッファ230は、第1および第2代替管理情報を一時的に保持するバッファである。第1代替処理部250は、第1代替管理情報に基づいて代替処理を行う。第2代替処理部260は、第2代替管理情報に基づいて代替処理を行う。第1および第2の代替処理については後述する。なお、代替管理情報バッファ230は、特許請求の範囲に記載の第1代替管理情報バッファおよび第2代替管理情報バッファの一例である。
本技術の実施の形態では、第1および第2代替管理情報は、メモリ300内の不揮発性メモリに記憶されている。制御部210は、情報処理システム起動時に、この第1および第2代替管理情報を代替管理情報バッファ230に転送する。第1代替処理部250は代替管理情報バッファ230に転送された第1代替管理情報に基づいて代替処理を行う。エラーページが発生した際には、第1代替処理部250は、代替管理情報バッファ230に転送された第1代替管理情報に新たな代替管理情報を設定する。同様に、第2代替処理部260は、代替管理情報バッファ230に転送された第2代替管理情報に基づいて代替処理を行う。エラーブロックが発生した際には、第2代替処理部260は、代替管理情報バッファ230に転送された第2代替管理情報に新たな代替管理情報を設定する。制御部210は、代替管理情報バッファ230とメモリ300内の不揮発性メモリとに記憶されている第1および第2代替管理情報の整合を取る。具体的には、適宜代替管理情報バッファ230に保持されている第1および第2代替管理情報に基づいて、メモリ300内の不揮発性メモリに記憶されている第1および第2代替管理情報を更新する。
上述した処理により、メモリコントローラ200は、メモリ300内の不揮発性メモリに記憶された第1および第2代替管理情報にアクセスすることなく代替処理を行うことができる。
[メモリ300内の記憶領域]
図3は、本技術の実施の形態におけるメモリの構成例を示す図である。メモリ300は、前述したメモリコントローラインターフェース309のほか、制御部310と、不揮発性メモリ320とを備える。制御部310は、メモリコントローラ200より送出された制御コマンドに従って、不揮発性メモリ320に対しリード、ライト動作を行う。不揮発性メモリ320は、データブロック領域330と代替ブロック領域340を備える。データブロック領域330は、通常時のデータ保存に使用するデータ保存ブロックよりなる領域である。代替ブロック領域340は、エラーブロックを代替するための代替ブロックよりなる領域である。
図4は、本技術の実施の形態における不揮発性メモリの領域構成例を示す図である。図に表したとおり、不揮発性メモリ320内のデータ保存ブロックおよび代替ブロックは、データ保存ページと代替ページとにより構成されている。データ保存ページは、通常時のデータ保存に使用するページであるが、その一部として第1および第2代替管理情報を記憶する領域も存在する。代替ページは、エラーページを代替するためのページである。
[代替処理]
ここで、本技術の実施の形態における代替処理について説明する。通常、メモリコントローラは、図4に表したデータ保存ブロックに含まれるデータ保存ページに対しデータの書込みおよび読出しすなわちアクセスを行う。データ保存ページがエラーページとなった場合、メモリコントローラ200は、このエラーページの代わりに同じブロックに属する代替ページを用いてアクセスを行うよう変更する。この処理が、第1の代替処理である。
第1の代替処理の結果、ブロック内の代替ページが不足し、更なる代替処理ができなくなったブロックの発生も予想される。なお、以降の説明では代替ページが不足したブロックをエラーブロックと記載する。このような場合、メモリコントローラ200は、ブロック単位で代替処理を行う。具体的には、メモリコントローラ200は、このエラーブロックの代わりに代替ブロックを用いてアクセスを行うよう変更する。この処理が、第2の代替処理である。このように、本技術の実施の形態では、不揮発性メモリをページおよびブロック単位で管理し、第1と第2の2段階で代替処理を行う。
図4において、mは不揮発性メモリ320に含まれる総ブロック数、dは代替ブロック数、bはブロックに含まれる総ページ数、eは代替ページ数を表す。この場合、m−dはデータ保存ブロック数を表し、b−eはデータ保存ページ数を表すこととなる。不揮発性メモリ320の記憶領域は、連続するm個のブロックで構成され、m−d個のデータ保存ブロックとd個の代替ブロックに分けられる。これらは各々データブロック領域330と代替ブロック領域340に含まれる。また、各ブロックは、連続するb個のページで構成され、b−e個のデータ保存ページとe個の代替ページに分けられる。
ここで、2Gバイトの不揮発性メモリに本技術を適用する場合を考える。ページサイズを512バイト、ブロックサイズを32ページにした場合には、mdbeの値として、
m=131072、d=8192、b=32、e=2とすることができる。
また、ページサイズを4096バイト、ブロックサイズを32ページにした場合には、
m=16384、d=1024、b=32、e=2とすることができる。
[代替管理情報]
図5は、本技術の第1の実施の形態における第1代替管理情報例を示す図である。本技術の実施の形態における第1代替管理情報は、データ保存ページ(すなわち、代替元)を管理する第1アドレス変換テーブルと代替ページ(すなわち、代替先)を管理する第1管理フラグ情報とにより構成される。同図におけるaは、第1アドレス変換テーブルを表し、同図におけるbは、第1管理フラグ情報を表している。第1アドレス変換テーブルは、ブロック内のデータ保存ページと同数のページ管理情報を有する。このページ管理情報は、当該データ保存ページがエラーページであり代替されているか否かを示す代替ページフラグと、代替されている場合に代替先のページアドレスを示す代替ページアドレスとを含んでいる。第1管理フラグ情報は、ブロック内の代替ページと同数のページ管理情報を有する。このページ管理情報は、代替ページが使用されているか否かを示す代替ページ使用フラグを含んでいる。第1アドレス変換テーブルのページ管理情報である代替ページアドレスは、ブロックの先頭ページからのオフセットページアドレスや複数存在する代替ページのいずれかを示すビット情報を用いることができる。
先の例では、ブロックに含まれる総ページ数b=32、代替ページ数e=2であるため、ブロック当たりの第1アドレス変換テーブルのエントリは、b−eより30となる。代替ページアドレスとして、ブロック内の先頭代替ページからのオフセットページアドレスを採用した場合には、代替ページフラグと代替ページアドレスが各々1ビットのサイズで済むため、第1アドレス変換テーブルのエントリサイズは2ビットとなる。また、データ保存ブロック数は、m−dより122880となり、第1アドレス変換テーブルもこれと同数必要となる。これらより、第1アドレス変換テーブルの合計サイズは、122880×30×2=921Kバイトとなる。
図6は、本技術の第1の実施の形態における第2代替管理情報例を示す図である。本技術の実施の形態における第2代替管理情報は、データ保存ブロック(すなわち、代替元)を管理する第2アドレス変換テーブルと代替ブロック(すなわち、代替先)を管理する第2管理フラグ情報とにより構成される。同図におけるaは、第2アドレス変換テーブルを表し、同図におけるbは、第2管理フラグ情報を表している。第2アドレス変換テーブルは、データブロック領域330に含まれるブロックと同数のブロック管理情報を有する。このブロック管理情報は、当該ブロックがエラーブロックであり代替されているか否かを示す代替ブロックフラグと、代替先のブロックアドレスを示す代替ブロックアドレスを含んでいる。第2管理フラグ情報は、代替ブロック領域340に含まれるブロックと同数のブロック管理情報を有する。このブロック管理情報は、代替ブロックが使用されているか否かを示す代替ブロック使用フラグを含んでいる。第2アドレス変換テーブルのブロック管理情報である代替ブロックアドレスは、代替ブロック領域340の先頭ブロックからのオフセットブロックアドレスや複数存在する代替ブロックのいずれかを示すビット情報を用いることができる。
先の例では、データ保存ブロック数は、122880、代替ページ数は、8192である。代替ブロックアドレスとして、代替ブロック領域340の先頭ブロックからのオフセットブロックアドレスを採用した場合には、代替ブロックアドレスとして13ビットアドレスが必要となる。代替ブロック使用フラグは1ビットのサイズであるため、第2アドレス変換テーブルのエントリサイズは14ビットとなる。これらより、第2アドレス変換テーブルサイズは、122880×14=215Kバイトとなる。
なお、本技術の実施の形態における第1および第2のアドレス変換は、代替されたページまたはブロックに対してアドレスの変換を行う際に使用する。代替されていないページまたはブロックに対してアクセスがなされた場合は、ホストコンピュータ100により指定されたページまたはブロックのアドレスをそのまま使用する。
次に、上述の実施の形態におけるライトおよびリードの動作について図面を参照して説明する。
[ライト処理の処理手順]
図7は、本技術の第1の実施の形態におけるライト処理の処理手順の一例を示す図である。ホストコンピュータ100よりライトコマンドを受け取ると、メモリコントローラ200は、ライト処理を開始する。なお、このライトコマンドは、ライト対象の指定ページアドレスとライトデータとを含んでいる。まず、ブロック選択処理(ステップ910)を実行し、指定ページアドレスに対応するブロックを選択する。次に、ページ書込み処理(ステップS920)を実行する。ライト処理が複数のページにわたる場合に、次の書込みページが存在する場合は(ステップS932:Yes)、再度ページ書込みを実行する(ステップS920)。先に選択したブロック内で、次のページが存在しない場合は(ステップS932:No)、処理はステップS935に移る。ライト処理が複数のブロックにわたる場合に、次の書込みブロックが存在する場合は(ステップS935:Yes)、再度S910からの処理を繰り返す。次の書込みブロックが存在しない場合は(ステップS935:No)、本ライト処理を終了する。
図8は、本技術の第1の実施の形態におけるブロック選択処理(ステップS910)の処理手順の一例を示す図である。メモリコントローラ200は、ライト対象ブロックに対応する第2代替管理情報の代替ブロックフラグを検索する。このフラグがONすなわち代替を生じている場合は(ステップS912:Yes)、代替ブロックアドレスを使用して以降の処理を行うよう設定する(ステップS913)。代替を生じていない場合は(ステップS912:No)、ライトコマンドで指定されたページが属するブロックのアドレスを使用して以降の処理を行うよう設定する(ステップS914)。以降の説明では、ライトまたはリードコマンドで指定されたページが属するブロックのアドレスを指定ブロックアドレスと記載する。
図9は、本技術の第1の実施の形態におけるページ書込み処理の処理手順(ステップS920)の一例を示す図である。メモリコントローラ200は、ライト対象ページに対応する第1代替管理情報の代替ページフラグを検索する。このフラグがONすなわち代替を生じている場合は(ステップS922:Yes)、代替ページアドレスにデータ書込みを行う(ステップS923)。代替を生じていない場合は(ステップS922:No)、指定ページアドレスにデータ書込みを行う(ステップS924)。その後、書込みエラーを生じなかった場合(ステップS925:No)は、ページ書込み処理を終了する。
書込みエラーを生じた場合(ステップS925:Yes)、メモリコントローラ200は、代替処理を行うため未使用代替ページを検索する(ステップS933)。これは、第1代替管理情報の代替ページ使用フラグがONになっていない代替ページを検索することにより行う。その結果、未使用代替ページが存在する場合は(ステップS934:Yes)、第1代替管理情報の代替ページフラグをONにし、代替ページアドレスに上記未使用代替ページのアドレスを設定し、代替ページ使用フラグをONにする(ステップS936)。その後、処理はステップS923に戻り、再度データ書込みを行う。代替ページを全て使用しているなどのように、未使用代替ページが存在しない場合は(ステップS934:No)、代替ブロック処理(ステップS940)を実行後、ページ書込み処理を再度実行する。
図10は、本技術の第1の実施の形態における代替ブロック処理の処理手順(ステップS940)の一例を示す図である。メモリコントローラ200は、未使用代替ブロック検索(ステップS943)を実行する。これは、第2代替管理情報の代替ブロック使用フラグを検索することにより行う。その結果、未使用代替ブロックがない場合は(ステップS944:No)、代替不能となる。メモリコントローラ200は、エラーの発生をホストコンピュータに通知し、書込み処理を終了する。
未使用代替ブロックがある場合には(ステップS944:Yes)、メモリコントローラ200は、指定ブロックに含まれる全ページに保存されているデータを上記未使用代替ブロックのページにコピーする(ステップS945)。その後、第2代替管理情報の代替ブロックフラグをONにし、代替ブロックアドレスに上記未使用代替ブロックのアドレスを設定し、代替ブロック使用フラグをONにする(ステップS946)。本代替ブロック処理を終了し、図9において前述したページ書込み処理に戻る。この際、メモリコントローラ200は、ホストコンピュータ100により指定されたブロックのアドレスに代えて、本代替ブロック処理で確保した代替ブロックのアドレスを使用して以降の処理(ステップS922以降)を行うよう設定する。
[リード処理の処理手順]
図11は、本技術の第1の実施の形態におけるリード処理手順の一例を示す図である。ホストコンピュータ100よりリードコマンドを受け取ると、メモリコントローラ200は、リード処理を開始する。なお、このリードコマンドは、指定ページアドレスを含んでいる。まず、ブロック選択処理(ステップ960)を実行し、指定ページアドレスに対応するブロックを選択する。次に、ページ読出し処理(ステップS970)を実行する。リード処理が複数のページにわたる場合に、次の読出しページが存在する場合は(ステップS982:Yes)、再度ページ読出し処理(ステップS970)を実行する。先に選択したブロック内で、次の読出しページが存在しない場合は(ステップS982:No)、処理はステップS985に移る。リード処理が複数のブロックにわたる場合に、次の読出しブロックが存在する場合は(ステップS985:Yes)、再度ステップS960からの処理を繰り返す。次の読出しブロックが存在しない場合は(ステップS985:No)、本リード処理を終了する。
図12は、本技術の第1の実施の形態におけるブロック選択処理(ステップS960)の処理手順の一例を示す図である。メモリコントローラ200は、リード対象ブロックに対応する第2代替管理情報の代替ブロックフラグを検索する。このフラグがONすなわち代替を生じている場合は(ステップS962:Yes)、代替ブロックアドレスを使用して以降の処理を行うよう設定する(ステップS963)。代替を生じていない場合は(ステップS962:No)、指定ブロックアドレスを使用して以降の処理を行うよう設定する(ステップS964)。
図13は、本技術の第1の実施の形態におけるページ読出し処理の処理手順(ステップS970)の一例を示す図である。メモリコントローラ200は、データ読出し対象であるページについて、代替が発生しているか否かを判断する。メモリコントローラ200は、リード対象ページに対応する第1代替管理情報の代替ページフラグを検索する。このフラグがONすなわち代替を生じている場合は(ステップS972:Yes)、代替ページアドレスからデータ読出しを行う(ステップS973)。代替を生じていない場合は(ステップS972:No)、指定ページアドレスからデータ読出しを行う(ステップS974)。その後、ページ読出し処理を終了する。
ここで、この第1の実施の形態の効果について説明する。ページ単位で代替処理を行う場合と、本技術の実施の形態による場合とで代替管理情報サイズを比較する。簡単にするため代替ページ使用フラグ、代替ブロック使用フラグは除外する。
まず、2Gバイトの不揮発性メモリの代替管理を、ブロック毎に行うことなく、512バイトのページ単位で行うという従来技術の場合を考える。総ページ数は、4194304となる。先の例に倣って、代替ページ数を総ページ数の1/16とすると、データページ数と代替ページ数は夫々3932160、262144となる。代替ページアドレスとして、代替ページ領域の先頭ページからのオフセットページアドレスを採用した場合には、代替ページアドレスとして18ビットアドレスが必要となる。1ビットの代替ブロック使用フラグを加えると、アドレス変換テーブルのエントリサイズは19ビットとなる。これらより、アドレス変換テーブルサイズは、3932160×19=9.33Mバイトとなる。
一方、本技術の第1の実施の形態では、前述したとおり、第1および第2アドレス変換テーブルサイズは夫々921K、215Kバイトである。これらの合計は、1.13Mバイトに過ぎない。
このように、本技術の第1の実施の形態によれば、ブロック内においてページ単位の代替処理を行いながら、代替管理情報サイズを大幅に縮小することができる。このため、代替管理情報を保持する代替管理情報バッファ230の容量も小さくすることができる。
また、この第1の実施の形態では、代替処理を第1の代替処理と第2の代替処理の2段階で行っている。ページ単位で代替処理を行うシステムのように、1段階の代替処理しか行わない場合と比べ、エラー発生に対する信頼性を向上させることができる。
さらに、この第1の実施の形態では、第1および第2代替管理情報をメモリ300内の不揮発性メモリから上記代替管理情報バッファ230に転送し、代替処理に使用している。このような構成を採用することにより、メモリコントローラ200は、メモリ300内の不揮発性メモリに記憶された第1および第2代替管理情報にアクセスすることなく代替処理を行うことができる。そのため、代替処理を高速に行うことができる。また、不揮発性メモリにおける第1および第2代替管理情報を記憶している部分へのアクセス集中を避けることもできる。
<2.第2の実施の形態>
上述の第1の実施の形態では、論理ページをそのまま物理ページとして使用していたが、本技術の第2の実施の形態では、メモリコントローラ200が論理ページアドレスから物理ページアドレスへのアドレス変換機能を備える。不揮発性メモリを使用した情報システムでは、特定のページにアクセスが集中する場合がある。このような場合に、アクセスを他のページに分散させるため、メモリコントローラにアドレス変換機能が付加される。ホストコンピュータ100より指定されたページのアドレスを論理ページアドレスとし、不揮発性メモリ320上のページのアドレスを物理ページアドレスとする。両者の対応関係を適宜変更してデータを再配置し、特定ページへのアクセス集中を分散させる。さらに、本実施の形態では、ブロック単位のアドレス変換機能も備える。第1および第2の代替処理は、これらのアドレス変換機能の一部として実現される。ページ単位のアドレス変換と第1の代替処理を行うアドレス変換部は、第1代替処理部250に含まれる。ブロック単位のアドレス変換と第2の代替処理を行うアドレス変換部は、第2代替処理部260に含まれる。なお、これらのアドレス変換部は、特許請求の範囲に記載のアドレス変換部の一例である。
システムとしての機能構成やメモリコントローラ200、メモリ300、不揮発性メモリの領域構成は、本技術の第1の実施の形態と同様であるため、以下では説明を省略する。
[代替管理情報]
図14は、本技術の第2の実施の形態における第1代替管理情報の一例を示す図である。本技術の実施の形態における第1代替管理情報は、論理ページ管理情報を含む第1アドレス変換テーブルと物理ページ管理情報を含む第1管理フラグ情報とにより構成される。同図におけるaは、第1アドレス変換テーブルを表し、同図におけるbは、第1管理フラグ情報を表している。第1アドレス変換テーブルは、ブロック内のデータ保存ページと同数の論理ページ管理情報を有する。この論理ページ管理情報は、当該論理ページに対して割り当てられた物理ページアドレスを含んでいる。また、物理ページアドレスは、ブロックの先頭ページからのオフセットアドレスとすることができる。第1管理フラグ情報は、ブロック内のページと同数の物理ページ管理情報を有する。この物理ページ管理情報は、データ保存ページと代替ページとでは異なっている。データ保存ページでは、当該ページのアドレスが論理ページアドレスに対応する物理ページアドレスとして割り当て済みであるか否かを示す物理ページ使用フラグと当該ページがエラーページであることを示す物理ページ不良フラグとを含んでいる。代替ページでは、当該ページが代替ページとして割り当て済みであることを示す代替ページ使用フラグと当該ページがエラーページであることを示す代替ページ不良フラグとを含んでいる。
図15は、本技術の第2の実施の形態における第2代替管理情報の一例を示す図である。本技術の実施の形態における第2代替管理情報は、論理ブロック管理情報を含む第2アドレス変換テーブルと物理ブロック管理情報を含む第2管理フラグ情報とにより構成される。同図におけるaは、第2アドレス変換テーブルを表し、同図におけるbは、第2管理フラグ情報を表している。第2アドレス変換テーブルは、データブロック領域330に含まれるブロックと同数の論理ブロック管理情報を有する。この論理ブロック管理情報は、当該論理ブロックに対して割り当てられた物理ブロックアドレスを含んでいる。また、物理ブロックアドレスは、各ブロックの先頭ページアドレスとすることができる。第2管理フラグ情報は、不揮発性メモリ320に含まれる総ブロック数と同数の物理ブロック管理情報を有する。この物理ブロック管理情報は、データ保存ブロックと代替ブロックとでは異なっている。データ保存ブロックでは、当該ブロックのアドレスが論理ブロックアドレスに対応する物理ブロックアドレスとして割り当て済みであるか否かを示す物理ブロック使用フラグと当該ブロックがエラーブロックであることを示す物理ブロック不良フラグとを含んでいる。代替ブロックでは、当該ブロックが代替ブロックとして割り当て済みであることを示す代替ブロック使用フラグと当該ブロックがエラーブロックであることを示す代替ブロック不良フラグとを含んでいる。
次に、上述の実施の形態におけるライトおよびリード処理について図面を参照して説明する。
[ライト処理の処理手順]
図16は、本技術の第2の実施の形態におけるライト処理の処理手順の一例を示す図である。ホストコンピュータ100よりライトコマンドを受け取ると、メモリコントローラ200は、ライト処理を開始する。なお、このライトコマンドは、ライト対象の論理ページアドレスとライトデータとを含んでいる。まず、メモリコントローラ200は、物理ブロックアドレス取得(ステップS811)を実行する。これは、第2代替管理情報の第2アドレス変換テーブルから物理ブロックアドレスを取得することにより行う。次に、ページ書込み処理(ステップS820)を実行する。ライト処理が複数のページにわたる場合に、次の書込みページが存在する場合は(ステップS832:Yes)、再度ページ書込みを実行する(ステップS820)。先に取得したブロック内において、次の書込みページが存在しない場合は(ステップS835:No)、処理はステップS835に移る。ライト処理が複数のブロックにわたる場合に、次の書込みブロックが存在する場合は(ステップS835:Yes)、再度S811からの処理を繰り返す。次の書込みブロックが存在しない場合は(ステップS835:No)、本ライト処理を終了する。
図17は、本技術の第2の実施の形態におけるページ書込み処理の処理手順(ステップS820)の一例を示す図である。メモリコントローラ200は、第1代替管理情報の第1アドレス変換テーブルから物理ページアドレスを取得し、この物理ページアドレスにデータ書込みを行う(ステップS823)。その後、書込みエラーを生じなかった場合(ステップS825:No)は、ページ書込み処理を終了する。
書込みエラーを生じた場合(ステップS825:Yes)は、メモリコントローラ200は、この物理ページに対応する第1代替管理情報の物理ページ不良フラグをONに設定する(ステップS832)。次に、代替処理を行うため未使用代替ページを検索する(ステップS833)。これは、第1代替管理情報の代替ページ使用フラグと代替ページ不良フラグが共にONになっていない代替ページを検索することにより行う。その結果、未使用代替ページが存在する場合は(ステップS834:Yes)、この未使用代替ページに対応する第1代替管理情報の代替ページ使用フラグをONに設定する。また、第1アドレス変換テーブルのライト対象論理ページアドレスに対応する物理ページアドレスとして、上記未使用代替ページのアドレスを設定する(ステップS836)。その後、処理はステップS823に戻り、再度データ書込みを行う。代替ページを全て使用しているなどのように、未使用代替ページが存在しない場合(ステップS834:No)には、代替ブロック処理(ステップS840)を実行後、ページ書込み処理を再度実行する。
図18は、本技術の第2の実施の形態における代替ブロック処理の処理手順(ステップS840)の一例を示す図である。メモリコントローラ200は、エラーブロックに対応する第2管理情報の物理ブロック不良フラグをONに設定する(ステップS842)。次に、未使用代替ブロック検索(ステップS843)を実行する。これは、代替ブロック使用フラグと代替ブロック不良フラグが共にONになっていない代替ブロックを検索することにより行う。その結果、未使用代替ブロックがない場合には(ステップS844:No)、代替不能となる。メモリコントローラ200は、エラーの発生をホストコンピュータに通知し、書込み処理を終了する。
未使用代替ブロックがある場合には(ステップS844:Yes)、メモリコントローラ200は、指定ブロックに含まれる全ページに保存されているデータを上記未使用代替ブロックのページにコピーする(ステップS845)。その後、この代替ブロックに対応する第2代替管理情報の代替ブロック使用フラグをONに設定する。また、ライト対象論理ページアドレスに対応する物理ページアドレスとして、第2代替管理情報の第2アドレス変換テーブルに上記未使用代替ページのアドレスを設定する(ステップS846)。その後、本代替ブロック処理を終了し、図17において前述したページ書込み処理に戻る。この際、メモリコントローラ200は、第2代替管理情報の第2アドレス変換テーブルに従い、本代替ブロック処理により確保した代替ブロックのアドレスを使用して以降の処理(ステップS823以降)を行うこととなる。
[リード処理の処理手順]
図19は、本技術の第2の実施の形態におけるリード処理手順の一例を示す図である。ホストコンピュータ100よりリードコマンドを受け取ると、メモリコントローラ200は、リード処理を開始する。なお、このリードコマンドは、リード対象の論理ページアドレスを含んでいる。まず、物理ブロックアドレス取得(ステップS861)を実行する。これは、第2代替管理情報の第2アドレス変換テーブルから物理ブロックアドレスを取得することにより行う。次に、この物理ブロックアドレスに対応する物理ブロック使用フラグを検索する。このフラグがONすなわちブロックが使用中である場合は(ステップS881:Yes)、ページ読出し処理(ステップS870)を実行する。リード処理が複数のページにわたる場合に、次の読出しページが存在する場合は(ステップS882:Yes)、再度ページ読出し処理(ステップS870)を実行する。先に取得したブロック内に、次の読出しページが存在しない場合は(ステップS882:No)、処理はステップS885に移る。
一方、ブロックが使用中でない場合は(ステップS881:No)、ホストコンピュータ100に規定データを出力する(ステップS883)。ここで、規定データとは、リードデータが無効であることをホストコンピュータに通知する目的で出力されるデータであり、例えば全ビットが0または全ビットが1のデータとすることができる。リード処理が複数のページにわたる場合に、次の読出しページが存在する場合は(ステップS884:Yes)、再度規定データを出力する(ステップS883)。先に取得したブロック内に、次の読出しページが存在しない場合は(ステップS884:No)、処理はステップS885に移る。リード処理が複数のブロックにわたる場合に、次の読出しブロックが存在する場合は(ステップS885:Yes)、再度ステップS861からの処理を繰り返す。次の読出しブロックが存在しない場合は(ステップS885:No)、本リード処理を終了する。
図20は、本技術の第2の実施の形態におけるページ読出し処理の処理手順(ステップS870)の一例を示す図である。メモリコントローラ200は、リード対象ページに対応する第1代替管理情報の第1アドレス変換テーブルから物理ページアドレスを取得し、この物理ページアドレスに対応する物理ページ使用フラグを検索する。このフラグがONすなわちページが使用中の場合は(ステップS872:Yes)、物理ページアドレスからデータ読出しを行う(ステップS873)。ページが使用中でない場合は(ステップS872:No)、ホストコンピュータ100に規定データを出力する(ステップS874)。その後ページ読出し処理を終了する。
ここで、この第2の実施の形態の効果について説明する。第1代替管理情報の物理ページアドレスは、ブロックの先頭ページからのオフセットアドレスであるため、アドレス変換テーブルのエントリサイズは、ページ単位で代替管理を行う場合よりも小さくできる。また、ブロック単位で管理するため、第2代替管理情報のアドレス変換テーブルのエントリサイズも、ページ単位で代替管理を行う場合よりも小さくすることができる。
このように、本技術の第2の実施の形態によれば、メモリコントローラが論理アドレスから物理アドレスへのアドレス変換機能を備えるため、特定ページへのアクセス集中を防ぐことができる。
<3.第3の実施の形態>
上述の第1および第2の実施の形態では、第1および第2代替管理情報がメモリコントローラ200などに予め保持されていた。本技術の第3の実施の形態では、代替処理の発生時に動的に第1および第2代替管理情報が生成される。ここで、代替管理情報の生成とは、初期値として代替が発生していない状態の代替管理情報を作成することである。代替管理情報の生成後は、代替が発生するたびに、新たな代替管理情報を追加することとなる。
システムとしての機能構成やメモリコントローラ200、メモリ300、不揮発性メモリの領域構成は、本技術の第1の実施の形態と同様であるため、以下では説明を省略する。また、第1および第2代替管理情報は、図5および図6にて前述した管理情報を用いることができる。
次に、上述の実施の形態におけるライトおよびリードの動作について図面を参照して説明する。
[ライト処理の処理手順]
図21は、本技術の第3の実施の形態におけるライト処理の処理手順の一例を示す図である。ホストコンピュータ100よりライトコマンドを受け取ると、メモリコントローラ200は、ライト処理を開始する。なお、このライトコマンドは、ライト対象の指定ページアドレスとライトデータとを含んでいる。まず、ブロック選択処理(ステップS710)を実行し、指定ページアドレスに対応するブロックを選択する。次に、ページ書込み処理(ステップS720)を実行する。ライト処理が複数のページにわたる場合に、次の書込みページが存在する場合は(ステップS752:Yes)、再度ページ書込みを実行する(ステップS720)。先に選択したブロック内で、次の書込みページが存在しない場合は(ステップS752:No)、処理はステップS755に移る。ライト処理が複数のブロックにわたる場合に、次の書込みブロックが存在する場合は(ステップS755:Yes)、再度S710からの処理を繰り返す。次の書込みブロックが存在しない場合は(ステップS755:No)、本ライト処理を終了する。
図22は、本技術の第3の実施の形態におけるブロック選択処理(ステップS710)の処理手順の一例を示す図である。メモリコントローラ200は、第2代替管理情報が生成されているか否かを調べる。その結果、第2代替管理情報が生成されていない場合は(ステップS711:No)、代替は発生していないため、指定ブロックアドレスを使用して以降の処理を行うよう設定する(ステップS714)。第2代替管理情報が生成されている場合は(ステップS711:Yes)、ステップS712の処理に移る。メモリコントローラ200は、ライト対象ブロックに対応する第2代替管理情報の代替ブロックフラグを検索する。このフラグがONすなわち代替を生じている場合は(ステップS712:Yes)、代替ブロックアドレスを使用して以降の処理を行うよう設定する(ステップS713)。代替を生じていない場合は(ステップS712:No)、前述したステップS714の処理に移る。
図23は、本技術の第3の実施の形態におけるページ書込み処理の処理手順(ステップS720)の一例を示す図である。メモリコントローラ200は、第1代替管理情報が作成されているか否かを調べる。その結果、第1代替管理情報が作成されていない場合は(ステップS721:No)、指定ページアドレスにデータ書込みを行う(ステップS724)。第1代替管理情報が作成されている場合は(ステップS721:Yes)、ステップS722の処理に移る。メモリコントローラ200は、ライト対象ページに対応する第1代替管理情報の代替ページフラグを検索する。このフラグがONすなわち代替を生じている場合は(ステップS722:Yes)、代替ページアドレスにデータ書込みを行う(ステップS723)。代替を生じていない場合は(ステップS722:No)、指定ページアドレスに書込みを行う(ステップS724)。その後、書込みエラーを生じなかった場合(ステップS725:No)、ページ書込み処理を終了する。
書込みエラーが生じた場合(ステップS725:Yes)、メモリコントローラ200は、第1代替管理情報が生成されているか否かを調べる。その結果、第1代替管理情報が生成されていない場合は(ステップS731:No)、第1代替管理情報を生成し登録する(ステップS732)。なお、生成された第1代替管理情報は、代替管理情報バッファ230に保持され、以降の代替処理の際に使用される。その後、代替処理を行うため未使用代替ページを検索する(ステップS733)。これは、第1代替管理情報の代替ページ使用フラグがONになっていない代替ページを検索することにより行う。その結果、未使用代替ページが存在する場合は(ステップS734:Yes)、第1代替管理情報の代替ページフラグをONにし、代替ページアドレスに上記未使用代替ページのアドレスを設定し、代替ページ使用フラグをONにする(ステップS736)。その後、処理はステップS723に戻り、再度データ書込みを行う。未使用代替ページが存在しない場合は(ステップS734:No)、代替ブロック処理(ステップS740)を実行後、ステップS721からの処理を再度実行する。
図24は、本技術の第3の実施の形態における代替ブロック処理の処理手順(ステップS740)の一例を示す図である。メモリコントローラ200は、第2代替管理情報が生成されているか否かを調べる。その結果、第2代替管理情報が生成されていない場合は(ステップS741:No)、第2代替管理情報を生成し登録する(ステップS742)。なお、生成された第2代替管理情報は、代替管理情報バッファ230に保持され、以降の代替処理の際に使用される。その後、未使用代替ブロック検索(ステップS743)を実行する。これは、第2代替管理情報の代替ブロック使用フラグを検索することにより行う。その結果、未使用代替ブロックがない場合には(ステップS744:No)、代替不能となる。メモリコントローラ200は、エラーの発生をホストコンピュータに通知し、書込み処理を終了する。
未使用代替ブロックがある場合には(ステップS744:Yes)、メモリコントローラ200は、指定ブロックに含まれる全ページに保存されているデータを上記未使用代替ブロックのページにコピーする(ステップS745)。その後、第2代替管理情報の代替ブロックフラグをONにし、代替ブロックアドレスに上記未使用代替ブロックのアドレスを設定し、代替ブロック使用フラグをONにする(ステップS746)。その後、本代替ブロック処理を終了し、図23において前述したページ書込み処理に戻る。この際、ホストコンピュータ100により指定されたブロックのアドレスに代えて、本代替ブロック処理で確保した代替ブロックのアドレスに対し以降の処理(ステップS721以降)を行うこととなる。
[リード処理の処理手順]
図25は、本技術の第3の実施の形態におけるリード処理手順の一例を示す図である。ホストコンピュータ100よりリードコマンドを受け取ると、メモリコントローラ200は、リード処理を開始する。なお、このリードコマンドは、指定ページアドレスを含んでいる。まず、ブロック選択処理(ステップ760)を実行し、指定ページアドレスに対応するブロックを選択する。次に、ページ読出し処理(ステップS770)を実行する。リード処理が複数のページにわたる場合に、次の読出しページが存在する場合は(ステップS782:Yes)、再度ページ読出し処理(ステップS770)を実行する。先に選択したブロック内で、次の読出しページが存在しない場合は(ステップS782:No)、処理はステップS785に移る。リード処理が複数のブロックにわたる場合に、次の読出しブロックが存在する場合は(ステップS785:Yes)、再度ステップS760からの処理を繰り返す。次の読出しブロックが存在しない場合は(ステップS785:No)、本リード処理を終了する。
図26は、本技術の第3の実施の形態におけるブロック選択処理(ステップS760)の処理手順の一例を示す図である。メモリコントローラ200は、第2代替管理情報が生成されているか否かを調べる。その結果、第2代替管理情報が生成されていない場合は(ステップS761:No)、代替は発生していないため、指定ブロックアドレスを使用して以降の処理を行うよう設定する(ステップS764)。第2代替管理情報が生成されている場合は(ステップS761:Yes)、ステップS762の処理に移る。メモリコントローラ200は、リード対象ブロックに対応する第2代替管理情報の代替ブロックフラグを検索する。このフラグがONすなわち代替を生じている場合は(ステップS762:Yes)、代替ブロックアドレスを使用して以降の処理を行うよう設定する(ステップS763)。代替を生じていない場合は(ステップS762:No)、前述したステップS764の処理に移る。
図27は、本技術の第3の実施の形態におけるページ読出し処理の処理手順(ステップS770)の一例を示す図である。メモリコントローラ200は、第1代替管理情報が生成されているか否かを調べる。その結果、第1代替管理情報が生成されていない場合は(ステップS771:No)、代替は発生していないため、指定ページアドレスからデータ読出しを行う(ステップS774)。第1代替管理情報が生成されている場合は(ステップS771:Yes)、ステップS772の処理に移る。メモリコントローラ200は、リード対象ページに対応する第1代替管理情報の代替ページフラグを検索する。このフラグがONすなわち代替を生じている場合は(ステップS772:Yes)、代替ページアドレスからデータ読出しを行う(ステップS773)。代替を生じていない場合は(ステップS772:No)、指定ページアドレスからデータ読出しを行う(ステップS774)。その後ページ読出し処理を終了する。
本技術の第3の実施の形態では、代替処理が発生するまでは、代替管理情報を持たない。そのため、ブロック選択(ステップS710)、ページ書込み(ステップS720)等の処理において代替管理情報の代替ブロックフラグ、代替ページフラグを検索する処理を省くことができる。また、代替処理が発生するたびに、代替管理情報にデータを追加する方式であるため、代替管理情報サイズは発生した代替処理数に比例することとなる。
このように、本技術の第3の実施の形態によれば、第1および第2代替管理情報を動的に生成することにより、リードまたはライト処理を高速に行うことができる。特に、エラーページ発生確率が低い不揮発性メモリを使用した記憶装置のように、代替処理発生確率の低い記憶装置においてこの効果は顕著である。また、上述したように、必要に応じてデータを追加するため、代替管理情報サイズを必要最低限の大きさとすることもできる。
<4.第4の実施の形態>
上述の第1および第2の実施の形態では、不揮発性メモリのページがアクセスの最小単位であったが、本技術の第4の実施の形態は、不揮発性メモリのページがさらに複数のバンクにより構成された場合の実施の形態である。
システムとしての機能構成やメモリコントローラ200、メモリ300の構成は、本技術の第1の実施の形態と同様であるため、以下では説明を省略する。
[メモリ300内の領域構成]
図28は、本技術の第4の実施の形態における不揮発性メモリの領域構成例を示す図である。図28は、不揮発性メモリ320内のページが、8個のバンクにより構成された場合の例である。メモリコントローラ200からは、バンク単位でアクセス可能である。一方ホストコンピュータとは、ページ単位でデータの入出力を行い、高速な書込み及び読出しに対応することができる。また、本技術の第4の実施の形態では、第1の代替処理は、バンク単位の代替処理となる。具体的には、データ保存ページのバンクでエラーが発生した場合、代替ページに属する同じバンク番号のバンクと代替する。なお、エラーブロックの代替は、前述した第2の代替処理と同じとすることができる。なお、ページがさらに複数のバンクにより構成される不揮発性メモリは、特許請求の範囲に記載の不揮発性メモリの一例である。
ここで、2Gバイトの不揮発性メモリに本技術を適用する場合を考える。バンクサイズを512バイトとするとページサイズはその8倍の4096バイトとなる。ブロックサイズを32ページにした場合には、mdbeの値として、
m=16384、d=1024、b=32、e=2とすることができる。
図29は、本技術の第4の実施の形態における第1代替管理情報例を示す図である。本技術の実施の形態における第1代替管理情報は、代替ページフラグ、代替ページアドレス、代替ページ使用フラグをバンクごとに有している。これ以外は、図5にて前述した第1代替管理情報と同様な構成とすることができる。また、第2代替管理情報は、図6に表した管理情報と同じとすることができる。
次に、上述の実施の形態におけるライトおよびリードの動作について図面を参照して説明する。なお、本実施の形態において、メモリコントローラ200は、バンク番号を示すポインタ(Bank)を保持する。以下の説明において、データ書込み、データ読出しはBankで示されるバンクに対してのみ行う。また、第1代替管理情報に含まれる各フラグ等の操作も、Bankで示されるバンクに対応するフラグ等に対してのみ行う。
[ライト処理の処理手順]
図30は、本技術の第4の実施の形態におけるライト処理の処理手順の一例を示す図である。ホストコンピュータ100よりライトコマンドを受け取ると、メモリコントローラ200は、ライト処理を開始する。なお、このライトコマンドは、ライト対象の指定ページアドレスとライトデータとを含んでいる。まず、ブロック選択処理(ステップ610)を実行し、指定ページアドレスに対応するブロックを選択する。次に、ページ書込み処理(ステップS620)を実行する。ライト処理が複数のページにわたる場合に、次の書込みページが存在する場合は(ステップS632:Yes)、再度ページ書込みを実行する(ステップS620)。先に選択したブロック内で、次の書込みページが存在しない場合は(ステップS632:No)、処理はステップS635に移る。ライト処理が複数のブロックにわたる場合に、次の書込みブロックが存在する場合は(ステップS635:Yes)、再度S610からの処理を繰り返す。次の書込みブロックが存在しない場合は(ステップS635:No)、本ライト処理を終了する。
図31は、本技術の第4の実施の形態におけるブロック選択処理(ステップS610)の処理手順の一例を示す図である。メモリコントローラ200は、ライト対象ブロックに対応する第2代替管理情報の代替ブロックフラグを検索する。このフラグがONすなわち代替を生じている場合は(ステップS612:Yes)、代替ブロックアドレスを使用して以降の処理を行うよう設定する(ステップS613)。代替を生じていない場合は(ステップS612:No)、指定ブロックアドレスを使用して以降の処理を行うよう設定する(ステップS614)。
図32は、本技術の第4の実施の形態におけるページ書込み処理の処理手順(ステップS620)の一例を示す図である。メモリコントローラ200は、Bankに0を設定し、初期化する(ステップS622)。次に、ライト対象ページに対応する第1代替管理情報の代替ページフラグを検索する。このフラグがONすなわち代替を生じている場合は(ステップS623:Yes)、代替ページアドレスにデータ書込みを行う(ステップS624)。代替を生じていない場合は(ステップS623:No)、指定ページアドレスにデータ書込みを行う(ステップS625)。その後、書込みエラーを生じなかった場合は(ステップS626:No)、Bankをインクリメントする(ステップS627)。その結果、全てのバンクについて書込みが終了し、次のバンクが存在しない場合は(ステップS628:No)、ページ書込み処理を終了する。次のバンクが存在する場合は(ステップS628:Yes)、ステップS623からの処理を再度実行する。
書込みエラーを生じた場合(ステップS626:Yes)、メモリコントローラ200は、代替処理を行うためエラー発生バンク(エラーバンク)に対応する未使用代替ページを検索する(ステップS633)。これは、第1代替管理情報のうちエラーバンクと同じバンク番号で、代替ページ使用フラグがONになっていない代替ページのバンクを検索することにより行う。その結果、未使用代替ページが存在する場合は(ステップS634:Yes)、第1代替管理情報の代替ページフラグをONにし、代替ページアドレスに上記未使用代替ページのアドレスを設定し、代替ページ使用フラグをONにする(ステップS636)。その後、処理はステップS624に戻り、再度データ書込みを行う。代替ページのバンクを全て使用しているなどのように、未使用代替ページが存在しない場合は(ステップS634:No)、代替ブロック処理(ステップS640)を実行後、ページ書込み処理を再度実行する。
図33は、本技術の第4の実施の形態における代替ブロック処理の処理手順(ステップS640)の一例を示す図である。メモリコントローラ200は、未使用代替ブロック検索(ステップS643)を実行する。これは、第2代替管理情報の代替ブロック使用フラグを検索することにより行う。その結果、未使用代替ブロックがない場合には(ステップS644:No)、代替不能となる。メモリコントローラ200は、エラーの発生をホストコンピュータに通知し、書込み処理を終了する。
未使用代替ブロックがある場合には(ステップS644:Yes)、メモリコントローラ200は、指定ブロックに含まれる全ページに保存されているデータを上記未使用代替ブロックのページにコピーする(ステップS645)。その後、第2代替管理情報の代替ブロックフラグをONにし、代替ブロックアドレスに上記未使用代替ブロックのアドレスを設定し、代替ブロック使用フラグをONにする(ステップS646)。その後、本代替ブロック処理を終了し、図32において前述したページ書込み処理に戻る。この際、ホストコンピュータ100により指定されたブロックのアドレスに代えて、本代替ブロック処理で確保した代替ブロックのアドレスに対し、以降の処理(ステップS623以降)を行うこととなる。
[リード処理の処理手順]
図34は、本技術の第4の実施の形態におけるリード処理手順の一例を示す図である。ホストコンピュータ100よりリードコマンドを受け取ると、メモリコントローラ200は、リード処理を開始する。なお、このリードコマンドは、指定ページアドレスを含んでいる。まず、ブロック選択処理(ステップS660)を実行し、指定ページアドレスに対応するブロックを選択する。次に、ページ読出し処理(ステップS670)を実行する。リード処理が複数のページにわたる場合に、次の読出しページが存在する場合は(ステップS682:Yes)、再度ページ読出し処理(ステップS670)を実行する。先に選択したブロック内で、次の読出しページが存在しない場合は(ステップS682:No)、処理はステップS685に移る。リード処理が複数のブロックにわたる場合に、次の読出しブロックが存在する場合は(ステップS685:Yes)、再度ステップS660からの処理を繰り返す。次の読出しブロックが存在しない場合は(ステップS685:No)、本リード処理を終了する。
図35は、本技術の第4の実施の形態におけるブロック選択処理(ステップS660)の処理手順の一例を示す図である。メモリコントローラ200は、リード対象ブロックに対応する第2代替管理情報の代替ブロックフラグを検索する。このフラグがONすなわち代替を生じている場合は(ステップS662:Yes)、代替ブロックアドレスを使用して以降の処理を行うよう設定する(ステップS663)。代替を生じていない場合は(ステップS662:No)、指定ブロックアドレスを使用して以降の処理を行うよう設定する(ステップS664)。
図36は、本技術の第4の実施の形態におけるページ読出し処理の処理手順(ステップS670)の一例を示す図である。メモリコントローラ200は、Bankに0を設定し、初期化する(ステップS671)。次に、リード対象ページに対応する第1代替管理情報の代替ページフラグを検索する。このフラグがONすなわち代替を生じている場合は(ステップS672:Yes)、代替ページアドレスからデータ読出しを行う(ステップS673)。代替を生じていない場合は(ステップS672:No)、指定ページアドレスからデータ読出しを行う(ステップS674)。その後、Bankをインクリメントする(ステップS675)。その結果、全てのバンクについて書込みが終了し、次のバンクが存在しない場合は(ステップS676:No)、ページ読出し処理を終了する。次のバンクが存在する場合は(ステップS676:Yes)、ステップS672からの処理を再度実行する。
このように、本技術の第4の実施の形態によれば、不揮発性メモリ320のページが複数のバンクよりなる場合であっても、第1の代替処理と第2の代替処理を行い、代替管理情報サイズを縮小することができる。
<5.第5の実施の形態>
上述の第4の実施の形態では、論理ページをそのまま物理ページとして使用していたが、本技術の第5の実施の形態では、メモリコントローラ200が論理ページアドレスから物理ページアドレスへのアドレス変換機能を備える。
システムとしての機能構成やメモリコントローラ200、メモリ300の構成は、本技術の第1の実施の形態と同様である。また、不揮発性メモリの領域構成は、本技術の第4の実施の形態と同様であるため、以下では説明を省略する。
図37は、本技術の第5の実施の形態における第1代替管理情報例を示す図である。本技術の実施の形態における第1代替管理情報は、物理ページアドレス、物理ページ使用フラグ、物理ページ不良フラグをバンクごとに有している。これ以外は、図14にて前述した第1代替管理情報と同様な構成とすることができる。また、第2代替管理情報は、図15に表した管理情報と同じとすることができる。
次に、上述の実施の形態におけるライトおよびリードの動作について図面を参照して説明する。バンク番号を示すポインタであるBankの動作については、第5の実施の形態と同様である。
[ライト処理の処理手順]
図38は、本技術の第5の実施の形態におけるライト処理の処理手順の一例を示す図である。ホストコンピュータ100よりライトコマンドを受け取ると、メモリコントローラ200は、ライト処理を開始する。なお、このライトコマンドは、ライト対象の論理ページアドレスとライトデータとを含んでいる。まず、メモリコントローラ200は、各バンクの物理ブロックアドレス取得(ステップS511)を実行する。これは、第2代替管理情報の第2アドレス変換テーブルから物理ブロックアドレスを取得することにより行う。次に、ページ書込み処理(ステップS520)を実行する。ライト処理が複数のページにわたる場合に、次の書込みページが存在する場合は(ステップS532:Yes)、再度ページ書込み処理を実行する(ステップS520)。先に取得したブロック内で、次の書込みページが存在しない場合(ステップS532:No)は、処理はステップS535に移る。ライト処理が複数のブロックにわたる場合に、次の書込みブロックが存在する場合は(ステップS535:Yes)、再度S511からの処理を繰り返す。次の書込みブロックが存在しない場合は(ステップS535:No)、本ライト処理を終了する。
図39は、本技術の第5の実施の形態におけるページ書込み処理の処理手順(ステップS520)の一例を示す図である。メモリコントローラ200は、Bankに0を設定し、初期化する(ステップS522)。次に、第1代替管理情報の第1アドレス変換テーブルからバンクの物理ページアドレスを取得し、この物理ページアドレスにデータ書込みを行う(ステップS523)。その後、書込みエラーを生じなかった場合は(ステップS525:No)、Bankをインクリメントする(ステップS526)。その結果、全てのバンクについて書込みが終了し、次のバンクが存在しない場合は(ステップS527:No)、ページ書込み処理を終了する。次のバンクが存在する場合は(ステップS527:Yes)、ステップS523からの処理を再度実行する。
書込みエラーを生じた場合は(ステップS525:Yes)、メモリコントローラ200は、この物理ページに対応する第1代替管理情報の物理ページ不良フラグをONに設定する(ステップS532)。次に、代替処理を行うため未使用代替ページを検索する(ステップS533)。これは、第1代替管理情報のうちエラーバンクと同じバンク番号で、代替ページ使用フラグと代替ページ不良フラグが共にONになっていない代替ページのバンクを検索することにより行う。その結果、未使用代替ページが存在する場合は(ステップS534:Yes)、この未使用代替ページに対応する第1代替管理情報の代替ページ使用フラグをONに設定する。また、第1アドレス変換テーブルのライト対象論理ページアドレスに対応する物理ページアドレスとして、上記未使用代替ページのアドレスを設定する(ステップS536)。その後、処理はステップS523に戻り、再度データ書込みを行う。代替ページのバンクを全て使用しているなどのように、未使用代替ページが存在しない場合(ステップS534:No)には、代替ブロック処理(ステップS540)を実行後、ページ書込み処理を再度実行する。
図40は、本技術の第5の実施の形態における代替ブロック処理の処理手順(ステップS540)の一例を示す図である。メモリコントローラ200は、エラーブロックに対応する第2管理情報の物理ブロック不良フラグをONに設定する(ステップS542)。次に、未使用代替ブロック検索(ステップS543)を実行する。これは、第2代替管理情報の代替ブロック使用フラグを検索することにより行う。その結果、未使用代替ブロックがない場合には(ステップS544:No)、代替不能となる。メモリコントローラ200は、エラーの発生をホストコンピュータに通知し、書込み処理を終了する。
未使用代替ブロックがある場合には(ステップS544:Yes)、メモリコントローラ200は、指定ブロックに含まれる全ページに保存されているデータを上記未使用代替ブロックのページにコピーする(ステップS545)。その後、この代替ブロックに対応する第2代替管理情報の代替ブロック使用フラグをONに設定する。また、ライト対象論理ページアドレスに対応する物理ページアドレスとして、第2代替管理情報の第2アドレス変換テーブルに上記未使用代替ページのアドレスを設定する(ステップS546)。その後、本代替ブロック処理を終了し、図39において前述したページ書込み処理に戻る。この際、第2代替管理情報の第2アドレス変換テーブルに従い、本代替ブロック処理で確保した代替ブロックのアドレスに対し以降の処理(ステップS523以降)を行うこととなる。
[リード処理の処理手順]
図41は、本技術の第5の実施の形態におけるリード処理手順の一例を示す図である。ホストコンピュータ100よりリードコマンドを受け取ると、メモリコントローラ200は、リード処理を開始する。なお、このリードコマンドは、リード対象の指定ページアドレスを含んでいる。まず、各バンクの物理ブロックアドレス取得(ステップS561)を実行する。これは、第2代替管理情報の第2アドレス変換テーブルから物理ブロックアドレスを取得することにより行う。次に、この物理ブロックアドレスに対応する物理ブロック使用フラグを検索する。このフラグがONすなわちブロックが使用中である場合は(ステップS581:Yes)、ページ読出し処理(ステップS570)を実行する。リード処理が複数のページにわたる場合に、次の読出しページが存在する場合は(ステップS582:Yes)、再度ページ読出し処理(ステップS570)を実行する。先に取得したブロック内に、次の読出しページが存在しない場合は(ステップS582:No)、処理はステップS585に移る。
一方、ページが使用中でない場合は(ステップS581:No)、ホストコンピュータ100に規定データを出力する(ステップS583)。リード処理が複数のページにわたる場合に、次の読出しページが存在する場合は(ステップS584:Yes)、再度規定データを出力する(ステップS583)。次の読出しページが存在しない場合は(ステップS584:No)、処理はステップS585に移る。リード処理が複数のブロックにわたる場合に、次の読出しブロックが存在する場合は(ステップS585:Yes)、再度ステップS561からの処理を繰り返す。次の読出しブロックが存在しない場合は(ステップS585:No)、本リード処理を終了する。
図42は、本技術の第5の実施の形態におけるページ読出し処理の処理手順(ステップS570)の一例を示す図である。メモリコントローラ200は、リード対象ページに対応する第1代替管理情報の第1アドレス変換テーブルから物理ページアドレスを取得し、この物理ページアドレスに対応する物理ページ使用フラグを検索する。このフラグがONすなわちページが使用中の場合は(ステップS571:Yes)、メモリコントローラ200は、Bankに0を設定し、初期化する(ステップS572)。物理ページアドレスからデータ読出しを行う(ステップS573)。その後、Bankのインクリメントを行う(ステップS575)。その結果、全てのバンクについて書込みが終了し、次のバンクが存在しない場合は(ステップS576:No)、ページ読出し処理を終了する。次のバンクが存在する場合は(ステップS576:Yes)、ステップS573からの処理を再度実行する。一方、ページが使用中でない場合は(ステップS571:No)、ホストコンピュータ100に規定データを出力し(ステップS574)、ページ読出し処理を終了する。
このように、本技術の第5の実施の形態によれば、不揮発性メモリ320のページが複数のバンクよりなる場合であっても、第1の代替処理と第2の代替処理を行い、代替管理情報サイズを縮小することができる。また、メモリコントローラ200がアドレス変換機能を持っているため、特定ページへのアクセス集中を防ぐことができる。
<6.第6の実施の形態>
上述の第1乃至第5の実施の形態では、メモリコントローラ200が、第1および第2の代替処理を行っていた。これに対し、本技術の第6の実施の形態では、第1の代替処理をメモリコントローラで行い、第2の代替処理をホストコンピュータが行う。この場合、ホストコンピュータによるファイルシステム管理情報に第2代替管理情報を含ませて、ブロック単位の代替処理を行うことも可能となる。
図43は、本技術の第6の実施の形態におけるメモリコントローラの構成例を示す図である。メモリコントローラ270は、前述したメモリコントローラ200から第2代替処理部260を除いた構成とすることができる。これ以外のメモリコントローラの構成、システムとしての機能構成等は本技術の第1の実施の形態と同様であるため、以下では説明を省略する。
次に、上述の実施の形態におけるライトおよびリード処理について図面を参照して説明する。なお、本技術の第6の実施の形態では、図5および図6にて前述した第1および第2代替管理情報を使用する。このうち、第2代替管理情報はホストコンピュータ内のメモリに保持される。また、第2の代替処理はホストコンピュータが行うため、メモリコントローラ270のほかホストコンピュータ100における代替処理部分の手順も記載した。なお、第2の代替処理を行うホストコンピュータ100は、特許請求の範囲に記載のホストコンピュータの一例である。
[ライト処理の処理手順]
図44は、本技術の第6の実施の形態におけるホストコンピュータによるライト処理手順の一例を示す図である。ホストコンピュータ100は、ライト対象ページが属するブロックについて、対応する第2代替管理情報の代替ブロックフラグを検索する。このフラグがONすなわち代替を生じている場合は(ステップS412:Yes)、代替ブロックアドレスを使用して以降の処理を行うよう設定する(ステップS413)。つまり、代替ブロックのページアドレスを使用して、ライト処理を行う。一方、代替を生じていない場合は(ステップS412:No)、指定ブロックアドレスを使用して以降の処理を行うよう設定する(ステップS414)。つまり、ライト対象ページのアドレスを使用してライト処理を行う。ホストコンピュータ100は、以上の処理により得られたページアドレスをライトコマンドに含め、メモリコントローラ270に対し発行する(ステップS415)。メモリコントローラ270からの応答を待ち、書込みエラーが返されなかった場合は(ステップS416:No)、ライト処理を終了する。
書込みエラーが返された場合(ステップS416:Yes)、ホストコンピュータ100は、代替ブロック処理(ステップS440)を実施し、再度ステップS412からの処理を実施する。
図45は、本技術の第6の実施の形態におけるホストコンピュータによる代替ブロック処理の処理手順(ステップS440)の一例を示す図である。ホストコンピュータ100は、未使用代替ブロック検索(ステップS443)を実行する。これは、第2代替管理情報の代替ブロック使用フラグを検索することにより行う。その結果、未使用代替ブロックがない場合には(ステップS444:No)、代替不能となる。ホストコンピュータ100は、本書込み処理をエラー終了する。
未使用代替ブロックがある場合には(ステップS444:Yes)、指定ブロックに含まれる全ページに保存されているデータを上記未使用代替ブロックのページにコピーする(ステップS445)。これは、ホストコンピュータ100が、メモリコントローラ270に指示を出すことにより実行される。その後、第2代替管理情報の代替ブロックフラグをONにし、代替ブロックアドレスに上記未使用代替ブロックのアドレスを設定し、代替ブロック使用フラグをONにする(ステップS446)。本代替ブロック処理を終了し、図44において前述したライト処理に戻る。
図46は、本技術の第6の実施の形態におけるメモリコントローラによるライト処理手順の一例を示す図である。図44で前述した、ライトコマンド発行(ステップS415)により、ホストコンピュータ100から発行されたライトコマンドをメモリコントローラ270が受け取ると、メモリコントローラ270は、ライト処理を開始する。本実施の形態では、ホストコンピュータ100により、第2の代替処理が行われているため、メモリコントローラ270は、常に指定ブロックアドレスを使用して、以降の処理を行うこととなる(ステップS409)。次に、ページ書込み処理(ステップS420)を実行する。ライト処理が複数のページにわたる場合に、次の書込みページが存在する場合は(ステップS432:Yes)、再度ページ書込みを実行する(ステップS420)。次の書込みページが存在しない場合(ステップS432:No)は、処理はステップS435に移る。ライト処理が複数のブロックにわたる場合に、次の書込みブロックが存在する場合は(ステップS435:Yes)、再度S409からの処理を繰り返す。次の書込みブロックが存在しない場合は(ステップS435:No)、本ライト処理を終了する。
図47は、本技術の第6の実施の形態におけるメモリコントローラによるページ書込み処理の処理手順(ステップS420)の一例を示す図である。メモリコントローラ270は、ライト対象ページに対応する第1代替管理情報の代替ページフラグを検索する。このフラグがONすなわち代替を生じている場合は(ステップS422:Yes)、代替ページアドレスにデータ書込みを行う(ステップS423)。代替を生じていない場合は(ステップS422:No)、指定ページアドレスにデータ書込みを行う(ステップS424)。その後、書込みエラーを生じなかった場合(ステップS425:No)は、ページ書込み処理を終了する。
書込みエラーを生じた場合(ステップS425:Yes)、メモリコントローラ270は、代替処理を行うため未使用代替ページを検索する(ステップS433)。これは、第1代替管理情報の代替ページ使用フラグがONになっていない代替ページを検索することにより行う。その結果、未使用代替ページが存在する場合(ステップS434:Yes)には、第1代替管理情報の代替ページフラグをONにし、代替ページアドレスに上記未使用代替ページのアドレスを設定し、代替ページ使用フラグをONにする(ステップS436)。その後、処理はステップS423に戻り、再度データ書込みを行う。代替ページを全て使用しているなどのように、未使用代替ページが存在しない場合(ステップS434:No)には、エラー終了となる。この場合、メモリコントローラ270は書込みエラーとなった旨をホストコンピュータ100に通知する。図44にて前述したとおり、ホストコンピュータ100で代替ブロック処理(ステップS440)が実行される。
[リード処理の処理手順]
図48は、本技術の第6の実施の形態におけるホストコンピュータによるリード処理手順の一例を示す図である。ホストコンピュータ100は、リード対象ページが属するブロックについて、対応する第2代替管理情報の代替ブロックフラグを検索する。このフラグがONすなわち代替を生じている場合は(ステップS462:Yes)、代替ブロックアドレスを使用して以降の処理を行うよう設定する(ステップS463)。つまり、代替ブロックのページアドレスを使用して、リード処理を行う。一方、代替を生じていない場合は(ステップS462:No)、指定ブロックアドレスを使用して以降の処理を行うよう設定する(ステップS464)。つまり、リード対象ページのアドレスを使用して以降の処理を行う。ホストコンピュータ100は、以上の処理により得られたページアドレスをリードコマンドに含め、メモリコントローラ270に対し発行する(ステップS465)。メモリコントローラ270からのリードデータ入力(ステップS466)を待って、リード処理を終了する。
図49は、本技術の第6の実施の形態におけるメモリコントローラによるリード処理手順の一例を示す図である。図48で前述した、リードコマンド発行(ステップS465)により、ホストコンピュータ100から発行されたリードコマンドをメモリコントローラ270が受け取ると、メモリコントローラ270は、リード処理を開始する。本実施の形態では、ホストコンピュータ100により、第2の代替処理が行われているため、メモリコントローラ270は、常に指定ブロックアドレスを使用することとなる(ステップS469)。次に、ページ読出し処理(ステップS470)を実行する。リード処理が複数のページにわたる場合に、次の読出しページが存在する場合は(ステップS482:Yes)、再度ページ読出しを実行する(ステップS470)。次の読出しページが存在しない場合(ステップS482:No)は、処理はステップS485に移る。リード処理が複数のブロックにわたる場合に、次の読出しブロックが存在する場合は(ステップS485:Yes)、再度S469からの処理を繰り返す。次の読出しブロックが存在しない場合は(ステップS435:No)、本リード処理を終了する。
図50は、本技術の第6の実施の形態におけるメモリコントローラによるページ読出し処理の処理手順(ステップS470)の一例を示す図である。メモリコントローラ270は、リード対象ページに対応する第1代替管理情報の代替ページフラグを検索する。このフラグがONすなわち代替を生じている場合は(ステップS472:Yes)、代替ページアドレスからデータ読出しを行う(ステップS473)。代替を生じていない場合は(ステップS472:No)、指定ページアドレスからデータ読出しを行う(ステップS474)。その後、ページ読出し処理を終了する。
以上説明した本技術の第6の実施の形態では、第2の代替処理をホストコンピュータにより行うため、ホストコンピュータにおけるファイルシステム管理機能の一部として、第2の代替処理を行うことも可能である。具体的には、ファイルシステムの管理をブロック単位で行い、エラーブロックを代替する際には、代替ブロックを用いて代替を行う。ファイルシステム管理情報に第2代替管理情報である代替ブロックフラグ、代替ブロックアドレス等を含ませて、ファイルシステム管理の一部として第2の代替処理を行う。
このように、本技術の第6の実施の形態によれば、メモリコントローラは、第1の代替処理のみを行うため、代替管理情報を保持する代替管理情報バッファ230の容量を小さくすることができる。
<7.変形例>
[第1代替管理情報の一部を代替管理情報バッファに転送する例]
第1代替管理情報は、各ブロックの管理情報の集合体であるため、その一部のみを取出すことが可能である。そこで、ホストコンピュータ100による処理に必要となるブロックの管理情報だけを代替管理情報バッファ230に転送し、使用する構成とすることもできる。
このように、第1代替管理情報の一部を代替管理情報バッファ230に転送することにより、代替管理情報バッファ230の容量をさらに小さくすることができる。
[不要な第1代替管理情報を削除する例]
エラーブロックが生じると第2の代替処理が行われるため、このブロックに関する第1代替管理情報は今後参照されることはない。そのため、第2の代替処理が行われるたびにこの不要となった第1代替管理情報を削除する構成としてもよい。
このように、不要な第1代替管理情報の一部を削除することにより、第1代替管理情報サイズを削減することができる。
[不揮発性メモリに合った、代替ページ数および代替ブロック数にする例]
総ページ数に対する代替ページ数の割合を使用する不揮発性メモリにおける総ページ数当たりのエラーページ発生割合の期待値に近い構成にすることも可能である。同様に、総ブロック数に対する代替ブロック数の割合を使用する不揮発性メモリにおける総ブロック数当たりのエラーブロック発生割合の期待値に近い構成にすることも可能である。このような構成とすることにより、必要以上に代替ページおよびブロックを用意することなく、予想されるエラー発生に適応可能な代替機能を提供することができる。
例えば、図4にて前述した2Gバイト不揮発性メモリでは、m=131072、d=8192、b=32、e=2および、m=16384、d=1024、b=32、e=2の2つの例を示した。ブロック内の総ページ数に対する代替ブロック数の割合(m/d)と総ブロック数に対する代替ブロック数の割合(e/b)は、いずれも0.0625である。これらを夫々上述したエラーページ発生割合の期待値およびエラーブロック発生割合の期待値と近い値とすることができる。
このように、総ページ数に対する代替ページ数および総ブロック数に対する代替ブロック数の割合を使用する不揮発性メモリにおけるエラーページおよびエラーブロック発生割合の期待値に近い構成にすることにより、メモリ使用効率を高める効果が得られる。
なお、総ページ数に対する代替ページ数および総ブロック数に対する代替ブロック数の割合が使用する不揮発性メモリにおけるエラーページおよびエラーブロック発生割合の期待値に近い構成は、特許請求の範囲に記載の不揮発性メモリの構成の一例である。
以上説明したように、本技術の実施の形態によれば、ブロック内におけるページ単位の代替処理とブロック単位の代替処理とを実施し、代替処理によって消費されるメモリの容量を削減し、また、これらに必要となる代替管理情報を縮小することができる。
なお、上述の実施の形態は本技術を具現化するための一例を示したものであり、実施の形態における事項と、特許請求の範囲における発明特定事項とはそれぞれ対応関係を有する。同様に、特許請求の範囲における発明特定事項と、これと同一名称を付した本技術の実施の形態における事項とはそれぞれ対応関係を有する。ただし、本技術は実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において実施の形態に種々の変形を施すことにより具現化することができる。
また、上述の実施の形態において説明した処理手順は、これら一連の手順を有する方法として捉えてもよい。
なお、本明細書に記載された効果はあくまで例示であって、限定されるものではなく、また、他の効果があってもよい。
なお、本技術は以下のような構成もとることができる。
(1)不揮発性メモリの複数のページからなるブロックにおいてエラーページを代替する際には前記エラーページの属するブロックに割り当てられた代替ページによって前記エラーページを代替し、前記エラーページの属するブロックにおいて前記代替ページが不足したときには前記エラーページの属するブロックとは異なる代替ブロックを新たに確保して当該代替ブロックに属するページによって前記エラーページを代替するメモリコントローラ。
(2)前記エラーページと前記代替ページとの対応関係を示す第1の管理情報を保持する第1の管理情報バッファと、
前記代替ページが不足したブロックと前記代替ブロックとの対応関係を示す第2の管理情報を保持する第2の管理情報バッファと
を具備する前記(1)に記載のメモリコントローラ。
(3)前記エラーページが最初に発生したときに前記第1の管理情報を作成し、前記代替ページが不足するブロックが最初に発生したときに前記第2の管理情報を作成する前記(2)に記載のメモリコントローラ。
(4)指定されたページの論理アドレスをページの物理アドレスに変換し、前記エラーページを代替する際には前記エラーページの物理アドレスに代えて前記代替ページの物理アドレスに論理アドレスを変換し、前記代替ページが不足したときには前記代替ブロックに属するページの物理アドレスに論理アドレスを変換するアドレス変換部を具備する前記(1)または(2)に記載のメモリコントローラ。
(5)前記ページはさらに複数のバンクからなり、前記エラーページを代替する際には前記代替ページに属するバンクによって当該エラーページに属するエラーバンクをバンク単位で代替し、前記エラーページの属するブロックにおいて前記代替ページに属するバンクが不足したときには前記エラーページの属するブロックとは異なる代替ブロックを新たに確保して当該代替ブロックに属するページに属するバンクによって前記エラーバンクを代替する前記(1)から(4)のいずれかに記載のメモリコントローラ。
(6)不揮発性メモリと、
前記不揮発性メモリの複数のページからなるブロックにおいてエラーページを代替する際には前記エラーページの属するブロックに割り当てられた代替ページによって前記エラーページを代替し、前記エラーページの属するブロックにおいて前記代替ページが不足したときには前記エラーページの属するブロックとは異なる代替ブロックを新たに確保して当該代替ブロックに属するページによって前記エラーページを代替するメモリコントローラと
を具備する記憶装置。
(7)前記不揮発性メモリは、前記ブロックに割り当てられた前記代替ページ数が前記ブロックに含まれるページ数におけるエラーページの発生数の期待値と略一致するよう構成され、前記代替ブロック数が全ブロック数に対する前記代替ページが不足したブロックの発生数の期待値と略一致するよう構成される前記(6)に記載の記憶装置。
(8)前記不揮発性メモリは、前記エラーページと前記代替ページとの対応関係を示す第1の管理情報と前記代替ページが不足したブロックと前記代替ブロックとの対応関係を示す第2の管理情報とを記憶し、
前記メモリコントローラは、
前記第1の管理情報を保持する第1の管理情報バッファと、
前記第2の管理情報を保持する第2の管理情報バッファと
を備える前記(6)に記載の記憶装置。
(9)不揮発性メモリと、
前記不揮発性メモリの複数のページからなるブロックにおいてエラーページを代替する際には前記エラーページの属するブロックに割り当てられた代替ページによって前記エラーページを代替し、前記エラーページの属するブロックにおいて前記代替ページが不足したときには前記エラーページの属するブロックとは異なる代替ブロックを新たに確保して当該代替ブロックに属するページによって前記エラーページを代替するメモリコントローラと、
前記メモリコントローラを介して前記不揮発性メモリにアクセスするホストコンピュータと
を具備する情報処理システム。
(10)不揮発性メモリと、
前記不揮発性メモリの複数のページからなるブロックにおいてエラーページを代替する際には前記エラーページの属するブロックに割り当てられた代替ページによって前記エラーページを代替するメモリコントローラと、
前記メモリコントローラを介して前記不揮発性メモリにアクセスするホストコンピュータと
を具備し、
前記ホストコンピュータは、前記エラーページの属するブロックにおいて前記代替ページが不足したときには前記エラーページの属するブロックとは異なる代替ブロックにアクセス先を変更して当該代替ブロックに属するページによって前記エラーページを代替する
情報処理システム。
(11)不揮発性メモリの複数のページからなるブロックにおいてエラーページを代替する際には前記エラーページの属するブロックに割り当てられた代替ページによって前記エラーページを代替する手順と、
前記エラーページの属するブロックにおいて前記代替ページが不足したときには前記エラーページの属するブロックとは異なる代替ブロックを新たに確保して当該代替ブロックに属するページによって前記エラーページを代替する手順と
を具備する不揮発性メモリの制御方法。
100 ホストコンピュータ
109 メモリコントローラインターフェース
110 プロセッサ
200 メモリコントローラ
210 制御部
220 データバッファ
230 代替管理情報バッファ
250 第1代替処理部
260 第2代替処理部
270 メモリコントローラ
300 メモリ
309 メモリコントローラインターフェース
310 制御部
320 不揮発性メモリ
330 データブロック領域
340 代替ブロック領域

Claims (11)

  1. 不揮発性メモリの複数のページからなるブロックにおいてエラーページを代替する際に前記エラーページの属するブロックに割り当てられた代替ページによって前記エラーページを代替する第1代替処理部と、
    前記エラーページの属するブロックにおいて前記代替ページが不足したときに前記エラーページの属するブロックとは異なる代替ブロックを新たに確保して当該代替ブロックに属するページによって前記エラーページを代替する第2代替処理部と、
    前記代替ページと前記エラーページとの関係を表した第1の管理情報を前記ブロックごとに保持するバッファと、
    前記第1の管理情報に基づいて前記第1代替処理部に前記代替を行わせ、前記代替ページが不足したときに当該代替ページが不足したブロックであるエラーブロックに対応する前記第1の管理情報を前記バッファから削除するとともに前記代替ブロックと前記エラーブロックとの関係を表した第2の管理情報に基づいて前記第2代替処理部に前記代替を行わせる制御部と
    を具備するメモリコントローラ。
  2. 前記バッファは、
    前記第1の管理情報を保持する第1の管理情報バッファと、
    前記第2の管理情報を保持する第2の管理情報バッファと
    備える請求項1記載のメモリコントローラ。
  3. 前記エラーページが最初に発生したときに前記第1の管理情報を作成し、前記代替ページが不足するブロックが最初に発生したときに前記第2の管理情報を作成する請求項1記載のメモリコントローラ。
  4. 指定されたページの論理アドレスをページの物理アドレスに変換し、前記エラーページを代替する際には前記エラーページの物理アドレスに代えて前記代替ページの物理アドレスに論理アドレスを変換し、前記代替ページが不足したときには前記代替ブロックに属するページの物理アドレスに論理アドレスを変換するアドレス変換部をさらに具備する請求項1記載のメモリコントローラ。
  5. 前記ページはさらに複数のバンクからなり、
    前記第1代替処理部は、前記エラーページを代替する際に前記代替ページに属するバンクによって当該エラーページに属するエラーバンクをバンク単位で代替し、
    前記第2代替処理部は、前記エラーページの属するブロックにおいて前記代替ページに属するバンクが不足したときに前記エラーページの属するブロックとは異なる代替ブロックを新たに確保して当該代替ブロックに属するページに属するバンクによって前記エラーバンクを代替する
    請求項1記載のメモリコントローラ。
  6. 不揮発性メモリと、
    前記不揮発性メモリの複数のページからなるブロックにおいてエラーページを代替する際に前記エラーページの属するブロックに割り当てられた代替ページによって前記エラーページを代替する第1代替処理部と、
    前記エラーページの属するブロックにおいて前記代替ページが不足したときに前記エラーページの属するブロックとは異なる代替ブロックを新たに確保して当該代替ブロックに属するページによって前記エラーページを代替する第2代替処理部と、
    前記代替ページと前記エラーページとの関係を表した第1の管理情報を前記ブロックごとに保持するバッファと、
    前記第1の管理情報に基づいて前記第1代替処理部に前記代替を行わせ、前記代替ページが不足したときに当該代替ページが不足したブロックであるエラーブロックに対応する前記第1の管理情報を前記バッファから削除するとともに前記代替ブロックと前記エラーブロックとの関係を表した第2の管理情報に基づいて前記第2代替処理部に前記代替を行わせる制御部と
    を備えるメモリコントローラと
    を具備する記憶装置。
  7. 前記不揮発性メモリは、前記ブロックに割り当てられた前記代替ページ数が前記ブロックに含まれるページ数におけるエラーページの発生数の期待値と略一致するよう構成され、前記代替ブロック数が全ブロック数に対する前記代替ページが不足したブロックの発生数の期待値と略一致するよう構成される請求項6記載の記憶装置。
  8. 前記不揮発性メモリは、前記第1の管理情報と前記第2の管理情報とを記憶し、
    前記バッファは、
    前記第1の管理情報を保持する第1の管理情報バッファと、
    前記第2の管理情報を保持する第2の管理情報バッファと
    を備える請求項6記載の記憶装置。
  9. 不揮発性メモリと、
    前記不揮発性メモリの複数のページからなるブロックにおいてエラーページを代替する際に前記エラーページの属するブロックに割り当てられた代替ページによって前記エラーページを代替する第1代替処理部と、
    前記エラーページの属するブロックにおいて前記代替ページが不足したときに前記エラーページの属するブロックとは異なる代替ブロックを新たに確保して当該代替ブロックに属するページによって前記エラーページを代替する第2代替処理部と、
    前記代替ページと前記エラーページとの関係を表した第1の管理情報を前記ブロックごとに保持するバッファと、
    前記第1の管理情報に基づいて前記第1代替処理部に前記代替を行わせ、前記代替ページが不足したときに当該代替ページが不足したブロックであるエラーブロックに対応する前記第1の管理情報を前記バッファから削除するとともに前記代替ブロックと前記エラーブロックとの関係を表した第2の管理情報に基づいて前記第2代替処理部に前記代替を行わせる制御部と
    を備えるメモリコントローラと、
    前記メモリコントローラを介して前記不揮発性メモリにアクセスするホストコンピュータと
    を具備する情報処理システム。
  10. 不揮発性メモリと、
    前記不揮発性メモリの複数のページからなるブロックにおいてエラーページを代替する際に前記エラーページの属するブロックに割り当てられた代替ページによって前記エラーページを代替する第1代替処理部と、
    前記代替ページと前記エラーページとの関係を表した第1の管理情報を前記ブロックごとに保持するバッファと、
    前記第1の管理情報に基づいて前記第1代替処理部に前記代替を行わせ、前記代替ページが不足したときに当該代替ページが不足したブロックであるエラーブロックに対応する前記第1の管理情報を前記バッファから削除する制御部と
    を具備するメモリコントローラと、
    前記メモリコントローラを介して前記不揮発性メモリにアクセスするホストコンピュータと
    を具備し、
    前記ホストコンピュータは、前記エラーページの属するブロックにおいて前記代替ページが不足したときには前記エラーページの属するブロックとは異なる代替ブロックにアクセス先を変更して当該代替ブロックに属するページによって前記エラーページを代替する
    情報処理システム。
  11. 第1の代替処理部が、不揮発性メモリの複数のページからなるブロックにおいてエラーページを代替する際に前記エラーページの属するブロックに割り当てられた代替ページによって前記エラーページを代替する処理を行第1代替処理手順と、
    制御部が、前記第1の管理情報をバッファに保持させる手順と、
    第2の代替処理部が、前記エラーページの属するブロックにおいて前記代替ページが不足したときに前記エラーページの属するブロックとは異なる代替ブロックを新たに確保して当該代替ブロックに属するページによって前記エラーページを代替する処理を行第2代替処理手順と、
    制御部が、前記代替ページが不足したときに当該代替ページが不足したブロックであるエラーブロックに対応する前記第1の管理情報を前記バッファから削除するとともに前記代替ブロックと前記エラーブロックとの関係を表した第2の管理情報に基づいて前記第2代替処理部に前記代替を行わせる制御手順と
    を具備する不揮発性メモリの制御方法。
JP2014041749A 2014-03-04 2014-03-04 メモリコントローラ、記憶装置、情報処理システム、および、それらにおける制御方法。 Active JP6102800B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2014041749A JP6102800B2 (ja) 2014-03-04 2014-03-04 メモリコントローラ、記憶装置、情報処理システム、および、それらにおける制御方法。
US14/620,939 US9582411B2 (en) 2014-03-04 2015-02-12 Memory controller, storage apparatus, information processing system, and control method therefor

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014041749A JP6102800B2 (ja) 2014-03-04 2014-03-04 メモリコントローラ、記憶装置、情報処理システム、および、それらにおける制御方法。

Publications (2)

Publication Number Publication Date
JP2015166993A JP2015166993A (ja) 2015-09-24
JP6102800B2 true JP6102800B2 (ja) 2017-03-29

Family

ID=54017480

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014041749A Active JP6102800B2 (ja) 2014-03-04 2014-03-04 メモリコントローラ、記憶装置、情報処理システム、および、それらにおける制御方法。

Country Status (2)

Country Link
US (1) US9582411B2 (ja)
JP (1) JP6102800B2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20190102319A1 (en) * 2016-03-16 2019-04-04 Sony Corporation Memory controller, memory system, information processing system, memory control method, and program
CN111863117B (zh) * 2020-07-08 2022-04-29 上海威固信息技术股份有限公司 一种闪存错误页比例评估模型及方法
CN111863110B (zh) * 2020-07-08 2022-04-29 上海威固信息技术股份有限公司 一种基于比特错误率的闪存错误页比例评估模型及方法

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4475194A (en) * 1982-03-30 1984-10-02 International Business Machines Corporation Dynamic replacement of defective memory words
JP3928500B2 (ja) 2002-02-26 2007-06-13 株式会社日立製作所 メモリ装置
JP4433792B2 (ja) * 2003-12-26 2010-03-17 Tdk株式会社 メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びに、フラッシュメモリの制御方法
JP4357305B2 (ja) * 2004-01-09 2009-11-04 株式会社バッファロー 外部記憶装置
KR100572328B1 (ko) * 2004-07-16 2006-04-18 삼성전자주식회사 배드 블록 관리부를 포함하는 플래시 메모리 시스템
TWI311250B (en) * 2006-05-02 2009-06-21 Novatek Microelectronics Corp Method for memory page memagement
JP2008090451A (ja) * 2006-09-29 2008-04-17 Toshiba Corp 記憶装置
JP4939234B2 (ja) * 2007-01-11 2012-05-23 株式会社日立製作所 フラッシュメモリモジュール、そのフラッシュメモリモジュールを記録媒体として用いたストレージ装置及びそのフラッシュメモリモジュールのアドレス変換テーブル検証方法
JP2008204041A (ja) * 2007-02-19 2008-09-04 Hitachi Ltd ストレージ装置及びデータ配置制御方法
JP4897524B2 (ja) * 2007-03-15 2012-03-14 株式会社日立製作所 ストレージシステム及びストレージシステムのライト性能低下防止方法
TWI358068B (en) * 2007-10-19 2012-02-11 Phison Electronics Corp Writing method for non-volatile memory and control
JP4829202B2 (ja) * 2007-11-02 2011-12-07 株式会社日立製作所 記憶装置及びメモリ制御方法
US8321625B2 (en) * 2007-12-05 2012-11-27 Densbits Technologies Ltd. Flash memory device with physical cell value deterioration accommodation and methods useful in conjunction therewith
US8259498B2 (en) * 2008-12-08 2012-09-04 Infinite Memory Ltd. Continuous address space in non-volatile-memories (NVM) using efficient management methods for array deficiencies
TWI420308B (zh) * 2010-10-13 2013-12-21 Phison Electronics Corp 區塊管理方法、記憶體控制器與記憶體儲存裝置
JP5720210B2 (ja) * 2010-12-02 2015-05-20 富士通株式会社 アクセス制御装置、誤り訂正制御方法およびストレージ装置
TWI459393B (zh) * 2011-01-19 2014-11-01 Phison Electronics Corp 用於非揮發性記憶體的資料寫入方法、控制器與儲存裝置
US8756398B2 (en) * 2011-02-18 2014-06-17 Synopsys Inc. Partitioning pages of an electronic memory
US9058288B2 (en) * 2011-04-03 2015-06-16 Apple Inc. Redundant storage in non-volatile memory by storing redundancy information in volatile memory
GB2479076C (en) * 2011-05-03 2014-08-13 Broadcom Corp Uplink transmission power control mechanism
KR102072449B1 (ko) * 2012-06-01 2020-02-04 삼성전자주식회사 불휘발성 메모리 장치를 포함하는 저장 장치 및 그것의 리페어 방법

Also Published As

Publication number Publication date
US9582411B2 (en) 2017-02-28
JP2015166993A (ja) 2015-09-24
US20150254133A1 (en) 2015-09-10

Similar Documents

Publication Publication Date Title
TWI670594B (zh) 資料儲存裝置
CN101788955B (zh) 闪存数据的存取方法及其储存系统与控制器系统
US8996791B2 (en) Flash memory device, memory control device, memory control method, and storage system
JP4844639B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
CN103608866B (zh) 用于闪存存储器的数据擦除方法及装置
JP6102800B2 (ja) メモリコントローラ、記憶装置、情報処理システム、および、それらにおける制御方法。
CN101546282B (zh) 用于在处理器中执行写拷贝的方法和设备
US20180081797A1 (en) Wear-leveling nandflash memory reading/writing method
JP2005500592A5 (ja)
CN105589811A (zh) 数据储存装置与操作方法
JP5969130B2 (ja) 情報処理装置
CN110674056B (zh) 一种垃圾回收方法及装置
JP2014157391A (ja) 記憶制御装置、記憶装置、情報処理システムおよび記憶制御方法
WO2015093026A1 (ja) 書き込み情報記憶装置、方法、及び、記録媒体
US20170160988A1 (en) Memory system that carries out an atomic write operation
JP5093294B2 (ja) メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
US20210103445A1 (en) Method and apparatus for preprocessing data transfer commands
JP4242245B2 (ja) フラッシュrom制御装置
US11467970B1 (en) Metadata management in non-volatile memory devices using in-memory journal
CN107122124B (zh) 数据处理方法及装置
US20150067237A1 (en) Memory controller, semiconductor memory system, and memory control method
CN112416811B (zh) 基于数据关联度的垃圾回收方法、闪存及装置
JP2011008570A5 (ja)
JP4888333B2 (ja) フラッシュディスク装置
JP2020170477A (ja) 記憶装置、その制御方法、及びプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20151228

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160914

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160920

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20161111

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20161206

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170106

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170213

R151 Written notification of patent or utility model registration

Ref document number: 6102800

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250