JP2016053808A - 記憶制御装置、記憶装置、および、記憶制御方法 - Google Patents

記憶制御装置、記憶装置、および、記憶制御方法 Download PDF

Info

Publication number
JP2016053808A
JP2016053808A JP2014179109A JP2014179109A JP2016053808A JP 2016053808 A JP2016053808 A JP 2016053808A JP 2014179109 A JP2014179109 A JP 2014179109A JP 2014179109 A JP2014179109 A JP 2014179109A JP 2016053808 A JP2016053808 A JP 2016053808A
Authority
JP
Japan
Prior art keywords
errors
storage
page
storage unit
predetermined
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
JP2014179109A
Other languages
English (en)
Inventor
藤波 靖
Yasushi Fujinami
靖 藤波
中西 健一
Kenichi Nakanishi
健一 中西
椎本 恒則
Tsunenori Shiimoto
恒則 椎本
山元 哲也
Tetsuya Yamamoto
哲也 山元
龍男 新橋
Tatsuo Shinbashi
龍男 新橋
大久保 英明
Hideaki Okubo
英明 大久保
晴彦 寺田
Haruhiko Terada
晴彦 寺田
石井 健
Takeshi Ishii
健 石井
宏行 岩城
Hiroyuki Iwaki
宏行 岩城
本所 又寿
Matatoshi Honjo
又寿 本所
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 JP2014179109A priority Critical patent/JP2016053808A/ja
Priority to PCT/JP2015/069716 priority patent/WO2016035451A1/ja
Priority to US15/505,674 priority patent/US10338984B2/en
Publication of JP2016053808A publication Critical patent/JP2016053808A/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/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • G06F11/0754Error or fault detection not based on redundancy by exceeding limits
    • G06F11/076Error or fault detection not based on redundancy by exceeding limits by exceeding a count or rate limit, e.g. word- or bit count limit
    • GPHYSICS
    • 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
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/44Indication or identification of errors, e.g. for repair
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0727Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a storage system, e.g. in a DASD or network based storage system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/079Root cause analysis, i.e. error or fault diagnosis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/16Protection against loss of memory contents
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/02Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using magnetic elements
    • G11C11/16Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using magnetic elements using elements in which the storage effect is based on magnetic spin effect
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • 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/0407Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals on power on

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System (AREA)
  • For Increasing The Reliability Of Semiconductor Memories (AREA)

Abstract

【課題】記憶状態によるエラーの性質差を考慮して、メモリにおける不良セルを検出する。
【解決手段】判定部は、不揮発性メモリのメモリセルについて記憶単位ごとに不良の疑いがあるか否かを判定する。不揮発性メモリに対しては、低抵抗状態(LRS:Low Resistive State)から高抵抗状態(HRS:High Resistive State)に遷移させるリセット操作、または、高抵抗状態から低抵抗状態に遷移させるセット操作が行われる。判定部は、リセット操作またはセット操作のうち所定の一方におけるエラー数が所定の基準を超えた記憶単位を不良の疑いがある記憶単位として判定する。
【選択図】図10

Description

