JPWO2016042902A1 - メモリコントローラ、記憶装置、情報処理システムおよび不揮発メモリの制御方法 - Google Patents

メモリコントローラ、記憶装置、情報処理システムおよび不揮発メモリの制御方法 Download PDF

Info

Publication number
JPWO2016042902A1
JPWO2016042902A1 JP2016548608A JP2016548608A JPWO2016042902A1 JP WO2016042902 A1 JPWO2016042902 A1 JP WO2016042902A1 JP 2016548608 A JP2016548608 A JP 2016548608A JP 2016548608 A JP2016548608 A JP 2016548608A JP WO2016042902 A1 JPWO2016042902 A1 JP WO2016042902A1
Authority
JP
Japan
Prior art keywords
data
memory
verification
write
writing
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.)
Granted
Application number
JP2016548608A
Other languages
English (en)
Other versions
JP6481691B2 (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
Publication of JPWO2016042902A1 publication Critical patent/JPWO2016042902A1/ja
Application granted granted Critical
Publication of JP6481691B2 publication Critical patent/JP6481691B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • 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
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0613Improving I/O performance in relation to throughput
    • 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
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • G11C13/0021Auxiliary circuits
    • G11C13/0033Disturbance prevention or evaluation; Refreshing of disturbed memory data
    • 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
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • G11C13/0021Auxiliary circuits
    • G11C13/0064Verifying circuits or methods
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/3418Disturbance prevention or evaluation; Refreshing of disturbed memory data
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/3418Disturbance prevention or evaluation; Refreshing of disturbed memory data
    • G11C16/3431Circuits or methods to detect disturbed nonvolatile memory cells, e.g. which still read as programmed but with threshold less than the program verify threshold or read as erased but with threshold greater than the erase verify threshold, and to reverse the disturbance via a refreshing programming or erasing step
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/3436Arrangements for verifying correct programming or erasure
    • G11C16/3454Arrangements for verifying correct programming or for detecting overprogrammed cells
    • G11C16/3459Circuits or methods to verify correct programming of nonvolatile memory cells
    • 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
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • G11C13/0021Auxiliary circuits
    • G11C13/0069Writing or programming circuits or methods
    • G11C2013/0076Write operation performed depending on read result

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Read Only Memory (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Retry When Errors Occur (AREA)
  • Hardware Redundancy (AREA)

Abstract

正確な書込みデータの検証を行い、不揮発メモリの書込み信頼性を向上させる。情報処理システムのメモリコントローラにおいて、判断部は、データの書込み後に状態が不安定な期間が存在するメモリセルからなる不揮発メモリにおいてデータの書込み後のメモリセルの状態が安定しているか否かの判断を行う。検証部は、判断の結果に基づいてデータが書き込まれたメモリセルから読み出した読出しデータと書込みに係る書込みデータとを比較して検証する。書込み制御部は、データの書込みと検証の結果に基づく書込みデータの再書込みとを行う。

Description

本技術は、メモリコントローラに関する。詳しくは、不揮発メモリに対するデータの書込みおよび検証を行うメモリコントローラ、記憶装置、情報処理システムおよび不揮発メモリの制御方法に関する。
従来、情報処理システムの補助記憶装置として、不揮発メモリ(nonvolatile memory)であるNAND型フラッシュメモリが広く使用されている。このNAND型フラッシュメモリは、メモリセル内のMOSトランジスタに配置された浮遊ゲートに電荷を蓄積させることにより、データを記憶させるものである。これに対し、メモリセル内の記憶素子の物性を変化させてデータの記憶を行う形式の不揮発メモリがその高速性やランダムアクセスが可能等の利点により、注目されている。このような不揮発メモリとして、例えば、PCRAM(Phase-Change RAM)やReRAM(Resistance RAM)が挙げられる。また、MRAM(Magnetoresistive RAM)およびSTT−MRAM(Spin transfer torque-MRAM)等の磁性材料を使用した不揮発メモリも該当する。
PCRAMは、メモリセルに配置された相変化素子である記憶素子の電気抵抗を変化させてデータの記憶を行うものである。具体的には、記憶素子の状態を結晶状態またはアモルファス状態とし、これによる電気抵抗の差異を利用して記憶動作を行う。結晶状態の時に記憶素子は低抵抗となり、アモルファス状態の時に記憶素子は高抵抗となる。ここで、記憶素子を低抵抗状態とする操作をセット操作、高抵抗状態とする操作をリセット操作と表現する。メモリセルに対してリセットおよびセット操作を行うことによりPCRAMのデータの書込みが行われる。
記憶素子の状態を変化させるためには、記憶素子に電圧(書込み電圧)を印加して電流を流し、加熱する必要がある。その時の温度および発熱時間の条件を変えて、記憶素子の状態を結晶状態またはアモルファス状態とする。記憶素子を略融点温度かつ短時間の加熱条件とした場合には、記憶素子はアモルファス状態となり、リセット操作がなされる。一方、融点より低温である結晶化温度かつ長時間の加熱条件とした場合には、記憶素子は結晶化し、セット操作がなされる。このようなPCRAMにおいて記憶素子の結晶化の温度が許容範囲を超えてばらついた場合には、記憶素子の十分な結晶化ができないことにより、セット操作ができないおそれがある。そこで、セット操作の際、記憶素子を略融点とした後、書込み電圧を徐々に低下させて、記憶素子を除冷することにより結晶化の温度がばらついた場合であっても、セット操作を可能とするシステムが提案されている(例えば、特許文献1参照。)。
PCRAMと同様に、ReRAMもメモリセルに配置された記憶素子の電気抵抗を変化させてデータの記憶を行うものである。ReRAMの記憶素子は絶縁層と金属イオン供給層とからなる2層構造を有しており、記憶素子に電圧を印加すると、金属イオン供給層から供給される金属イオンからなる導電フィラメントが絶縁層内へ拡散し、低抵抗状態となる。これに対し、逆極性の電圧を印加すると、拡散していた導電フィラメントの金属イオンが金属イオン供給層に戻るため、記憶素子は高抵抗状態となる。なお、ReRAMにおいても記憶素子を低抵抗状態とする操作をセット操作、高抵抗状態とする操作をリセット操作と表現する。このようなReRAMにおいて、データの書込み動作であるリセットおよびセット操作を行った直後は、記憶素子の状態が安定しない現象が知られている。これは、データの書込み直後の記憶素子の抵抗値が、低抵抗または高抵抗状態と判別する閾値近傍の値となり、時間の経過に伴って正規の抵抗値に落ち着く現象である(例えば、非特許文献1参照。)。
特開2009−252253号公報
T.O.Iwasaki, et.al"Stability Conditioning to Enhance Read Stability 10x in 50nm AlxOy ReRAM", IEEE International Memory Workshop (IMW2013), pp44-47.
不揮発メモリは、データの書込み後に正しいデータが書込まれているか否かを検証する必要がある。このため、データの書込み後に当該データの読出しが行われ、読み出されたデータと書込みに係るデータとの比較が行われる。上述のPCRAMでは、書込み電圧より低い電圧(読出し電圧)を記憶素子に印加して記憶素子の抵抗値を測定することにより、この読出しが行われる。しかし、書込みの際、記憶素子を加熱し、冷却期間中に結晶化を行うため、この期間は記憶素子の状態が不安定となる。したがって、この期間に読出し電圧を印加すると、記憶素子の状態が変化し、書き込まれていたデータが破壊される場合がある。
また、ReRAMにおいても、上述のようにデータの書込み直後は記憶素子の状態が不安定となる。この期間に読出しを行うと、データが正常に読み出されないため、検証の結果、書込み不良と判断されることとなる。このように、記憶素子の物性を変化させてデータの書込みを行う形式の不揮発メモリは、書込みの直後に物性の変化に伴う不安定な期間が存在する。そのため、検証のためのデータの読出しをデータの書込みの直後に行うと、書込み不良と判断される可能性がある。その結果、書込みの信頼性が低くなるという問題がある。
本技術はこのような状況に鑑みて生み出されたものであり、正確な書込みデータの検証を行い、不揮発メモリの書込み信頼性を向上させることを目的とする。
本技術は、上述の問題点を解消するためになされたものであり、その第1の側面は、データの書込み後に状態が不安定な期間が存在するメモリセルからなる不揮発メモリにおいてデータの書込み後の上記メモリセルの状態が安定しているか否かの判断を行う判断部と、上記判断の結果に基づいて上記データが書き込まれた上記メモリセルから読み出した読出しデータと上記書込みに係る書込みデータとを比較して検証する検証部と、上記データの書込みと上記検証の結果に基づく上記書込みデータの再書込みとを行う書込み制御部とを具備するメモリコントローラである。これにより、不揮発メモリのメモリセルの状態が安定しているか否かの判断後に検証が行われるという作用をもたらす。
また、この第1の側面において、上記不揮発メモリは、上記データの書込みの直後に読出しを行うと上記書き込まれたデータが破壊される不揮発メモリであってもよい。これにより、上記データの書込みの直後に読出しを行うと上記書き込まれたデータが破壊される不揮発メモリにおいても不揮発メモリのメモリセルの状態が安定しているか否かの判断後に検証が行われるという作用をもたらす。
また、この第1の側面において、上記不揮発メモリは、上記データの書込みの直後には書込まれたデータが正常に読み出されない不揮発メモリであってもよい。これにより、上記データの書込みの直後には書込まれたデータが正常に読み出されない不揮発メモリにおいても不揮発メモリのメモリセルの状態が安定しているか否かの判断後に検証が行われるという作用をもたらす。
また、この第1の側面において、上記判断部は、上記データの書込み後の所定の安定化時間の経過に基づいて上記判断を行ってもよい。これにより、所定の安定化時間の経過に基づいて上記判断が行われるという作用をもたらす。
また、この第1の側面において、上記不揮発メモリは、ページアドレスによりページ単位でアクセスされ、上記書込み制御部は、複数ページからなるデータの書込みを連続して行い、上記検証部は、上記データの書込みが行われた順にページ単位で上記検証を行い、上記判断部は、上記検証の際には上記メモリセルの状態が安定していると判断してもよい。これにより、複数ページからなるデータの書込み後には上記メモリセルの状態が安定していると判断するという作用をもたらす。
また、この第1の側面において、上記再書込みを行う上記不揮発メモリのページアドレスの情報である再書込みアドレス情報を保持する再書込みアドレス情報保持部をさらに具備し、上記検証部は、上記複数ページからなるデータの書込み後に上記検証を連続して行って当該検証の結果に基づく上記再書込みアドレス情報を上記再書込みアドレス情報保持部に保持させ、上記書込み制御部は、上記保持された上記再書込みアドレス情報に基づいて上記再書込みを行ってもよい。これにより、再書込みアドレス情報に基づいて再書込みが行われるという作用をもたらす。
また、この第1の側面において、上記検証を行う上記不揮発メモリのページアドレスの情報である検証アドレス情報を保持する検証アドレス情報保持部をさらに具備し、上記書込み制御部は、上記書込みおよび上記再書込みを行った際に上記書込みおよび上記再書込みを行ったページアドレスの情報を上記検証アドレス情報として上記検証アドレス情報保持部に保持させ、上記検証部は、上記保持された上記検証アドレス情報に基づいて上記検証を行ってもよい。これにより、検証アドレス情報に基づいて検証が行われるという作用をもたらす。
また、この第1の側面において、上記不揮発メモリは、ページアドレスによりページ単位でアクセスされ、上記書込み制御部は、複数ページからなるデータの書込みを連続して行い、上記検証部は、上記データの書込みが行われた順にページ単位で上記検証を行い、上記判断部は、上記書込みデータのページ数が上記不揮発メモリにおけるデータの書込み後の所定の安定化時間に相当する書込み時間となるページ数である状態安定化ページ数以上の場合には上記検証の際に上記メモリセルの状態が安定していると判断し、上記書込みデータのページ数が上記状態安定化ページ数未満の場合には上記所定の安定化時間の経過を待って上記メモリセルの状態が安定していると判断してもよい。これにより、複数ページからなるデータの書込み後には当該書込みデータのページ数に基づいて上記判断を行い、所定の状態安定化ページ数よりも上記書込みデータのページ数が少ない場合には上記所定の安定化時間の経過に基づいて上記判断を行うという作用をもたらす。
また、この第1の側面において、データの書込み後に状態が不安定な期間が存在するメモリセルからなる不揮発メモリにおいてデータの書込みを行う書込み制御部と、上記データの書込み後の上記メモリセルの状態が安定しているか否かの判断を行う判断部と、上記判断の結果に基づいて上記データが書き込まれた上記メモリセルから読み出した読出しデータと上記書込みに係る書込みデータとを比較する検証と上記検証の結果に基づく上記書込みデータの再書込みとを行う検証書込み部とを具備してもよい。これにより、不揮発メモリのメモリセルの状態が安定しているか否かの判断後に検証が行われるという作用をもたらす。
また、本技術の第2の側面は、データの書込み後に状態が不安定な期間が存在するメモリセルからなる不揮発メモリと、上記不揮発メモリにおいてデータの書込み後の上記メモリセルの状態が安定しているか否かの判断を行う判断部と、上記判断の結果に基づいて上記データが書き込まれた上記メモリセルから読み出した読出しデータと上記書込みに係る書込みデータとを比較して検証する検証部と、上記データの書込みと上記検証の結果に基づく上記書込みデータの再書込みとを行う書込み制御部とを具備する記憶装置である。これにより、不揮発メモリのメモリセルの状態が安定しているか否かの判断後に検証が行われるという作用をもたらす。
また、本技術の第3の側面は、データの書込み後に状態が不安定な期間が存在するメモリセルからなる不揮発メモリと、上記不揮発メモリを制御するメモリコントローラと、上記メモリコントローラを介して上記不揮発メモリにアクセスするホストコンピュータとを具備し、上記メモリコントローラは、上記不揮発メモリにおいてデータの書込み後の上記メモリセルの状態が安定しているか否かの判断を行う判断部と、上記判断の結果に基づいて上記データが書き込まれた上記メモリセルから読み出した読出しデータと上記書込みに係る書込みデータとを比較して検証する検証部と、上記データの書込みと上記比較の結果に基づく上記書込みデータの再書込みとを行う書込み制御部とを備える情報処理システムである。これにより、不揮発メモリのメモリセルの状態が安定しているか否かの判断後に検証が行われるという作用をもたらす。
また、本技術の第4の側面は、データの書込み後に状態が不安定な期間が存在するメモリセルからなる不揮発メモリにおいてデータの書込み後の上記メモリセルの状態が安定しているか否かの判断を行う判断手順と、上記判断の結果に基づいて上記データが書き込まれた上記メモリセルから読み出した読出しデータと上記書込みに係る書込みデータとを比較して検証する検証手順と、上記データの書込みと上記比較の結果に基づく上記書込みデータの再書込みとを行う書込み制御手順とを具備する不揮発メモリの制御方法である。これにより、不揮発メモリのメモリセルの状態が安定しているか否かの判断後に検証が行われるという作用をもたらす。
本技術によれば、正確な書込みデータの検証を行い、不揮発メモリの書込み信頼性を向上させるという優れた効果を奏し得る。なお、ここに記載された効果は必ずしも限定されるものではなく、本開示中に記載されたいずれかの効果であってもよい。
本技術の第1の実施の形態における情報処理システムの構成例を示す図である。 本技術の第1の実施の形態におけるメモリコントローラの構成例を示す図である。 本技術の第1の実施の形態におけるメモリの構成例を示す図である。 本技術の第1の実施の形態における機能構成例を示す図である。 本技術の第1の実施の形態における判断部の構成例を示す図である。 本技術の第1の実施の形態における書込み操作を説明する図である。 本技術の第1の実施の形態における書込み処理の処理手順(メモリコントローラ)の一例を示す図である。 本技術の第1の実施の形態における通常書込み処理の処理手順(メモリコントローラ)の一例を示す図である。 本技術の第1の実施の形態における安定状態判断処理の処理手順(メモリコントローラ)の一例を示す図である。 本技術の第1の実施の形態における検証書込み処理の処理手順(メモリコントローラ)の一例を示す図である。 本技術の第1の実施の形態における書込み処理の処理手順(メモリ)の一例を示す図である。 本技術の第1の実施の形態における検証書込み処理の処理手順(メモリ)の一例を示す図である。 本技術の第1の実施の形態における再書込み処理の処理手順(メモリ)の一例を示す図である。 本技術の第1の実施の形態の変形例における再書込み処理の処理手順(メモリ)の一例を示す図である。 本技術の第2の実施の形態における機能構成例を示す図である。 本技術の第2の実施の形態における書込み処理の処理手順(メモリコントローラ)の一例を示す図である。 本技術の第3の実施の形態における機能構成例を示す図である。 本技術の第3の実施の形態における書込み処理の処理手順(メモリコントローラ)の一例を示す図である。 本技術の第3の実施の形態における検証書込み処理の処理手順(メモリコントローラ)の一例を示す図である。 本技術の第4の実施の形態における機能構成例を示す図である。 本技術の第4の実施の形態における書込み処理の処理手順(メモリコントローラ)の一例を示す図である。 本技術の第4の実施の形態における検証処理の処理手順(メモリコントローラ)の一例を示す図である。 本技術の第4の実施の形態における再書込み処理の処理手順(メモリコントローラ)の一例を示す図である。 本技術の第4の実施の形態における検証処理の処理手順(メモリ)の一例を示す図である。 本技術の第4の実施の形態における再書込み処理の処理手順(メモリ)の一例を示す図である。 本技術の第4の実施の形態の第1の変形例における再書込み処理の処理手順(メモリ)の一例を示す図である。 本技術の第4の実施の形態の第2の変形例における検証処理の処理手順(メモリコントローラ)の一例を示す図である。 本技術の第4の実施の形態の第2の変形例における再書込み処理の処理手順(メモリコントローラ)の一例を示す図である。 本技術の第4の実施の形態の第3の変形例における機能構成例を示す図である。 本技術の第4の実施の形態の第3の変形例における書込み処理の処理手順(メモリコントローラ)の一例を示す図である。 本技術の第4の実施の形態の第3の変形例における検証処理の処理手順(メモリコントローラ)の一例を示す図である。 本技術の第4の実施の形態の第3の変形例における再書込み処理の処理手順(メモリコントローラ)の一例を示す図である。 本技術の第5の実施の形態における情報処理システムの構成例を示す図である。 本技術の第5の実施の形態におけるメモリコントローラの構成例を示す図である。 本技術の第5の実施の形態における機能構成例を示す図である。 DRAMにおけるデータの移動を説明する図である。 本技術の第5の実施の形態における書込み処理の処理手順(メモリコントローラ)の一例を示す図である。 本技術の第5の実施の形態におけるデータ移動処理の処理手順(メモリコントローラ)の一例を示す図である。
以下、本技術を実施するための形態(以下、実施の形態と称する)について説明する。説明は以下の順序により行う。
1.第1の実施の形態(複数ページの書込みを連続して行う例)
2.第2の実施の形態(書込み条件を変更する例)
3.第3の実施の形態(検証アドレス情報を使用する例)
4.第4の実施の形態(複数ページの書込みおよび検証を連続して行う例)
5.第5の実施の形態(データバックアップ装置に適用した例)
<1.第1の実施の形態>
[情報処理システムの構成]
図1は、本技術の第1の実施の形態における情報処理システムの構成例を示す図である。同図の情報処理システムは、ホストコンピュータ100と、メモリコントローラ200と、メモリ300と、信号線109および208とを備える。なお、メモリ300は、特許請求の範囲に記載の不揮発メモリの一例である。
ホストコンピュータ100は、メモリコントローラ200を介してメモリ300とデータの入出力を行うものである。このホストコンピュータ100は、プロセッサ110と、DRAM120と、メモリコントローラインターフェース130と、バス装置101とを備える。プロセッサ110は、ホストコンピュータ100の全体の動作を制御するものである。DRAM120は、ホストコンピュータ100で使用されるデータを一時的に記憶するものである。メモリコントローラインターフェース130は、メモリコントローラ200とのやり取りを行うインターフェースである。バス装置101は、プロセッサ110、DRAM120、および、メモリコントローラインターフェース130を相互に接続するものである。ホストコンピュータ100は、信号線109を介してメモリコントローラ200にコマンドを発行することにより、メモリコントローラ200およびメモリ300との間でデータの入出力を行う。
[メモリコントローラの構成]
図2は、本技術の第1の実施の形態におけるメモリコントローラの構成例を示す図である。同図のメモリコントローラ200は、プロセッサ210と、RAM220と、ホストインターフェース230と、ECC処理部250と、ROM260と、メモリインターフェース270と、バス装置201とを備える。
プロセッサ210は、メモリコントローラ200の全体の動作を制御するものである。また、プロセッサ210は、ホストコンピュータ100が発行したコマンドの解釈およびこれに基づく処理も行う。RAM220は、メモリコントローラ200で使用されるデータを一時的に記憶するものである。ホストインターフェース230は、ホストコンピュータ100とのやり取りを行うインターフェースである。ECC処理部250は、ホストコンピュータ100から出力されたデータにパリティを付加してECC符号にする符号化と、ECC符号から元のデータを取り出す復号とを行うものである。この復号の際、データの誤り訂正を行う。
ROM260は、メモリコントローラ200のファームウェアを記憶するものである。プロセッサ210は、このファームウェアに従って動作する。メモリインターフェース270は、メモリ300とのやりとりを行うインターフェースである。バス装置201は、上述したメモリコントローラ200内の各部を相互に接続するものである。メモリコントローラ200は、信号線208を介してメモリ300に対してリクエストを発行し、データの入出力、すなわちデータの書込みおよび読出しを行う。
[メモリの構成]
図3は、本技術の第1の実施の形態におけるメモリの構成例を示す図である。同図のメモリ300は、制御部310と、作業メモリ320と、メモリコントローラインターフェース330と、アドレスデコーダ340と、メモリセルアレイ350と、バッファ360と、バス装置301とを備える。
制御部310は、メモリ300の全体の動作を制御するものである。また、制御部310は、メモリコントローラ200が発行したリクエストの解釈およびこれに基づく処理も行う。作業メモリ320は、メモリ300で使用されるデータを一時的に記憶するものである。メモリコントローラインターフェース330は、メモリコントローラ200とのやり取りを行うインターフェースである。メモリセルアレイ350は、データを記憶するものである。このメモリセルアレイ350は、不揮発メモリからなるメモリセルが2次元に配置されて構成される。これらのメモリセルはページアドレスによりページ単位でアクセスされる。このページは、例えば、512バイトの大きさである。
アドレスデコーダ340は、与えられたページアドレスをページ選択信号に変換してメモリセルアレイ350に対して出力するものである。バッファ360は、メモリセルアレイ350に入出力するデータを保持するものである。このバッファ360は、1ページに相当する大きさのデータ(以下、ページデータと称する。)と同じ容量である。
本技術の実施の形態における不揮発メモリとして、データの書込み後に状態が不安定な期間が存在するメモリセルからなる不揮発メモリを使用することができる。このような不揮発メモリとして、例えば、PCRAMやReRAMが該当する。以下の説明では、ReRAMを例に挙げて説明する。
[情報処理システムにおける書込み処理]
本技術の第1の実施の形態における情報処理システムの書込み処理のデータのやり取りについて、ホストコンピュータ100がDRAM120に記憶されているデータをメモリ300に書込む場合を例に挙げて説明する。まず、ホストコンピュータ100が、書込みコマンドを生成し、メモリコントローラ200に対して発行する。このコマンドにはDRAM120における書込みデータの先頭アドレス、書込みデータサイズ(ページ数)およびメモリ300における書込みアドレス(ページアドレス)が含まれている。発行されたコマンドは、メモリコントローラインターフェース130およびホストインターフェース230を介してメモリコントローラ200に入力され、RAM220に記憶される。プロセッサ210は、このコマンドを解釈してデータの書込みを行う。まず、コマンドに基づいてDRAM120から書込みデータを読み出して、RAM220に記憶させる。次に、プロセッサ210は、ECC処理部250に指示を出し、読み出した書込みデータの符号化を行わせる。その後、プロセッサ210は、書込みリクエストを生成してメモリ300に対して発行する。その際に、符号化した書込みデータをメモリ300に対して出力する。最後に、データの書込みが成功したか否かについて検証を行う。
この検証についても、メモリコントローラ200がメモリ300に対して検証リクエストを発行することにより行う。検証の結果、書込みが不成功であった場合には、再度リクエストを発行して再書込みを行う。これらのリクエストおよび書込みデータは、メモリインターフェース270およびメモリコントローラインターフェース330を介してメモリ300に入力され、作業メモリ320に記憶される。その後、制御部310がリクエストを解釈し、処理を行う。なお、本技術の第1の実施の形態では、検証リクエストおよびこれに基づく書込みリクエストを個別に発行する代わりにこれらを統合した検証書込みリクエストを発行して、処理を簡略化している。
[機能構成]
図4は、本技術の第1の実施の形態における機能構成例を示す図である。同図は、データの書込みを行う際の機能構成を想定したものである。メモリコントローラ200は、書込制御部292と、判断部280と、検証書込み部299とを備える。これらの機能は、図2において説明したプロセッサ210が実行するファームウェアにより実現される。なお、書込制御部292は、特許請求の範囲に記載の書込み制御部の一例である。
判断部280は、不揮発メモリにおいてデータの書込み後のメモリセルの状態が安定しているか否かの判断を行うものである。前述したように、ReRAMは、データの書込み直後は、メモリセルの状態が不安定な期間が存在する。判断部280は、このメモリセルの状態が安定になり、検証のためのデータの読出しを安定に行えるか否かを判断する。
検証書込み部299は、判断部280の判断の結果に基づいてデータの書込みを検証するものである。ここで、検証とは、データの書込みが正常に行われたか否かを調べることである。この検証は、データの書込み後にこのデータが書き込まれたメモリセルから読み出した読出しデータと書込みに係る書込みデータとを比較することにより行われる。また、検証書込み部299は、この検証の結果に基づく書込みデータの再書込みをさらに行う。すなわち、検証書込み部299は、検証とこの検証の結果に基づく再書込みとを行うものである。この検証書込み部299は、前述した検証書込みリクエストをメモリ300に対して発行することにより、検証および再書込みを実行する。
書込制御部292は、データの書込みを行うものである。この書込制御部292は、前述した書込みリクエストをメモリ300に対して発行する。また、書込制御部292は、判断部280に対して上述の判断に必要となる書込み情報の出力も行う。書込み情報と判断部280の動作については、後述する。
なお、同図におけるメモリ300は、制御部310と、作業メモリ320と、バッファ360と、メモリセルアレイ350とを備える。これらは、図3において説明したものと同様であり、説明を省略する。このような、メモリコントローラ200およびメモリ300における処理について説明する。ホストコンピュータ100から書込みコマンドがメモリコントローラ200に対して発行されると、書込制御部292は、メモリ300に対して書込みリクエストを発行する。この書込みリクエストは、例えば、書込みを表すオペコード、書込みデータおよび書込み先ページアドレスにより構成される。制御部310は、このリクエストを解釈して、これに含まれる書込みデータおよび書込み先ページアドレスを作業メモリ320に記憶させる。次に、制御部310は、書込みデータをバッファ360に転送して保持させる。次に、バッファ360に保持された書込みデータがメモリセルアレイ350に書き込まれる。メモリセルアレイ350における書込み動作の詳細については、後述する。書込み動作が完了すると、制御部310は、書込みレスポンスとして、書込みを行ったページ数である書込みページ数を書込制御部292に出力する。
また、書込制御部292は、メモリ300から出力された書込みレスポンスに基づく書込み情報を判断部280に対して出力する。すなわち、書込制御部292は、書込み動作が完了するたびに書込みページ数を書込み情報として出力する。
判断部280は、これに基づいて、上述した判断を行い、判断結果を検証書込み部299に対して出力する。検証書込み部299は、この判断結果に基づいて検証を行う。具体的には、次の手順により検証が行われる。まず、検証書込み部299は、検証を行うページの書込みデータをホストコンピュータ100のDRAM120から読み出してRAM220に記憶させる。この書込みデータは、検証のための比較データとして使用される。次に、検証書込み部299は、検証書込みリクエストを生成してメモリ300に対して発行する。この検証書込みリクエストは、例えば、検証書込みを表すオペコード、比較データおよび検証先ページアドレスにより構成される。この検証先ページアドレスは、検証を行うページのページアドレスであり、上述した書込みデータの書込み先ページアドレスと同一のページアドレスである。なお、本技術の第1の実施の形態では、書込みおよび検証書込みリクエストにおける書込みデータおよび比較データはいずれもページデータにより構成される。
制御部310は、このリクエストを解釈して、これに含まれる比較データおよび検証先ページアドレスを作業メモリ320に記憶させる。次に、制御部310は、検証先ページアドレスに基づいてメモリセルアレイ350に対して読出しを行う。読み出されたデータは、読出しデータとしてバッファ360に保持される。次に、制御部310は、作業メモリ320に記憶された比較データとバッファ360に保持された読出しデータとを比較する。この比較は、両データが完全に一致しているか否かにより行う。また、この比較は、不一致となったビット数が所定の閾値以下となっているか否かにより行ってもよい。両データが完全に一致しない場合であっても、メモリコントローラ200が備えるECC処理部250により、誤りは訂正され、所望のデータを読み出すことができるからである。
次に、制御部310は、上述の比較の結果、比較データおよび読出しデータが不一致と判断した場合に、書込みデータの再書込みを行う。この再書込みは、作業メモリ320に記憶されている比較データをメモリセルアレイ350に書き込むことにより行われる。その後、制御部310は、再書込みにおける書込みを行ったページ数を検証書込みレスポンスとして検証書込み部299に出力し、処理を終了する。
また、検証書込み部299は、メモリ300から出力された検証書込みレスポンスに基づく書込み情報を判断部280に対して出力する。
[判断部の構成]
図5は、本技術の第1の実施の形態における判断部の構成例を示す図である。同図の判断部280は、タイマ部281と、書込みページ数判断部282と、メモリセル安定状態判断部283とを備える。
タイマ部281は、書込制御部292および検証書込み部299によるデータの書込み後の安定化時間の計時を行うものである。ここで、安定化時間とは、データの書込み後に不安定となっていた不揮発メモリのメモリセルの状態が安定するまでの時間である。タイマ部281は、書込み情報が入力されると、新規に計時を開始し、この安定化時間が経過した場合には、この結果を出力する。
書込みページ数判断部282は、書込みページ数が状態安定化ページ数以上であるか否かを判断する。ここで、状態安定化ページ数とは、複数のページからなる書込みデータの書込みを行った際に、不揮発メモリにおけるデータの書込み後の安定化時間に相当する書込み時間となるページ数である。複数のページからなる書込みデータの書込みを連続して行った場合、書き込んだページ数によっては、当該書込みの処理の間に、初期に書込みを行ったメモリセルにおいて安定化時間が経過する場合がある。このような場合、上述したタイマ部281による安定化時間の計時を行うことなく、この書込みに係るメモリセルは状態が安定していると判断することができる。書込みを行った順に検証を行うことにより、この書込みに係る全てのメモリセルについて安定化時間の経過を担保することができるからである。この書込みページ数判断部282は、例えば、書込み情報に基づく書込みページ数をカウントするカウンタを備える構成とすることができる。書込みページ数判断部282は、このカウント値が状態安定化ページ数以上となった場合には、この結果を出力する。
メモリセル安定状態判断部283は、タイマ部281および書込みページ数判断部282の出力に基づいてメモリセルの安定状態を判断するものである。具体的には、タイマ部281におけるデータの書込み後の安定化時間の経過または書込みページ数判断部282における状態安定化ページ数以上の書込みが生じた場合に、これらの書込みに係るメモリセルの状態が安定したものと判断する。その後、この判断結果を出力する。これにより、判断部280は、複数ページからなるデータの書込み後には当該書込みデータのページ数に基づいて判断を行い、状態安定化ページ数よりも書込みデータのページ数が少ない場合には安定化時間の経過に基づいて前記判断を行うことができる。
[メモリセルアレイにおける書込み操作]
図6は、本技術の第1の実施の形態における書込み操作を説明する図である。同図を参照して、メモリ300のメモリセルアレイ350における書込み操作について説明する。前述のように、ReRAMでは、メモリセルに対してリセット操作およびセット操作を行うことにより書込が行われる。ここで、ReRAMの記憶素子が低抵抗状態にある場合を値「1」、高抵抗状態にある場合を値「0」に対応させる。これにより、リセット操作によりメモリセルには値「0」が書き込まれ、セット操作によりメモリセルには値「1」が書き込まれることとなる。
なお、本技術の実施の形態におけるリセット操作およびセット操作は、それぞれリセット操作用データおよびセット操作用データに基づいて行われる。このリセット操作用データは、ページデータのうち対象となるビット、すなわち値「0」を書き込むビットを値「1」とし、他のビットを値「0」としたデータである。また、このセット操作用データは、ページデータのうち対象となるビット、すなわち値「1」を書き込むビットを値「1」とし、他のビットを値「0」としたデータである。メモリ300は、データの書込みの際には、これらリセット操作用データおよびセット操作用データを生成し、リセット操作およびセット操作を行う。
なお、データの書込み操作の前に、事前消去を行ってもよい。ここで、事前消去とは、データの書込みに先立って行われる対象メモリセルの全ビットを値「1」にする操作である。ReRAMは、NAND型フラッシュメモリとは異なり、事前消去をすることなくデータの書込みが可能である。しかし、NAND型フラッシュメモリとの互換性を持たせるため、情報処理システムが事前消去機能を備え、データの書込み処理前に事前消去が行われる場合がある。ただし、この場合、メモリ300は、書込み処理の対象となるメモリセルの事前消去の有無について、把握する必要がある。事前消去の有無によりメモリ300における書込み操作が異なるためである。このため、メモリ300は、例えば、作業メモリ320にフラグを設けて、このフラグに事前消去の有無を設定する方式を用いることができる。次に、書込みおよび再書込みの操作について場合に分けて説明する。
(a)書込み操作(事前消去あり)の場合
事前消去によりメモリセルのデータは全て値「1」となっているため、メモリ300はリセット操作のみを行う。リセット操作用データは、書込みデータに対してビット毎の論理反転演算を行うことにより算出される。この演算を論理式で表すと、次式のようになる。
RData=〜W ・・・式1
ただし、RDataはリセット操作用データを表す。Wは書込みデータ(ページデータ)を表す。〜はビット毎の論理反転を表す演算子である。同図におけるaに書込みデータ、メモリセルのデータおよびリセット操作用データの関係を表した。
(b)書込み操作(事前消去なし)の場合
メモリ300は、リセット操作およびセット操作を行う。リセット操作用データは、以下の手順により算出される。まず、メモリセルに書き込まれているデータが読み出される。次に、読み出されたデータと書込みデータとについてビット毎の排他的論理和演算が行われる。最後に、この排他的論理和演算の結果と読み出されたデータとについてビット毎の論理積演算が行われる。メモリ300は、得られた演算結果をリセット操作用データとする。これらの演算を論理式で表すと、次式のようになる。
RData=((W^R)&R) ・・・式2
ただし、Rは読み出したデータ(ページデータ)を表す。また、^および&はそれぞれビット毎の排他的論理和演算およびビット毎の論理積演算を表す演算子である。
セット操作用データは、以下の手順により算出される。まず、メモリセルに書き込まれているデータが読み出される。次に、読み出されたデータと書込みデータとについてビット毎の排他的論理和演算が行われる。最後に、この排他的論理和演算の結果と書込みデータとについてビット毎の論理積演算が行われる。メモリ300は、得られた演算結果をセット操作用データとする。これらの演算を論理式で表すと、次式のようになる。
SData=((W^R)&W) ・・・式3
ただし、SDataはセット操作用データを表す。同図におけるbに書込みデータ、読み出されたデータ、リセット操作用データおよびセット操作用データの関係を表した。
(c)再書込み操作(事前消去あり)の場合
メモリ300はリセット操作のみを行う。リセット操作用データは、式2に基づいて算出される。
(d)再書込み操作(事前消去なし)の場合
この場合は、(b)と同じ操作にすることができる。すなわち、メモリ300は、リセット操作およびセット操作を行う。リセット操作用データおよびセット操作用データは、それぞれ式2および式3に基づいて算出される。
[書込み処理の処理手順(メモリコントローラ側の処理)]
図7は、本技術の第1の実施の形態における書込み処理の処理手順(メモリコントローラ)の一例を示す図である。なお、本技術の第1の実施の形態における書込み処理では、再書込みカウンタおよびオフセットレジスタを使用する。これらは、メモリコントローラ200においてソフトウェアにより実現されるカウンタおよびレジスタである。再書込みカウンタは、書込み処理における再書込みを行った回数を保持するものである。オフセットレジスタは、DRAM120における書込みデータの先頭アドレスからのオフセット値を保持するものである。なお、このオフセット値は、ページ数を単位とする値である。
ホストコンピュータ100より書込みコマンドが発行されると、メモリコントローラ200は、書込み処理を開始する。まず、メモリコントローラ200は、通常書込みを行う(ステップS910)。本技術の第1の実施の形態においては、複数のページからなる書込みデータの書込みをこの通常書込み処理において行う。次に、メモリコントローラ200は、安定状態判断処理を行う(ステップS920)。次に、メモリコントローラ200は、再書込みカウンタを初期化し(ステップS903)、検証書込みを行う(ステップS930)。この検証書込み処理により再書込みカウンタには再書込みを行った回数が保持される。
この再書込みカウンタの値が「0」の場合は(ステップS904:Yes)、検証書き込み処理において再書き込みが発生しなかったことを示している。すなわち、書き込み処理が成功したことを示しており、メモリコントローラ200は、ホストコンピュータ100に対して書込み処理が正常に終了したことを通知し、書込み処理を終了する。一方、再書込みカウンタの値が「0」でない場合は(ステップS904:No)、検証書き込み処理において再書き込みが発生したことを示している。すなわち、該当部分に対する再度の検証書き込み処理が必要であることを示している。この場合、再書込みカウンタの値が「0」となるまで、再書込み処理(ステップS920からの処理)をループ状に実行する。しかし、再書込み処理回数の上限に達している場合には(ステップS905:Yes)、メモリコントローラ200は、再書込み処理を行わず、エラー処理(ステップS906)を行う。このエラー処理として、メモリコントローラ200は、ホストコンピュータ100に対してデータの書込みが異常終了したことを通知する。その後、メモリコントローラ200は、書込み処理を終了する。再書込み処理の上限値としては、例えば、2回とすることができる。
[通常書込み処理の処理手順(メモリコントローラ側の処理)]
図8は、本技術の第1の実施の形態における通常書込み処理の処理手順(メモリコントローラ)の一例を示す図である。本処理は、図7において説明したステップS910に対応する処理である。まず、メモリコントローラ200は、書込み設定を行う(ステップS911)。具体的には、書込みコマンドに基づいて、書込みデータの読出し元であるDRAM120の書込みデータの先頭アドレス、書込みデータのページ数および書込み先であるメモリ300におけるページアドレスを設定する。次に、メモリコントローラ200は、オフセットレジスタを初期化する(ステップS912)。その後、メモリコントローラ200は、全てのデータの書込みが終了したか否かを調べる(ステップS916)。具体的には、メモリコントローラ200が、ステップS911において設定した書込みデータのページ数と書込みが終了したページ数、例えば、オフセットレジスタの値とを比較することにより行う。
その結果、全てのデータの書込みが終了していた場合には(ステップS916:Yes)、通常書込み処理を終了する。一方、全てのデータの書込みが終了していない場合には(ステップS916:No)、ステップS913からの処理に移行する。メモリコントローラ200は、ホストコンピュータ100から書込みデータを取得する(ステップS913)。具体的には、ホストインターフェース230を介してメモリコントローラインターフェース130に対して書込みデータの転送を指示する。この際、データの読出し元であるDRAM120のアドレスを指定する。このアドレスは、DRAM120の書込みデータの先頭アドレスにオフセットレジスタの値とページサイズとの積を加えたものである。メモリコントローラインターフェース130は、指定されたアドレスのページデータをDRAM120から読み出して、これを書込みデータとしてメモリコントローラ200に対して出力する。
メモリコントローラ200は、このページデータをRAM220に記憶させる。このページデータに対してECC処理部250が符号化を行う。次に、メモリコントローラ200は、符号化されたページデータを含む書込みリクエストを生成し、発行する(ステップS914)。この際、書込みリクエストの書込み先ページアドレスには、ホストコンピュータ100が出力した書込みコマンドに含まれるメモリ300における書込みアドレス(ページアドレス)にオフセットレジスタの値を加算した値を使用することができる。すなわち、オフセットレジスタの値による相対アドレスによりページアドレスを指定することができる。メモリ300における書込み動作が完了して書込みレスポンスがメモリ300から出力された後、メモリコントローラ200は、オフセットレジスタを更新し(ステップS918)、ステップS916の処理に戻る。なお、メモリコントローラ200は、ステップS914の処理を行った際に書込みレスポンスに基づく書込み情報を判断部280に出力する。これにより、タイマ部281による安定化時間の計時と書込みページ数判断部282による状態安定化ページ数に係る判断とを開始させることができる。
[安定状態判断処理の処理手順(メモリコントローラ側の処理)]
図9は、本技術の第1の実施の形態における安定状態判断処理の処理手順(メモリコントローラ)の一例を示す図である。本処理は、図7において説明したステップS920に対応する処理である。まず、メモリコントローラ200は、書込みページ数が状態安定化ページ数以上か否かを判断する(ステップS921)。その結果、書込みページ数が状態安定化ページ数以上であった場合には(ステップS921:Yes)、安定状態判断処理を終了する。一方、書込みページ数が状態安定化ページ数未満であった場合には(ステップS921:No)、メモリコントローラ200は、安定化時間が経過しているか否かを判断し(ステップS922)、安定化時間が経過するまで待機する(ステップS922:No)。一方、安定化時間が経過している場合には(ステップS922:Yes)、安定状態判断処理を終了する。なお、メモリコントローラ200は、ステップS921の処理を行った際に、書込みページ数判断部282のカウンタをリセットしてこれに保持された書込みページ数をゼロにする。
[検証書込み処理の処理手順(メモリコントローラ側の処理)]
図10は、本技術の第1の実施の形態における検証書込み処理の処理手順(メモリコントローラ)の一例を示す図である。本処理は、図7において説明したステップS930に対応する処理である。まず、メモリコントローラ200は、オフセットレジスタを初期化する(ステップS932)。次に、メモリコントローラ200は、全てのデータの検証が終了したか否かを調べる(ステップS936)。その結果、全てのデータの検証が終了していた場合には(ステップS936:Yes)、検証書込み処理を終了する。一方、全てのデータの検証が終了していない場合には(ステップS936:No)、ステップS933からの処理に移行する。
メモリコントローラ200は、ホストコンピュータ100から書込みデータを取得する(ステップS933)。次に、メモリコントローラ200は、この書込みデータを含む検証書込みリクエストを生成し、発行する(ステップS934)。このリクエストのレスポンス(検証書込みレスポンス)として、メモリ300は、再書込みにおける書込みページ数を出力する。このリクエストの結果、メモリ300により再書込みが行われた場合、メモリコントローラ200は、再書込みカウンタを更新する。すなわち、検証書込みレスポンスの書込みページ数がゼロでない場合は(ステップS935:Yes)、メモリコントローラ200は、再書込みカウンタに検証書込みレスポンスの書込みページ数を加算する(ステップS937)。その後、メモリコントローラ200は、ステップS938の処理に移行する。
一方、メモリ300により再書込みが行われなかった場合、すなわち、検証書込みレスポンスの書込みページ数がゼロの場合は(ステップS935:No)、メモリコントローラ200は、ステップS937の処理をスキップして、ステップS938の処理に移行する。ステップS938において、メモリコントローラ200は、オフセットレジスタを更新し(ステップS938)、ステップS936の処理に戻る。なお、メモリコントローラ200は、ステップS934の処理を行った際に検証書込みレスポンスに基づく書込み情報を判断部280に出力する。
[書込み処理の処理手順(メモリ側の処理)]
図11は、本技術の第1の実施の形態における書込み処理の処理手順(メモリ)の一例を示す図である。メモリ300は、メモリコントローラ200から書込みリクエストが発行されると、書込み処理を開始する。なお、リクエストに伴う書込みデータは、作業メモリ320に記憶される。まず、メモリ300は、事前消去の有無を調べ(ステップS701)、事前消去がされていない場合は(ステップS701:No)、ステップS702乃至ステップS706の処理を実行する。一方、事前消去がされている場合は(ステップS701:Yes)、メモリ300は、ステップS707およびステップS708の処理を実行する。
まず、ステップS702乃至ステップS706の処理について説明する。この場合は、前述した(b)書込み操作(事前消去なし)の場合に該当する。メモリ300は、書込み操作の対象となるメモリセルからページデータの読出しを行う(ステップS702)。この読み出したページデータおよび作業メモリ320に記憶された書込みデータに基づいて、メモリ300は、リセット操作用データを算出し(ステップS703)、リセット操作を行う(ステップS704)。次に、メモリ300は、セット操作用データを算出し(ステップS705)、セット操作を行い(ステップS706)、ステップS709の処理に移行する。次に、ステップS707およびステップS708の処理について説明する。この場合は、前述した(a)書込み操作(事前消去あり)の場合に該当する。事前消去が行われているため、メモリ300は、メモリセルからのページデータの読出しを行うことなく、リセット操作用データを算出する(ステップS707)。次に、メモリ300は、リセット操作を行い(ステップS708)、ステップS709の処理に移行する。ステップS709において、メモリ300は、書込み処理の結果として、書込みを行ったページ数をメモリコントローラ200に対して出力し(ステップS709)、書込み処理を終了する。
[検証書込み処理の処理手順(メモリ側の処理)]
図12は、本技術の第1の実施の形態における検証書込み処理の処理手順(メモリ)の一例を示す図である。メモリ300は、メモリコントローラ200から検証書込みリクエストが発行されると、検証書込み処理を開始する。なお、リクエストに伴う比較データは、作業メモリ320に記憶される。まず、メモリ300は、メモリセルからデータ(ページデータ)の読出しを行う(ステップS712)。読み出されたデータは、バッファ360に保持される。次に、メモリ300は、データの比較を行う(ステップS718)。具体的には、メモリ300は、作業メモリ320に記憶された比較データおよびバッファ360に保持されたデータの比較を行う。
その結果、両者が一致していない場合には(ステップS711:No)、再書込みを行う(ステップS720)。一方、両者が一致している場合には(ステップS711:Yes)、ステップS720の処理をスキップして、ステップS719の処理に移行する。ステップS719において、メモリ300は、検証書込み処理の結果として、書込みを行ったページ数をメモリコントローラ200に対して出力し(ステップS719)、検証書込み処理を終了する。
[再書込み処理の処理手順(メモリ側の処理)]
図13は、本技術の第1の実施の形態における再書込み処理の処理手順(メモリ)の一例を示す図である。本処理は、図12において説明したステップS720に対応する処理である。すなわち、上述の検証書込み処理から呼び出される処理であるため、バッファ360にはメモリセルから読み出したデータが保持されている。このデータを使用して再書込みを行う。メモリ300は、リセット操作用データの算出を行い(ステップS723)、リセット操作を行う(ステップS724)。本技術の第1の実施の形態では、再書込みの際、事前消去の有無にかかわらずリセット操作を行う。
次に、メモリ300は、事前消去の有無を調べ(ステップS721)、事前消去がされていない場合は(ステップS721:No)、ステップS725およびステップS726の処理を実行する。この場合は、前述した(d)再書込み操作(事前消去なし)の場合に該当する。一方、事前消去がされている場合は(ステップS721:Yes)、メモリ300は、ステップS729の処理に移行する。この場合は、前述した(c)再書込み操作(事前消去あり)の場合に該当する。ステップS725およびステップS726の処理について説明する。メモリ300は、セット操作用データを算出し(ステップS725)、セット操作を行い(ステップS726)、ステップS729の処理に移行する。ステップS729において、メモリ300は、再書込み処理の結果として、書込みを行ったページ数をメモリコントローラ200に対して出力し(ステップS729)、再書込み処理を終了する。
このように、本技術の第1の実施の形態によれば、複数ページからなるデータの書込みを行った後に、状態安定化ページ数以上の書込みページ数および書込み後の安定化時間の経過の何れかに基づいてメモリセルの状態が安定しているか否かの判断を行う。メモリセルの状態が安定したと判断してデータの読出しを行い、検証を行うことにより、正確な書込みデータの検証が可能になり、書込み信頼性を向上させることができる。
[第1の変形例]
上述の第1の実施の形態では、図10において説明した検証書込み処理のステップS933において、検証のためのデータを1ページずつホストコンピュータ100のDRAM120から読み出して転送していた。しかし、複数のページデータをまとめて転送してもよい。データ転送時間を短縮することができるためである。そこで、第1の変形例では、検証書込み処理において、DRAM120から複数のページデータをまとめて転送する。これにより、転送された複数ページのデータはメモリコントローラ200のRAM220に記憶され、検証書込みリクエスト発行処理(ステップS934)の際に、1ページずつ読み出されて、検証に使用される。
[第2の変形例]
上述の第1の実施の形態では、図10において説明した検証書込み処理のステップS934において、検証書込みリクエストの発行に伴ってページデータを出力していた。しかし、複数のページデータをまとめて出力し、メモリ300に転送してもよい。第1の変形例と同様、データ転送時間を短縮することができるためである。そこで、第2の変形例では、検証書込み処理において、検証書込みリクエスト発行の際に、複数のページデータをまとめて出力する。これにより、転送された複数のページデータはメモリ300の作業メモリ320に記憶され、メモリ300における検証書込み処理の際に、1ページずつ読み出されて、検証および再書込みに使用される。
[第3の変形例]
上述の第1の実施の形態では、図4における判断部280は、状態安定化ページ数以上の書込みページ数および書込み後の安定化時間の経過の何れかに基づいてメモリセルの状態が安定しているか否かの判断を行っていた。しかし、安定化時間の経過のみに基づいて判断を行ってもよい。判断部280の構成を簡素化することができるためである。そこで、第3の変形例では、書込みページ数判断部282を省略し、タイマ部281による安定化時間の経過のみに基づいて判断を行う。
[第4の変形例]
上述の第1の実施の形態では、図4における判断部280は、状態安定化ページ数以上の書込みページ数および書込み後の安定化時間の経過の何れかに基づいてメモリセルの状態が安定しているか否かの判断を行っていた。しかし、判断部280は、書込制御部292における複数ページからなるデータの書込みが連続して行われ、この書込みが行われた順に検証書込み部299において検証が行われた後には、メモリセルの状態が安定していると判断してもよい。ページデータサイズが大きく処理に時間がかかる場合等には、複数ページからなるデータの書込みにより、所定の安定化時間の経過が担保されるためである。そこで、書込みページ数判断部282は、複数ページからなる書込みであるか否かに基づいて判断を行う。これにより、判断部280の構成を簡素化することができる。
[第5の変形例]
上述の第1の実施の形態では、事前消去されている場合の再書込み処理においてリセット操作のみを行っていたが、事前消去されている場合であってもリセット操作およびセット操作により再書込みを行ってもよい。リセット操作によりライトディスターブ現象が発生した場合であっても、セット操作を行うことによりメモリセルに書込まれたデータの反転を防ぐことができる。なお、ライトディスターブ現象とは、メモリセルに書込みを行った際に、近隣のメモリセルに記憶されたデータが書き換えられる現象である。そこで、事前消去されている場合であってもリセット操作およびセット操作により再書込みを行う。これにより、データの書込みの信頼性を向上させることができる。
書込みおよび再書込みの操作について場合に分けて説明する。
(a')書込み操作(事前消去あり)の場合
メモリ300はリセット操作のみを行う。リセット操作用データは、式1に基づいて算出される。すなわち、前述した(a)と同じ操作にすることができる。
(b')書込み操作(事前消去なし)の場合
メモリ300は、リセット操作およびセット操作を行う。リセット操作用データおよびセット操作用データは、それぞれ式2および式3に基づいて算出される。すなわち、前述した(b)と同じ操作にすることができる。
(c')再書込み操作(事前消去あり)の場合
この場合は、(b')と同じ操作にすることができる。
(d')再書込み操作(事前消去なし)の場合
この場合も、(b')と同じ操作にすることができる。
[再書込み処理の処理手順(メモリ側の処理)]
図14は、本技術の第1の実施の形態の変形例における再書込み処理の処理手順(メモリ)の一例を示す図である。第5の変形例では、事前消去の有無にかかわらずリセット操作およびセット操作を行うため、図13において説明した再書込み処理と比較して処理が簡素化される。まず、メモリ300は、リセット操作用データを算出し(ステップS723)、リセット操作を行う(ステップS724)。次に、メモリ300は、セット操作用データを算出し(ステップS725)、セット操作を行う(ステップS726)。次に、メモリ300は、再書込み処理の結果として、書込みを行ったページ数をメモリコントローラ200に対して出力し(ステップS729)、再書込み処理を終了する。
[第6の変形例]
上述の第1の実施の形態では、不揮発性メモリとして、ReRAMを想定していたが、データの書込みの直後に読出しを行うと書き込まれたデータが破壊されるPCRAMであってもよい。PCRAMにおいても、複数ページからなるデータの書込みを行った後に、メモリセルの状態が安定しているか否かの判断を行って、検証を行うことにより、正確な書込みデータの検証が可能になる。これにより、書込み信頼性を向上させることができる。
[書込み処理および再書込み処理の処理手順(メモリ側の処理)]
PCRAMは、データの書込みの際に、メモリセルのデータを読み出すことなくリセット操作用データおよびセット操作用データを生成することができる。そのため、処理が簡素化される。なお、本技術の第1の実施の形態の第6の変形例では、事前消去は行われないものと想定する。これにより、書込み処理および再書込み処理は同一の処理となり、図14において説明した処理と同様の処理手順となる。ステップS723において、メモリコントローラ200は、リセット操作用データを算出する。これは、式1に基づいて算出される。ステップS725において、メモリコントローラ200は、セット操作用データを算出する。これは、次式に基づいて算出される。
SData=W
これ以外の処理手順は、図14における処理手順と同様であるため説明を省略する。なお、PCRAMにおいても、ReRAMと同様に、メモリセルのデータの読み出しを行い、これを参照してリセット操作用データおよびセット操作用データを生成してもよい。この場合のリセット操作用データおよびセット操作用データの生成は、前述したReRAMにおけるこれらのデータの生成と同様にすることができる。
[第7の変形例]
上述の第1の実施の形態では、メモリコントローラ200が、書込み制御部292と、判断部280と、検証書込み部299とを備えていたが、メモリ300がこれらを備えてもよい。メモリコントローラ200の処理を簡素化できるからである。この場合、メモリコントローラ200は、メモリ300に対して、書込みリクエストのみを発行する。そして、メモリ300が、このリクエストに基づいて書込み、判断および検証書込みの処理を行う。
<2.第2の実施の形態>
上述の第1の実施の形態では、再書込みを行う際、記憶素子に印加する書込み電圧等を変更せずに書込みを行っていた。これに対し本技術の第2の実施の形態では、再書込みの際に、書込み条件を変更する。これにより、書込みの信頼性を向上させる。
[機能構成]
図15は、本技術の第2の実施の形態における機能構成例を示す図である。同図のメモリコントローラ200は、書込み条件設定部294を備える。この書込み条件設定部はメモリ300に対して書込み条件を設定するものである。ここで、書込み条件とは、メモリセルにデータを書き込む際の条件である。書込み条件の設定は、メモリ300に対して書込み条件設定リクエストを発行することにより行われる。メモリ300は、この書込み条件設定リクエストに基づく書込み条件を保持し、書込みの際に適用する。これ以外の構成は、図4において説明したメモリコントローラ200およびメモリ300と同様であるため、説明を省略する。
[書込み条件]
ReRAMにおける書込み条件としては、メモリセルの記憶素子に印加する書込み電圧とそのパルス幅およびパルス数、メモリセルに流す電流ならびに読出し電圧および読出しの際の参照電圧が挙げられる。本技術の第2の実施の形態のメモリコントローラ200は、既定の書込み条件をメモリ300に設定して通常書込みを行い、再書込みの際には書込み条件を変更する。例えば、書込み電圧を変更して再書込みを行う。
再書込みの際に、書込み電圧を高くすることにより、記憶素子の絶縁層内の金属イオンの拡散を高速化することができる。絶縁層における金属イオンの移動度が低く、書込みの際に記憶素子の抵抗値が閾値近傍の値となり、書込みが失敗したメモリセルであっても、再書込みの際に書込み電圧を高くすることにより、記憶素子を所望の高抵抗状態または低抵抗状態にすることが可能となる。これにより、書込みを成功させ、書込み信頼性を向上させることができる。なお、書込み電圧を高くすると消費電力が増加する。しかし、本技術の第2の実施の形態では、再書込みの時だけ高い書込み電圧にすることにより、書込み処理全体の消費電力の増加を抑えながら書込み信頼性を向上させることができる。
[書込み処理の処理手順(メモリコントローラ側の処理)]
図16は、本技術の第2の実施の形態における書込み処理の処理手順(メモリコントローラ)の一例を示す図である。ホストコンピュータ100から書込みコマンドが発行されると、メモリコントローラ200は、書込み処理を開始する。まず、メモリコントローラ200は、書込み条件設定リクエストの発行を行う(ステップS951)。これにより、既定の書込み条件がメモリ300に設定される。次に、メモリコントローラ200は、コマンドを解釈して通常書込みを行う(ステップS960)。次に、メモリコントローラ200は、安定状態判断処理を行う(ステップS970)。その後、メモリコントローラ200は、後続する検証書込み処理に先立ち、書込み条件を変更し(ステップS957)、変更した条件に基づく書込み条件設定リクエストを発行する(ステップS958)。次に、メモリコントローラ200は、再書込みカウンタを初期化し(ステップS959)、検証書込みを行う(ステップS980)。その後、再書込みカウンタの値が「0」の場合は(ステップS954:Yes)、メモリコントローラ200は、ホストコンピュータ100に対して書込み処理が正常に終了したことを通知し、書込み処理を終了する。
再書込みカウンタの値が「0」でない場合は(ステップS954:No)、再書込みカウンタの値が「0」となるまで、再書込み処理回数が上限に達しない範囲で(ステップS955:No)、再書込み処理(ステップS970からの処理)をループ状に実行する。しかし、ステップS955において、再書込み処理回数が上限に達している場合には(ステップS955:Yes)、メモリコントローラ200は、再書込み処理を行わず、エラー処理(ステップS956)を行う。このエラー処理として、メモリコントローラ200は、ホストコンピュータ100に対してデータの書込みが異常終了したことを通知する。その後、メモリコントローラ200は、書込み処理を終了する。
なお、通常書込み(ステップS960)の処理は、図7において説明した通常書込み(ステップS910)と同様であるため説明を省略する。安定状態判断(ステップS970)の処理は、図7において説明した安定状態判断(ステップS920)と同様であるため説明を省略する。検証書込み(ステップS980)の処理は、図7において説明した検証書込み(ステップS930)と同様であるため説明を省略する。また、メモリ300における処理も本技術の第1の実施の形態における処理と同様であるため説明を省略する。
このように、本技術の第2の実施の形態によれば、再書込みの際の書込み条件を変更することにより、書込み信頼性をさらに高めることができる。
<3.第3の実施の形態>
上述の第1の実施の形態では、再書込みの際、書込み処理の対象となった全てのメモリセルに対して検証を行うため、長い処理時間を要していた。これに対し、本技術の第3の実施の形態では、検証が必要なページのページアドレスを保持して検証を行い、不必要な検証を抑制することにより、書込み処理を高速化する。
[機能構成]
図17は、本技術の第3の実施の形態における機能構成例を示す図である。同図のメモリコントローラ200は、検証アドレス情報保持部295を備える。この検証アドレス情報保持部295は、検証アドレス情報を保持するものである。ここで、検証アドレス情報とは、検証を行うメモリ300におけるページのページアドレスの情報である。書込制御部292は、書込みを行った際に書込みを行ったページアドレスの情報を検証アドレス情報として検証アドレス情報保持部295に保持させる。同様に、検証書込み部299は、再書込みを行った際に再書込みを行ったページアドレスの情報を検証アドレス情報として検証アドレス情報保持部295に保持させる。また、検証書込み部299は、検証アドレス情報保持部295に保持された検証アドレス情報に基づいて検証を行う。これ以外の構成は、図4において説明したメモリコントローラ200およびメモリ300と同様であるため、説明を省略する。
[書込み処理の処理手順(メモリコントローラ側の処理)]
図18は、本技術の第3の実施の形態における書込み処理の処理手順(メモリコントローラ)の一例を示す図である。ホストコンピュータ100から書込みコマンドが発行されると、メモリコントローラ200は、書込み処理を開始する。まず、メモリコントローラ200は、通常書込みを行う(ステップS810)。次に、メモリコントローラ200は、検証アドレス情報の保持を行う(ステップS801)。この場合、書込み対象となった全てのページのページアドレスが検証アドレス情報として、検証アドレス情報保持部295に保持される。なお、第3の実施の形態においても、前述した第1の実施の形態と同様の、メモリ300におけるページアドレスの指定方式を採用している。すなわち、ホストコンピュータ100が出力した書込みコマンドに含まれるメモリ300における書込みアドレスにオフセットレジスタの値を加算した値をメモリ300における書込みアドレス(ページアドレス)としている。このため、検証アドレス保持部295に保持される検証アドレス情報として、オフセットレジスタの値が使用される。
次に、メモリコントローラ200は、安定状態判断処理を行う(ステップS820)。次に、メモリコントローラ200は、再書込みカウンタを初期化し(ステップS809)、検証書込みを行う(ステップS830)。その後、再書込みカウンタの値が「0」の場合は(ステップS804:Yes)、メモリコントローラ200は、ホストコンピュータ100に対して書込み処理が正常に終了したことを通知し、本書込み処理を終了する。
再書込みカウンタの値が「0」でない場合は(ステップS804:No)、再書込みカウンタの値が「0」となるまで、再書込み処理回数が上限に達しない範囲で(ステップS805:No)、再書込み処理(ステップS820からの処理)をループ状に実行する。しかし、ステップS805において、再書込み処理回数が上限に達している場合には(ステップS805:Yes)、メモリコントローラ200は、再書込み処理を行わず、エラー処理(ステップS806)を行う。このエラー処理として、メモリコントローラ200は、ホストコンピュータ100に対してデータの書込みが異常終了したことを通知する。その後、メモリコントローラ200は、書込み処理を終了する。
[検証書込み処理の処理手順(メモリコントローラ側の処理)]
図19は、本技術の第3の実施の形態における検証書込み処理の処理手順(メモリコントローラ)の一例を示す図である。本処理は、図18において説明したステップS830に対応する処理である。まず、メモリコントローラ200は、全てのデータの検証が終了したか否かを調べる(ステップS836)。その結果、全てのデータの検証が終了していた場合には(ステップS836:Yes)、検証書込み処理を終了する。一方、全てのデータの検証が終了していない場合には(ステップS836:No)、ステップS831からの検証書込みループの処理に移行する。メモリコントローラ200は、検証アドレス情報保持部295から検証アドレス情報(オフセットレジスタの値)を取得する(ステップS831)。次に、メモリコントローラ200は、この検証アドレス情報に基づいてホストコンピュータ100から書込みデータを取得する(ステップS833)。また、メモリコントローラ200は、検証アドレス情報に基づいてメモリ300における検証先ページアドレスを特定し、検証書込みリクエストを生成して発行する(ステップS834)。
このリクエストの結果、メモリ300において再書込みが行われなかった場合には(ステップS835:No)、メモリコントローラ200は、ステップS836の処理に移行する。一方、メモリ300において再書込みが行われた場合には(ステップS835:Yes)、メモリコントローラ200は、再書込みカウンタにレスポンスの書込みページ数を加算する(ステップS837)。次に、メモリコントローラ200は、この再書込みが行われたページのページアドレスを新たな検証アドレス情報として、検証アドレス情報保持部295に保持させる(ステップS839)。この新たな検証アドレス情報は、次回の検証書込み処理に使用される。なお、ステップS831で取得した検証アドレス情報に係るページアドレス(オフセットレジスタの値)が、再書込みが行われたページのページアドレスとして、検証アドレス情報保持部295に保持される。このため、メモリコントローラ200は、検証書込み(ステップS830)においてオフセットレジスタを使用することなく、オフセットレジスタの値による相対アドレス指定を行うことができる。その後、メモリコントローラ200は、ステップS836の処理に戻る。
なお、メモリコントローラ200は、ステップS834の処理を行った際に書込みレスポンスに基づく書込み情報を判断部280に出力する。
なお、検証アドレス情報保持部295は、例えば、第1および第2のFIFO(First-In First-Out)メモリを有する構成とすることができる。通常書込みまたは直前の検証書込みループで生成された検証アドレス情報は第1のFIFOメモリに保持されており、ステップS831において順に取得される。一方、ステップS839において生じた新たな検証アドレス情報は第2のFIFOメモリに保持される。その後、検証書込み処理の終了の際、第2のFIFOメモリに保持された検証アドレス情報を第1のFIFOメモリに移動させることにより、当該検証アドレス情報を次回の検証書込み処理におけるステップS831の処理対象とすることができる。また、検証アドレス情報として、オフセットレジスタの値を使用することができる。
なお、図18における通常書込み(ステップS810)および安定状態判断(ステップS820)の処理は、図7において説明した通常書込み(ステップS910)および安定状態判断(ステップS920)と同様であるため説明を省略する。また、メモリ300における処理も本技術の第1の実施の形態における処理と同様であるため説明を省略する。
このように、本技術の第3の実施の形態によれば、再書込みを行ったページアドレスの情報を検証アドレス情報として保持し、これ基づいて検証を行うため、書込みが成功したメモリセルに対する検証の処理を抑制することができる。このため、書込み処理を高速化することができる。
<4.第4の実施の形態>
上述の第1の実施の形態では、通常書込みは連続して行うものの、検証と再書込みとは交互に行うため、リクエストの生成が煩雑となる問題があった。このため、検証リクエストと書込みリクエストを統合した検証書込みリクエストを使用していた。しかし、その一方で、メモリ300におけるリクエストの処理が複雑なものになっていた。これに対し、本技術の第4の実施の形態では、検証および再書込みも連続して行う。これにより、リクエストの生成を容易なものにする。
[機能構成]
図20は、本技術の第4の実施の形態における機能構成例を示す図である。同図のメモリコントローラ200は、書込制御部291と、判断部280と、検証部293と、再書込アドレス情報保持部296とを備える。
書込制御部291は、データの書込みと検証の結果に基づく書込みデータの再書込みとを行うものである。この書込制御部291は、書込みリクエストをメモリ300に対して発行する。このリクエストに対してメモリ300は、書込みおよび再書込みにおける書込みページ数を書込みレスポンスとしてメモリコントローラ200に出力する。その後、書込制御部291は、書込みページ数を書込み情報として判断部280に対して出力する。
再書込アドレス情報保持部296は、再書込みアドレス情報を保持するものである。ここで、再書込みアドレス情報とは、再書込みを行うメモリ300のページアドレスの情報である。上述の書込制御部291は、再書込アドレス情報保持部296に保持された再書込みアドレス情報に基づいて再書込みを行う。
検証部293は、前述した検証を行うものである。この検証部293は、判断部280の判断の結果に基づいてデータの書込みを検証する。また、この検証部293は、検証のリクエストをメモリ300に対して発行することにより検証を実行する。このリクエストに対してメモリ300は、第1の実施の形態において説明した検証の処理を行い、この検証の結果を検証レスポンスとしてメモリコントローラ200に出力する。その後、この検証の結果に基づく再書込みアドレス情報が再書込アドレス情報保持部296に保持される。このように、本技術の第4の実施の形態における検証部293は、本技術の第1の実施の形態において説明した検証書込み部299とは異なり、検証のみを行う。
このように、本技術の第4の実施の形態では、検証および再書込みは個別のリクエストとして発行される。これ以外の構成は、図4において説明したメモリコントローラ200およびメモリ300と同様であるため、説明を省略する。なお、書込制御部291は、特許請求の範囲に記載の書込み制御部の一例である。再書込アドレス情報保持部296は、特許請求の範囲に記載の再書込みアドレス情報保持部の一例である。
[書込み処理の処理手順(メモリコントローラ側の処理)]
図21は、本技術の第4の実施の形態における書込み処理の処理手順(メモリコントローラ)の一例を示す図である。ホストコンピュータ100から書込みコマンドが発行されると、メモリコントローラ200は、書込み処理を開始する。まず、メモリコントローラ200は、コマンドを解釈して通常書込みを行う(ステップS860)。次に、メモリコントローラ200は、安定状態判断処理を行う(ステップS870)。次に、メモリコントローラ200は、再書込みカウンタを初期化し(ステップS859)、検証を行い(ステップS880)、再書込みを行う(ステップS890)。その後、再書込みカウンタの値が「0」の場合は(ステップS854:Yes)、メモリコントローラ200は、ホストコンピュータ100に対して書込み処理が正常に終了したことを通知し、書込み処理を終了する。
再書込みカウンタの値が「0」でない場合は(ステップS854:No)、再書込みカウンタの値が「0」となるまで、再書込み処理回数が上限に達しない範囲で(ステップS855:No)、再書込み処理(ステップS870からの処理)をループ状に実行する。しかし、ステップS855において、再書込み処理回数が上限に達している場合には(ステップS855:Yes)、メモリコントローラ200は、再書込み処理を行わず、エラー処理(ステップS856)を行う。このエラー処理として、メモリコントローラ200は、ホストコンピュータ100に対してデータの書込みが異常終了したことを通知する。その後、メモリコントローラ200は、書込み処理を終了する。
なお、通常書込み(ステップS860)および安定状態判断(ステップS870)の処理は、図7において説明した通常書込み(ステップS910)および安定状態判断(ステップS920)と同様であるため説明を省略する。
[検証処理の処理手順(メモリコントローラ側の処理)]
図22は、本技術の第4の実施の形態における検証処理の処理手順(メモリコントローラ)の一例を示す図である。本処理は、図21において説明したステップS880に対応する処理である。まず、メモリコントローラ200は、オフセットレジスタおよび再書込アドレス情報保持部296を初期化する(ステップS882)。次に、メモリコントローラ200は、全てのデータの検証が終了したか否かを調べる(ステップS886)。その結果、全てのデータの検証が終了していた場合には(ステップS886:Yes)、検証処理を終了する。一方、全てのデータの検証が終了していない場合には(ステップS886:No)、ステップS883からの処理に移行する。メモリコントローラ200は、ホストコンピュータ100から書込みデータを取得する(ステップS883)。次に、メモリコントローラ200は、ステップS883において取得した書込みデータを比較データとして検証リクエストを生成し、発行する(ステップS884)。
次に、メモリコントローラ200は、メモリ300から返されたリクエストの結果を当該ページのページアドレスとともに再書込アドレス情報保持部296に保持させる(ステップS889)。これにより、リクエストの結果が「不一致」であるページのページアドレスは後続の再書込み処理において、再書込みが必要なページのページアドレスとして認識される。なお、第4の実施の形態においてもオフセットレジスタの値による相対アドレスによりメモリ300のページアドレスを指定している。そのため、この再書込みが必要なページのページアドレスは、オフセットレジスタの値を用いた相対アドレスにより示されることとなる。次に、メモリコントローラ200は、オフセットレジスタを更新し(ステップS888)、ステップS886の処理に戻る。なお、再書込アドレス情報保持部296は、例えば、オフセットレジスタの値に対応するアドレス情報と当該アドレスにおける検証結果とを保持するRAMにより構成することができる。
[再書込み処理の処理手順(メモリコントローラ側の処理)]
図23は、本技術の第4の実施の形態における再書込み処理の処理手順(メモリコントローラ)の一例を示す図である。本処理は、図21において説明したステップS890に対応する処理である。まず、メモリコントローラ200は、オフセットレジスタを初期化する(ステップS892)。次に、メモリコントローラ200は、全てのデータの再書込みが終了したか否かを調べる(ステップS896)。その結果、全てのデータの再書込みが終了していた場合には(ステップS896:Yes)、再書込み処理を終了する。
一方、全てのデータの再書込みが終了していない場合には(ステップS896:No)、ステップS891からの処理に移行する。メモリコントローラ200は、再書込アドレス情報保持部296からオフセットレジスタの値に対応するアドレスにおける検証結果を取得する(ステップS891)。この結果が「不一致」であった場合には(ステップS895:No)、メモリコントローラ200は、ホストコンピュータ100から書込みデータを取得する(ステップS893)。次に、メモリコントローラ200は、ステップS893において取得した書込みデータを含む再書込みのリクエストを生成し、発行する(ステップS894)。メモリ300における再書込み動作が完了して書込みレスポンスがメモリ300から出力された後、メモリコントローラ200は、再書込みカウンタにレスポンスの書込みページ数を加算し(ステップS897)、ステップS898の処理に移行する。
一方、結果が「一致」であった場合(ステップS895:Yes)、再書込みは不要であり、メモリコントローラ200は、ステップS893、ステップS894およびステップS897の処理をスキップしてステップS898の処理に移行する。ステップS898において、メモリコントローラ200は、オフセットレジスタを更新し(ステップS898)、ステップS896の処理に戻る。なお、メモリコントローラ200は、ステップS894の処理を行った際に書込みレスポンスに基づく書込み情報を判断部280に出力する。
[検証処理の処理手順(メモリ側の処理)]
図24は、本技術の第4の実施の形態における検証処理の処理手順(メモリ)の一例を示す図である。メモリ300は、メモリコントローラ200から検証のリクエストが発行されると、検証処理を開始する。なお、リクエストに伴う比較データは、作業メモリ320に記憶される。まず、メモリ300は、メモリセルからデータの読出しを行う(ステップS732)。読み出されたデータは、バッファ360に保持される。次に、メモリ300は、データの比較を行う(ステップS738)。具体的には、メモリ300は、作業メモリ320に記憶された比較データおよびバッファ360に保持されたデータの比較を行う。その結果をメモリコントローラ200に対して出力し(ステップS739)、検証処理を終了する。
[再書込み処理の処理手順(メモリ側の処理)]
図25は、本技術の第4の実施の形態における再書込み処理の処理手順(メモリ)の一例を示す図である。メモリ300は、メモリコントローラ200から再書込みのリクエストが発行されると、再書込み処理を開始する。まず、メモリコントローラ200は、メモリセルからデータの読出しを行う(ステップS742)。図13において説明した再書込み処理とは異なり、バッファ360には、データが保持されていないため、この読出し処理が必要となる。次に、メモリ300は、リセット操作用データの算出を行い(ステップS743)、リセット操作を行う(ステップS744)。
次に、メモリ300は、事前消去の有無を調べる(ステップS741)。事前消去がされていない場合は、前述した(d)再書込み操作(事前消去なし)の場合に該当する。メモリ300は、セット操作用データを算出し(ステップS745)、セット操作を行い(ステップS746)、ステップS749の処理に移行する。一方、事前消去がされている場合は、前述した(c)再書込み操作(事前消去あり)の場合に該当する。メモリ300は、ステップS745およびステップS746の処理をスキップしてステップS749の処理に移行する。ステップS749において、メモリ300は、書込み処理の結果として、書込みを行ったページ数をメモリコントローラ200に対して出力し(ステップS749)、再書込み処理を終了する。
このように、本技術の第4の実施の形態では、通常書込みだけでなく検証および再書込みにおいても連続した処理を行うため、検証と再書込みを交互に行う場合と比較して、リクエストの生成を容易にすることができる。これは、検証および再書込みのリクエストに複数ページのデータを付加する構成とした場合に顕著である。
[第1の変形例]
上述の第4の実施の形態では、事前消去がある場合の再書込み処理においてリセット操作のみを行っていたが、事前消去がある場合であってもリセット操作およびセット操作により再書込みを行ってもよい。前述の第1の実施の形態の第5の変形例と同様に、ライトディスターブ現象が発生した場合であっても、メモリセルに書込まれたデータの反転を防いで、データの書込みの信頼性を向上させることができるためである。書込みおよび再書込みの操作は、前述の第1の実施の形態の第5の変形例において説明した(a')〜(d')と同様であるため説明を省略する。
[再書込み処理の処理手順(メモリ側の処理)]
図26は、本技術の第4の実施の形態の第1の変形例における再書込み処理の処理手順(メモリ)の一例を示す図である。まず、メモリ300は、メモリセルからページデータの読出しを行う(ステップS692)。次に、メモリ300は、リセット操作用データを算出し(ステップS693)、リセット操作を行う(ステップS694)。次に、メモリ300は、セット操作用データを算出し(ステップS695)、セット操作を行う(ステップS696)。次に、メモリ300は、再書込み処理の結果として、書込みを行ったページ数をメモリコントローラ200に対して出力し(ステップS699)、再書込み処理を終了する。
[第2の変形例]
上述の第4の実施の形態では、図22において説明した検証処理のステップS889において、全ての検証リクエストの結果を再書込みアドレス情報として再書込アドレス情報保持部296に保持させていた。しかし、検証リクエストの結果が不一致となったページのページアドレスをアドレス情報として保持させてもよい。後続の再書込み処理において、再書込みが必要なページのページアドレスが特定されて、処理が簡略化されるためである。
[検証処理の処理手順]
図27は、本技術の第4の実施の形態の第2の変形例における検証処理の処理手順(メモリコントローラ)の一例を示す図である。本処理は、図21において説明したステップS880に対応する処理である。ステップS885において、メモリコントローラ200は、メモリ300から返されたリクエストの結果を調べる。この結果が一致でなかった場合(ステップS885:No)、メモリコントローラ200は、検証リクエストに係るページのページアドレスを再書込アドレス情報保持部296に保持させる(ステップS889)。その後、ステップS888の処理に移行する。一方、メモリ300から返されたリクエストの結果が一致であった場合(ステップS885:Yes)、メモリコントローラ200は、ステップS889の処理をスキップしてステップS888の処理に移行する。これにより、検証リクエストの結果が不一致となったページのページアドレスのみを検証結果として再書込みアドレス情報に保持させることができる。ステップS888において、メモリコントローラ200は、オフセットレジスタを更新し(ステップS888)、ステップS886の処理に戻る。これ以外は、図22において説明した処理手順と同様であるため説明を省略する。
[再書込み処理の処理手順(メモリコントローラ側の処理)]
図28は、本技術の第4の実施の形態の第2の変形例における再書込み処理の処理手順(メモリコントローラ)の一例を示す図である。本処理は、図21において説明したステップS890に対応する処理である。また、本処理は、図23において説明した処理手順のうちステップS892、ステップS895およびステップS898の処理を削除したものである。これにより、メモリコントローラ200は、再書込みが必要なページを特定して再書込みを行う。これ以外は、図21において説明した処理手順と同様であるため、説明を省略する。
[第3の変形例]
上述の第4の実施の形態では、図22において説明した検証処理において、書込み処理の対象となる全てのページについて検証を行っていた。しかし、第3の実施の形態において説明した検証アドレス情報保持部295を使用して、検証が必要なページのみ検証を行ってもよい。検証の処理が簡略化されるためである。
[機能構成]
図29は、本技術の第4の実施の形態の第3の変形例における機能構成例を示す図である。同図のメモリコントローラ200は、検証アドレス情報保持部295を備える。これ以外の構成は図20において説明した機能構成例と同様であるため説明を省略する。
[書込み処理の処理手順(メモリコントローラ側の処理)]
図30は、本技術の第4の実施の形態の第3の変形例における書込み処理の処理手順(メモリコントローラ)の一例を示す図である。本処理は、図21において説明した処理手順に対して、ステップS801の処理をステップS810とステップS820との間に追加したものである。これ以外は図21において説明した処理手順と同様であるため説明を省略する。
[検証処理の処理手順]
図31は、本技術の第4の実施の形態の第3の変形例における検証処理の処理手順(メモリコントローラ)の一例を示す図である。本処理は、図21において説明したステップS880に対応する処理である。ステップS882において、メモリコントローラ200は、再書込アドレス情報保持部296の初期化のみを行う。ステップS881において、メモリコントローラ200は、検証アドレス情報保持部295から検証アドレス情報を取得する(ステップS881)。ステップS885において、メモリコントローラ200は、メモリ300から返されたリクエストの結果を調べる。この結果が一致でなかった場合(ステップS885:No)、メモリコントローラ200は、検証リクエストに係るページのページアドレスを再書込アドレス情報保持部296に保持させる(ステップS889)。その後、ステップS886の処理に移行する。一方、メモリ300から返されたリクエストの結果が一致であった場合(ステップS885:Yes)、メモリコントローラ200は、ステップS889の処理をスキップしてステップS886の処理に移行する。これにより、検証が必要なページを特定して検証を行い、検証リクエストの結果が不一致となったページのページアドレスのみを検証結果として再書込アドレス情報保持部296に保持させることができる。なお、ステップS888の処理は不要であるため、削除している。これ以外は、図22において説明した処理手順と同様であるため説明を省略する。
[再書込み処理の処理手順(メモリコントローラ側の処理)]
図32は、本技術の第4の実施の形態の第3の変形例における再書込み処理の処理手順(メモリコントローラ)の一例を示す図である。本処理は、図21において説明したステップS890に対応する処理である。また、本処理は、図23において説明した処理手順のうちステップS892、ステップS895およびステップS898の処理を削除し、ステップS897の後にステップS899の処理を追加したものである。これにより、メモリコントローラ200は、再書込みが必要なページを特定して再書込みを行うとともに、再書込みを行ったページのページアドレスを検証アドレス情報保持部295に保持させる。これ以外は、図21において説明した処理手順と同様であるため、説明を省略する。
[第4の変形例]
上述の第4の実施の形態では、メモリコントローラ200が、書込み制御部291と、判断部280と、検証部293と、再書込みアドレス情報保持部296とを備えていたが、メモリ300がこれらを備えてもよい。メモリコントローラ200の処理を簡素化できるからである。この場合、メモリコントローラ200は、メモリ300に対して、書込みリクエストのみを発行する。そして、メモリ300が、このリクエストに基づいて書込み、判断および検証の処理を行う。
<5.第5の実施の形態>
上述の第1の実施の形態の情報処理システムは、データバックアップ機能を備えていなかった。これに対し、本技術の第5の実施の形態の情報処理システムでは、データバックアップ機能を備え、電源異常が生じた際に、データのバックアップを行う。
[情報処理システムの構成]
図33は、本技術の第5の実施の形態における情報処理システムの構成例を示す図である。同図の情報処理システムは、データバックアップ機能を備えた情報処理システムの例である。同図の情報処理システムは、ホストコンピュータ100と、メモリコントローラ200と、メモリ300と、信号線109および208と、電源電圧監視部107とを備える。電源電圧監視部107は、情報システムに供給される電源の電圧を監視するものである。この電源電圧監視部107は、停電等の電源異常により電源の電圧が低下した場合に、メモリコントローラ200に対して電源電圧低下の情報を出力する。なお、同図の情報処理システムは、電池またはスーパーキャパシタ等のバックアップ用電源を備えている(不図示)。このバックアップ用電源から給電することにより、電源異常となった場合であっても、情報処理システムは、短時間ながら動作可能である。この間に、メモリコントローラ200は、ホストコンピュータに保持されているデータをメモリ300に退避させる。
同図のホストコンピュータ100は、メモリコントローラインターフェース130の代わりに切替部150を備える点で、図1において説明したホストコンピュータ100と異なる。切替部150は、DRAM120の接続先をプロセッサ110またはメモリコントローラ200に切り替えるものである。この切替部150は、通常時には、バス装置101を介してDRAM120をプロセッサ110に接続している。DRAM120には、プロセッサ110の動作に必要なデータが記憶される。電源異常が生じた際には、電源電圧監視部107から電源電圧低下の情報を得たメモリコントローラ200が制御信号を切替部150に出力する。これにより、切替部150は、DRAM120をメモリコントローラ200に接続する。これ以外の情報処理システムの構成は図1において説明した情報処理システムと同様であるため説明を省略する。
[メモリコントローラの構成]
図34は、本技術の第5の実施の形態におけるメモリコントローラの構成例を示す図である。同図のメモリコントローラ200は、ホストインターフェース230の代わりにDRAMインターフェース240を備え、また、入力ポート290を備える点で図2において説明したメモリコントローラ200と異なる。DRAMインターフェース240は、ホストコンピュータ100のDRAM120とのやり取りを行うインターフェースである。入力ポート290は、電源電圧監視部107の出力が接続される入力ポートである。この入力ポート290には、電源電圧監視部107による電源電圧低下の情報が入力される。これ以外のメモリコントローラ200の構成は、図2において説明したメモリコントローラ200と同様であるため説明を省略する。また、メモリ300の構成も、図3において説明したメモリ300と同様であるため説明を省略する。
[機能構成]
図35は、本技術の第5の実施の形態における機能構成例を示す図である。同図は、データの書込みを行う際の機能構成を想定したものである。同図のメモリコントローラ200は、DRAM制御部297およびアドレス変換情報保持部298を備える点で図17において説明したメモリコントローラ200と異なる。
DRAM制御部297は、切替部150を制御するものである。また、DRAM制御部297は、切替部150を介したDRAM120の制御も行う。このDRAM制御部297は、電源異常の際、制御信号を切替部150に出力して、DRAM120の接続先をプロセッサ110からメモリコントローラ200に切替させる。その後、DRAM制御部297は、切替部150を介して制御信号をDRAM120に出力することにより、DRAM120にアクセスして、DRAM120に記憶されているデータを出力させる。また、DRAM制御部297は、DRAM120のメモリアドレスに対するアドレス変換の情報であるアドレス変換情報の生成も行う。このアドレス変換情報については、後述する。書込制御部292は、DRAM120が出力したデータをメモリ300に対する書込みデータとして取り込む。アドレス変換情報保持部298は、アドレス変換情報を保持するものである。
これ以外のメモリコントローラ200およびメモリ300の構成は、図17において説明したメモリコントローラ200およびメモリ300と同様であるため説明を省略する。
[情報処理システムにおける書込み処理]
電源電圧監視部107から電源電圧低下の情報が入力されると、DRAM制御部297は、DRAM120にアクセスしてDRAM120に記憶されている全データを出力させる。書込制御部292は、リクエストを生成してこのデータを書込みデータとしてメモリ300に出力する。その後、書込みデータは、メモリ300のメモリセルアレイ350に記憶される。そのため、メモリ300の記憶容量は、DRAM120の記憶容量以上にする必要がある。データの書込み後に、検証書込み部299による検証およびこの結果に基づく再書込みが行われる。この際、再書込みが必要なDRAM120のデータに対してDRAM120内においてデータの移動を行う。
[データの移動]
図36は、DRAMにおけるデータの移動を説明する図である。同図は、10個の記憶領域を有するDRAM120の例であり、紙面に向かって左側がデータ移動前の状態を右側がデータ移動後の状態をそれぞれ表している。同図におけるaのDRAM120は、2個のDRAMにより構成され、それぞれのDRAMは5個の記憶領域を有し、上位アドレスおよび下位アドレスに配置されている。これらはそれぞれ第1の領域および第2の領域として表されている。
データ移動前のDRAM120には、アドレス順にデータ#1乃至データ#10が記憶されている。メモリコントローラ200によるメモリ300へのデータの書込みが行われ、検証の結果、データ#2、データ#5およびデータ#9について再書込みが必要になった場合を想定する。再書込みが行われる前に、DRAM制御部297は、上記データを第1の領域に該当するDRAMに移動する。その後、第2の領域に該当するDRAMへの電源の供給が停止される。これにより、DRAM120の消費電力を低減させることができ、バックアップ用電源の電池またはスーパーキャパシタを小容量のものにすることができる。その後、移動されたデータを対象として再書込みが行われる。
同図におけるbは、DRAM120がデータ方向に分割されている例を表している。すなわち、上位ビットのデータは第1の領域に割り当てられ、下位ビットのデータは第2の領域に割り当てられている。上述の例と同様にデータ#2、データ#5およびデータ#9について再書込みが必要になったと想定する。同図におけるbでは、第2の領域に記憶されたデータ#2B、データ#5Bおよびデータ#9Bが第1の領域に移動される。その後、第2の領域に該当するDRAMへの電源の供給が停止される。
このように、本技術の第5の実施の形態では、複数のDRAMにより構成されたDRAM120のデータを移動させることにより、一部のDRAMにデータが集約される。そのため、データの移動前に、移動するデータ量が集約可能なデータ量であるか否かを判断する必要がある。この判断方法として、例えば、DRAM120を構成する複数のDRAMの容量を閾値とし、次回の検証を行うデータ量がこの閾値以下か否かによって判断する方法を採ることができる。このデータ量の算出には、検証アドレス情報保持部295に保持された検証アドレス情報を利用することができる。すなわち、検証アドレス情報に保持されたページアドレスの個数にページのデータ量を乗算したものを次回の検証を行うデータ量とすることができる。
なお、本技術の第5の実施の形態におけるメモリコントローラ200の書込み処理の方式としては、この検証アドレス情報保持部を備える方式(本技術の第3の実施の形態の方式)だけでなく、上述した他の方式を利用することもできる。すなわち、書込み条件設定部を備える方式(本技術の第2の実施の形態の方式)および再書込アドレス情報保持部を備える方式(本技術の第4の実施の形態の方式)を利用することもできる。また、検証アドレス情報保持部等を使用しない第1の実施の形態で説明した方式を使用することもできる。
なお、データの移動に伴いデータのアドレスを変換する必要が生じる。上述のアドレス変換情報は、このデータ移動に伴うアドレス変換の情報であり、DRAM制御部297により生成され、アドレス変換情報保持部298に保持される。以降のDRAM120のアクセスの際に、DRAM制御部297は、アドレス変換情報保持部298に保持されたアドレス変換情報に基づいてアクセスを行う。
[書込み処理の処理手順(メモリコントローラ側の処理)]
図37は、本技術の第5の実施の形態における書込み処理の処理手順(メモリコントローラ)の一例を示す図である。電源電圧監視部107から電源電圧低下の情報が入力されると、メモリコントローラ200は、制御信号を切替部150に出力する。これにより、切替部150は、DRAM120をメモリコントローラ200に接続する。その後、メモリコントローラ200は、書込み処理を開始する。まず、メモリコントローラ200は、DRAM120の全ページデータに対して通常書込みを行う(ステップS760)。次に、メモリコントローラ200は、検証アドレス情報の保持を行う(ステップS751)。本技術の第5の実施の形態では、書込み対象となった全てのページのページアドレスが検証アドレス情報として、検証アドレス情報保持部295に保持される。次に、メモリコントローラ200は、既にメモリ300に対する再書込みが行われているか否かを調べ(ステップS752)、再書込みが行われていた場合には(ステップS752:Yes)、データの移動を行う(ステップS790)。
一方、再書込みが行われていない場合には(ステップS752:No)、ステップS790の処理をスキップする。次に、メモリコントローラ200は、安定状態判断処理を行う(ステップS770)。次に、メモリコントローラ200は、再書込みカウンタを初期化し(ステップS759)、検証書込みを行う(ステップS780)。その後、再書込みカウンタの値が「0」の場合は(ステップS754:Yes)、メモリコントローラ200は、書込み処理を終了する。再書込みカウンタの値が「0」でない場合は(ステップS754:No)、再書込みカウンタの値が「0」となるまで、再書込み処理回数が上限に達しない範囲で(ステップS755:No)、再書込み処理(ステップS752からの処理)をループ状に実行する。
しかし、ステップS755において、再書込み処理回数が上限に達している場合には(ステップS755:Yes)、メモリコントローラ200は、再書込み処理を行わず、エラー処理(ステップS756)を行う。このエラー処理として、メモリコントローラ200は、例えば、ホストコンピュータ100に対してデータのバックアップに失敗したことを通知する。その後、書込み処理を終了する。なお、通常書込み(ステップS760)の処理は、図7において説明した通常書込み(ステップS910)と同様であるため説明を省略する。安定状態判断(ステップS770)の処理は、図7において説明した安定状態判断(ステップS920)と同様であるため説明を省略する。検証書込み(ステップS780)の処理は、図7において説明した検証書込み(ステップS930)と同様であるため説明を省略する。
[データ移動処理の処理手順(メモリコントローラ側の処理)]
図38は、本技術の第5の実施の形態におけるデータ移動処理の処理手順(メモリコントローラ)の一例を示す図である。本処理は、図37において説明したステップS790に対応する処理である。まず、メモリコントローラ200は、データが移動済みであるか否かを調べ(ステップS791)、移動済みである場合は(ステップS791:Yes)、以降の処理をスキップしてデータ移動処理を終了する。一方、移動済みでない場合は(ステップS791:No)、次回の検証を行うデータ量の算出を行う(ステップS792)。この算出したデータ量が閾値以下でない場合(ステップS793:No)、メモリコントローラ200は、以降の処理をスキップしてデータ移動処理を終了する。
一方、算出したデータ量が閾値以下の場合(ステップS793:Yes)、メモリコントローラ200は、DRAM120のデータを移動し(ステップS794)、データ移動済みのDRAMの電源をオフさせる(ステップS795)。最後に、メモリコントローラ200は、アドレス変換情報を生成し(ステップS796)、データ移動処理を終了する。
なお、図37において説明したように、メモリコントローラ200は、再書込みが行われているか否かを調べ(ステップS752)、データの移動を行っている(ステップS790)。しかし、これらの処理を省略したデータバックアップ機能を備える情報処理システムを構成することも可能である。
このように、データバックアップ機能を備えた情報処理システムにおいても、メモリセルの状態が安定しているか否かの判断を行い、状態が安定した後に、データの読出しを行って検証を行うことにより、正確な書込みデータの検証を可能としている。また、DRAM120内部でデータの移動を行い、データが集約されたDRAMにのみ電源を供給することにより、バックアップ用電源を小型化することができる。さらに、データの移動の際、検証アドレス情報を使用することにより、データ移動処理に係るデータ量の算出を簡略化することができる。
このように、本技術の実施の形態によれば、データの書込み後に、メモリセルの状態が安定しているか否かの判断を行い、メモリセルの状態の安定化を待って、データの読出しを行って検証を行うことにより、正確な書込みデータの検証を可能としている。これにより、不必要な再書込みを抑制して、不揮発メモリの書込み信頼性を向上させることができる。
なお、上述の実施の形態は本技術を具現化するための一例を示したものであり、実施の形態における事項と、特許請求の範囲における発明特定事項とはそれぞれ対応関係を有する。同様に、特許請求の範囲における発明特定事項と、これと同一名称を付した本技術の実施の形態における事項とはそれぞれ対応関係を有する。ただし、本技術は実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において実施の形態に種々の変形を施すことにより具現化することができる。
また、上述の実施の形態において説明した処理手順は、これら一連の手順を有する方法として捉えてもよく、また、これら一連の手順をコンピュータに実行させるためのプログラム乃至そのプログラムを記憶する記録媒体として捉えてもよい。この記録媒体として、例えば、CD(Compact Disc)、MD(MiniDisc)、DVD(Digital Versatile Disc)、メモリカード、ブルーレイディスク(Blu-ray(登録商標)Disc)等を用いることができる。
なお、本明細書に記載された効果はあくまで例示であって、限定されるものではなく、また、他の効果があってもよい。
なお、本技術は以下のような構成もとることができる。
(1)データの書込み後に状態が不安定な期間が存在するメモリセルからなる不揮発メモリにおいてデータの書込み後の前記メモリセルの状態が安定しているか否かの判断を行う判断部と、
前記判断の結果に基づいて前記データが書き込まれた前記メモリセルから読み出した読出しデータと前記書込みに係る書込みデータとを比較して検証する検証部と、
前記データの書込みと前記検証の結果に基づく前記書込みデータの再書込みとを行う書込み制御部と
を具備するメモリコントローラ。
(2)前記不揮発メモリは、前記データの書込みの直後に読出しを行うと前記書き込まれたデータが破壊される前記(1)に記載のメモリコントローラ。
(3)前記不揮発メモリは、前記データの書込みの直後には書込まれたデータが正常に読み出されない前記(1)に記載のメモリコントローラ。
(4)前記判断部は、前記データの書込み後の所定の安定化時間の経過に基づいて前記判断を行う前記(1)から(3)のいずれかに記載のメモリコントローラ。
(5)前記不揮発メモリは、ページアドレスによりページ単位でアクセスされ、
前記書込み制御部は、複数ページからなるデータの書込みを連続して行い、
前記検証部は、前記データの書込みが行われた順にページ単位で前記検証を行い、
前記判断部は、前記検証の際には前記メモリセルの状態が安定していると判断する
前記(1)から(3)のいずれかに記載のメモリコントローラ。
(6)前記再書込みを行う前記不揮発メモリのページアドレスの情報である再書込みアドレス情報を保持する再書込みアドレス情報保持部をさらに具備し、
前記検証部は、前記複数ページからなるデータの書込み後に前記検証を連続して行って当該検証の結果に基づく前記再書込みアドレス情報を前記再書込みアドレス情報保持部に保持させ、
前記書込み制御部は、前記保持された前記再書込みアドレス情報に基づいて前記再書込みを行う
前記(5)に記載のメモリコントローラ。
(7)前記検証を行う前記不揮発メモリのページアドレスの情報である検証アドレス情報を保持する検証アドレス情報保持部をさらに具備し、
前記書込み制御部は、前記書込みおよび前記再書込みを行った際に前記書込みおよび前記再書込みを行ったページアドレスの情報を前記検証アドレス情報として前記検証アドレス情報保持部に保持させ、
前記検証部は、前記保持された前記検証アドレス情報に基づいて前記検証を行う
前記(5)に記載のメモリコントローラ。
(8)前記不揮発メモリは、ページアドレスによりページ単位でアクセスされ、
前記書込み制御部は、複数ページからなるデータの書込みを連続して行い、
前記検証部は、前記データの書込みが行われた順にページ単位で前記検証を行い、
前記判断部は、前記書込みデータのページ数が前記不揮発メモリにおけるデータの書込み後の所定の安定化時間に相当する書込み時間となるページ数である状態安定化ページ数以上の場合には前記検証の際に前記メモリセルの状態が安定していると判断し、前記書込みデータのページ数が前記状態安定化ページ数未満の場合には前記所定の安定化時間の経過を待って前記メモリセルの状態が安定していると判断する
前記(1)から(3)のいずれかに記載のメモリコントローラ。
(9)データの書込み後に状態が不安定な期間が存在するメモリセルからなる不揮発メモリにおいてデータの書込みを行う書込み制御部と、
前記データの書込み後の前記メモリセルの状態が安定しているか否かの判断を行う判断部と、
前記判断の結果に基づいて前記データが書き込まれた前記メモリセルから読み出した読出しデータと前記書込みに係る書込みデータとを比較する検証と前記検証の結果に基づく前記書込みデータの再書込みとを行う検証書込み部と
を具備するメモリコントローラ。
(10)データの書込み後に状態が不安定な期間が存在するメモリセルからなる不揮発メモリと、
前記不揮発メモリにおいてデータの書込み後の前記メモリセルの状態が安定しているか否かの判断を行う判断部と、
前記判断の結果に基づいて前記データが書き込まれた前記メモリセルから読み出した読出しデータと前記書込みに係る書込みデータとを比較して検証する検証部と、
前記データの書込みと前記検証の結果に基づく前記書込みデータの再書込みとを行う書込み制御部と
を具備する記憶装置。
(11)データの書込み後に状態が不安定な期間が存在するメモリセルからなる不揮発メモリと、
前記不揮発メモリを制御するメモリコントローラと、
前記メモリコントローラを介して前記不揮発メモリにアクセスするホストコンピュータと
を具備し、
前記メモリコントローラは、
前記不揮発メモリにおいてデータの書込み後の前記メモリセルの状態が安定しているか否かの判断を行う判断部と、
前記判断の結果に基づいて前記データが書き込まれた前記メモリセルから読み出した読出しデータと前記書込みに係る書込みデータとを比較して検証する検証部と、
前記データの書込みと前記比較の結果に基づく前記書込みデータの再書込みとを行う書込み制御部とを備える
情報処理システム。
(12)データの書込み後に状態が不安定な期間が存在するメモリセルからなる不揮発メモリにおいてデータの書込み後の前記メモリセルの状態が安定しているか否かの判断を行う判断手順と、
前記判断の結果に基づいて前記データが書き込まれた前記メモリセルから読み出した読出しデータと前記書込みに係る書込みデータとを比較して検証する検証手順と、
前記データの書込みと前記比較の結果に基づく前記書込みデータの再書込みとを行う書込み制御手順と
を具備する不揮発メモリの制御方法。
100 ホストコンピュータ
101、201、301 バス装置
107 電源電圧監視部
109、208 信号線
110 プロセッサ
120 DRAM
130、330 メモリコントローラインターフェース
150 切替部
200 メモリコントローラ
210 プロセッサ
220 RAM
230 ホストインターフェース
240 DRAMインターフェース
250 ECC処理部
260 ROM
270 メモリインターフェース
280 判断部
281 タイマ部
282 書込みページ数判断部
283 メモリセル安定状態判断部
290 入力ポート
291、292 書込制御部
293 検証部
294 書込み条件設定部
295 検証アドレス情報保持部
296 再書込アドレス情報保持部
297 DRAM制御部
298 アドレス変換情報保持部
299 検証書込み部
300 メモリ
310 制御部
320 作業メモリ
340 アドレスデコーダ
350 メモリセルアレイ
360 バッファ

Claims (12)

  1. データの書込み後に状態が不安定な期間が存在するメモリセルからなる不揮発メモリにおいてデータの書込み後の前記メモリセルの状態が安定しているか否かの判断を行う判断部と、
    前記判断の結果に基づいて前記データが書き込まれた前記メモリセルから読み出した読出しデータと前記書込みに係る書込みデータとを比較して検証する検証部と、
    前記データの書込みと前記検証の結果に基づく前記書込みデータの再書込みとを行う書込み制御部と
    を具備するメモリコントローラ。
  2. 前記不揮発メモリは、前記データの書込みの直後に読出しを行うと前記書き込まれたデータが破壊される請求項1記載のメモリコントローラ。
  3. 前記不揮発メモリは、前記データの書込みの直後には書込まれたデータが正常に読み出されない請求項1記載のメモリコントローラ。
  4. 前記判断部は、前記データの書込み後の所定の安定化時間の経過に基づいて前記判断を行う請求項1記載のメモリコントローラ。
  5. 前記不揮発メモリは、ページアドレスによりページ単位でアクセスされ、
    前記書込み制御部は、複数ページからなるデータの書込みを連続して行い、
    前記検証部は、前記データの書込みが行われた順にページ単位で前記検証を行い、
    前記判断部は、前記検証の際には前記メモリセルの状態が安定していると判断する
    請求項1記載のメモリコントローラ。
  6. 前記再書込みを行う前記不揮発メモリのページアドレスの情報である再書込みアドレス情報を保持する再書込みアドレス情報保持部をさらに具備し、
    前記検証部は、前記複数ページからなるデータの書込み後に前記検証を連続して行って当該検証の結果に基づく前記再書込みアドレス情報を前記再書込みアドレス情報保持部に保持させ、
    前記書込み制御部は、前記保持された前記再書込みアドレス情報に基づいて前記再書込みを行う
    請求項5記載のメモリコントローラ。
  7. 前記検証を行う前記不揮発メモリのページアドレスの情報である検証アドレス情報を保持する検証アドレス情報保持部をさらに具備し、
    前記書込み制御部は、前記書込みおよび前記再書込みを行った際に前記書込みおよび前記再書込みを行ったページアドレスの情報を前記検証アドレス情報として前記検証アドレス情報保持部に保持させ、
    前記検証部は、前記保持された前記検証アドレス情報に基づいて前記検証を行う
    請求項5記載のメモリコントローラ。
  8. 前記不揮発メモリは、ページアドレスによりページ単位でアクセスされ、
    前記書込み制御部は、複数ページからなるデータの書込みを連続して行い、
    前記検証部は、前記データの書込みが行われた順にページ単位で前記検証を行い、
    前記判断部は、前記書込みデータのページ数が前記不揮発メモリにおけるデータの書込み後の所定の安定化時間に相当する書込み時間となるページ数である状態安定化ページ数以上の場合には前記検証の際に前記メモリセルの状態が安定していると判断し、前記書込みデータのページ数が前記状態安定化ページ数未満の場合には前記所定の安定化時間の経過を待って前記メモリセルの状態が安定していると判断する
    請求項1記載のメモリコントローラ。
  9. データの書込み後に状態が不安定な期間が存在するメモリセルからなる不揮発メモリにおいてデータの書込みを行う書込み制御部と、
    前記データの書込み後の前記メモリセルの状態が安定しているか否かの判断を行う判断部と、
    前記判断の結果に基づいて前記データが書き込まれた前記メモリセルから読み出した読出しデータと前記書込みに係る書込みデータとを比較する検証と前記検証の結果に基づく前記書込みデータの再書込みとを行う検証書込み部と
    を具備するメモリコントローラ。
  10. データの書込み後に状態が不安定な期間が存在するメモリセルからなる不揮発メモリと、
    前記不揮発メモリにおいてデータの書込み後の前記メモリセルの状態が安定しているか否かの判断を行う判断部と、
    前記判断の結果に基づいて前記データが書き込まれた前記メモリセルから読み出した読出しデータと前記書込みに係る書込みデータとを比較して検証する検証部と、
    前記データの書込みと前記検証の結果に基づく前記書込みデータの再書込みとを行う書込み制御部と
    を具備する記憶装置。
  11. データの書込み後に状態が不安定な期間が存在するメモリセルからなる不揮発メモリと、
    前記不揮発メモリを制御するメモリコントローラと、
    前記メモリコントローラを介して前記不揮発メモリにアクセスするホストコンピュータと
    を具備し、
    前記メモリコントローラは、
    前記不揮発メモリにおいてデータの書込み後の前記メモリセルの状態が安定しているか否かの判断を行う判断部と、
    前記判断の結果に基づいて前記データが書き込まれた前記メモリセルから読み出した読出しデータと前記書込みに係る書込みデータとを比較して検証する検証部と、
    前記データの書込みと前記比較の結果に基づく前記書込みデータの再書込みとを行う書込み制御部とを備える
    情報処理システム。
  12. データの書込み後に状態が不安定な期間が存在するメモリセルからなる不揮発メモリにおいてデータの書込み後の前記メモリセルの状態が安定しているか否かの判断を行う判断手順と、
    前記判断の結果に基づいて前記データが書き込まれた前記メモリセルから読み出した読出しデータと前記書込みに係る書込みデータとを比較して検証する検証手順と、
    前記データの書込みと前記比較の結果に基づく前記書込みデータの再書込みとを行う書込み制御手順と
    を具備する不揮発メモリの制御方法。
JP2016548608A 2014-09-16 2015-07-14 メモリコントローラ、記憶装置、情報処理システムおよび不揮発メモリの制御方法 Expired - Fee Related JP6481691B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2014187692 2014-09-16
JP2014187692 2014-09-16
PCT/JP2015/070094 WO2016042902A1 (ja) 2014-09-16 2015-07-14 メモリコントローラ、記憶装置、情報処理システムおよび不揮発メモリの制御方法

Publications (2)

Publication Number Publication Date
JPWO2016042902A1 true JPWO2016042902A1 (ja) 2017-06-29
JP6481691B2 JP6481691B2 (ja) 2019-03-13

Family

ID=55532947

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016548608A Expired - Fee Related JP6481691B2 (ja) 2014-09-16 2015-07-14 メモリコントローラ、記憶装置、情報処理システムおよび不揮発メモリの制御方法

Country Status (3)

Country Link
US (1) US10310742B2 (ja)
JP (1) JP6481691B2 (ja)
WO (1) WO2016042902A1 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6612392B1 (ja) * 2018-06-08 2019-11-27 ウィンボンド エレクトロニクス コーポレーション 半導体記憶装置
KR20210076497A (ko) * 2019-12-16 2021-06-24 에스케이하이닉스 주식회사 스토리지 장치 및 그 동작 방법
CN113296682B (zh) * 2020-02-24 2023-06-06 北汽福田汽车股份有限公司 整车控制器的数据读取和写入方法

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011060388A (ja) * 2009-09-11 2011-03-24 Toshiba Corp 不揮発性メモリ装置
JP2011181134A (ja) * 2010-02-26 2011-09-15 Elpida Memory Inc 不揮発性半導体装置の制御方法
WO2011121971A1 (ja) * 2010-03-30 2011-10-06 パナソニック株式会社 不揮発性記憶装置及び不揮発性記憶装置への書き込み方法
JP2013228767A (ja) * 2012-04-24 2013-11-07 Sony Corp 記憶制御装置、メモリシステム、情報処理システム、および、記憶制御方法
JP2014041573A (ja) * 2012-08-24 2014-03-06 Sony Corp 記憶制御装置、記憶装置、情報処理システムおよび記憶制御方法
JP2014154205A (ja) * 2013-02-07 2014-08-25 Seagate Technology Llc メモリセルの抵抗偏移を逆転させるためのバイアス信号のメモリセルへの印加

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5205662B2 (ja) 2008-04-01 2013-06-05 ルネサスエレクトロニクス株式会社 半導体装置
JP5332997B2 (ja) * 2009-07-17 2013-11-06 アイシン精機株式会社 シートベルトウォーニング装置

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011060388A (ja) * 2009-09-11 2011-03-24 Toshiba Corp 不揮発性メモリ装置
JP2011181134A (ja) * 2010-02-26 2011-09-15 Elpida Memory Inc 不揮発性半導体装置の制御方法
WO2011121971A1 (ja) * 2010-03-30 2011-10-06 パナソニック株式会社 不揮発性記憶装置及び不揮発性記憶装置への書き込み方法
JP2013228767A (ja) * 2012-04-24 2013-11-07 Sony Corp 記憶制御装置、メモリシステム、情報処理システム、および、記憶制御方法
JP2014041573A (ja) * 2012-08-24 2014-03-06 Sony Corp 記憶制御装置、記憶装置、情報処理システムおよび記憶制御方法
JP2014154205A (ja) * 2013-02-07 2014-08-25 Seagate Technology Llc メモリセルの抵抗偏移を逆転させるためのバイアス信号のメモリセルへの印加

Also Published As

Publication number Publication date
JP6481691B2 (ja) 2019-03-13
US20170277442A1 (en) 2017-09-28
US10310742B2 (en) 2019-06-04
WO2016042902A1 (ja) 2016-03-24

Similar Documents

Publication Publication Date Title
US10007431B2 (en) Storage devices configured to generate linked lists
JP6149598B2 (ja) 記憶制御装置、記憶装置、情報処理システムおよび記憶制御方法
JP6497393B2 (ja) メモリコントローラ、記憶装置、情報処理システムおよびメモリの制御方法
US11609712B2 (en) Write operations to mitigate write disturb
US11630725B2 (en) Management of parity data in a memory sub-system
JP6481691B2 (ja) メモリコントローラ、記憶装置、情報処理システムおよび不揮発メモリの制御方法
US11775179B2 (en) Enabling stripe-based operations for error recovery at a memory sub-system
KR20210030482A (ko) 기입 동작과 관련된 사전 판독 동작의 조정
US11487609B2 (en) Separating parity data from host data in a memory sub-system
JP6107625B2 (ja) 記憶制御装置、記憶装置、情報処理システムおよびその記憶制御方法
WO2016035451A1 (ja) 記憶制御装置、記憶装置、および、記憶制御方法
US20220058135A1 (en) Logical-to-physical mapping
US20190056884A1 (en) Memory controller, storage device, information processing system, and memory control method
WO2017010147A1 (ja) 不揮発メモリ、メモリコントローラ、記憶装置、情報処理システムおよび不揮発メモリの制御方法
KR20210138497A (ko) 메모리 서브 시스템에서 메모리 다이들의 피크 전류의 관리
WO2016056290A1 (ja) メモリコントローラ、メモリシステム、記憶装置、情報処理システムおよび記憶制御方法
US11709631B2 (en) Read-modify-write data consistency management
US11520657B1 (en) Defect detection in memory based on active monitoring of read operations
US11966638B2 (en) Dynamic rain for zoned storage systems
US20240062840A1 (en) Read verification cadence and timing in memory devices
US20240071528A1 (en) Managing defective blocks during multi-plane programming operations in memory devices
WO2017043149A1 (ja) メモリコントローラ、メモリおよびメモリシステム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180523

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20181113

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20181226

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190128

R151 Written notification of patent or utility model registration

Ref document number: 6481691

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

LAPS Cancellation because of no payment of annual fees