本技術は、記憶装置に関する。詳しくは、記憶装置における不良ページを管理する記憶制御装置、記憶装置、および、これらにおける処理方法ならびに当該方法をコンピュータに実行させるプログラムに関する。
情報処理システムにおいては、ワークメモリとしてDRAM(Dynamic Random Access Memory)等が用いられる。このDRAMは、通常、揮発性メモリであり、電源の供給が停止するとその記憶内容は消失する。一方、近年、不揮発性メモリ(NVM:Non-Volatile Memory)が用いられるようになっている。この不揮発性メモリとしては、大きなサイズを単位としたデータアクセスに対応したフラッシュメモリと、小さな単位での高速なランダムアクセスが可能な不揮発性ランダムアクセスメモリ(NVRAM:Non-Volatile RAM)とに大別される。ここで、フラッシュメモリの代表例としては、NAND型フラッシュメモリが挙げられる。一方、不揮発性ランダムアクセスメモリの例としては、ReRAM(Resistance RAM)、PCRAM(Phase-Change RAM)、MRAM(Magnetoresistive RAM)などが挙げられる。
従来、このような不揮発性メモリについて、メモリアクセスに伴う不良を生じたページ(不良ページ)を判定する際、書込み操作または消去操作により生じたエラーをカウントすることが行われる。例えば、書込み操作または消去操作により生じたエラー数を記憶装置からメモリコントローラに通知し、不良判断をメモリコントローラにおいて行う記憶装置が提案されている(例えば、特許文献1参照。)。
一方、ある種の不揮発性メモリにおいては、書換えを繰り返した際のセルの摩耗によるエラーの分布が、書換え後の記憶状態によって異なる特性を示すことが知られている。例えば、低抵抗状態(LRS:Low Resistive State)から高抵抗状態(HRS:High Resistive State)に遷移させるリセット操作によるエラーが支配的なReRAMが知られている(例えば、非特許文献1参照。)。また、高抵抗状態(HRS)から低抵抗状態(LRS)に遷移させるセット操作によるエラーが支配的なReRAMも知られている(例えば、非特許文献2参照。)。
特開2005−056394号公報
Scott Sills et al.: "A Copper ReRAM Cell for Storage Class Memory Applications", 2014 Symposium on VLSI Technology Digest of Technical Papers, pp.64-65, IEEE (2014) Shuhei Tanakamaru et al.: "Hybrid Storage of ReRAM/TLC NAND Flash with RAID-5/6 for Cloud Data Centers", 2014 IEEE International Solid-State Circuits Conference, IEEE (2014)
上述の従来技術では、LRS状態とHRS状態のエラーの性質差を考慮せずにエラービットをカウントしているため、デバイスによっては不良ページを検出できず、また、不良ではないページを不良として検出してしまうという問題が生じ得る。
本技術はこのような状況に鑑みて生み出されたものであり、記憶状態によるエラーの性質差を考慮して、メモリにおける不良セルを検出することを目的とする。
本技術は、上述の問題点を解消するためになされたものであり、その第1の側面は、不揮発性メモリのメモリセルに対するリセット操作またはセット操作のうち所定の一方におけるエラー数が所定の基準を超えた記憶単位を不良の疑いがある記憶単位として判定する判定部を具備する記憶制御装置およびその記憶制御方法である。これにより、記憶状態によるエラーの性質差を考慮して不良の疑いがある記憶単位を判定するという作用をもたらす。
また、この第1の側面において、上記判定部は、上記リセット操作および上記セット操作のエラー数の合計値が所定の基準を超え、かつ、上記所定の一方におけるエラー数が所定の基準を超えた記憶単位を不良の疑いがある記憶単位として判定するようにしてもよい。これにより、書込みエラーを発生した記憶単位から不良の疑いがある記憶単位を判定するという作用をもたらす。
また、この第1の側面において、上記判定部は、上記リセット操作および上記セット操作のエラー数の合計値が所定の基準を所定回数超え、かつ、上記所定回数の最後の上記所定の一方におけるエラー数が所定の基準を超えた記憶単位を不良の疑いがある記憶単位として判定するようにしてもよい。これにより、時間的に最も近い結果を用いて不良の疑いがある記憶単位を判定するという作用をもたらす。
また、この第1の側面において、上記判定部は、上記リセット操作および上記セット操作のエラー数の合計値が所定の基準を超え、かつ、上記所定の一方におけるエラー数が所定の基準を超えなかった場合には、その記憶単位において書込みエラーが発生したと判定するようにしてもよい。これにより、不良に至っていない記憶単位については通常の書込みエラーと判定するという作用をもたらす。
また、この第1の側面において、上記判定部は、上記不良の疑いがある記憶単位を使用不能な記憶単位として判定してもよい。また、上記不良の疑いがある記憶単位として判定された記憶単位について再確認を行ってその結果に応じてその記憶単位を使用不能として管理する管理部をさらに具備してもよい。これにより、不良の疑いがある記憶単位について使用可能であるか否かを管理するという作用をもたらす。
この場合において、上記管理部は、上記不良の疑いがある記憶単位として判定された記憶単位が一定数を超えたときに、その記憶単位について上記再確認を行うようにしてもよい。これにより、一定数ごとに記憶単位をまとめて再確認を行うという作用をもたらす。
また、上記判定部は、上記管理部が上記再確認を行う際には、上記所定の一方におけるエラー数が上記所定の基準よりも高い基準を超えた記憶単位を上記不良の疑いがある記憶単位として判定するようにしてもよい。これにより、再確認においては不良として扱い難くなるようにするという作用をもたらす。
また、この第1の側面において、上記判定部は、上記所定の一方におけるエラー数の上記所定の基準を複数の候補の中から選択するようにしてもよい。これにより、条件に応じた基準により不良を判定するという作用をもたらす。
この場合において、上記判定部は、上記不揮発性メモリが使用された経時状態に応じて上記複数の候補の中から上記所定の基準を選択するようにしてもよい。これにより、経時状態に応じた基準により不良を判定するという作用をもたらす。
また、上記判定部は、上記不揮発性メモリの所定の識別子に応じて上記複数の候補の中から上記所定の基準を選択するようにしてもよい。これにより、製造ロット番号等の所定の識別子に応じた基準により不良を判定するという作用をもたらす。
また、この第1の側面において、上記判定部は、上記リセット操作および上記セット操作のエラー数のそれぞれが所定の基準を超え、かつ、上記所定の一方におけるエラー数が所定の基準を超えた記憶単位を不良の疑いがある記憶単位として判定するようにしてもよい。これにより、リセット操作およびセット操作のエラー数を独立して評価するという作用をもたらす。
また、この第1の側面において、上記判定部は、上記リセット操作および上記セット操作のエラー数の重み付き加算値が所定の基準を超え、かつ、上記所定の一方におけるエラー数が所定の基準を超えた記憶単位を不良の疑いがある記憶単位として判定するようにしてもよい。これにより、メモリのデバイス特性に応じたバランスにより評価するという作用をもたらす。
また、この第1の側面において、上記判定部は、上記所定の一方におけるエラー数が上記所定の基準を超えない一定の状態である場合にその記憶単位を不良の疑いがある記憶単位に遷移する可能性があるものとして判定するようにしてもよい。これにより、不良となる手前の状態となっている旨を知らせるという作用をもたらす。
また、この第1の側面において、上記判定部は、記憶単位の全てのビットを消去する消去リクエストを処理する際には、上記所定の一方におけるエラー数が上記所定の基準よりも低い基準を超えた場合に上記不良の疑いがある記憶単位として判定するようにしてもよい。これにより、記憶単位の全てのビットを消去する消去リクエストについては不良と判定し易くするという作用をもたらす。
また、本技術の第2の側面は、不揮発性メモリのメモリセルと、上記メモリセルに対するリセット操作またはセット操作のうち所定の一方におけるエラー数が所定の基準を超えた記憶単位を不良の疑いがある記憶単位として判定する判定部とを具備する記憶装置である。これにより、記憶装置におけるメモリセルの記憶状態によるエラーの性質差を考慮して不良の疑いがある記憶単位を判定するという作用をもたらす。
また、この第2の側面において、上記リセット操作および上記セット操作のエラー数をそれぞれ計数するカウンタをさらに具備してもよい。これにより、記憶装置においてエラー数を計数して不良判定に利用するという作用をもたらす。
本技術によれば、記憶状態によるエラーの性質差を考慮して、メモリにおける不良セルを検出することができるという優れた効果を奏し得る。なお、ここに記載された効果は必ずしも限定されるものではなく、本開示中に記載されたいずれかの効果であってもよい。
本技術の実施の形態における情報処理システムの一構成例を示す図である。 本技術の実施の形態におけるRAM260のメモリマップの概要例を示す図である。 本技術の実施の形態におけるメモリ300の一構成例を示す図である。 本技術の実施の形態のメモリ300におけるページ構造の一例を示す図である。 本技術の実施の形態における空きページテーブル261の一構成例を示す図である。 本技術の実施の形態におけるアドレス変換テーブル262の一構成例を示す図である。 本技術の実施の形態におけるメモリ300の内部構成例を示す図である。 本技術の実施の形態におけるメモリセル330の構造の一例を示す図である。 本技術の実施の形態におけるメモリセル330のドライブ電圧を説明するための図である。 本技術の第1の実施の形態における情報処理システムの機能構成例を示す図である。 本技術の実施の形態における記憶制御装置200の読出し動作例を示す流れ図である。 本技術の実施の形態における記憶制御装置200の書込み動作例を示す流れ図である。 本技術の第1の実施の形態における記憶制御装置200のエラー処理の動作例を示す流れ図である。 本技術の実施の形態におけるメモリ300の読出し処理の動作例を示す流れ図である。 本技術の第1の実施の形態におけるメモリ300の読出し処理の動作例を示す流れ図である。 本技術の実施の形態におけるメモリ300のセット操作(ステップS975)の動作例を示す流れ図である。 本技術の実施の形態におけるメモリ300のリセット操作(ステップS977)の動作例を示す流れ図である。 本技術の実施の形態における記憶制御装置200の不良ページ確定処理の動作例を示す流れ図である。 本技術の第2の実施の形態における情報処理システムの機能構成例を示す図である。 本技術の第2の実施の形態における記憶制御装置200のエラー処理の動作例を示す流れ図である。 本技術の第2の実施の形態におけるメモリ300の読出し処理の動作例を示す流れ図である。
以下、本技術を実施するための形態(以下、実施の形態と称する)について説明する。説明は以下の順序により行う。
1.第1の実施の形態(不良ページの発生をメモリにおいて判定する例)
2.第2の実施の形態(不良ページの発生を記憶制御装置において判定する例)
3.変形例
<1.第1の実施の形態>
[情報処理システムの構成]
図1は、本技術の実施の形態における情報処理システムの一構成例を示す図である。この情報処理システムは、ホストコンピュータ100と、記憶制御装置200と、メモリ300とを備えている。ホストコンピュータ100は、この情報処理システムにおける各処理を実行する装置である。メモリ300は、ホストコンピュータ100の処理に必要なデータを記憶するメモリである。このメモリ300としては、不揮発性メモリを想定する。このメモリ300は、データとともにエラー訂正コード(ECC:Error Correcting Code)を記憶することにより、データ保持特性の改善を図る。記憶制御装置200は、ホストコンピュータ100とメモリ300の間に接続され、ホストコンピュータ100からのリクエストに応じてメモリ300の制御を行う装置である。なお、エラー訂正コードはエラー(誤り)検出の機能も包含しているため、誤り検出符号、エラー検出符号、エラー検出コードなどと呼称する場合もある。
記憶制御装置200は、ホストインターフェース210と、メモリインターフェース230と、制御部240と、ROM250と、RAM260と、ECC処理部270とを備えている。これらはバス290を介して相互に接続されている。
ホストインターフェース210は、ホストコンピュータ100との間のやりとりを行うインターフェース回路である。メモリインターフェース230は、メモリ300との間のやりとりを行うインターフェース回路である。
制御部240は、記憶制御装置200における種々の処理を実行する処理装置である。ROM250は、制御部240において実行されるプログラムやその実行に必要なパラメータなどを記憶する読出し専用のメモリである。RAM260は、制御部240における処理に必要な作業領域を記憶するメモリである。
ECC処理部270は、メモリ300に記憶されるエラー訂正コードに関する処理を行うものである。このECC処理部270は、後述するように、エラー訂正コードを生成する機能およびメモリ300から読み出されたデータとエラー訂正コードとからエラー訂正を行う機能を含む。
メモリ300のアクセス空間は固定長の物理ページに区分けして管理される。メモリ300の物理ページの各々は論理ページにマッピングされる。ホストコンピュータ100からは、基本的には論理アドレスによりアクセスされる。以下では、論理ページのデータサイズを256バイトとし、物理ページには256バイトのデータおよび16バイトのエラー訂正コードが記憶されるものとする。ただし、これらのサイズは一例であり、本技術はこれに限定されるものではない。
図2は、本技術の実施の形態におけるRAM260のメモリマップの概要例を示す図である。ここでは、RAM260には、空きページテーブル261と、アドレス変換テーブル262と、データバッファ263と、論理ページイメージ領域266と、物理ページイメージ領域267とが記憶されている。なお、制御部240において実行されるプログラムならびにその実行の際に使用される領域等もRAM260の内部に確保される。
空きページテーブル261は、メモリ300内の物理ページの使用状況を管理するテーブルである。この空きページテーブル261では、後述するように、物理ページアドレスごとに対応する物理ページの使用状況が保持される。
アドレス変換テーブル262は、ホストコンピュータ100から供給された論理アドレスをメモリ300の物理ページアドレスに変換するためのテーブルである。このアドレス変換テーブル262では、後述するように、論理ページアドレスごとに対応する物理ページアドレスが保持される。
データバッファ263は、ホストコンピュータ100からメモリ300に対するライトデータを保持するためのバッファである。この実施の形態では、少なくとも、ホストコンピュータ100から指示されるライトコマンドを構成するライトデータの最大サイズと等しいデータを保持するものとする。
論理ページイメージ領域266は、ホストコンピュータ100から把握される論理ページのイメージを保持するための領域である。物理ページイメージ領域267は、メモリ300側における物理ページのイメージを保持するための領域である。この実施の形態では、論理ページイメージ領域266は論理ページのサイズと同じ256バイトの領域であり、物理ページイメージ領域267は物理ページのサイズと同じ272バイトの領域である。
空きページテーブル261、アドレス変換テーブル262の2種類のテーブルは、電源が断たれている間はメモリ300の予め決められた位置に記憶されている。記憶制御装置200は電源投入時の初期化処理において、予め決められた位置からこれら2種類のテーブルを読み出し、RAM260内に一時的に蓄積する。記憶制御装置200はホストコンピュータ100から電源断の予告を受けると、これら2種類のテーブルをメモリ300の予め決められた位置に書き込む。また、予期せぬ電源遮断による影響を最小限に抑えるため、一定時間経過または一定回数の処理などの節目ごとに、これら2種類のテーブルをメモリ300に書き込む処理を行う。
図3は、本技術の実施の形態におけるメモリ300の一構成例を示す図である。このメモリ300は、制御インターフェース310と、ワードラインデコーダ320と、メモリセル330と、ビットラインセレクタ340と、ドライバ350と、OTPメモリ360と、制御部380とを備えている。これらはバス390を介して相互に接続されている。
制御インターフェース310は、記憶制御装置200との間のやりとりを行うインターフェース回路である。この制御インターフェース310は、記憶制御装置200から転送される情報やデータの入力、および、記憶制御装置200に転送する情報やデータの出力を行う。
メモリセル330は記憶素子であり、ここでは不揮発性メモリを想定する。このメモリセル330は、1ビットのデータを記録する単メモリセルが二次元に配列された構造を有する。例えば、水平方向に物理ページの272バイト分の単メモリセルを並べたものを、垂直方向に物理ページアドレスに沿って並べることにより構成される。
ワードラインデコーダ320は、制御インターフェース310から入力された物理ページアドレスをデコードして、物理ページに対応する一本のワードラインをドライブする。ワードラインデコーダ320とメモリセル330の間には全ての物理ページに対して一本ずつのワードラインが配線されている。すなわち、物理ページアドレスとワードラインは1対1に対応する。メモリセル330においてドライブされたワードラインに対応する物理ページがアクティブとなる。
ビットラインセレクタ340は、メモリセル330の物理ページと同一のサイズを持つバッファである。このビットラインセレクタ340は、メモリセル330においてアクティブとなった物理ページとの間でデータのやりとりを行う。
ドライバ350は、ビットラインセレクタ340にビットライン電圧を供給するとともに、ビットラインセレクタ340およびメモリセル330にプレート電圧を供給するドライバである。すなわち、このドライバ350は、プレートとビットラインとの間のドライブ電圧を供給する。
OTP(One Time Programming)メモリ360は、制御部380の起動用プログラム(ブートストラッププログラム)や、制御部380の動作に必要なパラメータを記憶するメモリである。このOTPメモリ360は、アンチヒューズ等により実現され、例えばメモリ300が出荷される際に製造工場において記録が行われる。この実施の形態においては、後述の2種類の閾値(TH_PASSおよびTH_BAD_PAGE)が記録されており、メモリ300の起動時にこのOTPメモリ360からの読出しが行われる。
制御部380は、メモリ300の全体を制御するものである。制御部380は、記憶制御装置200からの指示がライトの場合には、制御インターフェース310に転送された物理ページアドレスをワードラインデコーダ320に供給し、メモリセル330上の指定された物理ページをアクティブにする。さらに、制御部380は、指定された物理ページから読み出したデータとライトデータからセット操作およびリセット操作で用いるマスクデータを作成する。制御部380は、マスクデータをビットラインセレクタ340に供給するとともに、ドライバ350およびビットラインセレクタ340を操作して、アクティブになっている物理ページに対しセット操作およびリセット操作における電圧バイアスを印加する。これによりアクティブとなっている物理ページに対して書込みが行われる。
制御部380は、記憶制御装置200からの指示がリードの場合には制御インターフェース310に転送された物理ページアドレスをワードラインデコーダ320に入力し、メモリセル330上の指定された物理ページをアクティブとする。さらに、制御部380は、ドライバ350およびビットラインセレクタ340を操作して、アクティブになっている物理ページに対してリード操作における電圧バイアスを印加する。これによりアクティブとなっている物理ページが読み出されてビットラインセレクタ340に供給される。制御部380は、ビットラインセレクタ340に読み出されたデータを制御インターフェース310に供給して、制御インターフェース310を介して記憶制御装置200へ転送する。
なお、以下の説明では、ホストコンピュータ100から指定される論理アドレス、および、記憶制御装置200内部で扱う論理ページアドレスを"0x"で始まる16進数の記述方法で記述し、物理ページアドレスを10進数で記述する。
[ページ構造]
図4は、本技術の実施の形態のメモリ300におけるページ構造の一例を示す図である。同図におけるaに示すように、この実施の形態ではメモリセル330に記憶される物理ページのサイズを272バイトとしている。そして、この物理ページに256バイトのデータと16バイトのエラー訂正コード(パリティ)を記憶する場合、同図におけるbに示すように、272バイトの物理ページを256バイトのデータと16バイトのパリティとして使用する。
[テーブル構成]
図5は、本技術の実施の形態における空きページテーブル261の一構成例を示す図である。この空きページテーブル261は、物理ページアドレスごとに対応する物理ページの使用状況を保持している。この空きページテーブル261のそれぞれのエントリ(行)は、「物理ページアドレス」と「使用状況」の二つの要素により構成されている。
この空きページテーブル261では、各エントリ中の「物理ページアドレス」において示される物理ページの状況が「使用状況」に示される。ここで、「使用状況」は、主に、メモリセル330における物理ページが使われていない(使用可能)、または、使われている(使用中)という使用に関する状態を示す。また、この「使用状況」は、書込みエラーが発生した(書込みエラー発生)、不良ページエラーが発生した(不良ページ発生)、不良ページであることが確定して今後も使われることが推奨されない(使用不能)といったエラーに関する状態を示す。不良ページ発生と判定されたページは要観察状態であり、その後に使用可能であるか使用不能とするかについては判断が必要になる。すなわち、書込みエラーは一定の確率で発生するため、「書込みエラー発生」という状態のページは次回以降の書込みで全く問題なく書込みが行える可能性がある。不良ページエラーは書換えを繰り返した結果のセルの摩耗による劣化の可能性のあるページにて発生するため、「不良ページ発生」という状態のページは取扱いに注意を必要とする。
この空きページテーブル261は、各エントリを「物理ページアドレス」の数値の昇順に並べている。空きページテーブル261に登録されているエントリの数は、メモリ300内のメモリセル330が備える物理ページの数と等しい。
なお、空きページテーブル261における「物理ページアドレス」の数値は0から始まり1ずつ増加する数値であり、エントリ番号から容易に計算することが可能である。したがって、エントリの項目から「物理ページアドレス」を削除して、エントリの構成要素を「使用状況」のみとすることも可能である。
図6は、本技術の実施の形態におけるアドレス変換テーブル262の一構成例を示す図である。このアドレス変換テーブル262は、論理ページアドレスごとに対応する物理ページアドレスを保持している。すなわち、このアドレス変換テーブル262は、ホストコンピュータ100との間で使用される論理アドレスと、記憶制御装置200およびメモリ300において使用される物理ページアドレスとの対応関係を示している。
この実施の形態における記憶制御装置200内部では、ホストコンピュータ100から指定される論理アドレスを論理ページアドレス単位で管理している。ここで、論理ページと物理ページは1対1の関係を有しており、1つの論理ページに1つの物理ページが割り当てられる。論理ページのサイズは256バイトであり、これは物理ページ内のデータの合計である256バイトと等しい。ホストコンピュータ100から指定される論理アドレスを論理ページサイズで除した商が論理ページアドレスとなる。なお、この実施の形態では、ホストコンピュータ100が発行するライトコマンドまたはリードコマンドを構成するライトアドレスまたはリードアドレスの示す位置を論理ページの先頭に制限しているため、オフセットアドレスは常に0となる
アドレス変換テーブル262のそれぞれのエントリは「論理ページアドレス」と、「割当状況」と、「物理ページアドレス」の3つの要素によって構成されている。各エントリ中の「論理ページアドレス」で示される論理ページに、物理ページが割り当てられている("割当済")か、否("未割当")かが「割当状況」に示される。そして、「割当状況」が"割当済"の論理ページについては、対応する物理ページのアドレスが「物理ページアドレス」に示される。
同図の例では、「論理ページアドレス」が"0x0000−0002"のエントリでは、「割当状況」が"未割当"となっているため、「物理ページアドレス」の値に意味がない。このため、このエントリに対する「物理ページアドレス」の値は"−"を示している。
アドレス変換テーブル262は、各エントリを「論理ページアドレス」の数値の昇順に並べている。アドレス変換テーブル262に登録されているエントリの数は、記憶制御装置200がホストコンピュータ100に対して公開している論理アドレス空間の大きさ(バイト単位)を論理ページのサイズである256バイトで除した商に等しい。
アドレス変換テーブル262に登録されているエントリの数は、メモリ300内のメモリセル330に備えられた物理ページの数より小さい。空きページテーブル261の説明で示したように、物理ページがエラー等の理由により使用不能とされることがあるなどの理由により、物理ページの数は論理ページの数に対して十分な余裕を確保してあるためである。
なお、アドレス変換テーブル262における「論理ページアドレス」の数値は0から始まり1ずつ増加する数値であり、エントリ番号から容易に計算することが可能である。したがって、エントリの項目から「論理ページアドレス」を削除して、エントリの構成要素を「割当状況」と「物理ページアドレス」とすることも可能である。
[メモリ内部構成]
図7は、本技術の実施の形態におけるメモリ300の内部構成例を示す図である。ここでは、メモリブロック301に、ワードラインデコーダ320、メモリセル330、ビットラインセレクタ340およびドライバ350を備える構成となっている。
メモリセル330は、複数のワードライン(WL:Word Lines)と複数のビットライン(BL:Bit Lines)の交点にそれぞれアクセストランジスタと可変抵抗素子を有する。メモリセル330は、物理ページアドレスの数と等しい本数のワードラインと、物理ページサイズのビット数と等しい本数のビットラインと、プレート端子とを備える。ワードラインは、ワードラインデコーダ320に接続される。ビットラインは、ビットラインセレクタ340に接続される。プレート端子は、ドライバ350のプレート電圧出力に接続される。
メモリセル330の可変抵抗素子は、高抵抗状態(HRS:High Resistive State)と低抵抗状態(LRS:Low Resistive State)の2状態で1ビットの情報を記録する。各状態と論理値との対応付けは任意であるが、以下では低抵抗状態を用いて論理値「1」を表現し、高抵抗状態を用いて論理値「0」を表現するものと定義する。また、2つの状態間の遷移を行う操作をビット反転操作と呼ぶ。ビット反転操作はセット操作とリセット操作の2種類で構成される。以下では、セット操作により高抵抗状態のビットを低抵抗状態に遷移させ、リセット操作により低抵抗状態のビットを高抵抗状態に遷移させる。すなわち、セット操作により論理値「0」のビットを論理値「1」に遷移させ、リセット操作により論理値「1」のビットを論理値「0」に遷移させる。ライト処理においては、セット操作およびリセット操作が順番に行われるが、その順序は何れが先であっても構わない。
ワードラインデコーダ320は、制御部380からのワードライン指定を受け取り、メモリセル330のワードラインを制御する。すなわち、ワードラインデコーダ320は、制御部380によって指定されたワードラインを論理値「H」でドライブし、それ以外のワードラインを論理値「L」でドライブする機能を有する。ワードライン指定が行われていない場合、または、ワードライン指定が取り消された場合には、ワードラインデコーダ320は全てのワードラインを論理値「L」でドライブする。
ビットラインセレクタ340は、制御部380との間で、メモリセル330から読み出したリードデータ、および、書込みを行うためのライトデータをやりとりする。また、このビットラインセレクタ340は、ドライバ350からビットラインをドライブするための電圧を受け取る。
このビットラインセレクタ340は、大きく分けると2つの機能を有する。第1に、ビットラインセレクタ340は、メモリセル330の読出し時にはセンスアンプとしての機能を有する。具体的には、ビットラインセレクタ340は、ビットラインを流れる電流量を計測することにより、選択している可変抵抗素子が低抵抗状態または高抵抗状態の何れであるかを判別し、それぞれのビットラインに対する論理値「0」または「1」を決定する。決定された論理値は、制御部380に対して出力される。
第2に、このビットラインセレクタ340は、メモリセル330の書込み時には、制御部380による指定に基づいてビットライン毎のドライブ電圧を選択する機能を有する。具体的には、ビットラインセレクタ340は、各ビットラインに対して、ドライバ350から供給されるプレート電圧またはビットライン電圧のいずれかを選択的に供給する。
図8は、本技術の実施の形態におけるメモリセル330の構造の一例を示す図である。この図では、1本のワードラインWL_0に沿った断面を模式的に表しているが、他のワードラインについても同様の構造を有する。またビットラインは先頭の8本のみを示している。ワードラインWL_0と8本のビットライン(BL_0乃至BL_7)の交点には、アクセストランジスタであるFET(Field effect transistor:電界効果トランジスタ)332と、可変抵抗素子331が接続されている。
ワードラインWL_0は8つのFET332のゲート端子に接続されており、8本のビットライン(BL_0乃至BL_7)はそれぞれ対応するFET332のドレイン端子に接続される。8つのFETのソース端子はそれぞれ可変抵抗素子331を経由してプレート333に接続される。
図9は、本技術の実施の形態におけるメモリセル330のドライブ電圧を説明するための図である。メモリセル330の可変抵抗素子331に対する操作としては、上述のセット操作およびリセット操作の他に、可変抵抗素子331の状態を読み出すためのリード操作がある。これら3つの操作、すなわちリード操作、セット操作およびリセット操作において、プレート333とビットラインBL_0との間のドライブ電圧は異なるものとなる。
セット操作の場合には、プレート333がビットラインに対して「+Vset」の電位となるように電圧バイアスを設定する。リセット操作の場合には、ビットラインがプレート333に対して「+Vreset」の電位となるように電圧バイアスを設定する。また、リード操作の場合には、ビットラインがプレート333に対して「+Vread」の電圧になるように電圧バイアスを設定する。
[機能構成]
図10は、本技術の第1の実施の形態における情報処理システムの機能構成例を示す図である。ここでは、メモリ300は、エラー検出部381と、エラーページ判定部384とを備えている。また、記憶制御装置200は、ページ管理部245を備えている。
エラー検出部381は、メモリ300の物理ページにおいて発生したエラーを検出して、その物理ページにおいて発生したエラー数(ビット数)を計数するものである。このエラー検出部381は、リセットエラーカウンタ382およびセットエラーカウンタ383を備えている。リセットエラーカウンタ382は、リセット操作において生じたエラー数をリセットエラー数として計数するカウンタである。セットエラーカウンタ383は、セット操作において生じたエラー数をセットエラー数として計数するカウンタである。
エラーページ判定部384は、エラー検出部381において検出されたエラー数に基づいてページ単位でエラー発生の状態を判定するものである。例えば、リセットエラー数およびセットエラー数の合計値が閾値(TH_PASS)未満であれば、エラーは発生していないものと判定する。一方、リセットエラー数およびセットエラー数の合計値が閾値(TH_PASS)以上である場合において、リセットエラー数が閾値(TH_BAD_PAGE)以上であれば、不良ページエラーが発生したものと判定する。また、リセットエラー数およびセットエラー数の合計値が閾値(TH_PASS)以上である場合において、リセットエラー数が閾値(TH_BAD_PAGE)未満であれば、単なる書込みエラーが発生したものと判定する。なお、エラーページ判定部384は、特許請求の範囲に記載の判定部の一例である。
ページ管理部245は、空きページテーブル261を管理するものである。このページ管理部245は、エラーページ判定部384から不良ページエラーの発生を通知された場合には、該当する物理ページの空きページテーブル261の使用状況に「不良ページ発生」を記憶する。一方、エラーページ判定部384から書込みエラーの発生を通知された場合には、該当する物理ページの空きページテーブル261の使用状況に「書込みエラー発生」を記憶する。なお、ページ管理部245は、特許請求の範囲に記載の管理部の一例である。
また、このページ管理部245は、空きページテーブル261に「不良ページ発生」として記録されたエントリが一定数を超えた場合などに、「不良ページ発生」の属性を持つ物理ページを再確認する。例えば、「不良ページ発生」の属性を持つ物理ページについて書込みを行い、その結果、メモリ300から不良ページエラーの発生が通知された場合には、その物理ページの空きページテーブル261の使用状況に「使用不能」を記憶する。一方、メモリ300から不良ページエラーの発生が通知されなかった場合には、その物理ページの空きページテーブル261の使用状況に「使用可能」を記憶する。このようにして、いったん不良ページ発生となったページについて、その後の使用が可能か否かを判断することができる。なお、この実施の形態では、「不良ページ発生」の属性を持つ物理ページを再確認して不良ページエラーが発生したページを「使用不能」としたが、再確認を経ることなく不良ページエラーが発生したページを「使用不能」としてもよい。
[情報処理システムの動作]
図11は、本技術の実施の形態における記憶制御装置200の読出し動作例を示す流れ図である。まず、ホストコンピュータ100から発行されたリードコマンドは、ホストインターフェース210を介して記憶制御装置200に入力される。リードコマンドは、「リードアドレス」および「リードデータサイズ」から構成されている。「リードアドレス」は、読出し対象データの論理アドレスである。ここで、リードアドレスの示す位置は論理ページの先頭に限定する。また、リードデータサイズを論理ページサイズの倍数に限定する。
制御部240は、リードコマンドを構成する「リードアドレス」および「リードデータサイズ」を、論理ページ単位に分割する(ステップS911)。
そして、ステップS911において分割された論理ページ単位のうち、読出し処理が未処理のものが未だ残っているか否かが判定される(ステップS912)。論理ページ単位の読出し処理が残っていない場合には(ステップS912:No)、リードコマンドの処理終了をホストコンピュータ100に通知して、読出し動作を終了する(ステップS922)。
一方、論理ページ単位の読出し処理が残っている場合には(ステップS912:Yes)、残っている論理ページ単位の読出し処理の中から、一つを選択する(ステップS913)。ここでは、論理ページアドレスの若い順に選択することを想定する。そして、選択された論理ページ単位の読出し処理に対応する論理ページの情報を、アドレス変換テーブル262から取得する(ステップS914)。
そして、処理を行うべき論理ページに物理ページが割り当てられているか否かを確認する(ステップS915)。すなわち、「割当状況」が"未割当"であった場合には、ステップS919に進み、"割当済"であった場合にはステップS916に進む。
「割当状況」が"未割当"であった場合(ステップS915:No)、リード対象の論理ページに対する物理ページが割り当てられていない状況であるため、ホストコンピュータ100に通知すべきデータを準備する(ステップS919)。具体的には、論理ページイメージ領域266をゼロクリアする。ここで、ゼロクリアではなく、"0x00"、"0xFF"等の周期的なデータや予め定められた特定のデータを用いて初期化してもよい。また、この例ではステップS919を通るたびに初期化するということになっているが、電源投入時等に初期化を行う特別な領域をRAM260に用意しておいて、物理ページの割当てがなされていない論理ページへの読出しがあった場合に、特別な領域のデータを通知することも可能である。
また、物理ページの割り当てられていない論理ページへの読出しに対して、メモリ300内の予め割り当てられた物理ページを読み出してホストコンピュータ100に転送することも可能である。予め割り当てられた物理ページに予め書込みを行うことで、メモリごとに異なるデータをホストコンピュータ100に転送することができる。
「割当状況」が"割当済"であった場合(ステップS915:Yes)、その論理ページに対応するデータの読出しを行う(ステップS916)。このときの物理ページアドレスは、ステップS914においてアドレス変換テーブル262から読み出した「物理ページアドレス」である。このとき、記憶制御装置200はメモリ300に対して、読出しの指示および物理ページアドレスをリードリクエストとして通知する。メモリ300は、指定された物理ページアドレスに対応する物理ページの内容を読み出して、記憶制御装置200に転送する。記憶制御装置200は、メモリ300から転送された物理ページのデータを物理ページイメージ領域267に格納する。
次に、ECC処理部270が、エラー訂正を行う(ステップS917)。その際、ECC処理部270には物理ページイメージ領域267の先頭アドレスと、エラー訂正の指示とが与えられる。ECC処理部270は、物理ページイメージ領域267の先頭アドレスから272バイトを読み出し、256バイトのユーザデータに16バイトのパリティが付加されているものと解釈してエラー訂正処理を行う。そして、その結果を物理ページイメージ領域267の同じ位置に書き戻す。
次に、制御部240が、物理ページイメージ領域267からデータを抜き出して、論理ページイメージ領域266に転送する(ステップS918)。具体的には、物理ページイメージ領域267の先頭から256バイトを読み出して、論理ページイメージ領域266に転送する。
これらによって論理ページイメージ領域266が準備されると(ステップS918またはS919)、論理ページイメージ領域266のデータはホストコンピュータ100に転送される(ステップS921)。すなわち、論理ページイメージ領域266の先頭の位置から「論理ページ」分の転送が行われる。その後、ステップS912からの処理を繰り返す。
なお、この実施の形態では、データ抜き出し処理(ステップS918)およびホストコンピュータ100への転送処理(ステップS921)においてそれぞれデータコピーを行っているが、物理ページイメージ領域267から直接転送するようにしてもよい。
図12は、本技術の実施の形態における記憶制御装置200の書込み動作例を示す流れ図である。まず、ホストコンピュータ100から指示されたライトコマンドは、ホストインターフェース210を介して記憶制御装置200に入力される。ライトコマンドは、「ライトアドレス」、「ライトデータサイズ」、および「ライトデータ」から構成される。このうち「ライトデータ」は、RAM260のデータバッファ263に一時的に格納される。また、「ライトアドレス」は、書込み対象データの論理アドレスである。ここで、ライトアドレスの示す位置は論理ページの先頭に限定する。また、ライトデータサイズを論理ページサイズの倍数に限定する。
制御部240は、ライトコマンドを構成する「ライトアドレス」と「ライトデータサイズ」を、上述のように論理ページ単位に分割する(ステップS931)。また、制御部240は、ホストコンピュータ100から与えられてデータバッファ263に一時格納されたライトデータについて、論理ページごとに分解したそれぞれの領域の先頭アドレスをすべて計算する。以下のステップS932以降の処理は、ステップS931で分割された論理ページ単位に対して繰り返し行われる。
ステップS931において分割された論理ページ単位のうち、書込み処理が未処理のものが未だ残っているか否かが判定される(ステップS932)。論理ページ単位の書込み処理が残っていない場合には(ステップS932:No)、ライトコマンドの処理終了をホストコンピュータ100に通知して、書込み動作を終了する(ステップS945)。
一方、論理ページ単位の書込み処理が残っている場合には(ステップS932:Yes)、残っている論理ページ単位の書込み処理の中から、一つを選択する(ステップS933)。ここでは、論理ページアドレスの若い順に選択することを想定する。そして、選択された論理ページ単位の読出し処理に対応する論理ページの情報を、アドレス変換テーブル262から取得する(ステップS934)。
そして、処理を行うべき論理ページに物理ページが割り当てられているか否かを確認する(ステップS935)。すなわち、「割当状況」が"割当済"であった場合(ステップS935:Yes)にはステップS938に進み、"未割当"であった場合(ステップS935:No)にはステップS936に進む。
「割当状況」が"未割当"であった場合、空きページテーブル261に基づいて利用可能な物理ページを確保する(ステップS936)。具体的には「使用状況」が"使用可能"または"書込みエラー発生"であるエントリを検索して、その「使用状況」に"使用中"の値を代入する。上述のように、「使用状況」が"書込みエラー発生"を示す場合にはその物理ページに対する前回の書込みにおいて書込みエラーが発生したことを意味するが、書込みエラーは一定の確率で発生するため、次回の書込みでは問題なく書込みが行える可能性がある。なお、"使用可能"を示すエントリが枯渇した後に、"書込みエラー発生"のエントリを選択する等の方法があるが、ここでは説明を省略する。また、物理ページが確保されると、アドレス変換テーブル262の対応するエントリにおいて、「割当状況」が"割当済"に設定されるとともに、確保された物理ページアドレスが「物理ページアドレス」に設定される(ステップS937)。なお、空きページテーブル261において利用可能な物理ページが存在しない場合には、その旨をホストコンピュータ100に通知する等の処理が行われるが、ここでは説明を省略する。
次に、データバッファ263のデータが論理ページイメージ領域266に転送される(ステップS938)。具体的には、データバッファ263に一時格納されたライトデータを論理ページごとに分解したそれぞれの領域の先頭アドレスから、論理ページ分の256バイトが論理ページイメージ領域266に転送される。なお、それぞれの領域の先頭アドレスはステップS931において計算されたものである。
ここまでの処理によって準備された論理ページイメージ領域266に基づいて、物理ページイメージ領域267が形成される(ステップS941)。具体的には論理ページイメージ領域266の先頭から256バイトを読み出して物理ページイメージ領域267に転送する。
次に、ECC処理部270が、エラー訂正コードの生成処理を行う(ステップS942)。その際、ECC処理部270には、物理ページイメージ領域267の先頭アドレスと、エラー訂正コード(パリティ)生成の指示とが与えられる。ECC処理部270は、物理ページイメージ領域267の先頭から256バイトを読み出し、16バイトのパリティを計算し、物理ページイメージ領域267に書き戻して、物理ページイメージ領域267を完成する。
このようにして完成した物理ページイメージ領域267の内容は、メモリ300に書き込まれる(ステップS943)。その際、制御部240は、書込み指示および物理ページアドレスをライトリクエストとして、メモリインターフェース230を経由してメモリ300に出力する。ここで、物理ページアドレスは、ステップS934において読み出された物理ページまたはステップS936において新たに割り当てられた物理ページのアドレスである。メモリ300は、物理ページアドレスにおいて指定された物理ページに対して、受け取ったライトデータを書き込む。ライトデータの書込み後、以下に示すエラー処理が行われる(ステップS950)。
図13は、本技術の第1の実施の形態における記憶制御装置200のエラー処理の動作例を示す流れ図である。
制御部240は、メモリ300における書込み動作の終了を待って、その戻り値として実行後ステータスを取得する(ステップS951)。そして、制御部240は、その戻り値が「書込みエラー」であるか否かを確認する(ステップS952)。
戻り値が「書込みエラー」である場合(ステップS952:Yes)には、制御部240は空きページテーブル261の該当物理ページに対応するエントリに対して「書込みエラー発生」の値を書き込む(ステップS954)。
戻り値が「書込みエラー」でない場合(ステップS952:No)には、制御部240は戻り値が「不良ページエラー」であるか否かを確認する(ステップS953)。戻り値が「不良ページエラー」でない場合(ステップS953:No)には、エラー処理を終了して、ステップS932以降の処理を繰り返す。
戻り値が「不良ページエラー」である場合(ステップS953:Yes)には、制御部240は空きページテーブル261の該当物理ページに対応するエントリに対して「不良ページ発生」の値を書き込む(ステップS955)。
ステップS954またはS955において空きページテーブル261にエラーの発生が書き込まれた後、制御部240は空きページテーブル261に基づいて利用可能な物理ページを確保する(ステップS956)。そして、アドレス変換テーブル262の対応するエントリにおいて、「割当状況」が"割当済"に設定されるとともに、確保された物理ページアドレスが「物理ページアドレス」に設定される(ステップS957)。その後、物理ページイメージ領域267の内容がメモリ300に書き込まれる(ステップS958)。これらステップS956乃至S958の処理は、ステップS936、S937およびS943の処理と同様である。
図14は、本技術の実施の形態におけるメモリ300の読出し処理の動作例を示す流れ図である。ここでは、記憶制御装置200からメモリ300に対するリードリクエストの構成要素である物理ページアドレスとして、ワードライン番号WL_0が指定されたことを想定する。
まず、制御部380は、制御インターフェース310からリードリクエストの構成要素である物理ページアドレスを取得する(ステップS961)。ここでは、上述のとおり、物理ページアドレスとしてワードライン番号WL_0が取得される。
制御部380は、ドライバ350に対してリード操作における電圧バイアスの発生を指示する(ステップS962)。具体的には、ビットライン電圧がプレート電圧に対して「+Vread」となるように設定を行う。ドライバ350から供給されたプレート電圧により、メモリセル330のプレート333がドライブされる。
制御部380は、ビットラインセレクタ340に対して全てのビットラインをビットライン電圧でドライブするように指示を行う(ステップS963)。ビットラインセレクタ340は制御部380からの指示に従って、全てのビットラインに対してドライバ350から供給されたビットライン電圧を供給する。
制御部380は、リードリクエストにおいて指定された物理ページアドレス(ワードライン番号WL_0)をワードラインデコーダ320に設定するとともに、ビットラインセレクタ340に対して読出し動作の開始を指示する(ステップS964)。ワードラインデコーダ320は、指定された物理ページアドレス(ワードライン番号WL_0)に対応するワードライン(WL_0)を論理値「H」でドライブする。これにより、WL_0に接続されたアクセストランジスタが導通状態となり、ドライバ350で発生したリード操作における電圧バイアスが可変抵抗素子に印可される。そのため、それぞれの素子の高抵抗状態あるいは低抵抗状態に応じた電流がビットラインを通じてビットラインセレクタ340に流入する。ビットラインセレクタ340は、流入した電流量を測定することにより、それぞれの可変抵抗素子に対応する論理「0」あるいは「1」を決定する。これにより、指定された物理ページアドレス(WL_0)に接続された可変抵抗素子の論理状態が、ビットラインセレクタ340により読み出される。
読出しが完了すると、制御部380は、ビットラインセレクタ340に対する読出し動作の停止を指示する(ステップS966)。すなわち、ワードラインデコーダ320に対する物理ページアドレスの設定を取り消し、ビットラインセレクタ340に対するビットラインのドライブ指示を取り消し、ドライバ350に対する電圧バイアスの発生の停止を指示する。なお、読出し完了のタイミングは、制御部380などが内部に有する時計によって決定される場合や、ビットラインセレクタ340において十分な電流量が確保できたことを確認することによって決定される場合などが考えられるが、ここでは詳細な説明を省略する。
制御部380は、ビットラインセレクタ340が読み出したデータを制御インターフェース310に対して出力するように指示する(ステップS967)。そして、制御部380は、制御インターフェース310に指示して、読み出したデータを記憶制御装置200に通知する(ステップS968)。
図15は、本技術の第1の実施の形態におけるメモリ300の書込み処理の動作例を示す流れ図である。ここでは、記憶制御装置200からメモリ300に対するライトリクエストの構成要素である物理ページアドレスとしてWL_0が指定され、書込みを行うデータとして値「6」(2進数表記で「00000110」)が指定されたことを想定する。
また、書込みを行う以前の状況として、メモリセル330のWL_0に対応するビット群には値「3」(2進数表記で「00000011」)が記録されているものとする。これらをビットごとに観察すると、BL_0に対応するビットは現状の論理値「1」を論理値「0」に変更することが必要である。BL_1に対応するビットは現状の論理値「1」のままで変更する必要はない。BL_2に対応するビットは現状の論理値「0」を論理値「1」に変更することが必要である。BL_7乃至BL_3に対応するビットは現状の論理値「0」のままで変更する必要はない。
ReRAMを含めて不揮発性メモリに対する書込みでは、不要なビット反転や上書きを防ぐために、記録されている情報と書込みを行う情報とを比較し、必要最小限のビット反転のみを行うという方法がよく用いられる。すなわち、この例の場合には、BL_0に対応するビットおよびBL_2に対応するビットのみにビット反転操作を行い、その他のビットに関しては現状を維持することが好ましい。このため、以下の実施の形態では、書込みを行う位置の情報をまず読み出し、反転を行うべきビットを決定し、その決定したビットに対してのみビット反転操作を行う。
制御部380は、制御インターフェース310からライトリクエストの構成要素である物理ページアドレスおよび書込みを行うデータを取得する(ステップS971)。ここでは、上述のとおり、物理ページアドレスとしてWL_0が取得される。
制御部380は、図14において説明したステップS962乃至S966の処理を行い、指定された物理ページアドレス(WL_0)に対応するビットに現在記録されている値を読み出す(ステップS972)。制御部380はビットラインセレクタ340にアクセスし、メモリセル330から読み出したデータを取得する(ステップS973)。
制御部380は、メモリセル330から読み出したデータと、書込みを行うライトデータとを比較し、セット操作を行うべきビットとリセット操作を行うべきビットを決定する(ステップS974)。すなわち、このステップにおいて制御部380は、セット操作を行うべきビットパターン(セットマスク)としてBL_2のみに値「1」を割り当てた2進数表現の数「00000100」を生成する。また、リセット操作を行うべきビットパターン(リセットマスク)としてBL_0のみに値「1」を割り当てた2進数表現の数「00000001」を生成する。
その後、制御部380はセット操作を行う(ステップS975)。このセット操作の実行処理手順については後述する。制御部380は、読み出したデータとセット操作を行うべきビットパターン(セットマスク)とを比較する。正常にセット操作が行われなかったビット数をカウントし、セットエラー数として一時保持しておく(ステップS976)。また、正常にセット操作が行われなかったビットのみがセットマスクに残るようにセットマスクを修正する。
また、制御部380はリセット操作を行う(ステップS977)。このリセット操作の実行処理手順については後述する。制御部380は、読み出したデータとリセット操作を行うべきビットパターン(リセットマスク)とを比較する。正常にリセット操作が行われなかったビット数をカウントし、リセットエラー数として一時保持しておく(ステップS978)。また、正常にリセット操作が行われなかったビットのみがリセットマスクに残るようにリセットマスクを修正する。
制御部380はステップS976において生成したセットエラー数とステップS978において生成したリセットエラー数の和(合計値)を計算し、この値があらかじめ設定した閾値(TH_PASS)未満であるか否かを確認する(ステップS979)。和の値が閾値未満の場合(ステップS979:Yes)、制御インターフェース310を介して、ライトコマンドが正常に終了したことを記憶制御装置200に通知する(ステップS983)。この場合、3回以下の書込み試行を経て、セットエラー数とリセットエラー数の合計が閾値(TH_PASS)未満であったことにより、正常終了としている。
なお、ステップS979における閾値(TH_PASS)を「1」にすることにより、書込みエラーの数が0となった場合に正常終了と判断することができる。また、「1」以外の数値、すなわちECCで訂正可能であるエラー数を設定することもできる。例えば3回の書込み試行後のエラー数の合計が2であっても、ECCにより訂正可能であるため書込みが正常終了したと判断するようにしてもよい。
和の値が閾値以上(ステップS979:No)の場合、制御部380は、このループの通過が3回目であるか否かを確認する(ステップS981)。ループの通過が1回目または2回目である場合(ステップS981:No)には、ステップS975に戻り処理を繰り返す。ループの通過が3回目である場合(ステップS981:Yes)には、3回の書込み試行によっても基準を満足できなかったことになるため、それ以上は書込みを試行せずにステップS982に進む。
制御部380は、ステップS978において生成したリセットエラー数とあらかじめ設定した閾値(TH_BAD_PAGE)とを比較する(ステップS982)。リセットエラー数が閾値未満である場合(ステップS982:No)、単なる書込みエラーと判断して、制御インターフェース310を介して、書込みエラーが発生したことを記憶制御装置200に通知する(ステップS985)。この場合、3回の書込み試行を行ったが、セットエラー数とリセットエラー数の合計が閾値(TH_PASS)以上であり、リセットエラー数が閾値(TH_BAD_PAGE)未満であったことにより、書込みエラーではあるが、物理ページ不良ではないと判断している。
一方、リセットエラー数が閾値以上である場合(ステップS982:Yes)、該当物理ページアドレスの示すページが不良であると判断して、制御インターフェース310を介して、不良ページが発生したことを記憶制御装置200に通知する(ステップS984)。この場合、3回の書込み試行を行ったが、セットエラー数とリセットエラー数の合計が閾値(TH_PASS)以上であり、リセットエラー数が閾値(TH_BAD_PAGE)以上であったことにより、該当物理ページを不良ページであると判断している。
図16は、本技術の実施の形態におけるメモリ300のセット操作(ステップS975)の動作例を示す流れ図である。
制御部380は、ドライバ350に対してセット操作における電圧バイアスの発生を指示する(ステップS811)。具体的には、プレート電圧がビットライン電圧に対して「+Vset」となるように設定を行う。ドライバ350から供給されたプレート電圧によりメモリセル330のプレートがドライブされる。
制御部380は、ビットラインセレクタ340に対してセット操作を行うべきセルパターンを与え、値「1」に対応するビットラインをビットライン電圧で、値「0」に対応するビットラインをプレート電圧でドライブするように指示を行う(ステップS812)。ビットラインセレクタ340は、制御部380からの指示に従って、ドライバ350から供給されたビットライン電圧またはプレート電圧を供給する。
ここで、ステップS812を1回目に実行する場合のセット操作を行うべきセルパターンとは、ステップS974において生成したセットマスク「00000100」である。すなわち、BL_2のみがビットライン電圧でドライブされ、それ以外のビットライン(BL_7乃至BL_3、BL_1、BL_0)はプレート電圧でドライブされる。ステップS812を2回目以降に実行する場合には、ステップS976において正常にセット操作が行われなかったことが判明したビットのみを「1」としたセットマスクが使用される。
制御部380は、ライトリクエストにおいて指定された物理ページアドレス(WL_0)をワードラインデコーダ320に設定する(ステップS813)。ワードラインデコーダ320は、指定された物理ページアドレス(WL_0)に対応するワードライン(WL_0)を論理値「H」でドライブする。これにより、WL_0に接続されたアクセストランジスタが導通状態となる。
このとき、メモリセル330のプレート333はドライバ350から供給されたプレート電圧でドライブされており、BL_2はステップS812において行った設定によりビットライン電圧でドライブされている。これはセット操作に必要な電圧バイアスであるため、WL_0とBL_2の交点に接続された可変抵抗素子に対してセット操作が行われる。一方、BL_7乃至BL_3、BL_1およびBL_0は、ステップS812において行った設定によりプレート電圧でドライブされているため、アクセストランジスタが導通状態となっても可変抵抗素子の両端に電位差が生じず、ビット反転操作は行われない。
制御部380は、ワードラインデコーダ320に対する物理ページアドレスの設定を取り消し、ビットラインセレクタ340に対するビットラインのドライブ指示を取り消し、ドライバ350に対する電圧バイアスの発生の停止を指示する(ステップS814)。なお、セット操作完了のタイミングは、制御部380などが内部に有する時計によって決定されることなどが考えられるが、ここでは詳細な説明を省略する。
制御部380は、図15におけるステップS972と同様の処理を行い、指定された物理ページアドレス(WL_0)に対応するビットに現在記録されている値を読み出す(ステップS815)。制御部380は、ビットラインセレクタ340にアクセスし、メモリセル330から読み出したデータを取得する(ステップS816)。
図17は、本技術の実施の形態におけるメモリ300のリセット操作(ステップS977)の動作例を示す流れ図である。
制御部380はドライバ350に対してリセット操作における電圧バイアスの発生を指示する(ステップS821)。具体的には、ビットライン電圧がプレート電圧に対して「+Vreset」となるように設定を行う。ドライバ350から供給されたプレート電圧によりメモリセル330のプレートがドライブされる。
制御部380は、ビットラインセレクタ340に対してリセット操作を行うべきセルパターンを与え、値「1」に対応するビットラインをビットライン電圧で、値「0」に対応するビットラインをプレート電圧でドライブするように指示を行う(ステップS822)。ビットラインセレクタ340は、制御部380からの指示に従って、ドライバ350から供給されたビットライン電圧あるいはプレート電圧を供給する。
ここで、ステップS822を1回目に実行する場合には、リセット操作を行うべきセルパターンとはステップS974において生成したリセットマスク「00000001」である。すなわち、BL_0のみがビットライン電圧でドライブされ、それ以外のビットライン(BL_7乃至BL_1)はプレート電圧でドライブされる。ステップS822を2回目以降に実行する際には、ステップS978において正常にリセット操作が行われなかったことが判明したビットのみを「1」としたリセットマスクが使用される。
制御部380は、ライトリクエストにおいて指定された物理ページアドレス(WL_0)をワードラインデコーダ320に設定する(ステップS823)。ワードラインデコーダ320は、指定された物理ページアドレス(WL_0)に対応するワードライン(WL_0)を論理値「H」でドライブする。これにより、WL_0に接続されたアクセストランジスタが導通状態となる。このとき、メモリセル330のプレート333はドライバ350から供給されたプレート電圧でドライブされており、BL_0はステップS822において行った設定によりビットライン電圧でドライブされている。これはリセット操作に必要な電圧バイアスであるため、WL_0とBL_0の交点に接続された可変抵抗素子に対してリセット操作が行われる。一方、BL_7乃至BL_1は、ステップS822において行った設定によりプレート電圧でドライブされているため、アクセストランジスタが導通状態となっても可変抵抗素子の両端に電位差が生じず、ビット反転操作は行われない。
制御部380は、ワードラインデコーダ320に対する物理ページアドレスの設定を取り消し、ビットラインセレクタ340に対するビットラインのドライブ指示を取り消し、ドライバ350に対する電圧バイアスの発生の停止を指示する(ステップS824)。なお、リセット操作完了のタイミングは、制御部380などが内部に有する時計によって決定されることなどが考えられるが、ここでは詳細な説明を省略する。
制御部380は、図15におけるステップS972と同様の処理を行い、指定された物理ページアドレス(WL_0)に対応するビットに現在記録されている値を読み出す(ステップS825)。制御部380は、ビットラインセレクタ340にアクセスし、メモリセル330から読み出したデータを取得する(ステップS826)。
図18は、本技術の実施の形態における記憶制御装置200の不良ページ確定処理の動作例を示す流れ図である。記憶制御装置200の制御部240は、空きページテーブル261に「不良ページ発生」として記録されたエントリが一定数を超えた場合などに、「不良ページ発生」の属性を持つ物理ページを再確認する。すなわち、その物理ページを「使用不能」とするか、または、「再利用可能」であると判断して「使用可能」とするかを判断する。この判断のタイミングとしては、ホストコンピュータ100から指定されたタイミング、または、記憶制御装置200において空き時間と判断したタイミングが考えられる。
制御部240は、空きページテーブル261において「不良ページ発生」として記録されたエントリを1つ選択する(ステップS831)。この実施の形態では、複数存在する「不良ページ発生」と記録されたエントリから、ランダムな選択方法により1つのエントリを選択することが好ましい。
制御部240は、ステップS831において選択したエントリの物理ページについて、物理ページイメージ領域267を構成する全てのビットを「1」に設定する(ステップS832)。すなわち、272バイト全てに「0xFF」をフィルする。その後、制御部240は、物理ページイメージ領域267の内容をメモリ300に書き込む(ステップS833)。この書込み処理は、ステップS943における処理と同様である。
制御部240は、メモリ300における書込み動作の終了を待って、その戻り値として実行後ステータスを取得する(ステップS834)。そして、制御部240は、その戻り値が「書込みエラー」であるか否かを確認する(ステップS835)。
書込みエラーである場合(ステップS835:Yes)、空きページテーブル261を変更することなく、この不良ページ確定処理を終了する。書込みエラーでない場合(ステップS835:No)、ステップS836に進む。なお、ステップS833における書込みにおいては、書込みデータの全てのビットが「1」であるため、リセット操作は発生しない。したがって、リセット操作に伴う不良ページエラーは発生しない。
次に、制御部240は、ステップS831において選択したエントリの物理ページについて、物理ページイメージ領域267を構成する全てのビットを「0」に設定する(ステップS836)。すなわち272バイト全てに「0x00」をフィルする。その後、制御部240は、物理ページイメージ領域267の内容をメモリ300に書き込む(ステップS837)。この書込み処理は、ステップS943における処理と同様である。
制御部240は、メモリ300における書込み動作の終了を待って、その戻り値として実行後ステータスを取得する(ステップS838)。そして、制御部240は、その戻り値が「書込みエラー」であるか否かを確認する(ステップS839)。
書込みエラーである場合(ステップS839:Yes)、空きページテーブル261を変更することなく、この不良ページ確定処理を終了する。書込みエラーでない場合(ステップS839:No)、制御部240は、その戻り値が「不良ページエラー」であるか否かを確認する(ステップS841)。
不良ページエラーである場合(ステップS841:Yes)、制御部240は、空きページテーブル261の該当するエントリに「使用不能」を設定する(ステップS842)。一方、不良ページエラーでない場合(ステップS841:No)、制御部240は、空きページテーブル261の該当するエントリに「使用可能」を設定する(ステップS843)。
ここで、空きページテーブル261を変更することなく不良ページ確定処理を終了した場合(ステップS835:Yes、または、ステップS839:Yes)、該当物理ページは「不良ページ発生」の記録のまま維持される。この場合、将来行われる不良ページ確定処理において再度の判断が行われることになる。
ここでは、全てのビットが「1」のデータを書いた後に全てのビットが「0」のデータを書くという手順を用いている。これは、全てのビットに対してリセット操作を行うための手順である。メモリ300においては該当物理ページの値「0」のビットに対してセット操作が行われて「1」が書き込まれ(ステップS833)、該当物理ページの全てのビットに対してリセット操作が行われて「0」が書き込まれる(ステップS837)。すなわち、該当物理ページの全てのビットに対してリセット操作が行われた際のリセットエラー数により、不良ページと確定するか否かを決定している。
なお、記憶制御装置200から閾値(TH_BAD_PAGE)が変更可能である場合、ステップS837の書込みに先立って閾値を少し高めに設定し、終了後に元の閾値に戻すことが考えられる。これは通常の書込みにおいて不良ページ候補を検出する閾値と、不良ページ確定処理において不良ページを決定する閾値とを比較すると、前者の方が不良ページと判断され易くするために、低い閾値を使用すべきという考え方によるものである。すなわち、この不良ページ確定処理においては、通常の書込みにおいて不良ページ候補を検出する場合よりも不良ページと判断され難い、高い基準により不良ページか否かが判断される。
また、メモリ300に対して、「指定した物理アドレスの値を反転し、リセットエラー数を通知せよ」という指示を2回行い、2回の指示で通知された2つのリセットエラー数を加算することにより、不良ページか否かを判断するという方法も考えられる。
このように、本技術の第1の実施の形態では、メモリ300においてリセットエラー数をカウントして、これに基づいて不良ページの候補を検出することにより、その後、記憶制御装置200においてそのページの使用可否を判断することができる。なお、この第1の実施の形態ではリセットエラー数に着目して不良ページの発生を検出したが、セットエラー数に着目して同様の検出を行うようにしてもよい。
<2.第2の実施の形態>
上述の第1の実施の形態では、メモリ300においてリセットエラー数をカウントして不良ページの候補を検出していた。これに対し、この第2の実施の形態では記憶制御装置200において不良ページを判断する。なお、基本的なハードウェア構成については上述のものと同様であるため、詳細な説明は省略する。
[機能構成]
図19は、本技術の第2の実施の形態における情報処理システムの機能構成例を示す図である。基本的な機能構成は上述の第1の実施の形態と同様であるが、記憶制御装置200がエラーページ判定部244を備える点が異なっている。
すなわち、この第2の実施の形態では、エラー検出部381において計数されたリセットエラー数およびセットエラー数は、メモリ300から記憶制御装置200に通知される。そして、エラー検出部381において検出されたエラー数を受けたエラーページ判定部244は、これらエラー数に基づいてページ単位でエラー発生の状態を判定する。このエラーページ判定部244による判定結果がページ管理部245に供給され、ページ管理部245はその判定結果を空きページテーブル261に反映する。
例えば、エラー検出部381において計数されたリセットエラー数およびセットエラー数の合計値が閾値(TH_PASS)以上である場合には、書込みに失敗した旨とともにリセットエラー数およびセットエラー数がメモリ300から記憶制御装置200に通知される。書込みに失敗した旨が通知された場合において、最後のリセットエラー数が閾値(TH_BAD_PAGE)以上であれば、エラーページ判定部244は不良ページエラーが発生したものと判定する。一方、最後のリセットエラー数が閾値(TH_BAD_PAGE)未満であれば、エラーページ判定部244は単なる書込みエラーが発生したものと判定する。ページ管理部245は、エラーページ判定部244による判定結果を空きページテーブル261に反映する。なお、エラーページ判定部244は、特許請求の範囲に記載の判定部の一例である。
また、このページ管理部245は、第1の実施の形態と同様に、「不良ページ発生」の属性を持つ物理ページを再確認する。これにより、いったん不良ページ発生となったページについて、その後の使用が可能か否かを判断することができる。
[情報処理システムの動作]
この第2の実施の形態では、読出し動作および書込み動作の基本的な処理手順は上述の第1の実施の形態と同様である。ただし、以下に示すように、記憶制御装置200におけるステップS950のエラー処理、および、メモリ300におけるライトリクエスト処理が第1の実施の形態とは異なる。
図20は、本技術の第2の実施の形態における記憶制御装置200のエラー処理の動作例を示す流れ図である。
制御部240は、メモリ300における書込み動作の終了を待って、その戻り値として実行後ステータスを取得する(ステップS851)。そして、制御部240は、その戻り値が「書込み失敗」であるか否かを確認する(ステップS852)。「書込み失敗」でない場合(ステップS852:No)には、エラー処理を終了して、ステップS932以降の処理を繰り返す。
戻り値が「書込み失敗」である場合(ステップS852:Yes)、3回目の(最後の)リセットエラー数と閾値(TH_BAD_PAGE)とを比較する(ステップS853)。リセットエラー数が閾値未満である場合(ステップS853:No)、単なる書込みエラーであると判断して、制御部240は空きページテーブル261の該当物理ページに対応するエントリに対して「書込みエラー発生」の値を書き込む(ステップS854)。一方、リセットエラー数が閾値以上である場合(ステップS853:Yes)、不良ページであると判断して、制御部240は空きページテーブル261の該当物理ページに対応するエントリに対して「不良ページエラー発生」の値を書き込む(ステップS855)。
なお、ステップS856以降の処理は、上述のステップS956以降の処理と同様である。
ここでは、3回目の(最後の)リセットエラー数のみに着目することによって不良ページと単なる書込みエラーとを判断しているが、3回分のリセットエラー数、または、3回分のリセットエラー数およびセットエラー数を用いて判断することもできる。例えば3回目の(最後の)リセットエラー数は閾値(TH_BAD_PAGE)未満であるが、1回目または2回目のリセットエラー数が予め定めた閾値に比較して大きい場合は不良ページとするなどの判断を記憶制御装置200が独自に行うことが可能となる。
図21は、本技術の第2の実施の形態におけるメモリ300の読出し処理の動作例を示す流れ図である。この図において、ステップS871乃至S875、S877、S879、S881およびS883の処理は、上述のステップS971乃至S975、S977、S979、S981およびS983の処理と同様である。
セット操作(ステップS875)が行われた後、制御部380は読み出したデータとセット操作を行うべきビットパターン(セットマスク)とを比較する。そして、正常にセット操作が行われなかったビット数をカウントし、セットエラー数としてループ回数とともに格納しておく(ステップS876)。また、正常にセット操作が行われなかったビットのみがセットマスクに残るようにセットマスクを修正する。上述のステップS976ではセットエラー数を一時格納しておくだけであったが、このステップS876ではループ回数とともに格納しておく。これにより、最大3回分のセットエラー数がループ回数とともに格納される。
リセット操作(ステップS877)が行われた後、制御部380は読み出したデータとリセット操作を行うべきビットパターン(リセットマスク)とを比較する。そして、正常にリセット操作が行われなかったビット数をカウントし、リセットエラー数としてループ回数とともに格納しておく(ステップS878)。また、正常にリセット操作が行われなかったビットのみがリセットマスクに残るようにリセットマスクを修正する。上述のステップS978ではリセットエラー数を一時格納しておくだけであったが、このステップS878ではループ回数とともに格納しておく。これにより、最大3回分のリセットエラー数がループ回数とともに格納される。
ループの通過が3回目である場合(ステップS881:Yes)には、制御部380は制御インターフェース310を介して、ライトリクエストが失敗した旨を記憶制御装置200に通知する(ステップS884)。また、このとき制御部380は制御インターフェース310を介して、3回分のセットエラー数および3回分のリセットエラー数の合計6つの値を記憶制御装置200に通知する(ステップS884)。
なお、ここでは3回分のセットエラー数および3回分のリセットエラー数を通知しているが、記憶制御装置200で使用するパラメータに限定してもよい。例えば、3回分のリセットエラー数または最後のリセットエラー数を通知するようにしてもよい。
また、ライトリクエストが正常に終了した場合においても、ステップ883においてループ回数と最大3回分のセットエラー数およびリセットエラーを記憶制御装置200に通知することができる。これらの情報を受け取った記憶制御装置200は、ループ回数と最大3回分のセットエラー数およびリセットエラー数を吟味し、記憶制御装置200の判断で書込みエラーまたは不良ページエラーであると決定することができる。例えば、3回のループで書込みが成功しているため3回目のエラー数は少ないが、1回目および2回目のエラー数が予め定めた閾値に比較して大きい場合は不良ページであると決定するなどの判断を記憶制御装置200が独自に行うことが可能となる。
このように、本技術の第2の実施の形態では、メモリ300においてリセットエラー数をカウントして、これに基づいて記憶制御装置200において不良ページの発生およびそのページの使用可否を判断することができる。
なお、上述の第1の実施の形態においてはページ管理部245がメモリ300の外部に設けられ、第2の実施の形態においてはさらにエラーページ判定部244がメモリ300の外部に設けられることを想定した。しかし、ページ管理部245およびエラーページ判定部244に相当する構成をメモリ300に内蔵し、メモリ300自身が不良ページの管理を行うように構成してもよい。
<3.変形例>
[閾値の設定]
上述の実施の形態では、2種類の閾値(TH_PASSおよびTH_BAD_PAGE)をメモリ300の起動時にOTPメモリ360から読み出す構成としているが(ステップS979およびS982)、その他の方法により閾値を設定するようにしてもよい。
すなわち、OTPメモリ360に複数組の閾値を記録しておき、記憶制御装置200が何れか1組を選択して使用するようにしてもよい。例えば、メモリ300のOTPメモリ360に、2種類の閾値(TH_PASSおよびTH_BAD_PAGE)を3組記録しておくことを想定する。3組の閾値は、メモリ使用の経時状態として、初期、中期、または、後期のそれぞれに対応している。記憶制御装置200は、メモリシステムの起動時にメモリ300から3組の2種類の閾値を読み出し、記憶制御装置200内でカウントした総起動時間や総書込回数などのパラメータにより3組から1組の閾値を選択してメモリ300に設定する。または、閾値の読出しと設定を行わずに、3組の閾値群の何れか(初期、中期、後期)を特定するパラメータをメモリ300に設定するようにしてもよい。
また、OTPメモリ360にメモリ300の製造ロット番号等の所定の識別子を記録しておいて、これに基づいて閾値を決定するようにしてもよい。ホストコンピュータ100においてメモリシステムを取り扱うためのドライバは、所定の識別子と閾値の組合せを示した情報をインターネット接続等の手段を用いて予め入手しておく。ホストコンピュータ100は、記憶制御装置200の起動時にその組合せ情報を記憶制御装置200に供給する。記憶制御装置200は、メモリシステムの起動時にメモリ300からロット番号を読み出して組合せ情報と照らし合わせることにより、適切な閾値を選択してメモリ300に設定する。
[エラー数の判断条件]
上述の実施の形態では、セットエラー数とリセットエラー数の和を用いて閾値(TH_PASS)と比較を行っていたが(ステップS979)、両者を異なる条件として扱ってもよい。この変形例では、ステップS979の条件を、「セットエラーの数<閾値TH_PASS_SET」かつ「リセットエラーの数<閾値TH_PASS_RESET」とする。この場合、制御部380は、ステップS976において生成したセットエラー数およびステップS978において生成したリセットエラー数を、それぞれの閾値TH_PASS_SETおよびTH_PASS_RESETと比較する。「セットエラーの数<閾値TH_PASS_SET」かつ「セットエラーの数<閾値TH_PASS_RESET」が成立する場合(ステップS979:Yes)には、ステップS983に進む。また、「セットエラーの数<閾値TH_PASS_SET」または「セットエラーの数<閾値TH_PASS_RESET」の少なくとも一方が成立しない場合(ステップS979:No)には、ステップS981に進む。
[エラー数の重み付き加算]
上述の実施の形態では、セットエラー数とリセットエラー数の和を用いて閾値(TH_PASS)と比較を行っていたが(ステップS979)、その際、両者の重みを均等に扱っていた。これに対し、両者を異なる重みにより加算することにより、セットエラー数とリセットエラー数の感度を変更することができる。この変形例では、ステップS979の条件を、「セットエラーの数×2+セットエラーの数<閾値TH_PASS」とする。この場合、制御部380は、ステップS976において生成したセットエラー数を2倍した数に、ステップS978で生成したリセットエラー数を加算し、この値があらかじめ設定した閾値(TH_PASS)未満であるかを確認する(ステップS979)。和が閾値未満の場合(ステップS979:Yes)にはステップS983に進み、和が閾値以上の場合(ステップS979:No)にはステップS981に進む。
[不良ページ通知の細分化]
上述の実施の形態では、リセットエラー数が予め設定した閾値(TH_BAD_PAGE)以上である場合には、不良ページが発生したことを記憶制御装置200に通知していた。この閾値を2段階にして、2種類の「不良ページ判定」を通知することにより、以下のように、より細やかな通知を行うことが可能となる。
例えば、2つの閾値TH_BAD_PAGE1およびTH_BAD_PAGE2(TH_BAD_PAGE1<TH_BAD_PAGE2)を予め準備しておく。ステップS981においてループの通過が3回目である場合、すなわち3回の書込み試行ではステップS979の基準を満足できなかった場合(ステップS981:Yes)には、以下の処理を行う。
まず、「TH_BAD_PAGE2≦リセットエラー数」を満たす場合には、「不良ページ発生」を記憶制御装置200に通知する。この通知はステップS984と同様である。また、「リセットエラー数<TH_BAD_PAGE1」を満たす場合には、「書込みエラー」を通知する。この通知はステップS985と同様である。一方、「TH_BAD_PAGE1≦リセットエラー数<TH_BAD_PAGE2」を満たす場合には、「不良ページ注意」を記憶制御装置200に通知する。この通知はこの変形例特有のものである。
このような「不良ページ注意」の通知を行うことによって、記憶制御装置200は、書換えの少ないデータ(コールドデータ)をそのページに配置するなどの制御を行うことが可能になる。
[ライトデータとの比較]
上述の実施の形態では、読み出したデータとセット操作を行うべきビットパターン(セットマスク)とを比較し(ステップS976)、読み出したデータとリセット操作を行うべきビットパターン(リセットマスク)とを比較していた(ステップS978)。このような比較対象として、以下のように、書込みデータを用いることも可能である。
すなわち、ステップS976において、制御部380は読み出したデータと書込みを行うライトデータとを比較し、ステップS974と同様にセット操作を行うべきビットパターンを決定してセットマスクを更新する。さらに、セットマスクを構成する「1」の数をカウントして、セットエラー数として一時保持しておく。また、ステップS978において、制御部380は読み出したデータと書込みを行うライトデータとを比較し、ステップS974と同様にリセット操作を行うべきビットパターンを決定してリセットマスクを更新する。さらに、リセットマスクを構成する「1」の数をカウントして、リセットエラー数として一時保持しておく。
[消去リクエストにおける不良ページ判断]
上述の実施の形態では、記憶制御装置200から指示されたライトリクエストをメモリ300が処理する際に生じたエラーに着目したが、ここではライトリクエスト以外に消去リクエストが設けられている場合を想定する。この消去リクエストは、指定された物理アドレスの全てのビットに「0」を書き込むためのリクエストである。この消去リクエストについては、ライトリクエストよりも閾値を小さい値にすることにより、消去リクエストにおける不良ページ判断をより厳しくすることが望ましい。すなわち、消去リクエストはライトリクエストとは異なり、将来の記録に対して準備するという意味合いから、より低い基準で不良ページと判断され易くした方がよいと考えられるからである。
なお、上述の実施の形態は本技術を具現化するための一例を示したものであり、実施の形態における事項と、特許請求の範囲における発明特定事項とはそれぞれ対応関係を有する。同様に、特許請求の範囲における発明特定事項と、これと同一名称を付した本技術の実施の形態における事項とはそれぞれ対応関係を有する。ただし、本技術は実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において実施の形態に種々の変形を施すことにより具現化することができる。
また、上述の実施の形態において説明した処理手順は、これら一連の手順を有する方法として捉えてもよく、また、これら一連の手順をコンピュータに実行させるためのプログラム乃至そのプログラムを記憶する記録媒体として捉えてもよい。この記録媒体として、例えば、CD(Compact Disc)、MD(MiniDisc)、DVD(Digital Versatile Disc)、メモリカード、ブルーレイディスク(Blu-ray(登録商標)Disc)等を用いることができる。
なお、本明細書に記載された効果はあくまで例示であって、限定されるものではなく、また、他の効果があってもよい。
なお、本技術は以下のような構成もとることができる。
(1)不揮発性メモリのメモリセルに対するリセット操作またはセット操作のうち所定の一方におけるエラー数が所定の基準を超えた記憶単位を不良の疑いがある記憶単位として判定する判定部を具備する記憶制御装置。
(2)前記判定部は、前記リセット操作および前記セット操作のエラー数の合計値が所定の基準を超え、かつ、前記所定の一方におけるエラー数が所定の基準を超えた記憶単位を不良の疑いがある記憶単位として判定する前記(1)に記載の記憶制御装置。
(3)前記判定部は、前記リセット操作および前記セット操作のエラー数の合計値が所定の基準を所定回数超え、かつ、前記所定回数の最後の前記所定の一方におけるエラー数が所定の基準を超えた記憶単位を不良の疑いがある記憶単位として判定する前記(1)に記載の記憶制御装置。
(4)前記判定部は、前記リセット操作および前記セット操作のエラー数の合計値が所定の基準を超え、かつ、前記所定の一方におけるエラー数が所定の基準を超えなかった場合には、その記憶単位において書込みエラーが発生したと判定する前記(1)に記載の記憶制御装置。
(5)前記判定部は、前記不良の疑いがある記憶単位を使用不能な記憶単位として判定する前記(1)に記載の記憶制御装置。
(6)前記不良の疑いがある記憶単位として判定された記憶単位について再確認を行ってその結果に応じてその記憶単位を使用不能として管理する管理部をさらに具備する前記(1)から(5)のいずれかに記載の記憶制御装置。
(7)前記管理部は、前記再確認を行う際、その記憶単位について再度書込みを行って不良の疑いがある記憶単位として再び判定された場合にはその記憶単位を使用不能として管理する前記(6)に記載の記憶制御装置。
(8)前記管理部は、前記不良の疑いがある記憶単位として判定された記憶単位が一定数を超えたときに、その記憶単位について前記再確認を行う前記(6)または(7)に記載の記憶制御装置。
(9)前記判定部は、前記管理部が前記再確認を行う際には、前記所定の一方におけるエラー数が前記所定の基準よりも高い基準を超えた記憶単位を前記不良の疑いがある記憶単位として判定する前記(6)から(8)のいずれかに記載の記憶制御装置。
(10)前記判定部は、前記所定の一方におけるエラー数の前記所定の基準を複数の候補の中から選択する前記(6)から(9)のいずれかに記載の記憶制御装置。
(11)前記判定部は、前記不揮発性メモリが使用された経時状態に応じて前記複数の候補の中から前記所定の基準を選択する前記(10)に記載の記憶制御装置。
(12)前記判定部は、前記不揮発性メモリの所定の識別子に応じて前記複数の候補の中から前記所定の基準を選択する前記(10)に記載の記憶制御装置。
(13)前記判定部は、前記リセット操作および前記セット操作のエラー数のそれぞれが所定の基準を超え、かつ、前記所定の一方におけるエラー数が所定の基準を超えた記憶単位を不良の疑いがある記憶単位として判定する前記(1)に記載の記憶制御装置。
(14)前記判定部は、前記リセット操作および前記セット操作のエラー数の重み付き加算値が所定の基準を超え、かつ、前記所定の一方におけるエラー数が所定の基準を超えた記憶単位を不良の疑いがある記憶単位として判定する前記(1)に記載の記憶制御装置。
(15)前記判定部は、前記所定の一方におけるエラー数が前記所定の基準を超えない一定の状態である場合にその記憶単位を不良の疑いがある記憶単位に遷移する可能性があるものとして判定する前記(1)に記載の記憶制御装置。
(16)前記判定部は、記憶単位の全てのビットを消去する消去リクエストを処理する際には、前記所定の一方におけるエラー数が前記所定の基準よりも低い基準を超えた場合に前記不良の疑いがある記憶単位として判定する前記(1)に記載の記憶制御装置。
(17)不揮発性メモリのメモリセルと、
前記メモリセルに対するリセット操作またはセット操作のうち所定の一方におけるエラー数が所定の基準を超えた記憶単位を不良の疑いがある記憶単位として判定する判定部と
を具備する記憶装置。
(18)前記リセット操作および前記セット操作のエラー数をそれぞれ計数するカウンタをさらに具備する前記(17)に記載の記憶装置。
(19)不揮発性メモリのメモリセルに対するリセット操作またはセット操作のうち所定の一方におけるエラー数を取得する手順と、
前記所定の一方におけるエラー数が所定の基準を超えた記憶単位を不良の疑いがある記憶単位として判定する手順と
を具備する記憶制御方法。
100 ホストコンピュータ
200 記憶制御装置
210 ホストインターフェース
230 メモリインターフェース
240 制御部
244 エラーページ判定部
245 ページ管理部
250 ROM
260 RAM
261 空きページテーブル
270 ECC処理部
290 バス
300 メモリ
310 制御インターフェース
320 ワードラインデコーダ
330 メモリセル
331 可変抵抗素子
333 プレート
340 ビットラインセレクタ
350 ドライバ
360 OTPメモリ
380 制御部
381 エラー検出部
382 リセットエラーカウンタ
383 セットエラーカウンタ
384 エラーページ判定部
390 バス

Claims (19)

  1. 不揮発性メモリのメモリセルに対するリセット操作またはセット操作のうち所定の一方におけるエラー数が所定の基準を超えた記憶単位を不良の疑いがある記憶単位として判定する判定部を具備する記憶制御装置。
  2. 前記判定部は、前記リセット操作および前記セット操作のエラー数の合計値が所定の基準を超え、かつ、前記所定の一方におけるエラー数が所定の基準を超えた記憶単位を不良の疑いがある記憶単位として判定する請求項1記載の記憶制御装置。
  3. 前記判定部は、前記リセット操作および前記セット操作のエラー数の合計値が所定の基準を所定回数超え、かつ、前記所定回数の最後の前記所定の一方におけるエラー数が所定の基準を超えた記憶単位を不良の疑いがある記憶単位として判定する請求項1記載の記憶制御装置。
  4. 前記判定部は、前記リセット操作および前記セット操作のエラー数の合計値が所定の基準を超え、かつ、前記所定の一方におけるエラー数が所定の基準を超えなかった場合には、その記憶単位において書込みエラーが発生したと判定する請求項1記載の記憶制御装置。
  5. 前記判定部は、前記不良の疑いがある記憶単位を使用不能な記憶単位として判定する請求項1記載の記憶制御装置。
  6. 前記不良の疑いがある記憶単位として判定された記憶単位について再確認を行ってその結果に応じてその記憶単位を使用不能として管理する管理部をさらに具備する請求項1記載の記憶制御装置。
  7. 前記管理部は、前記再確認を行う際、その記憶単位について再度書込みを行って不良の疑いがある記憶単位として再び判定された場合にはその記憶単位を使用不能として管理する請求項6記載の記憶制御装置。
  8. 前記管理部は、前記不良の疑いがある記憶単位として判定された記憶単位が一定数を超えたときに、その記憶単位について前記再確認を行う請求項6記載の記憶制御装置。
  9. 前記判定部は、前記管理部が前記再確認を行う際には、前記所定の一方におけるエラー数が前記所定の基準よりも高い基準を超えた記憶単位を前記不良の疑いがある記憶単位として判定する請求項6記載の記憶制御装置。
  10. 前記判定部は、前記所定の一方におけるエラー数の前記所定の基準を複数の候補の中から選択する請求項1記載の記憶制御装置。
  11. 前記判定部は、前記不揮発性メモリが使用された経時状態に応じて前記複数の候補の中から前記所定の基準を選択する請求項10記載の記憶制御装置。
  12. 前記判定部は、前記不揮発性メモリの所定の識別子に応じて前記複数の候補の中から前記所定の基準を選択する請求項10記載の記憶制御装置。
  13. 前記判定部は、前記リセット操作および前記セット操作のエラー数のそれぞれが所定の基準を超え、かつ、前記所定の一方におけるエラー数が所定の基準を超えた記憶単位を不良の疑いがある記憶単位として判定する請求項1記載の記憶制御装置。
  14. 前記判定部は、前記リセット操作および前記セット操作のエラー数の重み付き加算値が所定の基準を超え、かつ、前記所定の一方におけるエラー数が所定の基準を超えた記憶単位を不良の疑いがある記憶単位として判定する請求項1記載の記憶制御装置。
  15. 前記判定部は、前記所定の一方におけるエラー数が前記所定の基準を超えない一定の状態である場合にその記憶単位を不良の疑いがある記憶単位に遷移する可能性があるものとして判定する請求項1記載の記憶制御装置。
  16. 前記判定部は、記憶単位の全てのビットを消去する消去リクエストを処理する際には、前記所定の一方におけるエラー数が前記所定の基準よりも低い基準を超えた場合に前記不良の疑いがある記憶単位として判定する請求項1記載の記憶制御装置。
  17. 不揮発性メモリのメモリセルと、
    前記メモリセルに対するリセット操作またはセット操作のうち所定の一方におけるエラー数が所定の基準を超えた記憶単位を不良の疑いがある記憶単位として判定する判定部と
    を具備する記憶装置。
  18. 前記リセット操作および前記セット操作のエラー数をそれぞれ計数するカウンタをさらに具備する請求項17記載の記憶装置。
  19. 不揮発性メモリのメモリセルに対するリセット操作またはセット操作のうち所定の一方におけるエラー数を取得する手順と、
    前記所定の一方におけるエラー数が所定の基準を超えた記憶単位を不良の疑いがある記憶単位として判定する手順と
    を具備する記憶制御方法。
JP2014179109A 2014-09-03 2014-09-03 記憶制御装置、記憶装置、および、記憶制御方法 Pending JP2016053808A (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2014179109A JP2016053808A (ja) 2014-09-03 2014-09-03 記憶制御装置、記憶装置、および、記憶制御方法
PCT/JP2015/069716 WO2016035451A1 (ja) 2014-09-03 2015-07-09 記憶制御装置、記憶装置、および、記憶制御方法
US15/505,674 US10338984B2 (en) 2014-09-03 2015-07-09 Storage control apparatus, storage apparatus, and storage control method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014179109A JP2016053808A (ja) 2014-09-03 2014-09-03 記憶制御装置、記憶装置、および、記憶制御方法

Publications (1)

Publication Number Publication Date
JP2016053808A true JP2016053808A (ja) 2016-04-14

Family

ID=55439521

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014179109A Pending JP2016053808A (ja) 2014-09-03 2014-09-03 記憶制御装置、記憶装置、および、記憶制御方法

Country Status (3)

Country Link
US (1) US10338984B2 (ja)
JP (1) JP2016053808A (ja)
WO (1) WO2016035451A1 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7242233B2 (ja) * 2018-09-28 2023-03-20 キヤノン株式会社 情報処理装置及びその制御方法とプログラム
US11461623B2 (en) 2018-10-18 2022-10-04 Taiwan Semiconductor Manufacturing Co., Ltd. Method and apparatus for defect-tolerant memory-based artificial neural network
CN115237333A (zh) * 2021-04-23 2022-10-25 伊姆西Ip控股有限责任公司 用于管理盘的方法、电子设备和计算机程序产品

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005056394A (ja) 2003-07-18 2005-03-03 Toshiba Corp 記憶装置及びメモリカード
JP2011060388A (ja) * 2009-09-11 2011-03-24 Toshiba Corp 不揮発性メモリ装置
JP2011187144A (ja) * 2010-03-11 2011-09-22 Toshiba Corp 半導体記憶装置
JP2012038387A (ja) * 2010-08-06 2012-02-23 Toshiba Corp 半導体記憶装置
US20140355326A1 (en) * 2013-05-31 2014-12-04 Kabushiki Kaisha Toshiba Non-volatile memory device
US10031865B2 (en) * 2014-11-26 2018-07-24 Sony Corporation Memory system, storage device, and method for controlling memory system
TWI649748B (zh) * 2015-01-14 2019-02-01 財團法人工業技術研究院 電阻式隨機存取記憶體與其控制方法
JP6520576B2 (ja) * 2015-08-27 2019-05-29 ソニー株式会社 メモリ、情報処理システムおよびメモリの制御方法

Also Published As

Publication number Publication date
US20170255502A1 (en) 2017-09-07
US10338984B2 (en) 2019-07-02
WO2016035451A1 (ja) 2016-03-10

Similar Documents

Publication Publication Date Title
JP5853899B2 (ja) 記憶制御装置、記憶装置、情報処理システム、および、それらにおける処理方法
JP5929790B2 (ja) 記憶制御装置、記憶装置、情報処理システム、および、それらにおける処理方法
EP2800097B1 (en) Storage control device, storage device, information processing system, and processing methods therefor
JP2014142931A5 (ja)
JP5929456B2 (ja) 記憶制御装置、記憶装置、情報処理システム、および、それらにおける処理方法
JP6149598B2 (ja) 記憶制御装置、記憶装置、情報処理システムおよび記憶制御方法
JP6034183B2 (ja) 半導体記憶装置
JP5768654B2 (ja) 記憶制御装置、記憶装置、情報処理システム、および、記憶制御方法
WO2016035451A1 (ja) 記憶制御装置、記憶装置、および、記憶制御方法
JP2014086062A (ja) 記憶制御装置、記憶装置、情報処理システム、および、記憶制御方法
EP2799998A1 (en) Storage control device, storage device, information processing system, and processing methods in same
TWI648739B (zh) 記憶體管理方法與儲存控制器
JP5867264B2 (ja) 記憶制御装置、メモリシステム、情報処理システム、および、記憶制御方法
JP6711281B2 (ja) メモリコントローラ、記憶装置、情報処理システムおよびメモリの制御方法
JP6107625B2 (ja) 記憶制御装置、記憶装置、情報処理システムおよびその記憶制御方法
JP2014022004A (ja) 記憶制御装置、記憶装置、および、それらにおける処理方法
WO2016056290A1 (ja) メモリコントローラ、メモリシステム、記憶装置、情報処理システムおよび記憶制御方法
CN108108118B (zh) 数据写入方法以及存储控制器
JP5845876B2 (ja) 記憶制御装置、記憶装置、情報処理システム、および、それらにおける処理方法
WO2017073127A1 (ja) メモリコントローラ、記憶装置、情報処理システムおよびメモリの制御方法
WO2017010147A1 (ja) 不揮発メモリ、メモリコントローラ、記憶装置、情報処理システムおよび不揮発メモリの制御方法
US9104596B2 (en) Memory system
JP2013101455A (ja) 記憶制御装置、記憶装置、情報処理システム、および、それらにおける処理方法
WO2017043149A1 (ja) メモリコントローラ、メモリおよびメモリシステム
KR20150122493A (ko) 데이터 저장 장치 및 그것의 동작 방법